summaryrefslogtreecommitdiff
path: root/noncore
authorgroucho <groucho>2003-04-20 07:59:48 (UTC)
committer groucho <groucho>2003-04-20 07:59:48 (UTC)
commit8b85cba50912127ff6a2d048021baf68306481c6 (patch) (unidiff)
treebfd1b377911d05db8e1c816f72fe070d5a5b2ff3 /noncore
parent6b381e438fdeb1757b3278c683349dee9c4ab230 (diff)
downloadopie-8b85cba50912127ff6a2d048021baf68306481c6.zip
opie-8b85cba50912127ff6a2d048021baf68306481c6.tar.gz
opie-8b85cba50912127ff6a2d048021baf68306481c6.tar.bz2
- Added CC: support
- Added mail forwarding - Added icon for selective mail download - Removing mails from mail list via icon - Temporarily disabled mail header download queue
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mailit/emailclient.cpp154
-rw-r--r--noncore/net/mailit/emailclient.h32
-rw-r--r--noncore/net/mailit/emailhandler.cpp17
-rw-r--r--noncore/net/mailit/mailitwindow.cpp40
-rw-r--r--noncore/net/mailit/mailitwindow.h8
-rw-r--r--noncore/net/mailit/readmail.cpp36
-rw-r--r--noncore/net/mailit/readmail.h5
-rw-r--r--noncore/net/mailit/writemail.cpp103
-rw-r--r--noncore/net/mailit/writemail.h9
-rw-r--r--noncore/unsupported/mailit/emailclient.cpp154
-rw-r--r--noncore/unsupported/mailit/emailclient.h32
-rw-r--r--noncore/unsupported/mailit/emailhandler.cpp17
-rw-r--r--noncore/unsupported/mailit/mailitwindow.cpp40
-rw-r--r--noncore/unsupported/mailit/mailitwindow.h8
-rw-r--r--noncore/unsupported/mailit/readmail.cpp36
-rw-r--r--noncore/unsupported/mailit/readmail.h5
-rw-r--r--noncore/unsupported/mailit/writemail.cpp103
-rw-r--r--noncore/unsupported/mailit/writemail.h9
18 files changed, 722 insertions, 86 deletions
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp
index 0d82a9a..ad1e0b4 100644
--- a/noncore/net/mailit/emailclient.cpp
+++ b/noncore/net/mailit/emailclient.cpp
@@ -59,8 +59,12 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
59 connect(emailHandler, SIGNAL(popError(int)), this, 59 connect(emailHandler, SIGNAL(popError(int)), this,
60 SLOT(popError(int)) ); 60 SLOT(popError(int)) );
61 61
62 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) ); 62 connect(inboxView, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(inboxItemSelected()) );
63 connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) ); 63 connect(outboxView, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(outboxItemSelected()) );
64
65 connect(inboxView, SIGNAL(pressed(QListViewItem *)), this, SLOT(inboxItemPressed()) );
66 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemReleased()) );
67
64 68
65 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this, 69 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this,
66 SLOT(mailArrived(const Email &, bool)) ); 70 SLOT(mailArrived(const Email &, bool)) );
@@ -143,10 +147,26 @@ void EmailClient::init()
143 147
144 bar = new QToolBar(this); 148 bar = new QToolBar(this);
145 149
146 getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0); 150 getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar);
151 //connect(setAccountlButton, SIGNAL(activated()), this, SLOT(setCurrentAccount()) );
152 // setAccountButton->addTo(bar);
153 //setAccountButton->addTo(mail);
154
155 /*idCount = 0;
156
157 for (MailAccount* accountPtr = accountList.first(); accountPtr != 0;
158 accountPtr = accountList.next()) {
159
160 selectAccountMenu->insertItem(accountPtr->accountName,this, SLOT(selectAccount(int)), 0, idCount);
161 idCount++;
162 }*/
163 getMailButton->setPopup(selectAccountMenu);
164
165
166 /*getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0);
147 connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) ); 167 connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) );
148 getMailButton->addTo(bar); 168 getMailButton->addTo(bar);*/
149 getMailButton->addTo(mail); 169 //getMailButton->addTo(mail);
150 170
151 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendqueue"), QString::null, 0, this, 0); 171 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendqueue"), QString::null, 0, this, 0);
152 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) ); 172 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) );
@@ -164,6 +184,10 @@ void EmailClient::init()
164 cancelButton->addTo(bar); 184 cancelButton->addTo(bar);
165 cancelButton->setEnabled(FALSE); 185 cancelButton->setEnabled(FALSE);
166 186
187 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 );
188 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) );
189 deleteButton->addTo(bar);
190
167 mailboxView = new OTabWidget( this, "mailboxView" ); 191 mailboxView = new OTabWidget( this, "mailboxView" );
168 192
169 QWidget* widget = new QWidget( mailboxView, "widget" ); 193 QWidget* widget = new QWidget( mailboxView, "widget" );
@@ -195,6 +219,8 @@ void EmailClient::init()
195 mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) ); 219 mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) );
196 220
197 setCentralWidget(mailboxView); 221 setCentralWidget(mailboxView);
222
223 mailboxView->setCurrentTab(0);
198} 224}
199 225
200void EmailClient::compose() 226void EmailClient::compose()
@@ -232,6 +258,8 @@ void EmailClient::enqueMail(const Email &mail)
232 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n"); 258 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n");
233 item = new EmailListItem(outboxView, addMail, false); 259 item = new EmailListItem(outboxView, addMail, false);
234 260
261 mailboxView->setCurrentTab(1);
262
235} 263}
236 264
237void EmailClient::sendQuedMail() 265void EmailClient::sendQuedMail()
@@ -296,7 +324,7 @@ void EmailClient::getNewMail() {
296 progressBar->reset(); 324 progressBar->reset();
297 325
298 //get any previous mails not downloaded and add to queue 326 //get any previous mails not downloaded and add to queue
299 mailDownloadList.clear(); 327/* mailDownloadList.clear();
300 Email *mailPtr; 328 Email *mailPtr;
301 item = (EmailListItem *) inboxView->firstChild(); 329 item = (EmailListItem *) inboxView->firstChild();
302 while (item != NULL) { 330 while (item != NULL) {
@@ -305,7 +333,7 @@ void EmailClient::getNewMail() {
305 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); 333 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
306 } 334 }
307 item = (EmailListItem *) item->nextSibling(); 335 item = (EmailListItem *) item->nextSibling();
308 } 336 }*/
309 337
310 emailHandler->getMailHeaders(); 338 emailHandler->getMailHeaders();
311} 339}
@@ -415,6 +443,8 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
415 mailDownloadList.sizeInsert(newMail.serverId, newMail.size); 443 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);
416 } 444 }
417 445
446 mailboxView->setCurrentTab(0);
447
418} 448}
419 449
420void EmailClient::allMailArrived(int count) 450void EmailClient::allMailArrived(int count)
@@ -444,6 +474,8 @@ void EmailClient::allMailArrived(int count)
444 progressBar->reset(); 474 progressBar->reset();
445 475
446 emailHandler->getMailByList(&mailDownloadList); 476 emailHandler->getMailByList(&mailDownloadList);
477
478 mailboxView->setCurrentTab(0);
447} 479}
448 480
449void EmailClient::moveMailFront(Email *mailPtr) 481void EmailClient::moveMailFront(Email *mailPtr)
@@ -509,6 +541,8 @@ void EmailClient::popError(int code)
509 541
510void EmailClient::inboxItemSelected() 542void EmailClient::inboxItemSelected()
511{ 543{
544 killTimer(timerID);
545
512 item = (EmailListItem*) inboxView->selectedItem(); 546 item = (EmailListItem*) inboxView->selectedItem();
513 if (item != NULL) { 547 if (item != NULL) {
514 emit viewEmail(inboxView, item->getMail()); 548 emit viewEmail(inboxView, item->getMail());
@@ -517,6 +551,8 @@ void EmailClient::inboxItemSelected()
517 551
518void EmailClient::outboxItemSelected() 552void EmailClient::outboxItemSelected()
519{ 553{
554 killTimer(timerID);
555
520 item = (EmailListItem*) outboxView->selectedItem(); 556 item = (EmailListItem*) outboxView->selectedItem();
521 if (item != NULL) { 557 if (item != NULL) {
522 emit viewEmail(outboxView, item->getMail()); 558 emit viewEmail(outboxView, item->getMail());
@@ -692,6 +728,7 @@ void EmailClient::readSettings()
692 728
693void EmailClient::saveSettings() 729void EmailClient::saveSettings()
694{ 730{
731
695 QString temp; 732 QString temp;
696 QFile f( getPath(FALSE) + "settings.txt"); 733 QFile f( getPath(FALSE) + "settings.txt");
697 MailAccount *accountPtr; 734 MailAccount *accountPtr;
@@ -701,7 +738,7 @@ void EmailClient::saveSettings()
701 return; 738 return;
702 } 739 }
703 QTextStream t(&f); 740 QTextStream t(&f);
704 t << "#Settings for QPE Mailit program\n"; 741 t << "#Settings for OPIE Mailit program\n";
705 742
706 for (accountPtr = accountList.first(); accountPtr != 0; 743 for (accountPtr = accountList.first(); accountPtr != 0;
707 accountPtr = accountList.next()) { 744 accountPtr = accountList.next()) {
@@ -811,7 +848,7 @@ void EmailClient::updateAccounts()
811 848
812 editAccountMenu->insertItem(accountPtr->accountName, 849 editAccountMenu->insertItem(accountPtr->accountName,
813 this, SLOT(editAccount(int)), 0, idCount); 850 this, SLOT(editAccount(int)), 0, idCount);
814 selectAccountMenu->insertItem(accountPtr->accountName, 851 selectAccountMenu->insertItem(accountPtr->accountName,
815 this, SLOT(selectAccount(int)), 0, idCount); 852 this, SLOT(selectAccount(int)), 0, idCount);
816 deleteAccountMenu->insertItem(accountPtr->accountName, 853 deleteAccountMenu->insertItem(accountPtr->accountName,
817 this, SLOT(deleteAccount(int)), 0, idCount); 854 this, SLOT(deleteAccount(int)), 0, idCount);
@@ -824,7 +861,8 @@ void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox)
824 Email *mPtr; 861 Email *mPtr;
825 Enclosure *ePtr; 862 Enclosure *ePtr;
826 863
827 if (inbox) { 864 if (inbox)
865 {
828 mPtr = mailItem->getMail(); 866 mPtr = mailItem->getMail();
829 867
830 //if mail is in queue for download, remove it from 868 //if mail is in queue for download, remove it from
@@ -844,7 +882,9 @@ void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox)
844 } 882 }
845 } 883 }
846 inboxView->takeItem(mailItem); 884 inboxView->takeItem(mailItem);
847 } else { 885 }
886 else
887 {
848 outboxView->takeItem(mailItem); 888 outboxView->takeItem(mailItem);
849 } 889 }
850} 890}
@@ -870,3 +910,95 @@ void EmailClient::setDownloadedSize(int size)
870 progressBar->setProgress(total); 910 progressBar->setProgress(total);
871 } 911 }
872} 912}
913
914void EmailClient::deleteItem()
915{
916 bool inbox=mailboxView->currentTab()==0;
917
918 EmailListItem* eli;
919
920 inbox ? eli=(EmailListItem*)inboxView->selectedItem():eli=(EmailListItem*)outboxView->selectedItem();
921
922 if (eli)
923 deleteMail(eli,(bool&)inbox);
924}
925
926void EmailClient::inboxItemPressed()
927{
928 //timerID=startTimer(500);
929}
930
931void EmailClient::inboxItemReleased()
932{
933 //killTimer(timerID);
934}
935
936void EmailClient::timerEvent(QTimerEvent *e)
937{
938 /*killTimer(timerID);
939
940
941 QPopupMenu *action = new QPopupMenu(this);
942
943 int reply=0;
944
945 action->insertItem(tr( "Reply To" ),this,SLOT(reply()));
946 action->insertItem( tr( "Reply All" ),this,SLOT(replyAll()));
947 action->insertItem( tr( "Forward" ), this,SLOT(forward()));
948 action->insertItem( tr( "Remove Mail" ), this,SLOT(remove()));
949
950 action->exec(QCursor::pos());
951
952 if (action) delete action;
953 */
954}
955
956Email* EmailClient::getCurrentMail()
957{
958 EmailListItem *eli=(EmailListItem* ) (inboxView->selectedItem());
959 if (eli!=NULL)
960 return eli->getMail();
961 else
962 return NULL;
963}
964
965/*
966void EmailClient::reply()
967{
968 Email* mail=getCurrentMail();
969
970 if (mail!=NULL)
971 {
972 emit reply(*mail);
973 }
974}
975
976void EmailClient::replyAll()
977{
978 Email* mail=getCurrentMail();
979
980 if (mail!=NULL)
981 {
982 emit replyAll(*mail);
983 }
984}
985
986void EmailClient::forward()
987{
988 Email* mail=getCurrentMail();
989
990 if (mail!=NULL)
991 {
992 emit reply(*mail);
993 }
994}
995
996void EmailClient::remove()
997{
998 Email* mail=getCurrentMail();
999
1000 if (mail!=NULL)
1001 {
1002 emit remove(*mail);
1003 }
1004}*/ \ No newline at end of file
diff --git a/noncore/net/mailit/emailclient.h b/noncore/net/mailit/emailclient.h
index 80457f9..0890dcf 100644
--- a/noncore/net/mailit/emailclient.h
+++ b/noncore/net/mailit/emailclient.h
@@ -32,6 +32,7 @@
32#include <qaction.h> 32#include <qaction.h>
33#include <qlayout.h> 33#include <qlayout.h>
34#include <qtooltip.h> 34#include <qtooltip.h>
35#include <qtoolbutton.h>
35#include <qimage.h> 36#include <qimage.h>
36#include <qpixmap.h> 37#include <qpixmap.h>
37#include <qstringlist.h> 38#include <qstringlist.h>
@@ -40,6 +41,7 @@
40#include <qdir.h> 41#include <qdir.h>
41#include <stdlib.h> 42#include <stdlib.h>
42#include <opie/otabwidget.h> 43#include <opie/otabwidget.h>
44#include <qtimer.h>
43 45
44#include "emailhandler.h" 46#include "emailhandler.h"
45#include "emaillistitem.h" 47#include "emaillistitem.h"
@@ -69,12 +71,22 @@ public:
69 ~EmailClient(); 71 ~EmailClient();
70 AddressList* getAdrListRef(); 72 AddressList* getAdrListRef();
71 73
74protected:
75 void timerEvent(QTimerEvent*);
76
72signals: 77signals:
73 void composeRequested(); 78 void composeRequested();
74 void viewEmail(QListView *, Email *); 79 void viewEmail(QListView *, Email *);
75 void mailUpdated(Email *); 80 void mailUpdated(Email *);
76 void newCaption(const QString &); 81 void newCaption(const QString &);
77 82 void replyRequested(Email&, bool&);
83 void forwardRequested(Email&);
84 void removeItem(EmailListItem*, bool&);
85 /*void reply(Email&);
86 void replyAll(Email&);
87 void remove(Email&);
88 void forward(Email&);*/
89
78public slots: 90public slots:
79 void compose(); 91 void compose();
80 void cancel(); 92 void cancel();
@@ -82,12 +94,15 @@ public slots:
82 void setMailAccount(); 94 void setMailAccount();
83 void sendQuedMail(); 95 void sendQuedMail();
84 void mailSent(); 96 void mailSent();
97 void deleteItem();
85 void getNewMail(); 98 void getNewMail();
86 void getAllNewMail(); 99 void getAllNewMail();
87 void smtpError(int code); 100 void smtpError(int code);
88 void popError(int code); 101 void popError(int code);
89 void inboxItemSelected(); 102 void inboxItemSelected();
90 void outboxItemSelected(); 103 void outboxItemSelected();
104 void inboxItemPressed();
105 void inboxItemReleased();
91 void mailArrived(const Email &mail, bool fromDisk); 106 void mailArrived(const Email &mail, bool fromDisk);
92 void allMailArrived(int); 107 void allMailArrived(int);
93 void saveMail(QString fileName, QListView *view); 108 void saveMail(QString fileName, QListView *view);
@@ -100,6 +115,10 @@ public slots:
100 void setMailSize(int); 115 void setMailSize(int);
101 void setDownloadedSize(int); 116 void setDownloadedSize(int);
102 void moveMailFront(Email *mailPtr); 117 void moveMailFront(Email *mailPtr);
118/* void reply();
119 void replyAll();
120 void forward();
121 void remove();*/
103 122
104private: 123private:
105 void init(); 124 void init();
@@ -107,8 +126,8 @@ private:
107 QString getPath(bool enclosurePath); 126 QString getPath(bool enclosurePath);
108 void readSettings(); 127 void readSettings();
109 void saveSettings(); 128 void saveSettings();
110 129 Email* getCurrentMail();
111private: 130 int timerID;
112 Config *mailconf; 131 Config *mailconf;
113 int newAccountId, idCount, mailIdCount; 132 int newAccountId, idCount, mailIdCount;
114 int accountIdCount; 133 int accountIdCount;
@@ -128,15 +147,18 @@ private:
128 QProgressBar *progressBar; 147 QProgressBar *progressBar;
129 QStatusBar *statusBar; 148 QStatusBar *statusBar;
130 QLabel *status1Label, *status2Label; 149 QLabel *status1Label, *status2Label;
131 QAction *getMailButton; 150 QToolButton *getMailButton;
132 QAction *sendMailButton; 151 QAction *sendMailButton;
133 QAction *composeButton; 152 QAction *composeButton;
134 QAction *cancelButton; 153 QAction *cancelButton;
135 154 QAction *deleteButton;
155 //QToolButton *setAccountButton;
156
136 QMenuBar *mb; 157 QMenuBar *mb;
137 QPopupMenu *selectAccountMenu; 158 QPopupMenu *selectAccountMenu;
138 QPopupMenu *editAccountMenu; 159 QPopupMenu *editAccountMenu;
139 QPopupMenu *deleteAccountMenu; 160 QPopupMenu *deleteAccountMenu;
161 QPopupMenu *setAccountMenu;
140 162
141 OTabWidget* mailboxView; 163 OTabWidget* mailboxView;
142 QListView* inboxView; 164 QListView* inboxView;
diff --git a/noncore/net/mailit/emailhandler.cpp b/noncore/net/mailit/emailhandler.cpp
index 03f8a28..f6c6d60 100644
--- a/noncore/net/mailit/emailhandler.cpp
+++ b/noncore/net/mailit/emailhandler.cpp
@@ -200,13 +200,19 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
200 } 200 }
201 201
202 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: 202 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To:
203 if (pos = p.find("TO",':', pos, TRUE) != -1) 203 if ((pos = p.find("TO",':', 0, TRUE)) != -1)
204 { 204 {
205 pos++; 205 pos++;
206 mail->recipients.append (p.getString(&pos, 'z', TRUE) ); 206 mail->recipients.append (p.getString(&pos, 'z', TRUE) );
207 } 207 }
208 208
209 209 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To:
210 if ((pos = p.find("CC",':', 0, TRUE)) != -1)
211 {
212 pos++;
213 mail->carbonCopies.append (p.getString(&pos, 'z', TRUE) );
214 }
215
210 216
211 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) { 217 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) {
212 pos++; 218 pos++;
@@ -434,6 +440,13 @@ int EmailHandler::encodeMime(Email *mail)
434 for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) { 440 for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) {
435 newBody += *it + " "; 441 newBody += *it + " ";
436 } 442 }
443
444 newBody += "\r\nCC: ";
445
446 for (QStringList::Iterator it = mail->carbonCopies.begin(); it != mail->carbonCopies.end(); ++it ) {
447 newBody += *it + " ";
448 }
449
437 newBody += "\r\nSubject: " + mail->subject + "\r\n"; 450 newBody += "\r\nSubject: " + mail->subject + "\r\n";
438 451
439 if (mail->files.count() == 0) { //just a simple mail 452 if (mail->files.count() == 0) { //just a simple mail
diff --git a/noncore/net/mailit/mailitwindow.cpp b/noncore/net/mailit/mailitwindow.cpp
index 2bf1dcb..ef5fc09 100644
--- a/noncore/net/mailit/mailitwindow.cpp
+++ b/noncore/net/mailit/mailitwindow.cpp
@@ -47,8 +47,11 @@ MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
47 SLOT(enqueMail(const Email &)) ); 47 SLOT(enqueMail(const Email &)) );
48 48
49 connect(readMail, SIGNAL(cancelView()), this, SLOT(showEmailClient()) ); 49 connect(readMail, SIGNAL(cancelView()), this, SLOT(showEmailClient()) );
50 connect(readMail, SIGNAL(replyRequested(Email &)), this, 50 connect(readMail, SIGNAL(replyRequested(Email &, bool&)), this,
51 SLOT(composeReply(Email &)) ); 51 SLOT(composeReply(Email &, bool&)) );
52 connect(readMail, SIGNAL(forwardRequested(Email &)), this,
53 SLOT(composeForward(Email &)) );
54
52 connect(readMail, SIGNAL(removeItem(EmailListItem *, bool &)), emailClient, 55 connect(readMail, SIGNAL(removeItem(EmailListItem *, bool &)), emailClient,
53 SLOT(deleteMail(EmailListItem *, bool &)) ); 56 SLOT(deleteMail(EmailListItem *, bool &)) );
54 connect(readMail, SIGNAL(viewingMail(Email *)), emailClient, 57 connect(readMail, SIGNAL(viewingMail(Email *)), emailClient,
@@ -83,12 +86,19 @@ void MailItWindow::compose()
83 setCaption( tr( "Write mail" ) ); 86 setCaption( tr( "Write mail" ) );
84} 87}
85 88
86void MailItWindow::composeReply(Email &mail) 89void MailItWindow::composeReply(Email &mail, bool& replyAll)
90{
91 compose();
92 writeMail->reply(mail,replyAll) ;
93}
94
95void MailItWindow::composeForward(Email &mail)
87{ 96{
88 compose(); 97 compose();
89 writeMail->reply(mail); 98 writeMail->forward(mail) ;
90} 99}
91 100
101
92void MailItWindow::showEmailClient() 102void MailItWindow::showEmailClient()
93{ 103{
94 viewingMail = FALSE; 104 viewingMail = FALSE;
@@ -131,3 +141,25 @@ void MailItWindow::setDocument(const QString &_address)
131 writeMail->setRecipient(address); 141 writeMail->setRecipient(address);
132} 142}
133 143
144/*void MailItWindow::reply(Email& mail)
145{
146 qDebug("####EmailClient: 0 reached");
147 composeReply(mail,(bool&)FALSE);
148}
149
150void MailItWindow::replyAll(Email& mail)
151{
152 qDebug("####EmailClient: 1 reached");
153 composeReply(mail,(bool&)TRUE);
154}
155
156void MailItWindow::forward(Email& mail)
157{
158 qDebug("####EmailClient: 2 reached");
159}
160
161void MailItWindow::remove(Email&)
162{
163 qDebug("####EmailClient: 3 reached");
164 //emit removeItem(eli,(bool&)TRUE);
165} */ \ No newline at end of file
diff --git a/noncore/net/mailit/mailitwindow.h b/noncore/net/mailit/mailitwindow.h
index 667960b..e818d32 100644
--- a/noncore/net/mailit/mailitwindow.h
+++ b/noncore/net/mailit/mailitwindow.h
@@ -36,15 +36,21 @@ public:
36 MailItWindow(QWidget *parent = 0, const char *name = 0, WFlags fl = 0); 36 MailItWindow(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
37 ~MailItWindow(); 37 ~MailItWindow();
38 38
39signals:
39public slots: 40public slots:
40 void compose(); 41 void compose();
41 void composeReply(Email &); 42 void composeReply(Email &, bool&);
43 void composeForward(Email &);
42 void showEmailClient(); 44 void showEmailClient();
43 void viewMail(QListView *, Email *mail); 45 void viewMail(QListView *, Email *mail);
44 void updateMailView(Email *mail); 46 void updateMailView(Email *mail);
45 void closeEvent(QCloseEvent *e); 47 void closeEvent(QCloseEvent *e);
46 void updateCaption(const QString &); 48 void updateCaption(const QString &);
47 void setDocument(const QString &); 49 void setDocument(const QString &);
50 /*void reply(Email&);
51 void replyAll(Email&);
52 void forward(Email&);
53 void remove(Email&);*/
48 54
49private: 55private:
50 EmailClient *emailClient; 56 EmailClient *emailClient;
diff --git a/noncore/net/mailit/readmail.cpp b/noncore/net/mailit/readmail.cpp
index 7cd3e09..dc98a6f 100644
--- a/noncore/net/mailit/readmail.cpp
+++ b/noncore/net/mailit/readmail.cpp
@@ -59,7 +59,11 @@ void ReadMail::init()
59 replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ), 59 replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ),
60 QString::null, 0, this, 0 ); 60 QString::null, 0, this, 0 );
61 connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) ); 61 connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) );
62 62
63 forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
64 QString::null, 0, this, 0 );
65 connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) );
66
63 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 );
64 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) ); 68 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) );
65 previousButton->addTo(bar); 69 previousButton->addTo(bar);
@@ -107,11 +111,16 @@ void ReadMail::updateView()
107 111
108 replyButton->removeFrom(mailMenu); 112 replyButton->removeFrom(mailMenu);
109 replyButton->removeFrom(bar); 113 replyButton->removeFrom(bar);
114 forwardButton->removeFrom(mailMenu);
115 forwardButton->removeFrom(bar);
110 116
111 if (inbox == TRUE) { 117 if (inbox == TRUE) {
112 replyButton->addTo(bar); 118 replyButton->addTo(bar);
113 replyButton->addTo(mailMenu); 119 replyButton->addTo(mailMenu);
114 120 forwardButton->addTo(bar);
121 forwardButton->addTo(mailMenu);
122
123
115 if (!mail->downloaded) { 124 if (!mail->downloaded) {
116 //report currently viewed mail so that it will be 125 //report currently viewed mail so that it will be
117 //placed first in the queue of new mails to download 126 //placed first in the queue of new mails to download
@@ -145,6 +154,13 @@ void ReadMail::updateView()
145 it != mail->recipients.end(); ++it ) { 154 it != mail->recipients.end(); ++it ) {
146 text += *it + " "; 155 text += *it + " ";
147 } 156 }
157
158 text +="<br><b>CC: </b>";
159 for (QStringList::Iterator it = mail->carbonCopies.begin();
160 it != mail->carbonCopies.end(); ++it ) {
161 text += *it + " ";
162 }
163
148 text += "<br>" + mail->date; 164 text += "<br>" + mail->date;
149 165
150 if (mail->files.count() > 0) { 166 if (mail->files.count() > 0) {
@@ -202,6 +218,14 @@ void ReadMail::updateView()
202 it != mail->recipients.end(); ++it ) { 218 it != mail->recipients.end(); ++it ) {
203 text += *it + " "; 219 text += *it + " ";
204 } 220 }
221
222 text += "\nCC: ";
223 for (QStringList::Iterator it = mail->carbonCopies.begin();
224 it != mail->carbonCopies.end(); ++it ) {
225 text += *it + " ";
226 }
227
228
205 text += "\nDate: " + mail->date + "\n"; 229 text += "\nDate: " + mail->date + "\n";
206 if (mail->files.count() > 0) { 230 if (mail->files.count() > 0) {
207 text += "Attatchments: "; 231 text += "Attatchments: ";
@@ -323,5 +347,11 @@ void ReadMail::viewAttatchments()
323 347
324void ReadMail::reply() 348void ReadMail::reply()
325{ 349{
326 emit replyRequested(*mail); 350 emit replyRequested(*mail, (bool&)TRUE);
327} 351}
352
353void ReadMail::forward()
354{
355 emit forwardRequested(*mail);
356}
357
diff --git a/noncore/net/mailit/readmail.h b/noncore/net/mailit/readmail.h
index d0bb067..0fe0646 100644
--- a/noncore/net/mailit/readmail.h
+++ b/noncore/net/mailit/readmail.h
@@ -46,7 +46,8 @@ public:
46 46
47signals: 47signals:
48 void cancelView(); 48 void cancelView();
49 void replyRequested(Email &); 49 void replyRequested(Email &, bool &);
50 void forwardRequested(Email&);
50 void removeItem(EmailListItem *, bool &); 51 void removeItem(EmailListItem *, bool &);
51 void viewingMail(Email *); 52 void viewingMail(Email *);
52 53
@@ -58,6 +59,7 @@ public slots:
58 void shiftText(); 59 void shiftText();
59 void viewAttatchments(); 60 void viewAttatchments();
60 void reply(); 61 void reply();
62 void forward();
61 63
62private: 64private:
63 void init(); 65 void init();
@@ -81,6 +83,7 @@ private:
81 QAction *attatchmentsButton; 83 QAction *attatchmentsButton;
82 QAction *previousButton; 84 QAction *previousButton;
83 QAction *replyButton; 85 QAction *replyButton;
86 QAction *forwardButton;
84}; 87};
85 88
86#endif // READMAIL_H 89#endif // READMAIL_H
diff --git a/noncore/net/mailit/writemail.cpp b/noncore/net/mailit/writemail.cpp
index 38a2596..a9dcb02 100644
--- a/noncore/net/mailit/writemail.cpp
+++ b/noncore/net/mailit/writemail.cpp
@@ -83,9 +83,11 @@ void WriteMail::init()
83 83
84 recipientsBox = new QComboBox( FALSE, widget, "toLabel" ); 84 recipientsBox = new QComboBox( FALSE, widget, "toLabel" );
85 recipientsBox->insertItem( tr( "To:" ) ); 85 recipientsBox->insertItem( tr( "To:" ) );
86 recipientsBox->insertItem( tr( "CC:" ) ); 86 recipientsBox->insertItem( tr( "CC:" ) );
87 recipientsBox->setCurrentItem(0); 87 recipientsBox->setCurrentItem(0);
88 grid->addWidget( recipientsBox, 0, 0 ); 88 grid->addWidget( recipientsBox, 0, 0 );
89 connect(recipientsBox,SIGNAL(activated(int)),this, SLOT(changeRecipients(int)));
90
89 91
90 subjetLabel = new QLabel( widget, "subjetLabel" ); 92 subjetLabel = new QLabel( widget, "subjetLabel" );
91 subjetLabel->setText( tr( "Subject:" ) ); 93 subjetLabel->setText( tr( "Subject:" ) );
@@ -102,6 +104,11 @@ void WriteMail::init()
102 toInput = new QLineEdit( widget, "toInput" ); 104 toInput = new QLineEdit( widget, "toInput" );
103 grid->addWidget( toInput, 0, 1 ); 105 grid->addWidget( toInput, 0, 1 );
104 106
107 ccInput = new QLineEdit( widget, "ccInput" );
108 ccInput->hide();
109 grid->addWidget( ccInput, 0, 1 );
110
111
105 addressButton = new QToolButton( widget, "addressButton" ); 112 addressButton = new QToolButton( widget, "addressButton" );
106 addressButton->setPixmap( Resource::loadPixmap("AddressBook") ); 113 addressButton->setPixmap( Resource::loadPixmap("AddressBook") );
107 addressButton->setToggleButton(TRUE); 114 addressButton->setToggleButton(TRUE);
@@ -139,19 +146,31 @@ void WriteMail::accept()
139 QStringList attatchedFiles, attatchmentsType; 146 QStringList attatchedFiles, attatchmentsType;
140 int idCount = 0; 147 int idCount = 0;
141 148
142 if (toInput->text() == "") { 149 if (toInput->text() == "")
143 QMessageBox::warning(this,"No recipient", "Send mail to whom?", "OK\n"); 150 {
151 QMessageBox::warning(this,tr("No recipient"), tr("Send mail to whom?"), tr("OK\n"));
152 return;
153 }
154
155 if (! getRecipients(false) )
156 {
157 QMessageBox::warning(this,tr("Incorrect recipient separator"),
158 tr("Recipients must be separated by ;\nand be valid emailaddresses"), tr("OK\n"));
144 return; 159 return;
145 } 160 }
146 if (! getRecipients() ) { 161
147 QMessageBox::warning(this,"Incorrect recipient separator", 162 if ((ccInput->text()!="") && (! getRecipients(true) ))
148 "Recipients must be separated by ;\nand be valid emailaddresses", "OK\n"); 163 {
164 QMessageBox::warning(this,tr("Incorrect carbon copy separator"),
165 tr("CC Recipients must be separated by ;\nand be valid emailaddresses"), tr("OK\n"));
149 return; 166 return;
150 } 167 }
168
151 mail.subject = subjectInput->text(); 169 mail.subject = subjectInput->text();
152 mail.body = emailInput->text(); 170 mail.body = emailInput->text();
153 mail.sent = false; 171 mail.sent = false;
154 mail.received = false; 172 mail.received = false;
173
155 mail.rawMail = "To: "; 174 mail.rawMail = "To: ";
156 175
157 for (QStringList::Iterator it = mail.recipients.begin(); 176 for (QStringList::Iterator it = mail.recipients.begin();
@@ -160,7 +179,18 @@ void WriteMail::accept()
160 mail.rawMail += (*it); 179 mail.rawMail += (*it);
161 mail.rawMail += ",\n"; 180 mail.rawMail += ",\n";
162 } 181 }
182
163 mail.rawMail.truncate(mail.rawMail.length()-2); 183 mail.rawMail.truncate(mail.rawMail.length()-2);
184
185 mail.rawMail += "\nCC: ";
186
187 for (QStringList::Iterator it = mail.carbonCopies.begin();
188 it != mail.carbonCopies.end(); ++it) {
189
190 mail.rawMail += (*it);
191 mail.rawMail += ",\n";
192 }
193
164 mail.rawMail += mail.from; 194 mail.rawMail += mail.from;
165 mail.rawMail += "\nSubject: "; 195 mail.rawMail += "\nSubject: ";
166 mail.rawMail += mail.subject; 196 mail.rawMail += mail.subject;
@@ -211,7 +241,7 @@ void WriteMail::attatchFile()
211 addAtt->showMaximized(); 241 addAtt->showMaximized();
212} 242}
213 243
214void WriteMail::reply(Email replyMail) 244void WriteMail::reply(Email replyMail, bool replyAll)
215{ 245{
216 int pos; 246 int pos;
217 247
@@ -219,7 +249,11 @@ void WriteMail::reply(Email replyMail)
219 mail.files.clear(); 249 mail.files.clear();
220 250
221 toInput->setText(mail.fromMail); 251 toInput->setText(mail.fromMail);
222 subjectInput->setText("Re: " + mail.subject); 252 //replyAll ? ccInput->setText(mail.c)
253
254 addRecipients(replyAll);
255
256 subjectInput->setText(tr("Re: ") + mail.subject);
223 257
224 pos = 0; 258 pos = 0;
225 mail.body.insert(pos, ">>"); 259 mail.body.insert(pos, ">>");
@@ -232,37 +266,63 @@ void WriteMail::reply(Email replyMail)
232 emailInput->setText(mail.body); 266 emailInput->setText(mail.body);
233} 267}
234 268
235bool WriteMail::getRecipients() 269void WriteMail::forward(Email forwMail)
270{
271 int pos=0;
272
273 QString fwdBody=tr("======forwarded message from ");
274 fwdBody.append(forwMail.fromMail);
275 fwdBody.append(tr(" starts======\n\n"));
276
277 mail=forwMail;
278 toInput->setText("");
279 ccInput->setText("");
280 subjectInput->setText(tr("FWD: ") + mail.subject);
281
282 fwdBody+=mail.body;
283 fwdBody+=QString(tr("======end of forwarded message======\n\n"));
284
285 emailInput->setText(fwdBody);
286}
287
288bool WriteMail::getRecipients(bool ccField)
236{ 289{
237 QString str, temp; 290 QString str, temp;
238 int pos = 0; 291 int pos = 0;
239 292
240 mail.recipients.clear(); 293 mail.recipients.clear();
241 294
242 temp = toInput->text(); 295 ccField ? temp = ccInput->text() : temp=toInput->text() ;
296
243 while ( (pos = temp.find(';')) != -1) { 297 while ( (pos = temp.find(';')) != -1) {
244 str = temp.left(pos).stripWhiteSpace(); 298 str = temp.left(pos).stripWhiteSpace();
245 temp = temp.right(temp.length() - (pos + 1)); 299 temp = temp.right(temp.length() - (pos + 1));
246 if ( str.find('@') == -1) 300 if ( str.find('@') == -1)
247 return false; 301 return false;
248 mail.recipients.append(str); 302 ccField ? mail.carbonCopies.append(str) : mail.recipients.append(str);
249 addressList->addContact(str, ""); 303 addressList->addContact(str, "");
250 } 304 }
251 temp = temp.stripWhiteSpace(); 305 temp = temp.stripWhiteSpace();
252 if ( temp.find('@') == -1) 306 if ( temp.find('@') == -1)
253 return false; 307 return false;
254 mail.recipients.append(temp); 308 ccField ? mail.carbonCopies.append(temp) : mail.recipients.append(temp);
255 addressList->addContact(temp, ""); 309 addressList->addContact(temp, "");
256 310
257 return TRUE; 311 return TRUE;
258} 312}
259
260 313
261void WriteMail::addRecipients() 314void WriteMail::addRecipients()
262{ 315{
316
317 addRecipients(false);
318 }
319
320void WriteMail::addRecipients(bool ccField)
321{
263 QString recipients = ""; 322 QString recipients = "";
264 323
265 mail.recipients.clear(); 324 mail.recipients.clear();
325
266 QListViewItem *item = addressView->firstChild(); 326 QListViewItem *item = addressView->firstChild();
267 while (item != NULL) { 327 while (item != NULL) {
268 if ( item->isSelected() ) { 328 if ( item->isSelected() ) {
@@ -274,7 +334,8 @@ void WriteMail::addRecipients()
274 } 334 }
275 item = item->nextSibling(); 335 item = item->nextSibling();
276 } 336 }
277 toInput->setText(recipients); 337
338 ccField ? ccInput->setText(recipients):toInput->setText(recipients);
278 339
279 addressView->hide(); 340 addressView->hide();
280 okButton->hide(); 341 okButton->hide();
@@ -283,6 +344,20 @@ void WriteMail::addRecipients()
283 showingAddressList = !showingAddressList; 344 showingAddressList = !showingAddressList;
284} 345}
285 346
347void WriteMail::changeRecipients(int selection)
348{
349 if (selection==0)
350 {
351 toInput->show();
352 ccInput->hide();
353 }
354 else if (selection==1)
355 {
356 toInput->hide();
357 ccInput->show();
358 }
359}
360
286void WriteMail::setRecipient(const QString &recipient) 361void WriteMail::setRecipient(const QString &recipient)
287{ 362{
288 toInput->setText(recipient); 363 toInput->setText(recipient);
diff --git a/noncore/net/mailit/writemail.h b/noncore/net/mailit/writemail.h
index dd12063..f193b13 100644
--- a/noncore/net/mailit/writemail.h
+++ b/noncore/net/mailit/writemail.h
@@ -43,13 +43,15 @@ class WriteMail : public QMainWindow
43public: 43public:
44 WriteMail( QWidget* parent, const char* name, WFlags fl = 0 ); 44 WriteMail( QWidget* parent, const char* name, WFlags fl = 0 );
45 ~WriteMail(); 45 ~WriteMail();
46 void reply(Email replyMail); 46 void reply(Email replyMail, bool replyAll);
47 void setRecipient(const QString &recipient); 47 void setRecipient(const QString &recipient);
48 void setAddressList(AddressList *list); 48 void setAddressList(AddressList *list);
49 void forward(Email forwMail);
49 50
50signals: 51signals:
51 void sendMailRequested(const Email &mail); 52 void sendMailRequested(const Email &mail);
52 void cancelMail(); 53 void cancelMail();
54
53 55
54public slots: 56public slots:
55 void getAddress(); 57 void getAddress();
@@ -58,10 +60,12 @@ public slots:
58 void newMail(); 60 void newMail();
59 void accept(); 61 void accept();
60 void reject(); 62 void reject();
63 void changeRecipients(int);
61 64
62private: 65private:
63 bool getRecipients(); 66 bool getRecipients(bool);
64 void init(); 67 void init();
68 void addRecipients(bool);
65 69
66 Email mail; 70 Email mail;
67 AddAtt *addAtt; 71 AddAtt *addAtt;
@@ -83,6 +87,7 @@ private:
83 QComboBox* recipientsBox; 87 QComboBox* recipientsBox;
84 QLineEdit *subjectInput; 88 QLineEdit *subjectInput;
85 QLineEdit *toInput; 89 QLineEdit *toInput;
90 QLineEdit *ccInput;
86 QToolButton* addressButton; 91 QToolButton* addressButton;
87 QMultiLineEdit* emailInput; 92 QMultiLineEdit* emailInput;
88 QGridLayout* grid; 93 QGridLayout* grid;
diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp
index 0d82a9a..ad1e0b4 100644
--- a/noncore/unsupported/mailit/emailclient.cpp
+++ b/noncore/unsupported/mailit/emailclient.cpp
@@ -59,8 +59,12 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
59 connect(emailHandler, SIGNAL(popError(int)), this, 59 connect(emailHandler, SIGNAL(popError(int)), this,
60 SLOT(popError(int)) ); 60 SLOT(popError(int)) );
61 61
62 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) ); 62 connect(inboxView, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(inboxItemSelected()) );
63 connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) ); 63 connect(outboxView, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(outboxItemSelected()) );
64
65 connect(inboxView, SIGNAL(pressed(QListViewItem *)), this, SLOT(inboxItemPressed()) );
66 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemReleased()) );
67
64 68
65 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this, 69 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this,
66 SLOT(mailArrived(const Email &, bool)) ); 70 SLOT(mailArrived(const Email &, bool)) );
@@ -143,10 +147,26 @@ void EmailClient::init()
143 147
144 bar = new QToolBar(this); 148 bar = new QToolBar(this);
145 149
146 getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0); 150 getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar);
151 //connect(setAccountlButton, SIGNAL(activated()), this, SLOT(setCurrentAccount()) );
152 // setAccountButton->addTo(bar);
153 //setAccountButton->addTo(mail);
154
155 /*idCount = 0;
156
157 for (MailAccount* accountPtr = accountList.first(); accountPtr != 0;
158 accountPtr = accountList.next()) {
159
160 selectAccountMenu->insertItem(accountPtr->accountName,this, SLOT(selectAccount(int)), 0, idCount);
161 idCount++;
162 }*/
163 getMailButton->setPopup(selectAccountMenu);
164
165
166 /*getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0);
147 connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) ); 167 connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) );
148 getMailButton->addTo(bar); 168 getMailButton->addTo(bar);*/
149 getMailButton->addTo(mail); 169 //getMailButton->addTo(mail);
150 170
151 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendqueue"), QString::null, 0, this, 0); 171 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendqueue"), QString::null, 0, this, 0);
152 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) ); 172 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) );
@@ -164,6 +184,10 @@ void EmailClient::init()
164 cancelButton->addTo(bar); 184 cancelButton->addTo(bar);
165 cancelButton->setEnabled(FALSE); 185 cancelButton->setEnabled(FALSE);
166 186
187 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 );
188 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) );
189 deleteButton->addTo(bar);
190
167 mailboxView = new OTabWidget( this, "mailboxView" ); 191 mailboxView = new OTabWidget( this, "mailboxView" );
168 192
169 QWidget* widget = new QWidget( mailboxView, "widget" ); 193 QWidget* widget = new QWidget( mailboxView, "widget" );
@@ -195,6 +219,8 @@ void EmailClient::init()
195 mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) ); 219 mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) );
196 220
197 setCentralWidget(mailboxView); 221 setCentralWidget(mailboxView);
222
223 mailboxView->setCurrentTab(0);
198} 224}
199 225
200void EmailClient::compose() 226void EmailClient::compose()
@@ -232,6 +258,8 @@ void EmailClient::enqueMail(const Email &mail)
232 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n"); 258 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n");
233 item = new EmailListItem(outboxView, addMail, false); 259 item = new EmailListItem(outboxView, addMail, false);
234 260
261 mailboxView->setCurrentTab(1);
262
235} 263}
236 264
237void EmailClient::sendQuedMail() 265void EmailClient::sendQuedMail()
@@ -296,7 +324,7 @@ void EmailClient::getNewMail() {
296 progressBar->reset(); 324 progressBar->reset();
297 325
298 //get any previous mails not downloaded and add to queue 326 //get any previous mails not downloaded and add to queue
299 mailDownloadList.clear(); 327/* mailDownloadList.clear();
300 Email *mailPtr; 328 Email *mailPtr;
301 item = (EmailListItem *) inboxView->firstChild(); 329 item = (EmailListItem *) inboxView->firstChild();
302 while (item != NULL) { 330 while (item != NULL) {
@@ -305,7 +333,7 @@ void EmailClient::getNewMail() {
305 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); 333 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
306 } 334 }
307 item = (EmailListItem *) item->nextSibling(); 335 item = (EmailListItem *) item->nextSibling();
308 } 336 }*/
309 337
310 emailHandler->getMailHeaders(); 338 emailHandler->getMailHeaders();
311} 339}
@@ -415,6 +443,8 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
415 mailDownloadList.sizeInsert(newMail.serverId, newMail.size); 443 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);
416 } 444 }
417 445
446 mailboxView->setCurrentTab(0);
447
418} 448}
419 449
420void EmailClient::allMailArrived(int count) 450void EmailClient::allMailArrived(int count)
@@ -444,6 +474,8 @@ void EmailClient::allMailArrived(int count)
444 progressBar->reset(); 474 progressBar->reset();
445 475
446 emailHandler->getMailByList(&mailDownloadList); 476 emailHandler->getMailByList(&mailDownloadList);
477
478 mailboxView->setCurrentTab(0);
447} 479}
448 480
449void EmailClient::moveMailFront(Email *mailPtr) 481void EmailClient::moveMailFront(Email *mailPtr)
@@ -509,6 +541,8 @@ void EmailClient::popError(int code)
509 541
510void EmailClient::inboxItemSelected() 542void EmailClient::inboxItemSelected()
511{ 543{
544 killTimer(timerID);
545
512 item = (EmailListItem*) inboxView->selectedItem(); 546 item = (EmailListItem*) inboxView->selectedItem();
513 if (item != NULL) { 547 if (item != NULL) {
514 emit viewEmail(inboxView, item->getMail()); 548 emit viewEmail(inboxView, item->getMail());
@@ -517,6 +551,8 @@ void EmailClient::inboxItemSelected()
517 551
518void EmailClient::outboxItemSelected() 552void EmailClient::outboxItemSelected()
519{ 553{
554 killTimer(timerID);
555
520 item = (EmailListItem*) outboxView->selectedItem(); 556 item = (EmailListItem*) outboxView->selectedItem();
521 if (item != NULL) { 557 if (item != NULL) {
522 emit viewEmail(outboxView, item->getMail()); 558 emit viewEmail(outboxView, item->getMail());
@@ -692,6 +728,7 @@ void EmailClient::readSettings()
692 728
693void EmailClient::saveSettings() 729void EmailClient::saveSettings()
694{ 730{
731
695 QString temp; 732 QString temp;
696 QFile f( getPath(FALSE) + "settings.txt"); 733 QFile f( getPath(FALSE) + "settings.txt");
697 MailAccount *accountPtr; 734 MailAccount *accountPtr;
@@ -701,7 +738,7 @@ void EmailClient::saveSettings()
701 return; 738 return;
702 } 739 }
703 QTextStream t(&f); 740 QTextStream t(&f);
704 t << "#Settings for QPE Mailit program\n"; 741 t << "#Settings for OPIE Mailit program\n";
705 742
706 for (accountPtr = accountList.first(); accountPtr != 0; 743 for (accountPtr = accountList.first(); accountPtr != 0;
707 accountPtr = accountList.next()) { 744 accountPtr = accountList.next()) {
@@ -811,7 +848,7 @@ void EmailClient::updateAccounts()
811 848
812 editAccountMenu->insertItem(accountPtr->accountName, 849 editAccountMenu->insertItem(accountPtr->accountName,
813 this, SLOT(editAccount(int)), 0, idCount); 850 this, SLOT(editAccount(int)), 0, idCount);
814 selectAccountMenu->insertItem(accountPtr->accountName, 851 selectAccountMenu->insertItem(accountPtr->accountName,
815 this, SLOT(selectAccount(int)), 0, idCount); 852 this, SLOT(selectAccount(int)), 0, idCount);
816 deleteAccountMenu->insertItem(accountPtr->accountName, 853 deleteAccountMenu->insertItem(accountPtr->accountName,
817 this, SLOT(deleteAccount(int)), 0, idCount); 854 this, SLOT(deleteAccount(int)), 0, idCount);
@@ -824,7 +861,8 @@ void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox)
824 Email *mPtr; 861 Email *mPtr;
825 Enclosure *ePtr; 862 Enclosure *ePtr;
826 863
827 if (inbox) { 864 if (inbox)
865 {
828 mPtr = mailItem->getMail(); 866 mPtr = mailItem->getMail();
829 867
830 //if mail is in queue for download, remove it from 868 //if mail is in queue for download, remove it from
@@ -844,7 +882,9 @@ void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox)
844 } 882 }
845 } 883 }
846 inboxView->takeItem(mailItem); 884 inboxView->takeItem(mailItem);
847 } else { 885 }
886 else
887 {
848 outboxView->takeItem(mailItem); 888 outboxView->takeItem(mailItem);
849 } 889 }
850} 890}
@@ -870,3 +910,95 @@ void EmailClient::setDownloadedSize(int size)
870 progressBar->setProgress(total); 910 progressBar->setProgress(total);
871 } 911 }
872} 912}
913
914void EmailClient::deleteItem()
915{
916 bool inbox=mailboxView->currentTab()==0;
917
918 EmailListItem* eli;
919
920 inbox ? eli=(EmailListItem*)inboxView->selectedItem():eli=(EmailListItem*)outboxView->selectedItem();
921
922 if (eli)
923 deleteMail(eli,(bool&)inbox);
924}
925
926void EmailClient::inboxItemPressed()
927{
928 //timerID=startTimer(500);
929}
930
931void EmailClient::inboxItemReleased()
932{
933 //killTimer(timerID);
934}
935
936void EmailClient::timerEvent(QTimerEvent *e)
937{
938 /*killTimer(timerID);
939
940
941 QPopupMenu *action = new QPopupMenu(this);
942
943 int reply=0;
944
945 action->insertItem(tr( "Reply To" ),this,SLOT(reply()));
946 action->insertItem( tr( "Reply All" ),this,SLOT(replyAll()));
947 action->insertItem( tr( "Forward" ), this,SLOT(forward()));
948 action->insertItem( tr( "Remove Mail" ), this,SLOT(remove()));
949
950 action->exec(QCursor::pos());
951
952 if (action) delete action;
953 */
954}
955
956Email* EmailClient::getCurrentMail()
957{
958 EmailListItem *eli=(EmailListItem* ) (inboxView->selectedItem());
959 if (eli!=NULL)
960 return eli->getMail();
961 else
962 return NULL;
963}
964
965/*
966void EmailClient::reply()
967{
968 Email* mail=getCurrentMail();
969
970 if (mail!=NULL)
971 {
972 emit reply(*mail);
973 }
974}
975
976void EmailClient::replyAll()
977{
978 Email* mail=getCurrentMail();
979
980 if (mail!=NULL)
981 {
982 emit replyAll(*mail);
983 }
984}
985
986void EmailClient::forward()
987{
988 Email* mail=getCurrentMail();
989
990 if (mail!=NULL)
991 {
992 emit reply(*mail);
993 }
994}
995
996void EmailClient::remove()
997{
998 Email* mail=getCurrentMail();
999
1000 if (mail!=NULL)
1001 {
1002 emit remove(*mail);
1003 }
1004}*/ \ No newline at end of file
diff --git a/noncore/unsupported/mailit/emailclient.h b/noncore/unsupported/mailit/emailclient.h
index 80457f9..0890dcf 100644
--- a/noncore/unsupported/mailit/emailclient.h
+++ b/noncore/unsupported/mailit/emailclient.h
@@ -32,6 +32,7 @@
32#include <qaction.h> 32#include <qaction.h>
33#include <qlayout.h> 33#include <qlayout.h>
34#include <qtooltip.h> 34#include <qtooltip.h>
35#include <qtoolbutton.h>
35#include <qimage.h> 36#include <qimage.h>
36#include <qpixmap.h> 37#include <qpixmap.h>
37#include <qstringlist.h> 38#include <qstringlist.h>
@@ -40,6 +41,7 @@
40#include <qdir.h> 41#include <qdir.h>
41#include <stdlib.h> 42#include <stdlib.h>
42#include <opie/otabwidget.h> 43#include <opie/otabwidget.h>
44#include <qtimer.h>
43 45
44#include "emailhandler.h" 46#include "emailhandler.h"
45#include "emaillistitem.h" 47#include "emaillistitem.h"
@@ -69,12 +71,22 @@ public:
69 ~EmailClient(); 71 ~EmailClient();
70 AddressList* getAdrListRef(); 72 AddressList* getAdrListRef();
71 73
74protected:
75 void timerEvent(QTimerEvent*);
76
72signals: 77signals:
73 void composeRequested(); 78 void composeRequested();
74 void viewEmail(QListView *, Email *); 79 void viewEmail(QListView *, Email *);
75 void mailUpdated(Email *); 80 void mailUpdated(Email *);
76 void newCaption(const QString &); 81 void newCaption(const QString &);
77 82 void replyRequested(Email&, bool&);
83 void forwardRequested(Email&);
84 void removeItem(EmailListItem*, bool&);
85 /*void reply(Email&);
86 void replyAll(Email&);
87 void remove(Email&);
88 void forward(Email&);*/
89
78public slots: 90public slots:
79 void compose(); 91 void compose();
80 void cancel(); 92 void cancel();
@@ -82,12 +94,15 @@ public slots:
82 void setMailAccount(); 94 void setMailAccount();
83 void sendQuedMail(); 95 void sendQuedMail();
84 void mailSent(); 96 void mailSent();
97 void deleteItem();
85 void getNewMail(); 98 void getNewMail();
86 void getAllNewMail(); 99 void getAllNewMail();
87 void smtpError(int code); 100 void smtpError(int code);
88 void popError(int code); 101 void popError(int code);
89 void inboxItemSelected(); 102 void inboxItemSelected();
90 void outboxItemSelected(); 103 void outboxItemSelected();
104 void inboxItemPressed();
105 void inboxItemReleased();
91 void mailArrived(const Email &mail, bool fromDisk); 106 void mailArrived(const Email &mail, bool fromDisk);
92 void allMailArrived(int); 107 void allMailArrived(int);
93 void saveMail(QString fileName, QListView *view); 108 void saveMail(QString fileName, QListView *view);
@@ -100,6 +115,10 @@ public slots:
100 void setMailSize(int); 115 void setMailSize(int);
101 void setDownloadedSize(int); 116 void setDownloadedSize(int);
102 void moveMailFront(Email *mailPtr); 117 void moveMailFront(Email *mailPtr);
118/* void reply();
119 void replyAll();
120 void forward();
121 void remove();*/
103 122
104private: 123private:
105 void init(); 124 void init();
@@ -107,8 +126,8 @@ private:
107 QString getPath(bool enclosurePath); 126 QString getPath(bool enclosurePath);
108 void readSettings(); 127 void readSettings();
109 void saveSettings(); 128 void saveSettings();
110 129 Email* getCurrentMail();
111private: 130 int timerID;
112 Config *mailconf; 131 Config *mailconf;
113 int newAccountId, idCount, mailIdCount; 132 int newAccountId, idCount, mailIdCount;
114 int accountIdCount; 133 int accountIdCount;
@@ -128,15 +147,18 @@ private:
128 QProgressBar *progressBar; 147 QProgressBar *progressBar;
129 QStatusBar *statusBar; 148 QStatusBar *statusBar;
130 QLabel *status1Label, *status2Label; 149 QLabel *status1Label, *status2Label;
131 QAction *getMailButton; 150 QToolButton *getMailButton;
132 QAction *sendMailButton; 151 QAction *sendMailButton;
133 QAction *composeButton; 152 QAction *composeButton;
134 QAction *cancelButton; 153 QAction *cancelButton;
135 154 QAction *deleteButton;
155 //QToolButton *setAccountButton;
156
136 QMenuBar *mb; 157 QMenuBar *mb;
137 QPopupMenu *selectAccountMenu; 158 QPopupMenu *selectAccountMenu;
138 QPopupMenu *editAccountMenu; 159 QPopupMenu *editAccountMenu;
139 QPopupMenu *deleteAccountMenu; 160 QPopupMenu *deleteAccountMenu;
161 QPopupMenu *setAccountMenu;
140 162
141 OTabWidget* mailboxView; 163 OTabWidget* mailboxView;
142 QListView* inboxView; 164 QListView* inboxView;
diff --git a/noncore/unsupported/mailit/emailhandler.cpp b/noncore/unsupported/mailit/emailhandler.cpp
index 03f8a28..f6c6d60 100644
--- a/noncore/unsupported/mailit/emailhandler.cpp
+++ b/noncore/unsupported/mailit/emailhandler.cpp
@@ -200,13 +200,19 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
200 } 200 }
201 201
202 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: 202 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To:
203 if (pos = p.find("TO",':', pos, TRUE) != -1) 203 if ((pos = p.find("TO",':', 0, TRUE)) != -1)
204 { 204 {
205 pos++; 205 pos++;
206 mail->recipients.append (p.getString(&pos, 'z', TRUE) ); 206 mail->recipients.append (p.getString(&pos, 'z', TRUE) );
207 } 207 }
208 208
209 209 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To:
210 if ((pos = p.find("CC",':', 0, TRUE)) != -1)
211 {
212 pos++;
213 mail->carbonCopies.append (p.getString(&pos, 'z', TRUE) );
214 }
215
210 216
211 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) { 217 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) {
212 pos++; 218 pos++;
@@ -434,6 +440,13 @@ int EmailHandler::encodeMime(Email *mail)
434 for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) { 440 for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) {
435 newBody += *it + " "; 441 newBody += *it + " ";
436 } 442 }
443
444 newBody += "\r\nCC: ";
445
446 for (QStringList::Iterator it = mail->carbonCopies.begin(); it != mail->carbonCopies.end(); ++it ) {
447 newBody += *it + " ";
448 }
449
437 newBody += "\r\nSubject: " + mail->subject + "\r\n"; 450 newBody += "\r\nSubject: " + mail->subject + "\r\n";
438 451
439 if (mail->files.count() == 0) { //just a simple mail 452 if (mail->files.count() == 0) { //just a simple mail
diff --git a/noncore/unsupported/mailit/mailitwindow.cpp b/noncore/unsupported/mailit/mailitwindow.cpp
index 2bf1dcb..ef5fc09 100644
--- a/noncore/unsupported/mailit/mailitwindow.cpp
+++ b/noncore/unsupported/mailit/mailitwindow.cpp
@@ -47,8 +47,11 @@ MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
47 SLOT(enqueMail(const Email &)) ); 47 SLOT(enqueMail(const Email &)) );
48 48
49 connect(readMail, SIGNAL(cancelView()), this, SLOT(showEmailClient()) ); 49 connect(readMail, SIGNAL(cancelView()), this, SLOT(showEmailClient()) );
50 connect(readMail, SIGNAL(replyRequested(Email &)), this, 50 connect(readMail, SIGNAL(replyRequested(Email &, bool&)), this,
51 SLOT(composeReply(Email &)) ); 51 SLOT(composeReply(Email &, bool&)) );
52 connect(readMail, SIGNAL(forwardRequested(Email &)), this,
53 SLOT(composeForward(Email &)) );
54
52 connect(readMail, SIGNAL(removeItem(EmailListItem *, bool &)), emailClient, 55 connect(readMail, SIGNAL(removeItem(EmailListItem *, bool &)), emailClient,
53 SLOT(deleteMail(EmailListItem *, bool &)) ); 56 SLOT(deleteMail(EmailListItem *, bool &)) );
54 connect(readMail, SIGNAL(viewingMail(Email *)), emailClient, 57 connect(readMail, SIGNAL(viewingMail(Email *)), emailClient,
@@ -83,12 +86,19 @@ void MailItWindow::compose()
83 setCaption( tr( "Write mail" ) ); 86 setCaption( tr( "Write mail" ) );
84} 87}
85 88
86void MailItWindow::composeReply(Email &mail) 89void MailItWindow::composeReply(Email &mail, bool& replyAll)
90{
91 compose();
92 writeMail->reply(mail,replyAll) ;
93}
94
95void MailItWindow::composeForward(Email &mail)
87{ 96{
88 compose(); 97 compose();
89 writeMail->reply(mail); 98 writeMail->forward(mail) ;
90} 99}
91 100
101
92void MailItWindow::showEmailClient() 102void MailItWindow::showEmailClient()
93{ 103{
94 viewingMail = FALSE; 104 viewingMail = FALSE;
@@ -131,3 +141,25 @@ void MailItWindow::setDocument(const QString &_address)
131 writeMail->setRecipient(address); 141 writeMail->setRecipient(address);
132} 142}
133 143
144/*void MailItWindow::reply(Email& mail)
145{
146 qDebug("####EmailClient: 0 reached");
147 composeReply(mail,(bool&)FALSE);
148}
149
150void MailItWindow::replyAll(Email& mail)
151{
152 qDebug("####EmailClient: 1 reached");
153 composeReply(mail,(bool&)TRUE);
154}
155
156void MailItWindow::forward(Email& mail)
157{
158 qDebug("####EmailClient: 2 reached");
159}
160
161void MailItWindow::remove(Email&)
162{
163 qDebug("####EmailClient: 3 reached");
164 //emit removeItem(eli,(bool&)TRUE);
165} */ \ No newline at end of file
diff --git a/noncore/unsupported/mailit/mailitwindow.h b/noncore/unsupported/mailit/mailitwindow.h
index 667960b..e818d32 100644
--- a/noncore/unsupported/mailit/mailitwindow.h
+++ b/noncore/unsupported/mailit/mailitwindow.h
@@ -36,15 +36,21 @@ public:
36 MailItWindow(QWidget *parent = 0, const char *name = 0, WFlags fl = 0); 36 MailItWindow(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
37 ~MailItWindow(); 37 ~MailItWindow();
38 38
39signals:
39public slots: 40public slots:
40 void compose(); 41 void compose();
41 void composeReply(Email &); 42 void composeReply(Email &, bool&);
43 void composeForward(Email &);
42 void showEmailClient(); 44 void showEmailClient();
43 void viewMail(QListView *, Email *mail); 45 void viewMail(QListView *, Email *mail);
44 void updateMailView(Email *mail); 46 void updateMailView(Email *mail);
45 void closeEvent(QCloseEvent *e); 47 void closeEvent(QCloseEvent *e);
46 void updateCaption(const QString &); 48 void updateCaption(const QString &);
47 void setDocument(const QString &); 49 void setDocument(const QString &);
50 /*void reply(Email&);
51 void replyAll(Email&);
52 void forward(Email&);
53 void remove(Email&);*/
48 54
49private: 55private:
50 EmailClient *emailClient; 56 EmailClient *emailClient;
diff --git a/noncore/unsupported/mailit/readmail.cpp b/noncore/unsupported/mailit/readmail.cpp
index 7cd3e09..dc98a6f 100644
--- a/noncore/unsupported/mailit/readmail.cpp
+++ b/noncore/unsupported/mailit/readmail.cpp
@@ -59,7 +59,11 @@ void ReadMail::init()
59 replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ), 59 replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ),
60 QString::null, 0, this, 0 ); 60 QString::null, 0, this, 0 );
61 connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) ); 61 connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) );
62 62
63 forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
64 QString::null, 0, this, 0 );
65 connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) );
66
63 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 );
64 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) ); 68 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) );
65 previousButton->addTo(bar); 69 previousButton->addTo(bar);
@@ -107,11 +111,16 @@ void ReadMail::updateView()
107 111
108 replyButton->removeFrom(mailMenu); 112 replyButton->removeFrom(mailMenu);
109 replyButton->removeFrom(bar); 113 replyButton->removeFrom(bar);
114 forwardButton->removeFrom(mailMenu);
115 forwardButton->removeFrom(bar);
110 116
111 if (inbox == TRUE) { 117 if (inbox == TRUE) {
112 replyButton->addTo(bar); 118 replyButton->addTo(bar);
113 replyButton->addTo(mailMenu); 119 replyButton->addTo(mailMenu);
114 120 forwardButton->addTo(bar);
121 forwardButton->addTo(mailMenu);
122
123
115 if (!mail->downloaded) { 124 if (!mail->downloaded) {
116 //report currently viewed mail so that it will be 125 //report currently viewed mail so that it will be
117 //placed first in the queue of new mails to download 126 //placed first in the queue of new mails to download
@@ -145,6 +154,13 @@ void ReadMail::updateView()
145 it != mail->recipients.end(); ++it ) { 154 it != mail->recipients.end(); ++it ) {
146 text += *it + " "; 155 text += *it + " ";
147 } 156 }
157
158 text +="<br><b>CC: </b>";
159 for (QStringList::Iterator it = mail->carbonCopies.begin();
160 it != mail->carbonCopies.end(); ++it ) {
161 text += *it + " ";
162 }
163
148 text += "<br>" + mail->date; 164 text += "<br>" + mail->date;
149 165
150 if (mail->files.count() > 0) { 166 if (mail->files.count() > 0) {
@@ -202,6 +218,14 @@ void ReadMail::updateView()
202 it != mail->recipients.end(); ++it ) { 218 it != mail->recipients.end(); ++it ) {
203 text += *it + " "; 219 text += *it + " ";
204 } 220 }
221
222 text += "\nCC: ";
223 for (QStringList::Iterator it = mail->carbonCopies.begin();
224 it != mail->carbonCopies.end(); ++it ) {
225 text += *it + " ";
226 }
227
228
205 text += "\nDate: " + mail->date + "\n"; 229 text += "\nDate: " + mail->date + "\n";
206 if (mail->files.count() > 0) { 230 if (mail->files.count() > 0) {
207 text += "Attatchments: "; 231 text += "Attatchments: ";
@@ -323,5 +347,11 @@ void ReadMail::viewAttatchments()
323 347
324void ReadMail::reply() 348void ReadMail::reply()
325{ 349{
326 emit replyRequested(*mail); 350 emit replyRequested(*mail, (bool&)TRUE);
327} 351}
352
353void ReadMail::forward()
354{
355 emit forwardRequested(*mail);
356}
357
diff --git a/noncore/unsupported/mailit/readmail.h b/noncore/unsupported/mailit/readmail.h
index d0bb067..0fe0646 100644
--- a/noncore/unsupported/mailit/readmail.h
+++ b/noncore/unsupported/mailit/readmail.h
@@ -46,7 +46,8 @@ public:
46 46
47signals: 47signals:
48 void cancelView(); 48 void cancelView();
49 void replyRequested(Email &); 49 void replyRequested(Email &, bool &);
50 void forwardRequested(Email&);
50 void removeItem(EmailListItem *, bool &); 51 void removeItem(EmailListItem *, bool &);
51 void viewingMail(Email *); 52 void viewingMail(Email *);
52 53
@@ -58,6 +59,7 @@ public slots:
58 void shiftText(); 59 void shiftText();
59 void viewAttatchments(); 60 void viewAttatchments();
60 void reply(); 61 void reply();
62 void forward();
61 63
62private: 64private:
63 void init(); 65 void init();
@@ -81,6 +83,7 @@ private:
81 QAction *attatchmentsButton; 83 QAction *attatchmentsButton;
82 QAction *previousButton; 84 QAction *previousButton;
83 QAction *replyButton; 85 QAction *replyButton;
86 QAction *forwardButton;
84}; 87};
85 88
86#endif // READMAIL_H 89#endif // READMAIL_H
diff --git a/noncore/unsupported/mailit/writemail.cpp b/noncore/unsupported/mailit/writemail.cpp
index 38a2596..a9dcb02 100644
--- a/noncore/unsupported/mailit/writemail.cpp
+++ b/noncore/unsupported/mailit/writemail.cpp
@@ -83,9 +83,11 @@ void WriteMail::init()
83 83
84 recipientsBox = new QComboBox( FALSE, widget, "toLabel" ); 84 recipientsBox = new QComboBox( FALSE, widget, "toLabel" );
85 recipientsBox->insertItem( tr( "To:" ) ); 85 recipientsBox->insertItem( tr( "To:" ) );
86 recipientsBox->insertItem( tr( "CC:" ) ); 86 recipientsBox->insertItem( tr( "CC:" ) );
87 recipientsBox->setCurrentItem(0); 87 recipientsBox->setCurrentItem(0);
88 grid->addWidget( recipientsBox, 0, 0 ); 88 grid->addWidget( recipientsBox, 0, 0 );
89 connect(recipientsBox,SIGNAL(activated(int)),this, SLOT(changeRecipients(int)));
90
89 91
90 subjetLabel = new QLabel( widget, "subjetLabel" ); 92 subjetLabel = new QLabel( widget, "subjetLabel" );
91 subjetLabel->setText( tr( "Subject:" ) ); 93 subjetLabel->setText( tr( "Subject:" ) );
@@ -102,6 +104,11 @@ void WriteMail::init()
102 toInput = new QLineEdit( widget, "toInput" ); 104 toInput = new QLineEdit( widget, "toInput" );
103 grid->addWidget( toInput, 0, 1 ); 105 grid->addWidget( toInput, 0, 1 );
104 106
107 ccInput = new QLineEdit( widget, "ccInput" );
108 ccInput->hide();
109 grid->addWidget( ccInput, 0, 1 );
110
111
105 addressButton = new QToolButton( widget, "addressButton" ); 112 addressButton = new QToolButton( widget, "addressButton" );
106 addressButton->setPixmap( Resource::loadPixmap("AddressBook") ); 113 addressButton->setPixmap( Resource::loadPixmap("AddressBook") );
107 addressButton->setToggleButton(TRUE); 114 addressButton->setToggleButton(TRUE);
@@ -139,19 +146,31 @@ void WriteMail::accept()
139 QStringList attatchedFiles, attatchmentsType; 146 QStringList attatchedFiles, attatchmentsType;
140 int idCount = 0; 147 int idCount = 0;
141 148
142 if (toInput->text() == "") { 149 if (toInput->text() == "")
143 QMessageBox::warning(this,"No recipient", "Send mail to whom?", "OK\n"); 150 {
151 QMessageBox::warning(this,tr("No recipient"), tr("Send mail to whom?"), tr("OK\n"));
152 return;
153 }
154
155 if (! getRecipients(false) )
156 {
157 QMessageBox::warning(this,tr("Incorrect recipient separator"),
158 tr("Recipients must be separated by ;\nand be valid emailaddresses"), tr("OK\n"));
144 return; 159 return;
145 } 160 }
146 if (! getRecipients() ) { 161
147 QMessageBox::warning(this,"Incorrect recipient separator", 162 if ((ccInput->text()!="") && (! getRecipients(true) ))
148 "Recipients must be separated by ;\nand be valid emailaddresses", "OK\n"); 163 {
164 QMessageBox::warning(this,tr("Incorrect carbon copy separator"),
165 tr("CC Recipients must be separated by ;\nand be valid emailaddresses"), tr("OK\n"));
149 return; 166 return;
150 } 167 }
168
151 mail.subject = subjectInput->text(); 169 mail.subject = subjectInput->text();
152 mail.body = emailInput->text(); 170 mail.body = emailInput->text();
153 mail.sent = false; 171 mail.sent = false;
154 mail.received = false; 172 mail.received = false;
173
155 mail.rawMail = "To: "; 174 mail.rawMail = "To: ";
156 175
157 for (QStringList::Iterator it = mail.recipients.begin(); 176 for (QStringList::Iterator it = mail.recipients.begin();
@@ -160,7 +179,18 @@ void WriteMail::accept()
160 mail.rawMail += (*it); 179 mail.rawMail += (*it);
161 mail.rawMail += ",\n"; 180 mail.rawMail += ",\n";
162 } 181 }
182
163 mail.rawMail.truncate(mail.rawMail.length()-2); 183 mail.rawMail.truncate(mail.rawMail.length()-2);
184
185 mail.rawMail += "\nCC: ";
186
187 for (QStringList::Iterator it = mail.carbonCopies.begin();
188 it != mail.carbonCopies.end(); ++it) {
189
190 mail.rawMail += (*it);
191 mail.rawMail += ",\n";
192 }
193
164 mail.rawMail += mail.from; 194 mail.rawMail += mail.from;
165 mail.rawMail += "\nSubject: "; 195 mail.rawMail += "\nSubject: ";
166 mail.rawMail += mail.subject; 196 mail.rawMail += mail.subject;
@@ -211,7 +241,7 @@ void WriteMail::attatchFile()
211 addAtt->showMaximized(); 241 addAtt->showMaximized();
212} 242}
213 243
214void WriteMail::reply(Email replyMail) 244void WriteMail::reply(Email replyMail, bool replyAll)
215{ 245{
216 int pos; 246 int pos;
217 247
@@ -219,7 +249,11 @@ void WriteMail::reply(Email replyMail)
219 mail.files.clear(); 249 mail.files.clear();
220 250
221 toInput->setText(mail.fromMail); 251 toInput->setText(mail.fromMail);
222 subjectInput->setText("Re: " + mail.subject); 252 //replyAll ? ccInput->setText(mail.c)
253
254 addRecipients(replyAll);
255
256 subjectInput->setText(tr("Re: ") + mail.subject);
223 257
224 pos = 0; 258 pos = 0;
225 mail.body.insert(pos, ">>"); 259 mail.body.insert(pos, ">>");
@@ -232,37 +266,63 @@ void WriteMail::reply(Email replyMail)
232 emailInput->setText(mail.body); 266 emailInput->setText(mail.body);
233} 267}
234 268
235bool WriteMail::getRecipients() 269void WriteMail::forward(Email forwMail)
270{
271 int pos=0;
272
273 QString fwdBody=tr("======forwarded message from ");
274 fwdBody.append(forwMail.fromMail);
275 fwdBody.append(tr(" starts======\n\n"));
276
277 mail=forwMail;
278 toInput->setText("");
279 ccInput->setText("");
280 subjectInput->setText(tr("FWD: ") + mail.subject);
281
282 fwdBody+=mail.body;
283 fwdBody+=QString(tr("======end of forwarded message======\n\n"));
284
285 emailInput->setText(fwdBody);
286}
287
288bool WriteMail::getRecipients(bool ccField)
236{ 289{
237 QString str, temp; 290 QString str, temp;
238 int pos = 0; 291 int pos = 0;
239 292
240 mail.recipients.clear(); 293 mail.recipients.clear();
241 294
242 temp = toInput->text(); 295 ccField ? temp = ccInput->text() : temp=toInput->text() ;
296
243 while ( (pos = temp.find(';')) != -1) { 297 while ( (pos = temp.find(';')) != -1) {
244 str = temp.left(pos).stripWhiteSpace(); 298 str = temp.left(pos).stripWhiteSpace();
245 temp = temp.right(temp.length() - (pos + 1)); 299 temp = temp.right(temp.length() - (pos + 1));
246 if ( str.find('@') == -1) 300 if ( str.find('@') == -1)
247 return false; 301 return false;
248 mail.recipients.append(str); 302 ccField ? mail.carbonCopies.append(str) : mail.recipients.append(str);
249 addressList->addContact(str, ""); 303 addressList->addContact(str, "");
250 } 304 }
251 temp = temp.stripWhiteSpace(); 305 temp = temp.stripWhiteSpace();
252 if ( temp.find('@') == -1) 306 if ( temp.find('@') == -1)
253 return false; 307 return false;
254 mail.recipients.append(temp); 308 ccField ? mail.carbonCopies.append(temp) : mail.recipients.append(temp);
255 addressList->addContact(temp, ""); 309 addressList->addContact(temp, "");
256 310
257 return TRUE; 311 return TRUE;
258} 312}
259
260 313
261void WriteMail::addRecipients() 314void WriteMail::addRecipients()
262{ 315{
316
317 addRecipients(false);
318 }
319
320void WriteMail::addRecipients(bool ccField)
321{
263 QString recipients = ""; 322 QString recipients = "";
264 323
265 mail.recipients.clear(); 324 mail.recipients.clear();
325
266 QListViewItem *item = addressView->firstChild(); 326 QListViewItem *item = addressView->firstChild();
267 while (item != NULL) { 327 while (item != NULL) {
268 if ( item->isSelected() ) { 328 if ( item->isSelected() ) {
@@ -274,7 +334,8 @@ void WriteMail::addRecipients()
274 } 334 }
275 item = item->nextSibling(); 335 item = item->nextSibling();
276 } 336 }
277 toInput->setText(recipients); 337
338 ccField ? ccInput->setText(recipients):toInput->setText(recipients);
278 339
279 addressView->hide(); 340 addressView->hide();
280 okButton->hide(); 341 okButton->hide();
@@ -283,6 +344,20 @@ void WriteMail::addRecipients()
283 showingAddressList = !showingAddressList; 344 showingAddressList = !showingAddressList;
284} 345}
285 346
347void WriteMail::changeRecipients(int selection)
348{
349 if (selection==0)
350 {
351 toInput->show();
352 ccInput->hide();
353 }
354 else if (selection==1)
355 {
356 toInput->hide();
357 ccInput->show();
358 }
359}
360
286void WriteMail::setRecipient(const QString &recipient) 361void WriteMail::setRecipient(const QString &recipient)
287{ 362{
288 toInput->setText(recipient); 363 toInput->setText(recipient);
diff --git a/noncore/unsupported/mailit/writemail.h b/noncore/unsupported/mailit/writemail.h
index dd12063..f193b13 100644
--- a/noncore/unsupported/mailit/writemail.h
+++ b/noncore/unsupported/mailit/writemail.h
@@ -43,13 +43,15 @@ class WriteMail : public QMainWindow
43public: 43public:
44 WriteMail( QWidget* parent, const char* name, WFlags fl = 0 ); 44 WriteMail( QWidget* parent, const char* name, WFlags fl = 0 );
45 ~WriteMail(); 45 ~WriteMail();
46 void reply(Email replyMail); 46 void reply(Email replyMail, bool replyAll);
47 void setRecipient(const QString &recipient); 47 void setRecipient(const QString &recipient);
48 void setAddressList(AddressList *list); 48 void setAddressList(AddressList *list);
49 void forward(Email forwMail);
49 50
50signals: 51signals:
51 void sendMailRequested(const Email &mail); 52 void sendMailRequested(const Email &mail);
52 void cancelMail(); 53 void cancelMail();
54
53 55
54public slots: 56public slots:
55 void getAddress(); 57 void getAddress();
@@ -58,10 +60,12 @@ public slots:
58 void newMail(); 60 void newMail();
59 void accept(); 61 void accept();
60 void reject(); 62 void reject();
63 void changeRecipients(int);
61 64
62private: 65private:
63 bool getRecipients(); 66 bool getRecipients(bool);
64 void init(); 67 void init();
68 void addRecipients(bool);
65 69
66 Email mail; 70 Email mail;
67 AddAtt *addAtt; 71 AddAtt *addAtt;
@@ -83,6 +87,7 @@ private:
83 QComboBox* recipientsBox; 87 QComboBox* recipientsBox;
84 QLineEdit *subjectInput; 88 QLineEdit *subjectInput;
85 QLineEdit *toInput; 89 QLineEdit *toInput;
90 QLineEdit *ccInput;
86 QToolButton* addressButton; 91 QToolButton* addressButton;
87 QMultiLineEdit* emailInput; 92 QMultiLineEdit* emailInput;
88 QGridLayout* grid; 93 QGridLayout* grid;