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 @@ -17,145 +17,145 @@ ** 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 @@ -16,43 +16,43 @@ ** 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 @@ -356,25 +356,25 @@ void EmailClient::getNewMail() { 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 @@ -452,35 +452,36 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk) 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 ) ) { @@ -633,25 +634,25 @@ void EmailClient::readMail() 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(); @@ -703,25 +704,25 @@ void EmailClient::readSettings() 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) @@ -906,131 +907,131 @@ 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 @@ -97,25 +97,25 @@ public slots: 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(); 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 @@ -30,25 +30,25 @@ 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)) ); @@ -139,25 +139,25 @@ void EmailHandler::getMailByList(MailList *mailList) 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); @@ -195,39 +195,39 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail) 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); } @@ -431,26 +431,26 @@ int EmailHandler::parse64base(char *src, char *bufOut) { } } 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 + " "; } @@ -501,25 +501,25 @@ int EmailHandler::encodeMime(Email *mail) 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); 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 @@ -28,123 +28,123 @@ #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 @@ -13,87 +13,87 @@ ** ** 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 @@ -41,41 +41,41 @@ PopClient::PopClient() 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() @@ -149,60 +149,60 @@ void PopClient::incomingData() #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); @@ -233,28 +233,28 @@ void PopClient::incomingData() 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; @@ -267,41 +267,41 @@ void PopClient::incomingData() 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; 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 @@ -26,26 +26,26 @@ #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); 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 @@ -30,39 +30,39 @@ SmtpClient::SmtpClient() 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() 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 @@ -21,55 +21,55 @@ #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 @@ -10,295 +10,295 @@ ** ** 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 @@ -40,27 +40,27 @@ 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); 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 @@ -17,145 +17,145 @@ ** 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 @@ -16,43 +16,43 @@ ** 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 @@ -356,25 +356,25 @@ void EmailClient::getNewMail() { 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 @@ -452,35 +452,36 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk) 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 ) ) { @@ -633,25 +634,25 @@ void EmailClient::readMail() 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(); @@ -703,25 +704,25 @@ void EmailClient::readSettings() 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) @@ -906,131 +907,131 @@ 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 @@ -97,25 +97,25 @@ public slots: 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(); 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 @@ -30,25 +30,25 @@ 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)) ); @@ -139,25 +139,25 @@ void EmailHandler::getMailByList(MailList *mailList) 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); @@ -195,39 +195,39 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail) 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); } @@ -431,26 +431,26 @@ int EmailHandler::parse64base(char *src, char *bufOut) { } } 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 + " "; } @@ -501,25 +501,25 @@ int EmailHandler::encodeMime(Email *mail) 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); 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 @@ -28,123 +28,123 @@ #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 @@ -13,87 +13,87 @@ ** ** 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 @@ -41,41 +41,41 @@ PopClient::PopClient() 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() @@ -149,60 +149,60 @@ void PopClient::incomingData() #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); @@ -233,28 +233,28 @@ void PopClient::incomingData() 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; @@ -267,41 +267,41 @@ void PopClient::incomingData() 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; 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 @@ -26,26 +26,26 @@ #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); 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 @@ -30,39 +30,39 @@ SmtpClient::SmtpClient() 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() 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 @@ -21,55 +21,55 @@ #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 @@ -10,295 +10,295 @@ ** ** 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 @@ -40,27 +40,27 @@ 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); |