Diffstat (limited to 'noncore/net/mailit/emailclient.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/net/mailit/emailclient.cpp | 1042 |
1 files changed, 0 insertions, 1042 deletions
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp deleted file mode 100644 index 8359acf..0000000 --- a/noncore/net/mailit/emailclient.cpp +++ b/dev/null @@ -1,1042 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ -#include <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,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() -{ - initStatusBar(this); - - setToolBarsMovable(FALSE); - - bar = new QToolBar(this); - QWhatsThis::add(bar,tr("Main operation toolbar")); - bar->setHorizontalStretchable( TRUE ); - - mb = new QMenuBar( bar ); - - QPopupMenu *mail = new QPopupMenu(mb); - mb->insertItem( tr( "&Mail" ), mail); - - QPopupMenu *configure = new QPopupMenu(mb); - mb->insertItem( tr( "Accounts" ), configure); - - selectAccountMenu = new QPopupMenu(mb); - editAccountMenu = new QPopupMenu(mb); - deleteAccountMenu = new QPopupMenu(mb); - - mail->insertItem(tr("Get Mail in"), selectAccountMenu); - configure->insertItem(tr("Edit account"), editAccountMenu); - configure->insertItem(tr("Delete account"), deleteAccountMenu); - - bar = new QToolBar(this); - - getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar); - QWhatsThis::add(getMailButton,tr("Click to download mail via all available accounts.\n Press and hold to select the desired account.")); - - getMailButton->setPopup(selectAccountMenu); - - 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" ); - grid_2 = new QGridLayout( widget ); -// grid_2->setSpacing(6); -// grid_2->setMargin( 11 ); - - inboxView = new QListView( widget, "inboxView" ); - inboxView->addColumn( tr( "From" ) ); - 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 \n" - "viewed by double clicking the entry.\n" - "blue attachment icon shows whether this \n" - "mailhas attachments.\n")); - - grid_2->addWidget( inboxView, 2, 0 ); - mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) ); - - QWidget* widget_2 = new QWidget( mailboxView, "widget_2" ); - grid_3 = new QGridLayout( widget_2 ); -// grid_3->setSpacing(6); -// grid_3->setMargin( 11 ); - - outboxView = new QListView( widget_2, "outboxView" ); - outboxView->addColumn( tr( "To" ) ); - outboxView->addColumn( tr( "Subject" ) ); - outboxView->setAllColumnsShowFocus(TRUE); - - QWhatsThis::add(outboxView,QWidget::tr("This is the outbox view.\n" - "It keeps the queued mails to send which can be \n" - "reviewed by double clicking the entry.")); - grid_3->addWidget( outboxView, 0, 0 ); - mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) ); - - setCentralWidget(mailboxView); - -} - -void EmailClient::initStatusBar(QWidget* parent) -{ - statusBar = new QStatusBar(parent); - statusBar->setSizeGripEnabled(FALSE); - - status1Label = new QLabel( tr("Idle"), statusBar); - status2Label = new QLabel("", statusBar); - connect(emailHandler, SIGNAL(updatePopStatus(const QString &)), - status2Label, SLOT(setText(const QString &)) ); - 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)) ); - connect(emailHandler, SIGNAL(downloadedSize(int)), - this, SLOT(setDownloadedSize(int)) ); - - statusBar->addWidget(status1Label); - statusBar->addWidget(progressBar); - statusBar->addWidget(status2Label); - -} - -void EmailClient::compose() -{ - emit composeRequested(); -} - -void EmailClient::cancel() -{ - emailHandler->cancel(); -} - -AddressList* EmailClient::getAdrListRef() -{ - return addressList; -} - -//this needs to be rewritten to syncronize with outboxView -void EmailClient::enqueMail(const Email &mail) -{ - if (accountList.count() == 0) { - QMessageBox::warning(qApp->activeWindow(), - tr("No account selected"), tr("You must create an account"), "OK\n"); - return; - } - - if (accountList.count() > 0) { - currentAccount = accountList.first(); - qWarning("using account " + currentAccount->name); - } - - Email addMail = mail; - addMail.from = currentAccount->name; - addMail.fromMail = currentAccount->emailAddress; - addMail.rawMail.prepend("From: \"" + addMail.from + "\" <" + addMail.fromMail + ">\n"); - item = new EmailListItem(outboxView, addMail, false); - - mailboxView->setCurrentTab(1); - -} - -void EmailClient::sendQuedMail() -{ - int count = 0; - - if (accountList.count() == 0) { - QMessageBox::warning(qApp->activeWindow(), tr("No account selected"), tr("You must create an account"), "OK\n"); - return; - } - //traverse listview, find messages to send - if (! sending) { - item = (EmailListItem *) outboxView->firstChild(); - if (item != NULL) { - while (item != NULL) { - quedMessages.append(item->getMail()); - item = (EmailListItem *) item->nextSibling(); - count++; - } - setMailAccount(); - emailHandler->sendMail(&quedMessages); - sending = TRUE; - sendMailButton->setEnabled(FALSE); - cancelButton->setEnabled(TRUE); - } else { - qWarning("sendQuedMail(): no messages to send"); - } - } -} - -void EmailClient::setMailAccount() -{ - emailHandler->setAccount(*currentAccount); -} - -void EmailClient::mailSent() -{ - sending = FALSE; - sendMailButton->setEnabled(TRUE); - - quedMessages.clear(); - outboxView->clear(); //should be moved to an sentBox -} - -void EmailClient::getNewMail() { - - if (accountList.count() == 0) { - QMessageBox::warning(qApp->activeWindow(),tr("No account selected"), - tr("You must create an account"), "OK\n"); - return; - } - - setMailAccount(); - - receiving = TRUE; - previewingMail = TRUE; - getMailButton->setEnabled(FALSE); - cancelButton->setEnabled(TRUE); - selectAccountMenu->setEnabled(FALSE); - - status1Label->setText(currentAccount->accountName + " headers"); - progressBar->reset(); - - //get any previous mails not downloaded and add to queue - /*mailDownloadList.clear(); - Email *mailPtr; - item = (EmailListItem *) inboxView->firstChild(); - while (item != NULL) { - mailPtr = item->getMail(); - if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) { - mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); - } - item = (EmailListItem *) item->nextSibling(); - }*/ - - emailHandler->getMailHeaders(); - -} - -void EmailClient::getAllNewMail() -{ - allAccounts = TRUE; - currentAccount = accountList.first(); - getNewMail(); -} - -void EmailClient::mailArrived(const Email &mail, bool fromDisk) -{ - Enclosure *ePtr; - Email newMail; - int thisMailId; - emailHandler->parse( mail.rawMail, lineShift, &newMail); - mailconf->setGroup(newMail.id); - - if (fromDisk) - { - - newMail.downloaded = mailconf->readBoolEntry("downloaded"); - newMail.size = mailconf->readNumEntry("size"); - newMail.serverId = mailconf->readNumEntry("serverid"); - newMail.fromAccountId = mailconf->readNumEntry("fromaccountid"); - } - else - { //mail arrived from server - - newMail.serverId = mail.serverId; - newMail.size = mail.size; - newMail.downloaded = mail.downloaded; - - newMail.fromAccountId = emailHandler->getAccount()->id; - mailconf->writeEntry("fromaccountid", newMail.fromAccountId); - } - - //add if read or not - newMail.read = mailconf->readBoolEntry("mailread"); - - //check if new mail - if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) { - thisMailId = mailIdCount; - mailIdCount++; - - //set server count, so that if the user aborts, the new - //header is not reloaded - if ((currentAccount)&&(currentAccount->synchronize)) - currentAccount->lastServerMailCount++; - - mailconf->writeEntry("internalmailid", thisMailId); - mailconf->writeEntry("downloaded", newMail.downloaded); - mailconf->writeEntry("size", (int) newMail.size); - mailconf->writeEntry("serverid", newMail.serverId); - - //addressList->addContact(newMail.fromMail, newMail.from); - } - - mailconf->writeEntry("downloaded", newMail.downloaded); - - QString stringMailId; - stringMailId.setNum(thisMailId); - //see if any attatchments needs to be stored - - for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) { - QString stringId; - stringId.setNum(ePtr->id); - - int id = mailconf->readNumEntry("enclosureid_" + stringId); - if (id != ePtr->id) { //new entry - mailconf->writeEntry("enclosureid_" + stringId, ePtr->id); - mailconf->writeEntry("name_" + stringId, ePtr->originalName); - mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType); - mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute); - mailconf->writeEntry("saved_" + stringId, ePtr->saved); - mailconf->writeEntry("installed_" + stringId, FALSE); - - ePtr->name = stringMailId + "_" + stringId; - ePtr->path = getPath(TRUE); - if (emailHandler->getEnclosure(ePtr)) { //file saved - ePtr->saved = TRUE; - mailconf->writeEntry("saved_" + stringId, ePtr->saved); - mailconf->writeEntry("filename_" + stringId, ePtr->name); - mailconf->writeEntry("path_" + stringId, ePtr->path); - } else { - ePtr->saved = FALSE; - mailconf->writeEntry("saved_" + stringId, ePtr->saved); - } - } else { - ePtr->saved = mailconf->readBoolEntry("saved_" + stringId); - ePtr->installed = mailconf->readBoolEntry("installed_" + stringId); - if (ePtr->saved) { - ePtr->name = mailconf->readEntry("filename_" + stringId); - ePtr->path = mailconf->readEntry("path_" + stringId); - } - } - } - - bool found=false; - - if (!fromDisk) - { - - Email *mailPtr; - item = (EmailListItem *) inboxView->firstChild(); - while ((item != NULL)&&(!found)) - { - mailPtr = item->getMail(); - if (mailPtr->id == newMail.id) { - item->setMail(newMail); - emit mailUpdated(item->getMail()); - found = true; - } - 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*/) -{ - // 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, const QString & Msg) -{ - QString temp; - - 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, const QString & Msg) -{ - QString temp; - - 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(), 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); - if (stop == -1) - stop = s.length() - del.length(); - - mail.rawMail = s.mid(start, stop + del.length() - start ); - start = stop + del.length(); - mailArrived(mail, TRUE); - } - } - - QFile fo(getPath(FALSE) + "outbox.txt"); - if ( fo.open(IO_ReadOnly) ) { // file opened successfully - QTextStream t( &fo ); // use a text stream - s = t.read(); - fo.close(); - - start = 0; - del = "\n.\n"; - while ((uint) start < s.length()) { - stop = s.find(del, start); - if (stop == -1) - stop = s.length() - del.length(); - - mail.rawMail = s.mid(start, stop + del.length() - start ); - start = stop + del.length(); - emailHandler->parse(mail.rawMail, lineShift, &mail); - mail.sent = false; - mail.received = false; - enqueMail(mail); - - } - } -} - -void EmailClient::saveMail(const QString &fileName, QListView *view) -{ - QFile f(fileName); - Email *mail; - - if (! f.open(IO_WriteOnly) ) { - qWarning("could not open file"); - return; - } - item = (EmailListItem *) view->firstChild(); - QTextStream t(&f); - while (item != NULL) { - mail = item->getMail(); - t << mail->rawMail; - - mailconf->setGroup(mail->id); - mailconf->writeEntry("mailread", mail->read); - - item = (EmailListItem *) item->nextSibling(); - } - f.close(); -} - -//paths for mailit, is settings, inbox, enclosures -QString EmailClient::getPath(bool enclosurePath) -{ - QString basePath = "qtmail"; - QString enclosures = "enclosures"; - - QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath); - if ( !dir.exists() ) - dir.mkdir( dir.path() ); - - if (enclosurePath) { - dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures); - - if ( !dir.exists() ) - dir.mkdir( dir.path() ); - - return (dir.path() + "/"); - - } - return (dir.path() + "/"); -} - -void EmailClient::readSettings() -{ - int y,acc_count; - - mailconf->setGroup("mailitglobal"); - acc_count=mailconf->readNumEntry("Accounts",0); - - for (int accountPos = 0;accountPos<acc_count ; accountPos++) - { - mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ... - account.accountName = mailconf->readEntry("AccName",""); - account.name = mailconf->readEntry("UserName",""); - account.emailAddress = mailconf->readEntry("Email",""); - account.popUserName = mailconf->readEntry("POPUser",""); - account.popPasswd = mailconf->readEntryCrypt("POPPassword",""); - account.popServer = mailconf->readEntry("POPServer",""); - account.smtpServer = mailconf->readEntry("SMTPServer",""); - account.id = mailconf->readNumEntry("AccountId",0); - account.syncLimit = mailconf->readNumEntry("HeaderLimit",0); - account.lastServerMailCount = 0; - account.synchronize = FALSE; - - account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes"); - if (account.synchronize) - { - mailconf->readNumEntry("LASTSERVERMAILCOUNT",0); - } - - accountList.append(&account); - } - - mailconf->setGroup("mailitglobal"); - - if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) - { - mailIdCount = y; - } - if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) - { - accountIdCount = y; - } -} - -void EmailClient::saveSettings() -{ - int acc_count=0; - MailAccount *accountPtr; - - - if (!mailconf) - { - qWarning("could not save settings"); - return; - } - - for (accountPtr = accountList.first(); accountPtr != 0; - accountPtr = accountList.next()) - { - mailconf->setGroup("Account_"+QString::number(++acc_count)); - mailconf->writeEntry("AccName",accountPtr->accountName ); - mailconf->writeEntry("UserName",accountPtr->name); - mailconf->writeEntry("Email",accountPtr->emailAddress); - mailconf->writeEntry("POPUser",accountPtr->popUserName); - mailconf->writeEntryCrypt("POPPassword",accountPtr->popPasswd); - mailconf->writeEntry("POPServer",accountPtr->popServer); - mailconf->writeEntry("SMTPServer",accountPtr->smtpServer); - mailconf->writeEntry("AccountId",accountPtr->id); - if (accountPtr->synchronize) - { - mailconf->writeEntry("Synchronize","Yes"); - mailconf->writeEntry("HeaderLimit",accountPtr->syncLimit); - mailconf->writeEntry("LastServerMailCount",accountPtr->lastServerMailCount); - } - else - { - mailconf->writeEntry("Synchronize", "No"); - } - } - - mailconf->setGroup("mailitglobal"); - mailconf->writeEntry("Accounts",acc_count); - mailconf->writeEntry("mailidcount", mailIdCount); - mailconf->writeEntry("accountidcount", accountIdCount); -} - -void EmailClient::selectAccount(int id) -{ - if (accountList.count() > 0) { - currentAccount = accountList.at(id); - emit newCaption("Mailit - " + currentAccount->accountName); - getNewMail(); - } else { - emit newCaption( tr("Mailit ! No account defined") ); - } -} - -void EmailClient::editAccount(int id) -{ - MailAccount *newAccount; - - editAccountView = new EditAccount(this, "account", TRUE); - if (id == newAccountId) { //new account - newAccount = new MailAccount; - editAccountView->setAccount(newAccount); - } else { - newAccount = accountList.at(id); - editAccountView->setAccount(newAccount, FALSE); - } - - editAccountView->showMaximized(); - editAccountView->exec(); - - if (editAccountView->result() == QDialog::Accepted) { - if (id == newAccountId) { - newAccount->id = accountIdCount; - accountIdCount++; - accountList.append(newAccount); - updateAccounts(); - } else { - updateAccounts(); - } - } - - delete editAccountView; -} - -void EmailClient::deleteAccount(int id) -{ - MailAccount *newAccount; - QString message; - - newAccount = accountList.at(id); - message = tr("Delete account:\n") + newAccount->accountName; - switch( QMessageBox::warning( this, "Mailit", message, - "Yes", "No", 0, 0, 1 ) ) { - - case 0: accountList.remove(id); - updateAccounts(); - break; - case 1: - break; - } -} - -void EmailClient::updateAccounts() -{ - MailAccount *accountPtr; - - //rebuild menus, clear all first - editAccountMenu->clear(); - selectAccountMenu->clear(); - deleteAccountMenu->clear(); - - newAccountId = editAccountMenu->insertItem( tr("New"), this, - SLOT(editAccount(int)) ); - editAccountMenu->insertSeparator(); - - idCount = 0; - for (accountPtr = accountList.first(); accountPtr != 0; - accountPtr = accountList.next()) { - - editAccountMenu->insertItem(accountPtr->accountName, - 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::setDownloadedSize(int size) -{ - int total = progressBar->totalSteps(); - - if (size < total) { - progressBar->setProgress(size); - } else { - progressBar->setProgress(total); - } -} - -void EmailClient::deleteItem() -{ - bool inbox=mailboxView->currentTab()==0; - QListView* box; - - EmailListItem* eli; - // int pos; - - inbox ? box=inboxView : box=outboxView; - - eli=(EmailListItem*)box->selectedItem(); - - if (eli) - { - box->setSelected(eli->itemBelow(),true); //select the previous item - - deleteMail(eli,(bool&)inbox); //remove mail entry - } -} - -void EmailClient::inboxItemPressed() -{ -// timerID=startTimer(500); -} - -void EmailClient::inboxItemReleased() -{ - // killTimer(timerID); -} - -/*void EmailClient::timerEvent(QTimerEvent *e) -{ - //killTimer(timerID); - - - QPopupMenu *action = new QPopupMenu(this); - - int reply=0; - - action->insertItem(tr( "Reply To" ),this,SLOT(reply())); - action->insertItem( tr( "Reply All" ),this,SLOT(replyAll())); - action->insertItem( tr( "Forward" ), this,SLOT(forward())); - action->insertItem( tr( "Remove Mail" ), this,SLOT(remove())); - - action->exec(QCursor::pos()); - - if (action) delete action; - -}*/ - -Email* EmailClient::getCurrentMail() -{ - EmailListItem *eli=(EmailListItem* ) (inboxView->selectedItem()); - if (eli!=NULL) - return eli->getMail(); - else - return NULL; -} - -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*/) -{ - /*if (msg=="getMail()") - { - //QDialog qd(qApp->activeWindow(),"Getting mail",true); - QVBoxLayout *vbProg = new QVBoxLayout( &qd ); - - initStatusBar(&qd); - - if (statusBar==0) - { - qDebug("No Bar ..."); - //statusBar=new ProgressBar(&qd); - } - statusBar->show(); - vbProg->addWidget(statusBar); - qd.showMaximized(); - qd.show(); - emit getAllNewMail(); - //qd.exec(); - } - else if (msg=="compose()") - { - QDialog qd(qApp->activeWindow(),"Getting mail",true); - - WriteMail wm(&qd,"write new mail"); - QVBoxLayout vbProg( &qd ); - - wm.showMaximized(); - vbProg.addWidget(&wm); - - qd.showMaximized(); - - emit composeRequested(); - qd.exec(); - - QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n"); - } - - else if (msg=="dialog()") - { - QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n"); - }*/ -} |