author | groucho <groucho> | 2003-04-24 11:19:11 (UTC) |
---|---|---|
committer | groucho <groucho> | 2003-04-24 11:19:11 (UTC) |
commit | 9671975e21266e3bfa6f3c793a3278b67cea34b7 (patch) (side-by-side diff) | |
tree | 876c77939cfd0e00fc844b1b5af09b2978564a6d | |
parent | 51e782b9658de61dc02579e115a9c62f396609a3 (diff) | |
download | opie-9671975e21266e3bfa6f3c793a3278b67cea34b7.zip opie-9671975e21266e3bfa6f3c793a3278b67cea34b7.tar.gz opie-9671975e21266e3bfa6f3c793a3278b67cea34b7.tar.bz2 |
- reworked size filtering
- started reworking offline download
- better tab focus switching
- Hello "Whats this" capability
- Fixed parsing of To: header files (no more Delivered-To: and Reply-To: matches)
- Good bye Settings.txt, hello Config Objects and encrypted passwords
- Translation improvements (added trs)
- Parser optimizations
30 files changed, 450 insertions, 474 deletions
diff --git a/noncore/net/mailit/addatt.cpp b/noncore/net/mailit/addatt.cpp index d268f1f..daefac6 100644 --- a/noncore/net/mailit/addatt.cpp +++ b/noncore/net/mailit/addatt.cpp @@ -55,15 +55,15 @@ FileItem::~FileItem() AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f) : QDialog(parent, name, f) { - setCaption("Adding attatchments"); + setCaption("Adding attachments"); QGridLayout *top = new QGridLayout(this, 1,1 ); QHBox *buttons=new QHBox(this); /*fileCategoryButton = new QPushButton(this);*/ - attatchButton = new QPushButton(tr("Attatch..."), buttons); + attachButton = new QPushButton(tr("attach..."), buttons); removeButton = new QPushButton(tr("Remove"), buttons); /*fileCategories = new QPopupMenu(fileCategoryButton); fileCategoryButton->setPopup(fileCategories); @@ -77,29 +77,29 @@ AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f) top->addWidget(fileCategoryButton, 0, 0);*/ top->addWidget(buttons,1,0); - //buttons->addWidget(attatchButton,0,0); + //buttons->addWidget(attachButton,0,0); //buttons->addWidget(removeButton,0,1); //connect(fileCategories, SIGNAL(activated(int)), this, // SLOT(fileCategorySelected(int)) );*/ - connect(attatchButton, SIGNAL(clicked()), this, - SLOT(addAttatchment()) ); + connect(attachButton, SIGNAL(clicked()), this, + SLOT(addattachment()) ); connect(removeButton, SIGNAL(clicked()), this, - SLOT(removeAttatchment()) ); + SLOT(removeattachment()) ); /*listView = new QListView(this, "AttView"); listView->addColumn("Documents");* connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this, - SLOT(addAttatchment()) );*/ + SLOT(addattachment()) );*/ attView = new QListView(this, "Selected"); attView->addColumn(tr("Attached")); attView->addColumn(tr("File type")); connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this, - SLOT(removeAttatchment()) ); + SLOT(removeattachment()) ); //top->addWidget(ofs, 0,0); top->addWidget(attView, 0,0); @@ -120,9 +120,9 @@ void AddAtt::clear() fileCategoryButton->setText(fileCategories->text(id)); getFiles(); }*/ -void AddAtt::addAttatchment() +void AddAtt::addattachment() { OFileDialog ofs("Attachments",this,0,0,"/root/Documents"); ofs.showMaximized(); @@ -137,9 +137,9 @@ void AddAtt::addAttatchment() modified = TRUE; } } -void AddAtt::removeAttatchment() +void AddAtt::removeattachment() { if (attView->selectedItem() != NULL) { attView->takeItem(attView->selectedItem()); @@ -191,9 +191,9 @@ void AddAtt::getFiles() ++it; // goto next list element }*/ } -QStringList AddAtt::returnAttatchedFiles() +QStringList AddAtt::returnattachedFiles() { QFileInfo info; QStringList list; diff --git a/noncore/net/mailit/addatt.h b/noncore/net/mailit/addatt.h index fcf3279..a365947 100644 --- a/noncore/net/mailit/addatt.h +++ b/noncore/net/mailit/addatt.h @@ -48,25 +48,25 @@ class AddAtt : public QDialog Q_OBJECT public: AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0); - QStringList returnAttatchedFiles(); + QStringList returnattachedFiles(); QStringList returnFileTypes(); void getFiles(); void clear(); public slots: //void fileCategorySelected(int); - void addAttatchment(); - void removeAttatchment(); + void addattachment(); + void removeattachment(); void reject(); void accept(); private: FileItem* item; QListView *attView; - QPushButton *attatchButton, *removeButton; + QPushButton *attachButton, *removeButton; QPopupMenu *fileCategories; bool modified; //QFileInfo *fi; diff --git a/noncore/net/mailit/addresslist.cpp b/noncore/net/mailit/addresslist.cpp index 8d9ab91..7d60ebf 100644 --- a/noncore/net/mailit/addresslist.cpp +++ b/noncore/net/mailit/addresslist.cpp @@ -120,9 +120,9 @@ void AddressList::read() QString lineEmail, lineName, email, name; OContactAccess m_contactdb("mailit"); OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 ); - //OContact* oc; + //OContact* oc;(*it).defaultEmail() for ( it = m_list.begin(); it != m_list.end(); ++it ) { //oc=(OContact*) it; diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp index ad1e0b4..23059cf 100644 --- a/noncore/net/mailit/emailclient.cpp +++ b/noncore/net/mailit/emailclient.cpp @@ -22,8 +22,9 @@ #include <qfile.h> #include <qcheckbox.h> #include <qmenubar.h> #include <qaction.h> +#include <qwhatsthis.h> #include <qpe/resource.h> #include "emailclient.h" QCollection::Item AccountList::newItem(QCollection::Item d) @@ -81,8 +82,9 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl ) lineShift = "\n"; readMail(); lineShift = "\r\n"; + mailboxView->setCurrentTab(0); //ensure that inbox has focus } EmailClient::~EmailClient() @@ -112,8 +114,9 @@ void EmailClient::init() connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)), status2Label, SLOT(setText(const QString &)) ); progressBar = new QProgressBar(statusBar); + connect(emailHandler, SIGNAL(mailboxSize(int)), this, SLOT(setTotalSize(int)) ); connect(emailHandler, SIGNAL(currentMailSize(int)), this, SLOT(setMailSize(int)) ); @@ -126,8 +129,9 @@ void EmailClient::init() setToolBarsMovable(FALSE); bar = new QToolBar(this); + QWhatsThis::add(bar,tr("Main operation toolbar")); bar->setHorizontalStretchable( TRUE ); mb = new QMenuBar( bar ); @@ -147,47 +151,36 @@ void EmailClient::init() bar = new QToolBar(this); getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar); - //connect(setAccountlButton, SIGNAL(activated()), this, SLOT(setCurrentAccount()) ); - // setAccountButton->addTo(bar); - //setAccountButton->addTo(mail); - - /*idCount = 0; - - for (MailAccount* accountPtr = accountList.first(); accountPtr != 0; - accountPtr = accountList.next()) { + QWhatsThis::add(getMailButton,tr("Click to download mail via all available accounts.\n Press and hold to select the desired account.")); - selectAccountMenu->insertItem(accountPtr->accountName,this, SLOT(selectAccount(int)), 0, idCount); - idCount++; - }*/ getMailButton->setPopup(selectAccountMenu); - - /*getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0); - connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) ); - getMailButton->addTo(bar);*/ - //getMailButton->addTo(mail); - sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendqueue"), QString::null, 0, this, 0); connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) ); sendMailButton->addTo(bar); sendMailButton->addTo(mail); + sendMailButton->setWhatsThis("Send mail queued in the outbox"); composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0); connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) ); composeButton->addTo(bar); composeButton->addTo(mail); + composeButton->setWhatsThis("Compose a new mail"); cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0); connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) ); cancelButton->addTo(mail); cancelButton->addTo(bar); cancelButton->setEnabled(FALSE); + cancelButton->setWhatsThis("Stop the currently active mail transfer"); + deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); deleteButton->addTo(bar); + deleteButton->setWhatsThis("Remove the currently selected eMail(s)"); mailboxView = new OTabWidget( this, "mailboxView" ); QWidget* widget = new QWidget( mailboxView, "widget" ); @@ -200,8 +193,10 @@ void EmailClient::init() inboxView->addColumn( tr( "Subject" ) ); inboxView->addColumn( tr( "Date" ) ); inboxView->setMinimumSize( QSize( 0, 0 ) ); inboxView->setAllColumnsShowFocus(TRUE); + QWhatsThis::add(inboxView,QWidget::tr("This is the inbox view.\n It keeps the fetched mail which can be viewed by double clicking the entry.\n" + " A blue attachment icon shows whether this mail has attachments.")); grid_2->addWidget( inboxView, 2, 0 ); mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) ); @@ -214,14 +209,14 @@ void EmailClient::init() outboxView->addColumn( tr( "To" ) ); outboxView->addColumn( tr( "Subject" ) ); outboxView->setAllColumnsShowFocus(TRUE); + QWhatsThis::add(outboxView,QWidget::tr("This is the oubox view.\n It keeps the queued mails to send which can be reviewed by double clicking the entry.")); grid_3->addWidget( outboxView, 0, 0 ); mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) ); setCentralWidget(mailboxView); - mailboxView->setCurrentTab(0); } void EmailClient::compose() { @@ -323,20 +318,21 @@ void EmailClient::getNewMail() { status1Label->setText(currentAccount->accountName + " headers"); progressBar->reset(); //get any previous mails not downloaded and add to queue -/* mailDownloadList.clear(); + mailDownloadList.clear(); Email *mailPtr; item = (EmailListItem *) inboxView->firstChild(); while (item != NULL) { mailPtr = item->getMail(); if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) { mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); } item = (EmailListItem *) item->nextSibling(); - }*/ + } emailHandler->getMailHeaders(); + } void EmailClient::getAllNewMail() { @@ -350,17 +346,19 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk) Enclosure *ePtr; Email newMail; int thisMailId; emailHandler->parse(mail.rawMail, lineShift, &newMail); - mailconf->setGroup(newMail.id); - if (fromDisk) { + 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 + } + else + { //mail arrived from server newMail.serverId = mail.serverId; newMail.size = mail.size; newMail.downloaded = mail.downloaded; @@ -377,23 +375,25 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk) mailIdCount++; //set server count, so that if the user aborts, the new //header is not reloaded - if (currentAccount->synchronize) + if ((currentAccount)&&(currentAccount->synchronize)) currentAccount->lastServerMailCount++; mailconf->writeEntry("internalmailid", thisMailId); mailconf->writeEntry("downloaded", newMail.downloaded); mailconf->writeEntry("size", (int) newMail.size); mailconf->writeEntry("serverid", newMail.serverId); - addressList->addContact(newMail.fromMail, newMail.from); - } else if (!fromDisk) { //body to header arrived - mailconf->writeEntry("downloaded", TRUE); + //addressList->addContact(newMail.fromMail, newMail.from); } + + mailconf->writeEntry("downloaded", newMail.downloaded); + QString stringMailId; stringMailId.setNum(thisMailId); - //se if any attatchments needs to be stored + //see if any attatchments needs to be stored + for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) { QString stringId; stringId.setNum(ePtr->id); @@ -425,33 +425,40 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk) ePtr->path = mailconf->readEntry("path_" + stringId); } } } - if (!previewingMail && !fromDisk) { + + bool found=false; + + if (!fromDisk) + { + Email *mailPtr; item = (EmailListItem *) inboxView->firstChild(); - while (item != NULL) { + while ((item != NULL)&&(!found)) + { mailPtr = item->getMail(); if (mailPtr->id == newMail.id) { item->setMail(newMail); emit mailUpdated(item->getMail()); + found = true; } item = (EmailListItem *) item->nextSibling(); } - } else { - item = new EmailListItem(inboxView, newMail, TRUE); - if (!newMail.downloaded) - mailDownloadList.sizeInsert(newMail.serverId, newMail.size); } + if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE); + + /*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 (!previewingMail) {*/ if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) { emit newCaption("Mailit - " + currentAccount->accountName); getNewMail(); return; @@ -465,16 +472,16 @@ void EmailClient::allMailArrived(int count) progressBar->reset(); return; } - } + //} // all headers downloaded from server, start downloading remaining mails previewingMail = FALSE; status1Label->setText(currentAccount->accountName); progressBar->reset(); - emailHandler->getMailByList(&mailDownloadList); + //emailHandler->getMailByList(&mailDownloadList); mailboxView->setCurrentTab(0); } @@ -540,9 +547,9 @@ void EmailClient::popError(int code) } void EmailClient::inboxItemSelected() { - killTimer(timerID); + //killTimer(timerID); item = (EmailListItem*) inboxView->selectedItem(); if (item != NULL) { emit viewEmail(inboxView, item->getMail()); @@ -550,9 +557,9 @@ void EmailClient::inboxItemSelected() } void EmailClient::outboxItemSelected() { - killTimer(timerID); + //killTimer(timerID); item = (EmailListItem*) outboxView->selectedItem(); if (item != NULL) { emit viewEmail(outboxView, item->getMail()); @@ -566,10 +573,8 @@ void EmailClient::readMail() int start, stop; QString s, del; QFile f(getPath(FALSE) + "inbox.txt"); -// QFileInfo fi(f); - //qDebug( f.name()); if ( f.open(IO_ReadOnly) ) { // file opened successfully QTextStream t( &f ); // use a text stream s = t.read(); @@ -621,14 +626,11 @@ void EmailClient::saveMail(QString fileName, QListView *view) qWarning("could not open file"); return; } item = (EmailListItem *) view->firstChild(); - //qDebug (QString("Write : ") ); QTextStream t(&f); while (item != NULL) { mail = item->getMail(); - //qDebug(mail->rawMail); - //qDebug(mail->recipients.first()); t << mail->rawMail; mailconf->setGroup(mail->id); mailconf->writeEntry("mailread", mail->read); @@ -661,112 +663,87 @@ QString EmailClient::getPath(bool enclosurePath) } void EmailClient::readSettings() { - TextParser *p; - QString s; - int pos, accountPos, y; - QFile f( getPath(FALSE) + "settings.txt"); - - if ( f.open(IO_ReadOnly) ) { // file opened successfully - QTextStream t( &f ); // use a text stream - s = t.read(); - f.close(); - - p = new TextParser(s, "\n"); - - accountPos = 0; - while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) { - accountPos++; - if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 ) - account.accountName = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1) - account.name = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1) - account.emailAddress = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1) - account.popUserName = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1) - account.popPasswd = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1) - account.popServer = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1) - account.smtpServer = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) { - s = p->getString(& ++pos, 'z', TRUE); - account.id = s.toInt(); - } + int y,acc_count, accountPos=0; + mailconf->setGroup("mailitglobal"); + acc_count=mailconf->readNumEntry("Accounts",0); + + for (int accountPos = 0;accountPos<acc_count ; accountPos++) + { + mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ... + account.accountName = mailconf->readEntry("AccName",""); + account.name = mailconf->readEntry("UserName",""); + account.emailAddress = mailconf->readEntry("Email",""); + account.popUserName = mailconf->readEntry("POPUser",""); + account.popPasswd = mailconf->readEntryCrypt("POPPassword",""); + account.popServer = mailconf->readEntry("POPServer",""); + account.smtpServer = mailconf->readEntry("SMTPServer",""); + account.id = mailconf->readNumEntry("AccountId",0); + account.syncLimit = mailconf->readNumEntry("HeaderLimit",0); account.lastServerMailCount = 0; account.synchronize = FALSE; - if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) { - if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") { - account.synchronize = TRUE; - if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) { - s = p->getString(& ++pos, 'z', TRUE); - account.lastServerMailCount = s.toInt(); - } - } - } - if ( (pos = p->find("SYNCLIMIT",':', accountPos, TRUE)) != -1) { - account.syncLimit = p->getString(& ++pos, 'z', TRUE).toInt(); + account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes"); + if (account.synchronize) + { + mailconf->readNumEntry("LASTSERVERMAILCOUNT",0); } - accountList.append(&account); } - delete p; - } + mailconf->setGroup("mailitglobal"); - if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) { + + if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) + { mailIdCount = y; } - if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) { + if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) + { accountIdCount = y; } } void EmailClient::saveSettings() { - - QString temp; - QFile f( getPath(FALSE) + "settings.txt"); + int acc_count=0; MailAccount *accountPtr; - if (! f.open(IO_WriteOnly) ) { - qWarning("could not save settings file"); + + if (!mailconf) + { + qWarning("could not save settings"); return; } - QTextStream t(&f); - t << "#Settings for OPIE Mailit program\n"; for (accountPtr = accountList.first(); accountPtr != 0; - accountPtr = accountList.next()) { - - t << "accountStart;\n"; - t << "AccountName: " + accountPtr->accountName + "\n"; - t << "Name: " + accountPtr->name + "\n"; - t << "Email: " + accountPtr->emailAddress + "\n"; - t << "POPUser: " + accountPtr->popUserName + "\n"; - t << "POPPAssword: " + accountPtr->popPasswd + "\n"; - t << "POPServer: " + accountPtr->popServer + "\n"; - t << "SMTPServer: " + accountPtr->smtpServer + "\n"; - t << "AccountId: " << accountPtr->id << "\n"; - if (accountPtr->synchronize) { - t << "Synchronize: Yes\n"; - t << "LastServerMailCount: "; - t << accountPtr->lastServerMailCount << "\n"; - } else { - t << "Synchronize: No\n"; + accountPtr = accountList.next()) + { + mailconf->setGroup("Account_"+QString::number(++acc_count)); + mailconf->writeEntry("AccName",accountPtr->accountName ); + mailconf->writeEntry("UserName",accountPtr->name); + mailconf->writeEntry("Email",accountPtr->emailAddress); + mailconf->writeEntry("POPUser",accountPtr->popUserName); + mailconf->writeEntryCrypt("POPPassword",accountPtr->popPasswd); + mailconf->writeEntry("POPServer",accountPtr->popServer); + mailconf->writeEntry("SMTPServer",accountPtr->smtpServer); + mailconf->writeEntry("AccountId",accountPtr->id); + if (accountPtr->synchronize) + { + mailconf->writeEntry("Synchronize","Yes"); + mailconf->writeEntry("HeaderLimit",accountPtr->syncLimit); + mailconf->writeEntry("LastServerMailCount",accountPtr->lastServerMailCount); + } + else + { + mailconf->writeEntry("Synchronize", "No"); } - t << "SyncLimit: "; - t << accountPtr->syncLimit << "\n"; - t << "accountEnd;\n"; } - f.close(); mailconf->setGroup("mailitglobal"); + mailconf->writeEntry("Accounts",acc_count); mailconf->writeEntry("mailidcount", mailIdCount); mailconf->writeEntry("accountidcount", accountIdCount); } diff --git a/noncore/net/mailit/emailhandler.cpp b/noncore/net/mailit/emailhandler.cpp index f6c6d60..b180051 100644 --- a/noncore/net/mailit/emailhandler.cpp +++ b/noncore/net/mailit/emailhandler.cpp @@ -103,20 +103,16 @@ void EmailHandler::getMail() popClient->removeSynchronize(); } headers = FALSE; - popClient->headersOnly(headers, 0); + //popClient->headersOnly(headers, 0); popClient->newConnection(mailAccount.popServer, 110); } void EmailHandler::getMailHeaders() { popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd); - if (mailAccount.synchronize) { - popClient->setSynchronize(mailAccount.lastServerMailCount); - } else { - popClient->removeSynchronize(); - } + mailAccount.synchronize ? popClient->setSynchronize(mailAccount.lastServerMailCount): popClient->removeSynchronize(); headers = TRUE; popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all popClient->newConnection(mailAccount.popServer, 110); @@ -134,16 +130,16 @@ void EmailHandler::getMailByList(MailList *mailList) popClient->newConnection(mailAccount.popServer, 110); popClient->setSelectedMails(mailList); } -void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete) +void EmailHandler::messageArrived(const QString &message, int id, uint size, bool incomplete) { Email mail; mail.rawMail = message; mail.serverId = id; mail.size = size; - mail.downloaded = complete; + mail.downloaded = incomplete; emit mailArrived(mail, FALSE); } @@ -185,8 +181,9 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail) mail->from = mail->from.left(mail->from.length() - 1); mail->from = mail->from.right(mail->from.length() - 1); } pos++; + mail->fromMail = p.getString(&pos, '>', false); } else { if ((p.separatorAt(pos) == '<') || (p.separatorAt(pos) == ' ')) //No name.. nasty @@ -198,30 +195,49 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail) mail->from=mail->fromMail; } } - //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: - if ((pos = p.find("TO",':', 0, TRUE)) != -1) + 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)!='-') { pos++; + mail->recipients.append(p.getString(&pos, '\r', TRUE)); + } + /*else { + if ((p.separatorAt(pos) == '<')|| (p.separatorAt(pos) == ' ')) //No name.. nasty + pos++; + pos++; + mail->fromMail = p.getString(&pos, 'z', TRUE); + if (mail->fromMail.at(mail->fromMail.length()-1) == '>') + mail->fromMail.truncate(mail->fromMail.length() - 1); + mail->from=mail->fromMail; + } mail->recipients.append (p.getString(&pos, 'z', TRUE) ); + }*/ } + // + //if (pos==-1) mail->recipients.append (tr("undisclosed recipients") ); - //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: if ((pos = p.find("CC",':', 0, TRUE)) != -1) { 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); + mail->date = p.getString(&pos, 'z', TRUE); } diff --git a/noncore/net/mailit/emaillistitem.cpp b/noncore/net/mailit/emaillistitem.cpp index a325766..b925a1c 100644 --- a/noncore/net/mailit/emaillistitem.cpp +++ b/noncore/net/mailit/emaillistitem.cpp @@ -37,13 +37,15 @@ EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox) 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() diff --git a/noncore/net/mailit/mailitwindow.cpp b/noncore/net/mailit/mailitwindow.cpp index ef5fc09..7181adf 100644 --- a/noncore/net/mailit/mailitwindow.cpp +++ b/noncore/net/mailit/mailitwindow.cpp @@ -16,18 +16,19 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ +#include <qwhatsthis.h> #include "mailitwindow.h" MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl) - : QMainWindow(parent, name, fl) + : QMainWindow(parent, name, WStyle_ContextHelp) { currentCaption = "Mailit"; setCaption(tr(currentCaption)); views = new QWidgetStack(this); setCentralWidget(views); - + QWhatsThis::add(views,tr("Central view area")); emailClient = new EmailClient(views, "client"); writeMail = new WriteMail(views, "writing"); readMail = new ReadMail(views, "reading"); @@ -139,27 +140,4 @@ void MailItWindow::setDocument(const QString &_address) compose(); writeMail->setRecipient(address); } - -/*void MailItWindow::reply(Email& mail) -{ - qDebug("####EmailClient: 0 reached"); - composeReply(mail,(bool&)FALSE); -} - -void MailItWindow::replyAll(Email& mail) -{ - qDebug("####EmailClient: 1 reached"); - composeReply(mail,(bool&)TRUE); -} - -void MailItWindow::forward(Email& mail) -{ - qDebug("####EmailClient: 2 reached"); -} - -void MailItWindow::remove(Email&) -{ - qDebug("####EmailClient: 3 reached"); - //emit removeItem(eli,(bool&)TRUE); -} */
\ No newline at end of file diff --git a/noncore/net/mailit/popclient.cpp b/noncore/net/mailit/popclient.cpp index f9cc337..67306be 100644 --- a/noncore/net/mailit/popclient.cpp +++ b/noncore/net/mailit/popclient.cpp @@ -118,9 +118,8 @@ void PopClient::incomingData() // if ( !socket->canReadLine() ) // return; response = socket->readLine(); - //qDebug(response +" %d", status); switch(status) { //logging in case Init: { @@ -130,20 +129,10 @@ void PopClient::incomingData() if( start >= 0 && end > start ) { timeStamp = response.mid( start , end - start + 1); md5Source = timeStamp + popPassword; - //qDebug( md5Source); -// for( int i = 0; i < md5Source.length(); i++) { -// buff[i] = (QChar)md5Source[i]; -// } md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]); -// md5_buffer(char const *buffer, unsigned int len, char *digest); - -// MD5_Init( &ctx); -// MD5_Update( &ctx, buff, sizeof( buff) ); -// MD5_Final( md5Digest, &ctx); -// MD5( buff, md5Source.length(), md5Digest); for(int j =0;j < MD5_DIGEST_LENGTH ;j++) { printf("%x", md5Digest[j]); @@ -163,9 +152,9 @@ void PopClient::incomingData() } break; } - //password shhh. don't tell anyone (implement APOP...) + case Pass: { *stream << "PASS " << popPassword << "\r\n"; status = Stat; break; @@ -247,9 +236,10 @@ void PopClient::incomingData() } //Read message number x, count upwards to messageCount case Retr: { if (status != Quit) { - if (!preview || mailSize <= headerLimit) { + if (mailSize <= headerLimit) + { *stream << "RETR " << messageCount << "\r\n"; } else { //only header *stream << "TOP " << messageCount << " 0\r\n"; } @@ -282,9 +272,11 @@ void PopClient::incomingData() if (x == -1) { break; } else { //message reach entire size //complete mail downloaded - if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){ + //if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){ + if ( mailSize <= headerLimit) + { emit newMessage(message, messageCount-1, mailSize, TRUE); } else { //incomplete mail downloaded emit newMessage(message, messageCount-1, mailSize, FALSE); } diff --git a/noncore/net/mailit/readmail.cpp b/noncore/net/mailit/readmail.cpp index dc98a6f..4eae7f6 100644 --- a/noncore/net/mailit/readmail.cpp +++ b/noncore/net/mailit/readmail.cpp @@ -58,38 +58,48 @@ void ReadMail::init() //reply dependant on viewing inbox replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ), QString::null, 0, this, 0 ); connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) ); + replyButton->setWhatsThis(tr("Click here to reply to the selected mail")); forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ), QString::null, 0, this, 0 ); connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) ); + forwardButton->setWhatsThis(tr("Click here to forward the selected mail")); previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 ); connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) ); previousButton->addTo(bar); previousButton->addTo(viewMenu); + previousButton->setWhatsThis(tr("Read the previous mail in the list")); nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 ); connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) ); nextButton->addTo(bar); nextButton->addTo(viewMenu); + previousButton->setWhatsThis(tr("Read the next mail in the list")); - attatchmentsButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 ); - connect( attatchmentsButton, SIGNAL( activated() ), this, - SLOT( viewAttatchments() ) ); - attatchmentsButton->addTo(bar); - attatchmentsButton->addTo(viewMenu); + attachmentButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 ); + connect( attachmentButton, SIGNAL( activated() ), this, + SLOT( viewAttachments() ) ); + attachmentButton->addTo(bar); + attachmentButton->addTo(viewMenu); + attachmentButton->setWhatsThis(tr("Click here to add attachments to your mail")); plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "DocsIcon" ), QString::null, 0, this, 0, TRUE); connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) ); plainTextButton->addTo(bar); plainTextButton->addTo(viewMenu); + plainTextButton->setWhatsThis(tr("The mail view has 2 modes:\n" + "<LI><B>RichText</B> shows the mail as HTML with reach features (no standard line breaks)</LI>" + "<LI><B>Plain</B> shows the mail as standard plain text</LI>" + "Click here to switch between those view modes" )); deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); deleteButton->addTo(bar); deleteButton->addTo(mailMenu); + deleteButton->setWhatsThis(tr("Click here to remove the selected mail")); viewMenu->insertItem(Resource::loadPixmap("close"), "Close", this, SLOT(close())); emailView = new QTextView( this, "emailView" ); @@ -247,10 +257,10 @@ void ReadMail::updateView() emailView->setText(text); } if (mail->files.count() == 0) - attatchmentsButton->setEnabled(FALSE); - else attatchmentsButton->setEnabled(TRUE); + attachmentButton->setEnabled(FALSE); + else attachmentButton->setEnabled(TRUE); setCaption("Examining mail: " + mail->subject); } @@ -338,9 +348,9 @@ void ReadMail::shiftText() plainTxt = ! plainTxt; updateView(); } -void ReadMail::viewAttatchments() +void ReadMail::viewAttachments() { viewAtt->update(mail, inbox); viewAtt->showMaximized(); } diff --git a/noncore/net/mailit/readmail.h b/noncore/net/mailit/readmail.h index 0fe0646..df32c34 100644 --- a/noncore/net/mailit/readmail.h +++ b/noncore/net/mailit/readmail.h @@ -56,9 +56,9 @@ public slots: void next(); void previous(); void deleteItem(); void shiftText(); - void viewAttatchments(); + void viewAttachments(); void reply(); void forward(); private: @@ -79,9 +79,9 @@ private: QMimeSourceFactory *mime; QAction *plainTextButton; QAction *nextButton; QTextView *emailView; - QAction *attatchmentsButton; + QAction *attachmentButton; QAction *previousButton; QAction *replyButton; QAction *forwardButton; }; diff --git a/noncore/net/mailit/smtpclient.cpp b/noncore/net/mailit/smtpclient.cpp index b2e38e5..8a51a5b 100644 --- a/noncore/net/mailit/smtpclient.cpp +++ b/noncore/net/mailit/smtpclient.cpp @@ -86,25 +86,22 @@ void SmtpClient::incomingData() if (!socket->canReadLine()) return; response = socket->readLine(); - //qDebug(response); switch(status) { case Init: { if (response[0] == '2') { status = From; mailPtr = mailList.first(); *stream << "HELO there\r\n"; - //qDebug("HELO"); } else errorHandling(ErrUnknownResponse); break; } case From: { if (response[0] == '2') { *stream << "MAIL FROM: " << mailPtr->from << "\r\n"; status = Recv; - //qDebug("MAIL FROM: "+mailPtr->from); } else errorHandling(ErrUnknownResponse); break; } case Recv: { @@ -112,9 +109,8 @@ void SmtpClient::incomingData() it = mailPtr->to.begin(); if (it == NULL) errorHandling(ErrUnknownResponse); *stream << "RCPT TO: " << *it << ">\r\n"; - //qDebug("RCPT TO: "+ *it); status = MRcv; } else errorHandling(ErrUnknownResponse); break; } @@ -122,9 +118,8 @@ void SmtpClient::incomingData() if (response[0] == '2') { it++; if ( it != mailPtr->to.end() ) { *stream << "RCPT TO: <" << *it << ">\r\n"; - //qDebug("RCPT TO: "+ *it); break; } else { status = Data; } @@ -133,9 +128,8 @@ void SmtpClient::incomingData() case Data: { if (response[0] == '2') { *stream << "DATA\r\n"; status = Body; - //qDebug("DATA"); emit updateStatus(tr("Sending: ") + mailPtr->subject); } else errorHandling(ErrUnknownResponse); break; } @@ -147,9 +141,8 @@ void SmtpClient::incomingData() status = From; } else { status = Quit; } - //qDebug("BODY"); } else errorHandling(ErrUnknownResponse); break; } case Quit: { @@ -162,9 +155,8 @@ void SmtpClient::incomingData() emit mailSent(); mailList.clear(); sending = FALSE; socket->close(); - //qDebug("QUIT"); } else errorHandling(ErrUnknownResponse); break; } } diff --git a/noncore/net/mailit/textparser.cpp b/noncore/net/mailit/textparser.cpp index f082417..3fa5f6e 100644 --- a/noncore/net/mailit/textparser.cpp +++ b/noncore/net/mailit/textparser.cpp @@ -61,29 +61,39 @@ void TextParser::createSeparators() /* Returns pos of given search criteria, -1 if not found */ int TextParser::find(QString target, QChar sep, int pos, bool upperCase) { + + t_splitElm parsstr; + QString pString; + int atLine = 0, atPosElm = 0; - for (int x = 0; x < totalElmCount; x++) { - if (x >= pos) { - if (upperCase) { - if ((splitDone[atLine].elm[atPosElm].str.upper() == target) && - (splitDone[atLine].elm[atPosElm].separator == sep)) - return x; - } else { - if ((splitDone[atLine].elm[atPosElm].str == target) && - (splitDone[atLine].elm[atPosElm].separator == sep)) - return x; + 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; } - atPosElm++; - if (atPosElm >= splitDone[atLine].elmCount) { //new Line + if ((pString == target) && (parsstr.separator == sep)) + { + return x; + } + if (atPosElm >= splitDone[atLine].elmCount) + { //new Line atLine++; atPosElm = 0; } } - return -1; } int TextParser::elmCount() diff --git a/noncore/net/mailit/viewatt.cpp b/noncore/net/mailit/viewatt.cpp index b6f5015..21885c2 100644 --- a/noncore/net/mailit/viewatt.cpp +++ b/noncore/net/mailit/viewatt.cpp @@ -18,8 +18,9 @@ ** **********************************************************************/ #include "resource.h" #include "viewatt.h" +#include <qwhatsthis.h> #include <qpe/applnk.h> #include <qpe/mimetype.h> ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f) @@ -30,14 +31,16 @@ ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f) setToolBarsMovable( FALSE ); bar = new QToolBar(this); installButton = new QAction( tr( "Install" ), Resource::loadPixmap( "exec" ), QString::null, CTRL + Key_C, this, 0 ); connect(installButton, SIGNAL(activated()), this, SLOT(install()) ); + installButton->setWhatsThis(tr("Click here to install the attachment to your Documents")); listView = new QListView(this, "AttView"); listView->addColumn( "Attatchment" ); listView->addColumn( "Type" ); listView->addColumn( "Installed" ); setCentralWidget(listView); + QWhatsThis::add(listView,QWidget::tr("This is an overview about all attachments in the mail")); } void ViewAtt::update(Email *mailIn, bool inbox) { diff --git a/noncore/net/mailit/writemail.cpp b/noncore/net/mailit/writemail.cpp index a9dcb02..0336c83 100644 --- a/noncore/net/mailit/writemail.cpp +++ b/noncore/net/mailit/writemail.cpp @@ -17,8 +17,9 @@ ** not clear to you. ** **********************************************************************/ #include <qmessagebox.h> +#include <qwhatsthis.h> #include "writemail.h" #include <qpe/resource.h> WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl ) @@ -26,9 +27,9 @@ WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl ) { showingAddressList = FALSE; init(); - addAtt = new AddAtt(0, "Add Attatchments"); + addAtt = new AddAtt(0, "Add Attachments"); } WriteMail::~WriteMail() { @@ -63,21 +64,24 @@ void WriteMail::init() addMenu = new QPopupMenu(menu); menu->insertItem( tr( "&Add" ), addMenu); bar = new QToolBar(this); - attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0); - attatchButton->addTo(bar); - attatchButton->addTo(addMenu); - connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) ); + attachButton = new QAction(tr("Attachment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0); + attachButton->addTo(bar); + attachButton->addTo(addMenu); + connect( attachButton, SIGNAL( activated() ), this, SLOT( attachFile() ) ); + attachButton->setWhatsThis(tr("Click here to attach files to your mail")); confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0); confirmButton->addTo(bar); confirmButton->addTo(mailMenu); connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) ); + confirmButton->setWhatsThis(tr("This button puts your mail in the send queue")); newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0); newButton->addTo(mailMenu); connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) ); + newButton->setWhatsThis(tr("Click here to create a new mail")); widget = new QWidget(this, "widget"); grid = new QGridLayout( widget ); @@ -87,9 +91,8 @@ void WriteMail::init() recipientsBox->setCurrentItem(0); grid->addWidget( recipientsBox, 0, 0 ); connect(recipientsBox,SIGNAL(activated(int)),this, SLOT(changeRecipients(int))); - subjetLabel = new QLabel( widget, "subjetLabel" ); subjetLabel->setText( tr( "Subject:" ) ); grid->addWidget( subjetLabel, 1, 0 ); @@ -99,39 +102,44 @@ void WriteMail::init() grid->addWidget( ToolButton13_2, 1, 2 ); subjectInput = new QLineEdit( widget, "subjectInput" ); grid->addWidget( subjectInput, 1, 1 ); + QWhatsThis::add(subjectInput,QWidget::tr("The mail subject should be entered here")); toInput = new QLineEdit( widget, "toInput" ); grid->addWidget( toInput, 0, 1 ); + QWhatsThis::add(recipientsBox,QWidget::tr("Recipients can be entered here")); ccInput = new QLineEdit( widget, "ccInput" ); ccInput->hide(); grid->addWidget( ccInput, 0, 1 ); - + QWhatsThis::add(ccInput,QWidget::tr("If you would like to send copies of your mail they can be entered here")); addressButton = new QToolButton( widget, "addressButton" ); addressButton->setPixmap( Resource::loadPixmap("AddressBook") ); addressButton->setToggleButton(TRUE); grid->addWidget( addressButton, 0, 2 ); connect(addressButton, SIGNAL(clicked()), this, SLOT(getAddress()) ); + QWhatsThis::add(addressButton,QWidget::tr("This button opens the address selector with all mail adresses from your OPIE addressbook")); emailInput = new QMultiLineEdit( widget, "emailInput" ); grid->addMultiCellWidget( emailInput, 2, 2, 0, 2); - + QWhatsThis::add(recipientsBox,QWidget::tr("Enter your mail text here")); addressView = new QListView( widget, "addressView"); addressView->addColumn("Name"); addressView->addColumn("EMail"); addressView->setAllColumnsShowFocus(TRUE); addressView->setMultiSelection(TRUE); addressView->hide(); grid->addMultiCellWidget( addressView, 3, 3, 0, 2); + QWhatsThis::add(recipientsBox,QWidget::tr("Chose the recipients from this list")); okButton = new QToolButton(bar, "ok"); okButton->setPixmap( Resource::loadPixmap("enter") ); okButton->hide(); connect(okButton, SIGNAL(clicked()), this, SLOT(addRecipients()) ); + QWhatsThis::add(okButton,QWidget::tr("Queue your mail by clicking here")); setCentralWidget(widget); } @@ -142,9 +150,9 @@ void WriteMail::reject() // need to insert date void WriteMail::accept() { - QStringList attatchedFiles, attatchmentsType; + QStringList attachedFiles, attachmentsType; int idCount = 0; if (toInput->text() == "") { @@ -195,15 +203,15 @@ void WriteMail::accept() mail.rawMail += "\nSubject: "; mail.rawMail += mail.subject; mail.rawMail += "\n\n"; - attatchedFiles = addAtt->returnAttatchedFiles(); - attatchmentsType = addAtt->returnFileTypes(); + attachedFiles = addAtt->returnattachedFiles(); + attachmentsType = addAtt->returnFileTypes(); - QStringList::Iterator itType = attatchmentsType.begin(); + QStringList::Iterator itType = attachmentsType.begin(); Enclosure e; - for ( QStringList::Iterator it = attatchedFiles.begin(); it != attatchedFiles.end(); ++it ) { + for ( QStringList::Iterator it = attachedFiles.begin(); it != attachedFiles.end(); ++it ) { e.id = idCount; e.originalName = (*it).latin1(); e.contentType = (*itType).latin1(); e.contentAttribute = (*itType).latin1(); @@ -235,9 +243,9 @@ void WriteMail::getAddress() emailInput->show(); } } -void WriteMail::attatchFile() +void WriteMail::attachFile() { addAtt->showMaximized(); } @@ -255,9 +263,9 @@ void WriteMail::reply(Email replyMail, bool replyAll) subjectInput->setText(tr("Re: ") + mail.subject); pos = 0; - mail.body.insert(pos, ">>"); + mail.body.insert(pos, ">"); while (pos != -1) { pos = mail.body.find('\n', pos); if (pos != -1) mail.body.insert(++pos, ">>"); diff --git a/noncore/net/mailit/writemail.h b/noncore/net/mailit/writemail.h index f193b13..921f27e 100644 --- a/noncore/net/mailit/writemail.h +++ b/noncore/net/mailit/writemail.h @@ -54,9 +54,9 @@ signals: public slots: void getAddress(); - void attatchFile(); + void attachFile(); void addRecipients(); void newMail(); void accept(); void reject(); @@ -78,9 +78,9 @@ private: QListView *addressView; QToolButton *okButton; QWidget *widget; - QAction *attatchButton; + QAction *attachButton; QAction *confirmButton; QAction *newButton; QLabel* subjetLabel; QToolButton* ToolButton13_2; diff --git a/noncore/unsupported/mailit/addatt.cpp b/noncore/unsupported/mailit/addatt.cpp index d268f1f..daefac6 100644 --- a/noncore/unsupported/mailit/addatt.cpp +++ b/noncore/unsupported/mailit/addatt.cpp @@ -55,15 +55,15 @@ FileItem::~FileItem() AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f) : QDialog(parent, name, f) { - setCaption("Adding attatchments"); + setCaption("Adding attachments"); QGridLayout *top = new QGridLayout(this, 1,1 ); QHBox *buttons=new QHBox(this); /*fileCategoryButton = new QPushButton(this);*/ - attatchButton = new QPushButton(tr("Attatch..."), buttons); + attachButton = new QPushButton(tr("attach..."), buttons); removeButton = new QPushButton(tr("Remove"), buttons); /*fileCategories = new QPopupMenu(fileCategoryButton); fileCategoryButton->setPopup(fileCategories); @@ -77,29 +77,29 @@ AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f) top->addWidget(fileCategoryButton, 0, 0);*/ top->addWidget(buttons,1,0); - //buttons->addWidget(attatchButton,0,0); + //buttons->addWidget(attachButton,0,0); //buttons->addWidget(removeButton,0,1); //connect(fileCategories, SIGNAL(activated(int)), this, // SLOT(fileCategorySelected(int)) );*/ - connect(attatchButton, SIGNAL(clicked()), this, - SLOT(addAttatchment()) ); + connect(attachButton, SIGNAL(clicked()), this, + SLOT(addattachment()) ); connect(removeButton, SIGNAL(clicked()), this, - SLOT(removeAttatchment()) ); + SLOT(removeattachment()) ); /*listView = new QListView(this, "AttView"); listView->addColumn("Documents");* connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this, - SLOT(addAttatchment()) );*/ + SLOT(addattachment()) );*/ attView = new QListView(this, "Selected"); attView->addColumn(tr("Attached")); attView->addColumn(tr("File type")); connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this, - SLOT(removeAttatchment()) ); + SLOT(removeattachment()) ); //top->addWidget(ofs, 0,0); top->addWidget(attView, 0,0); @@ -120,9 +120,9 @@ void AddAtt::clear() fileCategoryButton->setText(fileCategories->text(id)); getFiles(); }*/ -void AddAtt::addAttatchment() +void AddAtt::addattachment() { OFileDialog ofs("Attachments",this,0,0,"/root/Documents"); ofs.showMaximized(); @@ -137,9 +137,9 @@ void AddAtt::addAttatchment() modified = TRUE; } } -void AddAtt::removeAttatchment() +void AddAtt::removeattachment() { if (attView->selectedItem() != NULL) { attView->takeItem(attView->selectedItem()); @@ -191,9 +191,9 @@ void AddAtt::getFiles() ++it; // goto next list element }*/ } -QStringList AddAtt::returnAttatchedFiles() +QStringList AddAtt::returnattachedFiles() { QFileInfo info; QStringList list; diff --git a/noncore/unsupported/mailit/addatt.h b/noncore/unsupported/mailit/addatt.h index fcf3279..a365947 100644 --- a/noncore/unsupported/mailit/addatt.h +++ b/noncore/unsupported/mailit/addatt.h @@ -48,25 +48,25 @@ class AddAtt : public QDialog Q_OBJECT public: AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0); - QStringList returnAttatchedFiles(); + QStringList returnattachedFiles(); QStringList returnFileTypes(); void getFiles(); void clear(); public slots: //void fileCategorySelected(int); - void addAttatchment(); - void removeAttatchment(); + void addattachment(); + void removeattachment(); void reject(); void accept(); private: FileItem* item; QListView *attView; - QPushButton *attatchButton, *removeButton; + QPushButton *attachButton, *removeButton; QPopupMenu *fileCategories; bool modified; //QFileInfo *fi; diff --git a/noncore/unsupported/mailit/addresslist.cpp b/noncore/unsupported/mailit/addresslist.cpp index 8d9ab91..7d60ebf 100644 --- a/noncore/unsupported/mailit/addresslist.cpp +++ b/noncore/unsupported/mailit/addresslist.cpp @@ -120,9 +120,9 @@ void AddressList::read() QString lineEmail, lineName, email, name; OContactAccess m_contactdb("mailit"); OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 ); - //OContact* oc; + //OContact* oc;(*it).defaultEmail() for ( it = m_list.begin(); it != m_list.end(); ++it ) { //oc=(OContact*) it; diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp index ad1e0b4..23059cf 100644 --- a/noncore/unsupported/mailit/emailclient.cpp +++ b/noncore/unsupported/mailit/emailclient.cpp @@ -22,8 +22,9 @@ #include <qfile.h> #include <qcheckbox.h> #include <qmenubar.h> #include <qaction.h> +#include <qwhatsthis.h> #include <qpe/resource.h> #include "emailclient.h" QCollection::Item AccountList::newItem(QCollection::Item d) @@ -81,8 +82,9 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl ) lineShift = "\n"; readMail(); lineShift = "\r\n"; + mailboxView->setCurrentTab(0); //ensure that inbox has focus } EmailClient::~EmailClient() @@ -112,8 +114,9 @@ void EmailClient::init() connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)), status2Label, SLOT(setText(const QString &)) ); progressBar = new QProgressBar(statusBar); + connect(emailHandler, SIGNAL(mailboxSize(int)), this, SLOT(setTotalSize(int)) ); connect(emailHandler, SIGNAL(currentMailSize(int)), this, SLOT(setMailSize(int)) ); @@ -126,8 +129,9 @@ void EmailClient::init() setToolBarsMovable(FALSE); bar = new QToolBar(this); + QWhatsThis::add(bar,tr("Main operation toolbar")); bar->setHorizontalStretchable( TRUE ); mb = new QMenuBar( bar ); @@ -147,47 +151,36 @@ void EmailClient::init() bar = new QToolBar(this); getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar); - //connect(setAccountlButton, SIGNAL(activated()), this, SLOT(setCurrentAccount()) ); - // setAccountButton->addTo(bar); - //setAccountButton->addTo(mail); - - /*idCount = 0; - - for (MailAccount* accountPtr = accountList.first(); accountPtr != 0; - accountPtr = accountList.next()) { + QWhatsThis::add(getMailButton,tr("Click to download mail via all available accounts.\n Press and hold to select the desired account.")); - selectAccountMenu->insertItem(accountPtr->accountName,this, SLOT(selectAccount(int)), 0, idCount); - idCount++; - }*/ getMailButton->setPopup(selectAccountMenu); - - /*getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0); - connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) ); - getMailButton->addTo(bar);*/ - //getMailButton->addTo(mail); - sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendqueue"), QString::null, 0, this, 0); connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) ); sendMailButton->addTo(bar); sendMailButton->addTo(mail); + sendMailButton->setWhatsThis("Send mail queued in the outbox"); composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0); connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) ); composeButton->addTo(bar); composeButton->addTo(mail); + composeButton->setWhatsThis("Compose a new mail"); cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0); connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) ); cancelButton->addTo(mail); cancelButton->addTo(bar); cancelButton->setEnabled(FALSE); + cancelButton->setWhatsThis("Stop the currently active mail transfer"); + deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); deleteButton->addTo(bar); + deleteButton->setWhatsThis("Remove the currently selected eMail(s)"); mailboxView = new OTabWidget( this, "mailboxView" ); QWidget* widget = new QWidget( mailboxView, "widget" ); @@ -200,8 +193,10 @@ void EmailClient::init() inboxView->addColumn( tr( "Subject" ) ); inboxView->addColumn( tr( "Date" ) ); inboxView->setMinimumSize( QSize( 0, 0 ) ); inboxView->setAllColumnsShowFocus(TRUE); + QWhatsThis::add(inboxView,QWidget::tr("This is the inbox view.\n It keeps the fetched mail which can be viewed by double clicking the entry.\n" + " A blue attachment icon shows whether this mail has attachments.")); grid_2->addWidget( inboxView, 2, 0 ); mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) ); @@ -214,14 +209,14 @@ void EmailClient::init() outboxView->addColumn( tr( "To" ) ); outboxView->addColumn( tr( "Subject" ) ); outboxView->setAllColumnsShowFocus(TRUE); + QWhatsThis::add(outboxView,QWidget::tr("This is the oubox view.\n It keeps the queued mails to send which can be reviewed by double clicking the entry.")); grid_3->addWidget( outboxView, 0, 0 ); mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) ); setCentralWidget(mailboxView); - mailboxView->setCurrentTab(0); } void EmailClient::compose() { @@ -323,20 +318,21 @@ void EmailClient::getNewMail() { status1Label->setText(currentAccount->accountName + " headers"); progressBar->reset(); //get any previous mails not downloaded and add to queue -/* mailDownloadList.clear(); + mailDownloadList.clear(); Email *mailPtr; item = (EmailListItem *) inboxView->firstChild(); while (item != NULL) { mailPtr = item->getMail(); if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) { mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); } item = (EmailListItem *) item->nextSibling(); - }*/ + } emailHandler->getMailHeaders(); + } void EmailClient::getAllNewMail() { @@ -350,17 +346,19 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk) Enclosure *ePtr; Email newMail; int thisMailId; emailHandler->parse(mail.rawMail, lineShift, &newMail); - mailconf->setGroup(newMail.id); - if (fromDisk) { + 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 + } + else + { //mail arrived from server newMail.serverId = mail.serverId; newMail.size = mail.size; newMail.downloaded = mail.downloaded; @@ -377,23 +375,25 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk) mailIdCount++; //set server count, so that if the user aborts, the new //header is not reloaded - if (currentAccount->synchronize) + if ((currentAccount)&&(currentAccount->synchronize)) currentAccount->lastServerMailCount++; mailconf->writeEntry("internalmailid", thisMailId); mailconf->writeEntry("downloaded", newMail.downloaded); mailconf->writeEntry("size", (int) newMail.size); mailconf->writeEntry("serverid", newMail.serverId); - addressList->addContact(newMail.fromMail, newMail.from); - } else if (!fromDisk) { //body to header arrived - mailconf->writeEntry("downloaded", TRUE); + //addressList->addContact(newMail.fromMail, newMail.from); } + + mailconf->writeEntry("downloaded", newMail.downloaded); + QString stringMailId; stringMailId.setNum(thisMailId); - //se if any attatchments needs to be stored + //see if any attatchments needs to be stored + for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) { QString stringId; stringId.setNum(ePtr->id); @@ -425,33 +425,40 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk) ePtr->path = mailconf->readEntry("path_" + stringId); } } } - if (!previewingMail && !fromDisk) { + + bool found=false; + + if (!fromDisk) + { + Email *mailPtr; item = (EmailListItem *) inboxView->firstChild(); - while (item != NULL) { + while ((item != NULL)&&(!found)) + { mailPtr = item->getMail(); if (mailPtr->id == newMail.id) { item->setMail(newMail); emit mailUpdated(item->getMail()); + found = true; } item = (EmailListItem *) item->nextSibling(); } - } else { - item = new EmailListItem(inboxView, newMail, TRUE); - if (!newMail.downloaded) - mailDownloadList.sizeInsert(newMail.serverId, newMail.size); } + if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE); + + /*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 (!previewingMail) {*/ if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) { emit newCaption("Mailit - " + currentAccount->accountName); getNewMail(); return; @@ -465,16 +472,16 @@ void EmailClient::allMailArrived(int count) progressBar->reset(); return; } - } + //} // all headers downloaded from server, start downloading remaining mails previewingMail = FALSE; status1Label->setText(currentAccount->accountName); progressBar->reset(); - emailHandler->getMailByList(&mailDownloadList); + //emailHandler->getMailByList(&mailDownloadList); mailboxView->setCurrentTab(0); } @@ -540,9 +547,9 @@ void EmailClient::popError(int code) } void EmailClient::inboxItemSelected() { - killTimer(timerID); + //killTimer(timerID); item = (EmailListItem*) inboxView->selectedItem(); if (item != NULL) { emit viewEmail(inboxView, item->getMail()); @@ -550,9 +557,9 @@ void EmailClient::inboxItemSelected() } void EmailClient::outboxItemSelected() { - killTimer(timerID); + //killTimer(timerID); item = (EmailListItem*) outboxView->selectedItem(); if (item != NULL) { emit viewEmail(outboxView, item->getMail()); @@ -566,10 +573,8 @@ void EmailClient::readMail() int start, stop; QString s, del; QFile f(getPath(FALSE) + "inbox.txt"); -// QFileInfo fi(f); - //qDebug( f.name()); if ( f.open(IO_ReadOnly) ) { // file opened successfully QTextStream t( &f ); // use a text stream s = t.read(); @@ -621,14 +626,11 @@ void EmailClient::saveMail(QString fileName, QListView *view) qWarning("could not open file"); return; } item = (EmailListItem *) view->firstChild(); - //qDebug (QString("Write : ") ); QTextStream t(&f); while (item != NULL) { mail = item->getMail(); - //qDebug(mail->rawMail); - //qDebug(mail->recipients.first()); t << mail->rawMail; mailconf->setGroup(mail->id); mailconf->writeEntry("mailread", mail->read); @@ -661,112 +663,87 @@ QString EmailClient::getPath(bool enclosurePath) } void EmailClient::readSettings() { - TextParser *p; - QString s; - int pos, accountPos, y; - QFile f( getPath(FALSE) + "settings.txt"); - - if ( f.open(IO_ReadOnly) ) { // file opened successfully - QTextStream t( &f ); // use a text stream - s = t.read(); - f.close(); - - p = new TextParser(s, "\n"); - - accountPos = 0; - while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) { - accountPos++; - if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 ) - account.accountName = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1) - account.name = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1) - account.emailAddress = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1) - account.popUserName = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1) - account.popPasswd = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1) - account.popServer = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1) - account.smtpServer = p->getString(& ++pos, 'z', TRUE); - if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) { - s = p->getString(& ++pos, 'z', TRUE); - account.id = s.toInt(); - } + int y,acc_count, accountPos=0; + mailconf->setGroup("mailitglobal"); + acc_count=mailconf->readNumEntry("Accounts",0); + + for (int accountPos = 0;accountPos<acc_count ; accountPos++) + { + mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ... + account.accountName = mailconf->readEntry("AccName",""); + account.name = mailconf->readEntry("UserName",""); + account.emailAddress = mailconf->readEntry("Email",""); + account.popUserName = mailconf->readEntry("POPUser",""); + account.popPasswd = mailconf->readEntryCrypt("POPPassword",""); + account.popServer = mailconf->readEntry("POPServer",""); + account.smtpServer = mailconf->readEntry("SMTPServer",""); + account.id = mailconf->readNumEntry("AccountId",0); + account.syncLimit = mailconf->readNumEntry("HeaderLimit",0); account.lastServerMailCount = 0; account.synchronize = FALSE; - if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) { - if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") { - account.synchronize = TRUE; - if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) { - s = p->getString(& ++pos, 'z', TRUE); - account.lastServerMailCount = s.toInt(); - } - } - } - if ( (pos = p->find("SYNCLIMIT",':', accountPos, TRUE)) != -1) { - account.syncLimit = p->getString(& ++pos, 'z', TRUE).toInt(); + account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes"); + if (account.synchronize) + { + mailconf->readNumEntry("LASTSERVERMAILCOUNT",0); } - accountList.append(&account); } - delete p; - } + mailconf->setGroup("mailitglobal"); - if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) { + + if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) + { mailIdCount = y; } - if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) { + if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) + { accountIdCount = y; } } void EmailClient::saveSettings() { - - QString temp; - QFile f( getPath(FALSE) + "settings.txt"); + int acc_count=0; MailAccount *accountPtr; - if (! f.open(IO_WriteOnly) ) { - qWarning("could not save settings file"); + + if (!mailconf) + { + qWarning("could not save settings"); return; } - QTextStream t(&f); - t << "#Settings for OPIE Mailit program\n"; for (accountPtr = accountList.first(); accountPtr != 0; - accountPtr = accountList.next()) { - - t << "accountStart;\n"; - t << "AccountName: " + accountPtr->accountName + "\n"; - t << "Name: " + accountPtr->name + "\n"; - t << "Email: " + accountPtr->emailAddress + "\n"; - t << "POPUser: " + accountPtr->popUserName + "\n"; - t << "POPPAssword: " + accountPtr->popPasswd + "\n"; - t << "POPServer: " + accountPtr->popServer + "\n"; - t << "SMTPServer: " + accountPtr->smtpServer + "\n"; - t << "AccountId: " << accountPtr->id << "\n"; - if (accountPtr->synchronize) { - t << "Synchronize: Yes\n"; - t << "LastServerMailCount: "; - t << accountPtr->lastServerMailCount << "\n"; - } else { - t << "Synchronize: No\n"; + accountPtr = accountList.next()) + { + mailconf->setGroup("Account_"+QString::number(++acc_count)); + mailconf->writeEntry("AccName",accountPtr->accountName ); + mailconf->writeEntry("UserName",accountPtr->name); + mailconf->writeEntry("Email",accountPtr->emailAddress); + mailconf->writeEntry("POPUser",accountPtr->popUserName); + mailconf->writeEntryCrypt("POPPassword",accountPtr->popPasswd); + mailconf->writeEntry("POPServer",accountPtr->popServer); + mailconf->writeEntry("SMTPServer",accountPtr->smtpServer); + mailconf->writeEntry("AccountId",accountPtr->id); + if (accountPtr->synchronize) + { + mailconf->writeEntry("Synchronize","Yes"); + mailconf->writeEntry("HeaderLimit",accountPtr->syncLimit); + mailconf->writeEntry("LastServerMailCount",accountPtr->lastServerMailCount); + } + else + { + mailconf->writeEntry("Synchronize", "No"); } - t << "SyncLimit: "; - t << accountPtr->syncLimit << "\n"; - t << "accountEnd;\n"; } - f.close(); mailconf->setGroup("mailitglobal"); + mailconf->writeEntry("Accounts",acc_count); mailconf->writeEntry("mailidcount", mailIdCount); mailconf->writeEntry("accountidcount", accountIdCount); } diff --git a/noncore/unsupported/mailit/emailhandler.cpp b/noncore/unsupported/mailit/emailhandler.cpp index f6c6d60..b180051 100644 --- a/noncore/unsupported/mailit/emailhandler.cpp +++ b/noncore/unsupported/mailit/emailhandler.cpp @@ -103,20 +103,16 @@ void EmailHandler::getMail() popClient->removeSynchronize(); } headers = FALSE; - popClient->headersOnly(headers, 0); + //popClient->headersOnly(headers, 0); popClient->newConnection(mailAccount.popServer, 110); } void EmailHandler::getMailHeaders() { popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd); - if (mailAccount.synchronize) { - popClient->setSynchronize(mailAccount.lastServerMailCount); - } else { - popClient->removeSynchronize(); - } + mailAccount.synchronize ? popClient->setSynchronize(mailAccount.lastServerMailCount): popClient->removeSynchronize(); headers = TRUE; popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all popClient->newConnection(mailAccount.popServer, 110); @@ -134,16 +130,16 @@ void EmailHandler::getMailByList(MailList *mailList) popClient->newConnection(mailAccount.popServer, 110); popClient->setSelectedMails(mailList); } -void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete) +void EmailHandler::messageArrived(const QString &message, int id, uint size, bool incomplete) { Email mail; mail.rawMail = message; mail.serverId = id; mail.size = size; - mail.downloaded = complete; + mail.downloaded = incomplete; emit mailArrived(mail, FALSE); } @@ -185,8 +181,9 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail) mail->from = mail->from.left(mail->from.length() - 1); mail->from = mail->from.right(mail->from.length() - 1); } pos++; + mail->fromMail = p.getString(&pos, '>', false); } else { if ((p.separatorAt(pos) == '<') || (p.separatorAt(pos) == ' ')) //No name.. nasty @@ -198,30 +195,49 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail) mail->from=mail->fromMail; } } - //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: - if ((pos = p.find("TO",':', 0, TRUE)) != -1) + 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)!='-') { pos++; + mail->recipients.append(p.getString(&pos, '\r', TRUE)); + } + /*else { + if ((p.separatorAt(pos) == '<')|| (p.separatorAt(pos) == ' ')) //No name.. nasty + pos++; + pos++; + mail->fromMail = p.getString(&pos, 'z', TRUE); + if (mail->fromMail.at(mail->fromMail.length()-1) == '>') + mail->fromMail.truncate(mail->fromMail.length() - 1); + mail->from=mail->fromMail; + } mail->recipients.append (p.getString(&pos, 'z', TRUE) ); + }*/ } + // + //if (pos==-1) mail->recipients.append (tr("undisclosed recipients") ); - //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: if ((pos = p.find("CC",':', 0, TRUE)) != -1) { 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); + mail->date = p.getString(&pos, 'z', TRUE); } diff --git a/noncore/unsupported/mailit/emaillistitem.cpp b/noncore/unsupported/mailit/emaillistitem.cpp index a325766..b925a1c 100644 --- a/noncore/unsupported/mailit/emaillistitem.cpp +++ b/noncore/unsupported/mailit/emaillistitem.cpp @@ -37,13 +37,15 @@ EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox) 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() diff --git a/noncore/unsupported/mailit/mailitwindow.cpp b/noncore/unsupported/mailit/mailitwindow.cpp index ef5fc09..7181adf 100644 --- a/noncore/unsupported/mailit/mailitwindow.cpp +++ b/noncore/unsupported/mailit/mailitwindow.cpp @@ -16,18 +16,19 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ +#include <qwhatsthis.h> #include "mailitwindow.h" MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl) - : QMainWindow(parent, name, fl) + : QMainWindow(parent, name, WStyle_ContextHelp) { currentCaption = "Mailit"; setCaption(tr(currentCaption)); views = new QWidgetStack(this); setCentralWidget(views); - + QWhatsThis::add(views,tr("Central view area")); emailClient = new EmailClient(views, "client"); writeMail = new WriteMail(views, "writing"); readMail = new ReadMail(views, "reading"); @@ -139,27 +140,4 @@ void MailItWindow::setDocument(const QString &_address) compose(); writeMail->setRecipient(address); } - -/*void MailItWindow::reply(Email& mail) -{ - qDebug("####EmailClient: 0 reached"); - composeReply(mail,(bool&)FALSE); -} - -void MailItWindow::replyAll(Email& mail) -{ - qDebug("####EmailClient: 1 reached"); - composeReply(mail,(bool&)TRUE); -} - -void MailItWindow::forward(Email& mail) -{ - qDebug("####EmailClient: 2 reached"); -} - -void MailItWindow::remove(Email&) -{ - qDebug("####EmailClient: 3 reached"); - //emit removeItem(eli,(bool&)TRUE); -} */
\ No newline at end of file diff --git a/noncore/unsupported/mailit/popclient.cpp b/noncore/unsupported/mailit/popclient.cpp index f9cc337..67306be 100644 --- a/noncore/unsupported/mailit/popclient.cpp +++ b/noncore/unsupported/mailit/popclient.cpp @@ -118,9 +118,8 @@ void PopClient::incomingData() // if ( !socket->canReadLine() ) // return; response = socket->readLine(); - //qDebug(response +" %d", status); switch(status) { //logging in case Init: { @@ -130,20 +129,10 @@ void PopClient::incomingData() if( start >= 0 && end > start ) { timeStamp = response.mid( start , end - start + 1); md5Source = timeStamp + popPassword; - //qDebug( md5Source); -// for( int i = 0; i < md5Source.length(); i++) { -// buff[i] = (QChar)md5Source[i]; -// } md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]); -// md5_buffer(char const *buffer, unsigned int len, char *digest); - -// MD5_Init( &ctx); -// MD5_Update( &ctx, buff, sizeof( buff) ); -// MD5_Final( md5Digest, &ctx); -// MD5( buff, md5Source.length(), md5Digest); for(int j =0;j < MD5_DIGEST_LENGTH ;j++) { printf("%x", md5Digest[j]); @@ -163,9 +152,9 @@ void PopClient::incomingData() } break; } - //password shhh. don't tell anyone (implement APOP...) + case Pass: { *stream << "PASS " << popPassword << "\r\n"; status = Stat; break; @@ -247,9 +236,10 @@ void PopClient::incomingData() } //Read message number x, count upwards to messageCount case Retr: { if (status != Quit) { - if (!preview || mailSize <= headerLimit) { + if (mailSize <= headerLimit) + { *stream << "RETR " << messageCount << "\r\n"; } else { //only header *stream << "TOP " << messageCount << " 0\r\n"; } @@ -282,9 +272,11 @@ void PopClient::incomingData() if (x == -1) { break; } else { //message reach entire size //complete mail downloaded - if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){ + //if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){ + if ( mailSize <= headerLimit) + { emit newMessage(message, messageCount-1, mailSize, TRUE); } else { //incomplete mail downloaded emit newMessage(message, messageCount-1, mailSize, FALSE); } diff --git a/noncore/unsupported/mailit/readmail.cpp b/noncore/unsupported/mailit/readmail.cpp index dc98a6f..4eae7f6 100644 --- a/noncore/unsupported/mailit/readmail.cpp +++ b/noncore/unsupported/mailit/readmail.cpp @@ -58,38 +58,48 @@ void ReadMail::init() //reply dependant on viewing inbox replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ), QString::null, 0, this, 0 ); connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) ); + replyButton->setWhatsThis(tr("Click here to reply to the selected mail")); forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ), QString::null, 0, this, 0 ); connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) ); + forwardButton->setWhatsThis(tr("Click here to forward the selected mail")); previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 ); connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) ); previousButton->addTo(bar); previousButton->addTo(viewMenu); + previousButton->setWhatsThis(tr("Read the previous mail in the list")); nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 ); connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) ); nextButton->addTo(bar); nextButton->addTo(viewMenu); + previousButton->setWhatsThis(tr("Read the next mail in the list")); - attatchmentsButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 ); - connect( attatchmentsButton, SIGNAL( activated() ), this, - SLOT( viewAttatchments() ) ); - attatchmentsButton->addTo(bar); - attatchmentsButton->addTo(viewMenu); + attachmentButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 ); + connect( attachmentButton, SIGNAL( activated() ), this, + SLOT( viewAttachments() ) ); + attachmentButton->addTo(bar); + attachmentButton->addTo(viewMenu); + attachmentButton->setWhatsThis(tr("Click here to add attachments to your mail")); plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "DocsIcon" ), QString::null, 0, this, 0, TRUE); connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) ); plainTextButton->addTo(bar); plainTextButton->addTo(viewMenu); + plainTextButton->setWhatsThis(tr("The mail view has 2 modes:\n" + "<LI><B>RichText</B> shows the mail as HTML with reach features (no standard line breaks)</LI>" + "<LI><B>Plain</B> shows the mail as standard plain text</LI>" + "Click here to switch between those view modes" )); deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); deleteButton->addTo(bar); deleteButton->addTo(mailMenu); + deleteButton->setWhatsThis(tr("Click here to remove the selected mail")); viewMenu->insertItem(Resource::loadPixmap("close"), "Close", this, SLOT(close())); emailView = new QTextView( this, "emailView" ); @@ -247,10 +257,10 @@ void ReadMail::updateView() emailView->setText(text); } if (mail->files.count() == 0) - attatchmentsButton->setEnabled(FALSE); - else attatchmentsButton->setEnabled(TRUE); + attachmentButton->setEnabled(FALSE); + else attachmentButton->setEnabled(TRUE); setCaption("Examining mail: " + mail->subject); } @@ -338,9 +348,9 @@ void ReadMail::shiftText() plainTxt = ! plainTxt; updateView(); } -void ReadMail::viewAttatchments() +void ReadMail::viewAttachments() { viewAtt->update(mail, inbox); viewAtt->showMaximized(); } diff --git a/noncore/unsupported/mailit/readmail.h b/noncore/unsupported/mailit/readmail.h index 0fe0646..df32c34 100644 --- a/noncore/unsupported/mailit/readmail.h +++ b/noncore/unsupported/mailit/readmail.h @@ -56,9 +56,9 @@ public slots: void next(); void previous(); void deleteItem(); void shiftText(); - void viewAttatchments(); + void viewAttachments(); void reply(); void forward(); private: @@ -79,9 +79,9 @@ private: QMimeSourceFactory *mime; QAction *plainTextButton; QAction *nextButton; QTextView *emailView; - QAction *attatchmentsButton; + QAction *attachmentButton; QAction *previousButton; QAction *replyButton; QAction *forwardButton; }; diff --git a/noncore/unsupported/mailit/smtpclient.cpp b/noncore/unsupported/mailit/smtpclient.cpp index b2e38e5..8a51a5b 100644 --- a/noncore/unsupported/mailit/smtpclient.cpp +++ b/noncore/unsupported/mailit/smtpclient.cpp @@ -86,25 +86,22 @@ void SmtpClient::incomingData() if (!socket->canReadLine()) return; response = socket->readLine(); - //qDebug(response); switch(status) { case Init: { if (response[0] == '2') { status = From; mailPtr = mailList.first(); *stream << "HELO there\r\n"; - //qDebug("HELO"); } else errorHandling(ErrUnknownResponse); break; } case From: { if (response[0] == '2') { *stream << "MAIL FROM: " << mailPtr->from << "\r\n"; status = Recv; - //qDebug("MAIL FROM: "+mailPtr->from); } else errorHandling(ErrUnknownResponse); break; } case Recv: { @@ -112,9 +109,8 @@ void SmtpClient::incomingData() it = mailPtr->to.begin(); if (it == NULL) errorHandling(ErrUnknownResponse); *stream << "RCPT TO: " << *it << ">\r\n"; - //qDebug("RCPT TO: "+ *it); status = MRcv; } else errorHandling(ErrUnknownResponse); break; } @@ -122,9 +118,8 @@ void SmtpClient::incomingData() if (response[0] == '2') { it++; if ( it != mailPtr->to.end() ) { *stream << "RCPT TO: <" << *it << ">\r\n"; - //qDebug("RCPT TO: "+ *it); break; } else { status = Data; } @@ -133,9 +128,8 @@ void SmtpClient::incomingData() case Data: { if (response[0] == '2') { *stream << "DATA\r\n"; status = Body; - //qDebug("DATA"); emit updateStatus(tr("Sending: ") + mailPtr->subject); } else errorHandling(ErrUnknownResponse); break; } @@ -147,9 +141,8 @@ void SmtpClient::incomingData() status = From; } else { status = Quit; } - //qDebug("BODY"); } else errorHandling(ErrUnknownResponse); break; } case Quit: { @@ -162,9 +155,8 @@ void SmtpClient::incomingData() emit mailSent(); mailList.clear(); sending = FALSE; socket->close(); - //qDebug("QUIT"); } else errorHandling(ErrUnknownResponse); break; } } diff --git a/noncore/unsupported/mailit/textparser.cpp b/noncore/unsupported/mailit/textparser.cpp index f082417..3fa5f6e 100644 --- a/noncore/unsupported/mailit/textparser.cpp +++ b/noncore/unsupported/mailit/textparser.cpp @@ -61,29 +61,39 @@ void TextParser::createSeparators() /* Returns pos of given search criteria, -1 if not found */ int TextParser::find(QString target, QChar sep, int pos, bool upperCase) { + + t_splitElm parsstr; + QString pString; + int atLine = 0, atPosElm = 0; - for (int x = 0; x < totalElmCount; x++) { - if (x >= pos) { - if (upperCase) { - if ((splitDone[atLine].elm[atPosElm].str.upper() == target) && - (splitDone[atLine].elm[atPosElm].separator == sep)) - return x; - } else { - if ((splitDone[atLine].elm[atPosElm].str == target) && - (splitDone[atLine].elm[atPosElm].separator == sep)) - return x; + 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; } - atPosElm++; - if (atPosElm >= splitDone[atLine].elmCount) { //new Line + if ((pString == target) && (parsstr.separator == sep)) + { + return x; + } + if (atPosElm >= splitDone[atLine].elmCount) + { //new Line atLine++; atPosElm = 0; } } - return -1; } int TextParser::elmCount() diff --git a/noncore/unsupported/mailit/viewatt.cpp b/noncore/unsupported/mailit/viewatt.cpp index b6f5015..21885c2 100644 --- a/noncore/unsupported/mailit/viewatt.cpp +++ b/noncore/unsupported/mailit/viewatt.cpp @@ -18,8 +18,9 @@ ** **********************************************************************/ #include "resource.h" #include "viewatt.h" +#include <qwhatsthis.h> #include <qpe/applnk.h> #include <qpe/mimetype.h> ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f) @@ -30,14 +31,16 @@ ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f) setToolBarsMovable( FALSE ); bar = new QToolBar(this); installButton = new QAction( tr( "Install" ), Resource::loadPixmap( "exec" ), QString::null, CTRL + Key_C, this, 0 ); connect(installButton, SIGNAL(activated()), this, SLOT(install()) ); + installButton->setWhatsThis(tr("Click here to install the attachment to your Documents")); listView = new QListView(this, "AttView"); listView->addColumn( "Attatchment" ); listView->addColumn( "Type" ); listView->addColumn( "Installed" ); setCentralWidget(listView); + QWhatsThis::add(listView,QWidget::tr("This is an overview about all attachments in the mail")); } void ViewAtt::update(Email *mailIn, bool inbox) { diff --git a/noncore/unsupported/mailit/writemail.cpp b/noncore/unsupported/mailit/writemail.cpp index a9dcb02..0336c83 100644 --- a/noncore/unsupported/mailit/writemail.cpp +++ b/noncore/unsupported/mailit/writemail.cpp @@ -17,8 +17,9 @@ ** not clear to you. ** **********************************************************************/ #include <qmessagebox.h> +#include <qwhatsthis.h> #include "writemail.h" #include <qpe/resource.h> WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl ) @@ -26,9 +27,9 @@ WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl ) { showingAddressList = FALSE; init(); - addAtt = new AddAtt(0, "Add Attatchments"); + addAtt = new AddAtt(0, "Add Attachments"); } WriteMail::~WriteMail() { @@ -63,21 +64,24 @@ void WriteMail::init() addMenu = new QPopupMenu(menu); menu->insertItem( tr( "&Add" ), addMenu); bar = new QToolBar(this); - attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0); - attatchButton->addTo(bar); - attatchButton->addTo(addMenu); - connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) ); + attachButton = new QAction(tr("Attachment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0); + attachButton->addTo(bar); + attachButton->addTo(addMenu); + connect( attachButton, SIGNAL( activated() ), this, SLOT( attachFile() ) ); + attachButton->setWhatsThis(tr("Click here to attach files to your mail")); confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0); confirmButton->addTo(bar); confirmButton->addTo(mailMenu); connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) ); + confirmButton->setWhatsThis(tr("This button puts your mail in the send queue")); newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0); newButton->addTo(mailMenu); connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) ); + newButton->setWhatsThis(tr("Click here to create a new mail")); widget = new QWidget(this, "widget"); grid = new QGridLayout( widget ); @@ -87,9 +91,8 @@ void WriteMail::init() recipientsBox->setCurrentItem(0); grid->addWidget( recipientsBox, 0, 0 ); connect(recipientsBox,SIGNAL(activated(int)),this, SLOT(changeRecipients(int))); - subjetLabel = new QLabel( widget, "subjetLabel" ); subjetLabel->setText( tr( "Subject:" ) ); grid->addWidget( subjetLabel, 1, 0 ); @@ -99,39 +102,44 @@ void WriteMail::init() grid->addWidget( ToolButton13_2, 1, 2 ); subjectInput = new QLineEdit( widget, "subjectInput" ); grid->addWidget( subjectInput, 1, 1 ); + QWhatsThis::add(subjectInput,QWidget::tr("The mail subject should be entered here")); toInput = new QLineEdit( widget, "toInput" ); grid->addWidget( toInput, 0, 1 ); + QWhatsThis::add(recipientsBox,QWidget::tr("Recipients can be entered here")); ccInput = new QLineEdit( widget, "ccInput" ); ccInput->hide(); grid->addWidget( ccInput, 0, 1 ); - + QWhatsThis::add(ccInput,QWidget::tr("If you would like to send copies of your mail they can be entered here")); addressButton = new QToolButton( widget, "addressButton" ); addressButton->setPixmap( Resource::loadPixmap("AddressBook") ); addressButton->setToggleButton(TRUE); grid->addWidget( addressButton, 0, 2 ); connect(addressButton, SIGNAL(clicked()), this, SLOT(getAddress()) ); + QWhatsThis::add(addressButton,QWidget::tr("This button opens the address selector with all mail adresses from your OPIE addressbook")); emailInput = new QMultiLineEdit( widget, "emailInput" ); grid->addMultiCellWidget( emailInput, 2, 2, 0, 2); - + QWhatsThis::add(recipientsBox,QWidget::tr("Enter your mail text here")); addressView = new QListView( widget, "addressView"); addressView->addColumn("Name"); addressView->addColumn("EMail"); addressView->setAllColumnsShowFocus(TRUE); addressView->setMultiSelection(TRUE); addressView->hide(); grid->addMultiCellWidget( addressView, 3, 3, 0, 2); + QWhatsThis::add(recipientsBox,QWidget::tr("Chose the recipients from this list")); okButton = new QToolButton(bar, "ok"); okButton->setPixmap( Resource::loadPixmap("enter") ); okButton->hide(); connect(okButton, SIGNAL(clicked()), this, SLOT(addRecipients()) ); + QWhatsThis::add(okButton,QWidget::tr("Queue your mail by clicking here")); setCentralWidget(widget); } @@ -142,9 +150,9 @@ void WriteMail::reject() // need to insert date void WriteMail::accept() { - QStringList attatchedFiles, attatchmentsType; + QStringList attachedFiles, attachmentsType; int idCount = 0; if (toInput->text() == "") { @@ -195,15 +203,15 @@ void WriteMail::accept() mail.rawMail += "\nSubject: "; mail.rawMail += mail.subject; mail.rawMail += "\n\n"; - attatchedFiles = addAtt->returnAttatchedFiles(); - attatchmentsType = addAtt->returnFileTypes(); + attachedFiles = addAtt->returnattachedFiles(); + attachmentsType = addAtt->returnFileTypes(); - QStringList::Iterator itType = attatchmentsType.begin(); + QStringList::Iterator itType = attachmentsType.begin(); Enclosure e; - for ( QStringList::Iterator it = attatchedFiles.begin(); it != attatchedFiles.end(); ++it ) { + for ( QStringList::Iterator it = attachedFiles.begin(); it != attachedFiles.end(); ++it ) { e.id = idCount; e.originalName = (*it).latin1(); e.contentType = (*itType).latin1(); e.contentAttribute = (*itType).latin1(); @@ -235,9 +243,9 @@ void WriteMail::getAddress() emailInput->show(); } } -void WriteMail::attatchFile() +void WriteMail::attachFile() { addAtt->showMaximized(); } @@ -255,9 +263,9 @@ void WriteMail::reply(Email replyMail, bool replyAll) subjectInput->setText(tr("Re: ") + mail.subject); pos = 0; - mail.body.insert(pos, ">>"); + mail.body.insert(pos, ">"); while (pos != -1) { pos = mail.body.find('\n', pos); if (pos != -1) mail.body.insert(++pos, ">>"); diff --git a/noncore/unsupported/mailit/writemail.h b/noncore/unsupported/mailit/writemail.h index f193b13..921f27e 100644 --- a/noncore/unsupported/mailit/writemail.h +++ b/noncore/unsupported/mailit/writemail.h @@ -54,9 +54,9 @@ signals: public slots: void getAddress(); - void attatchFile(); + void attachFile(); void addRecipients(); void newMail(); void accept(); void reject(); @@ -78,9 +78,9 @@ private: QListView *addressView; QToolButton *okButton; QWidget *widget; - QAction *attatchButton; + QAction *attachButton; QAction *confirmButton; QAction *newButton; QLabel* subjetLabel; QToolButton* ToolButton13_2; |