summaryrefslogtreecommitdiff
path: root/noncore/unsupported/mailit
authorgroucho <groucho>2003-04-29 08:04:34 (UTC)
committer groucho <groucho>2003-04-29 08:04:34 (UTC)
commitf09f685be0540e98cc33bc4f664a812aed756926 (patch) (unidiff)
tree10a2193eafd1dc0ae25cd458f3bfa9f0f23522e1 /noncore/unsupported/mailit
parente096c9d1f2be1ec74ede583fc4221871a56ef508 (diff)
downloadopie-f09f685be0540e98cc33bc4f664a812aed756926.zip
opie-f09f685be0540e98cc33bc4f664a812aed756926.tar.gz
opie-f09f685be0540e98cc33bc4f664a812aed756926.tar.bz2
- added ReplyAll for CC: addressing
- added a download button in mail view - smaller layout fixes - now it's getting to be real useful
Diffstat (limited to 'noncore/unsupported/mailit') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/mailit/emailclient.cpp140
-rw-r--r--noncore/unsupported/mailit/emailclient.h11
-rw-r--r--noncore/unsupported/mailit/emailhandler.cpp4
-rw-r--r--noncore/unsupported/mailit/emailhandler.h1
-rw-r--r--noncore/unsupported/mailit/mailitwindow.cpp3
-rw-r--r--noncore/unsupported/mailit/popclient.cpp14
-rw-r--r--noncore/unsupported/mailit/readmail.cpp64
-rw-r--r--noncore/unsupported/mailit/readmail.h8
-rw-r--r--noncore/unsupported/mailit/writemail.cpp35
9 files changed, 206 insertions, 74 deletions
diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp
index dff1888..2cedc51 100644
--- a/noncore/unsupported/mailit/emailclient.cpp
+++ b/noncore/unsupported/mailit/emailclient.cpp
@@ -19,6 +19,7 @@
19**********************************************************************/ 19**********************************************************************/
20#include <qapplication.h> 20#include <qapplication.h>
21#include <qmessagebox.h> 21#include <qmessagebox.h>
22#include <qvbox.h>
22#include <qfile.h> 23#include <qfile.h>
23#include <qcheckbox.h> 24#include <qcheckbox.h>
24#include <qmenubar.h> 25#include <qmenubar.h>
@@ -26,6 +27,7 @@
26#include <qwhatsthis.h> 27#include <qwhatsthis.h>
27#include <qpe/resource.h> 28#include <qpe/resource.h>
28#include "emailclient.h" 29#include "emailclient.h"
30#include "writemail.h"
29 31
30QCollection::Item AccountList::newItem(QCollection::Item d) 32QCollection::Item AccountList::newItem(QCollection::Item d)
31{ 33{
@@ -40,7 +42,7 @@ MailAccount* AccountList::dupl(MailAccount *in)
40 42
41EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl ) 43EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
42 : QMainWindow( parent, name, fl ) 44 : QMainWindow( parent, name, fl )
43{ 45{
44 emailHandler = new EmailHandler(); 46 emailHandler = new EmailHandler();
45 addressList = new AddressList(); 47 addressList = new AddressList();
46 48
@@ -53,6 +55,8 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
53 55
54 init(); 56 init();
55 57
58
59
56 connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) ); 60 connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) );
57 61
58 connect(emailHandler, SIGNAL(smtpError(int)), this, 62 connect(emailHandler, SIGNAL(smtpError(int)), this,
@@ -65,8 +69,7 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
65 69
66 connect(inboxView, SIGNAL(pressed(QListViewItem *)), this, SLOT(inboxItemPressed()) ); 70 connect(inboxView, SIGNAL(pressed(QListViewItem *)), this, SLOT(inboxItemPressed()) );
67 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemReleased()) ); 71 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemReleased()) );
68 72
69
70 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this, 73 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this,
71 SLOT(mailArrived(const Email &, bool)) ); 74 SLOT(mailArrived(const Email &, bool)) );
72 connect(emailHandler, SIGNAL(mailTransfered(int)), this, 75 connect(emailHandler, SIGNAL(mailTransfered(int)), this,
@@ -84,6 +87,11 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
84 lineShift = "\r\n"; 87 lineShift = "\r\n";
85 88
86 mailboxView->setCurrentTab(0); //ensure that inbox has focus 89 mailboxView->setCurrentTab(0); //ensure that inbox has focus
90
91 /*channel = new QCopChannel( "QPE/Application/mailit", this );
92 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
93 this, SLOT(receive(const QCString&, const QByteArray&)) );*/
94
87} 95}
88 96
89 97
@@ -104,29 +112,8 @@ EmailClient::~EmailClient()
104 112
105void EmailClient::init() 113void EmailClient::init()
106{ 114{
107 statusBar = new QStatusBar(this); 115 initStatusBar(this);
108 statusBar->setSizeGripEnabled(FALSE); 116
109
110 status1Label = new QLabel( tr("Idle"), statusBar);
111 status2Label = new QLabel("", statusBar);
112 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
113 status2Label, SLOT(setText(const QString &)) );
114 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
115 status2Label, SLOT(setText(const QString &)) );
116
117 progressBar = new QProgressBar(statusBar);
118
119 connect(emailHandler, SIGNAL(mailboxSize(int)),
120 this, SLOT(setTotalSize(int)) );
121 connect(emailHandler, SIGNAL(currentMailSize(int)),
122 this, SLOT(setMailSize(int)) );
123 connect(emailHandler, SIGNAL(downloadedSize(int)),
124 this, SLOT(setDownloadedSize(int)) );
125
126 statusBar->addWidget(status1Label);
127 statusBar->addWidget(progressBar);
128 statusBar->addWidget(status2Label);
129
130 setToolBarsMovable(FALSE); 117 setToolBarsMovable(FALSE);
131 118
132 bar = new QToolBar(this); 119 bar = new QToolBar(this);
@@ -194,8 +181,11 @@ void EmailClient::init()
194 inboxView->addColumn( tr( "Date" ) ); 181 inboxView->addColumn( tr( "Date" ) );
195 inboxView->setMinimumSize( QSize( 0, 0 ) ); 182 inboxView->setMinimumSize( QSize( 0, 0 ) );
196 inboxView->setAllColumnsShowFocus(TRUE); 183 inboxView->setAllColumnsShowFocus(TRUE);
197 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" 184 QWhatsThis::add(inboxView,QWidget::tr("This is the inbox view.\n"
198 " A blue attachment icon shows whether this mail has attachments.")); 185 "It keeps the fetched mail which can be \n"
186 "viewed by double clicking the entry.\n"
187 "blue attachment icon shows whether this \n"
188 "mailhas attachments.\n"));
199 189
200 grid_2->addWidget( inboxView, 2, 0 ); 190 grid_2->addWidget( inboxView, 2, 0 );
201 mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) ); 191 mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) );
@@ -210,7 +200,9 @@ void EmailClient::init()
210 outboxView->addColumn( tr( "Subject" ) ); 200 outboxView->addColumn( tr( "Subject" ) );
211 outboxView->setAllColumnsShowFocus(TRUE); 201 outboxView->setAllColumnsShowFocus(TRUE);
212 202
213 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.")); 203 QWhatsThis::add(outboxView,QWidget::tr("This is the outbox view.\n"
204 "It keeps the queued mails to send which can be \n"
205 "reviewed by double clicking the entry."));
214 grid_3->addWidget( outboxView, 0, 0 ); 206 grid_3->addWidget( outboxView, 0, 0 );
215 mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) ); 207 mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) );
216 208
@@ -218,6 +210,33 @@ void EmailClient::init()
218 210
219} 211}
220 212
213void EmailClient::initStatusBar(QWidget* parent)
214{
215 statusBar = new QStatusBar(parent);
216 statusBar->setSizeGripEnabled(FALSE);
217
218 status1Label = new QLabel( tr("Idle"), statusBar);
219 status2Label = new QLabel("", statusBar);
220 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
221 status2Label, SLOT(setText(const QString &)) );
222 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
223 status2Label, SLOT(setText(const QString &)) );
224
225 progressBar = new QProgressBar(statusBar);
226
227 connect(emailHandler, SIGNAL(mailboxSize(int)),
228 this, SLOT(setTotalSize(int)) );
229 connect(emailHandler, SIGNAL(currentMailSize(int)),
230 this, SLOT(setMailSize(int)) );
231 connect(emailHandler, SIGNAL(downloadedSize(int)),
232 this, SLOT(setDownloadedSize(int)) );
233
234 statusBar->addWidget(status1Label);
235 statusBar->addWidget(progressBar);
236 statusBar->addWidget(status2Label);
237
238}
239
221void EmailClient::compose() 240void EmailClient::compose()
222{ 241{
223 emit composeRequested(); 242 emit composeRequested();
@@ -319,7 +338,7 @@ void EmailClient::getNewMail() {
319 progressBar->reset(); 338 progressBar->reset();
320 339
321 //get any previous mails not downloaded and add to queue 340 //get any previous mails not downloaded and add to queue
322 mailDownloadList.clear(); 341 /*mailDownloadList.clear();
323 Email *mailPtr; 342 Email *mailPtr;
324 item = (EmailListItem *) inboxView->firstChild(); 343 item = (EmailListItem *) inboxView->firstChild();
325 while (item != NULL) { 344 while (item != NULL) {
@@ -328,7 +347,7 @@ void EmailClient::getNewMail() {
328 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); 347 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
329 } 348 }
330 item = (EmailListItem *) item->nextSibling(); 349 item = (EmailListItem *) item->nextSibling();
331 } 350 }*/
332 351
333 emailHandler->getMailHeaders(); 352 emailHandler->getMailHeaders();
334 353
@@ -338,7 +357,7 @@ void EmailClient::getAllNewMail()
338{ 357{
339 allAccounts = TRUE; 358 allAccounts = TRUE;
340 currentAccount = accountList.first(); 359 currentAccount = accountList.first();
341 getNewMail(); 360 getNewMail();
342} 361}
343 362
344void EmailClient::mailArrived(const Email &mail, bool fromDisk) 363void EmailClient::mailArrived(const Email &mail, bool fromDisk)
@@ -348,9 +367,10 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
348 int thisMailId; 367 int thisMailId;
349 emailHandler->parse(mail.rawMail, lineShift, &newMail); 368 emailHandler->parse(mail.rawMail, lineShift, &newMail);
350 mailconf->setGroup(newMail.id); 369 mailconf->setGroup(newMail.id);
351 370
352 if (fromDisk) 371 if (fromDisk)
353 { 372 {
373
354 newMail.downloaded = mailconf->readBoolEntry("downloaded"); 374 newMail.downloaded = mailconf->readBoolEntry("downloaded");
355 newMail.size = mailconf->readNumEntry("size"); 375 newMail.size = mailconf->readNumEntry("size");
356 newMail.serverId = mailconf->readNumEntry("serverid"); 376 newMail.serverId = mailconf->readNumEntry("serverid");
@@ -358,6 +378,7 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
358 } 378 }
359 else 379 else
360 { //mail arrived from server 380 { //mail arrived from server
381
361 newMail.serverId = mail.serverId; 382 newMail.serverId = mail.serverId;
362 newMail.size = mail.size; 383 newMail.size = mail.size;
363 newMail.downloaded = mail.downloaded; 384 newMail.downloaded = mail.downloaded;
@@ -918,7 +939,7 @@ void EmailClient::inboxItemReleased()
918 //killTimer(timerID); 939 //killTimer(timerID);
919} 940}
920 941
921void EmailClient::timerEvent(QTimerEvent *e) 942/*void EmailClient::timerEvent(QTimerEvent *e)
922{ 943{
923 /*killTimer(timerID); 944 /*killTimer(timerID);
924 945
@@ -935,8 +956,8 @@ void EmailClient::timerEvent(QTimerEvent *e)
935 action->exec(QCursor::pos()); 956 action->exec(QCursor::pos());
936 957
937 if (action) delete action; 958 if (action) delete action;
938 */ 959
939} 960}*/
940 961
941Email* EmailClient::getCurrentMail() 962Email* EmailClient::getCurrentMail()
942{ 963{
@@ -953,8 +974,6 @@ void EmailClient::download(Email* mail)
953 974
954 tempMailDownloadList.clear(); 975 tempMailDownloadList.clear();
955 tempMailDownloadList.sizeInsert(mail->serverId, mail->size); 976 tempMailDownloadList.sizeInsert(mail->serverId, mail->size);
956 if (accountList.count()>0)
957 qDebug("Accounts present");
958 977
959 acc=accountList.at(mail->fromAccountId-1); 978 acc=accountList.at(mail->fromAccountId-1);
960 if (acc) 979 if (acc)
@@ -966,3 +985,48 @@ void EmailClient::download(Email* mail)
966 QMessageBox::warning(qApp->activeWindow(), 985 QMessageBox::warning(qApp->activeWindow(),
967 tr("No account associated"), tr("There is no active account \nassociated to this mail\n it can not be downloaded"), "Abort\n"); 986 tr("No account associated"), tr("There is no active account \nassociated to this mail\n it can not be downloaded"), "Abort\n");
968} 987}
988
989void EmailClient::receive(const QCString& msg, const QByteArray& data)
990{
991 /*if (msg=="getMail()")
992 {
993 /*QDialog qd(qApp->activeWindow(),"Getting mail",true);
994 QVBoxLayout *vbProg = new QVBoxLayout( &qd );
995
996 initStatusBar(&qd);
997
998 if (statusBar==0)
999 {
1000 qDebug("No Bar ...");
1001 //statusBar=new ProgressBar(&qd);
1002 }
1003 statusBar->show();
1004 vbProg->addWidget(statusBar);
1005 qd.showMaximized();
1006 qd.show();
1007 emit getAllNewMail();
1008 //qd.exec();
1009 }
1010 else if (msg=="compose()")
1011 {
1012 QDialog qd(qApp->activeWindow(),"Getting mail",true);
1013
1014 WriteMail wm(&qd,"write new mail");
1015 QVBoxLayout vbProg( &qd );
1016
1017 wm.showMaximized();
1018 vbProg.addWidget(&wm);
1019
1020 qd.showMaximized();
1021
1022 emit composeRequested();
1023 qd.exec();
1024
1025 QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
1026 }
1027
1028 else if (msg=="dialog()")
1029 {
1030 QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
1031 }*/
1032}
diff --git a/noncore/unsupported/mailit/emailclient.h b/noncore/unsupported/mailit/emailclient.h
index 549683b..994fec5 100644
--- a/noncore/unsupported/mailit/emailclient.h
+++ b/noncore/unsupported/mailit/emailclient.h
@@ -41,6 +41,7 @@
41#include <qdir.h> 41#include <qdir.h>
42#include <stdlib.h> 42#include <stdlib.h>
43#include <opie/otabwidget.h> 43#include <opie/otabwidget.h>
44#include <qpe/qcopenvelope_qws.h>
44#include <qtimer.h> 45#include <qtimer.h>
45 46
46#include "emailhandler.h" 47#include "emailhandler.h"
@@ -70,10 +71,9 @@ public:
70 EmailClient( QWidget* parent, const char* name, WFlags fl = 0 ); 71 EmailClient( QWidget* parent, const char* name, WFlags fl = 0 );
71 ~EmailClient(); 72 ~EmailClient();
72 AddressList* getAdrListRef(); 73 AddressList* getAdrListRef();
73 void download(Email*);
74 74
75protected: 75protected:
76 void timerEvent(QTimerEvent*); 76 //void timerEvent(QTimerEvent*);
77 77
78signals: 78signals:
79 void composeRequested(); 79 void composeRequested();
@@ -116,13 +116,18 @@ public slots:
116 void setMailSize(int); 116 void setMailSize(int);
117 void setDownloadedSize(int); 117 void setDownloadedSize(int);
118 void moveMailFront(Email *mailPtr); 118 void moveMailFront(Email *mailPtr);
119 void download(Email*);
119/* void reply(); 120/* void reply();
120 void replyAll(); 121 void replyAll();
121 void forward(); 122 void forward();
122 void remove();*/ 123 void remove();*/
123 124
125private slots:
126 void receive(const QCString&, const QByteArray&);
127
124private: 128private:
125 void init(); 129 void init();
130 void initStatusBar(QWidget*);
126 void readMail(); 131 void readMail();
127 QString getPath(bool enclosurePath); 132 QString getPath(bool enclosurePath);
128 void readSettings(); 133 void readSettings();
@@ -146,6 +151,8 @@ private:
146 QString lineShift; 151 QString lineShift;
147 MailAccount account, *currentAccount; 152 MailAccount account, *currentAccount;
148 153
154 QCopChannel* channel;
155
149 QToolBar *bar; 156 QToolBar *bar;
150 QProgressBar *progressBar; 157 QProgressBar *progressBar;
151 QStatusBar *statusBar; 158 QStatusBar *statusBar;
diff --git a/noncore/unsupported/mailit/emailhandler.cpp b/noncore/unsupported/mailit/emailhandler.cpp
index fbbada7..c7b27a0 100644
--- a/noncore/unsupported/mailit/emailhandler.cpp
+++ b/noncore/unsupported/mailit/emailhandler.cpp
@@ -39,6 +39,8 @@ Enclosure* EnclosureList::dupl(Enclosure *in)
39 39
40EmailHandler::EmailHandler() 40EmailHandler::EmailHandler()
41{ 41{
42 qDebug("EMailHandler::EmailHandler");
43
42 smtpClient = new SmtpClient(); 44 smtpClient = new SmtpClient();
43 popClient = new PopClient(); 45 popClient = new PopClient();
44 46
@@ -115,6 +117,7 @@ void EmailHandler::getMailHeaders()
115 117
116 headers = TRUE; 118 headers = TRUE;
117 popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all 119 popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all
120 qDebug("Initiating connection");
118 popClient->newConnection(mailAccount.popServer, 110); 121 popClient->newConnection(mailAccount.popServer, 110);
119} 122}
120 123
@@ -626,3 +629,4 @@ void EmailHandler::cancel()
626 popClient->errorHandling(ErrCancel); 629 popClient->errorHandling(ErrCancel);
627 smtpClient->errorHandling(ErrCancel); 630 smtpClient->errorHandling(ErrCancel);
628} 631}
632
diff --git a/noncore/unsupported/mailit/emailhandler.h b/noncore/unsupported/mailit/emailhandler.h
index b645868..5b59f65 100644
--- a/noncore/unsupported/mailit/emailhandler.h
+++ b/noncore/unsupported/mailit/emailhandler.h
@@ -28,6 +28,7 @@
28#include <qfile.h> 28#include <qfile.h>
29#include <qstringlist.h> 29#include <qstringlist.h>
30#include <qcollection.h> 30#include <qcollection.h>
31#include <qpe/qcopenvelope_qws.h>
31 32
32#include "smtpclient.h" 33#include "smtpclient.h"
33#include "popclient.h" 34#include "popclient.h"
diff --git a/noncore/unsupported/mailit/mailitwindow.cpp b/noncore/unsupported/mailit/mailitwindow.cpp
index ffee67e..a111241 100644
--- a/noncore/unsupported/mailit/mailitwindow.cpp
+++ b/noncore/unsupported/mailit/mailitwindow.cpp
@@ -61,6 +61,9 @@ MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
61 61
62 connect(emailClient, SIGNAL(newCaption(const QString &)), 62 connect(emailClient, SIGNAL(newCaption(const QString &)),
63 this, SLOT(updateCaption(const QString &)) ); 63 this, SLOT(updateCaption(const QString &)) );
64
65 connect(readMail, SIGNAL(download(Email *)), emailClient, SLOT(download(Email*)) );
66
64 viewingMail = FALSE; 67 viewingMail = FALSE;
65} 68}
66 69
diff --git a/noncore/unsupported/mailit/popclient.cpp b/noncore/unsupported/mailit/popclient.cpp
index 6105d09..fedc4e2 100644
--- a/noncore/unsupported/mailit/popclient.cpp
+++ b/noncore/unsupported/mailit/popclient.cpp
@@ -29,6 +29,7 @@ extern "C" {
29 29
30PopClient::PopClient() 30PopClient::PopClient()
31{ 31{
32
32 socket = new QSocket(this, "popClient"); 33 socket = new QSocket(this, "popClient");
33 connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int))); 34 connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int)));
34 connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished())); 35 connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished()));
@@ -117,6 +118,7 @@ void PopClient::incomingData()
117 char md5Digest[16]; 118 char md5Digest[16];
118// if ( !socket->canReadLine() ) 119// if ( !socket->canReadLine() )
119// return; 120// return;
121
120 122
121 response = socket->readLine(); 123 response = socket->readLine();
122 124
@@ -151,19 +153,20 @@ void PopClient::incomingData()
151 status = Pass; 153 status = Pass;
152 } 154 }
153 155
154 break; 156 break;
155 } 157 }
156 158
157 case Pass: { 159 case Pass: {
158 *stream << "PASS " << popPassword << "\r\n"; 160 *stream << "PASS " << popPassword << "\r\n";
159 status = Stat; 161 status = Stat;
162
160 break; 163 break;
161 } 164 }
162 //ask for number of messages 165 //ask for number of messages
163 case Stat: { 166 case Stat: {
164 if (response[0] == '+') { 167 if (response[0] == '+') {
165 *stream << "STAT" << "\r\n"; 168 *stream << "STAT" << "\r\n";
166 status = Mcnt; 169 status = Mcnt;
167 } else errorHandling(ErrLoginFailed); 170 } else errorHandling(ErrLoginFailed);
168 break; 171 break;
169 } 172 }
@@ -179,8 +182,8 @@ void PopClient::incomingData()
179 182
180 if (synchronize) { 183 if (synchronize) {
181 //messages deleted from server, reload all 184 //messages deleted from server, reload all
182 if (newMessages < lastSync) 185 if (newMessages < lastSync)
183 lastSync = 0; 186 lastSync = 0;
184 messageCount = 1; 187 messageCount = 1;
185 } 188 }
186 189
@@ -273,7 +276,6 @@ void PopClient::incomingData()
273 if (x == -1) { 276 if (x == -1) {
274 break; 277 break;
275 } else { //message reach entire size 278 } else { //message reach entire size
276
277 if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active 279 if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active
278 { 280 {
279 emit newMessage(message, messageCount-1, mailSize, TRUE); 281 emit newMessage(message, messageCount-1, mailSize, TRUE);
diff --git a/noncore/unsupported/mailit/readmail.cpp b/noncore/unsupported/mailit/readmail.cpp
index 4eae7f6..1682675 100644
--- a/noncore/unsupported/mailit/readmail.cpp
+++ b/noncore/unsupported/mailit/readmail.cpp
@@ -19,8 +19,10 @@
19**********************************************************************/ 19**********************************************************************/
20#include "readmail.h" 20#include "readmail.h"
21#include <qimage.h> 21#include <qimage.h>
22#include <qwhatsthis.h>
22#include <qmime.h> 23#include <qmime.h>
23#include <qaction.h> 24#include <qaction.h>
25#include <qpopupmenu.h>
24#include <qpe/resource.h> 26#include <qpe/resource.h>
25 27
26ReadMail::ReadMail( QWidget* parent, const char* name, WFlags fl ) 28ReadMail::ReadMail( QWidget* parent, const char* name, WFlags fl )
@@ -42,6 +44,8 @@ void ReadMail::init()
42{ 44{
43 setToolBarsMovable(FALSE); 45 setToolBarsMovable(FALSE);
44 46
47 QPopupMenu* mailaction=new QPopupMenu(this);
48
45 bar = new QToolBar(this); 49 bar = new QToolBar(this);
46 bar->setHorizontalStretchable( TRUE ); 50 bar->setHorizontalStretchable( TRUE );
47 51
@@ -55,17 +59,11 @@ void ReadMail::init()
55 59
56 bar = new QToolBar(this); 60 bar = new QToolBar(this);
57 61
58 //reply dependant on viewing inbox 62 downloadButton = new QAction( tr( "Download" ), Resource::loadPixmap( "mailit/download" ),QString::null, 0, this, 0 );
59 replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ), 63 connect(downloadButton, SIGNAL(activated()), this, SLOT(download()) );
60 QString::null, 0, this, 0 ); 64 downloadButton->setWhatsThis(tr("Click here to download the selected mail"));
61 connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) );
62 replyButton->setWhatsThis(tr("Click here to reply to the selected mail"));
63
64 forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
65 QString::null, 0, this, 0 );
66 connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) );
67 forwardButton->setWhatsThis(tr("Click here to forward the selected mail"));
68 65
66
69 previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 ); 67 previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
70 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) ); 68 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) );
71 previousButton->addTo(bar); 69 previousButton->addTo(bar);
@@ -94,6 +92,23 @@ void ReadMail::init()
94 "<LI><B>Plain</B> shows the mail as standard plain text</LI>" 92 "<LI><B>Plain</B> shows the mail as standard plain text</LI>"
95 "Click here to switch between those view modes" )); 93 "Click here to switch between those view modes" ));
96 94
95 //reply dependant on viewing inbox
96 replyButton = new QToolButton(Resource::loadPixmap("mailit/reply"),tr("reply"),tr("reply to mail"), this,SLOT(reply()),bar);
97 QWhatsThis::add(replyButton,tr("Click here to reply to the selected mail\nPress and hold for more options."));
98 replyButton->setPopup(mailaction);
99
100 replyAllButton = new QAction( tr( "Reply all" ), Resource::loadPixmap( "mailit/reply" ),QString::null, 0, this, 0 );
101 connect(replyAllButton, SIGNAL(activated()), this, SLOT(replyAll()));
102 replyAllButton->setWhatsThis(tr("Click here to reply to the selected mail to CC: addresses also"));
103 replyAllButton->addTo(mailaction);
104
105 forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
106 QString::null, 0, this, 0 );
107 connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()));
108 forwardButton->setWhatsThis(tr("Click here to forward the selected mail"));
109 forwardButton->addTo(mailaction);
110
111
97 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); 112 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 );
98 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); 113 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) );
99 deleteButton->addTo(bar); 114 deleteButton->addTo(bar);
@@ -119,19 +134,26 @@ void ReadMail::updateView()
119 mail->read = TRUE; //mark as read 134 mail->read = TRUE; //mark as read
120 inbox = mail->received; 135 inbox = mail->received;
121 136
122 replyButton->removeFrom(mailMenu); 137 replyButton->setEnabled(false);
123 replyButton->removeFrom(bar); 138 /*replyButton->removeFrom(bar);
124 forwardButton->removeFrom(mailMenu); 139 forwardButton->removeFrom(mailMenu);
125 forwardButton->removeFrom(bar); 140 forwardButton->removeFrom(bar);*/
141 downloadButton->removeFrom(bar);
142
143 //downloadButton->setEnabled(!mail->downloaded);
126 144
145
127 if (inbox == TRUE) { 146 if (inbox == TRUE) {
128 replyButton->addTo(bar); 147 replyButton->setEnabled(true);
129 replyButton->addTo(mailMenu); 148 /*replyButton->addTo(mailMenu);
130 forwardButton->addTo(bar); 149 forwardButton->addTo(bar);
131 forwardButton->addTo(mailMenu); 150 forwardButton->addTo(mailMenu);*/
132 151
133 152
134 if (!mail->downloaded) { 153 if (!mail->downloaded) {
154
155 downloadButton->addTo(bar);
156
135 //report currently viewed mail so that it will be 157 //report currently viewed mail so that it will be
136 //placed first in the queue of new mails to download 158 //placed first in the queue of new mails to download
137 emit viewingMail(mail); 159 emit viewingMail(mail);
@@ -357,6 +379,11 @@ void ReadMail::viewAttachments()
357 379
358void ReadMail::reply() 380void ReadMail::reply()
359{ 381{
382 emit replyRequested(*mail, (bool&)FALSE);
383}
384
385void ReadMail::replyAll()
386{
360 emit replyRequested(*mail, (bool&)TRUE); 387 emit replyRequested(*mail, (bool&)TRUE);
361} 388}
362 389
@@ -365,3 +392,8 @@ void ReadMail::forward()
365 emit forwardRequested(*mail); 392 emit forwardRequested(*mail);
366} 393}
367 394
395void ReadMail::download()
396{
397 emit download(mail);
398}
399
diff --git a/noncore/unsupported/mailit/readmail.h b/noncore/unsupported/mailit/readmail.h
index df32c34..6700595 100644
--- a/noncore/unsupported/mailit/readmail.h
+++ b/noncore/unsupported/mailit/readmail.h
@@ -28,6 +28,7 @@
28#include <qlistview.h> 28#include <qlistview.h>
29#include <qlayout.h> 29#include <qlayout.h>
30#include <qtextview.h> 30#include <qtextview.h>
31#include <qtoolbutton.h>
31 32
32#include "emailhandler.h" 33#include "emailhandler.h"
33#include "emaillistitem.h" 34#include "emaillistitem.h"
@@ -50,6 +51,7 @@ signals:
50 void forwardRequested(Email&); 51 void forwardRequested(Email&);
51 void removeItem(EmailListItem *, bool &); 52 void removeItem(EmailListItem *, bool &);
52 void viewingMail(Email *); 53 void viewingMail(Email *);
54 void download (Email*);
53 55
54public slots: 56public slots:
55 void close(); 57 void close();
@@ -59,7 +61,9 @@ public slots:
59 void shiftText(); 61 void shiftText();
60 void viewAttachments(); 62 void viewAttachments();
61 void reply(); 63 void reply();
64 void replyAll();
62 void forward(); 65 void forward();
66 void download();
63 67
64private: 68private:
65 void init(); 69 void init();
@@ -82,8 +86,10 @@ private:
82 QTextView *emailView; 86 QTextView *emailView;
83 QAction *attachmentButton; 87 QAction *attachmentButton;
84 QAction *previousButton; 88 QAction *previousButton;
85 QAction *replyButton; 89 QToolButton *replyButton;
86 QAction *forwardButton; 90 QAction *forwardButton;
91 QAction *replyAllButton;
92 QAction *downloadButton;
87}; 93};
88 94
89#endif // READMAIL_H 95#endif // READMAIL_H
diff --git a/noncore/unsupported/mailit/writemail.cpp b/noncore/unsupported/mailit/writemail.cpp
index dcf0c6e..c75494e 100644
--- a/noncore/unsupported/mailit/writemail.cpp
+++ b/noncore/unsupported/mailit/writemail.cpp
@@ -22,8 +22,7 @@
22#include "writemail.h" 22#include "writemail.h"
23#include <qpe/resource.h> 23#include <qpe/resource.h>
24 24
25WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl ) 25WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl ):QMainWindow( parent, name, fl )
26 : QMainWindow( parent, name, fl )
27{ 26{
28 showingAddressList = FALSE; 27 showingAddressList = FALSE;
29 init(); 28 init();
@@ -259,7 +258,7 @@ void WriteMail::reply(Email replyMail, bool replyAll)
259 toInput->setText(mail.fromMail); 258 toInput->setText(mail.fromMail);
260 259
261 if (replyAll) 260 if (replyAll)
262 { 261 {
263 for (QStringList::Iterator it = mail.carbonCopies.begin();it != mail.carbonCopies.end(); ++it) 262 for (QStringList::Iterator it = mail.carbonCopies.begin();it != mail.carbonCopies.end(); ++it)
264 { 263 {
265 ccRecipients.append(*it); 264 ccRecipients.append(*it);
@@ -268,11 +267,17 @@ void WriteMail::reply(Email replyMail, bool replyAll)
268 ccRecipients.truncate(ccRecipients.length()-1); //no ; at the end 267 ccRecipients.truncate(ccRecipients.length()-1); //no ; at the end
269 ccInput->setText(ccRecipients); 268 ccInput->setText(ccRecipients);
270 } 269 }
271 270 else ccInput->clear();
272 addRecipients(replyAll);
273 271
274 subjectInput->setText(tr("Re: ") + mail.subject); 272 subjectInput->setText(tr("Re: ") + mail.subject);
275 273
274 QString citation=mail.fromMail;
275 citation.append(tr(" wrote on "));
276 citation.append(mail.date);
277 citation.append(":\n");
278
279
280 //mail.body.insert(0,tr("On"));
276 pos = 0; 281 pos = 0;
277 mail.body.insert(pos, ">"); 282 mail.body.insert(pos, ">");
278 while (pos != -1) { 283 while (pos != -1) {
@@ -280,7 +285,7 @@ void WriteMail::reply(Email replyMail, bool replyAll)
280 if (pos != -1) 285 if (pos != -1)
281 mail.body.insert(++pos, ">>"); 286 mail.body.insert(++pos, ">>");
282 } 287 }
283 288 mail.body.insert(0,citation);
284 emailInput->setText(mail.body); 289 emailInput->setText(mail.body);
285} 290}
286 291
@@ -308,9 +313,16 @@ bool WriteMail::getRecipients(bool ccField)
308 QString str, temp; 313 QString str, temp;
309 int pos = 0; 314 int pos = 0;
310 315
311 mail.recipients.clear(); 316 if (ccField)
312 317 {
313 ccField ? temp = ccInput->text() : temp=toInput->text() ; 318 mail.carbonCopies.clear();
319 temp = ccInput->text();
320 }
321 else
322 {
323 mail.recipients.clear();
324 temp=toInput->text() ;
325 }
314 326
315 while ( (pos = temp.find(';')) != -1) { 327 while ( (pos = temp.find(';')) != -1) {
316 str = temp.left(pos).stripWhiteSpace(); 328 str = temp.left(pos).stripWhiteSpace();
@@ -318,13 +330,13 @@ bool WriteMail::getRecipients(bool ccField)
318 if ( str.find('@') == -1) 330 if ( str.find('@') == -1)
319 return false; 331 return false;
320 ccField ? mail.carbonCopies.append(str) : mail.recipients.append(str); 332 ccField ? mail.carbonCopies.append(str) : mail.recipients.append(str);
321 addressList->addContact(str, ""); 333 //addressList->addContact(str, "");
322 } 334 }
323 temp = temp.stripWhiteSpace(); 335 temp = temp.stripWhiteSpace();
324 if ( temp.find('@') == -1) 336 if ( temp.find('@') == -1)
325 return false; 337 return false;
326 ccField ? mail.carbonCopies.append(temp) : mail.recipients.append(temp); 338 ccField ? mail.carbonCopies.append(temp) : mail.recipients.append(temp);
327 addressList->addContact(temp, ""); 339 //addressList->addContact(temp, "");
328 340
329 return TRUE; 341 return TRUE;
330} 342}
@@ -383,6 +395,7 @@ void WriteMail::setRecipient(const QString &recipient)
383void WriteMail::newMail() 395void WriteMail::newMail()
384{ 396{
385 toInput->clear(); 397 toInput->clear();
398 ccInput->clear();
386 subjectInput->clear(); 399 subjectInput->clear();
387 emailInput->clear(); 400 emailInput->clear();
388 setAddressList(addressList); 401 setAddressList(addressList);