author | llornkcor <llornkcor> | 2003-06-09 01:37:23 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2003-06-09 01:37:23 (UTC) |
commit | 364e6e65b4c3b4ceec2b1b6688f2ca2b3dce4560 (patch) (side-by-side diff) | |
tree | 1be5d3150c2bda4b3a55f9e7d2529d73fe6d72db /noncore/net/mailit/emailclient.cpp | |
parent | 5ee1c7dff5679454d46e3c5bd5747c60ea63c959 (diff) | |
download | opie-364e6e65b4c3b4ceec2b1b6688f2ca2b3dce4560.zip opie-364e6e65b4c3b4ceec2b1b6688f2ca2b3dce4560.tar.gz opie-364e6e65b4c3b4ceec2b1b6688f2ca2b3dce4560.tar.bz2 |
patch from wim delvaux. fix from me
Diffstat (limited to 'noncore/net/mailit/emailclient.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/net/mailit/emailclient.cpp | 71 |
1 files changed, 38 insertions, 33 deletions
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp index da1226c..749a4e9 100644 --- a/noncore/net/mailit/emailclient.cpp +++ b/noncore/net/mailit/emailclient.cpp @@ -14,100 +14,100 @@ ** 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 <qapplication.h> #include <qmessagebox.h> #include <qvbox.h> #include <qfile.h> #include <qcheckbox.h> #include <qmenubar.h> #include <qaction.h> #include <qwhatsthis.h> #include <qpe/resource.h> #include "emailclient.h" #include "writemail.h" QCollection::Item AccountList::newItem(QCollection::Item d) { return dupl( (MailAccount *) d); } MailAccount* AccountList::dupl(MailAccount *in) { ac = new MailAccount(*in); return ac; } EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl ) : QMainWindow( parent, name, fl ) { emailHandler = new EmailHandler(); addressList = new AddressList(); sending = FALSE; receiving = FALSE; previewingMail = FALSE; mailIdCount = 1; accountIdCount = 1; allAccounts = FALSE; init(); connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) ); - connect(emailHandler, SIGNAL(smtpError(int)), this, - SLOT(smtpError(int)) ); - connect(emailHandler, SIGNAL(popError(int)), this, - SLOT(popError(int)) ); + connect(emailHandler, SIGNAL(smtpError(int,const QString &)), this, + SLOT(smtpError(int,const QString &)) ); + connect(emailHandler, SIGNAL(popError(int,const QString &)), this, + SLOT(popError(int,const QString &)) ); connect(inboxView, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(inboxItemSelected()) ); connect(outboxView, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(outboxItemSelected()) ); connect(inboxView, SIGNAL(pressed(QListViewItem *)), this, SLOT(inboxItemPressed()) ); connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemReleased()) ); connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this, SLOT(mailArrived(const Email &, bool)) ); connect(emailHandler, SIGNAL(mailTransfered(int)), this, SLOT(allMailArrived(int)) ); mailconf = new Config("mailit"); //In case Synchronize is not defined in settings.txt readSettings(); updateAccounts(); lineShift = "\n"; readMail(); lineShift = "\r\n"; mailboxView->setCurrentTab(0); //ensure that inbox has focus /*channel = new QCopChannel( "QPE/Application/mailit", this ); connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(receive(const QCString&, const QByteArray&)) );*/ } EmailClient::~EmailClient() { //needs to be moved from destructor to closewindow event saveMail(getPath(FALSE) + "inbox.txt", inboxView); //does not currently work. Defining outbox in the same //format as inbox is not a good solution as they have //different properties saveMail(getPath(FALSE) + "outbox.txt", outboxView); saveSettings(); mailconf->write(); delete mailconf; } void EmailClient::init() @@ -435,178 +435,183 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk) mailconf->writeEntry("filename_" + stringId, ePtr->name); mailconf->writeEntry("path_" + stringId, ePtr->path); } else { ePtr->saved = FALSE; mailconf->writeEntry("saved_" + stringId, ePtr->saved); } } else { ePtr->saved = mailconf->readBoolEntry("saved_" + stringId); ePtr->installed = mailconf->readBoolEntry("installed_" + stringId); if (ePtr->saved) { ePtr->name = mailconf->readEntry("filename_" + stringId); ePtr->path = mailconf->readEntry("path_" + stringId); } } } bool found=false; if (!fromDisk) { Email *mailPtr; item = (EmailListItem *) inboxView->firstChild(); while ((item != NULL)&&(!found)) { mailPtr = item->getMail(); if (mailPtr->id == newMail.id) { item->setMail(newMail); emit mailUpdated(item->getMail()); found = true; } 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 (!newMail.downloaded) mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/ mailboxView->setCurrentTab(0); } -void EmailClient::allMailArrived(int count) +void EmailClient::allMailArrived(int /*count*/) { // not previewing means all mailtransfer has been done /*if (!previewingMail) {*/ if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) { emit newCaption("Mailit - " + currentAccount->accountName); getNewMail(); return; } else { allAccounts = FALSE; receiving = FALSE; getMailButton->setEnabled(TRUE); cancelButton->setEnabled(FALSE); selectAccountMenu->setEnabled(TRUE); status1Label->setText("Idle"); progressBar->reset(); return; } //} // all headers downloaded from server, start downloading remaining mails previewingMail = FALSE; status1Label->setText(currentAccount->accountName); progressBar->reset(); mailboxView->setCurrentTab(0); } void EmailClient::moveMailFront(Email *mailPtr) { if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) { mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size); } } -void EmailClient::smtpError(int code) +void EmailClient::smtpError(int code, const QString & Msg) { QString temp; - if (code == ErrUnknownResponse) - temp = "Unknown response from server"; - - if (code == QSocket::ErrHostNotFound) - temp = "host not found"; - if (code == QSocket::ErrConnectionRefused) - temp = "connection refused"; - if (code == QSocket::ErrSocketRead) - temp = "socket packet error"; + if (code == ErrUnknownResponse) { + temp = tr("<qt>Unknown response from server</qt>"); + if( ! Msg.isEmpty() ) + temp += Msg; + } else if (code == QSocket::ErrHostNotFound) { + temp = tr("<qt>host not found</qt>"); + } else if (code == QSocket::ErrConnectionRefused) { + temp = tr("<qt>connection refused</qt>"); + } else if (code == QSocket::ErrSocketRead) { + temp = tr("<qt>socket packet error</qt>"); + } if (code != ErrCancel) { QMessageBox::warning(qApp->activeWindow(), "Sending error", temp, "OK\n"); } else { status2Label->setText("Aborted by user"); } sending = FALSE; sendMailButton->setEnabled(TRUE); cancelButton->setEnabled(FALSE); quedMessages.clear(); } -void EmailClient::popError(int code) +void EmailClient::popError(int code, const QString & Msg) { QString temp; - if (code == ErrUnknownResponse) - temp = "Unknown response from server"; - if (code == ErrLoginFailed) - temp = "Login failed\nCheck user name and password"; - - if (code == QSocket::ErrHostNotFound) - temp = "host not found"; - if (code == QSocket::ErrConnectionRefused) - temp = "connection refused"; - if (code == QSocket::ErrSocketRead) - temp = "socket packet error"; + if (code == ErrUnknownResponse) { + temp = tr("<qt>Unknown response from server</qt>"); + if( ! Msg.isEmpty() ) + temp += Msg; + } else if (code == ErrLoginFailed) { + temp = tr("<qt>Login failed\nCheck user name and password</qt>"); + } else if (code == QSocket::ErrHostNotFound) { + temp = tr("<qt>host not found</qt>"); + } else if (code == QSocket::ErrConnectionRefused) { + temp = tr("<qt>connection refused</qt>"); + } else if (code == QSocket::ErrSocketRead) { + temp = tr("<qt>socket packet error</qt>"); + } if (code != ErrCancel) { - QMessageBox::warning(qApp->activeWindow(), "Receiving error", temp, "OK\n"); + QMessageBox::warning(qApp->activeWindow(), tr("Receiving error"), temp, tr("OK\n")); + } else { status2Label->setText("Aborted by user"); } receiving = FALSE; getMailButton->setEnabled(TRUE); cancelButton->setEnabled(FALSE); selectAccountMenu->setEnabled(TRUE); } void EmailClient::inboxItemSelected() { //killTimer(timerID); item = (EmailListItem*) inboxView->selectedItem(); if (item != NULL) { emit viewEmail(inboxView, item->getMail()); } } void EmailClient::outboxItemSelected() { //killTimer(timerID); item = (EmailListItem*) outboxView->selectedItem(); if (item != NULL) { emit viewEmail(outboxView, item->getMail()); } } void EmailClient::readMail() { Email mail; int start, stop; QString s, del; QFile f(getPath(FALSE) + "inbox.txt"); if ( f.open(IO_ReadOnly) ) { // file opened successfully QTextStream t( &f ); // use a text stream s = t.read(); f.close(); start = 0; del = "\n.\n"; while ((uint) start < s.length()) { stop = s.find(del, start); @@ -853,185 +858,185 @@ void EmailClient::updateAccounts() this, SLOT(editAccount(int)), 0, idCount); selectAccountMenu->insertItem(accountPtr->accountName, this, SLOT(selectAccount(int)), 0, idCount); deleteAccountMenu->insertItem(accountPtr->accountName, this, SLOT(deleteAccount(int)), 0, idCount); idCount++; } } void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox) { Email *mPtr; Enclosure *ePtr; if (inbox) { mPtr = mailItem->getMail(); //if mail is in queue for download, remove it from //queue if possible if ( (receiving) && (mPtr->fromAccountId == currentAccount->id) ) { if ( !mPtr->downloaded ) mailDownloadList.remove(mPtr->serverId, mPtr->size); } mailconf->setGroup(mPtr->id); mailconf->clearGroup(); //delete any temporary attatchemnts storing for ( ePtr=mPtr->files.first(); ePtr != 0; ePtr=mPtr->files.next() ) { if (ePtr->saved) { QFile::remove( (ePtr->path + ePtr->name) ); } } inboxView->takeItem(mailItem); } else { outboxView->takeItem(mailItem); } } void EmailClient::setMailSize(int size) { progressBar->reset(); progressBar->setTotalSteps(size); } -void EmailClient::setTotalSize(int size) +void EmailClient::setTotalSize(int /*size*/) { } void EmailClient::setDownloadedSize(int size) { int total = progressBar->totalSteps(); if (size < total) { progressBar->setProgress(size); } else { progressBar->setProgress(total); } } void EmailClient::deleteItem() { bool inbox=mailboxView->currentTab()==0; QListView* box; EmailListItem* eli; - int pos; + // 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); } void EmailClient::inboxItemReleased() { // killTimer(timerID); } /*void EmailClient::timerEvent(QTimerEvent *e) { - /*killTimer(timerID); + //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; } 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"); } -void EmailClient::receive(const QCString& msg, const QByteArray& data) +void EmailClient::receive(const QCString& /*msg*/, const QByteArray& /*data*/) { /*if (msg=="getMail()") { - /*QDialog qd(qApp->activeWindow(),"Getting mail",true); + //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"); }*/ } |