summaryrefslogtreecommitdiffabout
path: root/kmicromail
Unidiff
Diffstat (limited to 'kmicromail') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/accountitem.cpp14
-rw-r--r--kmicromail/libmailwrapper/imapwrapper.cpp4
-rw-r--r--kmicromail/libmailwrapper/mhwrapper.cpp2
-rw-r--r--kmicromail/libmailwrapper/settings.cpp4
-rw-r--r--kmicromail/mainwindow.cpp7
-rw-r--r--kmicromail/mainwindow.h1
-rw-r--r--kmicromail/opiemail.cpp10
-rw-r--r--kmicromail/opiemail.h1
8 files changed, 28 insertions, 15 deletions
diff --git a/kmicromail/accountitem.cpp b/kmicromail/accountitem.cpp
index 7b9b881..59c8abb 100644
--- a/kmicromail/accountitem.cpp
+++ b/kmicromail/accountitem.cpp
@@ -1,236 +1,238 @@
1 1
2#include "accountitem.h" 2#include "accountitem.h"
3#include "accountview.h" 3#include "accountview.h"
4#include "newmaildir.h" 4#include "newmaildir.h"
5#include "nntpgroupsdlg.h" 5#include "nntpgroupsdlg.h"
6#include "defines.h" 6#include "defines.h"
7 7
8#include <libmailwrapper/mailtypes.h> 8#include <libmailwrapper/mailtypes.h>
9#include <libmailwrapper/abstractmail.h> 9#include <libmailwrapper/abstractmail.h>
10#include <libmailwrapper/mailwrapper.h> 10#include <libmailwrapper/mailwrapper.h>
11/* OPIE */ 11/* OPIE */
12//#include <qpe/qpeapplication.h> 12//#include <qpe/qpeapplication.h>
13 13
14/* QT */ 14/* QT */
15#include <qpopupmenu.h> 15#include <qpopupmenu.h>
16#include <qmessagebox.h> 16#include <qmessagebox.h>
17#include <kiconloader.h> 17#include <kiconloader.h>
18 18
19#define GET_NEW_MAILS 101
20
19using namespace Opie::Core; 21using namespace Opie::Core;
20#define SETPIX(x) if (!account->getOffline()) {setPixmap( 0,x);} else {setPixmap( 0, PIXMAP_OFFLINE );} 22#define SETPIX(x) if (!account->getOffline()) {setPixmap( 0,x);} else {setPixmap( 0, PIXMAP_OFFLINE );}
21/** 23/**
22 * POP3 Account stuff 24 * POP3 Account stuff
23 */ 25 */
24POP3viewItem::POP3viewItem( POP3account *a, AccountView *parent ) 26POP3viewItem::POP3viewItem( POP3account *a, AccountView *parent )
25 : AccountViewItem( parent ) 27 : AccountViewItem( parent )
26{ 28{
27 account = a; 29 account = a;
28 wrapper = AbstractMail::getWrapper( account ); 30 wrapper = AbstractMail::getWrapper( account );
29 SETPIX(PIXMAP_POP3FOLDER); 31 SETPIX(PIXMAP_POP3FOLDER);
30#if 0 32#if 0
31 if (!account->getOffline()) 33 if (!account->getOffline())
32 { 34 {
33 setPixmap( 0, ); 35 setPixmap( 0, );
34 } 36 }
35 else 37 else
36 { 38 {
37 setPixmap( 0, PIXMAP_OFFLINE ); 39 setPixmap( 0, PIXMAP_OFFLINE );
38 } 40 }
39#endif 41#endif
40 setText( 0, account->getAccountName() ); 42 setText( 0, account->getAccountName() );
41 setOpen( true ); 43 setOpen( true );
42} 44}
43 45
44POP3viewItem::~POP3viewItem() 46POP3viewItem::~POP3viewItem()
45{ 47{
46 delete wrapper; 48 delete wrapper;
47} 49}
48 50
49AbstractMail *POP3viewItem::getWrapper() 51AbstractMail *POP3viewItem::getWrapper()
50{ 52{
51 return wrapper; 53 return wrapper;
52} 54}
53 55
54void POP3viewItem::refresh(QValueList<Opie::Core::OSmartPointer<RecMail> > & ) 56void POP3viewItem::refresh(QValueList<Opie::Core::OSmartPointer<RecMail> > & )
55{ 57{
56 refresh(); 58 refresh();
57} 59}
58 60
59void POP3viewItem::refresh() 61void POP3viewItem::refresh()
60{ 62{
61 if (account->getOffline()) return; 63 if (account->getOffline()) return;
62 QValueList<FolderP> *folders = wrapper->listFolders(); 64 QValueList<FolderP> *folders = wrapper->listFolders();
63 QListViewItem *child = firstChild(); 65 QListViewItem *child = firstChild();
64 while ( child ) 66 while ( child )
65 { 67 {
66 QListViewItem *tmp = child; 68 QListViewItem *tmp = child;
67 child = child->nextSibling(); 69 child = child->nextSibling();
68 delete tmp; 70 delete tmp;
69 } 71 }
70 QValueList<FolderP>::ConstIterator it; 72 QValueList<FolderP>::ConstIterator it;
71 QListViewItem*item = 0; 73 QListViewItem*item = 0;
72 for ( it = folders->begin(); it!=folders->end(); ++it) 74 for ( it = folders->begin(); it!=folders->end(); ++it)
73 { 75 {
74 item = new POP3folderItem( (*it), this , item ); 76 item = new POP3folderItem( (*it), this , item );
75 item->setSelectable( (*it)->may_select()); 77 item->setSelectable( (*it)->may_select());
76 } 78 }
77 delete folders; 79 delete folders;
78} 80}
79 81
80RECBODYP POP3viewItem::fetchBody( const RecMailP &mail ) 82RECBODYP POP3viewItem::fetchBody( const RecMailP &mail )
81{ 83{
82 84
83 return wrapper->fetchBody( mail ); 85 return wrapper->fetchBody( mail );
84} 86}
85 87
86QPopupMenu * POP3viewItem::getContextMenu() 88QPopupMenu * POP3viewItem::getContextMenu()
87{ 89{
88 QPopupMenu *m = new QPopupMenu(0); 90 QPopupMenu *m = new QPopupMenu(0);
89 if (m) 91 if (m)
90 { 92 {
91 if (!account->getOffline()) 93 if (!account->getOffline())
92 { 94 {
93 m->insertItem(QObject::tr("Disconnect",contextName),0); 95 m->insertItem(QObject::tr("Disconnect",contextName),0);
94 m->insertItem(QObject::tr("Set offline",contextName),1); 96 m->insertItem(QObject::tr("Set offline",contextName),1);
95 m->insertItem(QObject::tr("Download new INBOX messages",contextName),2); 97 m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
96 } 98 }
97 else 99 else
98 { 100 {
99 m->insertItem(QObject::tr("Set online",contextName),1); 101 m->insertItem(QObject::tr("Set online",contextName),1);
100 m->insertItem(QObject::tr("Download new INBOX messages",contextName),2); 102 m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
101 } 103 }
102 } 104 }
103 return m; 105 return m;
104} 106}
105 107
106void POP3viewItem::disconnect() 108void POP3viewItem::disconnect()
107{ 109{
108 QListViewItem *child = firstChild(); 110 QListViewItem *child = firstChild();
109 while ( child ) 111 while ( child )
110 { 112 {
111 QListViewItem *tmp = child; 113 QListViewItem *tmp = child;
112 child = child->nextSibling(); 114 child = child->nextSibling();
113 delete tmp; 115 delete tmp;
114 } 116 }
115 wrapper->logout(); 117 wrapper->logout();
116} 118}
117 119
118void POP3viewItem::setOnOffline() 120void POP3viewItem::setOnOffline()
119{ 121{
120 if (!account->getOffline()) 122 if (!account->getOffline())
121 { 123 {
122 disconnect(); 124 disconnect();
123 } 125 }
124 account->setOffline(!account->getOffline()); 126 account->setOffline(!account->getOffline());
125 account->save(); 127 account->save();
126 SETPIX(PIXMAP_POP3FOLDER); 128 SETPIX(PIXMAP_POP3FOLDER);
127 refresh(); 129 refresh();
128} 130}
129 131
130void POP3viewItem::contextMenuSelected(int which) 132void POP3viewItem::contextMenuSelected(int which)
131{ 133{
132 switch (which) 134 switch (which)
133 { 135 {
134 case 0: 136 case 0:
135 disconnect(); 137 disconnect();
136 break; 138 break;
137 case 1: 139 case 1:
138 setOnOffline(); 140 setOnOffline();
139 break; 141 break;
140 case 2: // daunlood 142 case GET_NEW_MAILS: // daunlood
141 if (account->getOffline()) 143 if (account->getOffline())
142 setOnOffline(); 144 setOnOffline();
143 AccountView*bl = accountView(); 145 AccountView*bl = accountView();
144 if (!bl) return; 146 if (!bl) return;
145 AccountViewItem* in = findSubItem( "inbox" , 0); 147 AccountViewItem* in = findSubItem( "inbox" , 0);
146 if ( ! in ) 148 if ( ! in )
147 return; 149 return;
148 bl->downloadMailsInbox(in->getFolder() ,getWrapper()); 150 bl->downloadMailsInbox(in->getFolder() ,getWrapper());
149 setOnOffline(); 151 setOnOffline();
150 break; 152 break;
151 } 153 }
152} 154}
153 155
154POP3folderItem::~POP3folderItem() 156POP3folderItem::~POP3folderItem()
155{} 157{}
156 158
157POP3folderItem::POP3folderItem( const FolderP&folderInit, POP3viewItem *parent , QListViewItem*after ) 159POP3folderItem::POP3folderItem( const FolderP&folderInit, POP3viewItem *parent , QListViewItem*after )
158 : AccountViewItem(folderInit,parent,after ) 160 : AccountViewItem(folderInit,parent,after )
159{ 161{
160 pop3 = parent; 162 pop3 = parent;
161 if (folder->getDisplayName().lower()!="inbox") 163 if (folder->getDisplayName().lower()!="inbox")
162 { 164 {
163 setPixmap( 0, PIXMAP_POP3FOLDER ); 165 setPixmap( 0, PIXMAP_POP3FOLDER );
164 } 166 }
165 else 167 else
166 { 168 {
167 setPixmap( 0, PIXMAP_INBOXFOLDER); 169 setPixmap( 0, PIXMAP_INBOXFOLDER);
168 } 170 }
169 setText( 0, folder->getDisplayName() ); 171 setText( 0, folder->getDisplayName() );
170} 172}
171 173
172void POP3folderItem::refresh(QValueList<RecMailP>&target) 174void POP3folderItem::refresh(QValueList<RecMailP>&target)
173{ 175{
174 if (folder->may_select()) 176 if (folder->may_select())
175 pop3->getWrapper()->listMessages( folder->getName(),target ); 177 pop3->getWrapper()->listMessages( folder->getName(),target );
176} 178}
177 179
178RECBODYP POP3folderItem::fetchBody(const RecMailP&aMail) 180RECBODYP POP3folderItem::fetchBody(const RecMailP&aMail)
179{ 181{
180 return pop3->getWrapper()->fetchBody(aMail); 182 return pop3->getWrapper()->fetchBody(aMail);
181} 183}
182 184
183QPopupMenu * POP3folderItem::getContextMenu() 185QPopupMenu * POP3folderItem::getContextMenu()
184{ 186{
185 QPopupMenu *m = new QPopupMenu(0); 187 QPopupMenu *m = new QPopupMenu(0);
186 if (m) 188 if (m)
187 { 189 {
188 m->insertItem(QObject::tr("Refresh header list",contextName),0); 190 m->insertItem(QObject::tr("Refresh header list",contextName),0);
189 m->insertItem(QObject::tr("Delete all mails",contextName),1); 191 m->insertItem(QObject::tr("Delete all mails",contextName),1);
190 m->insertItem(QObject::tr("Move/Copie all mails",contextName),2); 192 m->insertItem(QObject::tr("Move/Copie all mails",contextName),2);
191 } 193 }
192 return m; 194 return m;
193} 195}
194 196
195void POP3folderItem::downloadMails() 197void POP3folderItem::downloadMails()
196{ 198{
197 AccountView*bl = pop3->accountView(); 199 AccountView*bl = pop3->accountView();
198 if (!bl) return; 200 if (!bl) return;
199 bl->downloadMails(folder,pop3->getWrapper()); 201 bl->downloadMails(folder,pop3->getWrapper());
200} 202}
201 203
202void POP3folderItem::contextMenuSelected(int which) 204void POP3folderItem::contextMenuSelected(int which)
203{ 205{
204 AccountView * view = (AccountView*)listView(); 206 AccountView * view = (AccountView*)listView();
205 switch (which) 207 switch (which)
206 { 208 {
207 case 0: 209 case 0:
208 /* must be 'cause pop3 lists are cached */ 210 /* must be 'cause pop3 lists are cached */
209 pop3->getWrapper()->logout(); 211 pop3->getWrapper()->logout();
210 view->refreshCurrent(); 212 view->refreshCurrent();
211 break; 213 break;
212 case 1: 214 case 1:
213 deleteAllMail(pop3->getWrapper(),folder); 215 deleteAllMail(pop3->getWrapper(),folder);
214 break; 216 break;
215 case 2: 217 case 2:
216 downloadMails(); 218 downloadMails();
217 break; 219 break;
218 default: 220 default:
219 break; 221 break;
220 } 222 }
221} 223}
222 224
223/** 225/**
224 * NNTP Account stuff 226 * NNTP Account stuff
225 */ 227 */
226NNTPviewItem::NNTPviewItem( NNTPaccount *a, AccountView *parent ) 228NNTPviewItem::NNTPviewItem( NNTPaccount *a, AccountView *parent )
227 : AccountViewItem( parent ) 229 : AccountViewItem( parent )
228{ 230{
229 account = a; 231 account = a;
230 wrapper = AbstractMail::getWrapper( account ); 232 wrapper = AbstractMail::getWrapper( account );
231 //FIXME 233 //FIXME
232 SETPIX(PIXMAP_POP3FOLDER); 234 SETPIX(PIXMAP_POP3FOLDER);
233#if 0 235#if 0
234 if (!account->getOffline()) 236 if (!account->getOffline())
235 { 237 {
236 setPixmap( 0, ); 238 setPixmap( 0, );
@@ -424,253 +426,253 @@ void NNTPfolderItem::contextMenuSelected(int which)
424/** 426/**
425 * IMAP Account stuff 427 * IMAP Account stuff
426 */ 428 */
427IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent ) 429IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent )
428 : AccountViewItem( parent ) 430 : AccountViewItem( parent )
429{ 431{
430 account = a; 432 account = a;
431 wrapper = AbstractMail::getWrapper( account ); 433 wrapper = AbstractMail::getWrapper( account );
432 SETPIX(PIXMAP_IMAPFOLDER); 434 SETPIX(PIXMAP_IMAPFOLDER);
433 setText( 0, account->getAccountName() ); 435 setText( 0, account->getAccountName() );
434 setOpen( true ); 436 setOpen( true );
435} 437}
436 438
437IMAPviewItem::~IMAPviewItem() 439IMAPviewItem::~IMAPviewItem()
438{ 440{
439 delete wrapper; 441 delete wrapper;
440} 442}
441 443
442AbstractMail *IMAPviewItem::getWrapper() 444AbstractMail *IMAPviewItem::getWrapper()
443{ 445{
444 return wrapper; 446 return wrapper;
445} 447}
446 448
447void IMAPviewItem::refresh(QValueList<RecMailP>&) 449void IMAPviewItem::refresh(QValueList<RecMailP>&)
448{ 450{
449 refreshFolders(false); 451 refreshFolders(false);
450} 452}
451 453
452const QStringList&IMAPviewItem::subFolders() 454const QStringList&IMAPviewItem::subFolders()
453{ 455{
454 return currentFolders; 456 return currentFolders;
455} 457}
456 458
457void IMAPviewItem::refreshFolders(bool force) 459void IMAPviewItem::refreshFolders(bool force)
458{ 460{
459 if (childCount()>0 && force==false) return; 461 if (childCount()>0 && force==false) return;
460 if (account->getOffline()) return; 462 if (account->getOffline()) return;
461 463
462 removeChilds(); 464 removeChilds();
463 currentFolders.clear(); 465 currentFolders.clear();
464 QValueList<FolderP> * folders = wrapper->listFolders(); 466 QValueList<FolderP> * folders = wrapper->listFolders();
465 467
466 QValueList<FolderP>::Iterator it; 468 QValueList<FolderP>::Iterator it;
467 QListViewItem*item = 0; 469 QListViewItem*item = 0;
468 QListViewItem*titem = 0; 470 QListViewItem*titem = 0;
469 QString fname,del,search; 471 QString fname,del,search;
470 int pos; 472 int pos;
471 473
472 for ( it = folders->begin(); it!=folders->end(); ++it) 474 for ( it = folders->begin(); it!=folders->end(); ++it)
473 { 475 {
474 if ((*it)->getDisplayName().lower()=="inbox") 476 if ((*it)->getDisplayName().lower()=="inbox")
475 { 477 {
476 item = new IMAPfolderItem( (*it), this , item ); 478 item = new IMAPfolderItem( (*it), this , item );
477 folders->remove(it); 479 folders->remove(it);
478 break; 480 break;
479 } 481 }
480 } 482 }
481 for ( it = folders->begin(); it!=folders->end(); ++it) 483 for ( it = folders->begin(); it!=folders->end(); ++it)
482 { 484 {
483 fname = (*it)->getDisplayName(); 485 fname = (*it)->getDisplayName();
484 currentFolders.append((*it)->getName()); 486 currentFolders.append((*it)->getName());
485 pos = fname.findRev((*it)->Separator()); 487 pos = fname.findRev((*it)->Separator());
486 if (pos != -1) 488 if (pos != -1)
487 { 489 {
488 fname = fname.left(pos); 490 fname = fname.left(pos);
489 } 491 }
490 IMAPfolderItem*pitem = (IMAPfolderItem*)findSubItem(fname); 492 IMAPfolderItem*pitem = (IMAPfolderItem*)findSubItem(fname);
491 if (pitem) 493 if (pitem)
492 { 494 {
493 titem = item; 495 titem = item;
494 item = new IMAPfolderItem( (*it),pitem,pitem->firstChild(),this); 496 item = new IMAPfolderItem( (*it),pitem,pitem->firstChild(),this);
495 /* setup the short name */ 497 /* setup the short name */
496 item->setText(0,(*it)->getDisplayName().right((*it)->getDisplayName().length()-pos-1)); 498 item->setText(0,(*it)->getDisplayName().right((*it)->getDisplayName().length()-pos-1));
497 item = titem; 499 item = titem;
498 } 500 }
499 else 501 else
500 { 502 {
501 item = new IMAPfolderItem( (*it), this , item ); 503 item = new IMAPfolderItem( (*it), this , item );
502 } 504 }
503 } 505 }
504 delete folders; 506 delete folders;
505} 507}
506 508
507QPopupMenu * IMAPviewItem::getContextMenu() 509QPopupMenu * IMAPviewItem::getContextMenu()
508{ 510{
509 QPopupMenu *m = new QPopupMenu(0); 511 QPopupMenu *m = new QPopupMenu(0);
510 if (m) 512 if (m)
511 { 513 {
512 if (!account->getOffline()) 514 if (!account->getOffline())
513 { 515 {
514 m->insertItem(QObject::tr("Refresh folder list",contextName),0); 516 m->insertItem(QObject::tr("Refresh folder list",contextName),0);
515 m->insertItem(QObject::tr("Create new folder",contextName),1); 517 m->insertItem(QObject::tr("Create new folder",contextName),1);
516 m->insertSeparator(); 518 m->insertSeparator();
517 m->insertItem(QObject::tr("Disconnect",contextName),2); 519 m->insertItem(QObject::tr("Disconnect",contextName),2);
518 m->insertItem(QObject::tr("Set offline",contextName),3); 520 m->insertItem(QObject::tr("Set offline",contextName),3);
519 m->insertSeparator(); 521 m->insertSeparator();
520 m->insertItem(QObject::tr("Download new INBOX messages",contextName),4); 522 m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
521 } 523 }
522 else 524 else
523 { 525 {
524 m->insertItem(QObject::tr("Set online",contextName),3); 526 m->insertItem(QObject::tr("Set online",contextName),3);
525 m->insertSeparator(); 527 m->insertSeparator();
526 m->insertItem(QObject::tr("Download new INBOX messages",contextName),4); 528 m->insertItem(QObject::tr("Get new messages",contextName),GET_NEW_MAILS);
527 } 529 }
528 } 530 }
529 return m; 531 return m;
530} 532}
531 533
532void IMAPviewItem::createNewFolder() 534void IMAPviewItem::createNewFolder()
533{ 535{
534 Newmdirdlg ndirdlg; 536 Newmdirdlg ndirdlg;
535 537
536 ndirdlg.showMaximized(); 538 ndirdlg.showMaximized();
537 if ( ndirdlg.exec() ) 539 if ( ndirdlg.exec() )
538 { 540 {
539 QString ndir = ndirdlg.Newdir(); 541 QString ndir = ndirdlg.Newdir();
540 bool makesubs = ndirdlg.subpossible(); 542 bool makesubs = ndirdlg.subpossible();
541 QString delemiter = "/"; 543 QString delemiter = "/";
542 IMAPfolderItem*item = (IMAPfolderItem*)firstChild(); 544 IMAPfolderItem*item = (IMAPfolderItem*)firstChild();
543 if (item) 545 if (item)
544 { 546 {
545 delemiter = item->Delemiter(); 547 delemiter = item->Delemiter();
546 } 548 }
547 if (wrapper->createMbox(ndir,0,delemiter,makesubs)) 549 if (wrapper->createMbox(ndir,0,delemiter,makesubs))
548 { 550 {
549 refreshFolders(true); 551 refreshFolders(true);
550 } 552 }
551 } 553 }
552} 554}
553 555
554void IMAPviewItem::contextMenuSelected(int id) 556void IMAPviewItem::contextMenuSelected(int id)
555{ 557{
556 558
557 switch (id) 559 switch (id)
558 { 560 {
559 case 0: 561 case 0:
560 refreshFolders(true); 562 refreshFolders(true);
561 break; 563 break;
562 case 1: 564 case 1:
563 createNewFolder(); 565 createNewFolder();
564 break; 566 break;
565 case 2: 567 case 2:
566 removeChilds(); 568 removeChilds();
567 wrapper->logout(); 569 wrapper->logout();
568 break; 570 break;
569 case 3: 571 case 3:
570 if (account->getOffline()==false) 572 if (account->getOffline()==false)
571 { 573 {
572 removeChilds(); 574 removeChilds();
573 wrapper->logout(); 575 wrapper->logout();
574 } 576 }
575 account->setOffline(!account->getOffline()); 577 account->setOffline(!account->getOffline());
576 account->save(); 578 account->save();
577 SETPIX(PIXMAP_IMAPFOLDER); 579 SETPIX(PIXMAP_IMAPFOLDER);
578 refreshFolders(false); 580 refreshFolders(false);
579 break; 581 break;
580 case 4: // daunlood 582 case GET_NEW_MAILS: // daunlood
581 { 583 {
582 if (account->getOffline()) { 584 if (account->getOffline()) {
583 contextMenuSelected( 3 ); 585 contextMenuSelected( 3 );
584 } 586 }
585 AccountView*bl = accountView(); 587 AccountView*bl = accountView();
586 if (!bl) return; 588 if (!bl) return;
587 AccountViewItem* in = findSubItem( "inbox" , 0); 589 AccountViewItem* in = findSubItem( "inbox" , 0);
588 if ( ! in ) 590 if ( ! in )
589 return; 591 return;
590 bl->downloadMailsInbox(in->getFolder(),getWrapper()); 592 bl->downloadMailsInbox(in->getFolder(),getWrapper());
591 } 593 }
592 break; 594 break;
593 default: 595 default:
594 break; 596 break;
595 } 597 }
596} 598}
597 599
598RECBODYP IMAPviewItem::fetchBody(const RecMailP&) 600RECBODYP IMAPviewItem::fetchBody(const RecMailP&)
599{ 601{
600 return new RecBody(); 602 return new RecBody();
601} 603}
602 604
603bool IMAPviewItem::offline() 605bool IMAPviewItem::offline()
604{ 606{
605 return account->getOffline(); 607 return account->getOffline();
606} 608}
607 609
608IMAPfolderItem::IMAPfolderItem( const FolderP& folderInit, IMAPviewItem *parent , QListViewItem*after ) 610IMAPfolderItem::IMAPfolderItem( const FolderP& folderInit, IMAPviewItem *parent , QListViewItem*after )
609 : AccountViewItem( folderInit, parent , after ) 611 : AccountViewItem( folderInit, parent , after )
610{ 612{
611 imap = parent; 613 imap = parent;
612 if (folder->getDisplayName().lower()!="inbox") 614 if (folder->getDisplayName().lower()!="inbox")
613 { 615 {
614 setPixmap( 0, PIXMAP_IMAPFOLDER ); 616 setPixmap( 0, PIXMAP_IMAPFOLDER );
615 } 617 }
616 else 618 else
617 { 619 {
618 setPixmap( 0, PIXMAP_INBOXFOLDER); 620 setPixmap( 0, PIXMAP_INBOXFOLDER);
619 } 621 }
620 setText( 0, folder->getDisplayName() ); 622 setText( 0, folder->getDisplayName() );
621} 623}
622 624
623IMAPfolderItem::IMAPfolderItem(const FolderP &folderInit, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master ) 625IMAPfolderItem::IMAPfolderItem(const FolderP &folderInit, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master )
624 : AccountViewItem(folderInit, parent,after ) 626 : AccountViewItem(folderInit, parent,after )
625{ 627{
626 imap = master; 628 imap = master;
627 if (folder->getDisplayName().lower()!="inbox") 629 if (folder->getDisplayName().lower()!="inbox")
628 { 630 {
629 setPixmap( 0, PIXMAP_IMAPFOLDER ); 631 setPixmap( 0, PIXMAP_IMAPFOLDER );
630 } 632 }
631 else 633 else
632 { 634 {
633 setPixmap( 0, PIXMAP_INBOXFOLDER); 635 setPixmap( 0, PIXMAP_INBOXFOLDER);
634 } 636 }
635 setText( 0, folder->getDisplayName() ); 637 setText( 0, folder->getDisplayName() );
636} 638}
637 639
638IMAPfolderItem::~IMAPfolderItem() 640IMAPfolderItem::~IMAPfolderItem()
639{} 641{}
640 642
641const QString& IMAPfolderItem::Delemiter()const 643const QString& IMAPfolderItem::Delemiter()const
642{ 644{
643 return folder->Separator(); 645 return folder->Separator();
644} 646}
645 647
646void IMAPfolderItem::refresh(QValueList<RecMailP>&target) 648void IMAPfolderItem::refresh(QValueList<RecMailP>&target)
647{ 649{
648 if (folder->may_select()) 650 if (folder->may_select())
649 { 651 {
650 imap->getWrapper()->listMessages( folder->getName(),target ); 652 imap->getWrapper()->listMessages( folder->getName(),target );
651 } 653 }
652 else 654 else
653 { 655 {
654 target.clear(); 656 target.clear();
655 } 657 }
656} 658}
657 659
658RECBODYP IMAPfolderItem::fetchBody(const RecMailP&aMail) 660RECBODYP IMAPfolderItem::fetchBody(const RecMailP&aMail)
659{ 661{
660 return imap->getWrapper()->fetchBody(aMail); 662 return imap->getWrapper()->fetchBody(aMail);
661} 663}
662 664
663QPopupMenu * IMAPfolderItem::getContextMenu() 665QPopupMenu * IMAPfolderItem::getContextMenu()
664{ 666{
665 QPopupMenu *m = new QPopupMenu(0); 667 QPopupMenu *m = new QPopupMenu(0);
666 if (m) 668 if (m)
667 { 669 {
668 if (folder->may_select()) 670 if (folder->may_select())
669 { 671 {
670 m->insertItem(QObject::tr("Refresh header list",contextName),0); 672 m->insertItem(QObject::tr("Refresh header list",contextName),0);
671 m->insertItem(QObject::tr("Move/Copie all mails",contextName),4); 673 m->insertItem(QObject::tr("Move/Copie all mails",contextName),4);
672 m->insertItem(QObject::tr("Delete all mails",contextName),1); 674 m->insertItem(QObject::tr("Delete all mails",contextName),1);
673 } 675 }
674 if (folder->no_inferior()==false) 676 if (folder->no_inferior()==false)
675 { 677 {
676 m->insertItem(QObject::tr("Create new subfolder",contextName),2); 678 m->insertItem(QObject::tr("Create new subfolder",contextName),2);
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp
index 5441a9b..91332c3 100644
--- a/kmicromail/libmailwrapper/imapwrapper.cpp
+++ b/kmicromail/libmailwrapper/imapwrapper.cpp
@@ -78,193 +78,193 @@ bool IMAPwrapper::start_tls(bool force_tls)
78 78
79 err = mailimap_capability(m_imap,&cap_data); 79 err = mailimap_capability(m_imap,&cap_data);
80 if (err != MAILIMAP_NO_ERROR) { 80 if (err != MAILIMAP_NO_ERROR) {
81 Global::statusMessage("error getting capabilities!"); 81 Global::statusMessage("error getting capabilities!");
82 return false; 82 return false;
83 } 83 }
84 clistiter * cur; 84 clistiter * cur;
85 for(cur = clist_begin(cap_data->cap_list) ; cur != NULL;cur = clist_next(cur)) { 85 for(cur = clist_begin(cap_data->cap_list) ; cur != NULL;cur = clist_next(cur)) {
86 struct mailimap_capability * cap; 86 struct mailimap_capability * cap;
87 cap = (struct mailimap_capability *)clist_content(cur); 87 cap = (struct mailimap_capability *)clist_content(cur);
88 if (cap->cap_type == MAILIMAP_CAPABILITY_NAME) { 88 if (cap->cap_type == MAILIMAP_CAPABILITY_NAME) {
89 if (strcasecmp(cap->cap_data.cap_name, "STARTTLS") == 0) { 89 if (strcasecmp(cap->cap_data.cap_name, "STARTTLS") == 0) {
90 try_tls = true; 90 try_tls = true;
91 break; 91 break;
92 } 92 }
93 } 93 }
94 } 94 }
95 if (cap_data) { 95 if (cap_data) {
96 mailimap_capability_data_free(cap_data); 96 mailimap_capability_data_free(cap_data);
97 } 97 }
98 if (try_tls) { 98 if (try_tls) {
99 err = mailimap_starttls(m_imap); 99 err = mailimap_starttls(m_imap);
100 if (err != MAILIMAP_NO_ERROR && force_tls) { 100 if (err != MAILIMAP_NO_ERROR && force_tls) {
101 Global::statusMessage(tr("Server has no TLS support!")); 101 Global::statusMessage(tr("Server has no TLS support!"));
102 try_tls = false; 102 try_tls = false;
103 } else { 103 } else {
104 mailstream_low * low; 104 mailstream_low * low;
105 mailstream_low * new_low; 105 mailstream_low * new_low;
106 low = mailstream_get_low(m_imap->imap_stream); 106 low = mailstream_get_low(m_imap->imap_stream);
107 if (!low) { 107 if (!low) {
108 try_tls = false; 108 try_tls = false;
109 } else { 109 } else {
110 int fd = mailstream_low_get_fd(low); 110 int fd = mailstream_low_get_fd(low);
111 if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) { 111 if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) {
112 mailstream_low_free(low); 112 mailstream_low_free(low);
113 mailstream_set_low(m_imap->imap_stream, new_low); 113 mailstream_set_low(m_imap->imap_stream, new_low);
114 } else { 114 } else {
115 try_tls = false; 115 try_tls = false;
116 } 116 }
117 } 117 }
118 } 118 }
119 } 119 }
120 return try_tls; 120 return try_tls;
121} 121}
122 122
123void IMAPwrapper::login() 123void IMAPwrapper::login()
124{ 124{
125 QString server, user, pass; 125 QString server, user, pass;
126 uint16_t port; 126 uint16_t port;
127 int err = MAILIMAP_NO_ERROR; 127 int err = MAILIMAP_NO_ERROR;
128 128
129 if (account->getOffline()) return; 129 if (account->getOffline()) return;
130 /* we are connected this moment */ 130 /* we are connected this moment */
131 /* TODO: setup a timer holding the line or if connection closed - delete the value */ 131 /* TODO: setup a timer holding the line or if connection closed - delete the value */
132 if (m_imap) { 132 if (m_imap) {
133 err = mailimap_noop(m_imap); 133 err = mailimap_noop(m_imap);
134 if (err!=MAILIMAP_NO_ERROR) { 134 if (err!=MAILIMAP_NO_ERROR) {
135 logout(); 135 logout();
136 } else { 136 } else {
137 mailstream_flush(m_imap->imap_stream); 137 mailstream_flush(m_imap->imap_stream);
138 return; 138 return;
139 } 139 }
140 } 140 }
141 server = account->getServer(); 141 server = account->getServer();
142 port = account->getPort().toUInt(); 142 port = account->getPort().toUInt();
143 if ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) { 143 if ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) {
144 LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true ); 144 LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true );
145 login.show(); 145 login.show();
146 if ( QDialog::Accepted == login.exec() ) { 146 if ( QDialog::Accepted == login.exec() ) {
147 // ok 147 // ok
148 user = login.getUser(); 148 user = login.getUser();
149 pass = login.getPassword(); 149 pass = login.getPassword();
150 } else { 150 } else {
151 // cancel 151 // cancel
152 return; 152 return;
153 } 153 }
154 } else { 154 } else {
155 user = account->getUser(); 155 user = account->getUser();
156 pass = account->getPassword(); 156 pass = account->getPassword();
157 } 157 }
158 158
159 m_imap = mailimap_new( 20, &imap_progress ); 159 m_imap = mailimap_new( 20, &imap_progress );
160 160
161 /* connect */ 161 /* connect */
162 bool ssl = false; 162 bool ssl = false;
163 bool try_tls = false; 163 bool try_tls = false;
164 bool force_tls = false; 164 bool force_tls = false;
165 165
166 if ( account->ConnectionType() == 2 ) { 166 if ( account->ConnectionType() == 2 ) {
167 ssl = true; 167 ssl = true;
168 } 168 }
169 if (account->ConnectionType()==1) { 169 if (account->ConnectionType()==1) {
170 force_tls = true; 170 force_tls = true;
171 } 171 }
172 172
173 if ( ssl ) { 173 if ( ssl ) {
174 qDebug("using ssl "); 174 //qDebug("using ssl ");
175 err = mailimap_ssl_connect( m_imap, (char*)server.latin1(), port ); 175 err = mailimap_ssl_connect( m_imap, (char*)server.latin1(), port );
176 } else { 176 } else {
177 err = mailimap_socket_connect( m_imap, (char*)server.latin1(), port ); 177 err = mailimap_socket_connect( m_imap, (char*)server.latin1(), port );
178 } 178 }
179 179
180 if ( err != MAILIMAP_NO_ERROR && 180 if ( err != MAILIMAP_NO_ERROR &&
181 err != MAILIMAP_NO_ERROR_AUTHENTICATED && 181 err != MAILIMAP_NO_ERROR_AUTHENTICATED &&
182 err != MAILIMAP_NO_ERROR_NON_AUTHENTICATED ) { 182 err != MAILIMAP_NO_ERROR_NON_AUTHENTICATED ) {
183 QString failure = ""; 183 QString failure = "";
184 if (err == MAILIMAP_ERROR_CONNECTION_REFUSED) { 184 if (err == MAILIMAP_ERROR_CONNECTION_REFUSED) {
185 failure="Connection refused"; 185 failure="Connection refused";
186 } else { 186 } else {
187 failure="Unknown failure"; 187 failure="Unknown failure";
188 } 188 }
189 Global::statusMessage(tr("error connecting imap server: %1").arg(failure)); 189 Global::statusMessage(tr("error connecting imap server: %1").arg(failure));
190 mailimap_free( m_imap ); 190 mailimap_free( m_imap );
191 m_imap = 0; 191 m_imap = 0;
192 return; 192 return;
193 } 193 }
194 194
195 if (!ssl) { 195 if (!ssl) {
196 try_tls = start_tls(force_tls); 196 try_tls = start_tls(force_tls);
197 } 197 }
198 198
199 bool ok = true; 199 bool ok = true;
200 if (force_tls && !try_tls) { 200 if (force_tls && !try_tls) {
201 Global::statusMessage(tr("Server has no TLS support!")); 201 Global::statusMessage(tr("Server has no TLS support!"));
202 ok = false; 202 ok = false;
203 } 203 }
204 204
205 205
206 /* login */ 206 /* login */
207 207
208 if (ok) { 208 if (ok) {
209 err = mailimap_login_simple( m_imap, (char*)user.latin1(), (char*)pass.latin1() ); 209 err = mailimap_login_simple( m_imap, (char*)user.latin1(), (char*)pass.latin1() );
210 if ( err != MAILIMAP_NO_ERROR ) { 210 if ( err != MAILIMAP_NO_ERROR ) {
211 Global::statusMessage(tr("error logging in imap server: %1").arg(m_imap->imap_response)); 211 Global::statusMessage(tr("error logging in imap server: %1").arg(m_imap->imap_response));
212 ok = false; 212 ok = false;
213 } 213 }
214 } 214 }
215 if (!ok) { 215 if (!ok) {
216 err = mailimap_close( m_imap ); 216 err = mailimap_close( m_imap );
217 mailimap_free( m_imap ); 217 mailimap_free( m_imap );
218 m_imap = 0; 218 m_imap = 0;
219 } 219 }
220} 220}
221 221
222void IMAPwrapper::logout() 222void IMAPwrapper::logout()
223{ 223{
224 int err = MAILIMAP_NO_ERROR; 224 int err = MAILIMAP_NO_ERROR;
225 if (!m_imap) return; 225 if (!m_imap) return;
226 err = mailimap_logout( m_imap ); 226 err = mailimap_logout( m_imap );
227 err = mailimap_close( m_imap ); 227 err = mailimap_close( m_imap );
228 mailimap_free( m_imap ); 228 mailimap_free( m_imap );
229 m_imap = 0; 229 m_imap = 0;
230 m_Lastmbox = ""; 230 m_Lastmbox = "";
231} 231}
232 232
233void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSmartPointer<RecMail> > &target , int maxSizeInKb) 233void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSmartPointer<RecMail> > &target , int maxSizeInKb)
234{ 234{
235 int err = MAILIMAP_NO_ERROR; 235 int err = MAILIMAP_NO_ERROR;
236 clist *result = 0; 236 clist *result = 0;
237 clistcell *current; 237 clistcell *current;
238 mailimap_fetch_type *fetchType = 0; 238 mailimap_fetch_type *fetchType = 0;
239 mailimap_set *set = 0; 239 mailimap_set *set = 0;
240 240
241 login(); 241 login();
242 if (!m_imap) { 242 if (!m_imap) {
243 return; 243 return;
244 } 244 }
245 /* select mailbox READONLY for operations */ 245 /* select mailbox READONLY for operations */
246 err = selectMbox(mailbox); 246 err = selectMbox(mailbox);
247 if ( err != MAILIMAP_NO_ERROR ) { 247 if ( err != MAILIMAP_NO_ERROR ) {
248 return; 248 return;
249 } 249 }
250 250
251 int last = m_imap->imap_selection_info->sel_exists; 251 int last = m_imap->imap_selection_info->sel_exists;
252 252
253 if (last == 0) { 253 if (last == 0) {
254 Global::statusMessage(tr("Mailbox has no mails")); 254 Global::statusMessage(tr("Mailbox has no mails"));
255 return; 255 return;
256 } else { 256 } else {
257 } 257 }
258 258
259 Global::statusMessage(tr("Fetching header list")); 259 Global::statusMessage(tr("Fetching header list"));
260 qApp->processEvents(); 260 qApp->processEvents();
261 /* the range has to start at 1!!! not with 0!!!! */ 261 /* the range has to start at 1!!! not with 0!!!! */
262 set = mailimap_set_new_interval( 1, last ); 262 set = mailimap_set_new_interval( 1, last );
263 fetchType = mailimap_fetch_type_new_fetch_att_list_empty(); 263 fetchType = mailimap_fetch_type_new_fetch_att_list_empty();
264 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_envelope()); 264 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_envelope());
265 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_flags()); 265 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_flags());
266 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_internaldate()); 266 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_internaldate());
267 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_rfc822_size()); 267 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_rfc822_size());
268 268
269 err = mailimap_fetch( m_imap, set, fetchType, &result ); 269 err = mailimap_fetch( m_imap, set, fetchType, &result );
270 mailimap_set_free( set ); 270 mailimap_set_free( set );
@@ -1154,154 +1154,154 @@ int IMAPwrapper::createMbox(const QString&folder,const FolderP&parentfolder,cons
1154 } 1154 }
1155 return 1; 1155 return 1;
1156} 1156}
1157 1157
1158int IMAPwrapper::deleteMbox(const FolderP&folder) 1158int IMAPwrapper::deleteMbox(const FolderP&folder)
1159{ 1159{
1160 if (!folder) return 0; 1160 if (!folder) return 0;
1161 login(); 1161 login();
1162 if (!m_imap) {return 0;} 1162 if (!m_imap) {return 0;}
1163 int res = mailimap_delete(m_imap,folder->getName()); 1163 int res = mailimap_delete(m_imap,folder->getName());
1164 if (res != MAILIMAP_NO_ERROR) { 1164 if (res != MAILIMAP_NO_ERROR) {
1165 Global::statusMessage(tr("%1").arg(m_imap->imap_response)); 1165 Global::statusMessage(tr("%1").arg(m_imap->imap_response));
1166 return 0; 1166 return 0;
1167 } 1167 }
1168 return 1; 1168 return 1;
1169} 1169}
1170 1170
1171void IMAPwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) 1171void IMAPwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
1172{ 1172{
1173 mailimap_status_att_list * att_list =0; 1173 mailimap_status_att_list * att_list =0;
1174 mailimap_mailbox_data_status * status=0; 1174 mailimap_mailbox_data_status * status=0;
1175 clistiter * cur = 0; 1175 clistiter * cur = 0;
1176 int r = 0; 1176 int r = 0;
1177 target_stat.message_count = 0; 1177 target_stat.message_count = 0;
1178 target_stat.message_unseen = 0; 1178 target_stat.message_unseen = 0;
1179 target_stat.message_recent = 0; 1179 target_stat.message_recent = 0;
1180 login(); 1180 login();
1181 if (!m_imap) { 1181 if (!m_imap) {
1182 return; 1182 return;
1183 } 1183 }
1184 att_list = mailimap_status_att_list_new_empty(); 1184 att_list = mailimap_status_att_list_new_empty();
1185 if (!att_list) return; 1185 if (!att_list) return;
1186 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_MESSAGES); 1186 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_MESSAGES);
1187 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_RECENT); 1187 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_RECENT);
1188 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_UNSEEN); 1188 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_UNSEEN);
1189 r = mailimap_status(m_imap, mailbox.latin1(), att_list, &status); 1189 r = mailimap_status(m_imap, mailbox.latin1(), att_list, &status);
1190 if (r==MAILIMAP_NO_ERROR&&status->st_info_list!=0) { 1190 if (r==MAILIMAP_NO_ERROR&&status->st_info_list!=0) {
1191 for (cur = clist_begin(status->st_info_list); 1191 for (cur = clist_begin(status->st_info_list);
1192 cur != NULL ; cur = clist_next(cur)) { 1192 cur != NULL ; cur = clist_next(cur)) {
1193 mailimap_status_info * status_info; 1193 mailimap_status_info * status_info;
1194 status_info = (mailimap_status_info *)clist_content(cur); 1194 status_info = (mailimap_status_info *)clist_content(cur);
1195 switch (status_info->st_att) { 1195 switch (status_info->st_att) {
1196 case MAILIMAP_STATUS_ATT_MESSAGES: 1196 case MAILIMAP_STATUS_ATT_MESSAGES:
1197 target_stat.message_count = status_info->st_value; 1197 target_stat.message_count = status_info->st_value;
1198 break; 1198 break;
1199 case MAILIMAP_STATUS_ATT_RECENT: 1199 case MAILIMAP_STATUS_ATT_RECENT:
1200 target_stat.message_recent = status_info->st_value; 1200 target_stat.message_recent = status_info->st_value;
1201 break; 1201 break;
1202 case MAILIMAP_STATUS_ATT_UNSEEN: 1202 case MAILIMAP_STATUS_ATT_UNSEEN:
1203 target_stat.message_unseen = status_info->st_value; 1203 target_stat.message_unseen = status_info->st_value;
1204 break; 1204 break;
1205 } 1205 }
1206 } 1206 }
1207 } else { 1207 } else {
1208 // odebug << "Error retrieving status" << oendl; 1208 // odebug << "Error retrieving status" << oendl;
1209 } 1209 }
1210 if (status) mailimap_mailbox_data_status_free(status); 1210 if (status) mailimap_mailbox_data_status_free(status);
1211 if (att_list) mailimap_status_att_list_free(att_list); 1211 if (att_list) mailimap_status_att_list_free(att_list);
1212} 1212}
1213 1213
1214void IMAPwrapper::storeMessage(const char*msg,size_t length, const QString&folder) 1214void IMAPwrapper::storeMessage(const char*msg,size_t length, const QString&folder)
1215{ 1215{
1216 login(); 1216 login();
1217 if (!m_imap) return; 1217 if (!m_imap) return;
1218 if (!msg) return; 1218 if (!msg) return;
1219 int r = mailimap_append(m_imap,(char*)folder.latin1(),0,0,msg,length); 1219 int r = mailimap_append(m_imap,(char*)folder.latin1(),0,0,msg,length);
1220 if (r != MAILIMAP_NO_ERROR) { 1220 if (r != MAILIMAP_NO_ERROR) {
1221 Global::statusMessage("Error storing mail!"); 1221 Global::statusMessage("Error storing mail!");
1222 } 1222 }
1223} 1223}
1224 1224
1225MAILLIB::ATYPE IMAPwrapper::getType()const 1225MAILLIB::ATYPE IMAPwrapper::getType()const
1226{ 1226{
1227 return account->getType(); 1227 return account->getType();
1228} 1228}
1229 1229
1230const QString&IMAPwrapper::getName()const 1230const QString&IMAPwrapper::getName()const
1231{ 1231{
1232 // odebug << "Get name: " << account->getAccountName().latin1() << "" << oendl; 1232 // odebug << "Get name: " << account->getAccountName().latin1() << "" << oendl;
1233 return account->getAccountName(); 1233 return account->getAccountName();
1234} 1234}
1235 1235
1236encodedString* IMAPwrapper::fetchRawBody(const RecMailP&mail) 1236encodedString* IMAPwrapper::fetchRawBody(const RecMailP&mail)
1237{ 1237{
1238 // dummy 1238 // dummy
1239 QValueList<int> path; 1239 QValueList<int> path;
1240 return fetchRawPart(mail,path,false); 1240 return fetchRawPart(mail,path,false);
1241} 1241}
1242 1242
1243void IMAPwrapper::mvcpAllMails(const FolderP&fromFolder, 1243void IMAPwrapper::mvcpAllMails(const FolderP&fromFolder,
1244 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit, int maxSizeInKb) 1244 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit, int maxSizeInKb)
1245{ 1245{
1246 if (targetWrapper != this || maxSizeInKb > 0 ) { 1246 if (targetWrapper != this || maxSizeInKb > 0 ) {
1247 mMax = 0; 1247 mMax = 0;
1248 progress( tr("Copy")); 1248 progress( tr("Copy"));
1249 AbstractMail::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit, maxSizeInKb); 1249 AbstractMail::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit, maxSizeInKb);
1250 qDebug("IMAPwrapper::mvcpAllMails::Using generic"); 1250 //qDebug("IMAPwrapper::mvcpAllMails::Using generic");
1251 // odebug << "Using generic" << oendl; 1251 // odebug << "Using generic" << oendl;
1252 return; 1252 return;
1253 } 1253 }
1254 mailimap_set *set = 0; 1254 mailimap_set *set = 0;
1255 login(); 1255 login();
1256 if (!m_imap) { 1256 if (!m_imap) {
1257 return; 1257 return;
1258 } 1258 }
1259 int err = selectMbox(fromFolder->getName()); 1259 int err = selectMbox(fromFolder->getName());
1260 if ( err != MAILIMAP_NO_ERROR ) { 1260 if ( err != MAILIMAP_NO_ERROR ) {
1261 return; 1261 return;
1262 } 1262 }
1263 Global::statusMessage( tr("Copying mails on server...") ); 1263 Global::statusMessage( tr("Copying mails on server...") );
1264 int last = m_imap->imap_selection_info->sel_exists; 1264 int last = m_imap->imap_selection_info->sel_exists;
1265 set = mailimap_set_new_interval( 1, last ); 1265 set = mailimap_set_new_interval( 1, last );
1266 err = mailimap_copy(m_imap,set,targetFolder.latin1()); 1266 err = mailimap_copy(m_imap,set,targetFolder.latin1());
1267 mailimap_set_free( set ); 1267 mailimap_set_free( set );
1268 if ( err != MAILIMAP_NO_ERROR ) { 1268 if ( err != MAILIMAP_NO_ERROR ) {
1269 QString error_msg = tr("Error copy mails: %1").arg(m_imap->imap_response); 1269 QString error_msg = tr("Error copy mails: %1").arg(m_imap->imap_response);
1270 Global::statusMessage(error_msg); 1270 Global::statusMessage(error_msg);
1271 // odebug << error_msg << oendl; 1271 // odebug << error_msg << oendl;
1272 return; 1272 return;
1273 } 1273 }
1274 if (moveit) { 1274 if (moveit) {
1275 deleteAllMail(fromFolder); 1275 deleteAllMail(fromFolder);
1276 } 1276 }
1277} 1277}
1278 1278
1279void IMAPwrapper::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 1279void IMAPwrapper::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
1280{ 1280{
1281 if (targetWrapper != this) { 1281 if (targetWrapper != this) {
1282 // odebug << "Using generic" << oendl; 1282 // odebug << "Using generic" << oendl;
1283 AbstractMail::mvcpMail(mail,targetFolder,targetWrapper,moveit); 1283 AbstractMail::mvcpMail(mail,targetFolder,targetWrapper,moveit);
1284 return; 1284 return;
1285 } 1285 }
1286 mailimap_set *set = 0; 1286 mailimap_set *set = 0;
1287 login(); 1287 login();
1288 if (!m_imap) { 1288 if (!m_imap) {
1289 return; 1289 return;
1290 } 1290 }
1291 int err = selectMbox(mail->getMbox()); 1291 int err = selectMbox(mail->getMbox());
1292 if ( err != MAILIMAP_NO_ERROR ) { 1292 if ( err != MAILIMAP_NO_ERROR ) {
1293 return; 1293 return;
1294 } 1294 }
1295 set = mailimap_set_new_single(mail->getNumber()); 1295 set = mailimap_set_new_single(mail->getNumber());
1296 err = mailimap_copy(m_imap,set,targetFolder.latin1()); 1296 err = mailimap_copy(m_imap,set,targetFolder.latin1());
1297 mailimap_set_free( set ); 1297 mailimap_set_free( set );
1298 if ( err != MAILIMAP_NO_ERROR ) { 1298 if ( err != MAILIMAP_NO_ERROR ) {
1299 QString error_msg = tr("error copy mail: %1").arg(m_imap->imap_response); 1299 QString error_msg = tr("error copy mail: %1").arg(m_imap->imap_response);
1300 Global::statusMessage(error_msg); 1300 Global::statusMessage(error_msg);
1301 // odebug << error_msg << oendl; 1301 // odebug << error_msg << oendl;
1302 return; 1302 return;
1303 } 1303 }
1304 if (moveit) { 1304 if (moveit) {
1305 deleteMail(mail); 1305 deleteMail(mail);
1306 } 1306 }
1307} 1307}
diff --git a/kmicromail/libmailwrapper/mhwrapper.cpp b/kmicromail/libmailwrapper/mhwrapper.cpp
index 962dac0..641d4d9 100644
--- a/kmicromail/libmailwrapper/mhwrapper.cpp
+++ b/kmicromail/libmailwrapper/mhwrapper.cpp
@@ -1,293 +1,291 @@
1// CHANGED 2004-09-31 Lutz Rogowski 1// CHANGED 2004-09-31 Lutz Rogowski
2#include "mhwrapper.h" 2#include "mhwrapper.h"
3#include "mailtypes.h" 3#include "mailtypes.h"
4#include "mailwrapper.h" 4#include "mailwrapper.h"
5#include <libetpan/libetpan.h> 5#include <libetpan/libetpan.h>
6#include <qdir.h> 6#include <qdir.h>
7#include <qmessagebox.h> 7#include <qmessagebox.h>
8#include <stdlib.h> 8#include <stdlib.h>
9#include <qpe/global.h> 9#include <qpe/global.h>
10#include <oprocess.h> 10#include <oprocess.h>
11//#include <opie2/odebug.h> 11//#include <opie2/odebug.h>
12 12
13using namespace Opie::Core; 13using namespace Opie::Core;
14MHwrapper::MHwrapper(const QString & mbox_dir,const QString&mbox_name) 14MHwrapper::MHwrapper(const QString & mbox_dir,const QString&mbox_name)
15 : Genericwrapper(),MHPath(mbox_dir),MHName(mbox_name) 15 : Genericwrapper(),MHPath(mbox_dir),MHName(mbox_name)
16{ 16{
17 if (MHPath.length()>0) { 17 if (MHPath.length()>0) {
18 if (MHPath[MHPath.length()-1]=='/') { 18 if (MHPath[MHPath.length()-1]=='/') {
19 MHPath=MHPath.left(MHPath.length()-1); 19 MHPath=MHPath.left(MHPath.length()-1);
20 } 20 }
21 //odebug << MHPath << oendl; 21 //odebug << MHPath << oendl;
22 QDir dir(MHPath); 22 QDir dir(MHPath);
23 if (!dir.exists()) { 23 if (!dir.exists()) {
24 dir.mkdir(MHPath); 24 dir.mkdir(MHPath);
25 } 25 }
26 init_storage(); 26 init_storage();
27 } 27 }
28} 28}
29 29
30void MHwrapper::init_storage() 30void MHwrapper::init_storage()
31{ 31{
32 int r; 32 int r;
33 QString pre = MHPath; 33 QString pre = MHPath;
34 if (!m_storage) { 34 if (!m_storage) {
35 m_storage = mailstorage_new(NULL); 35 m_storage = mailstorage_new(NULL);
36 r = mh_mailstorage_init(m_storage,(char*)pre.latin1(),0,0,0); 36 r = mh_mailstorage_init(m_storage,(char*)pre.latin1(),0,0,0);
37 if (r != MAIL_NO_ERROR) { 37 if (r != MAIL_NO_ERROR) {
38 qDebug(" error init storage "); 38 qDebug(" error init storage ");
39 mailstorage_free(m_storage); 39 mailstorage_free(m_storage);
40 m_storage = 0; 40 m_storage = 0;
41 return; 41 return;
42 } 42 }
43 } 43 }
44 r = mailstorage_connect(m_storage); 44 r = mailstorage_connect(m_storage);
45 if (r!=MAIL_NO_ERROR) { 45 if (r!=MAIL_NO_ERROR) {
46 qDebug("error connecting storage "); 46 qDebug("error connecting storage ");
47 mailstorage_free(m_storage); 47 mailstorage_free(m_storage);
48 m_storage = 0; 48 m_storage = 0;
49 } 49 }
50} 50}
51 51
52void MHwrapper::clean_storage() 52void MHwrapper::clean_storage()
53{ 53{
54 if (m_storage) { 54 if (m_storage) {
55 mailstorage_disconnect(m_storage); 55 mailstorage_disconnect(m_storage);
56 mailstorage_free(m_storage); 56 mailstorage_free(m_storage);
57 m_storage = 0; 57 m_storage = 0;
58 } 58 }
59} 59}
60 60
61MHwrapper::~MHwrapper() 61MHwrapper::~MHwrapper()
62{ 62{
63 clean_storage(); 63 clean_storage();
64} 64}
65 65
66void MHwrapper::listMessages(const QString & mailbox, QValueList<Opie::Core::OSmartPointer<RecMail> > &target, int maxSizeInKb ) 66void MHwrapper::listMessages(const QString & mailbox, QValueList<Opie::Core::OSmartPointer<RecMail> > &target, int maxSizeInKb )
67{ 67{
68 qDebug("MHwrapper::listMessages ");
69 init_storage(); 68 init_storage();
70 if (!m_storage) { 69 if (!m_storage) {
71 return; 70 return;
72 } 71 }
73 QString f = buildPath(mailbox); 72 QString f = buildPath(mailbox);
74 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); 73 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1());
75 if (r!=MAIL_NO_ERROR) { 74 if (r!=MAIL_NO_ERROR) {
76 qDebug("listMessages: error selecting folder! "); 75 qDebug("listMessages: error selecting folder! ");
77 return; 76 return;
78 } 77 }
79 parseList(target,m_storage->sto_session,f, false, maxSizeInKb ); 78 parseList(target,m_storage->sto_session,f, false, maxSizeInKb );
80 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); 79 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count()));
81} 80}
82 81
83QValueList<Opie::Core::OSmartPointer<Folder> >* MHwrapper::listFolders() 82QValueList<Opie::Core::OSmartPointer<Folder> >* MHwrapper::listFolders()
84{ 83{
85 QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<Opie::Core::OSmartPointer<Folder> >(); 84 QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<Opie::Core::OSmartPointer<Folder> >();
86 /* this is needed! */ 85 /* this is needed! */
87 if (m_storage) mailstorage_disconnect(m_storage); 86 if (m_storage) mailstorage_disconnect(m_storage);
88 init_storage(); 87 init_storage();
89 if (!m_storage) { 88 if (!m_storage) {
90 return folders; 89 return folders;
91 } 90 }
92 mail_list*flist = 0; 91 mail_list*flist = 0;
93 clistcell*current=0; 92 clistcell*current=0;
94 int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist); 93 int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist);
95 if (r != MAIL_NO_ERROR || !flist) { 94 if (r != MAIL_NO_ERROR || !flist) {
96 qDebug("error getting folder list "); 95 qDebug("error getting folder list ");
97 return folders; 96 return folders;
98 } 97 }
99 for (current=clist_begin(flist->mb_list);current!=0;current=clist_next(current)) { 98 for (current=clist_begin(flist->mb_list);current!=0;current=clist_next(current)) {
100 QString t = (char*)current->data; 99 QString t = (char*)current->data;
101 t.replace(0,MHPath.length(),""); 100 t.replace(0,MHPath.length(),"");
102 folders->append(new MHFolder(t,MHPath)); 101 folders->append(new MHFolder(t,MHPath));
103 } 102 }
104 mail_list_free(flist); 103 mail_list_free(flist);
105 return folders; 104 return folders;
106} 105}
107 106
108void MHwrapper::deleteMail(const RecMailP&mail) 107void MHwrapper::deleteMail(const RecMailP&mail)
109{ 108{
110 init_storage(); 109 init_storage();
111 if (!m_storage) { 110 if (!m_storage) {
112 return; 111 return;
113 } 112 }
114 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); 113 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1());
115 if (r!=MAIL_NO_ERROR) { 114 if (r!=MAIL_NO_ERROR) {
116 qDebug("error selecting folder! "); 115 qDebug("error selecting folder! ");
117 return; 116 return;
118 } 117 }
119 r = mailsession_remove_message(m_storage->sto_session,mail->getNumber()); 118 r = mailsession_remove_message(m_storage->sto_session,mail->getNumber());
120 if (r != MAIL_NO_ERROR) { 119 if (r != MAIL_NO_ERROR) {
121 qDebug("error deleting mail "); 120 qDebug("error deleting mail ");
122 } 121 }
123} 122}
124 123
125void MHwrapper::answeredMail(const RecMailP&) 124void MHwrapper::answeredMail(const RecMailP&)
126{ 125{
127} 126}
128 127
129RecBodyP MHwrapper::fetchBody( const RecMailP &mail ) 128RecBodyP MHwrapper::fetchBody( const RecMailP &mail )
130{ 129{
131 RecBodyP body = new RecBody(); 130 RecBodyP body = new RecBody();
132 init_storage(); 131 init_storage();
133 if (!m_storage) { 132 if (!m_storage) {
134 return body; 133 return body;
135 } 134 }
136 mailmessage * msg; 135 mailmessage * msg;
137 char*data=0; 136 char*data=0;
138 137
139 /* mail should hold the complete path! */ 138 /* mail should hold the complete path! */
140 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); 139 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1());
141 if (r != MAIL_NO_ERROR) { 140 if (r != MAIL_NO_ERROR) {
142 return body; 141 return body;
143 } 142 }
144 r = mailsession_get_message(m_storage->sto_session, mail->getNumber(), &msg); 143 r = mailsession_get_message(m_storage->sto_session, mail->getNumber(), &msg);
145 if (r != MAIL_NO_ERROR) { 144 if (r != MAIL_NO_ERROR) {
146 qDebug("Error fetching mail "); 145 qDebug("Error fetching mail ");
147 146
148 return body; 147 return body;
149 } 148 }
150 body = parseMail(msg); 149 body = parseMail(msg);
151 mailmessage_fetch_result_free(msg,data); 150 mailmessage_fetch_result_free(msg,data);
152 return body; 151 return body;
153} 152}
154 153
155void MHwrapper::mbox_progress( size_t current, size_t maximum ) 154void MHwrapper::mbox_progress( size_t current, size_t maximum )
156{ 155{
157 qDebug("MBox Progress %d of %d",current,maximum ); 156 qDebug("MBox Progress %d of %d",current,maximum );
158 //odebug << "MH " << current << " von " << maximum << "" << oendl; 157 //odebug << "MH " << current << " von " << maximum << "" << oendl;
159} 158}
160 159
161QString MHwrapper::buildPath(const QString&p) 160QString MHwrapper::buildPath(const QString&p)
162{ 161{
163 QString f=""; 162 QString f="";
164 if (p.length()==0||p=="/") 163 if (p.length()==0||p=="/")
165 return MHPath; 164 return MHPath;
166 if (!p.startsWith(MHPath)) { 165 if (!p.startsWith(MHPath)) {
167 f+=MHPath; 166 f+=MHPath;
168 } 167 }
169 if (!p.startsWith("/")) { 168 if (!p.startsWith("/")) {
170 f+="/"; 169 f+="/";
171 } 170 }
172 f+=p; 171 f+=p;
173 return f; 172 return f;
174} 173}
175 174
176int MHwrapper::createMbox(const QString&folder,const FolderP&pfolder,const QString&,bool ) 175int MHwrapper::createMbox(const QString&folder,const FolderP&pfolder,const QString&,bool )
177{ 176{
178 init_storage(); 177 init_storage();
179 if (!m_storage) { 178 if (!m_storage) {
180 return 0; 179 return 0;
181 } 180 }
182 QString f; 181 QString f;
183 if (!pfolder) { 182 if (!pfolder) {
184 // toplevel folder 183 // toplevel folder
185 f = buildPath(folder); 184 f = buildPath(folder);
186 } else { 185 } else {
187 f = pfolder->getName(); 186 f = pfolder->getName();
188 f+="/"; 187 f+="/";
189 f+=folder; 188 f+=folder;
190 } 189 }
191 190
192 int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1()); 191 int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1());
193 if (r != MAIL_NO_ERROR) { 192 if (r != MAIL_NO_ERROR) {
194 qDebug("error creating folder "); 193 qDebug("error creating folder ");
195 return 0; 194 return 0;
196 } 195 }
197 qDebug("Folder created ");
198 return 1; 196 return 1;
199} 197}
200 198
201void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder) 199void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder)
202{ 200{
203 init_storage(); 201 init_storage();
204 if (!m_storage) { 202 if (!m_storage) {
205 return; 203 return;
206 } 204 }
207 QString f = buildPath(Folder); 205 QString f = buildPath(Folder);
208 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); 206 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1());
209 if (r!=MAIL_NO_ERROR) { 207 if (r!=MAIL_NO_ERROR) {
210 qDebug("error selecting folder! "); 208 qDebug("error selecting folder! ");
211 return; 209 return;
212 } 210 }
213 r = mailsession_append_message(m_storage->sto_session,(char*)msg,length); 211 r = mailsession_append_message(m_storage->sto_session,(char*)msg,length);
214 if (r!=MAIL_NO_ERROR) { 212 if (r!=MAIL_NO_ERROR) {
215 qDebug("error storing mail "); 213 qDebug("error storing mail ");
216 } 214 }
217 return; 215 return;
218} 216}
219 217
220encodedString* MHwrapper::fetchRawBody(const RecMailP&mail) 218encodedString* MHwrapper::fetchRawBody(const RecMailP&mail)
221{ 219{
222 encodedString*result = 0; 220 encodedString*result = 0;
223 init_storage(); 221 init_storage();
224 if (!m_storage) { 222 if (!m_storage) {
225 return result; 223 return result;
226 } 224 }
227 mailmessage * msg = 0; 225 mailmessage * msg = 0;
228 char*data=0; 226 char*data=0;
229 size_t size; 227 size_t size;
230 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); 228 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1());
231 if (r!=MAIL_NO_ERROR) { 229 if (r!=MAIL_NO_ERROR) {
232 qDebug("error selecting folder! "); 230 qDebug("error selecting folder! ");
233 return result; 231 return result;
234 } 232 }
235 r = mailsession_get_message(m_storage->sto_session, mail->getNumber(), &msg); 233 r = mailsession_get_message(m_storage->sto_session, mail->getNumber(), &msg);
236 if (r != MAIL_NO_ERROR) { 234 if (r != MAIL_NO_ERROR) {
237 Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber())); 235 Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber()));
238 return 0; 236 return 0;
239 } 237 }
240 r = mailmessage_fetch(msg,&data,&size); 238 r = mailmessage_fetch(msg,&data,&size);
241 if (r != MAIL_NO_ERROR) { 239 if (r != MAIL_NO_ERROR) {
242 Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber())); 240 Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber()));
243 if (msg) mailmessage_free(msg); 241 if (msg) mailmessage_free(msg);
244 return 0; 242 return 0;
245 } 243 }
246 result = new encodedString(data,size); 244 result = new encodedString(data,size);
247 if (msg) mailmessage_free(msg); 245 if (msg) mailmessage_free(msg);
248 return result; 246 return result;
249} 247}
250 248
251void MHwrapper::deleteMails(const QString & mailbox,const QValueList<RecMailP> &target) 249void MHwrapper::deleteMails(const QString & mailbox,const QValueList<RecMailP> &target)
252{ 250{
253 QString f = buildPath(mailbox); 251 QString f = buildPath(mailbox);
254 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); 252 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1());
255 if (r!=MAIL_NO_ERROR) { 253 if (r!=MAIL_NO_ERROR) {
256 qDebug("deleteMails: error selecting folder! "); 254 qDebug("deleteMails: error selecting folder! ");
257 return; 255 return;
258 } 256 }
259 QValueList<RecMailP>::ConstIterator it; 257 QValueList<RecMailP>::ConstIterator it;
260 for (it=target.begin(); it!=target.end();++it) { 258 for (it=target.begin(); it!=target.end();++it) {
261 r = mailsession_remove_message(m_storage->sto_session,(*it)->getNumber()); 259 r = mailsession_remove_message(m_storage->sto_session,(*it)->getNumber());
262 if (r != MAIL_NO_ERROR) { 260 if (r != MAIL_NO_ERROR) {
263 qDebug("error deleting mail "); 261 qDebug("error deleting mail ");
264 break; 262 break;
265 } 263 }
266 } 264 }
267} 265}
268 266
269int MHwrapper::deleteAllMail(const FolderP&tfolder) 267int MHwrapper::deleteAllMail(const FolderP&tfolder)
270{ 268{
271 init_storage(); 269 init_storage();
272 if (!m_storage) { 270 if (!m_storage) {
273 return 0; 271 return 0;
274 } 272 }
275 int res = 1; 273 int res = 1;
276 if (!tfolder) return 0; 274 if (!tfolder) return 0;
277 int r = mailsession_select_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); 275 int r = mailsession_select_folder(m_storage->sto_session,(char*)tfolder->getName().latin1());
278 if (r!=MAIL_NO_ERROR) { 276 if (r!=MAIL_NO_ERROR) {
279 qDebug("error selecting folder! "); 277 qDebug("error selecting folder! ");
280 return 0; 278 return 0;
281 } 279 }
282 mailmessage_list*l=0; 280 mailmessage_list*l=0;
283 r = mailsession_get_messages_list(m_storage->sto_session,&l); 281 r = mailsession_get_messages_list(m_storage->sto_session,&l);
284 if (r != MAIL_NO_ERROR) { 282 if (r != MAIL_NO_ERROR) {
285 qDebug("Error message list "); 283 qDebug("Error message list ");
286 res = 0; 284 res = 0;
287 } 285 }
288 unsigned j = 0; 286 unsigned j = 0;
289 for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) { 287 for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) {
290 mailmessage * msg; 288 mailmessage * msg;
291 msg = (mailmessage*)carray_get(l->msg_tab, i); 289 msg = (mailmessage*)carray_get(l->msg_tab, i);
292 j = msg->msg_index; 290 j = msg->msg_index;
293 r = mailsession_remove_message(m_storage->sto_session,j); 291 r = mailsession_remove_message(m_storage->sto_session,j);
diff --git a/kmicromail/libmailwrapper/settings.cpp b/kmicromail/libmailwrapper/settings.cpp
index 766eba0..40b5591 100644
--- a/kmicromail/libmailwrapper/settings.cpp
+++ b/kmicromail/libmailwrapper/settings.cpp
@@ -1,317 +1,315 @@
1#include <stdlib.h> 1#include <stdlib.h>
2#include <qdir.h> 2#include <qdir.h>
3 3
4//#include <opie2/odebug.h> 4//#include <opie2/odebug.h>
5#include <kconfig.h> 5#include <kconfig.h>
6 6
7#include <kstandarddirs.h> 7#include <kstandarddirs.h>
8#include "settings.h" 8#include "settings.h"
9//#include "defines.h" 9//#include "defines.h"
10 10
11#define IMAP_PORT "143" 11#define IMAP_PORT "143"
12#define IMAP_SSL_PORT "993" 12#define IMAP_SSL_PORT "993"
13#define SMTP_PORT "25" 13#define SMTP_PORT "25"
14#define SMTP_SSL_PORT "465" 14#define SMTP_SSL_PORT "465"
15#define POP3_PORT "110" 15#define POP3_PORT "110"
16#define POP3_SSL_PORT "995" 16#define POP3_SSL_PORT "995"
17#define NNTP_PORT "119" 17#define NNTP_PORT "119"
18#define NNTP_SSL_PORT "563" 18#define NNTP_SSL_PORT "563"
19 19
20 20
21Settings::Settings() 21Settings::Settings()
22 : QObject() 22 : QObject()
23{ 23{
24 updateAccounts(); 24 updateAccounts();
25} 25}
26 26
27void Settings::checkDirectory() 27void Settings::checkDirectory()
28{ 28{
29 qDebug("Settings::checkDirectory() ");
30 return; 29 return;
31 locateLocal("data", "kopiemail" ); 30 locateLocal("data", "kopiemail" );
32 /* 31 /*
33 if ( !QDir( (QString) getenv( "HOME" ) + "/Applications/opiemail/" ).exists() ) { 32 if ( !QDir( (QString) getenv( "HOME" ) + "/Applications/opiemail/" ).exists() ) {
34 system( "mkdir -p $HOME/Applications/opiemail" ); 33 system( "mkdir -p $HOME/Applications/opiemail" );
35 qDebug("$HOME/Applications/opiemail created "); 34 qDebug("$HOME/Applications/opiemail created ");
36 } 35 }
37 */ 36 */
38} 37}
39 38
40QList<Account> Settings::getAccounts() 39QList<Account> Settings::getAccounts()
41{ 40{
42 return accounts; 41 return accounts;
43} 42}
44 43
45void Settings::addAccount( Account *account ) 44void Settings::addAccount( Account *account )
46{ 45{
47 accounts.append( account ); 46 accounts.append( account );
48} 47}
49 48
50void Settings::delAccount( Account *account ) 49void Settings::delAccount( Account *account )
51{ 50{
52 accounts.remove( account ); 51 accounts.remove( account );
53 account->remove(); 52 account->remove();
54} 53}
55 54
56void Settings::updateAccounts() 55void Settings::updateAccounts()
57{ 56{
58 accounts.clear(); 57 accounts.clear();
59 QDir dir( locateLocal("data", "kopiemail" ) ); 58 QDir dir( locateLocal("data", "kopiemail" ) );
60 QStringList::Iterator it; 59 QStringList::Iterator it;
61 60
62 QStringList imap = dir.entryList( "imap-*" ); 61 QStringList imap = dir.entryList( "imap-*" );
63 for ( it = imap.begin(); it != imap.end(); it++ ) { 62 for ( it = imap.begin(); it != imap.end(); it++ ) {
64 IMAPaccount *account = new IMAPaccount( (*it).replace(0, 5, "") ); 63 IMAPaccount *account = new IMAPaccount( (*it).replace(0, 5, "") );
65 accounts.append( account ); 64 accounts.append( account );
66 } 65 }
67 66
68 QStringList pop3 = dir.entryList( "pop3-*" ); 67 QStringList pop3 = dir.entryList( "pop3-*" );
69 for ( it = pop3.begin(); it != pop3.end(); it++ ) { 68 for ( it = pop3.begin(); it != pop3.end(); it++ ) {
70 POP3account *account = new POP3account( (*it).replace(0, 5, "") ); 69 POP3account *account = new POP3account( (*it).replace(0, 5, "") );
71 accounts.append( account ); 70 accounts.append( account );
72 } 71 }
73 72
74 QStringList smtp = dir.entryList( "smtp-*" ); 73 QStringList smtp = dir.entryList( "smtp-*" );
75 for ( it = smtp.begin(); it != smtp.end(); it++ ) { 74 for ( it = smtp.begin(); it != smtp.end(); it++ ) {
76 SMTPaccount *account = new SMTPaccount( (*it).replace(0, 5, "") ); 75 SMTPaccount *account = new SMTPaccount( (*it).replace(0, 5, "") );
77 accounts.append( account ); 76 accounts.append( account );
78 } 77 }
79 78
80 QStringList nntp = dir.entryList( "nntp-*" ); 79 QStringList nntp = dir.entryList( "nntp-*" );
81 for ( it = nntp.begin(); it != nntp.end(); it++ ) { 80 for ( it = nntp.begin(); it != nntp.end(); it++ ) {
82 NNTPaccount *account = new NNTPaccount( (*it).replace(0, 5, "") ); 81 NNTPaccount *account = new NNTPaccount( (*it).replace(0, 5, "") );
83 accounts.append( account ); 82 accounts.append( account );
84 } 83 }
85 84
86 readAccounts(); 85 readAccounts();
87} 86}
88 87
89void Settings::saveAccounts() 88void Settings::saveAccounts()
90{ 89{
91 checkDirectory(); 90 checkDirectory();
92 Account *it; 91 Account *it;
93 92
94 for ( it = accounts.first(); it; it = accounts.next() ) { 93 for ( it = accounts.first(); it; it = accounts.next() ) {
95 it->save(); 94 it->save();
96 } 95 }
97} 96}
98 97
99void Settings::readAccounts() 98void Settings::readAccounts()
100{ 99{
101 checkDirectory(); 100 checkDirectory();
102 Account *it; 101 Account *it;
103 102
104 for ( it = accounts.first(); it; it = accounts.next() ) { 103 for ( it = accounts.first(); it; it = accounts.next() ) {
105 it->read(); 104 it->read();
106 } 105 }
107} 106}
108 107
109Account::Account() 108Account::Account()
110{ 109{
111 accountName = "changeMe"; 110 accountName = "changeMe";
112 type = MAILLIB::A_UNDEFINED; 111 type = MAILLIB::A_UNDEFINED;
113 ssl = false; 112 ssl = false;
114 connectionType = 1; 113 connectionType = 1;
115 offline = false; 114 offline = false;
116 maxMailSize = 0; 115 maxMailSize = 0;
117 lastFetch; 116 lastFetch;
118 leaveOnServer = false; 117 leaveOnServer = false;
119} 118}
120 119
121void Account::remove() 120void Account::remove()
122{ 121{
123 QFile file( getFileName() ); 122 QFile file( getFileName() );
124 file.remove(); 123 file.remove();
125} 124}
126 125
127void Account::setPasswordList(const QStringList &str) 126void Account::setPasswordList(const QStringList &str)
128{ 127{
129 password = ""; 128 password = "";
130 int i; 129 int i;
131 for ( i = 0; i < str.count() ; ++i ) { 130 for ( i = 0; i < str.count() ; ++i ) {
132 QChar c ( (str[i].toUInt()-131)/(str.count()- (i%3))); 131 QChar c ( (str[i].toUInt()-131)/(str.count()- (i%3)));
133 password.append( c ); 132 password.append( c );
134 } 133 }
135 //qDebug("password %s ", password.latin1()); 134 //qDebug("password %s ", password.latin1());
136} 135}
137QStringList Account::getPasswordList() 136QStringList Account::getPasswordList()
138{ 137{
139 int i; 138 int i;
140 int len = password.length(); 139 int len = password.length();
141 QStringList str; 140 QStringList str;
142 141
143 for ( i = 0; i < len ; ++i ) { 142 for ( i = 0; i < len ; ++i ) {
144 int val = password.at(i).unicode()*(len-(i%3))+131; 143 int val = password.at(i).unicode()*(len-(i%3))+131;
145 str.append( QString::number( val ) ); 144 str.append( QString::number( val ) );
146 // qDebug("append %s ", str[i].latin1()); 145 // qDebug("append %s ", str[i].latin1());
147 } 146 }
148 return str; 147 return str;
149} 148}
150 149
151IMAPaccount::IMAPaccount() 150IMAPaccount::IMAPaccount()
152 : Account() 151 : Account()
153{ 152{
154 file = IMAPaccount::getUniqueFileName(); 153 file = IMAPaccount::getUniqueFileName();
155 accountName = "New IMAP Account"; 154 accountName = "New IMAP Account";
156 ssl = false; 155 ssl = false;
157 connectionType = 1; 156 connectionType = 1;
158 type = MAILLIB::A_IMAP; 157 type = MAILLIB::A_IMAP;
159 port = IMAP_PORT; 158 port = IMAP_PORT;
160} 159}
161 160
162IMAPaccount::IMAPaccount( QString filename ) 161IMAPaccount::IMAPaccount( QString filename )
163 : Account() 162 : Account()
164{ 163{
165 file = filename; 164 file = filename;
166 accountName = "New IMAP Account"; 165 accountName = "New IMAP Account";
167 ssl = false; 166 ssl = false;
168 connectionType = 1; 167 connectionType = 1;
169 type = MAILLIB::A_IMAP; 168 type = MAILLIB::A_IMAP;
170 port = IMAP_PORT; 169 port = IMAP_PORT;
171} 170}
172 171
173QString IMAPaccount::getUniqueFileName() 172QString IMAPaccount::getUniqueFileName()
174{ 173{
175 int num = 0; 174 int num = 0;
176 QString unique; 175 QString unique;
177 176
178 QDir dir( locateLocal("data", "kopiemail" ) ); 177 QDir dir( locateLocal("data", "kopiemail" ) );
179 178
180 QStringList imap = dir.entryList( "imap-*" ); 179 QStringList imap = dir.entryList( "imap-*" );
181 do { 180 do {
182 unique.setNum( num++ ); 181 unique.setNum( num++ );
183 } while ( imap.contains( "imap-" + unique ) > 0 ); 182 } while ( imap.contains( "imap-" + unique ) > 0 );
184 183
185 return unique; 184 return unique;
186} 185}
187 186
188void IMAPaccount::read() 187void IMAPaccount::read()
189{ 188{
190 KConfig *conf = new KConfig( getFileName() ); 189 KConfig *conf = new KConfig( getFileName() );
191 conf->setGroup( "IMAP Account" ); 190 conf->setGroup( "IMAP Account" );
192 accountName = conf->readEntry( "Account","" ); 191 accountName = conf->readEntry( "Account","" );
193 if (accountName.isNull()) accountName = ""; 192 if (accountName.isNull()) accountName = "";
194 server = conf->readEntry( "Server","" ); 193 server = conf->readEntry( "Server","" );
195 if (server.isNull()) server=""; 194 if (server.isNull()) server="";
196 port = conf->readEntry( "Port","" ); 195 port = conf->readEntry( "Port","" );
197 if (port.isNull()) port="143"; 196 if (port.isNull()) port="143";
198 connectionType = conf->readNumEntry( "ConnectionType" ); 197 connectionType = conf->readNumEntry( "ConnectionType" );
199 ssl = conf->readBoolEntry( "SSL",false ); 198 ssl = conf->readBoolEntry( "SSL",false );
200 user = conf->readEntry( "User","" ); 199 user = conf->readEntry( "User","" );
201 if (user.isNull()) user = ""; 200 if (user.isNull()) user = "";
202 //password = conf->readEntryCrypt( "Password","" ); 201 //password = conf->readEntryCrypt( "Password","" );
203 setPasswordList( conf->readListEntry( "FolderHistory")); 202 setPasswordList( conf->readListEntry( "FolderHistory"));
204 if (password.isNull()) password = ""; 203 if (password.isNull()) password = "";
205 prefix = conf->readEntry("MailPrefix",""); 204 prefix = conf->readEntry("MailPrefix","");
206 if (prefix.isNull()) prefix = ""; 205 if (prefix.isNull()) prefix = "";
207 offline = conf->readBoolEntry("Offline",false); 206 offline = conf->readBoolEntry("Offline",false);
208 localFolder = conf->readEntry( "LocalFolder" ); 207 localFolder = conf->readEntry( "LocalFolder" );
209 maxMailSize = conf->readNumEntry( "MaxSize",0 ); 208 maxMailSize = conf->readNumEntry( "MaxSize",0 );
210 int lf = conf->readNumEntry( "LastFetch",0 ); 209 int lf = conf->readNumEntry( "LastFetch",0 );
211 QDateTime dt ( QDate ( 2004, 1, 1 ), QTime( 0,0,0) ); 210 QDateTime dt ( QDate ( 2004, 1, 1 ), QTime( 0,0,0) );
212 leaveOnServer = conf->readBoolEntry("LeaveOnServer",false); 211 leaveOnServer = conf->readBoolEntry("LeaveOnServer",false);
213 qDebug("reading last fetch: %d ", lf);
214 if ( lf < 0 ) lf = 0; 212 if ( lf < 0 ) lf = 0;
215 lastFetch = dt.addSecs( lf ); 213 lastFetch = dt.addSecs( lf );
216 delete conf; 214 delete conf;
217} 215}
218 216
219void IMAPaccount::save() 217void IMAPaccount::save()
220{ 218{
221 qDebug("saving %s ",getFileName().latin1() ); 219
222 Settings::checkDirectory(); 220 Settings::checkDirectory();
223 221
224 KConfig *conf = new KConfig( getFileName() ); 222 KConfig *conf = new KConfig( getFileName() );
225 conf->setGroup( "IMAP Account" ); 223 conf->setGroup( "IMAP Account" );
226 conf->writeEntry( "Account", accountName ); 224 conf->writeEntry( "Account", accountName );
227 conf->writeEntry( "Server", server ); 225 conf->writeEntry( "Server", server );
228 conf->writeEntry( "Port", port ); 226 conf->writeEntry( "Port", port );
229 conf->writeEntry( "SSL", ssl ); 227 conf->writeEntry( "SSL", ssl );
230 conf->writeEntry( "ConnectionType", connectionType ); 228 conf->writeEntry( "ConnectionType", connectionType );
231 conf->writeEntry( "User", user ); 229 conf->writeEntry( "User", user );
232 //conf->writeEntryCrypt( "Password", password ); 230 //conf->writeEntryCrypt( "Password", password );
233 conf->writeEntry( "FolderHistory",getPasswordList() ); 231 conf->writeEntry( "FolderHistory",getPasswordList() );
234 conf->writeEntry( "MailPrefix",prefix); 232 conf->writeEntry( "MailPrefix",prefix);
235 conf->writeEntry( "Offline",offline); 233 conf->writeEntry( "Offline",offline);
236 conf->writeEntry( "LocalFolder", localFolder ); 234 conf->writeEntry( "LocalFolder", localFolder );
237 conf->writeEntry( "MaxSize", maxMailSize ); 235 conf->writeEntry( "MaxSize", maxMailSize );
238 QDateTime dt ( QDate ( 2004, 1, 1 ), QTime( 0,0,0) ); 236 QDateTime dt ( QDate ( 2004, 1, 1 ), QTime( 0,0,0) );
239 int lf = dt.secsTo ( lastFetch ); 237 int lf = dt.secsTo ( lastFetch );
240 conf->writeEntry( "LastFetch", lf ); 238 conf->writeEntry( "LastFetch", lf );
241 conf->writeEntry( "LeaveOnServer", leaveOnServer); 239 conf->writeEntry( "LeaveOnServer", leaveOnServer);
242 conf->sync(); 240 conf->sync();
243 delete conf; 241 delete conf;
244} 242}
245 243
246 244
247QString IMAPaccount::getFileName() 245QString IMAPaccount::getFileName()
248{ 246{
249 return locateLocal("data", "kopiemail" ) +"/imap-" + file; 247 return locateLocal("data", "kopiemail" ) +"/imap-" + file;
250} 248}
251 249
252POP3account::POP3account() 250POP3account::POP3account()
253 : Account() 251 : Account()
254{ 252{
255 file = POP3account::getUniqueFileName(); 253 file = POP3account::getUniqueFileName();
256 accountName = "New POP3 Account"; 254 accountName = "New POP3 Account";
257 ssl = false; 255 ssl = false;
258 connectionType = 1; 256 connectionType = 1;
259 type = MAILLIB::A_POP3; 257 type = MAILLIB::A_POP3;
260 port = POP3_PORT; 258 port = POP3_PORT;
261} 259}
262 260
263POP3account::POP3account( QString filename ) 261POP3account::POP3account( QString filename )
264 : Account() 262 : Account()
265{ 263{
266 file = filename; 264 file = filename;
267 accountName = "New POP3 Account"; 265 accountName = "New POP3 Account";
268 ssl = false; 266 ssl = false;
269 connectionType = 1; 267 connectionType = 1;
270 type = MAILLIB::A_POP3; 268 type = MAILLIB::A_POP3;
271 port = POP3_PORT; 269 port = POP3_PORT;
272} 270}
273 271
274QString POP3account::getUniqueFileName() 272QString POP3account::getUniqueFileName()
275{ 273{
276 int num = 0; 274 int num = 0;
277 QString unique; 275 QString unique;
278 276
279 QDir dir( locateLocal("data", "kopiemail" ) ); 277 QDir dir( locateLocal("data", "kopiemail" ) );
280 278
281 QStringList imap = dir.entryList( "pop3-*" ); 279 QStringList imap = dir.entryList( "pop3-*" );
282 do { 280 do {
283 unique.setNum( num++ ); 281 unique.setNum( num++ );
284 } while ( imap.contains( "pop3-" + unique ) > 0 ); 282 } while ( imap.contains( "pop3-" + unique ) > 0 );
285 283
286 return unique; 284 return unique;
287} 285}
288 286
289void POP3account::read() 287void POP3account::read()
290{ 288{
291 KConfig *conf = new KConfig( getFileName()); 289 KConfig *conf = new KConfig( getFileName());
292 conf->setGroup( "POP3 Account" ); 290 conf->setGroup( "POP3 Account" );
293 accountName = conf->readEntry( "Account" ); 291 accountName = conf->readEntry( "Account" );
294 server = conf->readEntry( "Server" ); 292 server = conf->readEntry( "Server" );
295 port = conf->readEntry( "Port" ); 293 port = conf->readEntry( "Port" );
296 ssl = conf->readBoolEntry( "SSL" ); 294 ssl = conf->readBoolEntry( "SSL" );
297 connectionType = conf->readNumEntry( "ConnectionType" ); 295 connectionType = conf->readNumEntry( "ConnectionType" );
298 user = conf->readEntry( "User" ); 296 user = conf->readEntry( "User" );
299 //password = conf->readEntryCrypt( "Password" ); 297 //password = conf->readEntryCrypt( "Password" );
300 setPasswordList( conf->readListEntry( "FolderHistory")); 298 setPasswordList( conf->readListEntry( "FolderHistory"));
301 offline = conf->readBoolEntry("Offline",false); 299 offline = conf->readBoolEntry("Offline",false);
302 localFolder = conf->readEntry( "LocalFolder" ); 300 localFolder = conf->readEntry( "LocalFolder" );
303 maxMailSize = conf->readNumEntry( "MaxSize",0 ); 301 maxMailSize = conf->readNumEntry( "MaxSize",0 );
304 int lf = conf->readNumEntry( "LastFetch",0 ); 302 int lf = conf->readNumEntry( "LastFetch",0 );
305 QDateTime dt ( QDate ( 2004, 1, 1 ), QTime( 0,0,0) ); 303 QDateTime dt ( QDate ( 2004, 1, 1 ), QTime( 0,0,0) );
306 leaveOnServer = conf->readBoolEntry("LeaveOnServer",false); 304 leaveOnServer = conf->readBoolEntry("LeaveOnServer",false);
307 lastFetch = dt.addSecs( lf ); 305 lastFetch = dt.addSecs( lf );
308 delete conf; 306 delete conf;
309} 307}
310 308
311void POP3account::save() 309void POP3account::save()
312{ 310{
313 Settings::checkDirectory(); 311 Settings::checkDirectory();
314 312
315 KConfig *conf = new KConfig( getFileName() ); 313 KConfig *conf = new KConfig( getFileName() );
316 conf->setGroup( "POP3 Account" ); 314 conf->setGroup( "POP3 Account" );
317 conf->writeEntry( "Account", accountName ); 315 conf->writeEntry( "Account", accountName );
diff --git a/kmicromail/mainwindow.cpp b/kmicromail/mainwindow.cpp
index 21edfd2..5f777a3 100644
--- a/kmicromail/mainwindow.cpp
+++ b/kmicromail/mainwindow.cpp
@@ -1,134 +1,139 @@
1 1
2// CHANGED 2004-08-06 Lutz Rogowski 2// CHANGED 2004-08-06 Lutz Rogowski
3#include <qlabel.h> 3#include <qlabel.h>
4#include <qvbox.h> 4#include <qvbox.h>
5#include <qheader.h> 5#include <qheader.h>
6#include <qtimer.h> 6#include <qtimer.h>
7#include <qlayout.h> 7#include <qlayout.h>
8#include <kdialog.h> 8#include <kdialog.h>
9#include <kiconloader.h> 9#include <kiconloader.h>
10#include <kapplication.h> 10#include <kapplication.h>
11 11
12#ifndef DESKTOP_VERSION 12#ifndef DESKTOP_VERSION
13#include <qpe/qpeapplication.h> 13#include <qpe/qpeapplication.h>
14#endif 14#endif
15#include "defines.h" 15#include "defines.h"
16#include "mainwindow.h" 16#include "mainwindow.h"
17#include <KDGanttMinimizeSplitter.h> 17#include <KDGanttMinimizeSplitter.h>
18 18
19 19
20#include <kabc/stdaddressbook.h> 20#include <kabc/stdaddressbook.h>
21 21
22MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) 22MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
23 : QMainWindow( parent, name ) //, flags ) 23 : QMainWindow( parent, name ) //, flags )
24{ 24{
25 setCaption( tr( "KOpieMail/Pi" ) ); 25 setCaption( tr( "KOpieMail/Pi" ) );
26 setToolBarsMovable( false ); 26 setToolBarsMovable( false );
27 //KABC::StdAddressBook::self(); 27 //KABC::StdAddressBook::self();
28 toolBar = new QToolBar( this ); 28 toolBar = new QToolBar( this );
29 menuBar = new QPEMenuBar( toolBar ); 29 menuBar = new QPEMenuBar( toolBar );
30 mailMenu = new QPopupMenu( menuBar ); 30 mailMenu = new QPopupMenu( menuBar );
31 menuBar->insertItem( tr( "Mail" ), mailMenu ); 31 menuBar->insertItem( tr( "Mail" ), mailMenu );
32 settingsMenu = new QPopupMenu( menuBar ); 32 settingsMenu = new QPopupMenu( menuBar );
33 menuBar->insertItem( tr( "Settings" ), settingsMenu ); 33 menuBar->insertItem( tr( "Settings" ), settingsMenu );
34 34
35 addToolBar( toolBar ); 35 addToolBar( toolBar );
36 toolBar->setHorizontalStretchable( true ); 36 toolBar->setHorizontalStretchable( true );
37 37
38 38 QAction* getMail = new QAction( tr( "Get new mail" ), SmallIcon("add"),
39 0, 0, this );
40 getMail->addTo( toolBar );
41 getMail->addTo( mailMenu );
42 connect(getMail, SIGNAL( activated() ),
43 SLOT( slotGetMail() ) );
39 44
40 composeMail = new QAction( tr( "Compose new mail" ), SmallIcon("composemail"), 45 composeMail = new QAction( tr( "Compose new mail" ), SmallIcon("composemail"),
41 0, 0, this ); 46 0, 0, this );
42 composeMail->addTo( toolBar ); 47 composeMail->addTo( toolBar );
43 composeMail->addTo( mailMenu ); 48 composeMail->addTo( mailMenu );
44 49
45 sendQueued = new QAction( tr( "Send queued mails" ), SmallIcon("sendqueued") , 50 sendQueued = new QAction( tr( "Send queued mails" ), SmallIcon("sendqueued") ,
46 0, 0, this ); 51 0, 0, this );
47 sendQueued->addTo( toolBar ); 52 sendQueued->addTo( toolBar );
48 sendQueued->addTo( mailMenu ); 53 sendQueued->addTo( mailMenu );
49 54
50 /* 55 /*
51 syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC, 56 syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC,
52 0, 0, this ); 57 0, 0, this );
53 syncFolders->addTo( toolBar ); 58 syncFolders->addTo( toolBar );
54 syncFolders->addTo( mailMenu ); 59 syncFolders->addTo( mailMenu );
55 */ 60 */
56 61
57 showFolders = new QAction( tr( "Show/Hide folders" ), SmallIcon("showfolders") , 62 showFolders = new QAction( tr( "Show/Hide folders" ), SmallIcon("showfolders") ,
58 0, 0, this, 0, true ); 63 0, 0, this, 0, true );
59 showFolders->addTo( toolBar ); 64 showFolders->addTo( toolBar );
60 showFolders->addTo( mailMenu ); 65 showFolders->addTo( mailMenu );
61 showFolders->setOn( true ); 66 showFolders->setOn( true );
62 connect(showFolders, SIGNAL( toggled(bool) ), 67 connect(showFolders, SIGNAL( toggled(bool) ),
63 SLOT( slotShowFolders(bool) ) ); 68 SLOT( slotShowFolders(bool) ) );
64 69
65 /* 70 /*
66 searchMails = new QAction( tr( "Search mails" ), SmallIcon("find") ), 71 searchMails = new QAction( tr( "Search mails" ), SmallIcon("find") ),
67 0, 0, this ); 72 0, 0, this );
68 searchMails->addTo( toolBar ); 73 searchMails->addTo( toolBar );
69 searchMails->addTo( mailMenu ); 74 searchMails->addTo( mailMenu );
70 */ 75 */
71 76
72 deleteMails = new QAction(tr("Delete Mail"), SmallIcon("trash"), 0, 0, this); 77 deleteMails = new QAction(tr("Delete Mail"), SmallIcon("trash"), 0, 0, this);
73 deleteMails->addTo( toolBar ); 78 deleteMails->addTo( toolBar );
74 deleteMails->addTo( mailMenu ); 79 deleteMails->addTo( mailMenu );
75 connect( deleteMails, SIGNAL( activated() ), 80 connect( deleteMails, SIGNAL( activated() ),
76 SLOT( slotDeleteMail() ) ); 81 SLOT( slotDeleteMail() ) );
77 82
78 editSettings = new QAction( tr( "Edit settings" ), SmallIcon("SettingsIcon") , 83 editSettings = new QAction( tr( "Edit settings" ), SmallIcon("SettingsIcon") ,
79 0, 0, this ); 84 0, 0, this );
80 editSettings->addTo( settingsMenu ); 85 editSettings->addTo( settingsMenu );
81 connect( editSettings, SIGNAL( activated() ), 86 connect( editSettings, SIGNAL( activated() ),
82 SLOT( slotEditSettings() ) ); 87 SLOT( slotEditSettings() ) );
83 editAccounts = new QAction( tr( "Configure accounts" ), SmallIcon("editaccounts") , 88 editAccounts = new QAction( tr( "Configure accounts" ), SmallIcon("editaccounts") ,
84 0, 0, this ); 89 0, 0, this );
85 editAccounts->addTo( settingsMenu ); 90 editAccounts->addTo( settingsMenu );
86 91
87 //setCentralWidget( view ); 92 //setCentralWidget( view );
88 93
89 QVBox* wrapperBox = new QVBox( this ); 94 QVBox* wrapperBox = new QVBox( this );
90 setCentralWidget( wrapperBox ); 95 setCentralWidget( wrapperBox );
91 96
92 // QWidget *view = new QWidget( wrapperBox ); 97 // QWidget *view = new QWidget( wrapperBox );
93 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox); 98 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox);
94 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left); 99 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left);
95 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight ); 100 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight );
96 101
97 folderView = new AccountView( split ); 102 folderView = new AccountView( split );
98 folderView->header()->hide(); 103 folderView->header()->hide();
99 folderView->setRootIsDecorated( false ); 104 folderView->setRootIsDecorated( false );
100 folderView->addColumn( tr( "Mailbox" ) ); 105 folderView->addColumn( tr( "Mailbox" ) );
101 106
102 //layout->addWidget( folderView ); 107 //layout->addWidget( folderView );
103 108
104 mailView = new QListView( split ); 109 mailView = new QListView( split );
105 mailView->addColumn( tr( " " ) ); 110 mailView->addColumn( tr( " " ) );
106 mailView->addColumn( tr( "Subject" ),QListView::Manual ); 111 mailView->addColumn( tr( "Subject" ),QListView::Manual );
107 mailView->addColumn( tr( "Sender" ),QListView::Manual ); 112 mailView->addColumn( tr( "Sender" ),QListView::Manual );
108 mailView->addColumn( tr( "Size" ),QListView::Manual); 113 mailView->addColumn( tr( "Size" ),QListView::Manual);
109 mailView->addColumn( tr( "Date" ),QListView::Manual); 114 mailView->addColumn( tr( "Date" ),QListView::Manual);
110 mailView->setAllColumnsShowFocus(true); 115 mailView->setAllColumnsShowFocus(true);
111 //mailView->setSorting(-1); 116 //mailView->setSorting(-1);
112 mailView->setRootIsDecorated( false ); 117 mailView->setRootIsDecorated( false );
113 statusWidget = new StatusWidget( wrapperBox ); 118 statusWidget = new StatusWidget( wrapperBox );
114 statusWidget->hide(); 119 statusWidget->hide();
115 120
116 //layout->addWidget( mailView ); 121 //layout->addWidget( mailView );
117 //layout->setStretchFactor( folderView, 1 ); 122 //layout->setStretchFactor( folderView, 1 );
118 //layout->setStretchFactor( mailView, 2 ); 123 //layout->setStretchFactor( mailView, 2 );
119 124
120 slotAdjustLayout(); 125 slotAdjustLayout();
121#ifndef DESKTOP_VERSION 126#ifndef DESKTOP_VERSION
122 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); 127 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold);
123 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold); 128 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold);
124#endif 129#endif
125 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this, 130 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this,
126 SLOT( mailLeftClicked(QListViewItem*) ) ); 131 SLOT( mailLeftClicked(QListViewItem*) ) );
127 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this, 132 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this,
128 SLOT( mailLeftClicked(QListViewItem*) ) ); 133 SLOT( mailLeftClicked(QListViewItem*) ) );
129 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, 134 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this,
130 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) ); 135 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) );
131 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)), 136 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)),
132 this,SLOT(refreshMailView(const QValueList<RecMailP>&))); 137 this,SLOT(refreshMailView(const QValueList<RecMailP>&)));
133 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) ); 138 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) );
134 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) ); 139 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) );
diff --git a/kmicromail/mainwindow.h b/kmicromail/mainwindow.h
index 680f0a9..ff0ff20 100644
--- a/kmicromail/mainwindow.h
+++ b/kmicromail/mainwindow.h
@@ -1,65 +1,66 @@
1 1
2// CHANGED 2004-08-06 Lutz Rogowski 2// CHANGED 2004-08-06 Lutz Rogowski
3#ifndef MAINWINDOW_H 3#ifndef MAINWINDOW_H
4#define MAINWINDOW_H 4#define MAINWINDOW_H
5 5
6#include <qmainwindow.h> 6#include <qmainwindow.h>
7#include <qlistview.h> 7#include <qlistview.h>
8#include <qaction.h> 8#include <qaction.h>
9 9
10#include <qtoolbar.h> 10#include <qtoolbar.h>
11#ifdef DESKTOP_VERSION 11#ifdef DESKTOP_VERSION
12#include <qmenubar.h> 12#include <qmenubar.h>
13#else 13#else
14#include <qpe/qpemenubar.h> 14#include <qpe/qpemenubar.h>
15#endif 15#endif
16 16
17#include "accountview.h" 17#include "accountview.h"
18#include "statuswidget.h" 18#include "statuswidget.h"
19 19
20#include <libmailwrapper/mailtypes.h> 20#include <libmailwrapper/mailtypes.h>
21#include <opie2/osmartpointer.h> 21#include <opie2/osmartpointer.h>
22 22
23class RecMail; 23class RecMail;
24 24
25class MainWindow : public QMainWindow 25class MainWindow : public QMainWindow
26{ 26{
27 Q_OBJECT 27 Q_OBJECT
28 28
29public: 29public:
30 MainWindow( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); 30 MainWindow( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 );
31 virtual ~MainWindow(); 31 virtual ~MainWindow();
32 32
33public slots: 33public slots:
34 virtual void slotAdjustColumns(); 34 virtual void slotAdjustColumns();
35 virtual void appMessage(const QCString &msg, const QByteArray &data); 35 virtual void appMessage(const QCString &msg, const QByteArray &data);
36 virtual void slotComposeMail(); 36 virtual void slotComposeMail();
37 37
38protected slots: 38protected slots:
39 virtual void slotSendQueued(); 39 virtual void slotSendQueued();
40 virtual void slotEditAccounts(); 40 virtual void slotEditAccounts();
41 virtual void slotShowFolders( bool show ); 41 virtual void slotShowFolders( bool show );
42 virtual void refreshMailView(const QValueList<RecMailP>&); 42 virtual void refreshMailView(const QValueList<RecMailP>&);
43 virtual void displayMail(); 43 virtual void displayMail();
44 virtual void slotGetMail() = 0;
44 virtual void slotDeleteMail(); 45 virtual void slotDeleteMail();
45 virtual void mailHold(int, QListViewItem *,const QPoint&,int); 46 virtual void mailHold(int, QListViewItem *,const QPoint&,int);
46 virtual void slotAdjustLayout(); 47 virtual void slotAdjustLayout();
47 virtual void slotEditSettings(); 48 virtual void slotEditSettings();
48 virtual void mailLeftClicked( QListViewItem * ); 49 virtual void mailLeftClicked( QListViewItem * );
49 void showLicence(); 50 void showLicence();
50 void showAbout(); 51 void showAbout();
51 void showEtpanLicence(); 52 void showEtpanLicence();
52 53
53protected: 54protected:
54 QToolBar *toolBar; 55 QToolBar *toolBar;
55 StatusWidget *statusWidget; 56 StatusWidget *statusWidget;
56 QPEMenuBar *menuBar; 57 QPEMenuBar *menuBar;
57 QPopupMenu *mailMenu, *settingsMenu; 58 QPopupMenu *mailMenu, *settingsMenu;
58 QAction *composeMail, *sendQueued, *showFolders, *searchMails, *deleteMails, 59 QAction *composeMail, *sendQueued, *showFolders, *searchMails, *deleteMails,
59 *editSettings, *editAccounts, *syncFolders; 60 *editSettings, *editAccounts, *syncFolders;
60 AccountView *folderView; 61 AccountView *folderView;
61 QListView *mailView; 62 QListView *mailView;
62 //QBoxLayout *layout; 63 //QBoxLayout *layout;
63}; 64};
64 65
65#endif 66#endif
diff --git a/kmicromail/opiemail.cpp b/kmicromail/opiemail.cpp
index b2119e6..19ffdb3 100644
--- a/kmicromail/opiemail.cpp
+++ b/kmicromail/opiemail.cpp
@@ -1,107 +1,108 @@
1// CHANGED 2004-09-31 Lutz Rogowski 1// CHANGED 2004-09-31 Lutz Rogowski
2// CHANGED 2004-08-06 Lutz Rogowski 2// CHANGED 2004-08-06 Lutz Rogowski
3 3
4#include "settingsdialog.h" 4#include "settingsdialog.h"
5#include "opiemail.h" 5#include "opiemail.h"
6#include "editaccounts.h" 6#include "editaccounts.h"
7#include "composemail.h" 7#include "composemail.h"
8#include "mailistviewitem.h" 8#include "mailistviewitem.h"
9#include "viewmail.h" 9#include "viewmail.h"
10#include "selectstore.h" 10#include "selectstore.h"
11#include "selectsmtp.h" 11#include "selectsmtp.h"
12#include "accountitem.h"
12 13
13#include <qmessagebox.h> 14#include <qmessagebox.h>
14#include <qtimer.h> 15#include <qtimer.h>
15#include <libkdepim/externalapphandler.h> 16#include <libkdepim/externalapphandler.h>
16 17
17#include <qpe/qpeapplication.h> 18#include <qpe/qpeapplication.h>
18#include <libmailwrapper/smtpwrapper.h> 19#include <libmailwrapper/smtpwrapper.h>
19#include <libmailwrapper/mailtypes.h> 20#include <libmailwrapper/mailtypes.h>
20#include <libmailwrapper/abstractmail.h> 21#include <libmailwrapper/abstractmail.h>
21/* OPIE */ 22/* OPIE */
22//#include <qpe/resource.h> 23//#include <qpe/resource.h>
23//#include <qpe/qpeapplication.h> 24//#include <qpe/qpeapplication.h>
24 25
25/* QT */ 26/* QT */
26 27
27//using namespace Opie::Core; 28//using namespace Opie::Core;
28 29
29OpieMail::OpieMail( QWidget *parent, const char *name ) 30OpieMail::OpieMail( QWidget *parent, const char *name )
30 : MainWindow( parent, name) //, WStyle_ContextHelp ) 31 : MainWindow( parent, name) //, WStyle_ContextHelp )
31{ 32{
32 settings = new Settings(); 33 settings = new Settings();
33 34
34 folderView->populate( settings->getAccounts() ); 35 folderView->populate( settings->getAccounts() );
35 36
36} 37}
37 38
38OpieMail::~OpieMail() 39OpieMail::~OpieMail()
39{ 40{
40 if (settings) delete settings; 41 if (settings) delete settings;
41} 42}
42 43
43void OpieMail::appMessage(const QCString &msg, const QByteArray &data) 44void OpieMail::appMessage(const QCString &msg, const QByteArray &data)
44{ 45{
45 46
46} 47}
47#include <stdlib.h> 48#include <stdlib.h>
48void OpieMail::message(const QCString &msg, const QByteArray &data) 49void OpieMail::message(const QCString &msg, const QByteArray &data)
49{ 50{
50 // copied from old mail2 51 // copied from old mail2
51 static int ii = 0; 52 static int ii = 0;
52 //qDebug("QCOP CALL ############################# %d ", ii); 53 //qDebug("QCOP CALL ############################# %d ", ii);
53 //QString mess ( msg ); 54 //QString mess ( msg );
54 //qDebug("Message = %s ",mess.latin1()); 55 //qDebug("Message = %s ",mess.latin1());
55 ++ii; 56 ++ii;
56 //qDebug("KM:appMessage %d *%s* %x", ii, msg.data(), this); 57 //qDebug("KM:appMessage %d *%s* %x", ii, msg.data(), this);
57 58
58 mPendingEmail = QString::null; 59 mPendingEmail = QString::null;
59 mPendingName = QString::null; 60 mPendingName = QString::null;
60 if (msg == "writeMail(QString,QString)") 61 if (msg == "writeMail(QString,QString)")
61 { 62 {
62 //qDebug("writeMail(QString,QString) "); 63 //qDebug("writeMail(QString,QString) ");
63 QDataStream stream(data,IO_ReadOnly); 64 QDataStream stream(data,IO_ReadOnly);
64 stream >> mPendingName >> mPendingEmail; 65 stream >> mPendingName >> mPendingEmail;
65 // removing the whitespaces at beginning and end is needed! 66 // removing the whitespaces at beginning and end is needed!
66 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) ); 67 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) );
67 } 68 }
68 else if (msg == "newMail()") 69 else if (msg == "newMail()")
69 { 70 {
70 //qDebug("slotComposeMail() "); 71 //qDebug("slotComposeMail() ");
71 // we cannot call slotComposeMail(); directly, because may be executing a QCOP call 72 // we cannot call slotComposeMail(); directly, because may be executing a QCOP call
72 // and a QCOP call does not like a processevents in his execution 73 // and a QCOP call does not like a processevents in his execution
73 // with the Qtimer we call slotComposeMail() after we reached the main event loop 74 // with the Qtimer we call slotComposeMail() after we reached the main event loop
74 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) ); 75 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) );
75 // slotComposeMail(); 76 // slotComposeMail();
76 } 77 }
77 else if (msg == "newMail(QString)") 78 else if (msg == "newMail(QString)")
78 { 79 {
79 //qDebug(" newMail(QString)"); 80 //qDebug(" newMail(QString)");
80 QDataStream stream(data,IO_ReadOnly); 81 QDataStream stream(data,IO_ReadOnly);
81 stream >> mPendingName; 82 stream >> mPendingName;
82 // the format is 83 // the format is
83 // NAME <EMAIL>:SUBJECT 84 // NAME <EMAIL>:SUBJECT
84 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) ); 85 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) );
85 } else { 86 } else {
86 if ( ii == 1 ) { 87 if ( ii == 1 ) {
87 qDebug("Kopiemail::Error:: Initial QCOP call for ExternalAppHandler not supported "); 88 qDebug("Kopiemail::Error:: Initial QCOP call for ExternalAppHandler not supported ");
88 return; 89 return;
89 } 90 }
90 ExternalAppHandler::instance()->appMessage ( msg, data); 91 ExternalAppHandler::instance()->appMessage ( msg, data);
91 } 92 }
92 93
93 //qDebug("END OpieMail::message "); 94 //qDebug("END OpieMail::message ");
94} 95}
95void OpieMail::slotwriteMail2(const QString& namemail ) 96void OpieMail::slotwriteMail2(const QString& namemail )
96{ 97{
97 //qDebug("OpieMail::slotwriteMail2 "); 98 //qDebug("OpieMail::slotwriteMail2 ");
98 //qApp->processEvents(); 99 //qApp->processEvents();
99 ComposeMail compose( settings, this, 0, true ); 100 ComposeMail compose( settings, this, 0, true );
100 if ( !namemail.isEmpty() ) { 101 if ( !namemail.isEmpty() ) {
101 QString to = namemail; 102 QString to = namemail;
102 if ( namemail.find( " <") > 1 ) { 103 if ( namemail.find( " <") > 1 ) {
103 to = "\"" +to.replace( QRegExp( " <"), "\" <") ; 104 to = "\"" +to.replace( QRegExp( " <"), "\" <") ;
104 } else 105 } else
105 if ( namemail.find( "<") > 1 ) { 106 if ( namemail.find( "<") > 1 ) {
106 to = "\"" +to.replace( QRegExp( "<"), "\" <") ; 107 to = "\"" +to.replace( QRegExp( "<"), "\" <") ;
107 } 108 }
@@ -151,193 +152,200 @@ void OpieMail::slotComposeMail()
151 } 152 }
152 //slotwriteMail(0l,0l); 153 //slotwriteMail(0l,0l);
153} 154}
154 155
155void OpieMail::slotSendQueued() 156void OpieMail::slotSendQueued()
156{ 157{
157 SMTPaccount *smtp = 0; 158 SMTPaccount *smtp = 0;
158 159
159 QList<Account> list = settings->getAccounts(); 160 QList<Account> list = settings->getAccounts();
160 QList<SMTPaccount> smtpList; 161 QList<SMTPaccount> smtpList;
161 smtpList.setAutoDelete(false); 162 smtpList.setAutoDelete(false);
162 Account *it; 163 Account *it;
163 for ( it = list.first(); it; it = list.next() ) 164 for ( it = list.first(); it; it = list.next() )
164 { 165 {
165 if ( it->getType() == MAILLIB::A_SMTP ) 166 if ( it->getType() == MAILLIB::A_SMTP )
166 { 167 {
167 smtp = static_cast<SMTPaccount *>(it); 168 smtp = static_cast<SMTPaccount *>(it);
168 smtpList.append(smtp); 169 smtpList.append(smtp);
169 } 170 }
170 } 171 }
171 if (smtpList.count()==0) 172 if (smtpList.count()==0)
172 { 173 {
173 QMessageBox::information(0,tr("Info"),tr("Define a smtp account first!\n")); 174 QMessageBox::information(0,tr("Info"),tr("Define a smtp account first!\n"));
174 return; 175 return;
175 } 176 }
176 if (smtpList.count()==1) 177 if (smtpList.count()==1)
177 { 178 {
178 smtp = smtpList.at(0); 179 smtp = smtpList.at(0);
179 } 180 }
180 else 181 else
181 { 182 {
182 smtp = 0; 183 smtp = 0;
183 selectsmtp selsmtp; 184 selectsmtp selsmtp;
184 selsmtp.setSelectionlist(&smtpList); 185 selsmtp.setSelectionlist(&smtpList);
185 selsmtp.showMaximized(); 186 selsmtp.showMaximized();
186 if ( selsmtp.exec() == QDialog::Accepted ) 187 if ( selsmtp.exec() == QDialog::Accepted )
187 { 188 {
188 smtp = selsmtp.selected_smtp(); 189 smtp = selsmtp.selected_smtp();
189 } 190 }
190 } 191 }
191 if (smtp) 192 if (smtp)
192 { 193 {
193 SMTPwrapper * wrap = new SMTPwrapper(smtp); 194 SMTPwrapper * wrap = new SMTPwrapper(smtp);
194 if ( wrap->flushOutbox() ) 195 if ( wrap->flushOutbox() )
195 { 196 {
196 QMessageBox::information(0,tr("Info"),tr("Mail queue flushed")); 197 QMessageBox::information(0,tr("Info"),tr("Mail queue flushed"));
197 } 198 }
198 delete wrap; 199 delete wrap;
199 } 200 }
200} 201}
201 202
202void OpieMail::slotSearchMails() 203void OpieMail::slotSearchMails()
203{ 204{
204 qDebug("OpieMail::slotSearchMails():not implemented "); 205 qDebug("OpieMail::slotSearchMails():not implemented ");
205} 206}
206 207
207void OpieMail::slotEditSettings() 208void OpieMail::slotEditSettings()
208{ 209{
209 SettingsDialog settingsDialog( this, 0, true, WStyle_ContextHelp ); 210 SettingsDialog settingsDialog( this, 0, true, WStyle_ContextHelp );
210 settingsDialog.showMaximized(); 211 settingsDialog.showMaximized();
211 settingsDialog.exec(); 212 settingsDialog.exec();
212} 213}
213 214
214void OpieMail::slotEditAccounts() 215void OpieMail::slotEditAccounts()
215{ 216{
216 EditAccounts eaDialog( settings, this, 0, true, WStyle_ContextHelp ); 217 EditAccounts eaDialog( settings, this, 0, true, WStyle_ContextHelp );
217 eaDialog.slotAdjustColumns(); 218 eaDialog.slotAdjustColumns();
218 eaDialog.showMaximized(); 219 eaDialog.showMaximized();
219 eaDialog.exec(); 220 eaDialog.exec();
220 if ( settings ) delete settings; 221 if ( settings ) delete settings;
221 settings = new Settings(); 222 settings = new Settings();
222 223
223 folderView->populate( settings->getAccounts() ); 224 folderView->populate( settings->getAccounts() );
224} 225}
225 226
226void OpieMail::displayMail() 227void OpieMail::displayMail()
227{ 228{
228 QListViewItem*item = mailView->currentItem(); 229 QListViewItem*item = mailView->currentItem();
229 if (!item) return; 230 if (!item) return;
230 RecMailP mail = ((MailListViewItem*)item)->data(); 231 RecMailP mail = ((MailListViewItem*)item)->data();
231 RecBodyP body = folderView->fetchBody(mail); 232 RecBodyP body = folderView->fetchBody(mail);
232 ViewMail readMail( this,"", Qt::WType_Modal | WStyle_ContextHelp ); 233 ViewMail readMail( this,"", Qt::WType_Modal | WStyle_ContextHelp );
233 readMail.setBody( body ); 234 readMail.setBody( body );
234 readMail.setMail( mail ); 235 readMail.setMail( mail );
235 readMail.showMaximized(); 236 readMail.showMaximized();
236 readMail.exec(); 237 readMail.exec();
237 238
238 if ( readMail.deleted ) 239 if ( readMail.deleted )
239 { 240 {
240 folderView->refreshCurrent(); 241 folderView->refreshCurrent();
241 } 242 }
242 else 243 else
243 { 244 {
244 ( (MailListViewItem*)item )->setPixmap( 0, QPixmap() ); 245 ( (MailListViewItem*)item )->setPixmap( 0, QPixmap() );
245 } 246 }
246} 247}
247 248void OpieMail::slotGetMail()
249{
250 QListViewItem * item = folderView->currentItem();
251 if ( ! item ) return;
252 while ( item->parent () )
253 item = item->parent ();
254 ((AccountViewItem *)item)->contextMenuSelected( 101 );
255}
248void OpieMail::slotDeleteMail() 256void OpieMail::slotDeleteMail()
249{ 257{
250 if (!mailView->currentItem()) return; 258 if (!mailView->currentItem()) return;
251 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data(); 259 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data();
252 if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + mail->getFrom() + " - " + mail->getSubject() ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) 260 if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + mail->getFrom() + " - " + mail->getSubject() ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes )
253 { 261 {
254 mail->Wrapper()->deleteMail( mail ); 262 mail->Wrapper()->deleteMail( mail );
255 folderView->refreshCurrent(); 263 folderView->refreshCurrent();
256 } 264 }
257} 265}
258void OpieMail::slotDeleteAllMail() 266void OpieMail::slotDeleteAllMail()
259{ 267{
260 268
261 QValueList<RecMailP> t; 269 QValueList<RecMailP> t;
262 if ( QMessageBox::warning(this, tr("Delete All Mails"), tr("Do you really want to delete\nall selected mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) 270 if ( QMessageBox::warning(this, tr("Delete All Mails"), tr("Do you really want to delete\nall selected mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes )
263 { 271 {
264 MailListViewItem* item = (MailListViewItem*)mailView->firstChild (); 272 MailListViewItem* item = (MailListViewItem*)mailView->firstChild ();
265 while ( item ) { 273 while ( item ) {
266 if ( item->isSelected() ) { 274 if ( item->isSelected() ) {
267 t.append( item->data() ); 275 t.append( item->data() );
268 } 276 }
269 item = (MailListViewItem*)item->nextSibling(); 277 item = (MailListViewItem*)item->nextSibling();
270 } 278 }
271 } 279 }
272 else 280 else
273 return; 281 return;
274 if ( t.count() == 0 ) 282 if ( t.count() == 0 )
275 return; 283 return;
276 RecMailP mail = t.first(); 284 RecMailP mail = t.first();
277 mail->Wrapper()->deleteMailList(t); 285 mail->Wrapper()->deleteMailList(t);
278 folderView->refreshCurrent(); 286 folderView->refreshCurrent();
279 287
280 288
281} 289}
282void OpieMail::clearSelection() 290void OpieMail::clearSelection()
283{ 291{
284 mailView->clearSelection(); 292 mailView->clearSelection();
285 293
286} 294}
287 295
288void OpieMail::mailHold(int button, QListViewItem *item,const QPoint&,int ) 296void OpieMail::mailHold(int button, QListViewItem *item,const QPoint&,int )
289{ 297{
290 if (!mailView->currentItem()) return; 298 if (!mailView->currentItem()) return;
291 MAILLIB::ATYPE mailtype = ((MailListViewItem*)mailView->currentItem() )->wrapperType(); 299 MAILLIB::ATYPE mailtype = ((MailListViewItem*)mailView->currentItem() )->wrapperType();
292 /* just the RIGHT button - or hold on pda */ 300 /* just the RIGHT button - or hold on pda */
293 if (button!=2) {return;} 301 if (button!=2) {return;}
294 if (!item) return; 302 if (!item) return;
295 QPopupMenu *m = new QPopupMenu(0); 303 QPopupMenu *m = new QPopupMenu(0);
296 if (m) 304 if (m)
297 { 305 {
298 if (mailtype==MAILLIB::A_NNTP) { 306 if (mailtype==MAILLIB::A_NNTP) {
299 m->insertItem(tr("Read this posting"),this,SLOT(displayMail())); 307 m->insertItem(tr("Read this posting"),this,SLOT(displayMail()));
300// m->insertItem(tr("Copy this posting"),this,SLOT(slotMoveCopyMail())); 308// m->insertItem(tr("Copy this posting"),this,SLOT(slotMoveCopyMail()));
301 } else { 309 } else {
302 if (folderView->currentisDraft()) { 310 if (folderView->currentisDraft()) {
303 m->insertItem(tr("Edit this mail"),this,SLOT(reEditMail())); 311 m->insertItem(tr("Edit this mail"),this,SLOT(reEditMail()));
304 } 312 }
305 m->insertItem(tr("Read this mail"),this,SLOT(displayMail())); 313 m->insertItem(tr("Read this mail"),this,SLOT(displayMail()));
306 m->insertItem(tr("Move/Copy this mail"),this,SLOT(slotMoveCopyMail())); 314 m->insertItem(tr("Move/Copy this mail"),this,SLOT(slotMoveCopyMail()));
307 m->insertItem(tr("Delete this mail"),this,SLOT(slotDeleteMail())); 315 m->insertItem(tr("Delete this mail"),this,SLOT(slotDeleteMail()));
308 m->insertSeparator(); 316 m->insertSeparator();
309 m->insertItem(tr("Move/Copy all selected mail"),this,SLOT(slotMoveCopyAllMail())); 317 m->insertItem(tr("Move/Copy all selected mail"),this,SLOT(slotMoveCopyAllMail()));
310 m->insertItem(tr("Delete all selected mails"),this,SLOT(slotDeleteAllMail())); 318 m->insertItem(tr("Delete all selected mails"),this,SLOT(slotDeleteAllMail()));
311 m->insertItem(tr("Clear selection"),this,SLOT(clearSelection())); 319 m->insertItem(tr("Clear selection"),this,SLOT(clearSelection()));
312 } 320 }
313 m->setFocus(); 321 m->setFocus();
314 m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); 322 m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) );
315 delete m; 323 delete m;
316 } 324 }
317} 325}
318 326
319void OpieMail::slotShowFolders( bool show ) 327void OpieMail::slotShowFolders( bool show )
320{ 328{
321 if ( show && folderView->isHidden() ) 329 if ( show && folderView->isHidden() )
322 { 330 {
323 folderView->show(); 331 folderView->show();
324 } 332 }
325 else if ( !show && !folderView->isHidden() ) 333 else if ( !show && !folderView->isHidden() )
326 { 334 {
327 folderView->hide(); 335 folderView->hide();
328 } 336 }
329} 337}
330 338
331void OpieMail::refreshMailView(const QValueList<RecMailP>&list) 339void OpieMail::refreshMailView(const QValueList<RecMailP>&list)
332{ 340{
333 MailListViewItem*item = 0; 341 MailListViewItem*item = 0;
334 mailView->clear(); 342 mailView->clear();
335 343
336 QValueList<RecMailP>::ConstIterator it; 344 QValueList<RecMailP>::ConstIterator it;
337 for (it = list.begin(); it != list.end();++it) 345 for (it = list.begin(); it != list.end();++it)
338 { 346 {
339 item = new MailListViewItem(mailView,item); 347 item = new MailListViewItem(mailView,item);
340 item->storeData((*it)); 348 item->storeData((*it));
341 item->showEntry(); 349 item->showEntry();
342 } 350 }
343} 351}
diff --git a/kmicromail/opiemail.h b/kmicromail/opiemail.h
index 1de5f6b..e054b9e 100644
--- a/kmicromail/opiemail.h
+++ b/kmicromail/opiemail.h
@@ -1,50 +1,51 @@
1// CHANGED 2004-09-31 Lutz Rogowski 1// CHANGED 2004-09-31 Lutz Rogowski
2#ifndef OPIEMAIL_H 2#ifndef OPIEMAIL_H
3#define OPIEMAIL_H 3#define OPIEMAIL_H
4 4
5#include "mainwindow.h" 5#include "mainwindow.h"
6#include <libmailwrapper/settings.h> 6#include <libmailwrapper/settings.h>
7 7
8#include <opie2/osmartpointer.h> 8#include <opie2/osmartpointer.h>
9#include <libmailwrapper/mailtypes.h> 9#include <libmailwrapper/mailtypes.h>
10 10
11class OpieMail : public MainWindow 11class OpieMail : public MainWindow
12{ 12{
13 Q_OBJECT 13 Q_OBJECT
14 14
15public: 15public:
16 OpieMail( QWidget *parent = 0, const char *name = 0 ); 16 OpieMail( QWidget *parent = 0, const char *name = 0 );
17 virtual ~OpieMail(); 17 virtual ~OpieMail();
18 static QString appName() { return QString::fromLatin1("kopiemail"); } 18 static QString appName() { return QString::fromLatin1("kopiemail"); }
19 19
20public slots: 20public slots:
21 virtual void slotwriteMail(const QString&name,const QString&email); 21 virtual void slotwriteMail(const QString&name,const QString&email);
22 virtual void slotwriteMail2(const QString&nameemail); 22 virtual void slotwriteMail2(const QString&nameemail);
23 virtual void slotComposeMail(); 23 virtual void slotComposeMail();
24 virtual void appMessage(const QCString &msg, const QByteArray &data); 24 virtual void appMessage(const QCString &msg, const QByteArray &data);
25 virtual void message(const QCString &msg, const QByteArray &data); 25 virtual void message(const QCString &msg, const QByteArray &data);
26protected slots: 26protected slots:
27 virtual void slotSendQueued(); 27 virtual void slotSendQueued();
28 virtual void slotSearchMails(); 28 virtual void slotSearchMails();
29 virtual void slotEditSettings(); 29 virtual void slotEditSettings();
30 virtual void slotEditAccounts(); 30 virtual void slotEditAccounts();
31 virtual void displayMail(); 31 virtual void displayMail();
32 virtual void slotDeleteMail(); 32 virtual void slotDeleteMail();
33 virtual void slotGetMail();
33 virtual void slotDeleteAllMail(); 34 virtual void slotDeleteAllMail();
34 virtual void mailHold(int, QListViewItem *,const QPoint&,int); 35 virtual void mailHold(int, QListViewItem *,const QPoint&,int);
35 virtual void slotShowFolders( bool show ); 36 virtual void slotShowFolders( bool show );
36 virtual void refreshMailView(const QValueList<RecMailP>&); 37 virtual void refreshMailView(const QValueList<RecMailP>&);
37 virtual void mailLeftClicked( QListViewItem * ); 38 virtual void mailLeftClicked( QListViewItem * );
38 virtual void slotMoveCopyMail(); 39 virtual void slotMoveCopyMail();
39 virtual void slotMoveCopyAllMail(); 40 virtual void slotMoveCopyAllMail();
40 virtual void reEditMail(); 41 virtual void reEditMail();
41 void clearSelection(); 42 void clearSelection();
42 43
43private: 44private:
44 QString mPendingEmail; 45 QString mPendingEmail;
45 QString mPendingName; 46 QString mPendingName;
46 Settings *settings; 47 Settings *settings;
47 48
48}; 49};
49 50
50#endif 51#endif