summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mailit/emailclient.cpp75
-rw-r--r--noncore/net/mailit/emailclient.h3
-rw-r--r--noncore/net/mailit/emailhandler.cpp16
-rw-r--r--noncore/net/mailit/emailhandler.h1
-rw-r--r--noncore/net/mailit/mailitwindow.cpp26
-rw-r--r--noncore/net/mailit/popclient.cpp80
-rw-r--r--noncore/net/mailit/writemail.cpp28
-rw-r--r--noncore/unsupported/mailit/emailclient.cpp75
-rw-r--r--noncore/unsupported/mailit/emailclient.h3
-rw-r--r--noncore/unsupported/mailit/emailhandler.cpp16
-rw-r--r--noncore/unsupported/mailit/emailhandler.h1
-rw-r--r--noncore/unsupported/mailit/mailitwindow.cpp26
-rw-r--r--noncore/unsupported/mailit/popclient.cpp80
-rw-r--r--noncore/unsupported/mailit/writemail.cpp28
14 files changed, 208 insertions, 250 deletions
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp
index 23059cf..dff1888 100644
--- a/noncore/net/mailit/emailclient.cpp
+++ b/noncore/net/mailit/emailclient.cpp
@@ -359,13 +359,13 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
else
{ //mail arrived from server
newMail.serverId = mail.serverId;
newMail.size = mail.size;
newMail.downloaded = mail.downloaded;
- newMail.fromAccountId = currentAccount->id;
+ newMail.fromAccountId = emailHandler->getAccount()->id;
mailconf->writeEntry("fromaccountid", newMail.fromAccountId);
}
//add if read or not
newMail.read = mailconf->readBoolEntry("mailread");
@@ -477,17 +477,17 @@ void EmailClient::allMailArrived(int count)
// all headers downloaded from server, start downloading remaining mails
previewingMail = FALSE;
status1Label->setText(currentAccount->accountName);
progressBar->reset();
- //emailHandler->getMailByList(&mailDownloadList);
-
+
mailboxView->setCurrentTab(0);
}
+
void EmailClient::moveMailFront(Email *mailPtr)
{
if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) {
mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size);
}
}
@@ -661,13 +661,13 @@ QString EmailClient::getPath(bool enclosurePath)
}
return (dir.path() + "/");
}
void EmailClient::readSettings()
{
- int y,acc_count, accountPos=0;
+ int y,acc_count;
mailconf->setGroup("mailitglobal");
acc_count=mailconf->readNumEntry("Accounts",0);
for (int accountPos = 0;accountPos<acc_count ; accountPos++)
{
@@ -888,19 +888,27 @@ void EmailClient::setDownloadedSize(int size)
}
}
void EmailClient::deleteItem()
{
bool inbox=mailboxView->currentTab()==0;
+ QListView* box;
EmailListItem* eli;
+ int pos;
+
+ inbox ? box=inboxView : box=outboxView;
- inbox ? eli=(EmailListItem*)inboxView->selectedItem():eli=(EmailListItem*)outboxView->selectedItem();
+ eli=(EmailListItem*)box->selectedItem();
if (eli)
- deleteMail(eli,(bool&)inbox);
+ {
+ box->setSelected(eli->itemBelow(),true); //select the previous item
+
+ deleteMail(eli,(bool&)inbox); //remove mail entry
+ }
}
void EmailClient::inboxItemPressed()
{
// timerID=startTimer(500);
}
@@ -936,46 +944,25 @@ Email* EmailClient::getCurrentMail()
if (eli!=NULL)
return eli->getMail();
else
return NULL;
}
-/*
-void EmailClient::reply()
-{
- Email* mail=getCurrentMail();
-
- if (mail!=NULL)
- {
- emit reply(*mail);
- }
-}
-
-void EmailClient::replyAll()
-{
- Email* mail=getCurrentMail();
-
- if (mail!=NULL)
- {
- emit replyAll(*mail);
- }
-}
-
-void EmailClient::forward()
+void EmailClient::download(Email* mail)
{
- Email* mail=getCurrentMail();
-
- if (mail!=NULL)
- {
- emit reply(*mail);
- }
+ MailAccount* acc=0;
+
+ tempMailDownloadList.clear();
+ tempMailDownloadList.sizeInsert(mail->serverId, mail->size);
+ if (accountList.count()>0)
+ qDebug("Accounts present");
+
+ 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::remove()
-{
- Email* mail=getCurrentMail();
-
- if (mail!=NULL)
- {
- emit remove(*mail);
- }
-}*/
diff --git a/noncore/net/mailit/emailclient.h b/noncore/net/mailit/emailclient.h
index 0890dcf..549683b 100644
--- a/noncore/net/mailit/emailclient.h
+++ b/noncore/net/mailit/emailclient.h
@@ -67,12 +67,13 @@ class EmailClient : public QMainWindow
Q_OBJECT
public:
EmailClient( QWidget* parent, const char* name, WFlags fl = 0 );
~EmailClient();
AddressList* getAdrListRef();
+ void download(Email*);
protected:
void timerEvent(QTimerEvent*);
signals:
void composeRequested();
@@ -136,12 +137,14 @@ private:
EditAccount *editAccountView;
EmailListItem *item;
EmailHandler *emailHandler;
QList<Email> quedMessages;
MailList mailDownloadList;
+ MailList tempMailDownloadList;
+
bool sending, receiving, previewingMail, allAccounts;
QString lineShift;
MailAccount account, *currentAccount;
QToolBar *bar;
QProgressBar *progressBar;
diff --git a/noncore/net/mailit/emailhandler.cpp b/noncore/net/mailit/emailhandler.cpp
index b180051..fbbada7 100644
--- a/noncore/net/mailit/emailhandler.cpp
+++ b/noncore/net/mailit/emailhandler.cpp
@@ -124,24 +124,26 @@ void EmailHandler::getMailByList(MailList *mailList)
emit mailTransfered(0);
return;
}
headers = FALSE;
popClient->headersOnly(FALSE, 0);
- popClient->newConnection(mailAccount.popServer, 110);
+
+ popClient->setAccount(mailAccount.popUserName,mailAccount.popPasswd);
popClient->setSelectedMails(mailList);
-}
+ popClient->newConnection(mailAccount.popServer, 110);
+ }
-void EmailHandler::messageArrived(const QString &message, int id, uint size, bool incomplete)
+void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete)
{
Email mail;
mail.rawMail = message;
mail.serverId = id;
mail.size = size;
- mail.downloaded = incomplete;
+ mail.downloaded = complete;
emit mailArrived(mail, FALSE);
}
bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
{
@@ -179,19 +181,17 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
mail->from = mail->from.stripWhiteSpace();
if ( (mail->from.length() > 2) && (mail->from[0] == '"') ) {
mail->from = mail->from.left(mail->from.length() - 1);
mail->from = mail->from.right(mail->from.length() - 1);
}
pos++;
-
mail->fromMail = p.getString(&pos, '>', false);
} else {
- if ((p.separatorAt(pos) == '<')
- || (p.separatorAt(pos) == ' ')) //No name.. nasty
- pos++;
+ if (p.separatorAt(pos) == '<') //No name.. nasty
pos++;
+ //pos++;
mail->fromMail = p.getString(&pos, 'z', TRUE);
if (mail->fromMail.at(mail->fromMail.length()-1) == '>')
mail->fromMail.truncate(mail->fromMail.length() - 1);
mail->from=mail->fromMail;
}
}
diff --git a/noncore/net/mailit/emailhandler.h b/noncore/net/mailit/emailhandler.h
index e47fd9a..b645868 100644
--- a/noncore/net/mailit/emailhandler.h
+++ b/noncore/net/mailit/emailhandler.h
@@ -108,12 +108,13 @@ class EmailHandler : public QObject
{
Q_OBJECT
public:
EmailHandler();
void setAccount(MailAccount account);
+ MailAccount* getAccount(){return &mailAccount;}
void sendMail(QList<Email> *mailList);
void getMail();
void getMailHeaders();
void getMailByList(MailList *mailList);
bool parse(QString in, QString lineShift, Email *mail);
bool getEnclosure(Enclosure *ePtr);
diff --git a/noncore/net/mailit/mailitwindow.cpp b/noncore/net/mailit/mailitwindow.cpp
index 7181adf..ffee67e 100644
--- a/noncore/net/mailit/mailitwindow.cpp
+++ b/noncore/net/mailit/mailitwindow.cpp
@@ -15,12 +15,13 @@
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qwhatsthis.h>
+#include <qmessagebox.h>
#include "mailitwindow.h"
MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
: QMainWindow(parent, name, WStyle_ContextHelp)
{
currentCaption = "Mailit";
@@ -57,14 +58,13 @@ MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
SLOT(deleteMail(EmailListItem *, bool &)) );
connect(readMail, SIGNAL(viewingMail(Email *)), emailClient,
SLOT(moveMailFront(Email *)) );
connect(emailClient, SIGNAL(newCaption(const QString &)),
this, SLOT(updateCaption(const QString &)) );
- viewingMail = FALSE;
-
+ viewingMail = FALSE;
}
MailItWindow::~MailItWindow()
{
}
@@ -81,12 +81,13 @@ void MailItWindow::compose()
{
viewingMail = FALSE;
emailClient->hide();
readMail->hide();
views->raiseWidget(writeMail);
writeMail->setAddressList(emailClient->getAdrListRef());
+ writeMail->newMail();
setCaption( tr( "Write mail" ) );
}
void MailItWindow::composeReply(Email &mail, bool& replyAll)
{
compose();
@@ -110,12 +111,33 @@ void MailItWindow::showEmailClient()
}
void MailItWindow::viewMail(QListView *view, Email *mail)
{
viewingMail = TRUE;
emailClient->hide();
+
+ int result=0;
+
+ if ((mail->received)&&(!mail->downloaded))
+ {
+ QMessageBox mb( tr("Mail not downloaded"),
+ tr("The mail you have clicked \n"
+ "has not been downloaded yet.\n "
+ "Would you like to do it now ?"),
+ QMessageBox::Information,
+ QMessageBox::Yes | QMessageBox::Default,
+ QMessageBox::No | QMessageBox::Escape,0 );
+
+ result=mb.exec();
+
+ if (result==QMessageBox::Yes)
+ {
+ emailClient->download(mail);
+ }
+ }
+
readMail->update(view, mail);
views->raiseWidget(readMail);
setCaption( tr( "Examine mail" ) );
}
void MailItWindow::updateMailView(Email *mail)
diff --git a/noncore/net/mailit/popclient.cpp b/noncore/net/mailit/popclient.cpp
index 67306be..6105d09 100644
--- a/noncore/net/mailit/popclient.cpp
+++ b/noncore/net/mailit/popclient.cpp
@@ -57,13 +57,13 @@ void PopClient::newConnection(QString target, int port)
}
status = Init;
socket->connectToHost(target, port);
receiving = TRUE;
- selected = FALSE;
+ //selected = FALSE;
emit updateStatus("DNS lookup");
}
void PopClient::setAccount(QString popUser, QString popPasswd)
{
@@ -181,19 +181,20 @@ void PopClient::incomingData()
//messages deleted from server, reload all
if (newMessages < lastSync)
lastSync = 0;
messageCount = 1;
}
- if (selected) {
+ if (selected) {
int *ptr = mailList->first();
if (ptr != 0) {
newMessages++; //to ensure no early jumpout
- messageCount = *(mailList->first());
- } else newMessages = 0;
- }
+ messageCount = *ptr;
+ } else newMessages = 0;
+ }
+
} else errorHandling(ErrUnknownResponse);
}
//Read message number x, count upwards to messageCount
case List: {
if (messageCount <= newMessages) {
*stream << "LIST " << messageCount << "\r\n";
@@ -201,18 +202,18 @@ void PopClient::incomingData()
temp2.setNum(newMessages - lastSync);
temp.setNum(messageCount - lastSync);
if (!selected) {
emit updateStatus(tr("Retrieving ") + temp + "/" + temp2);
} else {
//completing a previously closed transfer
- if ( (messageCount - lastSync) <= 0) {
+ /* if ( (messageCount - lastSync) <= 0) {
temp.setNum(messageCount);
emit updateStatus(tr("Previous message ") + temp);
- } else {
+ } else {*/
emit updateStatus(tr("Completing message ") + temp);
- }
+ //}
}
break;
} else {
emit updateStatus(tr("No new Messages"));
status = Quit;
}
@@ -234,13 +235,13 @@ void PopClient::incomingData()
}
}
}
//Read message number x, count upwards to messageCount
case Retr: {
if (status != Quit) {
- if (mailSize <= headerLimit)
+ if ((selected)||(mailSize <= headerLimit))
{
*stream << "RETR " << messageCount << "\r\n";
} else { //only header
*stream << "TOP " << messageCount << " 0\r\n";
}
messageCount++;
@@ -269,56 +270,42 @@ void PopClient::incomingData()
}
emit downloadedSize(message.length());
int x = message.find("\r\n.\r\n",-5);
if (x == -1) {
break;
} else { //message reach entire size
- //complete mail downloaded
- //if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){
- if ( mailSize <= headerLimit)
+
+ if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active
{
emit newMessage(message, messageCount-1, mailSize, TRUE);
} else { //incomplete mail downloaded
emit newMessage(message, messageCount-1, mailSize, FALSE);
}
- if (messageCount > newMessages) //that was the last message
+
+ if ((messageCount > newMessages)||(selected)) //last message ?
+ {
status = Quit;
- else { //ask for new message
if (selected) { //grab next from queue
- int *ptr = mailList->next();
- if (ptr != 0) {
- messageCount = *ptr;
- *stream << "LIST " << messageCount << "\r\n";
- status = Size;
- //completing a previously closed transfer
- if ( (messageCount - lastSync) <= 0) {
- temp.setNum(messageCount);
- emit updateStatus(tr("Previous message ") + temp);
- } else {
- temp.setNum(messageCount - lastSync);
- emit updateStatus(tr("Completing message ") + temp);
- }
- break;
- } else {
newMessages--;
status = Quit;
}
- } else {
+ }
+ else
+ {
*stream << "LIST " << messageCount << "\r\n";
status = Size;
temp2.setNum(newMessages - lastSync);
temp.setNum(messageCount - lastSync);
emit updateStatus(tr("Retrieving ") + temp + "/" + temp2);
break;
- }
+ }
}
}
if (status != Quit)
break;
- }
}
case Quit: {
*stream << "Quit\r\n";
status = Done;
int newM = newMessages - lastSync;
if (newM > 0) {
@@ -333,35 +320,6 @@ void PopClient::incomingData()
emit mailTransfered(newM);
break;
}
}
}
-
-// if( bAPOPAuthentication )
-// {
-// if( m_strTimeStamp.IsEmpty() )
-// {
-// SetLastError("Apop error!");
-// return false;
-// }
-// strMD5Source = m_strTimeStamp+pszPassword;
-// strMD5Dst = MD5_GetMD5( (BYTE*)(const char*)strMD5Source , strMD5Source.GetLength() );
-// sprintf(msg , "apop %s %s\r\n" , pszUser , strMD5Dst);
-// ret = send(m_sPop3Socket , msg , strlen(msg) , NULL);
-// if(ret == SOCKET_ERROR)
-// {
-// SetLastError("Socket error!");
-// m_bSocketOK = false;
-// m_bConnected = false;
-// return false;
-// }
-// if( !GetSocketResult(&strResult , COMMAND_END_FLAG) )
-// return false;
-// if( 0 == strResult.Find('-' , 0) )
-// {
-// SetLastError("Username or Password error!");
-// return false;
-// }
-// m_bConnected = true;
-
-// }
diff --git a/noncore/net/mailit/writemail.cpp b/noncore/net/mailit/writemail.cpp
index 0336c83..dcf0c6e 100644
--- a/noncore/net/mailit/writemail.cpp
+++ b/noncore/net/mailit/writemail.cpp
@@ -120,22 +120,22 @@ void WriteMail::init()
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"));
+ QWhatsThis::add(emailInput,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"));
+ QWhatsThis::add(recipientsBox,QWidget::tr("Choose 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"));
@@ -145,13 +145,12 @@ void WriteMail::init()
void WriteMail::reject()
{
emit cancelMail();
}
-// need to insert date
void WriteMail::accept()
{
QStringList attachedFiles, attachmentsType;
int idCount = 0;
if (toInput->text() == "")
@@ -249,19 +248,30 @@ void WriteMail::attachFile()
addAtt->showMaximized();
}
void WriteMail::reply(Email replyMail, bool replyAll)
{
int pos;
+ QString ccRecipients;
mail = replyMail;
mail.files.clear();
toInput->setText(mail.fromMail);
- //replyAll ? ccInput->setText(mail.c)
+ if (replyAll)
+ {
+ for (QStringList::Iterator it = mail.carbonCopies.begin();it != mail.carbonCopies.end(); ++it)
+ {
+ ccRecipients.append(*it);
+ ccRecipients.append(";");
+ }
+ ccRecipients.truncate(ccRecipients.length()-1); //no ; at the end
+ ccInput->setText(ccRecipients);
+ }
+
addRecipients(replyAll);
subjectInput->setText(tr("Re: ") + mail.subject);
pos = 0;
mail.body.insert(pos, ">");
@@ -318,29 +328,28 @@ bool WriteMail::getRecipients(bool ccField)
return TRUE;
}
void WriteMail::addRecipients()
{
-
- addRecipients(false);
+ toInput->isVisible() ? addRecipients(false) : addRecipients(true);
}
-
+
void WriteMail::addRecipients(bool ccField)
{
QString recipients = "";
mail.recipients.clear();
QListViewItem *item = addressView->firstChild();
while (item != NULL) {
if ( item->isSelected() ) {
if (recipients == "") {
- recipients = item->text(0);
+ recipients = item->text(1);
} else {
- recipients += "; " + item->text(0);
+ recipients += "; " + item->text(1);
}
}
item = item->nextSibling();
}
ccField ? ccInput->setText(recipients):toInput->setText(recipients);
@@ -373,9 +382,8 @@ void WriteMail::setRecipient(const QString &recipient)
void WriteMail::newMail()
{
toInput->clear();
subjectInput->clear();
emailInput->clear();
- //to clear selected
setAddressList(addressList);
}
diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp
index 23059cf..dff1888 100644
--- a/noncore/unsupported/mailit/emailclient.cpp
+++ b/noncore/unsupported/mailit/emailclient.cpp
@@ -359,13 +359,13 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
else
{ //mail arrived from server
newMail.serverId = mail.serverId;
newMail.size = mail.size;
newMail.downloaded = mail.downloaded;
- newMail.fromAccountId = currentAccount->id;
+ newMail.fromAccountId = emailHandler->getAccount()->id;
mailconf->writeEntry("fromaccountid", newMail.fromAccountId);
}
//add if read or not
newMail.read = mailconf->readBoolEntry("mailread");
@@ -477,17 +477,17 @@ void EmailClient::allMailArrived(int count)
// all headers downloaded from server, start downloading remaining mails
previewingMail = FALSE;
status1Label->setText(currentAccount->accountName);
progressBar->reset();
- //emailHandler->getMailByList(&mailDownloadList);
-
+
mailboxView->setCurrentTab(0);
}
+
void EmailClient::moveMailFront(Email *mailPtr)
{
if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) {
mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size);
}
}
@@ -661,13 +661,13 @@ QString EmailClient::getPath(bool enclosurePath)
}
return (dir.path() + "/");
}
void EmailClient::readSettings()
{
- int y,acc_count, accountPos=0;
+ int y,acc_count;
mailconf->setGroup("mailitglobal");
acc_count=mailconf->readNumEntry("Accounts",0);
for (int accountPos = 0;accountPos<acc_count ; accountPos++)
{
@@ -888,19 +888,27 @@ void EmailClient::setDownloadedSize(int size)
}
}
void EmailClient::deleteItem()
{
bool inbox=mailboxView->currentTab()==0;
+ QListView* box;
EmailListItem* eli;
+ int pos;
+
+ inbox ? box=inboxView : box=outboxView;
- inbox ? eli=(EmailListItem*)inboxView->selectedItem():eli=(EmailListItem*)outboxView->selectedItem();
+ eli=(EmailListItem*)box->selectedItem();
if (eli)
- deleteMail(eli,(bool&)inbox);
+ {
+ box->setSelected(eli->itemBelow(),true); //select the previous item
+
+ deleteMail(eli,(bool&)inbox); //remove mail entry
+ }
}
void EmailClient::inboxItemPressed()
{
// timerID=startTimer(500);
}
@@ -936,46 +944,25 @@ Email* EmailClient::getCurrentMail()
if (eli!=NULL)
return eli->getMail();
else
return NULL;
}
-/*
-void EmailClient::reply()
-{
- Email* mail=getCurrentMail();
-
- if (mail!=NULL)
- {
- emit reply(*mail);
- }
-}
-
-void EmailClient::replyAll()
-{
- Email* mail=getCurrentMail();
-
- if (mail!=NULL)
- {
- emit replyAll(*mail);
- }
-}
-
-void EmailClient::forward()
+void EmailClient::download(Email* mail)
{
- Email* mail=getCurrentMail();
-
- if (mail!=NULL)
- {
- emit reply(*mail);
- }
+ MailAccount* acc=0;
+
+ tempMailDownloadList.clear();
+ tempMailDownloadList.sizeInsert(mail->serverId, mail->size);
+ if (accountList.count()>0)
+ qDebug("Accounts present");
+
+ 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::remove()
-{
- Email* mail=getCurrentMail();
-
- if (mail!=NULL)
- {
- emit remove(*mail);
- }
-}*/
diff --git a/noncore/unsupported/mailit/emailclient.h b/noncore/unsupported/mailit/emailclient.h
index 0890dcf..549683b 100644
--- a/noncore/unsupported/mailit/emailclient.h
+++ b/noncore/unsupported/mailit/emailclient.h
@@ -67,12 +67,13 @@ class EmailClient : public QMainWindow
Q_OBJECT
public:
EmailClient( QWidget* parent, const char* name, WFlags fl = 0 );
~EmailClient();
AddressList* getAdrListRef();
+ void download(Email*);
protected:
void timerEvent(QTimerEvent*);
signals:
void composeRequested();
@@ -136,12 +137,14 @@ private:
EditAccount *editAccountView;
EmailListItem *item;
EmailHandler *emailHandler;
QList<Email> quedMessages;
MailList mailDownloadList;
+ MailList tempMailDownloadList;
+
bool sending, receiving, previewingMail, allAccounts;
QString lineShift;
MailAccount account, *currentAccount;
QToolBar *bar;
QProgressBar *progressBar;
diff --git a/noncore/unsupported/mailit/emailhandler.cpp b/noncore/unsupported/mailit/emailhandler.cpp
index b180051..fbbada7 100644
--- a/noncore/unsupported/mailit/emailhandler.cpp
+++ b/noncore/unsupported/mailit/emailhandler.cpp
@@ -124,24 +124,26 @@ void EmailHandler::getMailByList(MailList *mailList)
emit mailTransfered(0);
return;
}
headers = FALSE;
popClient->headersOnly(FALSE, 0);
- popClient->newConnection(mailAccount.popServer, 110);
+
+ popClient->setAccount(mailAccount.popUserName,mailAccount.popPasswd);
popClient->setSelectedMails(mailList);
-}
+ popClient->newConnection(mailAccount.popServer, 110);
+ }
-void EmailHandler::messageArrived(const QString &message, int id, uint size, bool incomplete)
+void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete)
{
Email mail;
mail.rawMail = message;
mail.serverId = id;
mail.size = size;
- mail.downloaded = incomplete;
+ mail.downloaded = complete;
emit mailArrived(mail, FALSE);
}
bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
{
@@ -179,19 +181,17 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
mail->from = mail->from.stripWhiteSpace();
if ( (mail->from.length() > 2) && (mail->from[0] == '"') ) {
mail->from = mail->from.left(mail->from.length() - 1);
mail->from = mail->from.right(mail->from.length() - 1);
}
pos++;
-
mail->fromMail = p.getString(&pos, '>', false);
} else {
- if ((p.separatorAt(pos) == '<')
- || (p.separatorAt(pos) == ' ')) //No name.. nasty
- pos++;
+ if (p.separatorAt(pos) == '<') //No name.. nasty
pos++;
+ //pos++;
mail->fromMail = p.getString(&pos, 'z', TRUE);
if (mail->fromMail.at(mail->fromMail.length()-1) == '>')
mail->fromMail.truncate(mail->fromMail.length() - 1);
mail->from=mail->fromMail;
}
}
diff --git a/noncore/unsupported/mailit/emailhandler.h b/noncore/unsupported/mailit/emailhandler.h
index e47fd9a..b645868 100644
--- a/noncore/unsupported/mailit/emailhandler.h
+++ b/noncore/unsupported/mailit/emailhandler.h
@@ -108,12 +108,13 @@ class EmailHandler : public QObject
{
Q_OBJECT
public:
EmailHandler();
void setAccount(MailAccount account);
+ MailAccount* getAccount(){return &mailAccount;}
void sendMail(QList<Email> *mailList);
void getMail();
void getMailHeaders();
void getMailByList(MailList *mailList);
bool parse(QString in, QString lineShift, Email *mail);
bool getEnclosure(Enclosure *ePtr);
diff --git a/noncore/unsupported/mailit/mailitwindow.cpp b/noncore/unsupported/mailit/mailitwindow.cpp
index 7181adf..ffee67e 100644
--- a/noncore/unsupported/mailit/mailitwindow.cpp
+++ b/noncore/unsupported/mailit/mailitwindow.cpp
@@ -15,12 +15,13 @@
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qwhatsthis.h>
+#include <qmessagebox.h>
#include "mailitwindow.h"
MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
: QMainWindow(parent, name, WStyle_ContextHelp)
{
currentCaption = "Mailit";
@@ -57,14 +58,13 @@ MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
SLOT(deleteMail(EmailListItem *, bool &)) );
connect(readMail, SIGNAL(viewingMail(Email *)), emailClient,
SLOT(moveMailFront(Email *)) );
connect(emailClient, SIGNAL(newCaption(const QString &)),
this, SLOT(updateCaption(const QString &)) );
- viewingMail = FALSE;
-
+ viewingMail = FALSE;
}
MailItWindow::~MailItWindow()
{
}
@@ -81,12 +81,13 @@ void MailItWindow::compose()
{
viewingMail = FALSE;
emailClient->hide();
readMail->hide();
views->raiseWidget(writeMail);
writeMail->setAddressList(emailClient->getAdrListRef());
+ writeMail->newMail();
setCaption( tr( "Write mail" ) );
}
void MailItWindow::composeReply(Email &mail, bool& replyAll)
{
compose();
@@ -110,12 +111,33 @@ void MailItWindow::showEmailClient()
}
void MailItWindow::viewMail(QListView *view, Email *mail)
{
viewingMail = TRUE;
emailClient->hide();
+
+ int result=0;
+
+ if ((mail->received)&&(!mail->downloaded))
+ {
+ QMessageBox mb( tr("Mail not downloaded"),
+ tr("The mail you have clicked \n"
+ "has not been downloaded yet.\n "
+ "Would you like to do it now ?"),
+ QMessageBox::Information,
+ QMessageBox::Yes | QMessageBox::Default,
+ QMessageBox::No | QMessageBox::Escape,0 );
+
+ result=mb.exec();
+
+ if (result==QMessageBox::Yes)
+ {
+ emailClient->download(mail);
+ }
+ }
+
readMail->update(view, mail);
views->raiseWidget(readMail);
setCaption( tr( "Examine mail" ) );
}
void MailItWindow::updateMailView(Email *mail)
diff --git a/noncore/unsupported/mailit/popclient.cpp b/noncore/unsupported/mailit/popclient.cpp
index 67306be..6105d09 100644
--- a/noncore/unsupported/mailit/popclient.cpp
+++ b/noncore/unsupported/mailit/popclient.cpp
@@ -57,13 +57,13 @@ void PopClient::newConnection(QString target, int port)
}
status = Init;
socket->connectToHost(target, port);
receiving = TRUE;
- selected = FALSE;
+ //selected = FALSE;
emit updateStatus("DNS lookup");
}
void PopClient::setAccount(QString popUser, QString popPasswd)
{
@@ -181,19 +181,20 @@ void PopClient::incomingData()
//messages deleted from server, reload all
if (newMessages < lastSync)
lastSync = 0;
messageCount = 1;
}
- if (selected) {
+ if (selected) {
int *ptr = mailList->first();
if (ptr != 0) {
newMessages++; //to ensure no early jumpout
- messageCount = *(mailList->first());
- } else newMessages = 0;
- }
+ messageCount = *ptr;
+ } else newMessages = 0;
+ }
+
} else errorHandling(ErrUnknownResponse);
}
//Read message number x, count upwards to messageCount
case List: {
if (messageCount <= newMessages) {
*stream << "LIST " << messageCount << "\r\n";
@@ -201,18 +202,18 @@ void PopClient::incomingData()
temp2.setNum(newMessages - lastSync);
temp.setNum(messageCount - lastSync);
if (!selected) {
emit updateStatus(tr("Retrieving ") + temp + "/" + temp2);
} else {
//completing a previously closed transfer
- if ( (messageCount - lastSync) <= 0) {
+ /* if ( (messageCount - lastSync) <= 0) {
temp.setNum(messageCount);
emit updateStatus(tr("Previous message ") + temp);
- } else {
+ } else {*/
emit updateStatus(tr("Completing message ") + temp);
- }
+ //}
}
break;
} else {
emit updateStatus(tr("No new Messages"));
status = Quit;
}
@@ -234,13 +235,13 @@ void PopClient::incomingData()
}
}
}
//Read message number x, count upwards to messageCount
case Retr: {
if (status != Quit) {
- if (mailSize <= headerLimit)
+ if ((selected)||(mailSize <= headerLimit))
{
*stream << "RETR " << messageCount << "\r\n";
} else { //only header
*stream << "TOP " << messageCount << " 0\r\n";
}
messageCount++;
@@ -269,56 +270,42 @@ void PopClient::incomingData()
}
emit downloadedSize(message.length());
int x = message.find("\r\n.\r\n",-5);
if (x == -1) {
break;
} else { //message reach entire size
- //complete mail downloaded
- //if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){
- if ( mailSize <= headerLimit)
+
+ if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active
{
emit newMessage(message, messageCount-1, mailSize, TRUE);
} else { //incomplete mail downloaded
emit newMessage(message, messageCount-1, mailSize, FALSE);
}
- if (messageCount > newMessages) //that was the last message
+
+ if ((messageCount > newMessages)||(selected)) //last message ?
+ {
status = Quit;
- else { //ask for new message
if (selected) { //grab next from queue
- int *ptr = mailList->next();
- if (ptr != 0) {
- messageCount = *ptr;
- *stream << "LIST " << messageCount << "\r\n";
- status = Size;
- //completing a previously closed transfer
- if ( (messageCount - lastSync) <= 0) {
- temp.setNum(messageCount);
- emit updateStatus(tr("Previous message ") + temp);
- } else {
- temp.setNum(messageCount - lastSync);
- emit updateStatus(tr("Completing message ") + temp);
- }
- break;
- } else {
newMessages--;
status = Quit;
}
- } else {
+ }
+ else
+ {
*stream << "LIST " << messageCount << "\r\n";
status = Size;
temp2.setNum(newMessages - lastSync);
temp.setNum(messageCount - lastSync);
emit updateStatus(tr("Retrieving ") + temp + "/" + temp2);
break;
- }
+ }
}
}
if (status != Quit)
break;
- }
}
case Quit: {
*stream << "Quit\r\n";
status = Done;
int newM = newMessages - lastSync;
if (newM > 0) {
@@ -333,35 +320,6 @@ void PopClient::incomingData()
emit mailTransfered(newM);
break;
}
}
}
-
-// if( bAPOPAuthentication )
-// {
-// if( m_strTimeStamp.IsEmpty() )
-// {
-// SetLastError("Apop error!");
-// return false;
-// }
-// strMD5Source = m_strTimeStamp+pszPassword;
-// strMD5Dst = MD5_GetMD5( (BYTE*)(const char*)strMD5Source , strMD5Source.GetLength() );
-// sprintf(msg , "apop %s %s\r\n" , pszUser , strMD5Dst);
-// ret = send(m_sPop3Socket , msg , strlen(msg) , NULL);
-// if(ret == SOCKET_ERROR)
-// {
-// SetLastError("Socket error!");
-// m_bSocketOK = false;
-// m_bConnected = false;
-// return false;
-// }
-// if( !GetSocketResult(&strResult , COMMAND_END_FLAG) )
-// return false;
-// if( 0 == strResult.Find('-' , 0) )
-// {
-// SetLastError("Username or Password error!");
-// return false;
-// }
-// m_bConnected = true;
-
-// }
diff --git a/noncore/unsupported/mailit/writemail.cpp b/noncore/unsupported/mailit/writemail.cpp
index 0336c83..dcf0c6e 100644
--- a/noncore/unsupported/mailit/writemail.cpp
+++ b/noncore/unsupported/mailit/writemail.cpp
@@ -120,22 +120,22 @@ void WriteMail::init()
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"));
+ QWhatsThis::add(emailInput,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"));
+ QWhatsThis::add(recipientsBox,QWidget::tr("Choose 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"));
@@ -145,13 +145,12 @@ void WriteMail::init()
void WriteMail::reject()
{
emit cancelMail();
}
-// need to insert date
void WriteMail::accept()
{
QStringList attachedFiles, attachmentsType;
int idCount = 0;
if (toInput->text() == "")
@@ -249,19 +248,30 @@ void WriteMail::attachFile()
addAtt->showMaximized();
}
void WriteMail::reply(Email replyMail, bool replyAll)
{
int pos;
+ QString ccRecipients;
mail = replyMail;
mail.files.clear();
toInput->setText(mail.fromMail);
- //replyAll ? ccInput->setText(mail.c)
+ if (replyAll)
+ {
+ for (QStringList::Iterator it = mail.carbonCopies.begin();it != mail.carbonCopies.end(); ++it)
+ {
+ ccRecipients.append(*it);
+ ccRecipients.append(";");
+ }
+ ccRecipients.truncate(ccRecipients.length()-1); //no ; at the end
+ ccInput->setText(ccRecipients);
+ }
+
addRecipients(replyAll);
subjectInput->setText(tr("Re: ") + mail.subject);
pos = 0;
mail.body.insert(pos, ">");
@@ -318,29 +328,28 @@ bool WriteMail::getRecipients(bool ccField)
return TRUE;
}
void WriteMail::addRecipients()
{
-
- addRecipients(false);
+ toInput->isVisible() ? addRecipients(false) : addRecipients(true);
}
-
+
void WriteMail::addRecipients(bool ccField)
{
QString recipients = "";
mail.recipients.clear();
QListViewItem *item = addressView->firstChild();
while (item != NULL) {
if ( item->isSelected() ) {
if (recipients == "") {
- recipients = item->text(0);
+ recipients = item->text(1);
} else {
- recipients += "; " + item->text(0);
+ recipients += "; " + item->text(1);
}
}
item = item->nextSibling();
}
ccField ? ccInput->setText(recipients):toInput->setText(recipients);
@@ -373,9 +382,8 @@ void WriteMail::setRecipient(const QString &recipient)
void WriteMail::newMail()
{
toInput->clear();
subjectInput->clear();
emailInput->clear();
- //to clear selected
setAddressList(addressList);
}