summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mailit/addatt.cpp22
-rw-r--r--noncore/net/mailit/addatt.h8
-rw-r--r--noncore/net/mailit/addresslist.cpp2
-rw-r--r--noncore/net/mailit/emailclient.cpp231
-rw-r--r--noncore/net/mailit/emailhandler.cpp50
-rw-r--r--noncore/net/mailit/emaillistitem.cpp2
-rw-r--r--noncore/net/mailit/mailitwindow.cpp30
-rw-r--r--noncore/net/mailit/popclient.cpp24
-rw-r--r--noncore/net/mailit/readmail.cpp28
-rw-r--r--noncore/net/mailit/readmail.h4
-rw-r--r--noncore/net/mailit/smtpclient.cpp8
-rw-r--r--noncore/net/mailit/textparser.cpp40
-rw-r--r--noncore/net/mailit/viewatt.cpp3
-rw-r--r--noncore/net/mailit/writemail.cpp44
-rw-r--r--noncore/net/mailit/writemail.h4
-rw-r--r--noncore/unsupported/mailit/addatt.cpp22
-rw-r--r--noncore/unsupported/mailit/addatt.h8
-rw-r--r--noncore/unsupported/mailit/addresslist.cpp2
-rw-r--r--noncore/unsupported/mailit/emailclient.cpp231
-rw-r--r--noncore/unsupported/mailit/emailhandler.cpp50
-rw-r--r--noncore/unsupported/mailit/emaillistitem.cpp2
-rw-r--r--noncore/unsupported/mailit/mailitwindow.cpp30
-rw-r--r--noncore/unsupported/mailit/popclient.cpp24
-rw-r--r--noncore/unsupported/mailit/readmail.cpp28
-rw-r--r--noncore/unsupported/mailit/readmail.h4
-rw-r--r--noncore/unsupported/mailit/smtpclient.cpp8
-rw-r--r--noncore/unsupported/mailit/textparser.cpp40
-rw-r--r--noncore/unsupported/mailit/viewatt.cpp3
-rw-r--r--noncore/unsupported/mailit/writemail.cpp44
-rw-r--r--noncore/unsupported/mailit/writemail.h4
30 files changed, 488 insertions, 512 deletions
diff --git a/noncore/net/mailit/addatt.cpp b/noncore/net/mailit/addatt.cpp
index d268f1f..daefac6 100644
--- a/noncore/net/mailit/addatt.cpp
+++ b/noncore/net/mailit/addatt.cpp
@@ -56,13 +56,13 @@ FileItem::~FileItem()
56AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f) 56AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
57 : QDialog(parent, name, f) 57 : QDialog(parent, name, f)
58{ 58{
59 setCaption("Adding attatchments"); 59 setCaption("Adding attachments");
60 60
61 QGridLayout *top = new QGridLayout(this, 1,1 ); 61 QGridLayout *top = new QGridLayout(this, 1,1 );
62 62
63 QHBox *buttons=new QHBox(this); 63 QHBox *buttons=new QHBox(this);
64 /*fileCategoryButton = new QPushButton(this);*/ 64 /*fileCategoryButton = new QPushButton(this);*/
65 attatchButton = new QPushButton(tr("Attatch..."), buttons); 65 attachButton = new QPushButton(tr("attach..."), buttons);
66 removeButton = new QPushButton(tr("Remove"), buttons); 66 removeButton = new QPushButton(tr("Remove"), buttons);
67 67
68 /*fileCategories = new QPopupMenu(fileCategoryButton); 68 /*fileCategories = new QPopupMenu(fileCategoryButton);
@@ -78,27 +78,27 @@ AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
78 78
79 79
80 top->addWidget(buttons,1,0); 80 top->addWidget(buttons,1,0);
81 //buttons->addWidget(attatchButton,0,0); 81 //buttons->addWidget(attachButton,0,0);
82 //buttons->addWidget(removeButton,0,1); 82 //buttons->addWidget(removeButton,0,1);
83 83
84 //connect(fileCategories, SIGNAL(activated(int)), this, 84 //connect(fileCategories, SIGNAL(activated(int)), this,
85 //SLOT(fileCategorySelected(int)) );*/ 85 //SLOT(fileCategorySelected(int)) );*/
86 connect(attatchButton, SIGNAL(clicked()), this, 86 connect(attachButton, SIGNAL(clicked()), this,
87 SLOT(addAttatchment()) ); 87 SLOT(addattachment()) );
88 connect(removeButton, SIGNAL(clicked()), this, 88 connect(removeButton, SIGNAL(clicked()), this,
89 SLOT(removeAttatchment()) ); 89 SLOT(removeattachment()) );
90 90
91 /*listView = new QListView(this, "AttView"); 91 /*listView = new QListView(this, "AttView");
92 listView->addColumn("Documents");* 92 listView->addColumn("Documents");*
93 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this, 93 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this,
94 SLOT(addAttatchment()) );*/ 94 SLOT(addattachment()) );*/
95 95
96 96
97 attView = new QListView(this, "Selected"); 97 attView = new QListView(this, "Selected");
98 attView->addColumn(tr("Attached")); 98 attView->addColumn(tr("Attached"));
99 attView->addColumn(tr("File type")); 99 attView->addColumn(tr("File type"));
100 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this, 100 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this,
101 SLOT(removeAttatchment()) ); 101 SLOT(removeattachment()) );
102 102
103 //top->addWidget(ofs, 0,0); 103 //top->addWidget(ofs, 0,0);
104 top->addWidget(attView, 0,0); 104 top->addWidget(attView, 0,0);
@@ -121,7 +121,7 @@ void AddAtt::clear()
121 getFiles(); 121 getFiles();
122}*/ 122}*/
123 123
124void AddAtt::addAttatchment() 124void AddAtt::addattachment()
125 { 125 {
126 OFileDialog ofs("Attachments",this,0,0,"/root/Documents"); 126 OFileDialog ofs("Attachments",this,0,0,"/root/Documents");
127 127
@@ -138,7 +138,7 @@ void AddAtt::addAttatchment()
138 } 138 }
139} 139}
140 140
141void AddAtt::removeAttatchment() 141void AddAtt::removeattachment()
142{ 142{
143 if (attView->selectedItem() != NULL) 143 if (attView->selectedItem() != NULL)
144 { 144 {
@@ -192,7 +192,7 @@ void AddAtt::getFiles()
192 }*/ 192 }*/
193} 193}
194 194
195QStringList AddAtt::returnAttatchedFiles() 195QStringList AddAtt::returnattachedFiles()
196{ 196{
197 QFileInfo info; 197 QFileInfo info;
198 QStringList list; 198 QStringList list;
diff --git a/noncore/net/mailit/addatt.h b/noncore/net/mailit/addatt.h
index fcf3279..a365947 100644
--- a/noncore/net/mailit/addatt.h
+++ b/noncore/net/mailit/addatt.h
@@ -49,7 +49,7 @@ class AddAtt : public QDialog
49 49
50public: 50public:
51 AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0); 51 AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
52 QStringList returnAttatchedFiles(); 52 QStringList returnattachedFiles();
53 QStringList returnFileTypes(); 53 QStringList returnFileTypes();
54 void getFiles(); 54 void getFiles();
55 void clear(); 55 void clear();
@@ -57,15 +57,15 @@ public:
57 57
58public slots: 58public slots:
59 //void fileCategorySelected(int); 59 //void fileCategorySelected(int);
60 void addAttatchment(); 60 void addattachment();
61 void removeAttatchment(); 61 void removeattachment();
62 void reject(); 62 void reject();
63 void accept(); 63 void accept();
64 64
65private: 65private:
66 FileItem* item; 66 FileItem* item;
67 QListView *attView; 67 QListView *attView;
68 QPushButton *attatchButton, *removeButton; 68 QPushButton *attachButton, *removeButton;
69 QPopupMenu *fileCategories; 69 QPopupMenu *fileCategories;
70 bool modified; 70 bool modified;
71 //QFileInfo *fi; 71 //QFileInfo *fi;
diff --git a/noncore/net/mailit/addresslist.cpp b/noncore/net/mailit/addresslist.cpp
index 8d9ab91..7d60ebf 100644
--- a/noncore/net/mailit/addresslist.cpp
+++ b/noncore/net/mailit/addresslist.cpp
@@ -121,7 +121,7 @@ void AddressList::read()
121 QString lineEmail, lineName, email, name; 121 QString lineEmail, lineName, email, name;
122 OContactAccess m_contactdb("mailit"); 122 OContactAccess m_contactdb("mailit");
123 OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 ); 123 OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 );
124 //OContact* oc; 124 //OContact* oc;(*it).defaultEmail()
125 125
126 for ( it = m_list.begin(); it != m_list.end(); ++it ) 126 for ( it = m_list.begin(); it != m_list.end(); ++it )
127 { 127 {
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp
index ad1e0b4..23059cf 100644
--- a/noncore/net/mailit/emailclient.cpp
+++ b/noncore/net/mailit/emailclient.cpp
@@ -23,6 +23,7 @@
23#include <qcheckbox.h> 23#include <qcheckbox.h>
24#include <qmenubar.h> 24#include <qmenubar.h>
25#include <qaction.h> 25#include <qaction.h>
26#include <qwhatsthis.h>
26#include <qpe/resource.h> 27#include <qpe/resource.h>
27#include "emailclient.h" 28#include "emailclient.h"
28 29
@@ -82,6 +83,7 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
82 readMail(); 83 readMail();
83 lineShift = "\r\n"; 84 lineShift = "\r\n";
84 85
86 mailboxView->setCurrentTab(0); //ensure that inbox has focus
85} 87}
86 88
87 89
@@ -113,6 +115,7 @@ void EmailClient::init()
113 status2Label, SLOT(setText(const QString &)) ); 115 status2Label, SLOT(setText(const QString &)) );
114 116
115 progressBar = new QProgressBar(statusBar); 117 progressBar = new QProgressBar(statusBar);
118
116 connect(emailHandler, SIGNAL(mailboxSize(int)), 119 connect(emailHandler, SIGNAL(mailboxSize(int)),
117 this, SLOT(setTotalSize(int)) ); 120 this, SLOT(setTotalSize(int)) );
118 connect(emailHandler, SIGNAL(currentMailSize(int)), 121 connect(emailHandler, SIGNAL(currentMailSize(int)),
@@ -127,6 +130,7 @@ void EmailClient::init()
127 setToolBarsMovable(FALSE); 130 setToolBarsMovable(FALSE);
128 131
129 bar = new QToolBar(this); 132 bar = new QToolBar(this);
133 QWhatsThis::add(bar,tr("Main operation toolbar"));
130 bar->setHorizontalStretchable( TRUE ); 134 bar->setHorizontalStretchable( TRUE );
131 135
132 mb = new QMenuBar( bar ); 136 mb = new QMenuBar( bar );
@@ -148,45 +152,34 @@ void EmailClient::init()
148 bar = new QToolBar(this); 152 bar = new QToolBar(this);
149 153
150 getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar); 154 getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar);
151 //connect(setAccountlButton, SIGNAL(activated()), this, SLOT(setCurrentAccount()) ); 155 QWhatsThis::add(getMailButton,tr("Click to download mail via all available accounts.\n Press and hold to select the desired account."));
152 // setAccountButton->addTo(bar); 156
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); 157 getMailButton->setPopup(selectAccountMenu);
164 158
165
166 /*getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0);
167 connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) );
168 getMailButton->addTo(bar);*/
169 //getMailButton->addTo(mail);
170
171 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendqueue"), QString::null, 0, this, 0); 159 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendqueue"), QString::null, 0, this, 0);
172 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) ); 160 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) );
173 sendMailButton->addTo(bar); 161 sendMailButton->addTo(bar);
174 sendMailButton->addTo(mail); 162 sendMailButton->addTo(mail);
163 sendMailButton->setWhatsThis("Send mail queued in the outbox");
175 164
176 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0); 165 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
177 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) ); 166 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) );
178 composeButton->addTo(bar); 167 composeButton->addTo(bar);
179 composeButton->addTo(mail); 168 composeButton->addTo(mail);
169 composeButton->setWhatsThis("Compose a new mail");
180 170
181 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0); 171 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0);
182 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) ); 172 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) );
183 cancelButton->addTo(mail); 173 cancelButton->addTo(mail);
184 cancelButton->addTo(bar); 174 cancelButton->addTo(bar);
185 cancelButton->setEnabled(FALSE); 175 cancelButton->setEnabled(FALSE);
176 cancelButton->setWhatsThis("Stop the currently active mail transfer");
177
186 178
187 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); 179 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 );
188 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); 180 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) );
189 deleteButton->addTo(bar); 181 deleteButton->addTo(bar);
182 deleteButton->setWhatsThis("Remove the currently selected eMail(s)");
190 183
191 mailboxView = new OTabWidget( this, "mailboxView" ); 184 mailboxView = new OTabWidget( this, "mailboxView" );
192 185
@@ -201,6 +194,8 @@ void EmailClient::init()
201 inboxView->addColumn( tr( "Date" ) ); 194 inboxView->addColumn( tr( "Date" ) );
202 inboxView->setMinimumSize( QSize( 0, 0 ) ); 195 inboxView->setMinimumSize( QSize( 0, 0 ) );
203 inboxView->setAllColumnsShowFocus(TRUE); 196 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"
198 " A blue attachment icon shows whether this mail has attachments."));
204 199
205 grid_2->addWidget( inboxView, 2, 0 ); 200 grid_2->addWidget( inboxView, 2, 0 );
206 mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) ); 201 mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) );
@@ -215,12 +210,12 @@ void EmailClient::init()
215 outboxView->addColumn( tr( "Subject" ) ); 210 outboxView->addColumn( tr( "Subject" ) );
216 outboxView->setAllColumnsShowFocus(TRUE); 211 outboxView->setAllColumnsShowFocus(TRUE);
217 212
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."));
218 grid_3->addWidget( outboxView, 0, 0 ); 214 grid_3->addWidget( outboxView, 0, 0 );
219 mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) ); 215 mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) );
220 216
221 setCentralWidget(mailboxView); 217 setCentralWidget(mailboxView);
222 218
223 mailboxView->setCurrentTab(0);
224} 219}
225 220
226void EmailClient::compose() 221void EmailClient::compose()
@@ -324,7 +319,7 @@ void EmailClient::getNewMail() {
324 progressBar->reset(); 319 progressBar->reset();
325 320
326 //get any previous mails not downloaded and add to queue 321 //get any previous mails not downloaded and add to queue
327/* mailDownloadList.clear(); 322 mailDownloadList.clear();
328 Email *mailPtr; 323 Email *mailPtr;
329 item = (EmailListItem *) inboxView->firstChild(); 324 item = (EmailListItem *) inboxView->firstChild();
330 while (item != NULL) { 325 while (item != NULL) {
@@ -333,9 +328,10 @@ void EmailClient::getNewMail() {
333 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); 328 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
334 } 329 }
335 item = (EmailListItem *) item->nextSibling(); 330 item = (EmailListItem *) item->nextSibling();
336 }*/ 331 }
337 332
338 emailHandler->getMailHeaders(); 333 emailHandler->getMailHeaders();
334
339} 335}
340 336
341void EmailClient::getAllNewMail() 337void EmailClient::getAllNewMail()
@@ -351,15 +347,17 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
351 Email newMail; 347 Email newMail;
352 int thisMailId; 348 int thisMailId;
353 emailHandler->parse(mail.rawMail, lineShift, &newMail); 349 emailHandler->parse(mail.rawMail, lineShift, &newMail);
354
355 mailconf->setGroup(newMail.id); 350 mailconf->setGroup(newMail.id);
356 351
357 if (fromDisk) { 352 if (fromDisk)
353 {
358 newMail.downloaded = mailconf->readBoolEntry("downloaded"); 354 newMail.downloaded = mailconf->readBoolEntry("downloaded");
359 newMail.size = mailconf->readNumEntry("size"); 355 newMail.size = mailconf->readNumEntry("size");
360 newMail.serverId = mailconf->readNumEntry("serverid"); 356 newMail.serverId = mailconf->readNumEntry("serverid");
361 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid"); 357 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid");
362 } else { //mail arrived from server 358 }
359 else
360 { //mail arrived from server
363 newMail.serverId = mail.serverId; 361 newMail.serverId = mail.serverId;
364 newMail.size = mail.size; 362 newMail.size = mail.size;
365 newMail.downloaded = mail.downloaded; 363 newMail.downloaded = mail.downloaded;
@@ -378,7 +376,7 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
378 376
379 //set server count, so that if the user aborts, the new 377 //set server count, so that if the user aborts, the new
380 //header is not reloaded 378 //header is not reloaded
381 if (currentAccount->synchronize) 379 if ((currentAccount)&&(currentAccount->synchronize))
382 currentAccount->lastServerMailCount++; 380 currentAccount->lastServerMailCount++;
383 381
384 mailconf->writeEntry("internalmailid", thisMailId); 382 mailconf->writeEntry("internalmailid", thisMailId);
@@ -386,13 +384,15 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
386 mailconf->writeEntry("size", (int) newMail.size); 384 mailconf->writeEntry("size", (int) newMail.size);
387 mailconf->writeEntry("serverid", newMail.serverId); 385 mailconf->writeEntry("serverid", newMail.serverId);
388 386
389 addressList->addContact(newMail.fromMail, newMail.from); 387 //addressList->addContact(newMail.fromMail, newMail.from);
390 } else if (!fromDisk) { //body to header arrived
391 mailconf->writeEntry("downloaded", TRUE);
392 } 388 }
389
390 mailconf->writeEntry("downloaded", newMail.downloaded);
391
393 QString stringMailId; 392 QString stringMailId;
394 stringMailId.setNum(thisMailId); 393 stringMailId.setNum(thisMailId);
395 //se if any attatchments needs to be stored 394 //see if any attatchments needs to be stored
395
396 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) { 396 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) {
397 QString stringId; 397 QString stringId;
398 stringId.setNum(ePtr->id); 398 stringId.setNum(ePtr->id);
@@ -426,22 +426,29 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
426 } 426 }
427 } 427 }
428 } 428 }
429 if (!previewingMail && !fromDisk) { 429
430 bool found=false;
431
432 if (!fromDisk)
433 {
434
430 Email *mailPtr; 435 Email *mailPtr;
431 item = (EmailListItem *) inboxView->firstChild(); 436 item = (EmailListItem *) inboxView->firstChild();
432 while (item != NULL) { 437 while ((item != NULL)&&(!found))
438 {
433 mailPtr = item->getMail(); 439 mailPtr = item->getMail();
434 if (mailPtr->id == newMail.id) { 440 if (mailPtr->id == newMail.id) {
435 item->setMail(newMail); 441 item->setMail(newMail);
436 emit mailUpdated(item->getMail()); 442 emit mailUpdated(item->getMail());
443 found = true;
437 } 444 }
438 item = (EmailListItem *) item->nextSibling(); 445 item = (EmailListItem *) item->nextSibling();
439 } 446 }
440 } else {
441 item = new EmailListItem(inboxView, newMail, TRUE);
442 if (!newMail.downloaded)
443 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);
444 } 447 }
448 if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE);
449
450 /*if (!newMail.downloaded)
451 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/
445 452
446 mailboxView->setCurrentTab(0); 453 mailboxView->setCurrentTab(0);
447 454
@@ -450,7 +457,7 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
450void EmailClient::allMailArrived(int count) 457void EmailClient::allMailArrived(int count)
451{ 458{
452 // not previewing means all mailtransfer has been done 459 // not previewing means all mailtransfer has been done
453 if (!previewingMail) { 460 /*if (!previewingMail) {*/
454 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) { 461 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) {
455 emit newCaption("Mailit - " + currentAccount->accountName); 462 emit newCaption("Mailit - " + currentAccount->accountName);
456 getNewMail(); 463 getNewMail();
@@ -466,14 +473,14 @@ void EmailClient::allMailArrived(int count)
466 progressBar->reset(); 473 progressBar->reset();
467 return; 474 return;
468 } 475 }
469 } 476 //}
470 477
471 // all headers downloaded from server, start downloading remaining mails 478 // all headers downloaded from server, start downloading remaining mails
472 previewingMail = FALSE; 479 previewingMail = FALSE;
473 status1Label->setText(currentAccount->accountName); 480 status1Label->setText(currentAccount->accountName);
474 progressBar->reset(); 481 progressBar->reset();
475 482
476 emailHandler->getMailByList(&mailDownloadList); 483 //emailHandler->getMailByList(&mailDownloadList);
477 484
478 mailboxView->setCurrentTab(0); 485 mailboxView->setCurrentTab(0);
479} 486}
@@ -541,7 +548,7 @@ void EmailClient::popError(int code)
541 548
542void EmailClient::inboxItemSelected() 549void EmailClient::inboxItemSelected()
543{ 550{
544 killTimer(timerID); 551 //killTimer(timerID);
545 552
546 item = (EmailListItem*) inboxView->selectedItem(); 553 item = (EmailListItem*) inboxView->selectedItem();
547 if (item != NULL) { 554 if (item != NULL) {
@@ -551,7 +558,7 @@ void EmailClient::inboxItemSelected()
551 558
552void EmailClient::outboxItemSelected() 559void EmailClient::outboxItemSelected()
553{ 560{
554 killTimer(timerID); 561 //killTimer(timerID);
555 562
556 item = (EmailListItem*) outboxView->selectedItem(); 563 item = (EmailListItem*) outboxView->selectedItem();
557 if (item != NULL) { 564 if (item != NULL) {
@@ -567,9 +574,7 @@ void EmailClient::readMail()
567 QString s, del; 574 QString s, del;
568 575
569 QFile f(getPath(FALSE) + "inbox.txt"); 576 QFile f(getPath(FALSE) + "inbox.txt");
570// QFileInfo fi(f); 577
571 //qDebug( f.name());
572
573 if ( f.open(IO_ReadOnly) ) { // file opened successfully 578 if ( f.open(IO_ReadOnly) ) { // file opened successfully
574 QTextStream t( &f ); // use a text stream 579 QTextStream t( &f ); // use a text stream
575 s = t.read(); 580 s = t.read();
@@ -622,12 +627,9 @@ void EmailClient::saveMail(QString fileName, QListView *view)
622 return; 627 return;
623 } 628 }
624 item = (EmailListItem *) view->firstChild(); 629 item = (EmailListItem *) view->firstChild();
625 //qDebug (QString("Write : ") );
626 QTextStream t(&f); 630 QTextStream t(&f);
627 while (item != NULL) { 631 while (item != NULL) {
628 mail = item->getMail(); 632 mail = item->getMail();
629 //qDebug(mail->rawMail);
630 //qDebug(mail->recipients.first());
631 t << mail->rawMail; 633 t << mail->rawMail;
632 634
633 mailconf->setGroup(mail->id); 635 mailconf->setGroup(mail->id);
@@ -662,110 +664,85 @@ QString EmailClient::getPath(bool enclosurePath)
662 664
663void EmailClient::readSettings() 665void EmailClient::readSettings()
664{ 666{
665 TextParser *p; 667 int y,acc_count, accountPos=0;
666 QString s;
667 int pos, accountPos, y;
668 QFile f( getPath(FALSE) + "settings.txt");
669
670 if ( f.open(IO_ReadOnly) ) { // file opened successfully
671 QTextStream t( &f ); // use a text stream
672 s = t.read();
673 f.close();
674 668
675 p = new TextParser(s, "\n"); 669 mailconf->setGroup("mailitglobal");
676 670 acc_count=mailconf->readNumEntry("Accounts",0);
677 accountPos = 0;
678 while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) {
679 accountPos++;
680 if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 )
681 account.accountName = p->getString(& ++pos, 'z', TRUE);
682 if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1)
683 account.name = p->getString(& ++pos, 'z', TRUE);
684 if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1)
685 account.emailAddress = p->getString(& ++pos, 'z', TRUE);
686 if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1)
687 account.popUserName = p->getString(& ++pos, 'z', TRUE);
688 if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1)
689 account.popPasswd = p->getString(& ++pos, 'z', TRUE);
690 if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1)
691 account.popServer = p->getString(& ++pos, 'z', TRUE);
692 if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1)
693 account.smtpServer = p->getString(& ++pos, 'z', TRUE);
694 if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) {
695 s = p->getString(& ++pos, 'z', TRUE);
696 account.id = s.toInt();
697 }
698 671
672 for (int accountPos = 0;accountPos<acc_count ; accountPos++)
673 {
674 mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ...
675 account.accountName = mailconf->readEntry("AccName","");
676 account.name = mailconf->readEntry("UserName","");
677 account.emailAddress = mailconf->readEntry("Email","");
678 account.popUserName = mailconf->readEntry("POPUser","");
679 account.popPasswd = mailconf->readEntryCrypt("POPPassword","");
680 account.popServer = mailconf->readEntry("POPServer","");
681 account.smtpServer = mailconf->readEntry("SMTPServer","");
682 account.id = mailconf->readNumEntry("AccountId",0);
683 account.syncLimit = mailconf->readNumEntry("HeaderLimit",0);
699 account.lastServerMailCount = 0; 684 account.lastServerMailCount = 0;
700 account.synchronize = FALSE; 685 account.synchronize = FALSE;
701 if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) { 686
702 if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") { 687 account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes");
703 account.synchronize = TRUE; 688 if (account.synchronize)
704 if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) { 689 {
705 s = p->getString(& ++pos, 'z', TRUE); 690 mailconf->readNumEntry("LASTSERVERMAILCOUNT",0);
706 account.lastServerMailCount = s.toInt();
707 }
708 }
709 }
710
711 if ( (pos = p->find("SYNCLIMIT",':', accountPos, TRUE)) != -1) {
712 account.syncLimit = p->getString(& ++pos, 'z', TRUE).toInt();
713 } 691 }
714
715 692
716 accountList.append(&account); 693 accountList.append(&account);
717 } 694 }
718 delete p; 695
719 }
720 mailconf->setGroup("mailitglobal"); 696 mailconf->setGroup("mailitglobal");
721 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) { 697
698 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1)
699 {
722 mailIdCount = y; 700 mailIdCount = y;
723 } 701 }
724 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) { 702 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1)
703 {
725 accountIdCount = y; 704 accountIdCount = y;
726 } 705 }
727} 706}
728 707
729void EmailClient::saveSettings() 708void EmailClient::saveSettings()
730{ 709{
731 710 int acc_count=0;
732 QString temp;
733 QFile f( getPath(FALSE) + "settings.txt");
734 MailAccount *accountPtr; 711 MailAccount *accountPtr;
735 712
736 if (! f.open(IO_WriteOnly) ) { 713
737 qWarning("could not save settings file"); 714 if (!mailconf)
715 {
716 qWarning("could not save settings");
738 return; 717 return;
739 } 718 }
740 QTextStream t(&f);
741 t << "#Settings for OPIE Mailit program\n";
742 719
743 for (accountPtr = accountList.first(); accountPtr != 0; 720 for (accountPtr = accountList.first(); accountPtr != 0;
744 accountPtr = accountList.next()) { 721 accountPtr = accountList.next())
745 722 {
746 t << "accountStart;\n"; 723 mailconf->setGroup("Account_"+QString::number(++acc_count));
747 t << "AccountName: " + accountPtr->accountName + "\n"; 724 mailconf->writeEntry("AccName",accountPtr->accountName );
748 t << "Name: " + accountPtr->name + "\n"; 725 mailconf->writeEntry("UserName",accountPtr->name);
749 t << "Email: " + accountPtr->emailAddress + "\n"; 726 mailconf->writeEntry("Email",accountPtr->emailAddress);
750 t << "POPUser: " + accountPtr->popUserName + "\n"; 727 mailconf->writeEntry("POPUser",accountPtr->popUserName);
751 t << "POPPAssword: " + accountPtr->popPasswd + "\n"; 728 mailconf->writeEntryCrypt("POPPassword",accountPtr->popPasswd);
752 t << "POPServer: " + accountPtr->popServer + "\n"; 729 mailconf->writeEntry("POPServer",accountPtr->popServer);
753 t << "SMTPServer: " + accountPtr->smtpServer + "\n"; 730 mailconf->writeEntry("SMTPServer",accountPtr->smtpServer);
754 t << "AccountId: " << accountPtr->id << "\n"; 731 mailconf->writeEntry("AccountId",accountPtr->id);
755 if (accountPtr->synchronize) { 732 if (accountPtr->synchronize)
756 t << "Synchronize: Yes\n"; 733 {
757 t << "LastServerMailCount: "; 734 mailconf->writeEntry("Synchronize","Yes");
758 t << accountPtr->lastServerMailCount << "\n"; 735 mailconf->writeEntry("HeaderLimit",accountPtr->syncLimit);
759 } else { 736 mailconf->writeEntry("LastServerMailCount",accountPtr->lastServerMailCount);
760 t << "Synchronize: No\n"; 737 }
738 else
739 {
740 mailconf->writeEntry("Synchronize", "No");
761 } 741 }
762 t << "SyncLimit: ";
763 t << accountPtr->syncLimit << "\n";
764 t << "accountEnd;\n";
765 } 742 }
766 f.close();
767 743
768 mailconf->setGroup("mailitglobal"); 744 mailconf->setGroup("mailitglobal");
745 mailconf->writeEntry("Accounts",acc_count);
769 mailconf->writeEntry("mailidcount", mailIdCount); 746 mailconf->writeEntry("mailidcount", mailIdCount);
770 mailconf->writeEntry("accountidcount", accountIdCount); 747 mailconf->writeEntry("accountidcount", accountIdCount);
771} 748}
@@ -1001,4 +978,4 @@ void EmailClient::remove()
1001 { 978 {
1002 emit remove(*mail); 979 emit remove(*mail);
1003 } 980 }
1004}*/ \ No newline at end of file 981}*/
diff --git a/noncore/net/mailit/emailhandler.cpp b/noncore/net/mailit/emailhandler.cpp
index f6c6d60..b180051 100644
--- a/noncore/net/mailit/emailhandler.cpp
+++ b/noncore/net/mailit/emailhandler.cpp
@@ -104,18 +104,14 @@ void EmailHandler::getMail()
104 } 104 }
105 105
106 headers = FALSE; 106 headers = FALSE;
107 popClient->headersOnly(headers, 0); 107 //popClient->headersOnly(headers, 0);
108 popClient->newConnection(mailAccount.popServer, 110); 108 popClient->newConnection(mailAccount.popServer, 110);
109} 109}
110 110
111void EmailHandler::getMailHeaders() 111void EmailHandler::getMailHeaders()
112{ 112{
113 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd); 113 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd);
114 if (mailAccount.synchronize) { 114 mailAccount.synchronize ? popClient->setSynchronize(mailAccount.lastServerMailCount): popClient->removeSynchronize();
115 popClient->setSynchronize(mailAccount.lastServerMailCount);
116 } else {
117 popClient->removeSynchronize();
118 }
119 115
120 headers = TRUE; 116 headers = TRUE;
121 popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all 117 popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all
@@ -135,14 +131,14 @@ void EmailHandler::getMailByList(MailList *mailList)
135 popClient->setSelectedMails(mailList); 131 popClient->setSelectedMails(mailList);
136} 132}
137 133
138void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete) 134void EmailHandler::messageArrived(const QString &message, int id, uint size, bool incomplete)
139{ 135{
140 Email mail; 136 Email mail;
141 137
142 mail.rawMail = message; 138 mail.rawMail = message;
143 mail.serverId = id; 139 mail.serverId = id;
144 mail.size = size; 140 mail.size = size;
145 mail.downloaded = complete; 141 mail.downloaded = incomplete;
146 142
147 emit mailArrived(mail, FALSE); 143 emit mailArrived(mail, FALSE);
148} 144}
@@ -185,7 +181,8 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
185 mail->from = mail->from.left(mail->from.length() - 1); 181 mail->from = mail->from.left(mail->from.length() - 1);
186 mail->from = mail->from.right(mail->from.length() - 1); 182 mail->from = mail->from.right(mail->from.length() - 1);
187 } 183 }
188 pos++; 184 pos++;
185
189 mail->fromMail = p.getString(&pos, '>', false); 186 mail->fromMail = p.getString(&pos, '>', false);
190 } else { 187 } else {
191 if ((p.separatorAt(pos) == '<') 188 if ((p.separatorAt(pos) == '<')
@@ -199,28 +196,47 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
199 } 196 }
200 } 197 }
201 198
202 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: 199 pos=0;
203 if ((pos = p.find("TO",':', 0, TRUE)) != -1) 200
201 //Search for To: after the FROM: attribute to prevent hitting the Delivered-To:
202 while((pos = p.find("TO",':', pos+1, TRUE))!=-1)
204 { 203 {
205 pos++; 204 QString rec;
206 mail->recipients.append (p.getString(&pos, 'z', TRUE) ); 205
206 if (p.separatorAt(pos-1)!='-')
207 {
208 pos++;
209 mail->recipients.append(p.getString(&pos, '\r', TRUE));
210 }
211 /*else {
212 if ((p.separatorAt(pos) == '<')|| (p.separatorAt(pos) == ' ')) //No name.. nasty
213 pos++;
214 pos++;
215 mail->fromMail = p.getString(&pos, 'z', TRUE);
216 if (mail->fromMail.at(mail->fromMail.length()-1) == '>')
217 mail->fromMail.truncate(mail->fromMail.length() - 1);
218 mail->from=mail->fromMail;
219 }
220 mail->recipients.append (p.getString(&pos, 'z', TRUE) );
221 }*/
207 } 222 }
208 223 //
209 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: 224 //if (pos==-1) mail->recipients.append (tr("undisclosed recipients") );
225
210 if ((pos = p.find("CC",':', 0, TRUE)) != -1) 226 if ((pos = p.find("CC",':', 0, TRUE)) != -1)
211 { 227 {
212 pos++; 228 pos++;
213 mail->carbonCopies.append (p.getString(&pos, 'z', TRUE) ); 229 mail->carbonCopies.append (p.getString(&pos, 'z', TRUE) );
214 } 230 }
215 231
216
217 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) { 232 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) {
218 pos++; 233 pos++;
219 mail->subject = p.getString(&pos, 'z', TRUE); 234 mail->subject = p.getString(&pos, 'z', TRUE);
220 } 235 }
236
221 if ((pos = p.find("DATE",':', 0, TRUE)) != -1) { 237 if ((pos = p.find("DATE",':', 0, TRUE)) != -1) {
222 pos++; 238 pos++;
223 mail->date = p.getString(&pos, 'z', true); 239 mail->date = p.getString(&pos, 'z', TRUE);
224 } 240 }
225 241
226 242
diff --git a/noncore/net/mailit/emaillistitem.cpp b/noncore/net/mailit/emaillistitem.cpp
index a325766..b925a1c 100644
--- a/noncore/net/mailit/emaillistitem.cpp
+++ b/noncore/net/mailit/emaillistitem.cpp
@@ -38,11 +38,13 @@ EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox)
38 setText(0, temp); 38 setText(0, temp);
39 } 39 }
40 setText(1, mail.subject); 40 setText(1, mail.subject);
41 setText(2,mail.date);
41 42
42 if (mailIn.files.count()>0) 43 if (mailIn.files.count()>0)
43 { 44 {
44 setPixmap(0, Resource::loadPixmap("mailit/attach")); 45 setPixmap(0, Resource::loadPixmap("mailit/attach"));
45 } 46 }
47
46 selected = FALSE; 48 selected = FALSE;
47} 49}
48 50
diff --git a/noncore/net/mailit/mailitwindow.cpp b/noncore/net/mailit/mailitwindow.cpp
index ef5fc09..7181adf 100644
--- a/noncore/net/mailit/mailitwindow.cpp
+++ b/noncore/net/mailit/mailitwindow.cpp
@@ -17,17 +17,18 @@
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include <qwhatsthis.h>
20#include "mailitwindow.h" 21#include "mailitwindow.h"
21 22
22MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl) 23MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
23 : QMainWindow(parent, name, fl) 24 : QMainWindow(parent, name, WStyle_ContextHelp)
24{ 25{
25 currentCaption = "Mailit"; 26 currentCaption = "Mailit";
26 setCaption(tr(currentCaption)); 27 setCaption(tr(currentCaption));
27 views = new QWidgetStack(this); 28 views = new QWidgetStack(this);
28 setCentralWidget(views); 29 setCentralWidget(views);
29 30 QWhatsThis::add(views,tr("Central view area"));
30 emailClient = new EmailClient(views, "client"); 31 emailClient = new EmailClient(views, "client");
31 writeMail = new WriteMail(views, "writing"); 32 writeMail = new WriteMail(views, "writing");
32 readMail = new ReadMail(views, "reading"); 33 readMail = new ReadMail(views, "reading");
33 34
@@ -140,26 +141,3 @@ void MailItWindow::setDocument(const QString &_address)
140 compose(); 141 compose();
141 writeMail->setRecipient(address); 142 writeMail->setRecipient(address);
142} 143}
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/popclient.cpp b/noncore/net/mailit/popclient.cpp
index f9cc337..67306be 100644
--- a/noncore/net/mailit/popclient.cpp
+++ b/noncore/net/mailit/popclient.cpp
@@ -119,7 +119,6 @@ void PopClient::incomingData()
119// return; 119// return;
120 120
121 response = socket->readLine(); 121 response = socket->readLine();
122 //qDebug(response +" %d", status);
123 122
124 switch(status) { 123 switch(status) {
125 //logging in 124 //logging in
@@ -131,18 +130,8 @@ void PopClient::incomingData()
131 { 130 {
132 timeStamp = response.mid( start , end - start + 1); 131 timeStamp = response.mid( start , end - start + 1);
133 md5Source = timeStamp + popPassword; 132 md5Source = timeStamp + popPassword;
134 //qDebug( md5Source);
135// for( int i = 0; i < md5Source.length(); i++) {
136// buff[i] = (QChar)md5Source[i];
137// }
138 133
139 md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]); 134 md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]);
140// md5_buffer(char const *buffer, unsigned int len, char *digest);
141
142// MD5_Init( &ctx);
143// MD5_Update( &ctx, buff, sizeof( buff) );
144// MD5_Final( md5Digest, &ctx);
145// MD5( buff, md5Source.length(), md5Digest);
146 135
147 for(int j =0;j < MD5_DIGEST_LENGTH ;j++) 136 for(int j =0;j < MD5_DIGEST_LENGTH ;j++)
148 { 137 {
@@ -164,7 +153,7 @@ void PopClient::incomingData()
164 153
165 break; 154 break;
166 } 155 }
167 //password shhh. don't tell anyone (implement APOP...) 156
168 case Pass: { 157 case Pass: {
169 *stream << "PASS " << popPassword << "\r\n"; 158 *stream << "PASS " << popPassword << "\r\n";
170 status = Stat; 159 status = Stat;
@@ -248,10 +237,11 @@ void PopClient::incomingData()
248 //Read message number x, count upwards to messageCount 237 //Read message number x, count upwards to messageCount
249 case Retr: { 238 case Retr: {
250 if (status != Quit) { 239 if (status != Quit) {
251 if (!preview || mailSize <= headerLimit) { 240 if (mailSize <= headerLimit)
241 {
252 *stream << "RETR " << messageCount << "\r\n"; 242 *stream << "RETR " << messageCount << "\r\n";
253 } else { //only header 243 } else { //only header
254 *stream << "TOP " << messageCount << " 0\r\n"; 244 *stream << "TOP " << messageCount << " 0\r\n";
255 } 245 }
256 messageCount++; 246 messageCount++;
257 status = Ignore; 247 status = Ignore;
@@ -283,8 +273,10 @@ void PopClient::incomingData()
283 break; 273 break;
284 } else { //message reach entire size 274 } else { //message reach entire size
285 //complete mail downloaded 275 //complete mail downloaded
286 if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){ 276 //if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){
287 emit newMessage(message, messageCount-1, mailSize, TRUE); 277 if ( mailSize <= headerLimit)
278 {
279 emit newMessage(message, messageCount-1, mailSize, TRUE);
288 } else { //incomplete mail downloaded 280 } else { //incomplete mail downloaded
289 emit newMessage(message, messageCount-1, mailSize, FALSE); 281 emit newMessage(message, messageCount-1, mailSize, FALSE);
290 } 282 }
diff --git a/noncore/net/mailit/readmail.cpp b/noncore/net/mailit/readmail.cpp
index dc98a6f..4eae7f6 100644
--- a/noncore/net/mailit/readmail.cpp
+++ b/noncore/net/mailit/readmail.cpp
@@ -59,36 +59,46 @@ 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 replyButton->setWhatsThis(tr("Click here to reply to the selected mail"));
63
63 forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ), 64 forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
64 QString::null, 0, this, 0 ); 65 QString::null, 0, this, 0 );
65 connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) ); 66 connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) );
67 forwardButton->setWhatsThis(tr("Click here to forward the selected mail"));
66 68
67 previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 ); 69 previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
68 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) ); 70 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) );
69 previousButton->addTo(bar); 71 previousButton->addTo(bar);
70 previousButton->addTo(viewMenu); 72 previousButton->addTo(viewMenu);
73 previousButton->setWhatsThis(tr("Read the previous mail in the list"));
71 74
72 nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 ); 75 nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 );
73 connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) ); 76 connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) );
74 nextButton->addTo(bar); 77 nextButton->addTo(bar);
75 nextButton->addTo(viewMenu); 78 nextButton->addTo(viewMenu);
79 previousButton->setWhatsThis(tr("Read the next mail in the list"));
76 80
77 attatchmentsButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 ); 81 attachmentButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 );
78 connect( attatchmentsButton, SIGNAL( activated() ), this, 82 connect( attachmentButton, SIGNAL( activated() ), this,
79 SLOT( viewAttatchments() ) ); 83 SLOT( viewAttachments() ) );
80 attatchmentsButton->addTo(bar); 84 attachmentButton->addTo(bar);
81 attatchmentsButton->addTo(viewMenu); 85 attachmentButton->addTo(viewMenu);
86 attachmentButton->setWhatsThis(tr("Click here to add attachments to your mail"));
82 87
83 plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "DocsIcon" ), QString::null, 0, this, 0, TRUE); 88 plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "DocsIcon" ), QString::null, 0, this, 0, TRUE);
84 connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) ); 89 connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) );
85 plainTextButton->addTo(bar); 90 plainTextButton->addTo(bar);
86 plainTextButton->addTo(viewMenu); 91 plainTextButton->addTo(viewMenu);
92 plainTextButton->setWhatsThis(tr("The mail view has 2 modes:\n"
93 "<LI><B>RichText</B> shows the mail as HTML with reach features (no standard line breaks)</LI>"
94 "<LI><B>Plain</B> shows the mail as standard plain text</LI>"
95 "Click here to switch between those view modes" ));
87 96
88 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); 97 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 );
89 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); 98 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) );
90 deleteButton->addTo(bar); 99 deleteButton->addTo(bar);
91 deleteButton->addTo(mailMenu); 100 deleteButton->addTo(mailMenu);
101 deleteButton->setWhatsThis(tr("Click here to remove the selected mail"));
92 102
93 viewMenu->insertItem(Resource::loadPixmap("close"), "Close", this, SLOT(close())); 103 viewMenu->insertItem(Resource::loadPixmap("close"), "Close", this, SLOT(close()));
94 104
@@ -248,8 +258,8 @@ void ReadMail::updateView()
248 } 258 }
249 259
250 if (mail->files.count() == 0) 260 if (mail->files.count() == 0)
251 attatchmentsButton->setEnabled(FALSE); 261 attachmentButton->setEnabled(FALSE);
252 else attatchmentsButton->setEnabled(TRUE); 262 else attachmentButton->setEnabled(TRUE);
253 263
254 setCaption("Examining mail: " + mail->subject); 264 setCaption("Examining mail: " + mail->subject);
255} 265}
@@ -339,7 +349,7 @@ void ReadMail::shiftText()
339 updateView(); 349 updateView();
340} 350}
341 351
342void ReadMail::viewAttatchments() 352void ReadMail::viewAttachments()
343{ 353{
344 viewAtt->update(mail, inbox); 354 viewAtt->update(mail, inbox);
345 viewAtt->showMaximized(); 355 viewAtt->showMaximized();
diff --git a/noncore/net/mailit/readmail.h b/noncore/net/mailit/readmail.h
index 0fe0646..df32c34 100644
--- a/noncore/net/mailit/readmail.h
+++ b/noncore/net/mailit/readmail.h
@@ -57,7 +57,7 @@ public slots:
57 void previous(); 57 void previous();
58 void deleteItem(); 58 void deleteItem();
59 void shiftText(); 59 void shiftText();
60 void viewAttatchments(); 60 void viewAttachments();
61 void reply(); 61 void reply();
62 void forward(); 62 void forward();
63 63
@@ -80,7 +80,7 @@ private:
80 QAction *plainTextButton; 80 QAction *plainTextButton;
81 QAction *nextButton; 81 QAction *nextButton;
82 QTextView *emailView; 82 QTextView *emailView;
83 QAction *attatchmentsButton; 83 QAction *attachmentButton;
84 QAction *previousButton; 84 QAction *previousButton;
85 QAction *replyButton; 85 QAction *replyButton;
86 QAction *forwardButton; 86 QAction *forwardButton;
diff --git a/noncore/net/mailit/smtpclient.cpp b/noncore/net/mailit/smtpclient.cpp
index b2e38e5..8a51a5b 100644
--- a/noncore/net/mailit/smtpclient.cpp
+++ b/noncore/net/mailit/smtpclient.cpp
@@ -87,7 +87,6 @@ void SmtpClient::incomingData()
87 return; 87 return;
88 88
89 response = socket->readLine(); 89 response = socket->readLine();
90 //qDebug(response);
91 90
92 switch(status) { 91 switch(status) {
93 case Init: { 92 case Init: {
@@ -95,7 +94,6 @@ void SmtpClient::incomingData()
95 status = From; 94 status = From;
96 mailPtr = mailList.first(); 95 mailPtr = mailList.first();
97 *stream << "HELO there\r\n"; 96 *stream << "HELO there\r\n";
98 //qDebug("HELO");
99 } else errorHandling(ErrUnknownResponse); 97 } else errorHandling(ErrUnknownResponse);
100 break; 98 break;
101 } 99 }
@@ -103,7 +101,6 @@ void SmtpClient::incomingData()
103 if (response[0] == '2') { 101 if (response[0] == '2') {
104 *stream << "MAIL FROM: " << mailPtr->from << "\r\n"; 102 *stream << "MAIL FROM: " << mailPtr->from << "\r\n";
105 status = Recv; 103 status = Recv;
106 //qDebug("MAIL FROM: "+mailPtr->from);
107 } else errorHandling(ErrUnknownResponse); 104 } else errorHandling(ErrUnknownResponse);
108 break; 105 break;
109 } 106 }
@@ -113,7 +110,6 @@ void SmtpClient::incomingData()
113 if (it == NULL) 110 if (it == NULL)
114 errorHandling(ErrUnknownResponse); 111 errorHandling(ErrUnknownResponse);
115 *stream << "RCPT TO: " << *it << ">\r\n"; 112 *stream << "RCPT TO: " << *it << ">\r\n";
116 //qDebug("RCPT TO: "+ *it);
117 status = MRcv; 113 status = MRcv;
118 } else errorHandling(ErrUnknownResponse); 114 } else errorHandling(ErrUnknownResponse);
119 break; 115 break;
@@ -123,7 +119,6 @@ void SmtpClient::incomingData()
123 it++; 119 it++;
124 if ( it != mailPtr->to.end() ) { 120 if ( it != mailPtr->to.end() ) {
125 *stream << "RCPT TO: <" << *it << ">\r\n"; 121 *stream << "RCPT TO: <" << *it << ">\r\n";
126 //qDebug("RCPT TO: "+ *it);
127 break; 122 break;
128 } else { 123 } else {
129 status = Data; 124 status = Data;
@@ -134,7 +129,6 @@ void SmtpClient::incomingData()
134 if (response[0] == '2') { 129 if (response[0] == '2') {
135 *stream << "DATA\r\n"; 130 *stream << "DATA\r\n";
136 status = Body; 131 status = Body;
137 //qDebug("DATA");
138 emit updateStatus(tr("Sending: ") + mailPtr->subject); 132 emit updateStatus(tr("Sending: ") + mailPtr->subject);
139 } else errorHandling(ErrUnknownResponse); 133 } else errorHandling(ErrUnknownResponse);
140 break; 134 break;
@@ -148,7 +142,6 @@ void SmtpClient::incomingData()
148 } else { 142 } else {
149 status = Quit; 143 status = Quit;
150 } 144 }
151 //qDebug("BODY");
152 } else errorHandling(ErrUnknownResponse); 145 } else errorHandling(ErrUnknownResponse);
153 break; 146 break;
154 } 147 }
@@ -163,7 +156,6 @@ void SmtpClient::incomingData()
163 mailList.clear(); 156 mailList.clear();
164 sending = FALSE; 157 sending = FALSE;
165 socket->close(); 158 socket->close();
166 //qDebug("QUIT");
167 } else errorHandling(ErrUnknownResponse); 159 } else errorHandling(ErrUnknownResponse);
168 break; 160 break;
169 } 161 }
diff --git a/noncore/net/mailit/textparser.cpp b/noncore/net/mailit/textparser.cpp
index f082417..3fa5f6e 100644
--- a/noncore/net/mailit/textparser.cpp
+++ b/noncore/net/mailit/textparser.cpp
@@ -62,27 +62,37 @@ void TextParser::createSeparators()
62 /*Returns pos of given search criteria, -1 if not found */ 62 /*Returns pos of given search criteria, -1 if not found */
63int TextParser::find(QString target, QChar sep, int pos, bool upperCase) 63int TextParser::find(QString target, QChar sep, int pos, bool upperCase)
64{ 64{
65
66 t_splitElm parsstr;
67 QString pString;
68
65 int atLine = 0, atPosElm = 0; 69 int atLine = 0, atPosElm = 0;
66 70
67 for (int x = 0; x < totalElmCount; x++) { 71 getLineReference(pos,&atLine,&atPosElm);
68 if (x >= pos) { 72
69 if (upperCase) { 73 for (int x = pos; x < totalElmCount; x++)
70 if ((splitDone[atLine].elm[atPosElm].str.upper() == target) && 74 {
71 (splitDone[atLine].elm[atPosElm].separator == sep)) 75 parsstr=splitDone[atLine].elm[atPosElm++];
72 return x; 76
73 } else { 77 if (upperCase)
74 if ((splitDone[atLine].elm[atPosElm].str == target) && 78 {
75 (splitDone[atLine].elm[atPosElm].separator == sep)) 79 pString=parsstr.str.upper();
76 return x; 80 target=target.upper();
77 } 81 }
78 } 82 else
79 atPosElm++; 83 {
80 if (atPosElm >= splitDone[atLine].elmCount) { //new Line 84 pString=parsstr.str;
85 }
86 if ((pString == target) && (parsstr.separator == sep))
87 {
88 return x;
89 }
90 if (atPosElm >= splitDone[atLine].elmCount)
91 { //new Line
81 atLine++; 92 atLine++;
82 atPosElm = 0; 93 atPosElm = 0;
83 } 94 }
84 } 95 }
85
86 return -1; 96 return -1;
87} 97}
88 98
diff --git a/noncore/net/mailit/viewatt.cpp b/noncore/net/mailit/viewatt.cpp
index b6f5015..21885c2 100644
--- a/noncore/net/mailit/viewatt.cpp
+++ b/noncore/net/mailit/viewatt.cpp
@@ -19,6 +19,7 @@
19**********************************************************************/ 19**********************************************************************/
20#include "resource.h" 20#include "resource.h"
21#include "viewatt.h" 21#include "viewatt.h"
22#include <qwhatsthis.h>
22#include <qpe/applnk.h> 23#include <qpe/applnk.h>
23#include <qpe/mimetype.h> 24#include <qpe/mimetype.h>
24 25
@@ -31,12 +32,14 @@ ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f)
31 bar = new QToolBar(this); 32 bar = new QToolBar(this);
32 installButton = new QAction( tr( "Install" ), Resource::loadPixmap( "exec" ), QString::null, CTRL + Key_C, this, 0 ); 33 installButton = new QAction( tr( "Install" ), Resource::loadPixmap( "exec" ), QString::null, CTRL + Key_C, this, 0 );
33 connect(installButton, SIGNAL(activated()), this, SLOT(install()) ); 34 connect(installButton, SIGNAL(activated()), this, SLOT(install()) );
35 installButton->setWhatsThis(tr("Click here to install the attachment to your Documents"));
34 36
35 listView = new QListView(this, "AttView"); 37 listView = new QListView(this, "AttView");
36 listView->addColumn( "Attatchment" ); 38 listView->addColumn( "Attatchment" );
37 listView->addColumn( "Type" ); 39 listView->addColumn( "Type" );
38 listView->addColumn( "Installed" ); 40 listView->addColumn( "Installed" );
39 setCentralWidget(listView); 41 setCentralWidget(listView);
42 QWhatsThis::add(listView,QWidget::tr("This is an overview about all attachments in the mail"));
40} 43}
41 44
42void ViewAtt::update(Email *mailIn, bool inbox) 45void ViewAtt::update(Email *mailIn, bool inbox)
diff --git a/noncore/net/mailit/writemail.cpp b/noncore/net/mailit/writemail.cpp
index a9dcb02..0336c83 100644
--- a/noncore/net/mailit/writemail.cpp
+++ b/noncore/net/mailit/writemail.cpp
@@ -18,6 +18,7 @@
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include <qmessagebox.h> 20#include <qmessagebox.h>
21#include <qwhatsthis.h>
21#include "writemail.h" 22#include "writemail.h"
22#include <qpe/resource.h> 23#include <qpe/resource.h>
23 24
@@ -27,7 +28,7 @@ WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl )
27 showingAddressList = FALSE; 28 showingAddressList = FALSE;
28 init(); 29 init();
29 30
30 addAtt = new AddAtt(0, "Add Attatchments"); 31 addAtt = new AddAtt(0, "Add Attachments");
31} 32}
32 33
33WriteMail::~WriteMail() 34WriteMail::~WriteMail()
@@ -64,20 +65,23 @@ void WriteMail::init()
64 menu->insertItem( tr( "&Add" ), addMenu); 65 menu->insertItem( tr( "&Add" ), addMenu);
65 66
66 bar = new QToolBar(this); 67 bar = new QToolBar(this);
67 attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0); 68 attachButton = new QAction(tr("Attachment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0);
68 attatchButton->addTo(bar); 69 attachButton->addTo(bar);
69 attatchButton->addTo(addMenu); 70 attachButton->addTo(addMenu);
70 connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) ); 71 connect( attachButton, SIGNAL( activated() ), this, SLOT( attachFile() ) );
71 72 attachButton->setWhatsThis(tr("Click here to attach files to your mail"));
73
72 confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0); 74 confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0);
73 confirmButton->addTo(bar); 75 confirmButton->addTo(bar);
74 confirmButton->addTo(mailMenu); 76 confirmButton->addTo(mailMenu);
75 connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) ); 77 connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) );
78 confirmButton->setWhatsThis(tr("This button puts your mail in the send queue"));
76 79
77 newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0); 80 newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
78 newButton->addTo(mailMenu); 81 newButton->addTo(mailMenu);
79 connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) ); 82 connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) );
80 83 newButton->setWhatsThis(tr("Click here to create a new mail"));
84
81 widget = new QWidget(this, "widget"); 85 widget = new QWidget(this, "widget");
82 grid = new QGridLayout( widget ); 86 grid = new QGridLayout( widget );
83 87
@@ -88,7 +92,6 @@ void WriteMail::init()
88 grid->addWidget( recipientsBox, 0, 0 ); 92 grid->addWidget( recipientsBox, 0, 0 );
89 connect(recipientsBox,SIGNAL(activated(int)),this, SLOT(changeRecipients(int))); 93 connect(recipientsBox,SIGNAL(activated(int)),this, SLOT(changeRecipients(int)));
90 94
91
92 subjetLabel = new QLabel( widget, "subjetLabel" ); 95 subjetLabel = new QLabel( widget, "subjetLabel" );
93 subjetLabel->setText( tr( "Subject:" ) ); 96 subjetLabel->setText( tr( "Subject:" ) );
94 97
@@ -100,25 +103,28 @@ void WriteMail::init()
100 103
101 subjectInput = new QLineEdit( widget, "subjectInput" ); 104 subjectInput = new QLineEdit( widget, "subjectInput" );
102 grid->addWidget( subjectInput, 1, 1 ); 105 grid->addWidget( subjectInput, 1, 1 );
106 QWhatsThis::add(subjectInput,QWidget::tr("The mail subject should be entered here"));
103 107
104 toInput = new QLineEdit( widget, "toInput" ); 108 toInput = new QLineEdit( widget, "toInput" );
105 grid->addWidget( toInput, 0, 1 ); 109 grid->addWidget( toInput, 0, 1 );
110 QWhatsThis::add(recipientsBox,QWidget::tr("Recipients can be entered here"));
106 111
107 ccInput = new QLineEdit( widget, "ccInput" ); 112 ccInput = new QLineEdit( widget, "ccInput" );
108 ccInput->hide(); 113 ccInput->hide();
109 grid->addWidget( ccInput, 0, 1 ); 114 grid->addWidget( ccInput, 0, 1 );
115 QWhatsThis::add(ccInput,QWidget::tr("If you would like to send copies of your mail they can be entered here"));
110 116
111
112 addressButton = new QToolButton( widget, "addressButton" ); 117 addressButton = new QToolButton( widget, "addressButton" );
113 addressButton->setPixmap( Resource::loadPixmap("AddressBook") ); 118 addressButton->setPixmap( Resource::loadPixmap("AddressBook") );
114 addressButton->setToggleButton(TRUE); 119 addressButton->setToggleButton(TRUE);
115 grid->addWidget( addressButton, 0, 2 ); 120 grid->addWidget( addressButton, 0, 2 );
116 connect(addressButton, SIGNAL(clicked()), this, SLOT(getAddress()) ); 121 connect(addressButton, SIGNAL(clicked()), this, SLOT(getAddress()) );
122 QWhatsThis::add(addressButton,QWidget::tr("This button opens the address selector with all mail adresses from your OPIE addressbook"));
117 123
118 emailInput = new QMultiLineEdit( widget, "emailInput" ); 124 emailInput = new QMultiLineEdit( widget, "emailInput" );
119 grid->addMultiCellWidget( emailInput, 2, 2, 0, 2); 125 grid->addMultiCellWidget( emailInput, 2, 2, 0, 2);
126 QWhatsThis::add(recipientsBox,QWidget::tr("Enter your mail text here"));
120 127
121
122 addressView = new QListView( widget, "addressView"); 128 addressView = new QListView( widget, "addressView");
123 addressView->addColumn("Name"); 129 addressView->addColumn("Name");
124 addressView->addColumn("EMail"); 130 addressView->addColumn("EMail");
@@ -126,11 +132,13 @@ void WriteMail::init()
126 addressView->setMultiSelection(TRUE); 132 addressView->setMultiSelection(TRUE);
127 addressView->hide(); 133 addressView->hide();
128 grid->addMultiCellWidget( addressView, 3, 3, 0, 2); 134 grid->addMultiCellWidget( addressView, 3, 3, 0, 2);
129 135 QWhatsThis::add(recipientsBox,QWidget::tr("Chose the recipients from this list"));
136
130 okButton = new QToolButton(bar, "ok"); 137 okButton = new QToolButton(bar, "ok");
131 okButton->setPixmap( Resource::loadPixmap("enter") ); 138 okButton->setPixmap( Resource::loadPixmap("enter") );
132 okButton->hide(); 139 okButton->hide();
133 connect(okButton, SIGNAL(clicked()), this, SLOT(addRecipients()) ); 140 connect(okButton, SIGNAL(clicked()), this, SLOT(addRecipients()) );
141 QWhatsThis::add(okButton,QWidget::tr("Queue your mail by clicking here"));
134 142
135 setCentralWidget(widget); 143 setCentralWidget(widget);
136} 144}
@@ -143,7 +151,7 @@ void WriteMail::reject()
143// need to insert date 151// need to insert date
144void WriteMail::accept() 152void WriteMail::accept()
145{ 153{
146 QStringList attatchedFiles, attatchmentsType; 154 QStringList attachedFiles, attachmentsType;
147 int idCount = 0; 155 int idCount = 0;
148 156
149 if (toInput->text() == "") 157 if (toInput->text() == "")
@@ -196,13 +204,13 @@ void WriteMail::accept()
196 mail.rawMail += mail.subject; 204 mail.rawMail += mail.subject;
197 mail.rawMail += "\n\n"; 205 mail.rawMail += "\n\n";
198 206
199 attatchedFiles = addAtt->returnAttatchedFiles(); 207 attachedFiles = addAtt->returnattachedFiles();
200 attatchmentsType = addAtt->returnFileTypes(); 208 attachmentsType = addAtt->returnFileTypes();
201 209
202 QStringList::Iterator itType = attatchmentsType.begin(); 210 QStringList::Iterator itType = attachmentsType.begin();
203 211
204 Enclosure e; 212 Enclosure e;
205 for ( QStringList::Iterator it = attatchedFiles.begin(); it != attatchedFiles.end(); ++it ) { 213 for ( QStringList::Iterator it = attachedFiles.begin(); it != attachedFiles.end(); ++it ) {
206 e.id = idCount; 214 e.id = idCount;
207 e.originalName = (*it).latin1(); 215 e.originalName = (*it).latin1();
208 e.contentType = (*itType).latin1(); 216 e.contentType = (*itType).latin1();
@@ -236,7 +244,7 @@ void WriteMail::getAddress()
236 } 244 }
237} 245}
238 246
239void WriteMail::attatchFile() 247void WriteMail::attachFile()
240{ 248{
241 addAtt->showMaximized(); 249 addAtt->showMaximized();
242} 250}
@@ -256,7 +264,7 @@ void WriteMail::reply(Email replyMail, bool replyAll)
256 subjectInput->setText(tr("Re: ") + mail.subject); 264 subjectInput->setText(tr("Re: ") + mail.subject);
257 265
258 pos = 0; 266 pos = 0;
259 mail.body.insert(pos, ">>"); 267 mail.body.insert(pos, ">");
260 while (pos != -1) { 268 while (pos != -1) {
261 pos = mail.body.find('\n', pos); 269 pos = mail.body.find('\n', pos);
262 if (pos != -1) 270 if (pos != -1)
diff --git a/noncore/net/mailit/writemail.h b/noncore/net/mailit/writemail.h
index f193b13..921f27e 100644
--- a/noncore/net/mailit/writemail.h
+++ b/noncore/net/mailit/writemail.h
@@ -55,7 +55,7 @@ signals:
55 55
56public slots: 56public slots:
57 void getAddress(); 57 void getAddress();
58 void attatchFile(); 58 void attachFile();
59 void addRecipients(); 59 void addRecipients();
60 void newMail(); 60 void newMail();
61 void accept(); 61 void accept();
@@ -79,7 +79,7 @@ private:
79 79
80 QToolButton *okButton; 80 QToolButton *okButton;
81 QWidget *widget; 81 QWidget *widget;
82 QAction *attatchButton; 82 QAction *attachButton;
83 QAction *confirmButton; 83 QAction *confirmButton;
84 QAction *newButton; 84 QAction *newButton;
85 QLabel* subjetLabel; 85 QLabel* subjetLabel;
diff --git a/noncore/unsupported/mailit/addatt.cpp b/noncore/unsupported/mailit/addatt.cpp
index d268f1f..daefac6 100644
--- a/noncore/unsupported/mailit/addatt.cpp
+++ b/noncore/unsupported/mailit/addatt.cpp
@@ -56,13 +56,13 @@ FileItem::~FileItem()
56AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f) 56AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
57 : QDialog(parent, name, f) 57 : QDialog(parent, name, f)
58{ 58{
59 setCaption("Adding attatchments"); 59 setCaption("Adding attachments");
60 60
61 QGridLayout *top = new QGridLayout(this, 1,1 ); 61 QGridLayout *top = new QGridLayout(this, 1,1 );
62 62
63 QHBox *buttons=new QHBox(this); 63 QHBox *buttons=new QHBox(this);
64 /*fileCategoryButton = new QPushButton(this);*/ 64 /*fileCategoryButton = new QPushButton(this);*/
65 attatchButton = new QPushButton(tr("Attatch..."), buttons); 65 attachButton = new QPushButton(tr("attach..."), buttons);
66 removeButton = new QPushButton(tr("Remove"), buttons); 66 removeButton = new QPushButton(tr("Remove"), buttons);
67 67
68 /*fileCategories = new QPopupMenu(fileCategoryButton); 68 /*fileCategories = new QPopupMenu(fileCategoryButton);
@@ -78,27 +78,27 @@ AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
78 78
79 79
80 top->addWidget(buttons,1,0); 80 top->addWidget(buttons,1,0);
81 //buttons->addWidget(attatchButton,0,0); 81 //buttons->addWidget(attachButton,0,0);
82 //buttons->addWidget(removeButton,0,1); 82 //buttons->addWidget(removeButton,0,1);
83 83
84 //connect(fileCategories, SIGNAL(activated(int)), this, 84 //connect(fileCategories, SIGNAL(activated(int)), this,
85 //SLOT(fileCategorySelected(int)) );*/ 85 //SLOT(fileCategorySelected(int)) );*/
86 connect(attatchButton, SIGNAL(clicked()), this, 86 connect(attachButton, SIGNAL(clicked()), this,
87 SLOT(addAttatchment()) ); 87 SLOT(addattachment()) );
88 connect(removeButton, SIGNAL(clicked()), this, 88 connect(removeButton, SIGNAL(clicked()), this,
89 SLOT(removeAttatchment()) ); 89 SLOT(removeattachment()) );
90 90
91 /*listView = new QListView(this, "AttView"); 91 /*listView = new QListView(this, "AttView");
92 listView->addColumn("Documents");* 92 listView->addColumn("Documents");*
93 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this, 93 connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this,
94 SLOT(addAttatchment()) );*/ 94 SLOT(addattachment()) );*/
95 95
96 96
97 attView = new QListView(this, "Selected"); 97 attView = new QListView(this, "Selected");
98 attView->addColumn(tr("Attached")); 98 attView->addColumn(tr("Attached"));
99 attView->addColumn(tr("File type")); 99 attView->addColumn(tr("File type"));
100 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this, 100 connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this,
101 SLOT(removeAttatchment()) ); 101 SLOT(removeattachment()) );
102 102
103 //top->addWidget(ofs, 0,0); 103 //top->addWidget(ofs, 0,0);
104 top->addWidget(attView, 0,0); 104 top->addWidget(attView, 0,0);
@@ -121,7 +121,7 @@ void AddAtt::clear()
121 getFiles(); 121 getFiles();
122}*/ 122}*/
123 123
124void AddAtt::addAttatchment() 124void AddAtt::addattachment()
125 { 125 {
126 OFileDialog ofs("Attachments",this,0,0,"/root/Documents"); 126 OFileDialog ofs("Attachments",this,0,0,"/root/Documents");
127 127
@@ -138,7 +138,7 @@ void AddAtt::addAttatchment()
138 } 138 }
139} 139}
140 140
141void AddAtt::removeAttatchment() 141void AddAtt::removeattachment()
142{ 142{
143 if (attView->selectedItem() != NULL) 143 if (attView->selectedItem() != NULL)
144 { 144 {
@@ -192,7 +192,7 @@ void AddAtt::getFiles()
192 }*/ 192 }*/
193} 193}
194 194
195QStringList AddAtt::returnAttatchedFiles() 195QStringList AddAtt::returnattachedFiles()
196{ 196{
197 QFileInfo info; 197 QFileInfo info;
198 QStringList list; 198 QStringList list;
diff --git a/noncore/unsupported/mailit/addatt.h b/noncore/unsupported/mailit/addatt.h
index fcf3279..a365947 100644
--- a/noncore/unsupported/mailit/addatt.h
+++ b/noncore/unsupported/mailit/addatt.h
@@ -49,7 +49,7 @@ class AddAtt : public QDialog
49 49
50public: 50public:
51 AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0); 51 AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
52 QStringList returnAttatchedFiles(); 52 QStringList returnattachedFiles();
53 QStringList returnFileTypes(); 53 QStringList returnFileTypes();
54 void getFiles(); 54 void getFiles();
55 void clear(); 55 void clear();
@@ -57,15 +57,15 @@ public:
57 57
58public slots: 58public slots:
59 //void fileCategorySelected(int); 59 //void fileCategorySelected(int);
60 void addAttatchment(); 60 void addattachment();
61 void removeAttatchment(); 61 void removeattachment();
62 void reject(); 62 void reject();
63 void accept(); 63 void accept();
64 64
65private: 65private:
66 FileItem* item; 66 FileItem* item;
67 QListView *attView; 67 QListView *attView;
68 QPushButton *attatchButton, *removeButton; 68 QPushButton *attachButton, *removeButton;
69 QPopupMenu *fileCategories; 69 QPopupMenu *fileCategories;
70 bool modified; 70 bool modified;
71 //QFileInfo *fi; 71 //QFileInfo *fi;
diff --git a/noncore/unsupported/mailit/addresslist.cpp b/noncore/unsupported/mailit/addresslist.cpp
index 8d9ab91..7d60ebf 100644
--- a/noncore/unsupported/mailit/addresslist.cpp
+++ b/noncore/unsupported/mailit/addresslist.cpp
@@ -121,7 +121,7 @@ void AddressList::read()
121 QString lineEmail, lineName, email, name; 121 QString lineEmail, lineName, email, name;
122 OContactAccess m_contactdb("mailit"); 122 OContactAccess m_contactdb("mailit");
123 OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 ); 123 OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 );
124 //OContact* oc; 124 //OContact* oc;(*it).defaultEmail()
125 125
126 for ( it = m_list.begin(); it != m_list.end(); ++it ) 126 for ( it = m_list.begin(); it != m_list.end(); ++it )
127 { 127 {
diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp
index ad1e0b4..23059cf 100644
--- a/noncore/unsupported/mailit/emailclient.cpp
+++ b/noncore/unsupported/mailit/emailclient.cpp
@@ -23,6 +23,7 @@
23#include <qcheckbox.h> 23#include <qcheckbox.h>
24#include <qmenubar.h> 24#include <qmenubar.h>
25#include <qaction.h> 25#include <qaction.h>
26#include <qwhatsthis.h>
26#include <qpe/resource.h> 27#include <qpe/resource.h>
27#include "emailclient.h" 28#include "emailclient.h"
28 29
@@ -82,6 +83,7 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
82 readMail(); 83 readMail();
83 lineShift = "\r\n"; 84 lineShift = "\r\n";
84 85
86 mailboxView->setCurrentTab(0); //ensure that inbox has focus
85} 87}
86 88
87 89
@@ -113,6 +115,7 @@ void EmailClient::init()
113 status2Label, SLOT(setText(const QString &)) ); 115 status2Label, SLOT(setText(const QString &)) );
114 116
115 progressBar = new QProgressBar(statusBar); 117 progressBar = new QProgressBar(statusBar);
118
116 connect(emailHandler, SIGNAL(mailboxSize(int)), 119 connect(emailHandler, SIGNAL(mailboxSize(int)),
117 this, SLOT(setTotalSize(int)) ); 120 this, SLOT(setTotalSize(int)) );
118 connect(emailHandler, SIGNAL(currentMailSize(int)), 121 connect(emailHandler, SIGNAL(currentMailSize(int)),
@@ -127,6 +130,7 @@ void EmailClient::init()
127 setToolBarsMovable(FALSE); 130 setToolBarsMovable(FALSE);
128 131
129 bar = new QToolBar(this); 132 bar = new QToolBar(this);
133 QWhatsThis::add(bar,tr("Main operation toolbar"));
130 bar->setHorizontalStretchable( TRUE ); 134 bar->setHorizontalStretchable( TRUE );
131 135
132 mb = new QMenuBar( bar ); 136 mb = new QMenuBar( bar );
@@ -148,45 +152,34 @@ void EmailClient::init()
148 bar = new QToolBar(this); 152 bar = new QToolBar(this);
149 153
150 getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar); 154 getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar);
151 //connect(setAccountlButton, SIGNAL(activated()), this, SLOT(setCurrentAccount()) ); 155 QWhatsThis::add(getMailButton,tr("Click to download mail via all available accounts.\n Press and hold to select the desired account."));
152 // setAccountButton->addTo(bar); 156
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); 157 getMailButton->setPopup(selectAccountMenu);
164 158
165
166 /*getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0);
167 connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) );
168 getMailButton->addTo(bar);*/
169 //getMailButton->addTo(mail);
170
171 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendqueue"), QString::null, 0, this, 0); 159 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendqueue"), QString::null, 0, this, 0);
172 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) ); 160 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) );
173 sendMailButton->addTo(bar); 161 sendMailButton->addTo(bar);
174 sendMailButton->addTo(mail); 162 sendMailButton->addTo(mail);
163 sendMailButton->setWhatsThis("Send mail queued in the outbox");
175 164
176 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0); 165 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
177 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) ); 166 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) );
178 composeButton->addTo(bar); 167 composeButton->addTo(bar);
179 composeButton->addTo(mail); 168 composeButton->addTo(mail);
169 composeButton->setWhatsThis("Compose a new mail");
180 170
181 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0); 171 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0);
182 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) ); 172 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) );
183 cancelButton->addTo(mail); 173 cancelButton->addTo(mail);
184 cancelButton->addTo(bar); 174 cancelButton->addTo(bar);
185 cancelButton->setEnabled(FALSE); 175 cancelButton->setEnabled(FALSE);
176 cancelButton->setWhatsThis("Stop the currently active mail transfer");
177
186 178
187 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); 179 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 );
188 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); 180 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) );
189 deleteButton->addTo(bar); 181 deleteButton->addTo(bar);
182 deleteButton->setWhatsThis("Remove the currently selected eMail(s)");
190 183
191 mailboxView = new OTabWidget( this, "mailboxView" ); 184 mailboxView = new OTabWidget( this, "mailboxView" );
192 185
@@ -201,6 +194,8 @@ void EmailClient::init()
201 inboxView->addColumn( tr( "Date" ) ); 194 inboxView->addColumn( tr( "Date" ) );
202 inboxView->setMinimumSize( QSize( 0, 0 ) ); 195 inboxView->setMinimumSize( QSize( 0, 0 ) );
203 inboxView->setAllColumnsShowFocus(TRUE); 196 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"
198 " A blue attachment icon shows whether this mail has attachments."));
204 199
205 grid_2->addWidget( inboxView, 2, 0 ); 200 grid_2->addWidget( inboxView, 2, 0 );
206 mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) ); 201 mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) );
@@ -215,12 +210,12 @@ void EmailClient::init()
215 outboxView->addColumn( tr( "Subject" ) ); 210 outboxView->addColumn( tr( "Subject" ) );
216 outboxView->setAllColumnsShowFocus(TRUE); 211 outboxView->setAllColumnsShowFocus(TRUE);
217 212
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."));
218 grid_3->addWidget( outboxView, 0, 0 ); 214 grid_3->addWidget( outboxView, 0, 0 );
219 mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) ); 215 mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) );
220 216
221 setCentralWidget(mailboxView); 217 setCentralWidget(mailboxView);
222 218
223 mailboxView->setCurrentTab(0);
224} 219}
225 220
226void EmailClient::compose() 221void EmailClient::compose()
@@ -324,7 +319,7 @@ void EmailClient::getNewMail() {
324 progressBar->reset(); 319 progressBar->reset();
325 320
326 //get any previous mails not downloaded and add to queue 321 //get any previous mails not downloaded and add to queue
327/* mailDownloadList.clear(); 322 mailDownloadList.clear();
328 Email *mailPtr; 323 Email *mailPtr;
329 item = (EmailListItem *) inboxView->firstChild(); 324 item = (EmailListItem *) inboxView->firstChild();
330 while (item != NULL) { 325 while (item != NULL) {
@@ -333,9 +328,10 @@ void EmailClient::getNewMail() {
333 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); 328 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
334 } 329 }
335 item = (EmailListItem *) item->nextSibling(); 330 item = (EmailListItem *) item->nextSibling();
336 }*/ 331 }
337 332
338 emailHandler->getMailHeaders(); 333 emailHandler->getMailHeaders();
334
339} 335}
340 336
341void EmailClient::getAllNewMail() 337void EmailClient::getAllNewMail()
@@ -351,15 +347,17 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
351 Email newMail; 347 Email newMail;
352 int thisMailId; 348 int thisMailId;
353 emailHandler->parse(mail.rawMail, lineShift, &newMail); 349 emailHandler->parse(mail.rawMail, lineShift, &newMail);
354
355 mailconf->setGroup(newMail.id); 350 mailconf->setGroup(newMail.id);
356 351
357 if (fromDisk) { 352 if (fromDisk)
353 {
358 newMail.downloaded = mailconf->readBoolEntry("downloaded"); 354 newMail.downloaded = mailconf->readBoolEntry("downloaded");
359 newMail.size = mailconf->readNumEntry("size"); 355 newMail.size = mailconf->readNumEntry("size");
360 newMail.serverId = mailconf->readNumEntry("serverid"); 356 newMail.serverId = mailconf->readNumEntry("serverid");
361 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid"); 357 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid");
362 } else { //mail arrived from server 358 }
359 else
360 { //mail arrived from server
363 newMail.serverId = mail.serverId; 361 newMail.serverId = mail.serverId;
364 newMail.size = mail.size; 362 newMail.size = mail.size;
365 newMail.downloaded = mail.downloaded; 363 newMail.downloaded = mail.downloaded;
@@ -378,7 +376,7 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
378 376
379 //set server count, so that if the user aborts, the new 377 //set server count, so that if the user aborts, the new
380 //header is not reloaded 378 //header is not reloaded
381 if (currentAccount->synchronize) 379 if ((currentAccount)&&(currentAccount->synchronize))
382 currentAccount->lastServerMailCount++; 380 currentAccount->lastServerMailCount++;
383 381
384 mailconf->writeEntry("internalmailid", thisMailId); 382 mailconf->writeEntry("internalmailid", thisMailId);
@@ -386,13 +384,15 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
386 mailconf->writeEntry("size", (int) newMail.size); 384 mailconf->writeEntry("size", (int) newMail.size);
387 mailconf->writeEntry("serverid", newMail.serverId); 385 mailconf->writeEntry("serverid", newMail.serverId);
388 386
389 addressList->addContact(newMail.fromMail, newMail.from); 387 //addressList->addContact(newMail.fromMail, newMail.from);
390 } else if (!fromDisk) { //body to header arrived
391 mailconf->writeEntry("downloaded", TRUE);
392 } 388 }
389
390 mailconf->writeEntry("downloaded", newMail.downloaded);
391
393 QString stringMailId; 392 QString stringMailId;
394 stringMailId.setNum(thisMailId); 393 stringMailId.setNum(thisMailId);
395 //se if any attatchments needs to be stored 394 //see if any attatchments needs to be stored
395
396 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) { 396 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) {
397 QString stringId; 397 QString stringId;
398 stringId.setNum(ePtr->id); 398 stringId.setNum(ePtr->id);
@@ -426,22 +426,29 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
426 } 426 }
427 } 427 }
428 } 428 }
429 if (!previewingMail && !fromDisk) { 429
430 bool found=false;
431
432 if (!fromDisk)
433 {
434
430 Email *mailPtr; 435 Email *mailPtr;
431 item = (EmailListItem *) inboxView->firstChild(); 436 item = (EmailListItem *) inboxView->firstChild();
432 while (item != NULL) { 437 while ((item != NULL)&&(!found))
438 {
433 mailPtr = item->getMail(); 439 mailPtr = item->getMail();
434 if (mailPtr->id == newMail.id) { 440 if (mailPtr->id == newMail.id) {
435 item->setMail(newMail); 441 item->setMail(newMail);
436 emit mailUpdated(item->getMail()); 442 emit mailUpdated(item->getMail());
443 found = true;
437 } 444 }
438 item = (EmailListItem *) item->nextSibling(); 445 item = (EmailListItem *) item->nextSibling();
439 } 446 }
440 } else {
441 item = new EmailListItem(inboxView, newMail, TRUE);
442 if (!newMail.downloaded)
443 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);
444 } 447 }
448 if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE);
449
450 /*if (!newMail.downloaded)
451 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/
445 452
446 mailboxView->setCurrentTab(0); 453 mailboxView->setCurrentTab(0);
447 454
@@ -450,7 +457,7 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
450void EmailClient::allMailArrived(int count) 457void EmailClient::allMailArrived(int count)
451{ 458{
452 // not previewing means all mailtransfer has been done 459 // not previewing means all mailtransfer has been done
453 if (!previewingMail) { 460 /*if (!previewingMail) {*/
454 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) { 461 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) {
455 emit newCaption("Mailit - " + currentAccount->accountName); 462 emit newCaption("Mailit - " + currentAccount->accountName);
456 getNewMail(); 463 getNewMail();
@@ -466,14 +473,14 @@ void EmailClient::allMailArrived(int count)
466 progressBar->reset(); 473 progressBar->reset();
467 return; 474 return;
468 } 475 }
469 } 476 //}
470 477
471 // all headers downloaded from server, start downloading remaining mails 478 // all headers downloaded from server, start downloading remaining mails
472 previewingMail = FALSE; 479 previewingMail = FALSE;
473 status1Label->setText(currentAccount->accountName); 480 status1Label->setText(currentAccount->accountName);
474 progressBar->reset(); 481 progressBar->reset();
475 482
476 emailHandler->getMailByList(&mailDownloadList); 483 //emailHandler->getMailByList(&mailDownloadList);
477 484
478 mailboxView->setCurrentTab(0); 485 mailboxView->setCurrentTab(0);
479} 486}
@@ -541,7 +548,7 @@ void EmailClient::popError(int code)
541 548
542void EmailClient::inboxItemSelected() 549void EmailClient::inboxItemSelected()
543{ 550{
544 killTimer(timerID); 551 //killTimer(timerID);
545 552
546 item = (EmailListItem*) inboxView->selectedItem(); 553 item = (EmailListItem*) inboxView->selectedItem();
547 if (item != NULL) { 554 if (item != NULL) {
@@ -551,7 +558,7 @@ void EmailClient::inboxItemSelected()
551 558
552void EmailClient::outboxItemSelected() 559void EmailClient::outboxItemSelected()
553{ 560{
554 killTimer(timerID); 561 //killTimer(timerID);
555 562
556 item = (EmailListItem*) outboxView->selectedItem(); 563 item = (EmailListItem*) outboxView->selectedItem();
557 if (item != NULL) { 564 if (item != NULL) {
@@ -567,9 +574,7 @@ void EmailClient::readMail()
567 QString s, del; 574 QString s, del;
568 575
569 QFile f(getPath(FALSE) + "inbox.txt"); 576 QFile f(getPath(FALSE) + "inbox.txt");
570// QFileInfo fi(f); 577
571 //qDebug( f.name());
572
573 if ( f.open(IO_ReadOnly) ) { // file opened successfully 578 if ( f.open(IO_ReadOnly) ) { // file opened successfully
574 QTextStream t( &f ); // use a text stream 579 QTextStream t( &f ); // use a text stream
575 s = t.read(); 580 s = t.read();
@@ -622,12 +627,9 @@ void EmailClient::saveMail(QString fileName, QListView *view)
622 return; 627 return;
623 } 628 }
624 item = (EmailListItem *) view->firstChild(); 629 item = (EmailListItem *) view->firstChild();
625 //qDebug (QString("Write : ") );
626 QTextStream t(&f); 630 QTextStream t(&f);
627 while (item != NULL) { 631 while (item != NULL) {
628 mail = item->getMail(); 632 mail = item->getMail();
629 //qDebug(mail->rawMail);
630 //qDebug(mail->recipients.first());
631 t << mail->rawMail; 633 t << mail->rawMail;
632 634
633 mailconf->setGroup(mail->id); 635 mailconf->setGroup(mail->id);
@@ -662,110 +664,85 @@ QString EmailClient::getPath(bool enclosurePath)
662 664
663void EmailClient::readSettings() 665void EmailClient::readSettings()
664{ 666{
665 TextParser *p; 667 int y,acc_count, accountPos=0;
666 QString s;
667 int pos, accountPos, y;
668 QFile f( getPath(FALSE) + "settings.txt");
669
670 if ( f.open(IO_ReadOnly) ) { // file opened successfully
671 QTextStream t( &f ); // use a text stream
672 s = t.read();
673 f.close();
674 668
675 p = new TextParser(s, "\n"); 669 mailconf->setGroup("mailitglobal");
676 670 acc_count=mailconf->readNumEntry("Accounts",0);
677 accountPos = 0;
678 while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) {
679 accountPos++;
680 if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 )
681 account.accountName = p->getString(& ++pos, 'z', TRUE);
682 if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1)
683 account.name = p->getString(& ++pos, 'z', TRUE);
684 if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1)
685 account.emailAddress = p->getString(& ++pos, 'z', TRUE);
686 if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1)
687 account.popUserName = p->getString(& ++pos, 'z', TRUE);
688 if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1)
689 account.popPasswd = p->getString(& ++pos, 'z', TRUE);
690 if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1)
691 account.popServer = p->getString(& ++pos, 'z', TRUE);
692 if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1)
693 account.smtpServer = p->getString(& ++pos, 'z', TRUE);
694 if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) {
695 s = p->getString(& ++pos, 'z', TRUE);
696 account.id = s.toInt();
697 }
698 671
672 for (int accountPos = 0;accountPos<acc_count ; accountPos++)
673 {
674 mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ...
675 account.accountName = mailconf->readEntry("AccName","");
676 account.name = mailconf->readEntry("UserName","");
677 account.emailAddress = mailconf->readEntry("Email","");
678 account.popUserName = mailconf->readEntry("POPUser","");
679 account.popPasswd = mailconf->readEntryCrypt("POPPassword","");
680 account.popServer = mailconf->readEntry("POPServer","");
681 account.smtpServer = mailconf->readEntry("SMTPServer","");
682 account.id = mailconf->readNumEntry("AccountId",0);
683 account.syncLimit = mailconf->readNumEntry("HeaderLimit",0);
699 account.lastServerMailCount = 0; 684 account.lastServerMailCount = 0;
700 account.synchronize = FALSE; 685 account.synchronize = FALSE;
701 if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) { 686
702 if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") { 687 account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes");
703 account.synchronize = TRUE; 688 if (account.synchronize)
704 if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) { 689 {
705 s = p->getString(& ++pos, 'z', TRUE); 690 mailconf->readNumEntry("LASTSERVERMAILCOUNT",0);
706 account.lastServerMailCount = s.toInt();
707 }
708 }
709 }
710
711 if ( (pos = p->find("SYNCLIMIT",':', accountPos, TRUE)) != -1) {
712 account.syncLimit = p->getString(& ++pos, 'z', TRUE).toInt();
713 } 691 }
714
715 692
716 accountList.append(&account); 693 accountList.append(&account);
717 } 694 }
718 delete p; 695
719 }
720 mailconf->setGroup("mailitglobal"); 696 mailconf->setGroup("mailitglobal");
721 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) { 697
698 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1)
699 {
722 mailIdCount = y; 700 mailIdCount = y;
723 } 701 }
724 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) { 702 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1)
703 {
725 accountIdCount = y; 704 accountIdCount = y;
726 } 705 }
727} 706}
728 707
729void EmailClient::saveSettings() 708void EmailClient::saveSettings()
730{ 709{
731 710 int acc_count=0;
732 QString temp;
733 QFile f( getPath(FALSE) + "settings.txt");
734 MailAccount *accountPtr; 711 MailAccount *accountPtr;
735 712
736 if (! f.open(IO_WriteOnly) ) { 713
737 qWarning("could not save settings file"); 714 if (!mailconf)
715 {
716 qWarning("could not save settings");
738 return; 717 return;
739 } 718 }
740 QTextStream t(&f);
741 t << "#Settings for OPIE Mailit program\n";
742 719
743 for (accountPtr = accountList.first(); accountPtr != 0; 720 for (accountPtr = accountList.first(); accountPtr != 0;
744 accountPtr = accountList.next()) { 721 accountPtr = accountList.next())
745 722 {
746 t << "accountStart;\n"; 723 mailconf->setGroup("Account_"+QString::number(++acc_count));
747 t << "AccountName: " + accountPtr->accountName + "\n"; 724 mailconf->writeEntry("AccName",accountPtr->accountName );
748 t << "Name: " + accountPtr->name + "\n"; 725 mailconf->writeEntry("UserName",accountPtr->name);
749 t << "Email: " + accountPtr->emailAddress + "\n"; 726 mailconf->writeEntry("Email",accountPtr->emailAddress);
750 t << "POPUser: " + accountPtr->popUserName + "\n"; 727 mailconf->writeEntry("POPUser",accountPtr->popUserName);
751 t << "POPPAssword: " + accountPtr->popPasswd + "\n"; 728 mailconf->writeEntryCrypt("POPPassword",accountPtr->popPasswd);
752 t << "POPServer: " + accountPtr->popServer + "\n"; 729 mailconf->writeEntry("POPServer",accountPtr->popServer);
753 t << "SMTPServer: " + accountPtr->smtpServer + "\n"; 730 mailconf->writeEntry("SMTPServer",accountPtr->smtpServer);
754 t << "AccountId: " << accountPtr->id << "\n"; 731 mailconf->writeEntry("AccountId",accountPtr->id);
755 if (accountPtr->synchronize) { 732 if (accountPtr->synchronize)
756 t << "Synchronize: Yes\n"; 733 {
757 t << "LastServerMailCount: "; 734 mailconf->writeEntry("Synchronize","Yes");
758 t << accountPtr->lastServerMailCount << "\n"; 735 mailconf->writeEntry("HeaderLimit",accountPtr->syncLimit);
759 } else { 736 mailconf->writeEntry("LastServerMailCount",accountPtr->lastServerMailCount);
760 t << "Synchronize: No\n"; 737 }
738 else
739 {
740 mailconf->writeEntry("Synchronize", "No");
761 } 741 }
762 t << "SyncLimit: ";
763 t << accountPtr->syncLimit << "\n";
764 t << "accountEnd;\n";
765 } 742 }
766 f.close();
767 743
768 mailconf->setGroup("mailitglobal"); 744 mailconf->setGroup("mailitglobal");
745 mailconf->writeEntry("Accounts",acc_count);
769 mailconf->writeEntry("mailidcount", mailIdCount); 746 mailconf->writeEntry("mailidcount", mailIdCount);
770 mailconf->writeEntry("accountidcount", accountIdCount); 747 mailconf->writeEntry("accountidcount", accountIdCount);
771} 748}
@@ -1001,4 +978,4 @@ void EmailClient::remove()
1001 { 978 {
1002 emit remove(*mail); 979 emit remove(*mail);
1003 } 980 }
1004}*/ \ No newline at end of file 981}*/
diff --git a/noncore/unsupported/mailit/emailhandler.cpp b/noncore/unsupported/mailit/emailhandler.cpp
index f6c6d60..b180051 100644
--- a/noncore/unsupported/mailit/emailhandler.cpp
+++ b/noncore/unsupported/mailit/emailhandler.cpp
@@ -104,18 +104,14 @@ void EmailHandler::getMail()
104 } 104 }
105 105
106 headers = FALSE; 106 headers = FALSE;
107 popClient->headersOnly(headers, 0); 107 //popClient->headersOnly(headers, 0);
108 popClient->newConnection(mailAccount.popServer, 110); 108 popClient->newConnection(mailAccount.popServer, 110);
109} 109}
110 110
111void EmailHandler::getMailHeaders() 111void EmailHandler::getMailHeaders()
112{ 112{
113 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd); 113 popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd);
114 if (mailAccount.synchronize) { 114 mailAccount.synchronize ? popClient->setSynchronize(mailAccount.lastServerMailCount): popClient->removeSynchronize();
115 popClient->setSynchronize(mailAccount.lastServerMailCount);
116 } else {
117 popClient->removeSynchronize();
118 }
119 115
120 headers = TRUE; 116 headers = TRUE;
121 popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all 117 popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all
@@ -135,14 +131,14 @@ void EmailHandler::getMailByList(MailList *mailList)
135 popClient->setSelectedMails(mailList); 131 popClient->setSelectedMails(mailList);
136} 132}
137 133
138void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete) 134void EmailHandler::messageArrived(const QString &message, int id, uint size, bool incomplete)
139{ 135{
140 Email mail; 136 Email mail;
141 137
142 mail.rawMail = message; 138 mail.rawMail = message;
143 mail.serverId = id; 139 mail.serverId = id;
144 mail.size = size; 140 mail.size = size;
145 mail.downloaded = complete; 141 mail.downloaded = incomplete;
146 142
147 emit mailArrived(mail, FALSE); 143 emit mailArrived(mail, FALSE);
148} 144}
@@ -185,7 +181,8 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
185 mail->from = mail->from.left(mail->from.length() - 1); 181 mail->from = mail->from.left(mail->from.length() - 1);
186 mail->from = mail->from.right(mail->from.length() - 1); 182 mail->from = mail->from.right(mail->from.length() - 1);
187 } 183 }
188 pos++; 184 pos++;
185
189 mail->fromMail = p.getString(&pos, '>', false); 186 mail->fromMail = p.getString(&pos, '>', false);
190 } else { 187 } else {
191 if ((p.separatorAt(pos) == '<') 188 if ((p.separatorAt(pos) == '<')
@@ -199,28 +196,47 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
199 } 196 }
200 } 197 }
201 198
202 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: 199 pos=0;
203 if ((pos = p.find("TO",':', 0, TRUE)) != -1) 200
201 //Search for To: after the FROM: attribute to prevent hitting the Delivered-To:
202 while((pos = p.find("TO",':', pos+1, TRUE))!=-1)
204 { 203 {
205 pos++; 204 QString rec;
206 mail->recipients.append (p.getString(&pos, 'z', TRUE) ); 205
206 if (p.separatorAt(pos-1)!='-')
207 {
208 pos++;
209 mail->recipients.append(p.getString(&pos, '\r', TRUE));
210 }
211 /*else {
212 if ((p.separatorAt(pos) == '<')|| (p.separatorAt(pos) == ' ')) //No name.. nasty
213 pos++;
214 pos++;
215 mail->fromMail = p.getString(&pos, 'z', TRUE);
216 if (mail->fromMail.at(mail->fromMail.length()-1) == '>')
217 mail->fromMail.truncate(mail->fromMail.length() - 1);
218 mail->from=mail->fromMail;
219 }
220 mail->recipients.append (p.getString(&pos, 'z', TRUE) );
221 }*/
207 } 222 }
208 223 //
209 //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: 224 //if (pos==-1) mail->recipients.append (tr("undisclosed recipients") );
225
210 if ((pos = p.find("CC",':', 0, TRUE)) != -1) 226 if ((pos = p.find("CC",':', 0, TRUE)) != -1)
211 { 227 {
212 pos++; 228 pos++;
213 mail->carbonCopies.append (p.getString(&pos, 'z', TRUE) ); 229 mail->carbonCopies.append (p.getString(&pos, 'z', TRUE) );
214 } 230 }
215 231
216
217 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) { 232 if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) {
218 pos++; 233 pos++;
219 mail->subject = p.getString(&pos, 'z', TRUE); 234 mail->subject = p.getString(&pos, 'z', TRUE);
220 } 235 }
236
221 if ((pos = p.find("DATE",':', 0, TRUE)) != -1) { 237 if ((pos = p.find("DATE",':', 0, TRUE)) != -1) {
222 pos++; 238 pos++;
223 mail->date = p.getString(&pos, 'z', true); 239 mail->date = p.getString(&pos, 'z', TRUE);
224 } 240 }
225 241
226 242
diff --git a/noncore/unsupported/mailit/emaillistitem.cpp b/noncore/unsupported/mailit/emaillistitem.cpp
index a325766..b925a1c 100644
--- a/noncore/unsupported/mailit/emaillistitem.cpp
+++ b/noncore/unsupported/mailit/emaillistitem.cpp
@@ -38,11 +38,13 @@ EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox)
38 setText(0, temp); 38 setText(0, temp);
39 } 39 }
40 setText(1, mail.subject); 40 setText(1, mail.subject);
41 setText(2,mail.date);
41 42
42 if (mailIn.files.count()>0) 43 if (mailIn.files.count()>0)
43 { 44 {
44 setPixmap(0, Resource::loadPixmap("mailit/attach")); 45 setPixmap(0, Resource::loadPixmap("mailit/attach"));
45 } 46 }
47
46 selected = FALSE; 48 selected = FALSE;
47} 49}
48 50
diff --git a/noncore/unsupported/mailit/mailitwindow.cpp b/noncore/unsupported/mailit/mailitwindow.cpp
index ef5fc09..7181adf 100644
--- a/noncore/unsupported/mailit/mailitwindow.cpp
+++ b/noncore/unsupported/mailit/mailitwindow.cpp
@@ -17,17 +17,18 @@
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include <qwhatsthis.h>
20#include "mailitwindow.h" 21#include "mailitwindow.h"
21 22
22MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl) 23MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
23 : QMainWindow(parent, name, fl) 24 : QMainWindow(parent, name, WStyle_ContextHelp)
24{ 25{
25 currentCaption = "Mailit"; 26 currentCaption = "Mailit";
26 setCaption(tr(currentCaption)); 27 setCaption(tr(currentCaption));
27 views = new QWidgetStack(this); 28 views = new QWidgetStack(this);
28 setCentralWidget(views); 29 setCentralWidget(views);
29 30 QWhatsThis::add(views,tr("Central view area"));
30 emailClient = new EmailClient(views, "client"); 31 emailClient = new EmailClient(views, "client");
31 writeMail = new WriteMail(views, "writing"); 32 writeMail = new WriteMail(views, "writing");
32 readMail = new ReadMail(views, "reading"); 33 readMail = new ReadMail(views, "reading");
33 34
@@ -140,26 +141,3 @@ void MailItWindow::setDocument(const QString &_address)
140 compose(); 141 compose();
141 writeMail->setRecipient(address); 142 writeMail->setRecipient(address);
142} 143}
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/popclient.cpp b/noncore/unsupported/mailit/popclient.cpp
index f9cc337..67306be 100644
--- a/noncore/unsupported/mailit/popclient.cpp
+++ b/noncore/unsupported/mailit/popclient.cpp
@@ -119,7 +119,6 @@ void PopClient::incomingData()
119// return; 119// return;
120 120
121 response = socket->readLine(); 121 response = socket->readLine();
122 //qDebug(response +" %d", status);
123 122
124 switch(status) { 123 switch(status) {
125 //logging in 124 //logging in
@@ -131,18 +130,8 @@ void PopClient::incomingData()
131 { 130 {
132 timeStamp = response.mid( start , end - start + 1); 131 timeStamp = response.mid( start , end - start + 1);
133 md5Source = timeStamp + popPassword; 132 md5Source = timeStamp + popPassword;
134 //qDebug( md5Source);
135// for( int i = 0; i < md5Source.length(); i++) {
136// buff[i] = (QChar)md5Source[i];
137// }
138 133
139 md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]); 134 md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]);
140// md5_buffer(char const *buffer, unsigned int len, char *digest);
141
142// MD5_Init( &ctx);
143// MD5_Update( &ctx, buff, sizeof( buff) );
144// MD5_Final( md5Digest, &ctx);
145// MD5( buff, md5Source.length(), md5Digest);
146 135
147 for(int j =0;j < MD5_DIGEST_LENGTH ;j++) 136 for(int j =0;j < MD5_DIGEST_LENGTH ;j++)
148 { 137 {
@@ -164,7 +153,7 @@ void PopClient::incomingData()
164 153
165 break; 154 break;
166 } 155 }
167 //password shhh. don't tell anyone (implement APOP...) 156
168 case Pass: { 157 case Pass: {
169 *stream << "PASS " << popPassword << "\r\n"; 158 *stream << "PASS " << popPassword << "\r\n";
170 status = Stat; 159 status = Stat;
@@ -248,10 +237,11 @@ void PopClient::incomingData()
248 //Read message number x, count upwards to messageCount 237 //Read message number x, count upwards to messageCount
249 case Retr: { 238 case Retr: {
250 if (status != Quit) { 239 if (status != Quit) {
251 if (!preview || mailSize <= headerLimit) { 240 if (mailSize <= headerLimit)
241 {
252 *stream << "RETR " << messageCount << "\r\n"; 242 *stream << "RETR " << messageCount << "\r\n";
253 } else { //only header 243 } else { //only header
254 *stream << "TOP " << messageCount << " 0\r\n"; 244 *stream << "TOP " << messageCount << " 0\r\n";
255 } 245 }
256 messageCount++; 246 messageCount++;
257 status = Ignore; 247 status = Ignore;
@@ -283,8 +273,10 @@ void PopClient::incomingData()
283 break; 273 break;
284 } else { //message reach entire size 274 } else { //message reach entire size
285 //complete mail downloaded 275 //complete mail downloaded
286 if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){ 276 //if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){
287 emit newMessage(message, messageCount-1, mailSize, TRUE); 277 if ( mailSize <= headerLimit)
278 {
279 emit newMessage(message, messageCount-1, mailSize, TRUE);
288 } else { //incomplete mail downloaded 280 } else { //incomplete mail downloaded
289 emit newMessage(message, messageCount-1, mailSize, FALSE); 281 emit newMessage(message, messageCount-1, mailSize, FALSE);
290 } 282 }
diff --git a/noncore/unsupported/mailit/readmail.cpp b/noncore/unsupported/mailit/readmail.cpp
index dc98a6f..4eae7f6 100644
--- a/noncore/unsupported/mailit/readmail.cpp
+++ b/noncore/unsupported/mailit/readmail.cpp
@@ -59,36 +59,46 @@ 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 replyButton->setWhatsThis(tr("Click here to reply to the selected mail"));
63
63 forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ), 64 forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
64 QString::null, 0, this, 0 ); 65 QString::null, 0, this, 0 );
65 connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) ); 66 connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) );
67 forwardButton->setWhatsThis(tr("Click here to forward the selected mail"));
66 68
67 previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 ); 69 previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
68 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) ); 70 connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) );
69 previousButton->addTo(bar); 71 previousButton->addTo(bar);
70 previousButton->addTo(viewMenu); 72 previousButton->addTo(viewMenu);
73 previousButton->setWhatsThis(tr("Read the previous mail in the list"));
71 74
72 nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 ); 75 nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 );
73 connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) ); 76 connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) );
74 nextButton->addTo(bar); 77 nextButton->addTo(bar);
75 nextButton->addTo(viewMenu); 78 nextButton->addTo(viewMenu);
79 previousButton->setWhatsThis(tr("Read the next mail in the list"));
76 80
77 attatchmentsButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 ); 81 attachmentButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 );
78 connect( attatchmentsButton, SIGNAL( activated() ), this, 82 connect( attachmentButton, SIGNAL( activated() ), this,
79 SLOT( viewAttatchments() ) ); 83 SLOT( viewAttachments() ) );
80 attatchmentsButton->addTo(bar); 84 attachmentButton->addTo(bar);
81 attatchmentsButton->addTo(viewMenu); 85 attachmentButton->addTo(viewMenu);
86 attachmentButton->setWhatsThis(tr("Click here to add attachments to your mail"));
82 87
83 plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "DocsIcon" ), QString::null, 0, this, 0, TRUE); 88 plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "DocsIcon" ), QString::null, 0, this, 0, TRUE);
84 connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) ); 89 connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) );
85 plainTextButton->addTo(bar); 90 plainTextButton->addTo(bar);
86 plainTextButton->addTo(viewMenu); 91 plainTextButton->addTo(viewMenu);
92 plainTextButton->setWhatsThis(tr("The mail view has 2 modes:\n"
93 "<LI><B>RichText</B> shows the mail as HTML with reach features (no standard line breaks)</LI>"
94 "<LI><B>Plain</B> shows the mail as standard plain text</LI>"
95 "Click here to switch between those view modes" ));
87 96
88 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); 97 deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 );
89 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); 98 connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) );
90 deleteButton->addTo(bar); 99 deleteButton->addTo(bar);
91 deleteButton->addTo(mailMenu); 100 deleteButton->addTo(mailMenu);
101 deleteButton->setWhatsThis(tr("Click here to remove the selected mail"));
92 102
93 viewMenu->insertItem(Resource::loadPixmap("close"), "Close", this, SLOT(close())); 103 viewMenu->insertItem(Resource::loadPixmap("close"), "Close", this, SLOT(close()));
94 104
@@ -248,8 +258,8 @@ void ReadMail::updateView()
248 } 258 }
249 259
250 if (mail->files.count() == 0) 260 if (mail->files.count() == 0)
251 attatchmentsButton->setEnabled(FALSE); 261 attachmentButton->setEnabled(FALSE);
252 else attatchmentsButton->setEnabled(TRUE); 262 else attachmentButton->setEnabled(TRUE);
253 263
254 setCaption("Examining mail: " + mail->subject); 264 setCaption("Examining mail: " + mail->subject);
255} 265}
@@ -339,7 +349,7 @@ void ReadMail::shiftText()
339 updateView(); 349 updateView();
340} 350}
341 351
342void ReadMail::viewAttatchments() 352void ReadMail::viewAttachments()
343{ 353{
344 viewAtt->update(mail, inbox); 354 viewAtt->update(mail, inbox);
345 viewAtt->showMaximized(); 355 viewAtt->showMaximized();
diff --git a/noncore/unsupported/mailit/readmail.h b/noncore/unsupported/mailit/readmail.h
index 0fe0646..df32c34 100644
--- a/noncore/unsupported/mailit/readmail.h
+++ b/noncore/unsupported/mailit/readmail.h
@@ -57,7 +57,7 @@ public slots:
57 void previous(); 57 void previous();
58 void deleteItem(); 58 void deleteItem();
59 void shiftText(); 59 void shiftText();
60 void viewAttatchments(); 60 void viewAttachments();
61 void reply(); 61 void reply();
62 void forward(); 62 void forward();
63 63
@@ -80,7 +80,7 @@ private:
80 QAction *plainTextButton; 80 QAction *plainTextButton;
81 QAction *nextButton; 81 QAction *nextButton;
82 QTextView *emailView; 82 QTextView *emailView;
83 QAction *attatchmentsButton; 83 QAction *attachmentButton;
84 QAction *previousButton; 84 QAction *previousButton;
85 QAction *replyButton; 85 QAction *replyButton;
86 QAction *forwardButton; 86 QAction *forwardButton;
diff --git a/noncore/unsupported/mailit/smtpclient.cpp b/noncore/unsupported/mailit/smtpclient.cpp
index b2e38e5..8a51a5b 100644
--- a/noncore/unsupported/mailit/smtpclient.cpp
+++ b/noncore/unsupported/mailit/smtpclient.cpp
@@ -87,7 +87,6 @@ void SmtpClient::incomingData()
87 return; 87 return;
88 88
89 response = socket->readLine(); 89 response = socket->readLine();
90 //qDebug(response);
91 90
92 switch(status) { 91 switch(status) {
93 case Init: { 92 case Init: {
@@ -95,7 +94,6 @@ void SmtpClient::incomingData()
95 status = From; 94 status = From;
96 mailPtr = mailList.first(); 95 mailPtr = mailList.first();
97 *stream << "HELO there\r\n"; 96 *stream << "HELO there\r\n";
98 //qDebug("HELO");
99 } else errorHandling(ErrUnknownResponse); 97 } else errorHandling(ErrUnknownResponse);
100 break; 98 break;
101 } 99 }
@@ -103,7 +101,6 @@ void SmtpClient::incomingData()
103 if (response[0] == '2') { 101 if (response[0] == '2') {
104 *stream << "MAIL FROM: " << mailPtr->from << "\r\n"; 102 *stream << "MAIL FROM: " << mailPtr->from << "\r\n";
105 status = Recv; 103 status = Recv;
106 //qDebug("MAIL FROM: "+mailPtr->from);
107 } else errorHandling(ErrUnknownResponse); 104 } else errorHandling(ErrUnknownResponse);
108 break; 105 break;
109 } 106 }
@@ -113,7 +110,6 @@ void SmtpClient::incomingData()
113 if (it == NULL) 110 if (it == NULL)
114 errorHandling(ErrUnknownResponse); 111 errorHandling(ErrUnknownResponse);
115 *stream << "RCPT TO: " << *it << ">\r\n"; 112 *stream << "RCPT TO: " << *it << ">\r\n";
116 //qDebug("RCPT TO: "+ *it);
117 status = MRcv; 113 status = MRcv;
118 } else errorHandling(ErrUnknownResponse); 114 } else errorHandling(ErrUnknownResponse);
119 break; 115 break;
@@ -123,7 +119,6 @@ void SmtpClient::incomingData()
123 it++; 119 it++;
124 if ( it != mailPtr->to.end() ) { 120 if ( it != mailPtr->to.end() ) {
125 *stream << "RCPT TO: <" << *it << ">\r\n"; 121 *stream << "RCPT TO: <" << *it << ">\r\n";
126 //qDebug("RCPT TO: "+ *it);
127 break; 122 break;
128 } else { 123 } else {
129 status = Data; 124 status = Data;
@@ -134,7 +129,6 @@ void SmtpClient::incomingData()
134 if (response[0] == '2') { 129 if (response[0] == '2') {
135 *stream << "DATA\r\n"; 130 *stream << "DATA\r\n";
136 status = Body; 131 status = Body;
137 //qDebug("DATA");
138 emit updateStatus(tr("Sending: ") + mailPtr->subject); 132 emit updateStatus(tr("Sending: ") + mailPtr->subject);
139 } else errorHandling(ErrUnknownResponse); 133 } else errorHandling(ErrUnknownResponse);
140 break; 134 break;
@@ -148,7 +142,6 @@ void SmtpClient::incomingData()
148 } else { 142 } else {
149 status = Quit; 143 status = Quit;
150 } 144 }
151 //qDebug("BODY");
152 } else errorHandling(ErrUnknownResponse); 145 } else errorHandling(ErrUnknownResponse);
153 break; 146 break;
154 } 147 }
@@ -163,7 +156,6 @@ void SmtpClient::incomingData()
163 mailList.clear(); 156 mailList.clear();
164 sending = FALSE; 157 sending = FALSE;
165 socket->close(); 158 socket->close();
166 //qDebug("QUIT");
167 } else errorHandling(ErrUnknownResponse); 159 } else errorHandling(ErrUnknownResponse);
168 break; 160 break;
169 } 161 }
diff --git a/noncore/unsupported/mailit/textparser.cpp b/noncore/unsupported/mailit/textparser.cpp
index f082417..3fa5f6e 100644
--- a/noncore/unsupported/mailit/textparser.cpp
+++ b/noncore/unsupported/mailit/textparser.cpp
@@ -62,27 +62,37 @@ void TextParser::createSeparators()
62 /*Returns pos of given search criteria, -1 if not found */ 62 /*Returns pos of given search criteria, -1 if not found */
63int TextParser::find(QString target, QChar sep, int pos, bool upperCase) 63int TextParser::find(QString target, QChar sep, int pos, bool upperCase)
64{ 64{
65
66 t_splitElm parsstr;
67 QString pString;
68
65 int atLine = 0, atPosElm = 0; 69 int atLine = 0, atPosElm = 0;
66 70
67 for (int x = 0; x < totalElmCount; x++) { 71 getLineReference(pos,&atLine,&atPosElm);
68 if (x >= pos) { 72
69 if (upperCase) { 73 for (int x = pos; x < totalElmCount; x++)
70 if ((splitDone[atLine].elm[atPosElm].str.upper() == target) && 74 {
71 (splitDone[atLine].elm[atPosElm].separator == sep)) 75 parsstr=splitDone[atLine].elm[atPosElm++];
72 return x; 76
73 } else { 77 if (upperCase)
74 if ((splitDone[atLine].elm[atPosElm].str == target) && 78 {
75 (splitDone[atLine].elm[atPosElm].separator == sep)) 79 pString=parsstr.str.upper();
76 return x; 80 target=target.upper();
77 } 81 }
78 } 82 else
79 atPosElm++; 83 {
80 if (atPosElm >= splitDone[atLine].elmCount) { //new Line 84 pString=parsstr.str;
85 }
86 if ((pString == target) && (parsstr.separator == sep))
87 {
88 return x;
89 }
90 if (atPosElm >= splitDone[atLine].elmCount)
91 { //new Line
81 atLine++; 92 atLine++;
82 atPosElm = 0; 93 atPosElm = 0;
83 } 94 }
84 } 95 }
85
86 return -1; 96 return -1;
87} 97}
88 98
diff --git a/noncore/unsupported/mailit/viewatt.cpp b/noncore/unsupported/mailit/viewatt.cpp
index b6f5015..21885c2 100644
--- a/noncore/unsupported/mailit/viewatt.cpp
+++ b/noncore/unsupported/mailit/viewatt.cpp
@@ -19,6 +19,7 @@
19**********************************************************************/ 19**********************************************************************/
20#include "resource.h" 20#include "resource.h"
21#include "viewatt.h" 21#include "viewatt.h"
22#include <qwhatsthis.h>
22#include <qpe/applnk.h> 23#include <qpe/applnk.h>
23#include <qpe/mimetype.h> 24#include <qpe/mimetype.h>
24 25
@@ -31,12 +32,14 @@ ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f)
31 bar = new QToolBar(this); 32 bar = new QToolBar(this);
32 installButton = new QAction( tr( "Install" ), Resource::loadPixmap( "exec" ), QString::null, CTRL + Key_C, this, 0 ); 33 installButton = new QAction( tr( "Install" ), Resource::loadPixmap( "exec" ), QString::null, CTRL + Key_C, this, 0 );
33 connect(installButton, SIGNAL(activated()), this, SLOT(install()) ); 34 connect(installButton, SIGNAL(activated()), this, SLOT(install()) );
35 installButton->setWhatsThis(tr("Click here to install the attachment to your Documents"));
34 36
35 listView = new QListView(this, "AttView"); 37 listView = new QListView(this, "AttView");
36 listView->addColumn( "Attatchment" ); 38 listView->addColumn( "Attatchment" );
37 listView->addColumn( "Type" ); 39 listView->addColumn( "Type" );
38 listView->addColumn( "Installed" ); 40 listView->addColumn( "Installed" );
39 setCentralWidget(listView); 41 setCentralWidget(listView);
42 QWhatsThis::add(listView,QWidget::tr("This is an overview about all attachments in the mail"));
40} 43}
41 44
42void ViewAtt::update(Email *mailIn, bool inbox) 45void ViewAtt::update(Email *mailIn, bool inbox)
diff --git a/noncore/unsupported/mailit/writemail.cpp b/noncore/unsupported/mailit/writemail.cpp
index a9dcb02..0336c83 100644
--- a/noncore/unsupported/mailit/writemail.cpp
+++ b/noncore/unsupported/mailit/writemail.cpp
@@ -18,6 +18,7 @@
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include <qmessagebox.h> 20#include <qmessagebox.h>
21#include <qwhatsthis.h>
21#include "writemail.h" 22#include "writemail.h"
22#include <qpe/resource.h> 23#include <qpe/resource.h>
23 24
@@ -27,7 +28,7 @@ WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl )
27 showingAddressList = FALSE; 28 showingAddressList = FALSE;
28 init(); 29 init();
29 30
30 addAtt = new AddAtt(0, "Add Attatchments"); 31 addAtt = new AddAtt(0, "Add Attachments");
31} 32}
32 33
33WriteMail::~WriteMail() 34WriteMail::~WriteMail()
@@ -64,20 +65,23 @@ void WriteMail::init()
64 menu->insertItem( tr( "&Add" ), addMenu); 65 menu->insertItem( tr( "&Add" ), addMenu);
65 66
66 bar = new QToolBar(this); 67 bar = new QToolBar(this);
67 attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0); 68 attachButton = new QAction(tr("Attachment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0);
68 attatchButton->addTo(bar); 69 attachButton->addTo(bar);
69 attatchButton->addTo(addMenu); 70 attachButton->addTo(addMenu);
70 connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) ); 71 connect( attachButton, SIGNAL( activated() ), this, SLOT( attachFile() ) );
71 72 attachButton->setWhatsThis(tr("Click here to attach files to your mail"));
73
72 confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0); 74 confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0);
73 confirmButton->addTo(bar); 75 confirmButton->addTo(bar);
74 confirmButton->addTo(mailMenu); 76 confirmButton->addTo(mailMenu);
75 connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) ); 77 connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) );
78 confirmButton->setWhatsThis(tr("This button puts your mail in the send queue"));
76 79
77 newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0); 80 newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
78 newButton->addTo(mailMenu); 81 newButton->addTo(mailMenu);
79 connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) ); 82 connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) );
80 83 newButton->setWhatsThis(tr("Click here to create a new mail"));
84
81 widget = new QWidget(this, "widget"); 85 widget = new QWidget(this, "widget");
82 grid = new QGridLayout( widget ); 86 grid = new QGridLayout( widget );
83 87
@@ -88,7 +92,6 @@ void WriteMail::init()
88 grid->addWidget( recipientsBox, 0, 0 ); 92 grid->addWidget( recipientsBox, 0, 0 );
89 connect(recipientsBox,SIGNAL(activated(int)),this, SLOT(changeRecipients(int))); 93 connect(recipientsBox,SIGNAL(activated(int)),this, SLOT(changeRecipients(int)));
90 94
91
92 subjetLabel = new QLabel( widget, "subjetLabel" ); 95 subjetLabel = new QLabel( widget, "subjetLabel" );
93 subjetLabel->setText( tr( "Subject:" ) ); 96 subjetLabel->setText( tr( "Subject:" ) );
94 97
@@ -100,25 +103,28 @@ void WriteMail::init()
100 103
101 subjectInput = new QLineEdit( widget, "subjectInput" ); 104 subjectInput = new QLineEdit( widget, "subjectInput" );
102 grid->addWidget( subjectInput, 1, 1 ); 105 grid->addWidget( subjectInput, 1, 1 );
106 QWhatsThis::add(subjectInput,QWidget::tr("The mail subject should be entered here"));
103 107
104 toInput = new QLineEdit( widget, "toInput" ); 108 toInput = new QLineEdit( widget, "toInput" );
105 grid->addWidget( toInput, 0, 1 ); 109 grid->addWidget( toInput, 0, 1 );
110 QWhatsThis::add(recipientsBox,QWidget::tr("Recipients can be entered here"));
106 111
107 ccInput = new QLineEdit( widget, "ccInput" ); 112 ccInput = new QLineEdit( widget, "ccInput" );
108 ccInput->hide(); 113 ccInput->hide();
109 grid->addWidget( ccInput, 0, 1 ); 114 grid->addWidget( ccInput, 0, 1 );
115 QWhatsThis::add(ccInput,QWidget::tr("If you would like to send copies of your mail they can be entered here"));
110 116
111
112 addressButton = new QToolButton( widget, "addressButton" ); 117 addressButton = new QToolButton( widget, "addressButton" );
113 addressButton->setPixmap( Resource::loadPixmap("AddressBook") ); 118 addressButton->setPixmap( Resource::loadPixmap("AddressBook") );
114 addressButton->setToggleButton(TRUE); 119 addressButton->setToggleButton(TRUE);
115 grid->addWidget( addressButton, 0, 2 ); 120 grid->addWidget( addressButton, 0, 2 );
116 connect(addressButton, SIGNAL(clicked()), this, SLOT(getAddress()) ); 121 connect(addressButton, SIGNAL(clicked()), this, SLOT(getAddress()) );
122 QWhatsThis::add(addressButton,QWidget::tr("This button opens the address selector with all mail adresses from your OPIE addressbook"));
117 123
118 emailInput = new QMultiLineEdit( widget, "emailInput" ); 124 emailInput = new QMultiLineEdit( widget, "emailInput" );
119 grid->addMultiCellWidget( emailInput, 2, 2, 0, 2); 125 grid->addMultiCellWidget( emailInput, 2, 2, 0, 2);
126 QWhatsThis::add(recipientsBox,QWidget::tr("Enter your mail text here"));
120 127
121
122 addressView = new QListView( widget, "addressView"); 128 addressView = new QListView( widget, "addressView");
123 addressView->addColumn("Name"); 129 addressView->addColumn("Name");
124 addressView->addColumn("EMail"); 130 addressView->addColumn("EMail");
@@ -126,11 +132,13 @@ void WriteMail::init()
126 addressView->setMultiSelection(TRUE); 132 addressView->setMultiSelection(TRUE);
127 addressView->hide(); 133 addressView->hide();
128 grid->addMultiCellWidget( addressView, 3, 3, 0, 2); 134 grid->addMultiCellWidget( addressView, 3, 3, 0, 2);
129 135 QWhatsThis::add(recipientsBox,QWidget::tr("Chose the recipients from this list"));
136
130 okButton = new QToolButton(bar, "ok"); 137 okButton = new QToolButton(bar, "ok");
131 okButton->setPixmap( Resource::loadPixmap("enter") ); 138 okButton->setPixmap( Resource::loadPixmap("enter") );
132 okButton->hide(); 139 okButton->hide();
133 connect(okButton, SIGNAL(clicked()), this, SLOT(addRecipients()) ); 140 connect(okButton, SIGNAL(clicked()), this, SLOT(addRecipients()) );
141 QWhatsThis::add(okButton,QWidget::tr("Queue your mail by clicking here"));
134 142
135 setCentralWidget(widget); 143 setCentralWidget(widget);
136} 144}
@@ -143,7 +151,7 @@ void WriteMail::reject()
143// need to insert date 151// need to insert date
144void WriteMail::accept() 152void WriteMail::accept()
145{ 153{
146 QStringList attatchedFiles, attatchmentsType; 154 QStringList attachedFiles, attachmentsType;
147 int idCount = 0; 155 int idCount = 0;
148 156
149 if (toInput->text() == "") 157 if (toInput->text() == "")
@@ -196,13 +204,13 @@ void WriteMail::accept()
196 mail.rawMail += mail.subject; 204 mail.rawMail += mail.subject;
197 mail.rawMail += "\n\n"; 205 mail.rawMail += "\n\n";
198 206
199 attatchedFiles = addAtt->returnAttatchedFiles(); 207 attachedFiles = addAtt->returnattachedFiles();
200 attatchmentsType = addAtt->returnFileTypes(); 208 attachmentsType = addAtt->returnFileTypes();
201 209
202 QStringList::Iterator itType = attatchmentsType.begin(); 210 QStringList::Iterator itType = attachmentsType.begin();
203 211
204 Enclosure e; 212 Enclosure e;
205 for ( QStringList::Iterator it = attatchedFiles.begin(); it != attatchedFiles.end(); ++it ) { 213 for ( QStringList::Iterator it = attachedFiles.begin(); it != attachedFiles.end(); ++it ) {
206 e.id = idCount; 214 e.id = idCount;
207 e.originalName = (*it).latin1(); 215 e.originalName = (*it).latin1();
208 e.contentType = (*itType).latin1(); 216 e.contentType = (*itType).latin1();
@@ -236,7 +244,7 @@ void WriteMail::getAddress()
236 } 244 }
237} 245}
238 246
239void WriteMail::attatchFile() 247void WriteMail::attachFile()
240{ 248{
241 addAtt->showMaximized(); 249 addAtt->showMaximized();
242} 250}
@@ -256,7 +264,7 @@ void WriteMail::reply(Email replyMail, bool replyAll)
256 subjectInput->setText(tr("Re: ") + mail.subject); 264 subjectInput->setText(tr("Re: ") + mail.subject);
257 265
258 pos = 0; 266 pos = 0;
259 mail.body.insert(pos, ">>"); 267 mail.body.insert(pos, ">");
260 while (pos != -1) { 268 while (pos != -1) {
261 pos = mail.body.find('\n', pos); 269 pos = mail.body.find('\n', pos);
262 if (pos != -1) 270 if (pos != -1)
diff --git a/noncore/unsupported/mailit/writemail.h b/noncore/unsupported/mailit/writemail.h
index f193b13..921f27e 100644
--- a/noncore/unsupported/mailit/writemail.h
+++ b/noncore/unsupported/mailit/writemail.h
@@ -55,7 +55,7 @@ signals:
55 55
56public slots: 56public slots:
57 void getAddress(); 57 void getAddress();
58 void attatchFile(); 58 void attachFile();
59 void addRecipients(); 59 void addRecipients();
60 void newMail(); 60 void newMail();
61 void accept(); 61 void accept();
@@ -79,7 +79,7 @@ private:
79 79
80 QToolButton *okButton; 80 QToolButton *okButton;
81 QWidget *widget; 81 QWidget *widget;
82 QAction *attatchButton; 82 QAction *attachButton;
83 QAction *confirmButton; 83 QAction *confirmButton;
84 QAction *newButton; 84 QAction *newButton;
85 QLabel* subjetLabel; 85 QLabel* subjetLabel;