summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mailit/addresslist.cpp190
-rw-r--r--noncore/net/mailit/addresslist.h36
-rw-r--r--noncore/net/mailit/emailclient.cpp177
-rw-r--r--noncore/net/mailit/emailclient.h2
-rw-r--r--noncore/net/mailit/emailhandler.cpp28
-rw-r--r--noncore/net/mailit/emailhandler.h166
-rw-r--r--noncore/net/mailit/emaillistitem.cpp96
-rw-r--r--noncore/net/mailit/popclient.cpp38
-rw-r--r--noncore/net/mailit/popclient.h4
-rw-r--r--noncore/net/mailit/smtpclient.cpp4
-rw-r--r--noncore/net/mailit/smtpclient.h58
-rw-r--r--noncore/net/mailit/textparser.cpp404
-rw-r--r--noncore/net/mailit/textparser.h6
-rw-r--r--noncore/unsupported/mailit/addresslist.cpp190
-rw-r--r--noncore/unsupported/mailit/addresslist.h36
-rw-r--r--noncore/unsupported/mailit/emailclient.cpp177
-rw-r--r--noncore/unsupported/mailit/emailclient.h2
-rw-r--r--noncore/unsupported/mailit/emailhandler.cpp28
-rw-r--r--noncore/unsupported/mailit/emailhandler.h166
-rw-r--r--noncore/unsupported/mailit/emaillistitem.cpp96
-rw-r--r--noncore/unsupported/mailit/popclient.cpp38
-rw-r--r--noncore/unsupported/mailit/popclient.h4
-rw-r--r--noncore/unsupported/mailit/smtpclient.cpp4
-rw-r--r--noncore/unsupported/mailit/smtpclient.h58
-rw-r--r--noncore/unsupported/mailit/textparser.cpp404
-rw-r--r--noncore/unsupported/mailit/textparser.h6
26 files changed, 1210 insertions, 1208 deletions
diff --git a/noncore/net/mailit/addresslist.cpp b/noncore/net/mailit/addresslist.cpp
index 7d60ebf..18d14bc 100644
--- a/noncore/net/mailit/addresslist.cpp
+++ b/noncore/net/mailit/addresslist.cpp
@@ -1,161 +1,161 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qfile.h>
#include <qtextstream.h>
#include <opie/ocontactaccess.h>
#include <opie/ocontact.h>
#include "addresslist.h"
AddressList::AddressList()
{
- addresses.setAutoDelete(TRUE);
- read();
- dirty = FALSE;
+ addresses.setAutoDelete(TRUE);
+ read();
+ dirty = FALSE;
}
AddressList::~AddressList()
{
- addresses.clear();
+ addresses.clear();
}
-void AddressList::addContact(QString email, QString name)
+void AddressList::addContact(const QString &email, const QString &name)
{
- //skip if not a valid email address,
- if (email.find( '@') == -1)
- return;
-
- if ( ! containsEmail(email) ) {
- Contact *in = new Contact;
- in->email = email;
- in->name = name;
- addresses.append(in);
- dirty = TRUE;
- }
+ //skip if not a valid email address,
+ if (email.find( '@') == -1)
+ return;
+
+ if ( ! containsEmail(email) ) {
+ Contact *in = new Contact;
+ in->email = email;
+ in->name = name;
+ addresses.append(in);
+ dirty = TRUE;
+ }
}
-bool AddressList::containsEmail(QString email)
+bool AddressList::containsEmail(const QString &email)
{
- return ( getEmailRef(email) != -1 );
+ return ( getEmailRef(email) != -1 );
}
-bool AddressList::containsName(QString name)
+bool AddressList::containsName(const QString &name)
{
- return ( getNameRef(name) != -1 );
+ return ( getNameRef(name) != -1 );
}
-QString AddressList::getNameByEmail(QString email)
+QString AddressList::getNameByEmail(const QString &email)
{
- int pos = getEmailRef(email);
- if (pos != -1) {
- Contact *ptr = addresses.at(pos);
- return ptr->name;
- }
-
- return NULL;
+ int pos = getEmailRef(email);
+ if (pos != -1) {
+ Contact *ptr = addresses.at(pos);
+ return ptr->name;
+ }
+
+ return NULL;
}
-QString AddressList::getEmailByName(QString name)
+QString AddressList::getEmailByName(const QString &name)
{
- int pos = getNameRef(name);
- if (pos != -1) {
- Contact *ptr = addresses.at(pos);
- return ptr->email;
- }
-
- return NULL;
+ int pos = getNameRef(name);
+ if (pos != -1) {
+ Contact *ptr = addresses.at(pos);
+ return ptr->email;
+ }
+
+ return NULL;
}
-int AddressList::getEmailRef(QString email)
+int AddressList::getEmailRef(const QString &email)
{
- int pos = 0;
- Contact *ptr;
-
- for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
- if (ptr->email == email)
- return pos;
- pos++;
- }
- return -1;
+ int pos = 0;
+ Contact *ptr;
+
+ for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
+ if (ptr->email == email)
+ return pos;
+ pos++;
+ }
+ return -1;
}
-int AddressList::getNameRef(QString name)
+int AddressList::getNameRef(const QString &name)
{
- int pos = 0;
- Contact *ptr;
-
- for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
- if (ptr->name == name)
- return pos;
- pos++;
- }
- return -1;
+ int pos = 0;
+ Contact *ptr;
+
+ for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
+ if (ptr->name == name)
+ return pos;
+ pos++;
+ }
+ return -1;
}
QList<Contact>* AddressList::getContactList()
{
- return &addresses;
+ return &addresses;
}
void AddressList::read()
{
- OContactAccess::List::Iterator it;
-
- QString lineEmail, lineName, email, name;
- OContactAccess m_contactdb("mailit");
- OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 );
- //OContact* oc;(*it).defaultEmail()
-
- for ( it = m_list.begin(); it != m_list.end(); ++it )
- {
- //oc=(OContact*) it;
- if ((*it).defaultEmail().length()!=0)
- addContact((*it).defaultEmail(),(*it).fileAs());
- }
-
- /*if (! f.open(IO_ReadOnly) )
- return;
-
- QTextStream stream(&f);
-
- while (! stream.atEnd() ) {
- lineEmail = stream.readLine();
- if (! stream.atEnd() )
- lineName = stream.readLine();
- else return;
-
- email = getRightString(lineEmail);
- name = getRightString(lineName);
- addContact(email, name);
- }
- f.close();*/
+ OContactAccess::List::Iterator it;
+
+ QString lineEmail, lineName, email, name;
+ OContactAccess m_contactdb("mailit");
+ OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 );
+ //OContact* oc;(*it).defaultEmail()
+
+ for ( it = m_list.begin(); it != m_list.end(); ++it )
+ {
+ //oc=(OContact*) it;
+ if ((*it).defaultEmail().length()!=0)
+ addContact((*it).defaultEmail(),(*it).fileAs());
+ }
+
+ /*if (! f.open(IO_ReadOnly) )
+ return;
+
+ QTextStream stream(&f);
+
+ while (! stream.atEnd() ) {
+ lineEmail = stream.readLine();
+ if (! stream.atEnd() )
+ lineName = stream.readLine();
+ else return;
+
+ email = getRightString(lineEmail);
+ name = getRightString(lineName);
+ addContact(email, name);
+ }
+ f.close();*/
}
-QString AddressList::getRightString(QString in)
+QString AddressList::getRightString(const QString &in)
{
- QString out = "";
-
- int pos = in.find('=');
- if (pos != -1) {
- out = in.mid(pos+1).stripWhiteSpace();
- }
- return out;
+ QString out = "";
+
+ int pos = in.find('=');
+ if (pos != -1) {
+ out = in.mid(pos+1).stripWhiteSpace();
+ }
+ return out;
}
diff --git a/noncore/net/mailit/addresslist.h b/noncore/net/mailit/addresslist.h
index 99cef9a..b46d467 100644
--- a/noncore/net/mailit/addresslist.h
+++ b/noncore/net/mailit/addresslist.h
@@ -1,58 +1,58 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef ADDRESSLIST_H
#define ADDRESSLIST_H
#include <qobject.h>
#include <qlist.h>
struct Contact
{
- QString email;
- QString name;
+ QString email;
+ QString name;
};
class AddressList : public QObject
{
- Q_OBJECT
+ Q_OBJECT
public:
- AddressList();
- ~AddressList();
- void addContact(QString email, QString name);
- bool containsEmail(QString email);
- bool containsName(QString name);
- QString getNameByEmail(QString email);
- QString getEmailByName(QString name);
- QList<Contact>* getContactList();
+ AddressList();
+ ~AddressList();
+ void addContact(const QString &email, const QString &name);
+ bool containsEmail(const QString &email);
+ bool containsName(const QString &name);
+ QString getNameByEmail(const QString &email);
+ QString getEmailByName(const QString &name);
+ QList<Contact>* getContactList();
private:
- int getEmailRef(QString email);
- int getNameRef(QString name);
- QString getRightString(QString in);
- void read();
+ int getEmailRef(const QString &email);
+ int getNameRef(const QString &name);
+ QString getRightString(const QString &in);
+ void read();
private:
- QList<Contact> addresses;
- QString filename;
- bool dirty;
+ QList<Contact> addresses;
+ QString filename;
+ bool dirty;
};
#endif
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp
index b039cc4..2102ba7 100644
--- a/noncore/net/mailit/emailclient.cpp
+++ b/noncore/net/mailit/emailclient.cpp
@@ -320,203 +320,204 @@ void EmailClient::mailSent()
void EmailClient::getNewMail() {
if (accountList.count() == 0) {
QMessageBox::warning(qApp->activeWindow(),"No account selected",
"You must create an account", "OK\n");
return;
}
setMailAccount();
receiving = TRUE;
previewingMail = TRUE;
getMailButton->setEnabled(FALSE);
cancelButton->setEnabled(TRUE);
selectAccountMenu->setEnabled(FALSE);
status1Label->setText(currentAccount->accountName + " headers");
progressBar->reset();
//get any previous mails not downloaded and add to queue
/*mailDownloadList.clear();
Email *mailPtr;
item = (EmailListItem *) inboxView->firstChild();
while (item != NULL) {
mailPtr = item->getMail();
if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) {
mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
}
item = (EmailListItem *) item->nextSibling();
}*/
emailHandler->getMailHeaders();
}
void EmailClient::getAllNewMail()
{
allAccounts = TRUE;
currentAccount = accountList.first();
getNewMail();
}
void EmailClient::mailArrived(const Email &mail, bool fromDisk)
{
Enclosure *ePtr;
Email newMail;
int thisMailId;
- emailHandler->parse(mail.rawMail, lineShift, &newMail);
+ emailHandler->parse( mail.rawMail, lineShift, &newMail);
mailconf->setGroup(newMail.id);
if (fromDisk)
{
newMail.downloaded = mailconf->readBoolEntry("downloaded");
newMail.size = mailconf->readNumEntry("size");
newMail.serverId = mailconf->readNumEntry("serverid");
newMail.fromAccountId = mailconf->readNumEntry("fromaccountid");
}
else
{ //mail arrived from server
newMail.serverId = mail.serverId;
newMail.size = mail.size;
newMail.downloaded = mail.downloaded;
newMail.fromAccountId = emailHandler->getAccount()->id;
mailconf->writeEntry("fromaccountid", newMail.fromAccountId);
}
//add if read or not
newMail.read = mailconf->readBoolEntry("mailread");
//check if new mail
if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) {
thisMailId = mailIdCount;
mailIdCount++;
//set server count, so that if the user aborts, the new
//header is not reloaded
if ((currentAccount)&&(currentAccount->synchronize))
currentAccount->lastServerMailCount++;
mailconf->writeEntry("internalmailid", thisMailId);
mailconf->writeEntry("downloaded", newMail.downloaded);
mailconf->writeEntry("size", (int) newMail.size);
mailconf->writeEntry("serverid", newMail.serverId);
//addressList->addContact(newMail.fromMail, newMail.from);
}
mailconf->writeEntry("downloaded", newMail.downloaded);
QString stringMailId;
stringMailId.setNum(thisMailId);
//see if any attatchments needs to be stored
for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) {
QString stringId;
stringId.setNum(ePtr->id);
int id = mailconf->readNumEntry("enclosureid_" + stringId);
if (id != ePtr->id) { //new entry
mailconf->writeEntry("enclosureid_" + stringId, ePtr->id);
mailconf->writeEntry("name_" + stringId, ePtr->originalName);
mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType);
mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute);
mailconf->writeEntry("saved_" + stringId, ePtr->saved);
mailconf->writeEntry("installed_" + stringId, FALSE);
ePtr->name = stringMailId + "_" + stringId;
ePtr->path = getPath(TRUE);
if (emailHandler->getEnclosure(ePtr)) { //file saved
ePtr->saved = TRUE;
mailconf->writeEntry("saved_" + stringId, ePtr->saved);
mailconf->writeEntry("filename_" + stringId, ePtr->name);
mailconf->writeEntry("path_" + stringId, ePtr->path);
} else {
ePtr->saved = FALSE;
mailconf->writeEntry("saved_" + stringId, ePtr->saved);
}
} else {
ePtr->saved = mailconf->readBoolEntry("saved_" + stringId);
ePtr->installed = mailconf->readBoolEntry("installed_" + stringId);
if (ePtr->saved) {
ePtr->name = mailconf->readEntry("filename_" + stringId);
ePtr->path = mailconf->readEntry("path_" + stringId);
}
}
}
bool found=false;
if (!fromDisk)
{
Email *mailPtr;
item = (EmailListItem *) inboxView->firstChild();
while ((item != NULL)&&(!found))
{
mailPtr = item->getMail();
if (mailPtr->id == newMail.id) {
item->setMail(newMail);
emit mailUpdated(item->getMail());
- found = true;
+ found = true;
}
item = (EmailListItem *) item->nextSibling();
}
}
- if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE);
-
- if (item->getMail()->files.count()>0)
- {
- item->setPixmap(0, Resource::loadPixmap("mailit/attach"));
- }
+ if ((!found)||(fromDisk)) {
+ item = new EmailListItem(inboxView, newMail, TRUE);
+ }
+ if (item->getMail()->files.count()>0)
+ {
+ item->setPixmap(0, Resource::loadPixmap("mailit/attach"));
+ }
/*if (!newMail.downloaded)
mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/
mailboxView->setCurrentTab(0);
}
void EmailClient::allMailArrived(int count)
{
// not previewing means all mailtransfer has been done
/*if (!previewingMail) {*/
if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) {
emit newCaption("Mailit - " + currentAccount->accountName);
getNewMail();
return;
} else {
allAccounts = FALSE;
receiving = FALSE;
getMailButton->setEnabled(TRUE);
cancelButton->setEnabled(FALSE);
selectAccountMenu->setEnabled(TRUE);
status1Label->setText("Idle");
progressBar->reset();
return;
}
//}
// all headers downloaded from server, start downloading remaining mails
previewingMail = FALSE;
status1Label->setText(currentAccount->accountName);
progressBar->reset();
mailboxView->setCurrentTab(0);
}
void EmailClient::moveMailFront(Email *mailPtr)
{
if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) {
mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size);
}
}
void EmailClient::smtpError(int code)
{
QString temp;
@@ -597,167 +598,167 @@ void EmailClient::readMail()
Email mail;
int start, stop;
QString s, del;
QFile f(getPath(FALSE) + "inbox.txt");
if ( f.open(IO_ReadOnly) ) { // file opened successfully
QTextStream t( &f ); // use a text stream
s = t.read();
f.close();
start = 0;
del = "\n.\n";
while ((uint) start < s.length()) {
stop = s.find(del, start);
if (stop == -1)
stop = s.length() - del.length();
mail.rawMail = s.mid(start, stop + del.length() - start );
start = stop + del.length();
mailArrived(mail, TRUE);
}
}
QFile fo(getPath(FALSE) + "outbox.txt");
if ( fo.open(IO_ReadOnly) ) { // file opened successfully
QTextStream t( &fo ); // use a text stream
s = t.read();
fo.close();
start = 0;
del = "\n.\n";
while ((uint) start < s.length()) {
stop = s.find(del, start);
if (stop == -1)
stop = s.length() - del.length();
mail.rawMail = s.mid(start, stop + del.length() - start );
start = stop + del.length();
emailHandler->parse(mail.rawMail, lineShift, &mail);
mail.sent = false;
mail.received = false;
enqueMail(mail);
}
}
}
-void EmailClient::saveMail(QString fileName, QListView *view)
+void EmailClient::saveMail(const QString &fileName, QListView *view)
{
QFile f(fileName);
Email *mail;
if (! f.open(IO_WriteOnly) ) {
qWarning("could not open file");
return;
}
item = (EmailListItem *) view->firstChild();
QTextStream t(&f);
while (item != NULL) {
mail = item->getMail();
t << mail->rawMail;
mailconf->setGroup(mail->id);
mailconf->writeEntry("mailread", mail->read);
item = (EmailListItem *) item->nextSibling();
}
f.close();
}
//paths for mailit, is settings, inbox, enclosures
QString EmailClient::getPath(bool enclosurePath)
{
QString basePath = "qtmail";
QString enclosures = "enclosures";
QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath);
if ( !dir.exists() )
dir.mkdir( dir.path() );
if (enclosurePath) {
dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures);
if ( !dir.exists() )
dir.mkdir( dir.path() );
return (dir.path() + "/");
}
return (dir.path() + "/");
}
void EmailClient::readSettings()
{
int y,acc_count;
mailconf->setGroup("mailitglobal");
acc_count=mailconf->readNumEntry("Accounts",0);
for (int accountPos = 0;accountPos<acc_count ; accountPos++)
{
mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ...
account.accountName = mailconf->readEntry("AccName","");
account.name = mailconf->readEntry("UserName","");
account.emailAddress = mailconf->readEntry("Email","");
account.popUserName = mailconf->readEntry("POPUser","");
account.popPasswd = mailconf->readEntryCrypt("POPPassword","");
account.popServer = mailconf->readEntry("POPServer","");
account.smtpServer = mailconf->readEntry("SMTPServer","");
account.id = mailconf->readNumEntry("AccountId",0);
account.syncLimit = mailconf->readNumEntry("HeaderLimit",0);
account.lastServerMailCount = 0;
account.synchronize = FALSE;
account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes");
if (account.synchronize)
{
- mailconf->readNumEntry("LASTSERVERMAILCOUNT",0);
+ mailconf->readNumEntry("LASTSERVERMAILCOUNT",0);
}
accountList.append(&account);
}
mailconf->setGroup("mailitglobal");
if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1)
{
mailIdCount = y;
}
if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1)
{
accountIdCount = y;
}
}
void EmailClient::saveSettings()
{
int acc_count=0;
MailAccount *accountPtr;
if (!mailconf)
{
qWarning("could not save settings");
return;
}
for (accountPtr = accountList.first(); accountPtr != 0;
accountPtr = accountList.next())
{
mailconf->setGroup("Account_"+QString::number(++acc_count));
mailconf->writeEntry("AccName",accountPtr->accountName );
mailconf->writeEntry("UserName",accountPtr->name);
mailconf->writeEntry("Email",accountPtr->emailAddress);
mailconf->writeEntry("POPUser",accountPtr->popUserName);
mailconf->writeEntryCrypt("POPPassword",accountPtr->popPasswd);
mailconf->writeEntry("POPServer",accountPtr->popServer);
mailconf->writeEntry("SMTPServer",accountPtr->smtpServer);
mailconf->writeEntry("AccountId",accountPtr->id);
if (accountPtr->synchronize)
{
mailconf->writeEntry("Synchronize","Yes");
mailconf->writeEntry("HeaderLimit",accountPtr->syncLimit);
mailconf->writeEntry("LastServerMailCount",accountPtr->lastServerMailCount);
}
else
@@ -870,167 +871,167 @@ void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox)
//if mail is in queue for download, remove it from
//queue if possible
if ( (receiving) && (mPtr->fromAccountId == currentAccount->id) ) {
if ( !mPtr->downloaded )
mailDownloadList.remove(mPtr->serverId, mPtr->size);
}
mailconf->setGroup(mPtr->id);
mailconf->clearGroup();
//delete any temporary attatchemnts storing
for ( ePtr=mPtr->files.first(); ePtr != 0; ePtr=mPtr->files.next() ) {
if (ePtr->saved) {
QFile::remove( (ePtr->path + ePtr->name) );
}
}
inboxView->takeItem(mailItem);
}
else
{
outboxView->takeItem(mailItem);
}
}
void EmailClient::setMailSize(int size)
{
progressBar->reset();
progressBar->setTotalSteps(size);
}
void EmailClient::setTotalSize(int size)
{
}
void EmailClient::setDownloadedSize(int size)
{
int total = progressBar->totalSteps();
if (size < total) {
progressBar->setProgress(size);
} else {
progressBar->setProgress(total);
}
}
void EmailClient::deleteItem()
{
- bool inbox=mailboxView->currentTab()==0;
- QListView* box;
-
- EmailListItem* eli;
- int pos;
-
- inbox ? box=inboxView : box=outboxView;
-
- eli=(EmailListItem*)box->selectedItem();
-
- if (eli)
- {
- box->setSelected(eli->itemBelow(),true); //select the previous item
-
- deleteMail(eli,(bool&)inbox); //remove mail entry
- }
+ bool inbox=mailboxView->currentTab()==0;
+ QListView* box;
+
+ EmailListItem* eli;
+ int pos;
+
+ inbox ? box=inboxView : box=outboxView;
+
+ eli=(EmailListItem*)box->selectedItem();
+
+ if (eli)
+ {
+ box->setSelected(eli->itemBelow(),true); //select the previous item
+
+ deleteMail(eli,(bool&)inbox); //remove mail entry
+ }
}
void EmailClient::inboxItemPressed()
{
-// timerID=startTimer(500);
+// timerID=startTimer(500);
}
void EmailClient::inboxItemReleased()
{
- // killTimer(timerID);
+ // killTimer(timerID);
}
/*void EmailClient::timerEvent(QTimerEvent *e)
{
/*killTimer(timerID);
QPopupMenu *action = new QPopupMenu(this);
int reply=0;
action->insertItem(tr( "Reply To" ),this,SLOT(reply()));
action->insertItem( tr( "Reply All" ),this,SLOT(replyAll()));
action->insertItem( tr( "Forward" ), this,SLOT(forward()));
action->insertItem( tr( "Remove Mail" ), this,SLOT(remove()));
action->exec(QCursor::pos());
if (action) delete action;
}*/
Email* EmailClient::getCurrentMail()
{
- EmailListItem *eli=(EmailListItem* ) (inboxView->selectedItem());
- if (eli!=NULL)
- return eli->getMail();
- else
- return NULL;
+ EmailListItem *eli=(EmailListItem* ) (inboxView->selectedItem());
+ if (eli!=NULL)
+ return eli->getMail();
+ else
+ return NULL;
}
void EmailClient::download(Email* mail)
{
- MailAccount* acc=0;
-
- tempMailDownloadList.clear();
- tempMailDownloadList.sizeInsert(mail->serverId, mail->size);
-
- acc=accountList.at(mail->fromAccountId-1);
- if (acc)
- {
- emailHandler->setAccount(*acc);
- emailHandler->getMailByList(&tempMailDownloadList);
- }
- else
- QMessageBox::warning(qApp->activeWindow(),
- tr("No account associated"), tr("There is no active account \nassociated to this mail\n it can not be downloaded"), "Abort\n");
+ MailAccount* acc=0;
+
+ tempMailDownloadList.clear();
+ tempMailDownloadList.sizeInsert(mail->serverId, mail->size);
+
+ acc=accountList.at(mail->fromAccountId-1);
+ if (acc)
+ {
+ emailHandler->setAccount(*acc);
+ emailHandler->getMailByList(&tempMailDownloadList);
+ }
+ else
+ QMessageBox::warning(qApp->activeWindow(),
+ tr("No account associated"), tr("There is no active account \nassociated to this mail\n it can not be downloaded"), "Abort\n");
}
void EmailClient::receive(const QCString& msg, const QByteArray& data)
{
- /*if (msg=="getMail()")
- {
- /*QDialog qd(qApp->activeWindow(),"Getting mail",true);
- QVBoxLayout *vbProg = new QVBoxLayout( &qd );
-
- initStatusBar(&qd);
-
- if (statusBar==0)
- {
- qDebug("No Bar ...");
- //statusBar=new ProgressBar(&qd);
- }
- statusBar->show();
- vbProg->addWidget(statusBar);
- qd.showMaximized();
- qd.show();
- emit getAllNewMail();
- //qd.exec();
- }
- else if (msg=="compose()")
- {
- QDialog qd(qApp->activeWindow(),"Getting mail",true);
-
- WriteMail wm(&qd,"write new mail");
- QVBoxLayout vbProg( &qd );
-
- wm.showMaximized();
- vbProg.addWidget(&wm);
-
- qd.showMaximized();
-
- emit composeRequested();
- qd.exec();
-
- QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
- }
-
- else if (msg=="dialog()")
- {
- QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
- }*/
+ /*if (msg=="getMail()")
+ {
+ /*QDialog qd(qApp->activeWindow(),"Getting mail",true);
+ QVBoxLayout *vbProg = new QVBoxLayout( &qd );
+
+ initStatusBar(&qd);
+
+ if (statusBar==0)
+ {
+ qDebug("No Bar ...");
+ //statusBar=new ProgressBar(&qd);
+ }
+ statusBar->show();
+ vbProg->addWidget(statusBar);
+ qd.showMaximized();
+ qd.show();
+ emit getAllNewMail();
+ //qd.exec();
+ }
+ else if (msg=="compose()")
+ {
+ QDialog qd(qApp->activeWindow(),"Getting mail",true);
+
+ WriteMail wm(&qd,"write new mail");
+ QVBoxLayout vbProg( &qd );
+
+ wm.showMaximized();
+ vbProg.addWidget(&wm);
+
+ qd.showMaximized();
+
+ emit composeRequested();
+ qd.exec();
+
+ QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
+ }
+
+ else if (msg=="dialog()")
+ {
+ QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
+ }*/
}
diff --git a/noncore/net/mailit/emailclient.h b/noncore/net/mailit/emailclient.h
index 994fec5..c98cfce 100644
--- a/noncore/net/mailit/emailclient.h
+++ b/noncore/net/mailit/emailclient.h
@@ -61,97 +61,97 @@ private:
MailAccount* dupl(MailAccount *in);
MailAccount *ac;
};
//class EmailClient : public EmailClientBase
class EmailClient : public QMainWindow
{
Q_OBJECT
public:
EmailClient( QWidget* parent, const char* name, WFlags fl = 0 );
~EmailClient();
AddressList* getAdrListRef();
protected:
//void timerEvent(QTimerEvent*);
signals:
void composeRequested();
void viewEmail(QListView *, Email *);
void mailUpdated(Email *);
void newCaption(const QString &);
void replyRequested(Email&, bool&);
void forwardRequested(Email&);
void removeItem(EmailListItem*, bool&);
/*void reply(Email&);
void replyAll(Email&);
void remove(Email&);
void forward(Email&);*/
public slots:
void compose();
void cancel();
void enqueMail(const Email &mail);
void setMailAccount();
void sendQuedMail();
void mailSent();
void deleteItem();
void getNewMail();
void getAllNewMail();
void smtpError(int code);
void popError(int code);
void inboxItemSelected();
void outboxItemSelected();
void inboxItemPressed();
void inboxItemReleased();
void mailArrived(const Email &mail, bool fromDisk);
void allMailArrived(int);
- void saveMail(QString fileName, QListView *view);
+ void saveMail(const QString &fileName, QListView *view);
void selectAccount(int);
void editAccount(int);
void updateAccounts();
void deleteAccount(int);
void deleteMail(EmailListItem *mailItem, bool &inbox);
void setTotalSize(int);
void setMailSize(int);
void setDownloadedSize(int);
void moveMailFront(Email *mailPtr);
void download(Email*);
/* void reply();
void replyAll();
void forward();
void remove();*/
private slots:
void receive(const QCString&, const QByteArray&);
private:
void init();
void initStatusBar(QWidget*);
void readMail();
QString getPath(bool enclosurePath);
void readSettings();
void saveSettings();
Email* getCurrentMail();
int timerID;
Config *mailconf;
int newAccountId, idCount, mailIdCount;
int accountIdCount;
AccountList accountList;
AddressList *addressList;
EditAccount *editAccountView;
EmailListItem *item;
EmailHandler *emailHandler;
QList<Email> quedMessages;
MailList mailDownloadList;
MailList tempMailDownloadList;
bool sending, receiving, previewingMail, allAccounts;
QString lineShift;
MailAccount account, *currentAccount;
QCopChannel* channel;
QToolBar *bar;
QProgressBar *progressBar;
diff --git a/noncore/net/mailit/emailhandler.cpp b/noncore/net/mailit/emailhandler.cpp
index 62fa64f..59ccd90 100644
--- a/noncore/net/mailit/emailhandler.cpp
+++ b/noncore/net/mailit/emailhandler.cpp
@@ -1,90 +1,90 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qfileinfo.h>
#include <stdlib.h>
#include <qapplication.h>
#include <qmessagebox.h>
#include <qcstring.h>
#include "emailhandler.h"
#include <qpe/applnk.h>
#include <qpe/filemanager.h>
QCollection::Item EnclosureList::newItem(QCollection::Item d)
{
return dupl( (Enclosure *) d);
}
Enclosure* EnclosureList::dupl(Enclosure *in)
{
ac = new Enclosure(*in);
return ac;
}
EmailHandler::EmailHandler()
{
- qDebug("EMailHandler::EmailHandler");
+ qDebug("EMailHandler::EmailHandler");
smtpClient = new SmtpClient();
popClient = new PopClient();
connect(smtpClient, SIGNAL(errorOccurred(int)), this,
SIGNAL(smtpError(int)) );
connect(smtpClient, SIGNAL(mailSent()), this, SIGNAL(mailSent()) );
connect(smtpClient, SIGNAL(updateStatus(const QString &)), this,
SIGNAL(updateSmtpStatus(const QString &)) );
connect(popClient, SIGNAL(errorOccurred(int)), this,
SIGNAL(popError(int)) );
connect(popClient, SIGNAL(newMessage(const QString &, int, uint, bool)),
this, SLOT(messageArrived(const QString &, int, uint, bool)) );
connect(popClient, SIGNAL(updateStatus(const QString &)), this,
SIGNAL(updatePopStatus(const QString &)) );
connect(popClient, SIGNAL(mailTransfered(int)), this,
SIGNAL(mailTransfered(int)) );
//relaying size information
connect(popClient, SIGNAL(currentMailSize(int)),
this, SIGNAL(currentMailSize(int)) );
connect(popClient, SIGNAL(downloadedSize(int)),
this, SIGNAL(downloadedSize(int)) );
}
void EmailHandler::sendMail(QList<Email> *mailList)
{
Email *currentMail;
QString temp;
QString userName = mailAccount.name;
userName += " <" + mailAccount.emailAddress + ">";
for (currentMail = mailList->first(); currentMail != 0;
currentMail = mailList->next()) {
if (encodeMime(currentMail) == 0) {
smtpClient->addMail(userName, currentMail->subject,
currentMail->recipients, currentMail->rawMail);
} else { //error
temp = tr("Could not locate all files in \nmail with subject: ") +
currentMail->subject;
temp += tr("\nMail has NOT been sent");
QMessageBox::warning(qApp->activeWindow(), tr("Attachment error"), temp, tr("OK\n"));
}
}
@@ -103,167 +103,167 @@ void EmailHandler::getMail()
popClient->setSynchronize(mailAccount.lastServerMailCount);
} else {
popClient->removeSynchronize();
}
headers = FALSE;
//popClient->headersOnly(headers, 0);
popClient->newConnection(mailAccount.popServer, 110);
}
void EmailHandler::getMailHeaders()
{
popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd);
mailAccount.synchronize ? popClient->setSynchronize(mailAccount.lastServerMailCount): popClient->removeSynchronize();
headers = TRUE;
popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all
qDebug("Initiating connection");
popClient->newConnection(mailAccount.popServer, 110);
}
void EmailHandler::getMailByList(MailList *mailList)
{
if (mailList->count() == 0) { //should not occur though
emit mailTransfered(0);
return;
}
headers = FALSE;
popClient->headersOnly(FALSE, 0);
popClient->setAccount(mailAccount.popUserName,mailAccount.popPasswd);
popClient->setSelectedMails(mailList);
popClient->newConnection(mailAccount.popServer, 110);
}
void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete)
{
Email mail;
mail.rawMail = message;
mail.serverId = id;
mail.size = size;
mail.downloaded = complete;
emit mailArrived(mail, FALSE);
}
-bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
+bool EmailHandler::parse(const QString &in, const QString &lineShift, Email *mail)
{
QString temp, boundary;
int pos;
QString delimiter, header, body, mimeHeader, mimeBody;
QString content, contentType, contentAttribute, id, encoding;
QString fileName, storedName;
int enclosureId = 0;
mail->rawMail = in;
mail->received = TRUE;
mail->files.setAutoDelete(TRUE);
temp = lineShift + "." + lineShift;
if (in.right(temp.length()) != temp) {
mail->rawMail += temp;
}
delimiter = lineShift + lineShift; // "\n\n" or "\r\n\r\n"
pos = in.find(delimiter, 0, FALSE);
header = in.left(pos);
body = in.right(in.length() - pos - delimiter.length());
if ((body.at(body.length()-2) == '.') && (body.at(body.length()-3) == '\n'))
body.truncate(body.length()-2);
TextParser p(header, lineShift);
if ((pos = p.find("FROM",':', 0, TRUE)) != -1) {
pos++;
if (p.separatorAt(pos) == ' ') {
mail->from = p.getString(&pos, '<', false);
mail->from = mail->from.stripWhiteSpace();
if ( (mail->from.length() > 2) && (mail->from[0] == '"') ) {
mail->from = mail->from.left(mail->from.length() - 1);
mail->from = mail->from.right(mail->from.length() - 1);
}
pos++;
mail->fromMail = p.getString(&pos, '>', false);
} else {
if (p.separatorAt(pos) == '<') //No name.. nasty
pos++;
//pos++;
mail->fromMail = p.getString(&pos, 'z', TRUE);
if (mail->fromMail.at(mail->fromMail.length()-1) == '>')
mail->fromMail.truncate(mail->fromMail.length() - 1);
mail->from=mail->fromMail;
}
}
pos=0;
//Search for To: after the FROM: attribute to prevent hitting the Delivered-To:
while((pos = p.find("TO",':', pos+1, TRUE))!=-1)
{
- QString rec;
-
- if (p.separatorAt(pos-1)!='-') //The - separator means that this is a Delivered-To: or Reply-To:
- {
- pos++;
- mail->recipients.append(p.getString(&pos, '\r', TRUE));
- }
+ QString rec;
+
+ if (p.separatorAt(pos-1)!='-') //The - separator means that this is a Delivered-To: or Reply-To:
+ {
+ pos++;
+ mail->recipients.append(p.getString(&pos, '\r', TRUE));
+ }
}
//
//if (pos==-1) mail->recipients.append (tr("undisclosed recipients") );
if ((pos = p.find("CC",':', 0, TRUE)) != -1)
{
- pos++;
- mail->carbonCopies.append (p.getString(&pos, 'z', TRUE) );
+ pos++;
+ mail->carbonCopies.append (p.getString(&pos, 'z', TRUE) );
}
if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) {
pos++;
mail->subject = p.getString(&pos, 'z', TRUE);
}
if ((pos = p.find("DATE",':', 0, TRUE)) != -1) {
pos++;
mail->date = p.getString(&pos, 'z', TRUE);
}
if ((pos = p.find("MESSAGE",'-', 0, TRUE)) != -1) {
pos++;
if ( (p.wordAt(pos).upper() == "ID") &&
(p.separatorAt(pos) == ':') ) {
id = p.getString(&pos, 'z', TRUE);
mail->id = id;
}
}
pos = 0;
while ( ((pos = p.find("MIME",'-', pos, TRUE)) != -1) ) {
pos++;
if ( (p.wordAt(pos).upper() == "VERSION") &&
(p.separatorAt(pos) == ':') ) {
pos++;
if (p.getString(&pos, 'z', true) == "1.0") {
mail->mimeType = 1;
}
}
}
if (mail->mimeType == 1) {
boundary = "";
if ((pos = p.find("BOUNDARY", '=', 0, TRUE)) != -1) {
pos++;
boundary = p.getString(&pos, 'z', true);
if (boundary[0] == '"') {
boundary = boundary.left(boundary.length() - 1); //strip "
boundary = boundary.right(boundary.length() - 1); //strip "
}
boundary = "--" + boundary; //create boundary field
}
@@ -395,167 +395,167 @@ int EmailHandler::parse64base(char *src, char *bufOut) {
//conversion table withouth table...
for (int x = 0; x < 4; x++) {
c = src[x];
if ( (int) c >= 'A' && (int) c <= 'Z')
li[x] = (int) c - (int) 'A';
if ( (int) c >= 'a' && (int) c <= 'z')
li[x] = (int) c - (int) 'a' + 26;
if ( (int) c >= '0' && (int) c <= '9')
li[x] = (int) c - (int) '0' + 52;
if (c == '+')
li[x] = 62;
if (c == '/')
li[x] = 63;
}
processed = 1;
bufOut[0] = (char) li[0] & (32+16+8+4+2+1); //mask out top 2 bits
bufOut[0] <<= 2;
z = li[1] >> 4;
bufOut[0] = bufOut[0] | z; //first byte retrived
if (src[2] != '=') {
bufOut[1] = (char) li[1] & (8+4+2+1); //mask out top 4 bits
bufOut[1] <<= 4;
z = li[2] >> 2;
bufOut[1] = bufOut[1] | z; //second byte retrived
processed++;
if (src[3] != '=') {
bufOut[2] = (char) li[2] & (2+1); //mask out top 6 bits
bufOut[2] <<= 6;
z = li[3];
bufOut[2] = bufOut[2] | z; //third byte retrieved
processed++;
}
}
return processed;
}
int EmailHandler::encodeMime(Email *mail)
{
QString fileName, fileType, contentType, newBody, boundary;
Enclosure *ePtr;
QString userName = mailAccount.name;
- if (userName.length()>0) //only embrace it if there is a user name
- userName += " <" + mailAccount.emailAddress + ">";
+ if (userName.length()>0) //only embrace it if there is a user name
+ userName += " <" + mailAccount.emailAddress + ">";
//add standard headers
newBody = "From: " + userName + "\r\nTo: ";
for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) {
newBody += *it + " ";
}
newBody += "\r\nCC: ";
for (QStringList::Iterator it = mail->carbonCopies.begin(); it != mail->carbonCopies.end(); ++it ) {
newBody += *it + " ";
}
newBody += "\r\nSubject: " + mail->subject + "\r\n";
if (mail->files.count() == 0) { //just a simple mail
newBody += "\r\n" + mail->body;
mail->rawMail = newBody;
return 0;
}
//Build mime encoded mail
boundary = "-----4345=next_bound=0495----";
newBody += "Mime-Version: 1.0\r\n";
newBody += "Content-Type: multipart/mixed; boundary=\"" +
boundary + "\"\r\n\r\n";
newBody += "This is a multipart message in Mime 1.0 format\r\n\r\n";
newBody += "--" + boundary + "\r\nContent-Type: text/plain\r\n\r\n";
newBody += mail->body;
for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) {
fileName = ePtr->originalName;
fileType = ePtr->contentType;
QFileInfo fi(fileName);
// This specification of contentType is temporary
contentType = "";
if (fileType == "Picture") {
contentType = "image/x-image";
} else if (fileType == "Document") {
contentType = "text/plain";
} else if (fileType == "Sound") {
contentType = "audio/x-wav";
} else if (fileType == "Movie") {
contentType = "video/mpeg";
} else {
contentType = "application/octet-stream";
}
newBody += "\r\n\r\n--" + boundary + "\r\n";
newBody += "Content-Type: " + contentType + "; name=\"" +
fi.fileName() + "\"\r\n";
newBody += "Content-Transfer-Encoding: base64\r\n";
newBody += "Content-Disposition: inline; filename=\"" +
fi.fileName() + "\"\r\n\r\n";
if (encodeFile(fileName, &newBody) == -1) //file not found?
return -1;
}
newBody += "\r\n\r\n--" + boundary + "--";
mail->rawMail = newBody;
return 0;
}
-int EmailHandler::encodeFile(QString fileName, QString *toBody)
+int EmailHandler::encodeFile(const QString &fileName, QString *toBody)
{
char *fileData;
char *dataPtr;
QString temp;
uint dataSize, count;
QFile f(fileName);
if (! f.open(IO_ReadOnly) ) {
qWarning("could not open file: " + fileName);
return -1;
}
QTextStream s(&f);
dataSize = f.size();
fileData = (char *) malloc(dataSize + 3);
s.readRawBytes(fileData, dataSize);
temp = "";
dataPtr = fileData;
count = 0;
while (dataSize > 0) {
if (dataSize < 3) {
encode64base(dataPtr, &temp, dataSize);
dataSize = 0;
} else {
encode64base(dataPtr, &temp, 3);
dataSize -= 3;
dataPtr += 3;
count += 4;
}
if (count > 72) {
count = 0;
temp += "\r\n";
}
}
toBody->append(temp);
delete(fileData);
f.close();
return 0;
}
void EmailHandler::encode64base(char *src, QString *dest, int len)
{
QString temp;
uchar c;
uchar bufOut[4];
bufOut[0] = src[0];
diff --git a/noncore/net/mailit/emailhandler.h b/noncore/net/mailit/emailhandler.h
index 5b59f65..e4e7f46 100644
--- a/noncore/net/mailit/emailhandler.h
+++ b/noncore/net/mailit/emailhandler.h
@@ -1,150 +1,150 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef EmailHandler_H
#define EmailHandler_H
#include <qobject.h>
#include <qstring.h>
#include <qdatetime.h>
#include <qlist.h>
#include <qstringlist.h>
#include <qfile.h>
#include <qstringlist.h>
#include <qcollection.h>
#include <qpe/qcopenvelope_qws.h>
#include "smtpclient.h"
#include "popclient.h"
#include "textparser.h"
#include "maillist.h"
struct Enclosure
{
- int id;
- QString originalName;
- QString name;
- QString path;
- QString contentType;
- QString contentAttribute;
- QString encoding;
- QString body; //might use to much mem. check!!
- bool saved, installed;
+ int id;
+ QString originalName;
+ QString name;
+ QString path;
+ QString contentType;
+ QString contentAttribute;
+ QString encoding;
+ QString body; //might use to much mem. check!!
+ bool saved, installed;
};
class EnclosureList : public QList<Enclosure>
{
public:
- Item newItem(Item d);
+ Item newItem(Item d);
private:
- Enclosure* dupl(Enclosure *in);
- Enclosure *ac;
+ Enclosure* dupl(Enclosure *in);
+ Enclosure *ac;
};
struct Email
{
- QString id;
- QString from;
- QString fromMail;
- QStringList recipients;
- QStringList carbonCopies;
- QString date;
- QString subject;
- QString body;
- QString bodyPlain;
- bool sent, received, read, downloaded;
- QString rawMail;
- int mimeType; //1 = Mime 1.0
- int serverId;
- int internalId;
- int fromAccountId;
- QString contentType; //0 = text
- QString contentAttribute; //0 = plain, 1 = html
- EnclosureList files;
- uint size;
-
- void addEnclosure(Enclosure *e)
- {
- files.append(e);
- }
+ QString id;
+ QString from;
+ QString fromMail;
+ QStringList recipients;
+ QStringList carbonCopies;
+ QString date;
+ QString subject;
+ QString body;
+ QString bodyPlain;
+ bool sent, received, read, downloaded;
+ QString rawMail;
+ int mimeType; //1 = Mime 1.0
+ int serverId;
+ int internalId;
+ int fromAccountId;
+ QString contentType; //0 = text
+ QString contentAttribute; //0 = plain, 1 = html
+ EnclosureList files;
+ uint size;
+
+ void addEnclosure(Enclosure *e)
+ {
+ files.append(e);
+ }
};
struct MailAccount
{
- QString accountName;
- QString name;
- QString emailAddress;
- QString popUserName;
- QString popPasswd;
- QString popServer;
- QString smtpServer;
- bool synchronize;
- int syncLimit;
- int lastServerMailCount;
- int id;
+ QString accountName;
+ QString name;
+ QString emailAddress;
+ QString popUserName;
+ QString popPasswd;
+ QString popServer;
+ QString smtpServer;
+ bool synchronize;
+ int syncLimit;
+ int lastServerMailCount;
+ int id;
};
- const int ErrUnknownResponse = 1001;
- const int ErrLoginFailed = 1002;
- const int ErrCancel = 1003;
-
+ const int ErrUnknownResponse = 1001;
+ const int ErrLoginFailed = 1002;
+ const int ErrCancel = 1003;
+
class EmailHandler : public QObject
{
- Q_OBJECT
+ Q_OBJECT
public:
- EmailHandler();
- void setAccount(MailAccount account);
- MailAccount* getAccount(){return &mailAccount;}
- void sendMail(QList<Email> *mailList);
- void getMail();
- void getMailHeaders();
- void getMailByList(MailList *mailList);
- bool parse(QString in, QString lineShift, Email *mail);
- bool getEnclosure(Enclosure *ePtr);
- int parse64base(char *src, char *dest);
- int encodeMime(Email *mail);
- int encodeFile(QString fileName, QString *toBody);
- void encode64base(char *src, QString *dest, int len);
- void cancel();
-
+ EmailHandler();
+ void setAccount(MailAccount account);
+ MailAccount* getAccount(){return &mailAccount;}
+ void sendMail(QList<Email> *mailList);
+ void getMail();
+ void getMailHeaders();
+ void getMailByList(MailList *mailList);
+ bool parse(const QString &in, const QString &lineShift, Email *mail);
+ bool getEnclosure(Enclosure *ePtr);
+ int parse64base(char *src, char *dest);
+ int encodeMime(Email *mail);
+ int encodeFile(const QString &fileName, QString *toBody);
+ void encode64base(char *src, QString *dest, int len);
+ void cancel();
+
signals:
- void mailSent();
- void smtpError(int);
- void popError(int);
- void mailArrived(const Email &, bool);
- void updatePopStatus(const QString &);
- void updateSmtpStatus(const QString &);
- void mailTransfered(int);
- void mailboxSize(int);
- void currentMailSize(int);
- void downloadedSize(int);
+ void mailSent();
+ void smtpError(int);
+ void popError(int);
+ void mailArrived(const Email &, bool);
+ void updatePopStatus(const QString &);
+ void updateSmtpStatus(const QString &);
+ void mailTransfered(int);
+ void mailboxSize(int);
+ void currentMailSize(int);
+ void downloadedSize(int);
public slots:
- void messageArrived(const QString &, int id, uint size, bool complete);
-
+ void messageArrived(const QString &, int id, uint size, bool complete);
+
private:
- MailAccount mailAccount;
- SmtpClient *smtpClient;
- PopClient *popClient;
- bool headers;
+ MailAccount mailAccount;
+ SmtpClient *smtpClient;
+ PopClient *popClient;
+ bool headers;
};
#endif
diff --git a/noncore/net/mailit/emaillistitem.cpp b/noncore/net/mailit/emaillistitem.cpp
index b925a1c..fc9f766 100644
--- a/noncore/net/mailit/emaillistitem.cpp
+++ b/noncore/net/mailit/emaillistitem.cpp
@@ -1,99 +1,99 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qstring.h>
#include <qpe/resource.h>
#include "emaillistitem.h"
EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox)
- : QListViewItem(parent)
+ : QListViewItem(parent)
{
- QString temp;
-
- mail = mailIn;
-
- if (inbox) {
- setText(0, mail.from);
- } else {
- QStringList::Iterator it = mail.recipients.begin();
- temp = *it;
- if (mail.recipients.count() > 1)
- temp += "...";
- setText(0, temp);
- }
- setText(1, mail.subject);
- setText(2,mail.date);
-
- if (mailIn.files.count()>0)
- {
- setPixmap(0, Resource::loadPixmap("mailit/attach"));
- }
-
- selected = FALSE;
+ QString temp;
+
+ mail = mailIn;
+
+ if (inbox) {
+ setText(0, mail.from);
+ } else {
+ QStringList::Iterator it = mail.recipients.begin();
+ temp = *it;
+ if (mail.recipients.count() > 1)
+ temp += "...";
+ setText(0, temp);
+ }
+ setText(1, mail.subject);
+ setText(2,mail.date);
+
+ if (mailIn.files.count()>0)
+ {
+ setPixmap(0, Resource::loadPixmap("mailit/attach"));
+ }
+
+ selected = FALSE;
}
Email* EmailListItem::getMail()
{
- return &mail;
+ return &mail;
}
void EmailListItem::setMail(Email newMail)
{
- mail = newMail;
- repaint();
+ mail = newMail;
+ repaint();
}
void EmailListItem::setItemSelected(bool enable)
{
- selected = enable;
- setSelected(enable);
- repaint();
+ selected = enable;
+ setSelected(enable);
+ repaint();
}
bool EmailListItem::isItemSelected()
{
- return selected;
+ return selected;
}
void EmailListItem::paintCell( QPainter *p, const QColorGroup &cg,
- int column, int width, int alignment )
+ int column, int width, int alignment )
{
- QColorGroup _cg( cg );
- QColor c = _cg.text();
+ QColorGroup _cg( cg );
+ QColor c = _cg.text();
- if ( (! mail.read) && (mail.received) )
- _cg.setColor( QColorGroup::Text, Qt::blue);
- if (!mail.downloaded)
- _cg.setColor( QColorGroup::Text, Qt::red);
-
-/* if (selected) {
- _cg.setColor(QColorGroup::Base, Qt::blue);
- _cg.setColor(QColorGroup::Text, Qt::yellow);
- if (isSelected()) {
- _cg.setColor(QColorGroup::HighlightedText, Qt::yellow);
- } else {
- _cg.setColor(QColorGroup::Highlight, Qt::blue);
- }
- }
-*/
+ if ( (! mail.read) && (mail.received) )
+ _cg.setColor( QColorGroup::Text, Qt::blue);
+ if (!mail.downloaded)
+ _cg.setColor( QColorGroup::Text, Qt::red);
+
+/* if (selected) {
+ _cg.setColor(QColorGroup::Base, Qt::blue);
+ _cg.setColor(QColorGroup::Text, Qt::yellow);
+ if (isSelected()) {
+ _cg.setColor(QColorGroup::HighlightedText, Qt::yellow);
+ } else {
+ _cg.setColor(QColorGroup::Highlight, Qt::blue);
+ }
+ }
+*/
QListViewItem::paintCell( p, _cg, column, width, alignment );
_cg.setColor( QColorGroup::Text, c );
}
diff --git a/noncore/net/mailit/popclient.cpp b/noncore/net/mailit/popclient.cpp
index fedc4e2..dc0116d 100644
--- a/noncore/net/mailit/popclient.cpp
+++ b/noncore/net/mailit/popclient.cpp
@@ -5,323 +5,323 @@
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "popclient.h"
#include "emailhandler.h"
//#define APOP_TEST
extern "C" {
#include "md5.h"
}
#include <qcstring.h>
PopClient::PopClient()
{
socket = new QSocket(this, "popClient");
connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int)));
connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished()));
connect(socket, SIGNAL(readyRead()), this, SLOT(incomingData()));
stream = new QTextStream(socket);
receiving = FALSE;
synchronize = FALSE;
lastSync = 0;
headerLimit = 0;
preview = FALSE;
}
PopClient::~PopClient()
{
delete socket;
delete stream;
}
-void PopClient::newConnection(QString target, int port)
+void PopClient::newConnection(const QString &target, int port)
{
if (receiving) {
qWarning("socket in use, connection refused");
return;
}
status = Init;
socket->connectToHost(target, port);
receiving = TRUE;
//selected = FALSE;
emit updateStatus("DNS lookup");
}
-void PopClient::setAccount(QString popUser, QString popPasswd)
+void PopClient::setAccount(const QString &popUser, const QString &popPasswd)
{
popUserName = popUser;
popPassword = popPasswd;
}
void PopClient::setSynchronize(int lastCount)
{
synchronize = TRUE;
lastSync = lastCount;
}
void PopClient::removeSynchronize()
{
synchronize = FALSE;
lastSync = 0;
}
void PopClient::headersOnly(bool headers, int limit)
{
preview = headers;
headerLimit = limit;
}
void PopClient::setSelectedMails(MailList *list)
{
selected = TRUE;
mailList = list;
}
void PopClient::connectionEstablished()
{
emit updateStatus(tr("Connection established"));
}
void PopClient::errorHandling(int status)
{
emit updateStatus(tr("Error Occured"));
emit errorOccurred(status);
socket->close();
receiving = FALSE;
}
void PopClient::incomingData()
{
QString response, temp, temp2, timeStamp;
QString md5Source;
int start, end;
// char *md5Digest;
char md5Digest[16];
// if ( !socket->canReadLine() )
// return;
response = socket->readLine();
switch(status) {
//logging in
case Init: {
#ifdef APOP_TEST
start = response.find('<',0);
end = response.find('>', start);
if( start >= 0 && end > start )
{
timeStamp = response.mid( start , end - start + 1);
md5Source = timeStamp + popPassword;
md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]);
for(int j =0;j < MD5_DIGEST_LENGTH ;j++)
{
printf("%x", md5Digest[j]);
}
printf("\n");
// qDebug(md5Digest);
*stream << "APOP " << popUserName << " " << md5Digest << "\r\n";
// qDebug("%s", stream);
status = Stat;
}
else
#endif
{
timeStamp = "";
*stream << "USER " << popUserName << "\r\n";
status = Pass;
}
break;
}
case Pass: {
*stream << "PASS " << popPassword << "\r\n";
- status = Stat;
-
+ status = Stat;
+
break;
}
//ask for number of messages
case Stat: {
if (response[0] == '+') {
*stream << "STAT" << "\r\n";
- status = Mcnt;
+ status = Mcnt;
} else errorHandling(ErrLoginFailed);
break;
}
//get count of messages, eg "+OK 4 900.." -> int 4
case Mcnt: {
if (response[0] == '+') {
temp = response.replace(0, 4, "");
int x = temp.find(" ", 0);
temp.truncate((uint) x);
newMessages = temp.toInt();
messageCount = 1;
status = List;
if (synchronize) {
//messages deleted from server, reload all
- if (newMessages < lastSync)
- lastSync = 0;
+ if (newMessages < lastSync)
+ lastSync = 0;
messageCount = 1;
}
- if (selected) {
+ if (selected) {
int *ptr = mailList->first();
if (ptr != 0) {
newMessages++; //to ensure no early jumpout
messageCount = *ptr;
} else newMessages = 0;
- }
+ }
} else errorHandling(ErrUnknownResponse);
}
//Read message number x, count upwards to messageCount
case List: {
if (messageCount <= newMessages) {
*stream << "LIST " << messageCount << "\r\n";
status = Size;
temp2.setNum(newMessages - lastSync);
temp.setNum(messageCount - lastSync);
if (!selected) {
emit updateStatus(tr("Retrieving ") + temp + "/" + temp2);
} else {
//completing a previously closed transfer
/* if ( (messageCount - lastSync) <= 0) {
temp.setNum(messageCount);
emit updateStatus(tr("Previous message ") + temp);
} else {*/
emit updateStatus(tr("Completing message ") + temp);
//}
}
break;
} else {
emit updateStatus(tr("No new Messages"));
status = Quit;
}
}
//get size of message, eg "500 characters in message.." -> int 500
case Size: {
if (status != Quit) { //because of idiotic switch
if (response[0] == '+') {
temp = response.replace(0, 4, "");
int x = temp.find(" ", 0);
temp = temp.right(temp.length() - ((uint) x + 1) );
mailSize = temp.toInt();
emit currentMailSize(mailSize);
status = Retr;
} else {
//qWarning(response);
errorHandling(ErrUnknownResponse);
}
}
}
//Read message number x, count upwards to messageCount
case Retr: {
if (status != Quit) {
if ((selected)||(mailSize <= headerLimit))
- {
+ {
*stream << "RETR " << messageCount << "\r\n";
} else { //only header
- *stream << "TOP " << messageCount << " 0\r\n";
+ *stream << "TOP " << messageCount << " 0\r\n";
}
messageCount++;
status = Ignore;
break;
} }
case Ignore: {
if (status != Quit) { //because of idiotic switch
if (response[0] == '+') {
message = "";
status = Read;
if (!socket->canReadLine()) //sync. problems
break;
response = socket->readLine();
} else errorHandling(ErrUnknownResponse);
}
}
//add all incoming lines to body. When size is reached, send
//message, and go back to read new message
case Read: {
if (status != Quit) { //because of idiotic switch
message += response;
while ( socket->canReadLine() ) {
response = socket->readLine();
message += response;
}
emit downloadedSize(message.length());
int x = message.find("\r\n.\r\n",-5);
if (x == -1) {
break;
} else { //message reach entire size
- if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active
- {
- emit newMessage(message, messageCount-1, mailSize, TRUE);
+ if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active
+ {
+ emit newMessage(message, messageCount-1, mailSize, TRUE);
} else { //incomplete mail downloaded
- emit newMessage(message, messageCount-1, mailSize, FALSE);
+ emit newMessage(message, messageCount-1, mailSize, FALSE);
}
-
+
if ((messageCount > newMessages)||(selected)) //last message ?
- {
+ {
status = Quit;
if (selected) { //grab next from queue
newMessages--;
status = Quit;
}
- }
+ }
else
- {
+ {
*stream << "LIST " << messageCount << "\r\n";
status = Size;
temp2.setNum(newMessages - lastSync);
temp.setNum(messageCount - lastSync);
emit updateStatus(tr("Retrieving ") + temp + "/" + temp2);
break;
}
}
}
if (status != Quit)
break;
}
case Quit: {
*stream << "Quit\r\n";
status = Done;
int newM = newMessages - lastSync;
if (newM > 0) {
temp.setNum(newM);
emit updateStatus(temp + tr(" new messages"));
} else {
emit updateStatus(tr("No new messages"));
}
socket->close();
receiving = FALSE;
emit mailTransfered(newM);
break;
}
}
}
diff --git a/noncore/net/mailit/popclient.h b/noncore/net/mailit/popclient.h
index 10b71ab..c58bc48 100644
--- a/noncore/net/mailit/popclient.h
+++ b/noncore/net/mailit/popclient.h
@@ -1,76 +1,76 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef PopClient_H
#define PopClient_H
#include <stdio.h>
#include <qsocket.h>
#include <qstring.h>
#include <qobject.h>
#include <qtextstream.h>
#include <qlist.h>
#include "maillist.h"
class PopClient: public QObject
{
Q_OBJECT
public:
PopClient();
~PopClient();
- void newConnection(QString target, int port);
- void setAccount(QString popUser, QString popPasswd);
+ void newConnection(const QString &target, int port);
+ void setAccount(const QString &popUser, const QString &popPasswd);
void setSynchronize(int lastCount);
void removeSynchronize();
void headersOnly(bool headers, int limit);
void setSelectedMails(MailList *list);
signals:
void newMessage(const QString &, int, uint, bool);
void errorOccurred(int status);
void updateStatus(const QString &);
void mailTransfered(int);
void mailboxSize(int);
void currentMailSize(int);
void downloadedSize(int);
public slots:
void errorHandling(int);
protected slots:
void connectionEstablished();
void incomingData();
private:
QSocket *socket;
QTextStream *stream;
enum transferStatus
{
Init, Pass, Stat, Mcnt, Read, List, Size, Retr, Acks,
Quit, Done, Ignore
};
int status, lastSync;
int messageCount, newMessages, mailSize, headerLimit;
bool receiving, synchronize, preview, selected;
QString popUserName, popPassword, message;
MailList *mailList;
};
#endif
diff --git a/noncore/net/mailit/smtpclient.cpp b/noncore/net/mailit/smtpclient.cpp
index 8a51a5b..2916f45 100644
--- a/noncore/net/mailit/smtpclient.cpp
+++ b/noncore/net/mailit/smtpclient.cpp
@@ -1,104 +1,104 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "smtpclient.h"
#include "emailhandler.h"
SmtpClient::SmtpClient()
{
socket = new QSocket(this, "smtpClient");
stream = new QTextStream(socket);
mailList.setAutoDelete(TRUE);
connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int)));
connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished()));
connect(socket, SIGNAL(readyRead()), this, SLOT(incomingData()));
sending = FALSE;
}
SmtpClient::~SmtpClient()
{
delete socket;
delete stream;
}
-void SmtpClient::newConnection(QString target, int port)
+void SmtpClient::newConnection(const QString &target, int port)
{
if (sending) {
qWarning("socket in use, connection refused");
return;
}
status = Init;
sending = TRUE;
socket->connectToHost(target, port);
emit updateStatus(tr("DNS lookup"));
}
-void SmtpClient::addMail(QString from, QString subject, QStringList to, QString body)
+void SmtpClient::addMail(const QString &from, const QString &subject, const QStringList &to, const QString &body)
{
RawEmail *mail = new RawEmail;
mail->from = from;
mail->subject = subject;
mail->to = to;
mail->body = body;
mailList.append(mail);
}
void SmtpClient::connectionEstablished()
{
emit updateStatus(tr("Connection established"));
}
void SmtpClient::errorHandling(int status)
{
emit errorOccurred(status);
socket->close();
mailList.clear();
sending = FALSE;
}
void SmtpClient::incomingData()
{
QString response;
if (!socket->canReadLine())
return;
response = socket->readLine();
switch(status) {
case Init: {
if (response[0] == '2') {
status = From;
mailPtr = mailList.first();
*stream << "HELO there\r\n";
} else errorHandling(ErrUnknownResponse);
break;
}
case From: {
if (response[0] == '2') {
*stream << "MAIL FROM: " << mailPtr->from << "\r\n";
status = Recv;
} else errorHandling(ErrUnknownResponse);
diff --git a/noncore/net/mailit/smtpclient.h b/noncore/net/mailit/smtpclient.h
index ca65af4..45c0703 100644
--- a/noncore/net/mailit/smtpclient.h
+++ b/noncore/net/mailit/smtpclient.h
@@ -1,75 +1,75 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef SmtpClient_H
#define SmtpClient_H
//#include <stdio.h>
#include <qsocket.h>
#include <qstring.h>
#include <qobject.h>
#include <qtextstream.h>
#include <qstringlist.h>
#include <qlist.h>
struct RawEmail
{
- QString from;
- QString subject;
- QStringList to;
- QString body;
+ QString from;
+ QString subject;
+ QStringList to;
+ QString body;
};
class SmtpClient: public QObject
{
- Q_OBJECT
-
+ Q_OBJECT
+
public:
- SmtpClient();
- ~SmtpClient();
- void newConnection(QString target, int port);
- void addMail(QString from, QString subject, QStringList to, QString body);
+ SmtpClient();
+ ~SmtpClient();
+ void newConnection(const QString &target, int port);
+ void addMail(const QString &from, const QString &subject, const QStringList &to, const QString &body);
signals:
- void errorOccurred(int);
- void updateStatus(const QString &);
- void mailSent();
-
+ void errorOccurred(int);
+ void updateStatus(const QString &);
+ void mailSent();
+
public slots:
- void errorHandling(int);
+ void errorHandling(int);
protected slots:
- void connectionEstablished();
- void incomingData();
-
+ void connectionEstablished();
+ void incomingData();
+
private:
- QSocket *socket;
- QTextStream *stream;
- enum transferStatus
- {
- Init, From, Recv, MRcv, Data, Body, Quit, Done
- };
- int status;
- QList<RawEmail> mailList;
- RawEmail *mailPtr;
- bool sending;
- QStringList::Iterator it;
+ QSocket *socket;
+ QTextStream *stream;
+ enum transferStatus
+ {
+ Init, From, Recv, MRcv, Data, Body, Quit, Done
+ };
+ int status;
+ QList<RawEmail> mailList;
+ RawEmail *mailPtr;
+ bool sending;
+ QStringList::Iterator it;
};
#endif
diff --git a/noncore/net/mailit/textparser.cpp b/noncore/net/mailit/textparser.cpp
index 3fa5f6e..e5c9f7c 100644
--- a/noncore/net/mailit/textparser.cpp
+++ b/noncore/net/mailit/textparser.cpp
@@ -1,304 +1,304 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "textparser.h"
-TextParser::TextParser(QString in, QString lineBreak)
+TextParser::TextParser(const QString &in, const QString &lineBreak)
{
- data = in;
- lineSep = lineBreak;
-
- init();
- createSeparators();
- split();
+ data = in;
+ lineSep = lineBreak;
+
+ init();
+ createSeparators();
+ split();
}
-TextParser::TextParser(QString in, QString lineBreak, QString sep)
+TextParser::TextParser(const QString &in, const QString &lineBreak, const QString &sep)
{
- data = in;
- lineSep = lineBreak;
-
- init();
- separators = sep;
- split();
+ data = in;
+ lineSep = lineBreak;
+
+ init();
+ separators = sep;
+ split();
}
void TextParser::init()
{
- lineCount = 0;
- linePos = 0;
- totalElmCount = 0;
- separatorPos = -1; //not initialized
- wordPos = -1; //not initialized
- sepAtLine = 0;
- sepAtPosElm = -1; //such that nextSep equals 0
- wordAtLine = 0;
- wordAtPosElm = -1; //such that nextWord equals 0
- atLine = 0;
- atPosElm = 0;
+ lineCount = 0;
+ linePos = 0;
+ totalElmCount = 0;
+ separatorPos = -1; //not initialized
+ wordPos = -1; //not initialized
+ sepAtLine = 0;
+ sepAtPosElm = -1; //such that nextSep equals 0
+ wordAtLine = 0;
+ wordAtPosElm = -1; //such that nextWord equals 0
+ atLine = 0;
+ atPosElm = 0;
}
void TextParser::createSeparators()
{
- separators = " @#,.:;<>*/(){}|'?-+=_";
+ separators = " @#,.:;<>*/(){}|'?-+=_";
}
-/* Returns pos of given search criteria, -1 if not found */
-int TextParser::find(QString target, QChar sep, int pos, bool upperCase)
+/* Returns pos of given search criteria, -1 if not found */
+int TextParser::find(const QString &target, QChar sep, int pos, bool upperCase)
{
-
- t_splitElm parsstr;
- QString pString;
-
- int atLine = 0, atPosElm = 0;
-
- getLineReference(pos,&atLine,&atPosElm);
-
- for (int x = pos; x < totalElmCount; x++)
- {
- parsstr=splitDone[atLine].elm[atPosElm++];
-
- if (upperCase)
- {
- pString=parsstr.str.upper();
- target=target.upper();
- }
- else
- {
- pString=parsstr.str;
- }
- if ((pString == target) && (parsstr.separator == sep))
- {
- return x;
- }
- if (atPosElm >= splitDone[atLine].elmCount)
- { //new Line
- atLine++;
- atPosElm = 0;
- }
- }
- return -1;
+
+ t_splitElm parsstr;
+ QString pString, pTarget;
+ pTarget = target;
+ int atLine = 0, atPosElm = 0;
+
+ getLineReference(pos,&atLine,&atPosElm);
+
+ for (int x = pos; x < totalElmCount; x++)
+ {
+ parsstr=splitDone[atLine].elm[atPosElm++];
+
+ if (upperCase)
+ {
+ pString=parsstr.str.upper();
+ pTarget=pTarget.upper();
+ }
+ else
+ {
+ pString=parsstr.str;
+ }
+ if ((pString == pTarget) && (parsstr.separator == sep))
+ {
+ return x;
+ }
+ if (atPosElm >= splitDone[atLine].elmCount)
+ { //new Line
+ atLine++;
+ atPosElm = 0;
+ }
+ }
+ return -1;
}
int TextParser::elmCount()
{
- return totalElmCount;
+ return totalElmCount;
}
QChar TextParser::separatorAt(int pos)
{
- if (getLineReference(pos, &sepAtLine, &sepAtPosElm) == -1)
- return QChar::null;
-
- separatorPos = pos;
- return splitDone[sepAtLine].elm[sepAtPosElm].separator;
+ if (getLineReference(pos, &sepAtLine, &sepAtPosElm) == -1)
+ return QChar::null;
+
+ separatorPos = pos;
+ return splitDone[sepAtLine].elm[sepAtPosElm].separator;
}
QChar TextParser::nextSeparator()
{
- sepAtPosElm++;
- if (splitDone[sepAtLine].elmCount <= sepAtPosElm) {
- sepAtLine++;
- sepAtPosElm = 0;
- }
-
- separatorPos++;
- return splitDone[sepAtLine].elm[sepAtPosElm].separator;
+ sepAtPosElm++;
+ if (splitDone[sepAtLine].elmCount <= sepAtPosElm) {
+ sepAtLine++;
+ sepAtPosElm = 0;
+ }
+
+ separatorPos++;
+ return splitDone[sepAtLine].elm[sepAtPosElm].separator;
}
bool TextParser::hasNextSeparator()
{
- return ((separatorPos+1) < totalElmCount);
+ return ((separatorPos+1) < totalElmCount);
}
QString TextParser::wordAt(int pos)
{
- if (getLineReference(pos, &wordAtLine, &wordAtPosElm) == -1)
- return NULL;
-
- wordPos = pos;
- return splitDone[wordAtLine].elm[wordAtPosElm].str;
+ if (getLineReference(pos, &wordAtLine, &wordAtPosElm) == -1)
+ return NULL;
+
+ wordPos = pos;
+ return splitDone[wordAtLine].elm[wordAtPosElm].str;
}
QString TextParser::nextWord()
{
- wordAtPosElm++;
- if (splitDone[wordAtLine].elmCount <= wordAtPosElm) {
- wordAtLine++;
- wordAtPosElm = 0;
- }
-
- wordPos++;
- return splitDone[wordAtLine].elm[wordAtPosElm].str;
+ wordAtPosElm++;
+ if (splitDone[wordAtLine].elmCount <= wordAtPosElm) {
+ wordAtLine++;
+ wordAtPosElm = 0;
+ }
+
+ wordPos++;
+ return splitDone[wordAtLine].elm[wordAtPosElm].str;
}
bool TextParser::hasNextWord()
{
- return ((wordPos + 1) < totalElmCount);
+ return ((wordPos + 1) < totalElmCount);
}
QString TextParser::getString(int *pos, QChar stop, bool lineEnd = false)
{
- QString returnStr = wordAt(*pos);
- QChar chr = separatorAt(*pos);
- QString s;
-
- if (returnStr == "")
- return "";
- if (chr == stop)
- return returnStr;
-
- if (!lineEnd) {
- while ((chr != stop) && hasNextWord()) {
- returnStr.append(chr);
- returnStr += nextWord();
- chr = nextSeparator();
- }
- } else { //copy from pos to end of line
- getLineReference(*pos, &atLine, &atPosElm);
- returnStr = "";
- while (atPosElm < splitDone[atLine].elmCount) {
- if (splitDone[atLine].elm[atPosElm].str != "") {
- returnStr += splitDone[atLine].elm[atPosElm].str;
- }
- chr = splitDone[atLine].elm[atPosElm].separator;
- if (!chr.isNull() && (int) chr != 0) {
- returnStr.append(splitDone[atLine].elm[atPosElm].separator);
- }
- atPosElm++;
- }
- }
-
- *pos = wordPos;
- return returnStr;
+ QString returnStr = wordAt(*pos);
+ QChar chr = separatorAt(*pos);
+ QString s;
+
+ if (returnStr == "")
+ return "";
+ if (chr == stop)
+ return returnStr;
+
+ if (!lineEnd) {
+ while ((chr != stop) && hasNextWord()) {
+ returnStr.append(chr);
+ returnStr += nextWord();
+ chr = nextSeparator();
+ }
+ } else { //copy from pos to end of line
+ getLineReference(*pos, &atLine, &atPosElm);
+ returnStr = "";
+ while (atPosElm < splitDone[atLine].elmCount) {
+ if (splitDone[atLine].elm[atPosElm].str != "") {
+ returnStr += splitDone[atLine].elm[atPosElm].str;
+ }
+ chr = splitDone[atLine].elm[atPosElm].separator;
+ if (!chr.isNull() && (int) chr != 0) {
+ returnStr.append(splitDone[atLine].elm[atPosElm].separator);
+ }
+ atPosElm++;
+ }
+ }
+
+ *pos = wordPos;
+ return returnStr;
}
QString TextParser::getNextLine()
{
- atLine++;
- atPosElm = 0;
- if (atLine < lineCount)
- return splitDone[atLine].str;
- return "";
+ atLine++;
+ atPosElm = 0;
+ if (atLine < lineCount)
+ return splitDone[atLine].str;
+ return "";
}
bool TextParser::hasNextLine()
{
- if (atLine+1 < lineCount)
- return TRUE;;
- return FALSE;
+ if (atLine+1 < lineCount)
+ return TRUE;;
+ return FALSE;
}
int TextParser::endLinePos(int pos)
{
- if ( (getLineReference(pos, &atLine, &atPosElm)) == -1)
- return -1;
-
- return (pos + (splitDone[atLine].elmCount - atPosElm) + 1);
+ if ( (getLineReference(pos, &atLine, &atPosElm)) == -1)
+ return -1;
+
+ return (pos + (splitDone[atLine].elmCount - atPosElm) + 1);
}
int TextParser::getLineReference(int pos, int *line, int *inLinePos)
{
- int currentPos = 0;
-
- for (int x = 0; x < lineCount; x++) {
- if ( currentPos + splitDone[x].elmCount > pos) {
- *line = x;
- *inLinePos = pos - currentPos;
- return 0; //pos found okay
- }
- currentPos += splitDone[x].elmCount;
- }
- return -1; //no reference found
+ int currentPos = 0;
+
+ for (int x = 0; x < lineCount; x++) {
+ if ( currentPos + splitDone[x].elmCount > pos) {
+ *line = x;
+ *inLinePos = pos - currentPos;
+ return 0; //pos found okay
+ }
+ currentPos += splitDone[x].elmCount;
+ }
+ return -1; //no reference found
}
void TextParser::split()
{
- t_splitLine newLine;
+ t_splitLine newLine;
- while ((uint) linePos < data.length()) {
- newLine = nextLine();
- splitDone[lineCount] = splitLine(newLine);
- totalElmCount += splitDone[lineCount].elmCount;
- lineCount++;
- }
+ while ((uint) linePos < data.length()) {
+ newLine = nextLine();
+ splitDone[lineCount] = splitLine(newLine);
+ totalElmCount += splitDone[lineCount].elmCount;
+ lineCount++;
+ }
}
t_splitLine TextParser::splitLine(t_splitLine line)
{
- uint pos = 0;
- uint elmCount = 0;
- t_splitLine tempLine = line;
-
- tempLine.str = line.str.simplifyWhiteSpace();
- tempLine.elm[0].str = "";
- while ( pos < line.str.length() ) {
- if ( isSeparator(tempLine.str[pos]) ) {
- tempLine.elm[elmCount].separator = tempLine.str[pos];
- elmCount++;
- pos++;
- while (tempLine.str[pos] == ' ')
- pos++;
- if (pos > line.str.length())
- elmCount--;
- tempLine.elm[elmCount].str = "";
- } else {
- if (!tempLine.str[pos].isNull())
- tempLine.elm[elmCount].str += tempLine.str[pos];
- pos++;
- }
- }
-
- tempLine.elmCount = elmCount + 1;
- return tempLine;
+ uint pos = 0;
+ uint elmCount = 0;
+ t_splitLine tempLine = line;
+
+ tempLine.str = line.str.simplifyWhiteSpace();
+ tempLine.elm[0].str = "";
+ while ( pos < line.str.length() ) {
+ if ( isSeparator(tempLine.str[pos]) ) {
+ tempLine.elm[elmCount].separator = tempLine.str[pos];
+ elmCount++;
+ pos++;
+ while (tempLine.str[pos] == ' ')
+ pos++;
+ if (pos > line.str.length())
+ elmCount--;
+ tempLine.elm[elmCount].str = "";
+ } else {
+ if (!tempLine.str[pos].isNull())
+ tempLine.elm[elmCount].str += tempLine.str[pos];
+ pos++;
+ }
+ }
+
+ tempLine.elmCount = elmCount + 1;
+ return tempLine;
}
bool TextParser::isSeparator(QChar chr)
{
- for (uint x = 0; x < separators.length(); x++) {
- if (chr == separators[x])
- return true;
- }
- return false;
+ for (uint x = 0; x < separators.length(); x++) {
+ if (chr == separators[x])
+ return true;
+ }
+ return false;
}
t_splitLine TextParser::nextLine()
{
- int newLinePos;
- t_splitLine lineType;
-
- newLinePos = data.find(lineSep, linePos);
-
- lineType.lineType = NewLine;
- lineType.str = "";
-
- if (newLinePos == -1) {
- newLinePos = data.length();
- lineType.lineType = LastLine;
- }
-
- for (int x = linePos; x < newLinePos; x++)
- lineType.str += data[x];
-
- linePos = newLinePos;
- if ((uint) linePos < data.length()) //if not EOF, add length of lineSep
- linePos += lineSep.length();
-
- return lineType;
+ int newLinePos;
+ t_splitLine lineType;
+
+ newLinePos = data.find(lineSep, linePos);
+
+ lineType.lineType = NewLine;
+ lineType.str = "";
+
+ if (newLinePos == -1) {
+ newLinePos = data.length();
+ lineType.lineType = LastLine;
+ }
+
+ for (int x = linePos; x < newLinePos; x++)
+ lineType.str += data[x];
+
+ linePos = newLinePos;
+ if ((uint) linePos < data.length()) //if not EOF, add length of lineSep
+ linePos += lineSep.length();
+
+ return lineType;
}
diff --git a/noncore/net/mailit/textparser.h b/noncore/net/mailit/textparser.h
index c5e88a0..03bb6d5 100644
--- a/noncore/net/mailit/textparser.h
+++ b/noncore/net/mailit/textparser.h
@@ -4,82 +4,82 @@
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qobject.h>
#include <qstring.h>
#ifndef TEXTPARSER_H
#define TEXTPARSER_H
enum t_strType { Word, Number};
enum t_lineType {NewLine, LastLine};
const uint MAX_ELEMENTS = 200; //Should be dynamic
const uint MAX_LINES = 500; //Should be dynamic
struct t_splitElm
{
QChar separator;
int strType;
QString str;
};
struct t_splitLine
{
t_lineType lineType;
QString str; //a bit redundant...
t_splitElm elm[MAX_ELEMENTS];
int elmCount;
};
class TextParser: public QObject
{
Q_OBJECT
public:
- TextParser(QString in, QString lineBreak);
- TextParser(QString in, QString lineBreak, QString sep);
- int find(QString target, QChar sep, int pos, bool upperCase);
+ TextParser(const QString &in, const QString &lineBreak);
+ TextParser(const QString &in, const QString &lineBreak, const QString &sep);
+ int find(const QString &target, QChar sep, int pos, bool upperCase);
int elmCount();
QChar separatorAt(int pos);
QChar nextSeparator();
bool hasNextSeparator();
QString wordAt(int pos);
QString nextWord();
bool hasNextWord();
QString getString(int *pos, QChar stop, bool lineEnd);
QString getNextLine();
bool hasNextLine();
int endLinePos(int pos);
private:
void init();
void createSeparators();
t_splitLine nextLine();
void split();
t_splitLine splitLine(t_splitLine line);
bool isSeparator(QChar chr);
t_splitLine splitDone[MAX_LINES];
int getLineReference(int pos, int *line, int *inLinePos);
int lineCount, linePos, totalElmCount;
int separatorPos, wordPos;
QString data, separators, lineSep;
int sepAtLine, sepAtPosElm;
int wordAtLine, wordAtPosElm;
int atLine, atPosElm;
};
#endif
diff --git a/noncore/unsupported/mailit/addresslist.cpp b/noncore/unsupported/mailit/addresslist.cpp
index 7d60ebf..18d14bc 100644
--- a/noncore/unsupported/mailit/addresslist.cpp
+++ b/noncore/unsupported/mailit/addresslist.cpp
@@ -1,161 +1,161 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qfile.h>
#include <qtextstream.h>
#include <opie/ocontactaccess.h>
#include <opie/ocontact.h>
#include "addresslist.h"
AddressList::AddressList()
{
- addresses.setAutoDelete(TRUE);
- read();
- dirty = FALSE;
+ addresses.setAutoDelete(TRUE);
+ read();
+ dirty = FALSE;
}
AddressList::~AddressList()
{
- addresses.clear();
+ addresses.clear();
}
-void AddressList::addContact(QString email, QString name)
+void AddressList::addContact(const QString &email, const QString &name)
{
- //skip if not a valid email address,
- if (email.find( '@') == -1)
- return;
-
- if ( ! containsEmail(email) ) {
- Contact *in = new Contact;
- in->email = email;
- in->name = name;
- addresses.append(in);
- dirty = TRUE;
- }
+ //skip if not a valid email address,
+ if (email.find( '@') == -1)
+ return;
+
+ if ( ! containsEmail(email) ) {
+ Contact *in = new Contact;
+ in->email = email;
+ in->name = name;
+ addresses.append(in);
+ dirty = TRUE;
+ }
}
-bool AddressList::containsEmail(QString email)
+bool AddressList::containsEmail(const QString &email)
{
- return ( getEmailRef(email) != -1 );
+ return ( getEmailRef(email) != -1 );
}
-bool AddressList::containsName(QString name)
+bool AddressList::containsName(const QString &name)
{
- return ( getNameRef(name) != -1 );
+ return ( getNameRef(name) != -1 );
}
-QString AddressList::getNameByEmail(QString email)
+QString AddressList::getNameByEmail(const QString &email)
{
- int pos = getEmailRef(email);
- if (pos != -1) {
- Contact *ptr = addresses.at(pos);
- return ptr->name;
- }
-
- return NULL;
+ int pos = getEmailRef(email);
+ if (pos != -1) {
+ Contact *ptr = addresses.at(pos);
+ return ptr->name;
+ }
+
+ return NULL;
}
-QString AddressList::getEmailByName(QString name)
+QString AddressList::getEmailByName(const QString &name)
{
- int pos = getNameRef(name);
- if (pos != -1) {
- Contact *ptr = addresses.at(pos);
- return ptr->email;
- }
-
- return NULL;
+ int pos = getNameRef(name);
+ if (pos != -1) {
+ Contact *ptr = addresses.at(pos);
+ return ptr->email;
+ }
+
+ return NULL;
}
-int AddressList::getEmailRef(QString email)
+int AddressList::getEmailRef(const QString &email)
{
- int pos = 0;
- Contact *ptr;
-
- for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
- if (ptr->email == email)
- return pos;
- pos++;
- }
- return -1;
+ int pos = 0;
+ Contact *ptr;
+
+ for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
+ if (ptr->email == email)
+ return pos;
+ pos++;
+ }
+ return -1;
}
-int AddressList::getNameRef(QString name)
+int AddressList::getNameRef(const QString &name)
{
- int pos = 0;
- Contact *ptr;
-
- for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
- if (ptr->name == name)
- return pos;
- pos++;
- }
- return -1;
+ int pos = 0;
+ Contact *ptr;
+
+ for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) {
+ if (ptr->name == name)
+ return pos;
+ pos++;
+ }
+ return -1;
}
QList<Contact>* AddressList::getContactList()
{
- return &addresses;
+ return &addresses;
}
void AddressList::read()
{
- OContactAccess::List::Iterator it;
-
- QString lineEmail, lineName, email, name;
- OContactAccess m_contactdb("mailit");
- OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 );
- //OContact* oc;(*it).defaultEmail()
-
- for ( it = m_list.begin(); it != m_list.end(); ++it )
- {
- //oc=(OContact*) it;
- if ((*it).defaultEmail().length()!=0)
- addContact((*it).defaultEmail(),(*it).fileAs());
- }
-
- /*if (! f.open(IO_ReadOnly) )
- return;
-
- QTextStream stream(&f);
-
- while (! stream.atEnd() ) {
- lineEmail = stream.readLine();
- if (! stream.atEnd() )
- lineName = stream.readLine();
- else return;
-
- email = getRightString(lineEmail);
- name = getRightString(lineName);
- addContact(email, name);
- }
- f.close();*/
+ OContactAccess::List::Iterator it;
+
+ QString lineEmail, lineName, email, name;
+ OContactAccess m_contactdb("mailit");
+ OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 );
+ //OContact* oc;(*it).defaultEmail()
+
+ for ( it = m_list.begin(); it != m_list.end(); ++it )
+ {
+ //oc=(OContact*) it;
+ if ((*it).defaultEmail().length()!=0)
+ addContact((*it).defaultEmail(),(*it).fileAs());
+ }
+
+ /*if (! f.open(IO_ReadOnly) )
+ return;
+
+ QTextStream stream(&f);
+
+ while (! stream.atEnd() ) {
+ lineEmail = stream.readLine();
+ if (! stream.atEnd() )
+ lineName = stream.readLine();
+ else return;
+
+ email = getRightString(lineEmail);
+ name = getRightString(lineName);
+ addContact(email, name);
+ }
+ f.close();*/
}
-QString AddressList::getRightString(QString in)
+QString AddressList::getRightString(const QString &in)
{
- QString out = "";
-
- int pos = in.find('=');
- if (pos != -1) {
- out = in.mid(pos+1).stripWhiteSpace();
- }
- return out;
+ QString out = "";
+
+ int pos = in.find('=');
+ if (pos != -1) {
+ out = in.mid(pos+1).stripWhiteSpace();
+ }
+ return out;
}
diff --git a/noncore/unsupported/mailit/addresslist.h b/noncore/unsupported/mailit/addresslist.h
index 99cef9a..b46d467 100644
--- a/noncore/unsupported/mailit/addresslist.h
+++ b/noncore/unsupported/mailit/addresslist.h
@@ -1,58 +1,58 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef ADDRESSLIST_H
#define ADDRESSLIST_H
#include <qobject.h>
#include <qlist.h>
struct Contact
{
- QString email;
- QString name;
+ QString email;
+ QString name;
};
class AddressList : public QObject
{
- Q_OBJECT
+ Q_OBJECT
public:
- AddressList();
- ~AddressList();
- void addContact(QString email, QString name);
- bool containsEmail(QString email);
- bool containsName(QString name);
- QString getNameByEmail(QString email);
- QString getEmailByName(QString name);
- QList<Contact>* getContactList();
+ AddressList();
+ ~AddressList();
+ void addContact(const QString &email, const QString &name);
+ bool containsEmail(const QString &email);
+ bool containsName(const QString &name);
+ QString getNameByEmail(const QString &email);
+ QString getEmailByName(const QString &name);
+ QList<Contact>* getContactList();
private:
- int getEmailRef(QString email);
- int getNameRef(QString name);
- QString getRightString(QString in);
- void read();
+ int getEmailRef(const QString &email);
+ int getNameRef(const QString &name);
+ QString getRightString(const QString &in);
+ void read();
private:
- QList<Contact> addresses;
- QString filename;
- bool dirty;
+ QList<Contact> addresses;
+ QString filename;
+ bool dirty;
};
#endif
diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp
index b039cc4..2102ba7 100644
--- a/noncore/unsupported/mailit/emailclient.cpp
+++ b/noncore/unsupported/mailit/emailclient.cpp
@@ -320,203 +320,204 @@ void EmailClient::mailSent()
void EmailClient::getNewMail() {
if (accountList.count() == 0) {
QMessageBox::warning(qApp->activeWindow(),"No account selected",
"You must create an account", "OK\n");
return;
}
setMailAccount();
receiving = TRUE;
previewingMail = TRUE;
getMailButton->setEnabled(FALSE);
cancelButton->setEnabled(TRUE);
selectAccountMenu->setEnabled(FALSE);
status1Label->setText(currentAccount->accountName + " headers");
progressBar->reset();
//get any previous mails not downloaded and add to queue
/*mailDownloadList.clear();
Email *mailPtr;
item = (EmailListItem *) inboxView->firstChild();
while (item != NULL) {
mailPtr = item->getMail();
if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) {
mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
}
item = (EmailListItem *) item->nextSibling();
}*/
emailHandler->getMailHeaders();
}
void EmailClient::getAllNewMail()
{
allAccounts = TRUE;
currentAccount = accountList.first();
getNewMail();
}
void EmailClient::mailArrived(const Email &mail, bool fromDisk)
{
Enclosure *ePtr;
Email newMail;
int thisMailId;
- emailHandler->parse(mail.rawMail, lineShift, &newMail);
+ emailHandler->parse( mail.rawMail, lineShift, &newMail);
mailconf->setGroup(newMail.id);
if (fromDisk)
{
newMail.downloaded = mailconf->readBoolEntry("downloaded");
newMail.size = mailconf->readNumEntry("size");
newMail.serverId = mailconf->readNumEntry("serverid");
newMail.fromAccountId = mailconf->readNumEntry("fromaccountid");
}
else
{ //mail arrived from server
newMail.serverId = mail.serverId;
newMail.size = mail.size;
newMail.downloaded = mail.downloaded;
newMail.fromAccountId = emailHandler->getAccount()->id;
mailconf->writeEntry("fromaccountid", newMail.fromAccountId);
}
//add if read or not
newMail.read = mailconf->readBoolEntry("mailread");
//check if new mail
if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) {
thisMailId = mailIdCount;
mailIdCount++;
//set server count, so that if the user aborts, the new
//header is not reloaded
if ((currentAccount)&&(currentAccount->synchronize))
currentAccount->lastServerMailCount++;
mailconf->writeEntry("internalmailid", thisMailId);
mailconf->writeEntry("downloaded", newMail.downloaded);
mailconf->writeEntry("size", (int) newMail.size);
mailconf->writeEntry("serverid", newMail.serverId);
//addressList->addContact(newMail.fromMail, newMail.from);
}
mailconf->writeEntry("downloaded", newMail.downloaded);
QString stringMailId;
stringMailId.setNum(thisMailId);
//see if any attatchments needs to be stored
for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) {
QString stringId;
stringId.setNum(ePtr->id);
int id = mailconf->readNumEntry("enclosureid_" + stringId);
if (id != ePtr->id) { //new entry
mailconf->writeEntry("enclosureid_" + stringId, ePtr->id);
mailconf->writeEntry("name_" + stringId, ePtr->originalName);
mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType);
mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute);
mailconf->writeEntry("saved_" + stringId, ePtr->saved);
mailconf->writeEntry("installed_" + stringId, FALSE);
ePtr->name = stringMailId + "_" + stringId;
ePtr->path = getPath(TRUE);
if (emailHandler->getEnclosure(ePtr)) { //file saved
ePtr->saved = TRUE;
mailconf->writeEntry("saved_" + stringId, ePtr->saved);
mailconf->writeEntry("filename_" + stringId, ePtr->name);
mailconf->writeEntry("path_" + stringId, ePtr->path);
} else {
ePtr->saved = FALSE;
mailconf->writeEntry("saved_" + stringId, ePtr->saved);
}
} else {
ePtr->saved = mailconf->readBoolEntry("saved_" + stringId);
ePtr->installed = mailconf->readBoolEntry("installed_" + stringId);
if (ePtr->saved) {
ePtr->name = mailconf->readEntry("filename_" + stringId);
ePtr->path = mailconf->readEntry("path_" + stringId);
}
}
}
bool found=false;
if (!fromDisk)
{
Email *mailPtr;
item = (EmailListItem *) inboxView->firstChild();
while ((item != NULL)&&(!found))
{
mailPtr = item->getMail();
if (mailPtr->id == newMail.id) {
item->setMail(newMail);
emit mailUpdated(item->getMail());
- found = true;
+ found = true;
}
item = (EmailListItem *) item->nextSibling();
}
}
- if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE);
-
- if (item->getMail()->files.count()>0)
- {
- item->setPixmap(0, Resource::loadPixmap("mailit/attach"));
- }
+ if ((!found)||(fromDisk)) {
+ item = new EmailListItem(inboxView, newMail, TRUE);
+ }
+ if (item->getMail()->files.count()>0)
+ {
+ item->setPixmap(0, Resource::loadPixmap("mailit/attach"));
+ }
/*if (!newMail.downloaded)
mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/
mailboxView->setCurrentTab(0);
}
void EmailClient::allMailArrived(int count)
{
// not previewing means all mailtransfer has been done
/*if (!previewingMail) {*/
if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) {
emit newCaption("Mailit - " + currentAccount->accountName);
getNewMail();
return;
} else {
allAccounts = FALSE;
receiving = FALSE;
getMailButton->setEnabled(TRUE);
cancelButton->setEnabled(FALSE);
selectAccountMenu->setEnabled(TRUE);
status1Label->setText("Idle");
progressBar->reset();
return;
}
//}
// all headers downloaded from server, start downloading remaining mails
previewingMail = FALSE;
status1Label->setText(currentAccount->accountName);
progressBar->reset();
mailboxView->setCurrentTab(0);
}
void EmailClient::moveMailFront(Email *mailPtr)
{
if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) {
mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size);
}
}
void EmailClient::smtpError(int code)
{
QString temp;
@@ -597,167 +598,167 @@ void EmailClient::readMail()
Email mail;
int start, stop;
QString s, del;
QFile f(getPath(FALSE) + "inbox.txt");
if ( f.open(IO_ReadOnly) ) { // file opened successfully
QTextStream t( &f ); // use a text stream
s = t.read();
f.close();
start = 0;
del = "\n.\n";
while ((uint) start < s.length()) {
stop = s.find(del, start);
if (stop == -1)
stop = s.length() - del.length();
mail.rawMail = s.mid(start, stop + del.length() - start );
start = stop + del.length();
mailArrived(mail, TRUE);
}
}
QFile fo(getPath(FALSE) + "outbox.txt");
if ( fo.open(IO_ReadOnly) ) { // file opened successfully
QTextStream t( &fo ); // use a text stream
s = t.read();
fo.close();
start = 0;
del = "\n.\n";
while ((uint) start < s.length()) {
stop = s.find(del, start);
if (stop == -1)
stop = s.length() - del.length();
mail.rawMail = s.mid(start, stop + del.length() - start );
start = stop + del.length();
emailHandler->parse(mail.rawMail, lineShift, &mail);
mail.sent = false;
mail.received = false;
enqueMail(mail);
}
}
}
-void EmailClient::saveMail(QString fileName, QListView *view)
+void EmailClient::saveMail(const QString &fileName, QListView *view)
{
QFile f(fileName);
Email *mail;
if (! f.open(IO_WriteOnly) ) {
qWarning("could not open file");
return;
}
item = (EmailListItem *) view->firstChild();
QTextStream t(&f);
while (item != NULL) {
mail = item->getMail();
t << mail->rawMail;
mailconf->setGroup(mail->id);
mailconf->writeEntry("mailread", mail->read);
item = (EmailListItem *) item->nextSibling();
}
f.close();
}
//paths for mailit, is settings, inbox, enclosures
QString EmailClient::getPath(bool enclosurePath)
{
QString basePath = "qtmail";
QString enclosures = "enclosures";
QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath);
if ( !dir.exists() )
dir.mkdir( dir.path() );
if (enclosurePath) {
dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures);
if ( !dir.exists() )
dir.mkdir( dir.path() );
return (dir.path() + "/");
}
return (dir.path() + "/");
}
void EmailClient::readSettings()
{
int y,acc_count;
mailconf->setGroup("mailitglobal");
acc_count=mailconf->readNumEntry("Accounts",0);
for (int accountPos = 0;accountPos<acc_count ; accountPos++)
{
mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ...
account.accountName = mailconf->readEntry("AccName","");
account.name = mailconf->readEntry("UserName","");
account.emailAddress = mailconf->readEntry("Email","");
account.popUserName = mailconf->readEntry("POPUser","");
account.popPasswd = mailconf->readEntryCrypt("POPPassword","");
account.popServer = mailconf->readEntry("POPServer","");
account.smtpServer = mailconf->readEntry("SMTPServer","");
account.id = mailconf->readNumEntry("AccountId",0);
account.syncLimit = mailconf->readNumEntry("HeaderLimit",0);
account.lastServerMailCount = 0;
account.synchronize = FALSE;
account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes");
if (account.synchronize)
{
- mailconf->readNumEntry("LASTSERVERMAILCOUNT",0);
+ mailconf->readNumEntry("LASTSERVERMAILCOUNT",0);
}
accountList.append(&account);
}
mailconf->setGroup("mailitglobal");
if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1)
{
mailIdCount = y;
}
if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1)
{
accountIdCount = y;
}
}
void EmailClient::saveSettings()
{
int acc_count=0;
MailAccount *accountPtr;
if (!mailconf)
{
qWarning("could not save settings");
return;
}
for (accountPtr = accountList.first(); accountPtr != 0;
accountPtr = accountList.next())
{
mailconf->setGroup("Account_"+QString::number(++acc_count));
mailconf->writeEntry("AccName",accountPtr->accountName );
mailconf->writeEntry("UserName",accountPtr->name);
mailconf->writeEntry("Email",accountPtr->emailAddress);
mailconf->writeEntry("POPUser",accountPtr->popUserName);
mailconf->writeEntryCrypt("POPPassword",accountPtr->popPasswd);
mailconf->writeEntry("POPServer",accountPtr->popServer);
mailconf->writeEntry("SMTPServer",accountPtr->smtpServer);
mailconf->writeEntry("AccountId",accountPtr->id);
if (accountPtr->synchronize)
{
mailconf->writeEntry("Synchronize","Yes");
mailconf->writeEntry("HeaderLimit",accountPtr->syncLimit);
mailconf->writeEntry("LastServerMailCount",accountPtr->lastServerMailCount);
}
else
@@ -870,167 +871,167 @@ void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox)
//if mail is in queue for download, remove it from
//queue if possible
if ( (receiving) && (mPtr->fromAccountId == currentAccount->id) ) {
if ( !mPtr->downloaded )
mailDownloadList.remove(mPtr->serverId, mPtr->size);
}
mailconf->setGroup(mPtr->id);
mailconf->clearGroup();
//delete any temporary attatchemnts storing
for ( ePtr=mPtr->files.first(); ePtr != 0; ePtr=mPtr->files.next() ) {
if (ePtr->saved) {
QFile::remove( (ePtr->path + ePtr->name) );
}
}
inboxView->takeItem(mailItem);
}
else
{
outboxView->takeItem(mailItem);
}
}
void EmailClient::setMailSize(int size)
{
progressBar->reset();
progressBar->setTotalSteps(size);
}
void EmailClient::setTotalSize(int size)
{
}
void EmailClient::setDownloadedSize(int size)
{
int total = progressBar->totalSteps();
if (size < total) {
progressBar->setProgress(size);
} else {
progressBar->setProgress(total);
}
}
void EmailClient::deleteItem()
{
- bool inbox=mailboxView->currentTab()==0;
- QListView* box;
-
- EmailListItem* eli;
- int pos;
-
- inbox ? box=inboxView : box=outboxView;
-
- eli=(EmailListItem*)box->selectedItem();
-
- if (eli)
- {
- box->setSelected(eli->itemBelow(),true); //select the previous item
-
- deleteMail(eli,(bool&)inbox); //remove mail entry
- }
+ bool inbox=mailboxView->currentTab()==0;
+ QListView* box;
+
+ EmailListItem* eli;
+ int pos;
+
+ inbox ? box=inboxView : box=outboxView;
+
+ eli=(EmailListItem*)box->selectedItem();
+
+ if (eli)
+ {
+ box->setSelected(eli->itemBelow(),true); //select the previous item
+
+ deleteMail(eli,(bool&)inbox); //remove mail entry
+ }
}
void EmailClient::inboxItemPressed()
{
-// timerID=startTimer(500);
+// timerID=startTimer(500);
}
void EmailClient::inboxItemReleased()
{
- // killTimer(timerID);
+ // killTimer(timerID);
}
/*void EmailClient::timerEvent(QTimerEvent *e)
{
/*killTimer(timerID);
QPopupMenu *action = new QPopupMenu(this);
int reply=0;
action->insertItem(tr( "Reply To" ),this,SLOT(reply()));
action->insertItem( tr( "Reply All" ),this,SLOT(replyAll()));
action->insertItem( tr( "Forward" ), this,SLOT(forward()));
action->insertItem( tr( "Remove Mail" ), this,SLOT(remove()));
action->exec(QCursor::pos());
if (action) delete action;
}*/
Email* EmailClient::getCurrentMail()
{
- EmailListItem *eli=(EmailListItem* ) (inboxView->selectedItem());
- if (eli!=NULL)
- return eli->getMail();
- else
- return NULL;
+ EmailListItem *eli=(EmailListItem* ) (inboxView->selectedItem());
+ if (eli!=NULL)
+ return eli->getMail();
+ else
+ return NULL;
}
void EmailClient::download(Email* mail)
{
- MailAccount* acc=0;
-
- tempMailDownloadList.clear();
- tempMailDownloadList.sizeInsert(mail->serverId, mail->size);
-
- acc=accountList.at(mail->fromAccountId-1);
- if (acc)
- {
- emailHandler->setAccount(*acc);
- emailHandler->getMailByList(&tempMailDownloadList);
- }
- else
- QMessageBox::warning(qApp->activeWindow(),
- tr("No account associated"), tr("There is no active account \nassociated to this mail\n it can not be downloaded"), "Abort\n");
+ MailAccount* acc=0;
+
+ tempMailDownloadList.clear();
+ tempMailDownloadList.sizeInsert(mail->serverId, mail->size);
+
+ acc=accountList.at(mail->fromAccountId-1);
+ if (acc)
+ {
+ emailHandler->setAccount(*acc);
+ emailHandler->getMailByList(&tempMailDownloadList);
+ }
+ else
+ QMessageBox::warning(qApp->activeWindow(),
+ tr("No account associated"), tr("There is no active account \nassociated to this mail\n it can not be downloaded"), "Abort\n");
}
void EmailClient::receive(const QCString& msg, const QByteArray& data)
{
- /*if (msg=="getMail()")
- {
- /*QDialog qd(qApp->activeWindow(),"Getting mail",true);
- QVBoxLayout *vbProg = new QVBoxLayout( &qd );
-
- initStatusBar(&qd);
-
- if (statusBar==0)
- {
- qDebug("No Bar ...");
- //statusBar=new ProgressBar(&qd);
- }
- statusBar->show();
- vbProg->addWidget(statusBar);
- qd.showMaximized();
- qd.show();
- emit getAllNewMail();
- //qd.exec();
- }
- else if (msg=="compose()")
- {
- QDialog qd(qApp->activeWindow(),"Getting mail",true);
-
- WriteMail wm(&qd,"write new mail");
- QVBoxLayout vbProg( &qd );
-
- wm.showMaximized();
- vbProg.addWidget(&wm);
-
- qd.showMaximized();
-
- emit composeRequested();
- qd.exec();
-
- QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
- }
-
- else if (msg=="dialog()")
- {
- QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
- }*/
+ /*if (msg=="getMail()")
+ {
+ /*QDialog qd(qApp->activeWindow(),"Getting mail",true);
+ QVBoxLayout *vbProg = new QVBoxLayout( &qd );
+
+ initStatusBar(&qd);
+
+ if (statusBar==0)
+ {
+ qDebug("No Bar ...");
+ //statusBar=new ProgressBar(&qd);
+ }
+ statusBar->show();
+ vbProg->addWidget(statusBar);
+ qd.showMaximized();
+ qd.show();
+ emit getAllNewMail();
+ //qd.exec();
+ }
+ else if (msg=="compose()")
+ {
+ QDialog qd(qApp->activeWindow(),"Getting mail",true);
+
+ WriteMail wm(&qd,"write new mail");
+ QVBoxLayout vbProg( &qd );
+
+ wm.showMaximized();
+ vbProg.addWidget(&wm);
+
+ qd.showMaximized();
+
+ emit composeRequested();
+ qd.exec();
+
+ QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
+ }
+
+ else if (msg=="dialog()")
+ {
+ QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
+ }*/
}
diff --git a/noncore/unsupported/mailit/emailclient.h b/noncore/unsupported/mailit/emailclient.h
index 994fec5..c98cfce 100644
--- a/noncore/unsupported/mailit/emailclient.h
+++ b/noncore/unsupported/mailit/emailclient.h
@@ -61,97 +61,97 @@ private:
MailAccount* dupl(MailAccount *in);
MailAccount *ac;
};
//class EmailClient : public EmailClientBase
class EmailClient : public QMainWindow
{
Q_OBJECT
public:
EmailClient( QWidget* parent, const char* name, WFlags fl = 0 );
~EmailClient();
AddressList* getAdrListRef();
protected:
//void timerEvent(QTimerEvent*);
signals:
void composeRequested();
void viewEmail(QListView *, Email *);
void mailUpdated(Email *);
void newCaption(const QString &);
void replyRequested(Email&, bool&);
void forwardRequested(Email&);
void removeItem(EmailListItem*, bool&);
/*void reply(Email&);
void replyAll(Email&);
void remove(Email&);
void forward(Email&);*/
public slots:
void compose();
void cancel();
void enqueMail(const Email &mail);
void setMailAccount();
void sendQuedMail();
void mailSent();
void deleteItem();
void getNewMail();
void getAllNewMail();
void smtpError(int code);
void popError(int code);
void inboxItemSelected();
void outboxItemSelected();
void inboxItemPressed();
void inboxItemReleased();
void mailArrived(const Email &mail, bool fromDisk);
void allMailArrived(int);
- void saveMail(QString fileName, QListView *view);
+ void saveMail(const QString &fileName, QListView *view);
void selectAccount(int);
void editAccount(int);
void updateAccounts();
void deleteAccount(int);
void deleteMail(EmailListItem *mailItem, bool &inbox);
void setTotalSize(int);
void setMailSize(int);
void setDownloadedSize(int);
void moveMailFront(Email *mailPtr);
void download(Email*);
/* void reply();
void replyAll();
void forward();
void remove();*/
private slots:
void receive(const QCString&, const QByteArray&);
private:
void init();
void initStatusBar(QWidget*);
void readMail();
QString getPath(bool enclosurePath);
void readSettings();
void saveSettings();
Email* getCurrentMail();
int timerID;
Config *mailconf;
int newAccountId, idCount, mailIdCount;
int accountIdCount;
AccountList accountList;
AddressList *addressList;
EditAccount *editAccountView;
EmailListItem *item;
EmailHandler *emailHandler;
QList<Email> quedMessages;
MailList mailDownloadList;
MailList tempMailDownloadList;
bool sending, receiving, previewingMail, allAccounts;
QString lineShift;
MailAccount account, *currentAccount;
QCopChannel* channel;
QToolBar *bar;
QProgressBar *progressBar;
diff --git a/noncore/unsupported/mailit/emailhandler.cpp b/noncore/unsupported/mailit/emailhandler.cpp
index 62fa64f..59ccd90 100644
--- a/noncore/unsupported/mailit/emailhandler.cpp
+++ b/noncore/unsupported/mailit/emailhandler.cpp
@@ -1,90 +1,90 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qfileinfo.h>
#include <stdlib.h>
#include <qapplication.h>
#include <qmessagebox.h>
#include <qcstring.h>
#include "emailhandler.h"
#include <qpe/applnk.h>
#include <qpe/filemanager.h>
QCollection::Item EnclosureList::newItem(QCollection::Item d)
{
return dupl( (Enclosure *) d);
}
Enclosure* EnclosureList::dupl(Enclosure *in)
{
ac = new Enclosure(*in);
return ac;
}
EmailHandler::EmailHandler()
{
- qDebug("EMailHandler::EmailHandler");
+ qDebug("EMailHandler::EmailHandler");
smtpClient = new SmtpClient();
popClient = new PopClient();
connect(smtpClient, SIGNAL(errorOccurred(int)), this,
SIGNAL(smtpError(int)) );
connect(smtpClient, SIGNAL(mailSent()), this, SIGNAL(mailSent()) );
connect(smtpClient, SIGNAL(updateStatus(const QString &)), this,
SIGNAL(updateSmtpStatus(const QString &)) );
connect(popClient, SIGNAL(errorOccurred(int)), this,
SIGNAL(popError(int)) );
connect(popClient, SIGNAL(newMessage(const QString &, int, uint, bool)),
this, SLOT(messageArrived(const QString &, int, uint, bool)) );
connect(popClient, SIGNAL(updateStatus(const QString &)), this,
SIGNAL(updatePopStatus(const QString &)) );
connect(popClient, SIGNAL(mailTransfered(int)), this,
SIGNAL(mailTransfered(int)) );
//relaying size information
connect(popClient, SIGNAL(currentMailSize(int)),
this, SIGNAL(currentMailSize(int)) );
connect(popClient, SIGNAL(downloadedSize(int)),
this, SIGNAL(downloadedSize(int)) );
}
void EmailHandler::sendMail(QList<Email> *mailList)
{
Email *currentMail;
QString temp;
QString userName = mailAccount.name;
userName += " <" + mailAccount.emailAddress + ">";
for (currentMail = mailList->first(); currentMail != 0;
currentMail = mailList->next()) {
if (encodeMime(currentMail) == 0) {
smtpClient->addMail(userName, currentMail->subject,
currentMail->recipients, currentMail->rawMail);
} else { //error
temp = tr("Could not locate all files in \nmail with subject: ") +
currentMail->subject;
temp += tr("\nMail has NOT been sent");
QMessageBox::warning(qApp->activeWindow(), tr("Attachment error"), temp, tr("OK\n"));
}
}
@@ -103,167 +103,167 @@ void EmailHandler::getMail()
popClient->setSynchronize(mailAccount.lastServerMailCount);
} else {
popClient->removeSynchronize();
}
headers = FALSE;
//popClient->headersOnly(headers, 0);
popClient->newConnection(mailAccount.popServer, 110);
}
void EmailHandler::getMailHeaders()
{
popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd);
mailAccount.synchronize ? popClient->setSynchronize(mailAccount.lastServerMailCount): popClient->removeSynchronize();
headers = TRUE;
popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all
qDebug("Initiating connection");
popClient->newConnection(mailAccount.popServer, 110);
}
void EmailHandler::getMailByList(MailList *mailList)
{
if (mailList->count() == 0) { //should not occur though
emit mailTransfered(0);
return;
}
headers = FALSE;
popClient->headersOnly(FALSE, 0);
popClient->setAccount(mailAccount.popUserName,mailAccount.popPasswd);
popClient->setSelectedMails(mailList);
popClient->newConnection(mailAccount.popServer, 110);
}
void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete)
{
Email mail;
mail.rawMail = message;
mail.serverId = id;
mail.size = size;
mail.downloaded = complete;
emit mailArrived(mail, FALSE);
}
-bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
+bool EmailHandler::parse(const QString &in, const QString &lineShift, Email *mail)
{
QString temp, boundary;
int pos;
QString delimiter, header, body, mimeHeader, mimeBody;
QString content, contentType, contentAttribute, id, encoding;
QString fileName, storedName;
int enclosureId = 0;
mail->rawMail = in;
mail->received = TRUE;
mail->files.setAutoDelete(TRUE);
temp = lineShift + "." + lineShift;
if (in.right(temp.length()) != temp) {
mail->rawMail += temp;
}
delimiter = lineShift + lineShift; // "\n\n" or "\r\n\r\n"
pos = in.find(delimiter, 0, FALSE);
header = in.left(pos);
body = in.right(in.length() - pos - delimiter.length());
if ((body.at(body.length()-2) == '.') && (body.at(body.length()-3) == '\n'))
body.truncate(body.length()-2);
TextParser p(header, lineShift);
if ((pos = p.find("FROM",':', 0, TRUE)) != -1) {
pos++;
if (p.separatorAt(pos) == ' ') {
mail->from = p.getString(&pos, '<', false);
mail->from = mail->from.stripWhiteSpace();
if ( (mail->from.length() > 2) && (mail->from[0] == '"') ) {
mail->from = mail->from.left(mail->from.length() - 1);
mail->from = mail->from.right(mail->from.length() - 1);
}
pos++;
mail->fromMail = p.getString(&pos, '>', false);
} else {
if (p.separatorAt(pos) == '<') //No name.. nasty
pos++;
//pos++;
mail->fromMail = p.getString(&pos, 'z', TRUE);
if (mail->fromMail.at(mail->fromMail.length()-1) == '>')
mail->fromMail.truncate(mail->fromMail.length() - 1);
mail->from=mail->fromMail;
}
}
pos=0;
//Search for To: after the FROM: attribute to prevent hitting the Delivered-To:
while((pos = p.find("TO",':', pos+1, TRUE))!=-1)
{
- QString rec;
-
- if (p.separatorAt(pos-1)!='-') //The - separator means that this is a Delivered-To: or Reply-To:
- {
- pos++;
- mail->recipients.append(p.getString(&pos, '\r', TRUE));
- }
+ QString rec;
+
+ if (p.separatorAt(pos-1)!='-') //The - separator means that this is a Delivered-To: or Reply-To:
+ {
+ pos++;
+ mail->recipients.append(p.getString(&pos, '\r', TRUE));
+ }
}
//
//if (pos==-1) mail->recipients.append (tr("undisclosed recipients") );
if ((pos = p.find("CC",':', 0, TRUE)) != -1)
{
- pos++;
- mail->carbonCopies.append (p.getString(&pos, 'z', TRUE) );
+ pos++;
+ mail->carbonCopies.append (p.getString(&pos, 'z', TRUE) );
}
if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) {
pos++;
mail->subject = p.getString(&pos, 'z', TRUE);
}
if ((pos = p.find("DATE",':', 0, TRUE)) != -1) {
pos++;
mail->date = p.getString(&pos, 'z', TRUE);
}
if ((pos = p.find("MESSAGE",'-', 0, TRUE)) != -1) {
pos++;
if ( (p.wordAt(pos).upper() == "ID") &&
(p.separatorAt(pos) == ':') ) {
id = p.getString(&pos, 'z', TRUE);
mail->id = id;
}
}
pos = 0;
while ( ((pos = p.find("MIME",'-', pos, TRUE)) != -1) ) {
pos++;
if ( (p.wordAt(pos).upper() == "VERSION") &&
(p.separatorAt(pos) == ':') ) {
pos++;
if (p.getString(&pos, 'z', true) == "1.0") {
mail->mimeType = 1;
}
}
}
if (mail->mimeType == 1) {
boundary = "";
if ((pos = p.find("BOUNDARY", '=', 0, TRUE)) != -1) {
pos++;
boundary = p.getString(&pos, 'z', true);
if (boundary[0] == '"') {
boundary = boundary.left(boundary.length() - 1); //strip "
boundary = boundary.right(boundary.length() - 1); //strip "
}
boundary = "--" + boundary; //create boundary field
}
@@ -395,167 +395,167 @@ int EmailHandler::parse64base(char *src, char *bufOut) {
//conversion table withouth table...
for (int x = 0; x < 4; x++) {
c = src[x];
if ( (int) c >= 'A' && (int) c <= 'Z')
li[x] = (int) c - (int) 'A';
if ( (int) c >= 'a' && (int) c <= 'z')
li[x] = (int) c - (int) 'a' + 26;
if ( (int) c >= '0' && (int) c <= '9')
li[x] = (int) c - (int) '0' + 52;
if (c == '+')
li[x] = 62;
if (c == '/')
li[x] = 63;
}
processed = 1;
bufOut[0] = (char) li[0] & (32+16+8+4+2+1); //mask out top 2 bits
bufOut[0] <<= 2;
z = li[1] >> 4;
bufOut[0] = bufOut[0] | z; //first byte retrived
if (src[2] != '=') {
bufOut[1] = (char) li[1] & (8+4+2+1); //mask out top 4 bits
bufOut[1] <<= 4;
z = li[2] >> 2;
bufOut[1] = bufOut[1] | z; //second byte retrived
processed++;
if (src[3] != '=') {
bufOut[2] = (char) li[2] & (2+1); //mask out top 6 bits
bufOut[2] <<= 6;
z = li[3];
bufOut[2] = bufOut[2] | z; //third byte retrieved
processed++;
}
}
return processed;
}
int EmailHandler::encodeMime(Email *mail)
{
QString fileName, fileType, contentType, newBody, boundary;
Enclosure *ePtr;
QString userName = mailAccount.name;
- if (userName.length()>0) //only embrace it if there is a user name
- userName += " <" + mailAccount.emailAddress + ">";
+ if (userName.length()>0) //only embrace it if there is a user name
+ userName += " <" + mailAccount.emailAddress + ">";
//add standard headers
newBody = "From: " + userName + "\r\nTo: ";
for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) {
newBody += *it + " ";
}
newBody += "\r\nCC: ";
for (QStringList::Iterator it = mail->carbonCopies.begin(); it != mail->carbonCopies.end(); ++it ) {
newBody += *it + " ";
}
newBody += "\r\nSubject: " + mail->subject + "\r\n";
if (mail->files.count() == 0) { //just a simple mail
newBody += "\r\n" + mail->body;
mail->rawMail = newBody;
return 0;
}
//Build mime encoded mail
boundary = "-----4345=next_bound=0495----";
newBody += "Mime-Version: 1.0\r\n";
newBody += "Content-Type: multipart/mixed; boundary=\"" +
boundary + "\"\r\n\r\n";
newBody += "This is a multipart message in Mime 1.0 format\r\n\r\n";
newBody += "--" + boundary + "\r\nContent-Type: text/plain\r\n\r\n";
newBody += mail->body;
for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) {
fileName = ePtr->originalName;
fileType = ePtr->contentType;
QFileInfo fi(fileName);
// This specification of contentType is temporary
contentType = "";
if (fileType == "Picture") {
contentType = "image/x-image";
} else if (fileType == "Document") {
contentType = "text/plain";
} else if (fileType == "Sound") {
contentType = "audio/x-wav";
} else if (fileType == "Movie") {
contentType = "video/mpeg";
} else {
contentType = "application/octet-stream";
}
newBody += "\r\n\r\n--" + boundary + "\r\n";
newBody += "Content-Type: " + contentType + "; name=\"" +
fi.fileName() + "\"\r\n";
newBody += "Content-Transfer-Encoding: base64\r\n";
newBody += "Content-Disposition: inline; filename=\"" +
fi.fileName() + "\"\r\n\r\n";
if (encodeFile(fileName, &newBody) == -1) //file not found?
return -1;
}
newBody += "\r\n\r\n--" + boundary + "--";
mail->rawMail = newBody;
return 0;
}
-int EmailHandler::encodeFile(QString fileName, QString *toBody)
+int EmailHandler::encodeFile(const QString &fileName, QString *toBody)
{
char *fileData;
char *dataPtr;
QString temp;
uint dataSize, count;
QFile f(fileName);
if (! f.open(IO_ReadOnly) ) {
qWarning("could not open file: " + fileName);
return -1;
}
QTextStream s(&f);
dataSize = f.size();
fileData = (char *) malloc(dataSize + 3);
s.readRawBytes(fileData, dataSize);
temp = "";
dataPtr = fileData;
count = 0;
while (dataSize > 0) {
if (dataSize < 3) {
encode64base(dataPtr, &temp, dataSize);
dataSize = 0;
} else {
encode64base(dataPtr, &temp, 3);
dataSize -= 3;
dataPtr += 3;
count += 4;
}
if (count > 72) {
count = 0;
temp += "\r\n";
}
}
toBody->append(temp);
delete(fileData);
f.close();
return 0;
}
void EmailHandler::encode64base(char *src, QString *dest, int len)
{
QString temp;
uchar c;
uchar bufOut[4];
bufOut[0] = src[0];
diff --git a/noncore/unsupported/mailit/emailhandler.h b/noncore/unsupported/mailit/emailhandler.h
index 5b59f65..e4e7f46 100644
--- a/noncore/unsupported/mailit/emailhandler.h
+++ b/noncore/unsupported/mailit/emailhandler.h
@@ -1,150 +1,150 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef EmailHandler_H
#define EmailHandler_H
#include <qobject.h>
#include <qstring.h>
#include <qdatetime.h>
#include <qlist.h>
#include <qstringlist.h>
#include <qfile.h>
#include <qstringlist.h>
#include <qcollection.h>
#include <qpe/qcopenvelope_qws.h>
#include "smtpclient.h"
#include "popclient.h"
#include "textparser.h"
#include "maillist.h"
struct Enclosure
{
- int id;
- QString originalName;
- QString name;
- QString path;
- QString contentType;
- QString contentAttribute;
- QString encoding;
- QString body; //might use to much mem. check!!
- bool saved, installed;
+ int id;
+ QString originalName;
+ QString name;
+ QString path;
+ QString contentType;
+ QString contentAttribute;
+ QString encoding;
+ QString body; //might use to much mem. check!!
+ bool saved, installed;
};
class EnclosureList : public QList<Enclosure>
{
public:
- Item newItem(Item d);
+ Item newItem(Item d);
private:
- Enclosure* dupl(Enclosure *in);
- Enclosure *ac;
+ Enclosure* dupl(Enclosure *in);
+ Enclosure *ac;
};
struct Email
{
- QString id;
- QString from;
- QString fromMail;
- QStringList recipients;
- QStringList carbonCopies;
- QString date;
- QString subject;
- QString body;
- QString bodyPlain;
- bool sent, received, read, downloaded;
- QString rawMail;
- int mimeType; //1 = Mime 1.0
- int serverId;
- int internalId;
- int fromAccountId;
- QString contentType; //0 = text
- QString contentAttribute; //0 = plain, 1 = html
- EnclosureList files;
- uint size;
-
- void addEnclosure(Enclosure *e)
- {
- files.append(e);
- }
+ QString id;
+ QString from;
+ QString fromMail;
+ QStringList recipients;
+ QStringList carbonCopies;
+ QString date;
+ QString subject;
+ QString body;
+ QString bodyPlain;
+ bool sent, received, read, downloaded;
+ QString rawMail;
+ int mimeType; //1 = Mime 1.0
+ int serverId;
+ int internalId;
+ int fromAccountId;
+ QString contentType; //0 = text
+ QString contentAttribute; //0 = plain, 1 = html
+ EnclosureList files;
+ uint size;
+
+ void addEnclosure(Enclosure *e)
+ {
+ files.append(e);
+ }
};
struct MailAccount
{
- QString accountName;
- QString name;
- QString emailAddress;
- QString popUserName;
- QString popPasswd;
- QString popServer;
- QString smtpServer;
- bool synchronize;
- int syncLimit;
- int lastServerMailCount;
- int id;
+ QString accountName;
+ QString name;
+ QString emailAddress;
+ QString popUserName;
+ QString popPasswd;
+ QString popServer;
+ QString smtpServer;
+ bool synchronize;
+ int syncLimit;
+ int lastServerMailCount;
+ int id;
};
- const int ErrUnknownResponse = 1001;
- const int ErrLoginFailed = 1002;
- const int ErrCancel = 1003;
-
+ const int ErrUnknownResponse = 1001;
+ const int ErrLoginFailed = 1002;
+ const int ErrCancel = 1003;
+
class EmailHandler : public QObject
{
- Q_OBJECT
+ Q_OBJECT
public:
- EmailHandler();
- void setAccount(MailAccount account);
- MailAccount* getAccount(){return &mailAccount;}
- void sendMail(QList<Email> *mailList);
- void getMail();
- void getMailHeaders();
- void getMailByList(MailList *mailList);
- bool parse(QString in, QString lineShift, Email *mail);
- bool getEnclosure(Enclosure *ePtr);
- int parse64base(char *src, char *dest);
- int encodeMime(Email *mail);
- int encodeFile(QString fileName, QString *toBody);
- void encode64base(char *src, QString *dest, int len);
- void cancel();
-
+ EmailHandler();
+ void setAccount(MailAccount account);
+ MailAccount* getAccount(){return &mailAccount;}
+ void sendMail(QList<Email> *mailList);
+ void getMail();
+ void getMailHeaders();
+ void getMailByList(MailList *mailList);
+ bool parse(const QString &in, const QString &lineShift, Email *mail);
+ bool getEnclosure(Enclosure *ePtr);
+ int parse64base(char *src, char *dest);
+ int encodeMime(Email *mail);
+ int encodeFile(const QString &fileName, QString *toBody);
+ void encode64base(char *src, QString *dest, int len);
+ void cancel();
+
signals:
- void mailSent();
- void smtpError(int);
- void popError(int);
- void mailArrived(const Email &, bool);
- void updatePopStatus(const QString &);
- void updateSmtpStatus(const QString &);
- void mailTransfered(int);
- void mailboxSize(int);
- void currentMailSize(int);
- void downloadedSize(int);
+ void mailSent();
+ void smtpError(int);
+ void popError(int);
+ void mailArrived(const Email &, bool);
+ void updatePopStatus(const QString &);
+ void updateSmtpStatus(const QString &);
+ void mailTransfered(int);
+ void mailboxSize(int);
+ void currentMailSize(int);
+ void downloadedSize(int);
public slots:
- void messageArrived(const QString &, int id, uint size, bool complete);
-
+ void messageArrived(const QString &, int id, uint size, bool complete);
+
private:
- MailAccount mailAccount;
- SmtpClient *smtpClient;
- PopClient *popClient;
- bool headers;
+ MailAccount mailAccount;
+ SmtpClient *smtpClient;
+ PopClient *popClient;
+ bool headers;
};
#endif
diff --git a/noncore/unsupported/mailit/emaillistitem.cpp b/noncore/unsupported/mailit/emaillistitem.cpp
index b925a1c..fc9f766 100644
--- a/noncore/unsupported/mailit/emaillistitem.cpp
+++ b/noncore/unsupported/mailit/emaillistitem.cpp
@@ -1,99 +1,99 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qstring.h>
#include <qpe/resource.h>
#include "emaillistitem.h"
EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox)
- : QListViewItem(parent)
+ : QListViewItem(parent)
{
- QString temp;
-
- mail = mailIn;
-
- if (inbox) {
- setText(0, mail.from);
- } else {
- QStringList::Iterator it = mail.recipients.begin();
- temp = *it;
- if (mail.recipients.count() > 1)
- temp += "...";
- setText(0, temp);
- }
- setText(1, mail.subject);
- setText(2,mail.date);
-
- if (mailIn.files.count()>0)
- {
- setPixmap(0, Resource::loadPixmap("mailit/attach"));
- }
-
- selected = FALSE;
+ QString temp;
+
+ mail = mailIn;
+
+ if (inbox) {
+ setText(0, mail.from);
+ } else {
+ QStringList::Iterator it = mail.recipients.begin();
+ temp = *it;
+ if (mail.recipients.count() > 1)
+ temp += "...";
+ setText(0, temp);
+ }
+ setText(1, mail.subject);
+ setText(2,mail.date);
+
+ if (mailIn.files.count()>0)
+ {
+ setPixmap(0, Resource::loadPixmap("mailit/attach"));
+ }
+
+ selected = FALSE;
}
Email* EmailListItem::getMail()
{
- return &mail;
+ return &mail;
}
void EmailListItem::setMail(Email newMail)
{
- mail = newMail;
- repaint();
+ mail = newMail;
+ repaint();
}
void EmailListItem::setItemSelected(bool enable)
{
- selected = enable;
- setSelected(enable);
- repaint();
+ selected = enable;
+ setSelected(enable);
+ repaint();
}
bool EmailListItem::isItemSelected()
{
- return selected;
+ return selected;
}
void EmailListItem::paintCell( QPainter *p, const QColorGroup &cg,
- int column, int width, int alignment )
+ int column, int width, int alignment )
{
- QColorGroup _cg( cg );
- QColor c = _cg.text();
+ QColorGroup _cg( cg );
+ QColor c = _cg.text();
- if ( (! mail.read) && (mail.received) )
- _cg.setColor( QColorGroup::Text, Qt::blue);
- if (!mail.downloaded)
- _cg.setColor( QColorGroup::Text, Qt::red);
-
-/* if (selected) {
- _cg.setColor(QColorGroup::Base, Qt::blue);
- _cg.setColor(QColorGroup::Text, Qt::yellow);
- if (isSelected()) {
- _cg.setColor(QColorGroup::HighlightedText, Qt::yellow);
- } else {
- _cg.setColor(QColorGroup::Highlight, Qt::blue);
- }
- }
-*/
+ if ( (! mail.read) && (mail.received) )
+ _cg.setColor( QColorGroup::Text, Qt::blue);
+ if (!mail.downloaded)
+ _cg.setColor( QColorGroup::Text, Qt::red);
+
+/* if (selected) {
+ _cg.setColor(QColorGroup::Base, Qt::blue);
+ _cg.setColor(QColorGroup::Text, Qt::yellow);
+ if (isSelected()) {
+ _cg.setColor(QColorGroup::HighlightedText, Qt::yellow);
+ } else {
+ _cg.setColor(QColorGroup::Highlight, Qt::blue);
+ }
+ }
+*/
QListViewItem::paintCell( p, _cg, column, width, alignment );
_cg.setColor( QColorGroup::Text, c );
}
diff --git a/noncore/unsupported/mailit/popclient.cpp b/noncore/unsupported/mailit/popclient.cpp
index fedc4e2..dc0116d 100644
--- a/noncore/unsupported/mailit/popclient.cpp
+++ b/noncore/unsupported/mailit/popclient.cpp
@@ -5,323 +5,323 @@
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "popclient.h"
#include "emailhandler.h"
//#define APOP_TEST
extern "C" {
#include "md5.h"
}
#include <qcstring.h>
PopClient::PopClient()
{
socket = new QSocket(this, "popClient");
connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int)));
connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished()));
connect(socket, SIGNAL(readyRead()), this, SLOT(incomingData()));
stream = new QTextStream(socket);
receiving = FALSE;
synchronize = FALSE;
lastSync = 0;
headerLimit = 0;
preview = FALSE;
}
PopClient::~PopClient()
{
delete socket;
delete stream;
}
-void PopClient::newConnection(QString target, int port)
+void PopClient::newConnection(const QString &target, int port)
{
if (receiving) {
qWarning("socket in use, connection refused");
return;
}
status = Init;
socket->connectToHost(target, port);
receiving = TRUE;
//selected = FALSE;
emit updateStatus("DNS lookup");
}
-void PopClient::setAccount(QString popUser, QString popPasswd)
+void PopClient::setAccount(const QString &popUser, const QString &popPasswd)
{
popUserName = popUser;
popPassword = popPasswd;
}
void PopClient::setSynchronize(int lastCount)
{
synchronize = TRUE;
lastSync = lastCount;
}
void PopClient::removeSynchronize()
{
synchronize = FALSE;
lastSync = 0;
}
void PopClient::headersOnly(bool headers, int limit)
{
preview = headers;
headerLimit = limit;
}
void PopClient::setSelectedMails(MailList *list)
{
selected = TRUE;
mailList = list;
}
void PopClient::connectionEstablished()
{
emit updateStatus(tr("Connection established"));
}
void PopClient::errorHandling(int status)
{
emit updateStatus(tr("Error Occured"));
emit errorOccurred(status);
socket->close();
receiving = FALSE;
}
void PopClient::incomingData()
{
QString response, temp, temp2, timeStamp;
QString md5Source;
int start, end;
// char *md5Digest;
char md5Digest[16];
// if ( !socket->canReadLine() )
// return;
response = socket->readLine();
switch(status) {
//logging in
case Init: {
#ifdef APOP_TEST
start = response.find('<',0);
end = response.find('>', start);
if( start >= 0 && end > start )
{
timeStamp = response.mid( start , end - start + 1);
md5Source = timeStamp + popPassword;
md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]);
for(int j =0;j < MD5_DIGEST_LENGTH ;j++)
{
printf("%x", md5Digest[j]);
}
printf("\n");
// qDebug(md5Digest);
*stream << "APOP " << popUserName << " " << md5Digest << "\r\n";
// qDebug("%s", stream);
status = Stat;
}
else
#endif
{
timeStamp = "";
*stream << "USER " << popUserName << "\r\n";
status = Pass;
}
break;
}
case Pass: {
*stream << "PASS " << popPassword << "\r\n";
- status = Stat;
-
+ status = Stat;
+
break;
}
//ask for number of messages
case Stat: {
if (response[0] == '+') {
*stream << "STAT" << "\r\n";
- status = Mcnt;
+ status = Mcnt;
} else errorHandling(ErrLoginFailed);
break;
}
//get count of messages, eg "+OK 4 900.." -> int 4
case Mcnt: {
if (response[0] == '+') {
temp = response.replace(0, 4, "");
int x = temp.find(" ", 0);
temp.truncate((uint) x);
newMessages = temp.toInt();
messageCount = 1;
status = List;
if (synchronize) {
//messages deleted from server, reload all
- if (newMessages < lastSync)
- lastSync = 0;
+ if (newMessages < lastSync)
+ lastSync = 0;
messageCount = 1;
}
- if (selected) {
+ if (selected) {
int *ptr = mailList->first();
if (ptr != 0) {
newMessages++; //to ensure no early jumpout
messageCount = *ptr;
} else newMessages = 0;
- }
+ }
} else errorHandling(ErrUnknownResponse);
}
//Read message number x, count upwards to messageCount
case List: {
if (messageCount <= newMessages) {
*stream << "LIST " << messageCount << "\r\n";
status = Size;
temp2.setNum(newMessages - lastSync);
temp.setNum(messageCount - lastSync);
if (!selected) {
emit updateStatus(tr("Retrieving ") + temp + "/" + temp2);
} else {
//completing a previously closed transfer
/* if ( (messageCount - lastSync) <= 0) {
temp.setNum(messageCount);
emit updateStatus(tr("Previous message ") + temp);
} else {*/
emit updateStatus(tr("Completing message ") + temp);
//}
}
break;
} else {
emit updateStatus(tr("No new Messages"));
status = Quit;
}
}
//get size of message, eg "500 characters in message.." -> int 500
case Size: {
if (status != Quit) { //because of idiotic switch
if (response[0] == '+') {
temp = response.replace(0, 4, "");
int x = temp.find(" ", 0);
temp = temp.right(temp.length() - ((uint) x + 1) );
mailSize = temp.toInt();
emit currentMailSize(mailSize);
status = Retr;
} else {
//qWarning(response);
errorHandling(ErrUnknownResponse);
}
}
}
//Read message number x, count upwards to messageCount
case Retr: {
if (status != Quit) {
if ((selected)||(mailSize <= headerLimit))
- {
+ {
*stream << "RETR " << messageCount << "\r\n";
} else { //only header
- *stream << "TOP " << messageCount << " 0\r\n";
+ *stream << "TOP " << messageCount << " 0\r\n";
}
messageCount++;
status = Ignore;
break;
} }
case Ignore: {
if (status != Quit) { //because of idiotic switch
if (response[0] == '+') {
message = "";
status = Read;
if (!socket->canReadLine()) //sync. problems
break;
response = socket->readLine();
} else errorHandling(ErrUnknownResponse);
}
}
//add all incoming lines to body. When size is reached, send
//message, and go back to read new message
case Read: {
if (status != Quit) { //because of idiotic switch
message += response;
while ( socket->canReadLine() ) {
response = socket->readLine();
message += response;
}
emit downloadedSize(message.length());
int x = message.find("\r\n.\r\n",-5);
if (x == -1) {
break;
} else { //message reach entire size
- if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active
- {
- emit newMessage(message, messageCount-1, mailSize, TRUE);
+ if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active
+ {
+ emit newMessage(message, messageCount-1, mailSize, TRUE);
} else { //incomplete mail downloaded
- emit newMessage(message, messageCount-1, mailSize, FALSE);
+ emit newMessage(message, messageCount-1, mailSize, FALSE);
}
-
+
if ((messageCount > newMessages)||(selected)) //last message ?
- {
+ {
status = Quit;
if (selected) { //grab next from queue
newMessages--;
status = Quit;
}
- }
+ }
else
- {
+ {
*stream << "LIST " << messageCount << "\r\n";
status = Size;
temp2.setNum(newMessages - lastSync);
temp.setNum(messageCount - lastSync);
emit updateStatus(tr("Retrieving ") + temp + "/" + temp2);
break;
}
}
}
if (status != Quit)
break;
}
case Quit: {
*stream << "Quit\r\n";
status = Done;
int newM = newMessages - lastSync;
if (newM > 0) {
temp.setNum(newM);
emit updateStatus(temp + tr(" new messages"));
} else {
emit updateStatus(tr("No new messages"));
}
socket->close();
receiving = FALSE;
emit mailTransfered(newM);
break;
}
}
}
diff --git a/noncore/unsupported/mailit/popclient.h b/noncore/unsupported/mailit/popclient.h
index 10b71ab..c58bc48 100644
--- a/noncore/unsupported/mailit/popclient.h
+++ b/noncore/unsupported/mailit/popclient.h
@@ -1,76 +1,76 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef PopClient_H
#define PopClient_H
#include <stdio.h>
#include <qsocket.h>
#include <qstring.h>
#include <qobject.h>
#include <qtextstream.h>
#include <qlist.h>
#include "maillist.h"
class PopClient: public QObject
{
Q_OBJECT
public:
PopClient();
~PopClient();
- void newConnection(QString target, int port);
- void setAccount(QString popUser, QString popPasswd);
+ void newConnection(const QString &target, int port);
+ void setAccount(const QString &popUser, const QString &popPasswd);
void setSynchronize(int lastCount);
void removeSynchronize();
void headersOnly(bool headers, int limit);
void setSelectedMails(MailList *list);
signals:
void newMessage(const QString &, int, uint, bool);
void errorOccurred(int status);
void updateStatus(const QString &);
void mailTransfered(int);
void mailboxSize(int);
void currentMailSize(int);
void downloadedSize(int);
public slots:
void errorHandling(int);
protected slots:
void connectionEstablished();
void incomingData();
private:
QSocket *socket;
QTextStream *stream;
enum transferStatus
{
Init, Pass, Stat, Mcnt, Read, List, Size, Retr, Acks,
Quit, Done, Ignore
};
int status, lastSync;
int messageCount, newMessages, mailSize, headerLimit;
bool receiving, synchronize, preview, selected;
QString popUserName, popPassword, message;
MailList *mailList;
};
#endif
diff --git a/noncore/unsupported/mailit/smtpclient.cpp b/noncore/unsupported/mailit/smtpclient.cpp
index 8a51a5b..2916f45 100644
--- a/noncore/unsupported/mailit/smtpclient.cpp
+++ b/noncore/unsupported/mailit/smtpclient.cpp
@@ -1,104 +1,104 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "smtpclient.h"
#include "emailhandler.h"
SmtpClient::SmtpClient()
{
socket = new QSocket(this, "smtpClient");
stream = new QTextStream(socket);
mailList.setAutoDelete(TRUE);
connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int)));
connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished()));
connect(socket, SIGNAL(readyRead()), this, SLOT(incomingData()));
sending = FALSE;
}
SmtpClient::~SmtpClient()
{
delete socket;
delete stream;
}
-void SmtpClient::newConnection(QString target, int port)
+void SmtpClient::newConnection(const QString &target, int port)
{
if (sending) {
qWarning("socket in use, connection refused");
return;
}
status = Init;
sending = TRUE;
socket->connectToHost(target, port);
emit updateStatus(tr("DNS lookup"));
}
-void SmtpClient::addMail(QString from, QString subject, QStringList to, QString body)
+void SmtpClient::addMail(const QString &from, const QString &subject, const QStringList &to, const QString &body)
{
RawEmail *mail = new RawEmail;
mail->from = from;
mail->subject = subject;
mail->to = to;
mail->body = body;
mailList.append(mail);
}
void SmtpClient::connectionEstablished()
{
emit updateStatus(tr("Connection established"));
}
void SmtpClient::errorHandling(int status)
{
emit errorOccurred(status);
socket->close();
mailList.clear();
sending = FALSE;
}
void SmtpClient::incomingData()
{
QString response;
if (!socket->canReadLine())
return;
response = socket->readLine();
switch(status) {
case Init: {
if (response[0] == '2') {
status = From;
mailPtr = mailList.first();
*stream << "HELO there\r\n";
} else errorHandling(ErrUnknownResponse);
break;
}
case From: {
if (response[0] == '2') {
*stream << "MAIL FROM: " << mailPtr->from << "\r\n";
status = Recv;
} else errorHandling(ErrUnknownResponse);
diff --git a/noncore/unsupported/mailit/smtpclient.h b/noncore/unsupported/mailit/smtpclient.h
index ca65af4..45c0703 100644
--- a/noncore/unsupported/mailit/smtpclient.h
+++ b/noncore/unsupported/mailit/smtpclient.h
@@ -1,75 +1,75 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#ifndef SmtpClient_H
#define SmtpClient_H
//#include <stdio.h>
#include <qsocket.h>
#include <qstring.h>
#include <qobject.h>
#include <qtextstream.h>
#include <qstringlist.h>
#include <qlist.h>
struct RawEmail
{
- QString from;
- QString subject;
- QStringList to;
- QString body;
+ QString from;
+ QString subject;
+ QStringList to;
+ QString body;
};
class SmtpClient: public QObject
{
- Q_OBJECT
-
+ Q_OBJECT
+
public:
- SmtpClient();
- ~SmtpClient();
- void newConnection(QString target, int port);
- void addMail(QString from, QString subject, QStringList to, QString body);
+ SmtpClient();
+ ~SmtpClient();
+ void newConnection(const QString &target, int port);
+ void addMail(const QString &from, const QString &subject, const QStringList &to, const QString &body);
signals:
- void errorOccurred(int);
- void updateStatus(const QString &);
- void mailSent();
-
+ void errorOccurred(int);
+ void updateStatus(const QString &);
+ void mailSent();
+
public slots:
- void errorHandling(int);
+ void errorHandling(int);
protected slots:
- void connectionEstablished();
- void incomingData();
-
+ void connectionEstablished();
+ void incomingData();
+
private:
- QSocket *socket;
- QTextStream *stream;
- enum transferStatus
- {
- Init, From, Recv, MRcv, Data, Body, Quit, Done
- };
- int status;
- QList<RawEmail> mailList;
- RawEmail *mailPtr;
- bool sending;
- QStringList::Iterator it;
+ QSocket *socket;
+ QTextStream *stream;
+ enum transferStatus
+ {
+ Init, From, Recv, MRcv, Data, Body, Quit, Done
+ };
+ int status;
+ QList<RawEmail> mailList;
+ RawEmail *mailPtr;
+ bool sending;
+ QStringList::Iterator it;
};
#endif
diff --git a/noncore/unsupported/mailit/textparser.cpp b/noncore/unsupported/mailit/textparser.cpp
index 3fa5f6e..e5c9f7c 100644
--- a/noncore/unsupported/mailit/textparser.cpp
+++ b/noncore/unsupported/mailit/textparser.cpp
@@ -1,304 +1,304 @@
/**********************************************************************
** Copyright (C) 2001 Trolltech AS. All rights reserved.
**
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "textparser.h"
-TextParser::TextParser(QString in, QString lineBreak)
+TextParser::TextParser(const QString &in, const QString &lineBreak)
{
- data = in;
- lineSep = lineBreak;
-
- init();
- createSeparators();
- split();
+ data = in;
+ lineSep = lineBreak;
+
+ init();
+ createSeparators();
+ split();
}
-TextParser::TextParser(QString in, QString lineBreak, QString sep)
+TextParser::TextParser(const QString &in, const QString &lineBreak, const QString &sep)
{
- data = in;
- lineSep = lineBreak;
-
- init();
- separators = sep;
- split();
+ data = in;
+ lineSep = lineBreak;
+
+ init();
+ separators = sep;
+ split();
}
void TextParser::init()
{
- lineCount = 0;
- linePos = 0;
- totalElmCount = 0;
- separatorPos = -1; //not initialized
- wordPos = -1; //not initialized
- sepAtLine = 0;
- sepAtPosElm = -1; //such that nextSep equals 0
- wordAtLine = 0;
- wordAtPosElm = -1; //such that nextWord equals 0
- atLine = 0;
- atPosElm = 0;
+ lineCount = 0;
+ linePos = 0;
+ totalElmCount = 0;
+ separatorPos = -1; //not initialized
+ wordPos = -1; //not initialized
+ sepAtLine = 0;
+ sepAtPosElm = -1; //such that nextSep equals 0
+ wordAtLine = 0;
+ wordAtPosElm = -1; //such that nextWord equals 0
+ atLine = 0;
+ atPosElm = 0;
}
void TextParser::createSeparators()
{
- separators = " @#,.:;<>*/(){}|'?-+=_";
+ separators = " @#,.:;<>*/(){}|'?-+=_";
}
-/* Returns pos of given search criteria, -1 if not found */
-int TextParser::find(QString target, QChar sep, int pos, bool upperCase)
+/* Returns pos of given search criteria, -1 if not found */
+int TextParser::find(const QString &target, QChar sep, int pos, bool upperCase)
{
-
- t_splitElm parsstr;
- QString pString;
-
- int atLine = 0, atPosElm = 0;
-
- getLineReference(pos,&atLine,&atPosElm);
-
- for (int x = pos; x < totalElmCount; x++)
- {
- parsstr=splitDone[atLine].elm[atPosElm++];
-
- if (upperCase)
- {
- pString=parsstr.str.upper();
- target=target.upper();
- }
- else
- {
- pString=parsstr.str;
- }
- if ((pString == target) && (parsstr.separator == sep))
- {
- return x;
- }
- if (atPosElm >= splitDone[atLine].elmCount)
- { //new Line
- atLine++;
- atPosElm = 0;
- }
- }
- return -1;
+
+ t_splitElm parsstr;
+ QString pString, pTarget;
+ pTarget = target;
+ int atLine = 0, atPosElm = 0;
+
+ getLineReference(pos,&atLine,&atPosElm);
+
+ for (int x = pos; x < totalElmCount; x++)
+ {
+ parsstr=splitDone[atLine].elm[atPosElm++];
+
+ if (upperCase)
+ {
+ pString=parsstr.str.upper();
+ pTarget=pTarget.upper();
+ }
+ else
+ {
+ pString=parsstr.str;
+ }
+ if ((pString == pTarget) && (parsstr.separator == sep))
+ {
+ return x;
+ }
+ if (atPosElm >= splitDone[atLine].elmCount)
+ { //new Line
+ atLine++;
+ atPosElm = 0;
+ }
+ }
+ return -1;
}
int TextParser::elmCount()
{
- return totalElmCount;
+ return totalElmCount;
}
QChar TextParser::separatorAt(int pos)
{
- if (getLineReference(pos, &sepAtLine, &sepAtPosElm) == -1)
- return QChar::null;
-
- separatorPos = pos;
- return splitDone[sepAtLine].elm[sepAtPosElm].separator;
+ if (getLineReference(pos, &sepAtLine, &sepAtPosElm) == -1)
+ return QChar::null;
+
+ separatorPos = pos;
+ return splitDone[sepAtLine].elm[sepAtPosElm].separator;
}
QChar TextParser::nextSeparator()
{
- sepAtPosElm++;
- if (splitDone[sepAtLine].elmCount <= sepAtPosElm) {
- sepAtLine++;
- sepAtPosElm = 0;
- }
-
- separatorPos++;
- return splitDone[sepAtLine].elm[sepAtPosElm].separator;
+ sepAtPosElm++;
+ if (splitDone[sepAtLine].elmCount <= sepAtPosElm) {
+ sepAtLine++;
+ sepAtPosElm = 0;
+ }
+
+ separatorPos++;
+ return splitDone[sepAtLine].elm[sepAtPosElm].separator;
}
bool TextParser::hasNextSeparator()
{
- return ((separatorPos+1) < totalElmCount);
+ return ((separatorPos+1) < totalElmCount);
}
QString TextParser::wordAt(int pos)
{
- if (getLineReference(pos, &wordAtLine, &wordAtPosElm) == -1)
- return NULL;
-
- wordPos = pos;
- return splitDone[wordAtLine].elm[wordAtPosElm].str;
+ if (getLineReference(pos, &wordAtLine, &wordAtPosElm) == -1)
+ return NULL;
+
+ wordPos = pos;
+ return splitDone[wordAtLine].elm[wordAtPosElm].str;
}
QString TextParser::nextWord()
{
- wordAtPosElm++;
- if (splitDone[wordAtLine].elmCount <= wordAtPosElm) {
- wordAtLine++;
- wordAtPosElm = 0;
- }
-
- wordPos++;
- return splitDone[wordAtLine].elm[wordAtPosElm].str;
+ wordAtPosElm++;
+ if (splitDone[wordAtLine].elmCount <= wordAtPosElm) {
+ wordAtLine++;
+ wordAtPosElm = 0;
+ }
+
+ wordPos++;
+ return splitDone[wordAtLine].elm[wordAtPosElm].str;
}
bool TextParser::hasNextWord()
{
- return ((wordPos + 1) < totalElmCount);
+ return ((wordPos + 1) < totalElmCount);
}
QString TextParser::getString(int *pos, QChar stop, bool lineEnd = false)
{
- QString returnStr = wordAt(*pos);
- QChar chr = separatorAt(*pos);
- QString s;
-
- if (returnStr == "")
- return "";
- if (chr == stop)
- return returnStr;
-
- if (!lineEnd) {
- while ((chr != stop) && hasNextWord()) {
- returnStr.append(chr);
- returnStr += nextWord();
- chr = nextSeparator();
- }
- } else { //copy from pos to end of line
- getLineReference(*pos, &atLine, &atPosElm);
- returnStr = "";
- while (atPosElm < splitDone[atLine].elmCount) {
- if (splitDone[atLine].elm[atPosElm].str != "") {
- returnStr += splitDone[atLine].elm[atPosElm].str;
- }
- chr = splitDone[atLine].elm[atPosElm].separator;
- if (!chr.isNull() && (int) chr != 0) {
- returnStr.append(splitDone[atLine].elm[atPosElm].separator);
- }
- atPosElm++;
- }
- }
-
- *pos = wordPos;
- return returnStr;
+ QString returnStr = wordAt(*pos);
+ QChar chr = separatorAt(*pos);
+ QString s;
+
+ if (returnStr == "")
+ return "";
+ if (chr == stop)
+ return returnStr;
+
+ if (!lineEnd) {
+ while ((chr != stop) && hasNextWord()) {
+ returnStr.append(chr);
+ returnStr += nextWord();
+ chr = nextSeparator();
+ }
+ } else { //copy from pos to end of line
+ getLineReference(*pos, &atLine, &atPosElm);
+ returnStr = "";
+ while (atPosElm < splitDone[atLine].elmCount) {
+ if (splitDone[atLine].elm[atPosElm].str != "") {
+ returnStr += splitDone[atLine].elm[atPosElm].str;
+ }
+ chr = splitDone[atLine].elm[atPosElm].separator;
+ if (!chr.isNull() && (int) chr != 0) {
+ returnStr.append(splitDone[atLine].elm[atPosElm].separator);
+ }
+ atPosElm++;
+ }
+ }
+
+ *pos = wordPos;
+ return returnStr;
}
QString TextParser::getNextLine()
{
- atLine++;
- atPosElm = 0;
- if (atLine < lineCount)
- return splitDone[atLine].str;
- return "";
+ atLine++;
+ atPosElm = 0;
+ if (atLine < lineCount)
+ return splitDone[atLine].str;
+ return "";
}
bool TextParser::hasNextLine()
{
- if (atLine+1 < lineCount)
- return TRUE;;
- return FALSE;
+ if (atLine+1 < lineCount)
+ return TRUE;;
+ return FALSE;
}
int TextParser::endLinePos(int pos)
{
- if ( (getLineReference(pos, &atLine, &atPosElm)) == -1)
- return -1;
-
- return (pos + (splitDone[atLine].elmCount - atPosElm) + 1);
+ if ( (getLineReference(pos, &atLine, &atPosElm)) == -1)
+ return -1;
+
+ return (pos + (splitDone[atLine].elmCount - atPosElm) + 1);
}
int TextParser::getLineReference(int pos, int *line, int *inLinePos)
{
- int currentPos = 0;
-
- for (int x = 0; x < lineCount; x++) {
- if ( currentPos + splitDone[x].elmCount > pos) {
- *line = x;
- *inLinePos = pos - currentPos;
- return 0; //pos found okay
- }
- currentPos += splitDone[x].elmCount;
- }
- return -1; //no reference found
+ int currentPos = 0;
+
+ for (int x = 0; x < lineCount; x++) {
+ if ( currentPos + splitDone[x].elmCount > pos) {
+ *line = x;
+ *inLinePos = pos - currentPos;
+ return 0; //pos found okay
+ }
+ currentPos += splitDone[x].elmCount;
+ }
+ return -1; //no reference found
}
void TextParser::split()
{
- t_splitLine newLine;
+ t_splitLine newLine;
- while ((uint) linePos < data.length()) {
- newLine = nextLine();
- splitDone[lineCount] = splitLine(newLine);
- totalElmCount += splitDone[lineCount].elmCount;
- lineCount++;
- }
+ while ((uint) linePos < data.length()) {
+ newLine = nextLine();
+ splitDone[lineCount] = splitLine(newLine);
+ totalElmCount += splitDone[lineCount].elmCount;
+ lineCount++;
+ }
}
t_splitLine TextParser::splitLine(t_splitLine line)
{
- uint pos = 0;
- uint elmCount = 0;
- t_splitLine tempLine = line;
-
- tempLine.str = line.str.simplifyWhiteSpace();
- tempLine.elm[0].str = "";
- while ( pos < line.str.length() ) {
- if ( isSeparator(tempLine.str[pos]) ) {
- tempLine.elm[elmCount].separator = tempLine.str[pos];
- elmCount++;
- pos++;
- while (tempLine.str[pos] == ' ')
- pos++;
- if (pos > line.str.length())
- elmCount--;
- tempLine.elm[elmCount].str = "";
- } else {
- if (!tempLine.str[pos].isNull())
- tempLine.elm[elmCount].str += tempLine.str[pos];
- pos++;
- }
- }
-
- tempLine.elmCount = elmCount + 1;
- return tempLine;
+ uint pos = 0;
+ uint elmCount = 0;
+ t_splitLine tempLine = line;
+
+ tempLine.str = line.str.simplifyWhiteSpace();
+ tempLine.elm[0].str = "";
+ while ( pos < line.str.length() ) {
+ if ( isSeparator(tempLine.str[pos]) ) {
+ tempLine.elm[elmCount].separator = tempLine.str[pos];
+ elmCount++;
+ pos++;
+ while (tempLine.str[pos] == ' ')
+ pos++;
+ if (pos > line.str.length())
+ elmCount--;
+ tempLine.elm[elmCount].str = "";
+ } else {
+ if (!tempLine.str[pos].isNull())
+ tempLine.elm[elmCount].str += tempLine.str[pos];
+ pos++;
+ }
+ }
+
+ tempLine.elmCount = elmCount + 1;
+ return tempLine;
}
bool TextParser::isSeparator(QChar chr)
{
- for (uint x = 0; x < separators.length(); x++) {
- if (chr == separators[x])
- return true;
- }
- return false;
+ for (uint x = 0; x < separators.length(); x++) {
+ if (chr == separators[x])
+ return true;
+ }
+ return false;
}
t_splitLine TextParser::nextLine()
{
- int newLinePos;
- t_splitLine lineType;
-
- newLinePos = data.find(lineSep, linePos);
-
- lineType.lineType = NewLine;
- lineType.str = "";
-
- if (newLinePos == -1) {
- newLinePos = data.length();
- lineType.lineType = LastLine;
- }
-
- for (int x = linePos; x < newLinePos; x++)
- lineType.str += data[x];
-
- linePos = newLinePos;
- if ((uint) linePos < data.length()) //if not EOF, add length of lineSep
- linePos += lineSep.length();
-
- return lineType;
+ int newLinePos;
+ t_splitLine lineType;
+
+ newLinePos = data.find(lineSep, linePos);
+
+ lineType.lineType = NewLine;
+ lineType.str = "";
+
+ if (newLinePos == -1) {
+ newLinePos = data.length();
+ lineType.lineType = LastLine;
+ }
+
+ for (int x = linePos; x < newLinePos; x++)
+ lineType.str += data[x];
+
+ linePos = newLinePos;
+ if ((uint) linePos < data.length()) //if not EOF, add length of lineSep
+ linePos += lineSep.length();
+
+ return lineType;
}
diff --git a/noncore/unsupported/mailit/textparser.h b/noncore/unsupported/mailit/textparser.h
index c5e88a0..03bb6d5 100644
--- a/noncore/unsupported/mailit/textparser.h
+++ b/noncore/unsupported/mailit/textparser.h
@@ -4,82 +4,82 @@
** This file is part of Qt Palmtop Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qobject.h>
#include <qstring.h>
#ifndef TEXTPARSER_H
#define TEXTPARSER_H
enum t_strType { Word, Number};
enum t_lineType {NewLine, LastLine};
const uint MAX_ELEMENTS = 200; //Should be dynamic
const uint MAX_LINES = 500; //Should be dynamic
struct t_splitElm
{
QChar separator;
int strType;
QString str;
};
struct t_splitLine
{
t_lineType lineType;
QString str; //a bit redundant...
t_splitElm elm[MAX_ELEMENTS];
int elmCount;
};
class TextParser: public QObject
{
Q_OBJECT
public:
- TextParser(QString in, QString lineBreak);
- TextParser(QString in, QString lineBreak, QString sep);
- int find(QString target, QChar sep, int pos, bool upperCase);
+ TextParser(const QString &in, const QString &lineBreak);
+ TextParser(const QString &in, const QString &lineBreak, const QString &sep);
+ int find(const QString &target, QChar sep, int pos, bool upperCase);
int elmCount();
QChar separatorAt(int pos);
QChar nextSeparator();
bool hasNextSeparator();
QString wordAt(int pos);
QString nextWord();
bool hasNextWord();
QString getString(int *pos, QChar stop, bool lineEnd);
QString getNextLine();
bool hasNextLine();
int endLinePos(int pos);
private:
void init();
void createSeparators();
t_splitLine nextLine();
void split();
t_splitLine splitLine(t_splitLine line);
bool isSeparator(QChar chr);
t_splitLine splitDone[MAX_LINES];
int getLineReference(int pos, int *line, int *inLinePos);
int lineCount, linePos, totalElmCount;
int separatorPos, wordPos;
QString data, separators, lineSep;
int sepAtLine, sepAtPosElm;
int wordAtLine, wordAtPosElm;
int atLine, atPosElm;
};
#endif