summaryrefslogtreecommitdiff
path: root/noncore/net/mail
Unidiff
Diffstat (limited to 'noncore/net/mail') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountitem.cpp115
-rw-r--r--noncore/net/mail/accountitem.h23
-rw-r--r--noncore/net/mail/accountview.cpp2
-rw-r--r--noncore/net/mail/accountview.h7
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.cpp5
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h16
-rw-r--r--noncore/net/mail/libmailwrapper/genericwrapper.h2
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp14
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.h20
-rw-r--r--noncore/net/mail/libmailwrapper/mailtypes.h1
-rw-r--r--noncore/net/mail/libmailwrapper/mailwrapper.cpp12
-rw-r--r--noncore/net/mail/libmailwrapper/mailwrapper.h16
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.cpp39
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.h13
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.cpp24
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.h20
-rw-r--r--noncore/net/mail/libmailwrapper/nntpwrapper.cpp9
-rw-r--r--noncore/net/mail/libmailwrapper/nntpwrapper.h4
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp9
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.h4
-rw-r--r--noncore/net/mail/viewmail.cpp7
21 files changed, 190 insertions, 172 deletions
diff --git a/noncore/net/mail/accountitem.cpp b/noncore/net/mail/accountitem.cpp
index 396dcb7..3e12563 100644
--- a/noncore/net/mail/accountitem.cpp
+++ b/noncore/net/mail/accountitem.cpp
@@ -48,41 +48,39 @@ AbstractMail *POP3viewItem::getWrapper()
48{ 48{
49 return wrapper; 49 return wrapper;
50} 50}
51 51
52void POP3viewItem::refresh( QList<RecMail> & ) 52void POP3viewItem::refresh( QList<RecMail> & )
53{ 53{
54 refresh(); 54 refresh();
55} 55}
56 56
57void POP3viewItem::refresh() 57void POP3viewItem::refresh()
58{ 58{
59 if (account->getOffline()) return; 59 if (account->getOffline()) return;
60 QList<Folder> *folders = wrapper->listFolders(); 60 QValueList<FolderP> *folders = wrapper->listFolders();
61 QListViewItem *child = firstChild(); 61 QListViewItem *child = firstChild();
62 while ( child ) 62 while ( child )
63 { 63 {
64 QListViewItem *tmp = child; 64 QListViewItem *tmp = child;
65 child = child->nextSibling(); 65 child = child->nextSibling();
66 delete tmp; 66 delete tmp;
67 } 67 }
68 Folder *it; 68 QValueList<FolderP>::ConstIterator it;
69 QListViewItem*item = 0; 69 QListViewItem*item = 0;
70 for ( it = folders->first(); it; it = folders->next() ) 70 for ( it = folders->begin(); it!=folders->end(); ++it)
71 { 71 {
72 item = new POP3folderItem( it, this , item ); 72 item = new POP3folderItem( (*it), this , item );
73 item->setSelectable(it->may_select()); 73 item->setSelectable( (*it)->may_select());
74 } 74 }
75 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
76 folders->setAutoDelete(false);
77 delete folders; 75 delete folders;
78} 76}
79 77
80RecBody POP3viewItem::fetchBody( const RecMail &mail ) 78RecBody POP3viewItem::fetchBody( const RecMail &mail )
81{ 79{
82 qDebug( "POP3 fetchBody" ); 80 qDebug( "POP3 fetchBody" );
83 return wrapper->fetchBody( mail ); 81 return wrapper->fetchBody( mail );
84} 82}
85 83
86QPopupMenu * POP3viewItem::getContextMenu() 84QPopupMenu * POP3viewItem::getContextMenu()
87{ 85{
88 QPopupMenu *m = new QPopupMenu(0); 86 QPopupMenu *m = new QPopupMenu(0);
@@ -132,28 +130,27 @@ void POP3viewItem::contextMenuSelected(int which)
132 case 0: 130 case 0:
133 disconnect(); 131 disconnect();
134 break; 132 break;
135 case 1: 133 case 1:
136 setOnOffline(); 134 setOnOffline();
137 break; 135 break;
138 } 136 }
139} 137}
140 138
141POP3folderItem::~POP3folderItem() 139POP3folderItem::~POP3folderItem()
142{} 140{}
143 141
144POP3folderItem::POP3folderItem( Folder *folderInit, POP3viewItem *parent , QListViewItem*after ) 142POP3folderItem::POP3folderItem( const FolderP&folderInit, POP3viewItem *parent , QListViewItem*after )
145 : AccountViewItem( parent,after ) 143 : AccountViewItem(folderInit,parent,after )
146{ 144{
147 folder = folderInit;
148 pop3 = parent; 145 pop3 = parent;
149 if (folder->getDisplayName().lower()!="inbox") 146 if (folder->getDisplayName().lower()!="inbox")
150 { 147 {
151 setPixmap( 0, PIXMAP_POP3FOLDER ); 148 setPixmap( 0, PIXMAP_POP3FOLDER );
152 } 149 }
153 else 150 else
154 { 151 {
155 setPixmap( 0, PIXMAP_INBOXFOLDER); 152 setPixmap( 0, PIXMAP_INBOXFOLDER);
156 } 153 }
157 setText( 0, folder->getDisplayName() ); 154 setText( 0, folder->getDisplayName() );
158} 155}
159 156
@@ -241,41 +238,40 @@ AbstractMail *NNTPviewItem::getWrapper()
241{ 238{
242 return wrapper; 239 return wrapper;
243} 240}
244 241
245void NNTPviewItem::refresh( QList<RecMail> & ) 242void NNTPviewItem::refresh( QList<RecMail> & )
246{ 243{
247 refresh(); 244 refresh();
248} 245}
249 246
250void NNTPviewItem::refresh() 247void NNTPviewItem::refresh()
251{ 248{
252 if (account->getOffline()) return; 249 if (account->getOffline()) return;
253 QList<Folder> *folders = wrapper->listFolders(); 250 QValueList<FolderP> *folders = wrapper->listFolders();
251
254 QListViewItem *child = firstChild(); 252 QListViewItem *child = firstChild();
255 while ( child ) 253 while ( child )
256 { 254 {
257 QListViewItem *tmp = child; 255 QListViewItem *tmp = child;
258 child = child->nextSibling(); 256 child = child->nextSibling();
259 delete tmp; 257 delete tmp;
260 } 258 }
261 Folder *it; 259 QValueList<FolderP>::ConstIterator it;
262 QListViewItem*item = 0; 260 QListViewItem*item = 0;
263 for ( it = folders->first(); it; it = folders->next() ) 261 for ( it = folders->begin(); it!=folders->end(); ++it)
264 { 262 {
265 item = new NNTPfolderItem( it, this , item ); 263 item = new NNTPfolderItem( (*it), this , item );
266 item->setSelectable(it->may_select()); 264 item->setSelectable( (*it)->may_select());
267 } 265 }
268 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
269 folders->setAutoDelete(false);
270 delete folders; 266 delete folders;
271} 267}
272 268
273RecBody NNTPviewItem::fetchBody( const RecMail &mail ) 269RecBody NNTPviewItem::fetchBody( const RecMail &mail )
274{ 270{
275 qDebug( "NNTP fetchBody" ); 271 qDebug( "NNTP fetchBody" );
276 return wrapper->fetchBody( mail ); 272 return wrapper->fetchBody( mail );
277} 273}
278 274
279QPopupMenu * NNTPviewItem::getContextMenu() 275QPopupMenu * NNTPviewItem::getContextMenu()
280{ 276{
281 QPopupMenu *m = new QPopupMenu(0); 277 QPopupMenu *m = new QPopupMenu(0);
@@ -338,28 +334,27 @@ void NNTPviewItem::contextMenuSelected(int which)
338 case 1: 334 case 1:
339 setOnOffline(); 335 setOnOffline();
340 break; 336 break;
341 case 2: 337 case 2:
342 subscribeGroups(); 338 subscribeGroups();
343 break; 339 break;
344 } 340 }
345} 341}
346 342
347NNTPfolderItem::~NNTPfolderItem() 343NNTPfolderItem::~NNTPfolderItem()
348{} 344{}
349 345
350NNTPfolderItem::NNTPfolderItem( Folder *folderInit, NNTPviewItem *parent , QListViewItem*after ) 346NNTPfolderItem::NNTPfolderItem( const FolderP &folderInit, NNTPviewItem *parent , QListViewItem*after )
351 : AccountViewItem( parent,after ) 347 : AccountViewItem( folderInit, parent,after )
352{ 348{
353 folder = folderInit;
354 nntp = parent; 349 nntp = parent;
355 if (folder->getDisplayName().lower()!="inbox") 350 if (folder->getDisplayName().lower()!="inbox")
356 { 351 {
357 setPixmap( 0, PIXMAP_POP3FOLDER ); 352 setPixmap( 0, PIXMAP_POP3FOLDER );
358 } 353 }
359 else 354 else
360 { 355 {
361 setPixmap( 0, PIXMAP_INBOXFOLDER); 356 setPixmap( 0, PIXMAP_INBOXFOLDER);
362 } 357 }
363 setText( 0, folder->getDisplayName() ); 358 setText( 0, folder->getDisplayName() );
364} 359}
365 360
@@ -441,65 +436,63 @@ void IMAPviewItem::refresh(QList<RecMail>&)
441const QStringList&IMAPviewItem::subFolders() 436const QStringList&IMAPviewItem::subFolders()
442{ 437{
443 return currentFolders; 438 return currentFolders;
444} 439}
445 440
446void IMAPviewItem::refreshFolders(bool force) 441void IMAPviewItem::refreshFolders(bool force)
447{ 442{
448 if (childCount()>0 && force==false) return; 443 if (childCount()>0 && force==false) return;
449 if (account->getOffline()) return; 444 if (account->getOffline()) return;
450 445
451 removeChilds(); 446 removeChilds();
452 currentFolders.clear(); 447 currentFolders.clear();
453 QList<Folder> *folders = wrapper->listFolders(); 448 QValueList<FolderP> * folders = wrapper->listFolders();
454 449
455 Folder *it; 450 QValueList<FolderP>::Iterator it;
456 QListViewItem*item = 0; 451 QListViewItem*item = 0;
457 QListViewItem*titem = 0; 452 QListViewItem*titem = 0;
458 QString fname,del,search; 453 QString fname,del,search;
459 int pos; 454 int pos;
460 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
461 folders->setAutoDelete(false);
462 455
463 for ( it = folders->first(); it; it = folders->next() ) 456 for ( it = folders->begin(); it!=folders->end(); ++it)
464 { 457 {
465 if (it->getDisplayName().lower()=="inbox") 458 if ((*it)->getDisplayName().lower()=="inbox")
466 { 459 {
467 item = new IMAPfolderItem( it, this , item ); 460 item = new IMAPfolderItem( (*it), this , item );
468 folders->remove(it); 461 folders->remove(it);
469 qDebug("inbox found"); 462 qDebug("inbox found");
470 break; 463 break;
471 } 464 }
472 } 465 }
473 for ( it = folders->first(); it; it = folders->next() ) 466 for ( it = folders->begin(); it!=folders->end(); ++it)
474 { 467 {
475 fname = it->getDisplayName(); 468 fname = (*it)->getDisplayName();
476 currentFolders.append(it->getName()); 469 currentFolders.append((*it)->getName());
477 pos = fname.findRev(it->Separator()); 470 pos = fname.findRev((*it)->Separator());
478 if (pos != -1) 471 if (pos != -1)
479 { 472 {
480 fname = fname.left(pos); 473 fname = fname.left(pos);
481 } 474 }
482 IMAPfolderItem*pitem = (IMAPfolderItem*)findSubItem(fname); 475 IMAPfolderItem*pitem = (IMAPfolderItem*)findSubItem(fname);
483 if (pitem) 476 if (pitem)
484 { 477 {
485 titem = item; 478 titem = item;
486 item = new IMAPfolderItem(it,pitem,pitem->firstChild(),this); 479 item = new IMAPfolderItem( (*it),pitem,pitem->firstChild(),this);
487 /* setup the short name */ 480 /* setup the short name */
488 item->setText(0,it->getDisplayName().right(it->getDisplayName().length()-pos-1)); 481 item->setText(0,(*it)->getDisplayName().right((*it)->getDisplayName().length()-pos-1));
489 item = titem; 482 item = titem;
490 } 483 }
491 else 484 else
492 { 485 {
493 item = new IMAPfolderItem( it, this , item ); 486 item = new IMAPfolderItem( (*it), this , item );
494 } 487 }
495 } 488 }
496 delete folders; 489 delete folders;
497} 490}
498 491
499QPopupMenu * IMAPviewItem::getContextMenu() 492QPopupMenu * IMAPviewItem::getContextMenu()
500{ 493{
501 QPopupMenu *m = new QPopupMenu(0); 494 QPopupMenu *m = new QPopupMenu(0);
502 if (m) 495 if (m)
503 { 496 {
504 if (!account->getOffline()) 497 if (!account->getOffline())
505 { 498 {
@@ -569,44 +562,42 @@ void IMAPviewItem::contextMenuSelected(int id)
569} 562}
570 563
571RecBody IMAPviewItem::fetchBody(const RecMail&) 564RecBody IMAPviewItem::fetchBody(const RecMail&)
572{ 565{
573 return RecBody(); 566 return RecBody();
574} 567}
575 568
576bool IMAPviewItem::offline() 569bool IMAPviewItem::offline()
577{ 570{
578 return account->getOffline(); 571 return account->getOffline();
579} 572}
580 573
581IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QListViewItem*after ) 574IMAPfolderItem::IMAPfolderItem( const FolderP& folderInit, IMAPviewItem *parent , QListViewItem*after )
582 : AccountViewItem( parent , after ) 575 : AccountViewItem( folderInit, parent , after )
583{ 576{
584 folder = folderInit;
585 imap = parent; 577 imap = parent;
586 if (folder->getDisplayName().lower()!="inbox") 578 if (folder->getDisplayName().lower()!="inbox")
587 { 579 {
588 setPixmap( 0, PIXMAP_IMAPFOLDER ); 580 setPixmap( 0, PIXMAP_IMAPFOLDER );
589 } 581 }
590 else 582 else
591 { 583 {
592 setPixmap( 0, PIXMAP_INBOXFOLDER); 584 setPixmap( 0, PIXMAP_INBOXFOLDER);
593 } 585 }
594 setText( 0, folder->getDisplayName() ); 586 setText( 0, folder->getDisplayName() );
595} 587}
596 588
597IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master ) 589IMAPfolderItem::IMAPfolderItem(const FolderP &folderInit, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master )
598 : AccountViewItem( parent,after ) 590 : AccountViewItem(folderInit, parent,after )
599{ 591{
600 folder = folderInit;
601 imap = master; 592 imap = master;
602 if (folder->getDisplayName().lower()!="inbox") 593 if (folder->getDisplayName().lower()!="inbox")
603 { 594 {
604 setPixmap( 0, PIXMAP_IMAPFOLDER ); 595 setPixmap( 0, PIXMAP_IMAPFOLDER );
605 } 596 }
606 else 597 else
607 { 598 {
608 setPixmap( 0, PIXMAP_INBOXFOLDER); 599 setPixmap( 0, PIXMAP_INBOXFOLDER);
609 } 600 }
610 setText( 0, folder->getDisplayName() ); 601 setText( 0, folder->getDisplayName() );
611} 602}
612 603
@@ -759,63 +750,61 @@ AbstractMail *MHviewItem::getWrapper()
759 750
760void MHviewItem::refresh( QList<RecMail> & target) 751void MHviewItem::refresh( QList<RecMail> & target)
761{ 752{
762 refresh(false); 753 refresh(false);
763 getWrapper()->listMessages( "",target ); 754 getWrapper()->listMessages( "",target );
764} 755}
765 756
766void MHviewItem::refresh(bool force) 757void MHviewItem::refresh(bool force)
767{ 758{
768 if (childCount()>0 && force==false) return; 759 if (childCount()>0 && force==false) return;
769 removeChilds(); 760 removeChilds();
770 currentFolders.clear(); 761 currentFolders.clear();
771 QList<Folder> *folders = wrapper->listFolders(); 762 QValueList<FolderP> *folders = wrapper->listFolders();
772 Folder *it; 763 QValueList<FolderP>::ConstIterator it;
773 MHfolderItem*item = 0; 764 MHfolderItem*item = 0;
774 MHfolderItem*pmaster = 0; 765 MHfolderItem*pmaster = 0;
775 QString fname = ""; 766 QString fname = "";
776 int pos; 767 int pos;
777 for ( it = folders->first(); it; it = folders->next() ) 768 for ( it = folders->begin(); it!=folders->end(); ++it)
778 { 769 {
779 fname = it->getDisplayName(); 770 fname = (*it)->getDisplayName();
780 /* this folder itself */ 771 /* this folder itself */
781 if (fname=="/") 772 if (fname=="/")
782 { 773 {
783 currentFolders.append(fname); 774 currentFolders.append(fname);
784 folder = it; 775 folder = (*it);
785 continue; 776 continue;
786 } 777 }
787 currentFolders.append(fname); 778 currentFolders.append(fname);
788 pos = fname.findRev("/"); 779 pos = fname.findRev("/");
789 if (pos > 0) 780 if (pos > 0)
790 { 781 {
791 fname = fname.left(pos); 782 fname = fname.left(pos);
792 pmaster = (MHfolderItem*)findSubItem(fname); 783 pmaster = (MHfolderItem*)findSubItem(fname);
793 } 784 }
794 else 785 else
795 { 786 {
796 pmaster = 0; 787 pmaster = 0;
797 } 788 }
798 if (pmaster) 789 if (pmaster)
799 { 790 {
800 item = new MHfolderItem( it, pmaster, item, this ); 791 item = new MHfolderItem( (*it), pmaster, item, this );
801 } 792 }
802 else 793 else
803 { 794 {
804 item = new MHfolderItem( it, this , item ); 795 item = new MHfolderItem( (*it), this , item );
805 } 796 }
806 item->setSelectable(it->may_select()); 797 item->setSelectable((*it)->may_select());
807 } 798 }
808 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
809 folders->setAutoDelete(false);
810 delete folders; 799 delete folders;
811} 800}
812 801
813RecBody MHviewItem::fetchBody( const RecMail &mail ) 802RecBody MHviewItem::fetchBody( const RecMail &mail )
814{ 803{
815 qDebug( "MH fetchBody" ); 804 qDebug( "MH fetchBody" );
816 return wrapper->fetchBody( mail ); 805 return wrapper->fetchBody( mail );
817} 806}
818 807
819QPopupMenu * MHviewItem::getContextMenu() 808QPopupMenu * MHviewItem::getContextMenu()
820{ 809{
821 QPopupMenu *m = new QPopupMenu(0); 810 QPopupMenu *m = new QPopupMenu(0);
@@ -869,34 +858,33 @@ void MHviewItem::contextMenuSelected(int which)
869 break; 858 break;
870 case 3: 859 case 3:
871 downloadMails(); 860 downloadMails();
872 break; 861 break;
873 default: 862 default:
874 break; 863 break;
875 } 864 }
876} 865}
877 866
878MHfolderItem::~MHfolderItem() 867MHfolderItem::~MHfolderItem()
879{} 868{}
880 869
881MHfolderItem::MHfolderItem( Folder *folderInit, MHviewItem *parent , QListViewItem*after ) 870MHfolderItem::MHfolderItem( const FolderP &folderInit, MHviewItem *parent , QListViewItem*after )
882 : AccountViewItem( parent,after ) 871 : AccountViewItem(folderInit, parent,after )
883{ 872{
884 folder = folderInit;
885 mbox = parent; 873 mbox = parent;
886 initName(); 874 initName();
887} 875}
888 876
889MHfolderItem::MHfolderItem( Folder *folderInit, MHfolderItem *parent, QListViewItem*after, MHviewItem*master) 877MHfolderItem::MHfolderItem(const FolderP& folderInit, MHfolderItem *parent, QListViewItem*after, MHviewItem*master)
890 : AccountViewItem( parent,after ) 878 : AccountViewItem(folderInit, parent,after )
891{ 879{
892 folder = folderInit; 880 folder = folderInit;
893 mbox = master; 881 mbox = master;
894 initName(); 882 initName();
895} 883}
896 884
897void MHfolderItem::initName() 885void MHfolderItem::initName()
898{ 886{
899 QString bName = folder->getDisplayName(); 887 QString bName = folder->getDisplayName();
900 if (bName.startsWith("/")&&bName.length()>1) 888 if (bName.startsWith("/")&&bName.length()>1)
901 { 889 {
902 bName.replace(0,1,""); 890 bName.replace(0,1,"");
@@ -912,25 +900,25 @@ void MHfolderItem::initName()
912 } 900 }
913 else if (bName.lower() == "inbox") 901 else if (bName.lower() == "inbox")
914 { 902 {
915 setPixmap( 0, PIXMAP_INBOXFOLDER); 903 setPixmap( 0, PIXMAP_INBOXFOLDER);
916 } else if (bName.lower() == "drafts") { 904 } else if (bName.lower() == "drafts") {
917 setPixmap(0, Resource::loadPixmap("inline/edit")); 905 setPixmap(0, Resource::loadPixmap("inline/edit"));
918 } else { 906 } else {
919 setPixmap( 0, PIXMAP_MBOXFOLDER ); 907 setPixmap( 0, PIXMAP_MBOXFOLDER );
920 } 908 }
921 setText( 0, bName ); 909 setText( 0, bName );
922} 910}
923 911
924Folder*MHfolderItem::getFolder() 912const FolderP&MHfolderItem::getFolder()const
925{ 913{
926 return folder; 914 return folder;
927} 915}
928 916
929void MHfolderItem::refresh(QList<RecMail>&target) 917void MHfolderItem::refresh(QList<RecMail>&target)
930{ 918{
931 if (folder->may_select()) 919 if (folder->may_select())
932 mbox->getWrapper()->listMessages( folder->getName(),target ); 920 mbox->getWrapper()->listMessages( folder->getName(),target );
933} 921}
934 922
935RecBody MHfolderItem::fetchBody(const RecMail&aMail) 923RecBody MHfolderItem::fetchBody(const RecMail&aMail)
936{ 924{
@@ -1034,52 +1022,57 @@ bool MHfolderItem::isDraftfolder()
1034 */ 1022 */
1035 1023
1036const QString AccountViewItem::contextName="AccountViewItem"; 1024const QString AccountViewItem::contextName="AccountViewItem";
1037 1025
1038AccountViewItem::AccountViewItem( AccountView *parent ) 1026AccountViewItem::AccountViewItem( AccountView *parent )
1039 : QListViewItem( parent ) 1027 : QListViewItem( parent )
1040{ 1028{
1041 init(); 1029 init();
1042 m_Backlink = parent; 1030 m_Backlink = parent;
1043} 1031}
1044 1032
1045AccountViewItem::AccountViewItem( QListViewItem *parent) 1033AccountViewItem::AccountViewItem( QListViewItem *parent)
1046 : QListViewItem( parent) 1034 : QListViewItem( parent),folder(0)
1047{ 1035{
1048 init(); 1036 init();
1049} 1037}
1050 1038
1051AccountViewItem::AccountViewItem( QListViewItem *parent , QListViewItem*after ) 1039AccountViewItem::AccountViewItem( QListViewItem *parent , QListViewItem*after )
1052 :QListViewItem( parent,after ) 1040 :QListViewItem( parent,after ),folder(0)
1041{
1042 init();
1043}
1044
1045AccountViewItem::AccountViewItem( const Opie::osmart_pointer<Folder>&folderInit,QListViewItem *parent , QListViewItem*after )
1046 :QListViewItem( parent,after ),folder(folderInit)
1053{ 1047{
1054 init(); 1048 init();
1055} 1049}
1056 1050
1057void AccountViewItem::init() 1051void AccountViewItem::init()
1058{ 1052{
1059 m_Backlink = 0; 1053 m_Backlink = 0;
1060 folder = 0;
1061} 1054}
1062 1055
1063AccountViewItem::~AccountViewItem() 1056AccountViewItem::~AccountViewItem()
1064{ 1057{
1065 if (folder) delete folder; 1058 folder = 0;
1066} 1059}
1067 1060
1068AccountView*AccountViewItem::accountView() 1061AccountView*AccountViewItem::accountView()
1069{ 1062{
1070 return m_Backlink; 1063 return m_Backlink;
1071} 1064}
1072 1065
1073void AccountViewItem::deleteAllMail(AbstractMail*wrapper,Folder*folder) 1066void AccountViewItem::deleteAllMail(AbstractMail*wrapper,const FolderP&folder)
1074{ 1067{
1075 if (!wrapper) return; 1068 if (!wrapper) return;
1076 QString fname=""; 1069 QString fname="";
1077 if (folder) fname = folder->getDisplayName(); 1070 if (folder) fname = folder->getDisplayName();
1078 int yesno = QMessageBox::warning(0,QObject::tr("Delete all mails",contextName), 1071 int yesno = QMessageBox::warning(0,QObject::tr("Delete all mails",contextName),
1079 QObject::tr("<center>Realy delete all mails in box <br>%1</center>",contextName). 1072 QObject::tr("<center>Realy delete all mails in box <br>%1</center>",contextName).
1080 arg(fname), 1073 arg(fname),
1081 QObject::tr("Yes",contextName), 1074 QObject::tr("Yes",contextName),
1082 QObject::tr("No",contextName),QString::null,1,1); 1075 QObject::tr("No",contextName),QString::null,1,1);
1083 qDebug("Auswahl: %i",yesno); 1076 qDebug("Auswahl: %i",yesno);
1084 if (yesno == 0) 1077 if (yesno == 0)
1085 { 1078 {
diff --git a/noncore/net/mail/accountitem.h b/noncore/net/mail/accountitem.h
index eb3baa3..8f712f5 100644
--- a/noncore/net/mail/accountitem.h
+++ b/noncore/net/mail/accountitem.h
@@ -1,54 +1,57 @@
1#ifndef __ACCOUNT_ITEM 1#ifndef __ACCOUNT_ITEM
2#define __ACCOUNT_ITEM 2#define __ACCOUNT_ITEM
3 3
4#include <qlistview.h> 4#include <qlistview.h>
5#include <qlist.h> 5#include <qlist.h>
6#include <opie2/osmart_pointer.h>
6 7
7class POP3wrapper; 8class POP3wrapper;
8class RecMail; 9class RecMail;
9class RecBody; 10class RecBody;
10class QPopupMenu; 11class QPopupMenu;
11class Selectstore; 12class Selectstore;
12class AccountView; 13class AccountView;
13class POP3account; 14class POP3account;
14class NNTPaccount; 15class NNTPaccount;
15class IMAPaccount; 16class IMAPaccount;
16class AbstractMail; 17class AbstractMail;
17class Folder; 18class Folder;
18 19
19class AccountViewItem : public QListViewItem 20class AccountViewItem : public QListViewItem
20{ 21{
21 22
22public: 23public:
23 AccountViewItem( AccountView *parent ); 24 AccountViewItem( AccountView *parent );
24 AccountViewItem( QListViewItem *parent); 25 AccountViewItem( QListViewItem *parent);
25 AccountViewItem( QListViewItem *parent , QListViewItem*after ); 26 AccountViewItem( QListViewItem *parent , QListViewItem*after );
27 AccountViewItem( const Opie::osmart_pointer<Folder>&folderInit,QListViewItem *parent , QListViewItem*after );
28
26 virtual ~AccountViewItem(); 29 virtual ~AccountViewItem();
27 virtual void refresh(QList<RecMail>&)=0; 30 virtual void refresh(QList<RecMail>&)=0;
28 virtual RecBody fetchBody(const RecMail&)=0; 31 virtual RecBody fetchBody(const RecMail&)=0;
29 virtual QPopupMenu * getContextMenu(){return 0;}; 32 virtual QPopupMenu * getContextMenu(){return 0;};
30 virtual void contextMenuSelected(int){} 33 virtual void contextMenuSelected(int){}
31 virtual AccountView*accountView(); 34 virtual AccountView*accountView();
32 virtual bool matchName(const QString&name)const; 35 virtual bool matchName(const QString&name)const;
33 virtual bool isDraftfolder(); 36 virtual bool isDraftfolder();
34 37
35protected: 38protected:
36 AccountViewItem*findSubItem(const QString&path,AccountViewItem*start=0); 39 AccountViewItem*findSubItem(const QString&path,AccountViewItem*start=0);
37 virtual void init(); 40 virtual void init();
38 virtual void removeChilds(); 41 virtual void removeChilds();
39 virtual void deleteAllMail(AbstractMail*wrapper,Folder*f); 42 virtual void deleteAllMail(AbstractMail*wrapper,const Opie::osmart_pointer<Folder>&f);
40 static const QString contextName; 43 static const QString contextName;
41 AccountView*m_Backlink; 44 AccountView*m_Backlink;
42 Folder *folder; 45 Opie::osmart_pointer<Folder> folder;
43}; 46};
44 47
45class POP3viewItem : public AccountViewItem 48class POP3viewItem : public AccountViewItem
46{ 49{
47 50
48public: 51public:
49 POP3viewItem( POP3account *a, AccountView *parent ); 52 POP3viewItem( POP3account *a, AccountView *parent );
50 virtual ~POP3viewItem(); 53 virtual ~POP3viewItem();
51 virtual void refresh( QList<RecMail> &target ); 54 virtual void refresh( QList<RecMail> &target );
52 virtual RecBody fetchBody( const RecMail &mail ); 55 virtual RecBody fetchBody( const RecMail &mail );
53 AbstractMail *getWrapper(); 56 AbstractMail *getWrapper();
54 virtual QPopupMenu * getContextMenu(); 57 virtual QPopupMenu * getContextMenu();
@@ -57,25 +60,25 @@ public:
57protected: 60protected:
58 POP3account *account; 61 POP3account *account;
59 virtual void refresh(); 62 virtual void refresh();
60 AbstractMail *wrapper; 63 AbstractMail *wrapper;
61 void disconnect(); 64 void disconnect();
62 void setOnOffline(); 65 void setOnOffline();
63}; 66};
64 67
65class POP3folderItem : public AccountViewItem 68class POP3folderItem : public AccountViewItem
66{ 69{
67 70
68public: 71public:
69 POP3folderItem( Folder *folder, POP3viewItem *parent , QListViewItem*after ); 72 POP3folderItem( const Opie::osmart_pointer<Folder>&folder, POP3viewItem *parent , QListViewItem*after );
70 virtual ~POP3folderItem(); 73 virtual ~POP3folderItem();
71 virtual void refresh(QList<RecMail>&); 74 virtual void refresh(QList<RecMail>&);
72 virtual RecBody fetchBody(const RecMail&); 75 virtual RecBody fetchBody(const RecMail&);
73 virtual QPopupMenu * getContextMenu(); 76 virtual QPopupMenu * getContextMenu();
74 virtual void contextMenuSelected(int); 77 virtual void contextMenuSelected(int);
75 78
76protected: 79protected:
77 void downloadMails(); 80 void downloadMails();
78 POP3viewItem *pop3; 81 POP3viewItem *pop3;
79}; 82};
80 83
81 84
@@ -95,25 +98,25 @@ protected:
95 NNTPaccount *account; 98 NNTPaccount *account;
96 virtual void refresh(); 99 virtual void refresh();
97 AbstractMail *wrapper; 100 AbstractMail *wrapper;
98 void disconnect(); 101 void disconnect();
99 void setOnOffline(); 102 void setOnOffline();
100 void subscribeGroups(); 103 void subscribeGroups();
101}; 104};
102 105
103class NNTPfolderItem : public AccountViewItem 106class NNTPfolderItem : public AccountViewItem
104{ 107{
105 108
106public: 109public:
107 NNTPfolderItem( Folder *folder, NNTPviewItem *parent , QListViewItem*after ); 110 NNTPfolderItem(const Opie::osmart_pointer<Folder>&folder, NNTPviewItem *parent , QListViewItem*after );
108 virtual ~NNTPfolderItem(); 111 virtual ~NNTPfolderItem();
109 virtual void refresh(QList<RecMail>&); 112 virtual void refresh(QList<RecMail>&);
110 virtual RecBody fetchBody(const RecMail&); 113 virtual RecBody fetchBody(const RecMail&);
111 virtual QPopupMenu * getContextMenu(); 114 virtual QPopupMenu * getContextMenu();
112 virtual void contextMenuSelected(int); 115 virtual void contextMenuSelected(int);
113 116
114protected: 117protected:
115 void downloadMails(); 118 void downloadMails();
116 NNTPviewItem *nntp; 119 NNTPviewItem *nntp;
117}; 120};
118 121
119 122
@@ -135,26 +138,26 @@ public:
135 138
136protected: 139protected:
137 virtual void createNewFolder(); 140 virtual void createNewFolder();
138 IMAPaccount *account; 141 IMAPaccount *account;
139 AbstractMail *wrapper; 142 AbstractMail *wrapper;
140 QStringList currentFolders; 143 QStringList currentFolders;
141}; 144};
142 145
143class IMAPfolderItem : public AccountViewItem 146class IMAPfolderItem : public AccountViewItem
144{ 147{
145 148
146public: 149public:
147 IMAPfolderItem( Folder *folder, IMAPviewItem *parent , QListViewItem*after ); 150 IMAPfolderItem( const Opie::osmart_pointer<Folder>&folder, IMAPviewItem *parent , QListViewItem*after );
148 IMAPfolderItem( Folder *folder, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master ); 151 IMAPfolderItem( const Opie::osmart_pointer<Folder>&folder, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master );
149 virtual ~IMAPfolderItem(); 152 virtual ~IMAPfolderItem();
150 virtual void refresh(QList<RecMail>&); 153 virtual void refresh(QList<RecMail>&);
151 virtual RecBody fetchBody(const RecMail&); 154 virtual RecBody fetchBody(const RecMail&);
152 virtual QPopupMenu * getContextMenu(); 155 virtual QPopupMenu * getContextMenu();
153 virtual void contextMenuSelected(int); 156 virtual void contextMenuSelected(int);
154 virtual const QString& Delemiter()const; 157 virtual const QString& Delemiter()const;
155protected: 158protected:
156 virtual void createNewFolder(); 159 virtual void createNewFolder();
157 virtual void deleteFolder(); 160 virtual void deleteFolder();
158 virtual void downloadMails(); 161 virtual void downloadMails();
159 IMAPviewItem *imap; 162 IMAPviewItem *imap;
160}; 163};
@@ -177,31 +180,31 @@ public:
177protected: 180protected:
178 void downloadMails(); 181 void downloadMails();
179 virtual void createFolder(); 182 virtual void createFolder();
180 QString m_Path; 183 QString m_Path;
181 AbstractMail *wrapper; 184 AbstractMail *wrapper;
182 QStringList currentFolders; 185 QStringList currentFolders;
183}; 186};
184 187
185class MHfolderItem : public AccountViewItem 188class MHfolderItem : public AccountViewItem
186{ 189{
187 190
188public: 191public:
189 MHfolderItem( Folder *folder, MHviewItem *parent , QListViewItem*after ); 192 MHfolderItem( const Opie::osmart_pointer<Folder>&folder, MHviewItem *parent , QListViewItem*after );
190 MHfolderItem( Folder *folder, MHfolderItem *parent, QListViewItem*after, MHviewItem*master); 193 MHfolderItem( const Opie::osmart_pointer<Folder>&folder, MHfolderItem *parent, QListViewItem*after, MHviewItem*master);
191 virtual ~MHfolderItem(); 194 virtual ~MHfolderItem();
192 virtual void refresh(QList<RecMail>&); 195 virtual void refresh(QList<RecMail>&);
193 virtual RecBody fetchBody(const RecMail&); 196 virtual RecBody fetchBody(const RecMail&);
194 virtual QPopupMenu * getContextMenu(); 197 virtual QPopupMenu * getContextMenu();
195 virtual void contextMenuSelected(int); 198 virtual void contextMenuSelected(int);
196 virtual Folder*getFolder(); 199 virtual const Opie::osmart_pointer<Folder>&getFolder()const;
197 virtual bool isDraftfolder(); 200 virtual bool isDraftfolder();
198 201
199protected: 202protected:
200 void downloadMails(); 203 void downloadMails();
201 virtual void createFolder(); 204 virtual void createFolder();
202 virtual void deleteFolder(); 205 virtual void deleteFolder();
203 void initName(); 206 void initName();
204 MHviewItem *mbox; 207 MHviewItem *mbox;
205}; 208};
206 209
207#endif 210#endif
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index 7938d4f..297f553 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -134,25 +134,25 @@ void AccountView::setupFolderselect(Selectstore*sels)
134 sFolders = mhAccounts[i]->subFolders(); 134 sFolders = mhAccounts[i]->subFolders();
135 sels->addAccounts(mhAccounts[i]->getWrapper(),sFolders); 135 sels->addAccounts(mhAccounts[i]->getWrapper(),sFolders);
136 } 136 }
137 for (i=0; i < imapAccounts.count();++i) 137 for (i=0; i < imapAccounts.count();++i)
138 { 138 {
139 if (imapAccounts[i]->offline()) 139 if (imapAccounts[i]->offline())
140 continue; 140 continue;
141 imapAccounts[i]->refreshFolders(false); 141 imapAccounts[i]->refreshFolders(false);
142 sels->addAccounts(imapAccounts[i]->getWrapper(),imapAccounts[i]->subFolders()); 142 sels->addAccounts(imapAccounts[i]->getWrapper(),imapAccounts[i]->subFolders());
143 } 143 }
144} 144}
145 145
146void AccountView::downloadMails(Folder*fromFolder,AbstractMail*fromWrapper) 146void AccountView::downloadMails(const FolderP&fromFolder,AbstractMail*fromWrapper)
147{ 147{
148 AbstractMail*targetMail = 0; 148 AbstractMail*targetMail = 0;
149 QString targetFolder = ""; 149 QString targetFolder = "";
150 Selectstore sels; 150 Selectstore sels;
151 setupFolderselect(&sels); 151 setupFolderselect(&sels);
152 if (!sels.exec()) return; 152 if (!sels.exec()) return;
153 targetMail = sels.currentMail(); 153 targetMail = sels.currentMail();
154 targetFolder = sels.currentFolder(); 154 targetFolder = sels.currentFolder();
155 if ( (fromWrapper==targetMail && fromFolder->getName()==targetFolder) || 155 if ( (fromWrapper==targetMail && fromFolder->getName()==targetFolder) ||
156 targetFolder.isEmpty()) 156 targetFolder.isEmpty())
157 { 157 {
158 return; 158 return;
diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h
index 5000202..3478c0b 100644
--- a/noncore/net/mail/accountview.h
+++ b/noncore/net/mail/accountview.h
@@ -1,45 +1,46 @@
1#ifndef ACCOUNTVIEW_H 1#ifndef ACCOUNTVIEW_H
2#define ACCOUNTVIEW_H 2#define ACCOUNTVIEW_H
3 3
4#include <qlistview.h> 4#include <qlistview.h>
5#include <qlist.h> 5#include <qlist.h>
6#include <opie2/osmart_pointer.h>
6 7
7class Selectstore; 8class Selectstore;
8class RecMail; 9class RecMail;
9class RecBody; 10class RecBody;
10class Folder; 11class Folder;
11class AbstractMail; 12class AbstractMail;
12class Account; 13class Account;
13class IMAPviewItem; 14class IMAPviewItem;
14class MHviewItem; 15class MHviewItem;
15 16
16class AccountView : public QListView 17class AccountView : public QListView
17{ 18{
18 Q_OBJECT 19 Q_OBJECT
19 20
20public: 21public:
21 AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); 22 AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 );
22 virtual ~AccountView(); 23 virtual ~AccountView();
23 virtual void populate( QList<Account> list ); 24 virtual void populate( QList<Account> list );
24 virtual RecBody fetchBody(const RecMail&aMail); 25 virtual RecBody fetchBody(const RecMail&aMail);
25 virtual void downloadMails(Folder*fromFolder,AbstractMail*fromWrapper); 26 virtual void downloadMails(const Opie::osmart_pointer<Folder>&fromFolder,AbstractMail*fromWrapper);
26 virtual bool currentisDraft(); 27 virtual bool currentisDraft();
27 28
28public slots: 29public slots:
29 virtual void refreshAll(); 30 virtual void refreshAll();
30 virtual void refresh(QListViewItem *item); 31 virtual void refresh(QListViewItem *item);
31 virtual void refreshCurrent(); 32 virtual void refreshCurrent();
32 virtual void slotHold(int, QListViewItem *,const QPoint&,int); 33 virtual void slotHold(int, QListViewItem *,const QPoint&,int);
33 virtual void slotContextMenu(int id); 34 virtual void slotContextMenu(int id);
34 void setupFolderselect(Selectstore*sels); 35 void setupFolderselect(Selectstore*sels);
35 36
36signals: 37signals:
37 void refreshMailview(QList<RecMail>*); 38 void refreshMailview(QList<RecMail>*);
38 39
39protected: 40protected:
40 QListViewItem* m_currentItem; 41 QListViewItem* m_currentItem;
41 QValueList<IMAPviewItem*> imapAccounts; 42 QValueList<IMAPviewItem*> imapAccounts;
42 QValueList<MHviewItem*> mhAccounts; 43 QValueList<MHviewItem*> mhAccounts;
43}; 44};
44 45
45#endif 46#endif
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp
index ac6f380..7e6d383 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.cpp
+++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp
@@ -102,47 +102,48 @@ QString AbstractMail::convert_String(const char*text)
102/* cp & paste from launcher */ 102/* cp & paste from launcher */
103QString AbstractMail::gen_attachment_id() 103QString AbstractMail::gen_attachment_id()
104{ 104{
105 QFile file( "/proc/sys/kernel/random/uuid" ); 105 QFile file( "/proc/sys/kernel/random/uuid" );
106 if (!file.open(IO_ReadOnly ) ) 106 if (!file.open(IO_ReadOnly ) )
107 return QString::null; 107 return QString::null;
108 108
109 QTextStream stream(&file); 109 QTextStream stream(&file);
110 110
111 return "{" + stream.read().stripWhiteSpace() + "}"; 111 return "{" + stream.read().stripWhiteSpace() + "}";
112} 112}
113 113
114int AbstractMail::createMbox(const QString&,const Folder*,const QString& delemiter,bool) 114int AbstractMail::createMbox(const QString&,const FolderP&,const QString& delemiter,bool)
115{ 115{
116 return 0; 116 return 0;
117} 117}
118 118
119QString AbstractMail::defaultLocalfolder() 119QString AbstractMail::defaultLocalfolder()
120{ 120{
121 QString f = getenv( "HOME" ); 121 QString f = getenv( "HOME" );
122 f += "/Applications/opiemail/localmail"; 122 f += "/Applications/opiemail/localmail";
123 return f; 123 return f;
124} 124}
125 125
126QString AbstractMail::draftFolder() 126QString AbstractMail::draftFolder()
127{ 127{
128 return QString("Drafts"); 128 return QString("Drafts");
129} 129}
130 130
131/* temporary - will be removed when implemented in all classes */ 131/* temporary - will be removed when implemented in all classes */
132void AbstractMail::deleteMails(const QString &,QList<RecMail> &) 132void AbstractMail::deleteMails(const QString &,QList<RecMail> &)
133{ 133{
134} 134}
135 135
136void AbstractMail::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 136void AbstractMail::mvcpAllMails(const FolderP&fromFolder,
137 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
137{ 138{
138 QList<RecMail> t; 139 QList<RecMail> t;
139 listMessages(fromFolder->getName(),t); 140 listMessages(fromFolder->getName(),t);
140 encodedString*st = 0; 141 encodedString*st = 0;
141 while (t.count()>0) { 142 while (t.count()>0) {
142 RecMail*r = t.at(0); 143 RecMail*r = t.at(0);
143 st = fetchRawBody(*r); 144 st = fetchRawBody(*r);
144 if (st) { 145 if (st) {
145 targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); 146 targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder);
146 delete st; 147 delete st;
147 } 148 }
148 t.removeFirst(); 149 t.removeFirst();
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h
index d377452..d911468 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.h
+++ b/noncore/net/mail/libmailwrapper/abstractmail.h
@@ -1,61 +1,65 @@
1#ifndef __abstract_mail_ 1#ifndef __abstract_mail_
2#define __abstract_mail_ 2#define __abstract_mail_
3 3
4#include "maildefines.h" 4#include "maildefines.h"
5 5
6#include <qobject.h>
7#include "settings.h" 6#include "settings.h"
8 7
8#include <qobject.h>
9#include <opie2/osmart_pointer.h>
10
9class RecMail; 11class RecMail;
10class RecBody; 12class RecBody;
11class RecPart; 13class RecPart;
12class IMAPwrapper; 14class IMAPwrapper;
13class POP3wrapper; 15class POP3wrapper;
14class Folder; 16class Folder;
15class encodedString; 17class encodedString;
16struct folderStat; 18struct folderStat;
17 19
18class AbstractMail:public QObject 20class AbstractMail:public QObject
19{ 21{
20 Q_OBJECT 22 Q_OBJECT
21public: 23public:
22 AbstractMail(){}; 24 AbstractMail(){};
23 virtual ~AbstractMail(){} 25 virtual ~AbstractMail(){}
24 virtual QList<Folder>* listFolders()=0; 26 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders()=0;
25 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0; 27 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0;
26 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX")=0; 28 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX")=0;
27 virtual RecBody fetchBody(const RecMail&mail)=0; 29 virtual RecBody fetchBody(const RecMail&mail)=0;
28 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part)=0; 30 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part)=0;
29 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part)=0; 31 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part)=0;
30 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part)=0; 32 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part)=0;
31 virtual encodedString* fetchRawBody(const RecMail&mail)=0; 33 virtual encodedString* fetchRawBody(const RecMail&mail)=0;
32 34
33 virtual void deleteMail(const RecMail&mail)=0; 35 virtual void deleteMail(const RecMail&mail)=0;
34 virtual void answeredMail(const RecMail&mail)=0; 36 virtual void answeredMail(const RecMail&mail)=0;
35 virtual int deleteAllMail(const Folder*)=0; 37 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&)=0;
36 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target); 38 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
37 virtual int deleteMbox(const Folder*)=0; 39 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&)=0;
38 virtual void storeMessage(const char*msg,size_t length, const QString&folder)=0; 40 virtual void storeMessage(const char*msg,size_t length, const QString&folder)=0;
39 41
40 virtual void mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 42 virtual void mvcpAllMails(const Opie::osmart_pointer<Folder>&fromFolder,
43 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
41 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 44 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
42 45
43 virtual void cleanMimeCache(){}; 46 virtual void cleanMimeCache(){};
44 /* mail box methods */ 47 /* mail box methods */
45 /* parameter is the box to create. 48 /* parameter is the box to create.
46 * if the implementing subclass has prefixes, 49 * if the implementing subclass has prefixes,
47 * them has to be appended automatic. 50 * them has to be appended automatic.
48 */ 51 */
49 virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false); 52 virtual int createMbox(const QString&,const Opie::osmart_pointer<Folder>&parentfolder=0,
53 const QString& delemiter="/",bool getsubfolder=false);
50 virtual void logout()=0; 54 virtual void logout()=0;
51 55
52 static AbstractMail* getWrapper(IMAPaccount *a); 56 static AbstractMail* getWrapper(IMAPaccount *a);
53 static AbstractMail* getWrapper(POP3account *a); 57 static AbstractMail* getWrapper(POP3account *a);
54 static AbstractMail* getWrapper(NNTPaccount *a); 58 static AbstractMail* getWrapper(NNTPaccount *a);
55 /* mbox only! */ 59 /* mbox only! */
56 static AbstractMail* getWrapper(const QString&a,const QString&name="Local Folders"); 60 static AbstractMail* getWrapper(const QString&a,const QString&name="Local Folders");
57 static AbstractMail* getWrapper(Account*a); 61 static AbstractMail* getWrapper(Account*a);
58 62
59 static QString defaultLocalfolder(); 63 static QString defaultLocalfolder();
60 static QString draftFolder(); 64 static QString draftFolder();
61 65
diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.h b/noncore/net/mail/libmailwrapper/genericwrapper.h
index b3cd4fe..d0db45a 100644
--- a/noncore/net/mail/libmailwrapper/genericwrapper.h
+++ b/noncore/net/mail/libmailwrapper/genericwrapper.h
@@ -29,25 +29,25 @@ struct mailimf_in_reply_to;
29 */ 29 */
30class Genericwrapper : public AbstractMail 30class Genericwrapper : public AbstractMail
31{ 31{
32 Q_OBJECT 32 Q_OBJECT
33public: 33public:
34 Genericwrapper(); 34 Genericwrapper();
35 virtual ~Genericwrapper(); 35 virtual ~Genericwrapper();
36 36
37 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part); 37 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part);
38 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part); 38 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part);
39 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part); 39 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part);
40 virtual void cleanMimeCache(); 40 virtual void cleanMimeCache();
41 virtual int deleteMbox(const Folder*){return 1;} 41 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&){return 1;}
42 virtual void logout(){}; 42 virtual void logout(){};
43 virtual void storeMessage(const char*msg,size_t length, const QString&folder){}; 43 virtual void storeMessage(const char*msg,size_t length, const QString&folder){};
44 44
45protected: 45protected:
46 RecBody parseMail( mailmessage * msg ); 46 RecBody parseMail( mailmessage * msg );
47 QString parseMailboxList( mailimf_mailbox_list *list ); 47 QString parseMailboxList( mailimf_mailbox_list *list );
48 QString parseMailbox( mailimf_mailbox *box ); 48 QString parseMailbox( mailimf_mailbox *box );
49 QString parseGroup( mailimf_group *group ); 49 QString parseGroup( mailimf_group *group );
50 QString parseAddressList( mailimf_address_list *list ); 50 QString parseAddressList( mailimf_address_list *list );
51 QString parseDateTime( mailimf_date_time *date ); 51 QString parseDateTime( mailimf_date_time *date );
52 52
53 void traverseBody(RecBody&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rek=0,int current_count=1); 53 void traverseBody(RecBody&target,mailmessage*message,mailmime*mime,QValueList<int>recList,unsigned int current_rek=0,int current_count=1);
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index e29a0a0..3b3be0f 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -257,35 +257,34 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target )
257 m->setMbox(mailbox); 257 m->setMbox(mailbox);
258 m->setWrapper(this); 258 m->setWrapper(this);
259 target.append(m); 259 target.append(m);
260 } 260 }
261 } 261 }
262 Global::statusMessage(tr("Mailbox has %1 mails").arg(target.count())); 262 Global::statusMessage(tr("Mailbox has %1 mails").arg(target.count()));
263 } else { 263 } else {
264 Global::statusMessage(tr("Error fetching headers: %1").arg(m_imap->imap_response)); 264 Global::statusMessage(tr("Error fetching headers: %1").arg(m_imap->imap_response));
265 } 265 }
266 if (result) mailimap_fetch_list_free(result); 266 if (result) mailimap_fetch_list_free(result);
267} 267}
268 268
269QList<Folder>* IMAPwrapper::listFolders() 269QValueList<Opie::osmart_pointer<Folder> >* IMAPwrapper::listFolders()
270{ 270{
271 const char *path, *mask; 271 const char *path, *mask;
272 int err = MAILIMAP_NO_ERROR; 272 int err = MAILIMAP_NO_ERROR;
273 clist *result = 0; 273 clist *result = 0;
274 clistcell *current = 0; 274 clistcell *current = 0;
275 clistcell*cur_flag = 0; 275 clistcell*cur_flag = 0;
276 mailimap_mbx_list_flags*bflags = 0; 276 mailimap_mbx_list_flags*bflags = 0;
277 277
278 QList<Folder> * folders = new QList<Folder>(); 278 QValueList<FolderP>* folders = new QValueList<FolderP>();
279 folders->setAutoDelete( false );
280 login(); 279 login();
281 if (!m_imap) { 280 if (!m_imap) {
282 return folders; 281 return folders;
283 } 282 }
284 283
285/* 284/*
286 * First we have to check for INBOX 'cause it sometimes it's not inside the path. 285 * First we have to check for INBOX 'cause it sometimes it's not inside the path.
287 * We must not forget to filter them out in next loop! 286 * We must not forget to filter them out in next loop!
288 * it seems like ugly code. and yes - it is ugly code. but the best way. 287 * it seems like ugly code. and yes - it is ugly code. but the best way.
289 */ 288 */
290 QString temp; 289 QString temp;
291 mask = "INBOX" ; 290 mask = "INBOX" ;
@@ -957,25 +956,25 @@ encodedString* IMAPwrapper::fetchDecodedPart(const RecMail&mail,const RecPart&pa
957{ 956{
958 encodedString*res = fetchRawPart(mail,part.Positionlist(),false); 957 encodedString*res = fetchRawPart(mail,part.Positionlist(),false);
959 encodedString*r = decode_String(res,part.Encoding()); 958 encodedString*r = decode_String(res,part.Encoding());
960 delete res; 959 delete res;
961 return r; 960 return r;
962} 961}
963 962
964encodedString* IMAPwrapper::fetchRawPart(const RecMail&mail,const RecPart&part) 963encodedString* IMAPwrapper::fetchRawPart(const RecMail&mail,const RecPart&part)
965{ 964{
966 return fetchRawPart(mail,part.Positionlist(),false); 965 return fetchRawPart(mail,part.Positionlist(),false);
967} 966}
968 967
969int IMAPwrapper::deleteAllMail(const Folder*folder) 968int IMAPwrapper::deleteAllMail(const FolderP&folder)
970{ 969{
971 login(); 970 login();
972 if (!m_imap) { 971 if (!m_imap) {
973 return 0; 972 return 0;
974 } 973 }
975 mailimap_flag_list*flist; 974 mailimap_flag_list*flist;
976 mailimap_set *set; 975 mailimap_set *set;
977 mailimap_store_att_flags * store_flags; 976 mailimap_store_att_flags * store_flags;
978 int err = selectMbox(folder->getName()); 977 int err = selectMbox(folder->getName());
979 if ( err != MAILIMAP_NO_ERROR ) { 978 if ( err != MAILIMAP_NO_ERROR ) {
980 return 0; 979 return 0;
981 } 980 }
@@ -998,25 +997,25 @@ int IMAPwrapper::deleteAllMail(const Folder*folder)
998 } 997 }
999 qDebug("deleting mail: %s",m_imap->imap_response); 998 qDebug("deleting mail: %s",m_imap->imap_response);
1000 /* should we realy do that at this moment? */ 999 /* should we realy do that at this moment? */
1001 err = mailimap_expunge(m_imap); 1000 err = mailimap_expunge(m_imap);
1002 if (err != MAILIMAP_NO_ERROR) { 1001 if (err != MAILIMAP_NO_ERROR) {
1003 Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response)); 1002 Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response));
1004 return 0; 1003 return 0;
1005 } 1004 }
1006 qDebug("Delete successfull %s",m_imap->imap_response); 1005 qDebug("Delete successfull %s",m_imap->imap_response);
1007 return 1; 1006 return 1;
1008} 1007}
1009 1008
1010int IMAPwrapper::createMbox(const QString&folder,const Folder*parentfolder,const QString& delemiter,bool getsubfolder) 1009int IMAPwrapper::createMbox(const QString&folder,const FolderP&parentfolder,const QString& delemiter,bool getsubfolder)
1011{ 1010{
1012 if (folder.length()==0) return 0; 1011 if (folder.length()==0) return 0;
1013 login(); 1012 login();
1014 if (!m_imap) {return 0;} 1013 if (!m_imap) {return 0;}
1015 QString pre = account->getPrefix(); 1014 QString pre = account->getPrefix();
1016 if (delemiter.length()>0 && pre.findRev(delemiter)!=pre.length()-1) { 1015 if (delemiter.length()>0 && pre.findRev(delemiter)!=pre.length()-1) {
1017 pre+=delemiter; 1016 pre+=delemiter;
1018 } 1017 }
1019 if (parentfolder) { 1018 if (parentfolder) {
1020 pre += parentfolder->getDisplayName()+delemiter; 1019 pre += parentfolder->getDisplayName()+delemiter;
1021 } 1020 }
1022 pre+=folder; 1021 pre+=folder;
@@ -1028,25 +1027,25 @@ int IMAPwrapper::createMbox(const QString&folder,const Folder*parentfolder,const
1028 return 0; 1027 return 0;
1029 } 1028 }
1030 } 1029 }
1031 qDebug("Creating %s",pre.latin1()); 1030 qDebug("Creating %s",pre.latin1());
1032 int res = mailimap_create(m_imap,pre.latin1()); 1031 int res = mailimap_create(m_imap,pre.latin1());
1033 if (res != MAILIMAP_NO_ERROR) { 1032 if (res != MAILIMAP_NO_ERROR) {
1034 Global::statusMessage(tr("%1").arg(m_imap->imap_response)); 1033 Global::statusMessage(tr("%1").arg(m_imap->imap_response));
1035 return 0; 1034 return 0;
1036 } 1035 }
1037 return 1; 1036 return 1;
1038} 1037}
1039 1038
1040int IMAPwrapper::deleteMbox(const Folder*folder) 1039int IMAPwrapper::deleteMbox(const FolderP&folder)
1041{ 1040{
1042 if (!folder) return 0; 1041 if (!folder) return 0;
1043 login(); 1042 login();
1044 if (!m_imap) {return 0;} 1043 if (!m_imap) {return 0;}
1045 int res = mailimap_delete(m_imap,folder->getName()); 1044 int res = mailimap_delete(m_imap,folder->getName());
1046 if (res != MAILIMAP_NO_ERROR) { 1045 if (res != MAILIMAP_NO_ERROR) {
1047 Global::statusMessage(tr("%1").arg(m_imap->imap_response)); 1046 Global::statusMessage(tr("%1").arg(m_imap->imap_response));
1048 return 0; 1047 return 0;
1049 } 1048 }
1050 return 1; 1049 return 1;
1051} 1050}
1052 1051
@@ -1114,25 +1113,26 @@ const QString&IMAPwrapper::getName()const
1114{ 1113{
1115 qDebug("Get name: %s",account->getAccountName().latin1()); 1114 qDebug("Get name: %s",account->getAccountName().latin1());
1116 return account->getAccountName(); 1115 return account->getAccountName();
1117} 1116}
1118 1117
1119encodedString* IMAPwrapper::fetchRawBody(const RecMail&mail) 1118encodedString* IMAPwrapper::fetchRawBody(const RecMail&mail)
1120{ 1119{
1121 // dummy 1120 // dummy
1122 QValueList<int> path; 1121 QValueList<int> path;
1123 return fetchRawPart(mail,path,false); 1122 return fetchRawPart(mail,path,false);
1124} 1123}
1125 1124
1126void IMAPwrapper::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 1125void IMAPwrapper::mvcpAllMails(const FolderP&fromFolder,
1126 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
1127{ 1127{
1128 if (targetWrapper != this) { 1128 if (targetWrapper != this) {
1129 AbstractMail::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit); 1129 AbstractMail::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit);
1130 qDebug("Using generic"); 1130 qDebug("Using generic");
1131 return; 1131 return;
1132 } 1132 }
1133 mailimap_set *set = 0; 1133 mailimap_set *set = 0;
1134 login(); 1134 login();
1135 if (!m_imap) { 1135 if (!m_imap) {
1136 return; 1136 return;
1137 } 1137 }
1138 int err = selectMbox(fromFolder->getName()); 1138 int err = selectMbox(fromFolder->getName());
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h
index 2623725..15f049f 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.h
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.h
@@ -14,65 +14,67 @@ struct mailimap_body_type_basic;
14struct mailimap_body_type_msg; 14struct mailimap_body_type_msg;
15struct mailimap_body_type_mpart; 15struct mailimap_body_type_mpart;
16struct mailimap_body_fields; 16struct mailimap_body_fields;
17struct mailimap_msg_att; 17struct mailimap_msg_att;
18class encodedString; 18class encodedString;
19 19
20class IMAPwrapper : public AbstractMail 20class IMAPwrapper : public AbstractMail
21{ 21{
22 Q_OBJECT 22 Q_OBJECT
23public: 23public:
24 IMAPwrapper( IMAPaccount *a ); 24 IMAPwrapper( IMAPaccount *a );
25 virtual ~IMAPwrapper(); 25 virtual ~IMAPwrapper();
26 virtual QList<Folder>* listFolders(); 26 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
27 virtual void listMessages(const QString & mailbox,QList<RecMail>&target ); 27 virtual void listMessages(const QString & mailbox,QList<RecMail>&target );
28 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 28 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
29 29
30 virtual void deleteMail(const RecMail&mail); 30 virtual void deleteMail(const RecMail&mail);
31 virtual void answeredMail(const RecMail&mail); 31 virtual void answeredMail(const RecMail&mail);
32 virtual int deleteAllMail(const Folder*folder); 32 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&folder);
33 virtual void storeMessage(const char*msg,size_t length, const QString&folder); 33 virtual void storeMessage(const char*msg,size_t length, const QString&folder);
34 virtual void mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 34 virtual void mvcpAllMails(const Opie::osmart_pointer<Folder>&fromFolder,
35 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
35 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 36 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
36 37
37 virtual RecBody fetchBody(const RecMail&mail); 38 virtual RecBody fetchBody(const RecMail&mail);
38 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part); 39 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part);
39 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part); 40 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part);
40 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part); 41 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part);
41 virtual encodedString* fetchRawBody(const RecMail&mail); 42 virtual encodedString* fetchRawBody(const RecMail&mail);
42 43
43 virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false); 44 virtual int createMbox(const QString&,const Opie::osmart_pointer<Folder>&parentfolder=0,
44 virtual int deleteMbox(const Folder*folder); 45 const QString& delemiter="/",bool getsubfolder=false);
45 46 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&folder);
47
46 static void imap_progress( size_t current, size_t maximum ); 48 static void imap_progress( size_t current, size_t maximum );
47 49
48 virtual void logout(); 50 virtual void logout();
49 virtual MAILLIB::ATYPE getType()const; 51 virtual MAILLIB::ATYPE getType()const;
50 virtual const QString&getName()const; 52 virtual const QString&getName()const;
51 53
52protected: 54protected:
53 RecMail*parse_list_result(mailimap_msg_att*); 55 RecMail*parse_list_result(mailimap_msg_att*);
54 void login(); 56 void login();
55 bool start_tls(bool force=true); 57 bool start_tls(bool force=true);
56 58
57 virtual QString fetchTextPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false,const QString&enc=""); 59 virtual QString fetchTextPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false,const QString&enc="");
58 virtual encodedString*fetchRawPart(const RecMail&mail,const QValueList<int>&path,bool internal_call); 60 virtual encodedString*fetchRawPart(const RecMail&mail,const QValueList<int>&path,bool internal_call);
59 int selectMbox(const QString&mbox); 61 int selectMbox(const QString&mbox);
60 62
61 void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description); 63 void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description);
62 void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which); 64 void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which);
63 void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which); 65 void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which);
64 void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which); 66 void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which);
65 void fillMultiPart(RecPart&target_part,mailimap_body_type_mpart*which); 67 void fillMultiPart(RecPart&target_part,mailimap_body_type_mpart*which);
66 void traverseBody(const RecMail&mail,mailimap_body*body,RecBody&target_body,int current_recursion,QValueList<int>recList,int current_count=1); 68 void traverseBody(const RecMail&mail,mailimap_body*body,RecBody&target_body,int current_recursion,QValueList<int>recList,int current_count=1);
67 69
68 /* just helpers */ 70 /* just helpers */
69 static void fillBodyFields(RecPart&target_part,mailimap_body_fields*which); 71 static void fillBodyFields(RecPart&target_part,mailimap_body_fields*which);
70 static QStringList address_list_to_stringlist(clist*list); 72 static QStringList address_list_to_stringlist(clist*list);
71 73
72 74
73 IMAPaccount *account; 75 IMAPaccount *account;
74 mailimap *m_imap; 76 mailimap *m_imap;
75 QString m_Lastmbox; 77 QString m_Lastmbox;
76}; 78};
77 79
78#endif 80#endif
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.h b/noncore/net/mail/libmailwrapper/mailtypes.h
index 17c6db9..10d367f 100644
--- a/noncore/net/mail/libmailwrapper/mailtypes.h
+++ b/noncore/net/mail/libmailwrapper/mailtypes.h
@@ -1,23 +1,22 @@
1#ifndef __MAIL_TYPES_H 1#ifndef __MAIL_TYPES_H
2#define __MAIL_TYPES_H 2#define __MAIL_TYPES_H
3 3
4#define FLAG_ANSWERED 0 4#define FLAG_ANSWERED 0
5#define FLAG_FLAGGED 1 5#define FLAG_FLAGGED 1
6#define FLAG_DELETED 2 6#define FLAG_DELETED 2
7#define FLAG_SEEN 3 7#define FLAG_SEEN 3
8#define FLAG_DRAFT 4 8#define FLAG_DRAFT 4
9#define FLAG_RECENT 5 9#define FLAG_RECENT 5
10 10
11#include <qlist.h>
12#include <qbitarray.h> 11#include <qbitarray.h>
13#include <qstring.h> 12#include <qstring.h>
14#include <qstringlist.h> 13#include <qstringlist.h>
15#include <qmap.h> 14#include <qmap.h>
16#include <qvaluelist.h> 15#include <qvaluelist.h>
17 16
18class AbstractMail; 17class AbstractMail;
19/* a class to describe mails in a mailbox */ 18/* a class to describe mails in a mailbox */
20/* Attention! 19/* Attention!
21 From programmers point of view it would make sense to 20 From programmers point of view it would make sense to
22 store the mail body into this class, too. 21 store the mail body into this class, too.
23 But: not from the point of view of the device. 22 But: not from the point of view of the device.
diff --git a/noncore/net/mail/libmailwrapper/mailwrapper.cpp b/noncore/net/mail/libmailwrapper/mailwrapper.cpp
index 6bd98f6..c71d69f 100644
--- a/noncore/net/mail/libmailwrapper/mailwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mailwrapper.cpp
@@ -26,46 +26,54 @@ Attachment::Attachment( DocLnk lnk )
26 doc = lnk; 26 doc = lnk;
27 size = QFileInfo( doc.file() ).size(); 27 size = QFileInfo( doc.file() ).size();
28} 28}
29 29
30Folder::Folder(const QString&tmp_name, const QString&sep ) 30Folder::Folder(const QString&tmp_name, const QString&sep )
31{ 31{
32 name = tmp_name; 32 name = tmp_name;
33 nameDisplay = name; 33 nameDisplay = name;
34 separator = sep; 34 separator = sep;
35 prefix = ""; 35 prefix = "";
36} 36}
37 37
38Folder::~Folder()
39{
40}
41
38const QString& Folder::Separator()const 42const QString& Folder::Separator()const
39{ 43{
40 return separator; 44 return separator;
41} 45}
42 46
43IMAPFolder::IMAPFolder(const QString&name,const QString&sep, bool select,bool no_inf, const QString&aprefix ) 47IMAPFolder::IMAPFolder(const QString&name,const QString&sep, bool select,bool no_inf, const QString&aprefix )
44 : Folder( name,sep ),m_MaySelect(select),m_NoInferior(no_inf) 48 : Folder( name,sep ),m_MaySelect(select),m_NoInferior(no_inf)
45{ 49{
46 // Decode IMAP foldername 50 // Decode IMAP foldername
47 nameDisplay = IMAPFolder::decodeFolderName( name ); 51 nameDisplay = IMAPFolder::decodeFolderName( name );
48 /* 52 /*
49 qDebug( "folder " + name + " - displayed as " + nameDisplay ); 53 qDebug( "folder " + name + " - displayed as " + nameDisplay );
50 */ 54 */
51 prefix = aprefix; 55 prefix = aprefix;
52 56
53 if (prefix.length()>0) { 57 if (prefix.length()>0) {
54 if (nameDisplay.startsWith(prefix) && nameDisplay.length()>prefix.length()) { 58 if (nameDisplay.startsWith(prefix) && nameDisplay.length()>prefix.length()) {
55 nameDisplay=nameDisplay.right(nameDisplay.length()-prefix.length()); 59 nameDisplay=nameDisplay.right(nameDisplay.length()-prefix.length());
56 } 60 }
57 } 61 }
58} 62}
59 63
64IMAPFolder::~IMAPFolder()
65{
66}
67
60static unsigned char base64chars[] = 68static unsigned char base64chars[] =
61 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,"; 69 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,";
62 70
63/** 71/**
64 * Decodes base64 encoded parts of the imapfolder name 72 * Decodes base64 encoded parts of the imapfolder name
65 * Code taken from kde cvs: kdebase/kioslave/imap4/rfcdecoder.cc 73 * Code taken from kde cvs: kdebase/kioslave/imap4/rfcdecoder.cc
66 */ 74 */
67QString IMAPFolder::decodeFolderName( const QString &name ) 75QString IMAPFolder::decodeFolderName( const QString &name )
68{ 76{
69 unsigned char c, i, bitcount; 77 unsigned char c, i, bitcount;
70 unsigned long ucs4, utf16, bitbuf; 78 unsigned long ucs4, utf16, bitbuf;
71 unsigned char base64[256], utf8[6]; 79 unsigned char base64[256], utf8[6];
@@ -155,12 +163,16 @@ MHFolder::MHFolder(const QString&disp_name,const QString&mbox)
155 : Folder( disp_name,"/" ) 163 : Folder( disp_name,"/" )
156{ 164{
157 separator = "/"; 165 separator = "/";
158 name = mbox; 166 name = mbox;
159 if (!disp_name.startsWith("/") && disp_name.length()>0) 167 if (!disp_name.startsWith("/") && disp_name.length()>0)
160 name+="/"; 168 name+="/";
161 name+=disp_name; 169 name+=disp_name;
162 if (disp_name.length()==0) { 170 if (disp_name.length()==0) {
163 nameDisplay = separator; 171 nameDisplay = separator;
164 } 172 }
165 prefix = mbox; 173 prefix = mbox;
166} 174}
175
176MHFolder::~MHFolder()
177{
178}
diff --git a/noncore/net/mail/libmailwrapper/mailwrapper.h b/noncore/net/mail/libmailwrapper/mailwrapper.h
index c66572c..3b3bb32 100644
--- a/noncore/net/mail/libmailwrapper/mailwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mailwrapper.h
@@ -4,52 +4,52 @@
4#include <qpe/applnk.h> 4#include <qpe/applnk.h>
5 5
6#include <qbitarray.h> 6#include <qbitarray.h>
7#include <qdatetime.h> 7#include <qdatetime.h>
8 8
9#include "settings.h" 9#include "settings.h"
10 10
11#include <opie2/osmart_pointer.h> 11#include <opie2/osmart_pointer.h>
12 12
13class Attachment 13class Attachment
14{ 14{
15public: 15public:
16 Attachment( DocLnk lnk ); 16 Attachment( DocLnk lnk );
17 virtual ~Attachment(){} 17 virtual ~Attachment(){}
18 const QString getFileName()const{ return doc.file(); } 18 const QString getFileName()const{ return doc.file(); }
19 const QString getName()const{ return doc.name(); } 19 const QString getName()const{ return doc.name(); }
20 const QString getMimeType()const{ return doc.type(); } 20 const QString getMimeType()const{ return doc.type(); }
21 const QPixmap getPixmap()const{ return doc.pixmap(); } 21 const QPixmap getPixmap()const{ return doc.pixmap(); }
22 const int getSize()const { return size; } 22 const int getSize()const { return size; }
23 DocLnk getDocLnk() { return doc; } 23 DocLnk getDocLnk() { return doc; }
24 24
25protected: 25protected:
26 DocLnk doc; 26 DocLnk doc;
27 int size; 27 int size;
28 28
29}; 29};
30 30
31class Mail:public Opie::oref_count 31class Mail:public Opie::oref_count
32{ 32{
33public: 33public:
34 Mail(); 34 Mail();
35 /* Possible that this destructor must not be declared virtual 35 /* Possible that this destructor must not be declared virtual
36 * 'cause it seems that it will never have some child classes. 36 * 'cause it seems that it will never have some child classes.
37 * in this case this object will not get a virtual table -> memory and 37 * in this case this object will not get a virtual table -> memory and
38 * speed will be a little bit better? 38 * speed will be a little bit better?
39 */ 39 */
40 virtual ~Mail(){} 40 virtual ~Mail(){}
41 void addAttachment( Attachment *att ) { attList.append( att ); } 41 void addAttachment( Attachment *att ) { attList.append( att ); }
42 const QList<Attachment>& getAttachments()const { return attList; } 42 const QList<Attachment>& getAttachments()const { return attList; }
43 void removeAttachment( Attachment *att ) { attList.remove( att ); } 43 void removeAttachment( Attachment *att ) { attList.remove( att ); }
44 const QString&getName()const { return name; } 44 const QString&getName()const { return name; }
45 void setName( QString s ) { name = s; } 45 void setName( QString s ) { name = s; }
46 const QString&getMail()const{ return mail; } 46 const QString&getMail()const{ return mail; }
47 void setMail( const QString&s ) { mail = s; } 47 void setMail( const QString&s ) { mail = s; }
48 const QString&getTo()const{ return to; } 48 const QString&getTo()const{ return to; }
49 void setTo( const QString&s ) { to = s; } 49 void setTo( const QString&s ) { to = s; }
50 const QString&getCC()const{ return cc; } 50 const QString&getCC()const{ return cc; }
51 void setCC( const QString&s ) { cc = s; } 51 void setCC( const QString&s ) { cc = s; }
52 const QString&getBCC()const { return bcc; } 52 const QString&getBCC()const { return bcc; }
53 void setBCC( const QString&s ) { bcc = s; } 53 void setBCC( const QString&s ) { bcc = s; }
54 const QString&getMessage()const { return message; } 54 const QString&getMessage()const { return message; }
55 void setMessage( const QString&s ) { message = s; } 55 void setMessage( const QString&s ) { message = s; }
@@ -57,48 +57,50 @@ public:
57 void setSubject( const QString&s ) { subject = s; } 57 void setSubject( const QString&s ) { subject = s; }
58 const QString&getReply()const{ return reply; } 58 const QString&getReply()const{ return reply; }
59 void setReply( const QString&a ) { reply = a; } 59 void setReply( const QString&a ) { reply = a; }
60 void setInreply(const QStringList&list){m_in_reply_to = list;} 60 void setInreply(const QStringList&list){m_in_reply_to = list;}
61 const QStringList&Inreply()const{return m_in_reply_to;} 61 const QStringList&Inreply()const{return m_in_reply_to;}
62 62
63private: 63private:
64 QList<Attachment> attList; 64 QList<Attachment> attList;
65 QString name, mail, to, cc, bcc, reply, subject, message; 65 QString name, mail, to, cc, bcc, reply, subject, message;
66 QStringList m_in_reply_to; 66 QStringList m_in_reply_to;
67}; 67};
68 68
69class Folder : public QObject 69class Folder:public Opie::oref_count
70{ 70{
71 Q_OBJECT
72
73public: 71public:
74 Folder( const QString&init_name,const QString&sep ); 72 Folder( const QString&init_name,const QString&sep );
73 virtual ~Folder();
75 const QString&getDisplayName()const { return nameDisplay; } 74 const QString&getDisplayName()const { return nameDisplay; }
76 const QString&getName()const { return name; } 75 const QString&getName()const { return name; }
77 const QString&getPrefix()const{return prefix; } 76 const QString&getPrefix()const{return prefix; }
78 virtual bool may_select()const{return true;} 77 virtual bool may_select()const{return true;}
79 virtual bool no_inferior()const{return true;} 78 virtual bool no_inferior()const{return true;}
80 const QString&Separator()const; 79 const QString&Separator()const;
81 80
82protected: 81protected:
83 QString nameDisplay, name, separator,prefix; 82 QString nameDisplay, name, separator,prefix;
84}; 83};
85 84
85typedef Opie::osmart_pointer<Folder> FolderP;
86
86class MHFolder : public Folder 87class MHFolder : public Folder
87{ 88{
88 Q_OBJECT
89public: 89public:
90 MHFolder(const QString&disp_name,const QString&mbox); 90 MHFolder(const QString&disp_name,const QString&mbox);
91 virtual ~MHFolder();
91}; 92};
92 93
93class IMAPFolder : public Folder 94class IMAPFolder : public Folder
94{ 95{
95 public: 96 public:
96 IMAPFolder(const QString&name, const QString&sep, bool select=true,bool noinf=false,const QString&prefix="" ); 97 IMAPFolder(const QString&name, const QString&sep, bool select=true,bool noinf=false,const QString&prefix="" );
98 virtual ~IMAPFolder();
97 virtual bool may_select()const{return m_MaySelect;} 99 virtual bool may_select()const{return m_MaySelect;}
98 virtual bool no_inferior()const{return m_NoInferior;} 100 virtual bool no_inferior()const{return m_NoInferior;}
99 private: 101 private:
100 static QString decodeFolderName( const QString &name ); 102 static QString decodeFolderName( const QString &name );
101 bool m_MaySelect,m_NoInferior; 103 bool m_MaySelect,m_NoInferior;
102}; 104};
103 105
104#endif 106#endif
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
index abe4bb6..9ff3de2 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
@@ -5,78 +5,77 @@
5#include <qdir.h> 5#include <qdir.h>
6#include <stdlib.h> 6#include <stdlib.h>
7#include <qpe/global.h> 7#include <qpe/global.h>
8 8
9MBOXwrapper::MBOXwrapper(const QString & mbox_dir,const QString&mbox_name) 9MBOXwrapper::MBOXwrapper(const QString & mbox_dir,const QString&mbox_name)
10 : Genericwrapper(),MBOXPath(mbox_dir),MBOXName(mbox_name) 10 : Genericwrapper(),MBOXPath(mbox_dir),MBOXName(mbox_name)
11{ 11{
12 QDir dir(MBOXPath); 12 QDir dir(MBOXPath);
13 if (!dir.exists()) { 13 if (!dir.exists()) {
14 dir.mkdir(MBOXPath); 14 dir.mkdir(MBOXPath);
15 } 15 }
16} 16}
17 17
18MBOXwrapper::~MBOXwrapper() 18MBOXwrapper::~MBOXwrapper()
19{ 19{
20} 20}
21 21
22void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) 22void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
23{ 23{
24 mailstorage*storage = mailstorage_new(NULL); 24 mailstorage*storage = mailstorage_new(NULL);
25 QString p = MBOXPath+"/"; 25 QString p = MBOXPath+"/";
26 p+=mailbox; 26 p+=mailbox;
27 27
28 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 28 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
29 mailfolder*folder; 29 mailfolder*folder;
30 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 30 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
31 r = mailfolder_connect(folder); 31 r = mailfolder_connect(folder);
32 if (r != MAIL_NO_ERROR) { 32 if (r != MAIL_NO_ERROR) {
33 qDebug("Error initializing mbox"); 33 qDebug("Error initializing mbox");
34 mailfolder_free(folder); 34 mailfolder_free(folder);
35 mailstorage_free(storage); 35 mailstorage_free(storage);
36 return; 36 return;
37 } 37 }
38 38
39 parseList(target,folder->fld_session,mailbox); 39 parseList(target,folder->fld_session,mailbox);
40 40
41 mailfolder_disconnect(folder); 41 mailfolder_disconnect(folder);
42 mailfolder_free(folder); 42 mailfolder_free(folder);
43 mailstorage_free(storage); 43 mailstorage_free(storage);
44 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); 44 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count()));
45} 45}
46 46
47QList<Folder>* MBOXwrapper::listFolders() 47QValueList<Opie::osmart_pointer<Folder> >* MBOXwrapper::listFolders()
48{ 48{
49 QList<Folder> * folders = new QList<Folder>(); 49 QValueList<Opie::osmart_pointer<Folder> >* folders = new QValueList<Opie::osmart_pointer<Folder> >();
50 folders->setAutoDelete( false );
51 QDir dir(MBOXPath); 50 QDir dir(MBOXPath);
52 if (!dir.exists()) return folders; 51 if (!dir.exists()) return folders;
53 dir.setFilter(QDir::Files|QDir::Writable|QDir::Readable); 52 dir.setFilter(QDir::Files|QDir::Writable|QDir::Readable);
54 QStringList entries = dir.entryList(); 53 QStringList entries = dir.entryList();
55 QStringList::ConstIterator it = entries.begin(); 54 QStringList::ConstIterator it = entries.begin();
56 for (;it!=entries.end();++it) { 55 for (;it!=entries.end();++it) {
57 Folder*inb=new Folder(*it,"/"); 56 FolderP inb=new Folder(*it,"/");
58 folders->append(inb); 57 folders->append(inb);
59 } 58 }
60 return folders; 59 return folders;
61} 60}
62 61
63void MBOXwrapper::deleteMail(const RecMail&mail) 62void MBOXwrapper::deleteMail(const RecMail&mail)
64{ 63{
65 mailstorage*storage = mailstorage_new(NULL); 64 mailstorage*storage = mailstorage_new(NULL);
66 QString p = MBOXPath+"/"; 65 QString p = MBOXPath+"/";
67 p+=mail.getMbox(); 66 p+=mail.getMbox();
68 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 67 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
69 mailfolder*folder; 68 mailfolder*folder;
70 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 69 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
71 r = mailfolder_connect(folder); 70 r = mailfolder_connect(folder);
72 if (r != MAIL_NO_ERROR) { 71 if (r != MAIL_NO_ERROR) {
73 qDebug("Error initializing mbox"); 72 qDebug("Error initializing mbox");
74 mailfolder_free(folder); 73 mailfolder_free(folder);
75 mailstorage_free(storage); 74 mailstorage_free(storage);
76 return; 75 return;
77 } 76 }
78 r = mailsession_remove_message(folder->fld_session,mail.getNumber()); 77 r = mailsession_remove_message(folder->fld_session,mail.getNumber());
79 if (r != MAIL_NO_ERROR) { 78 if (r != MAIL_NO_ERROR) {
80 qDebug("error deleting mail"); 79 qDebug("error deleting mail");
81 } 80 }
82 mailfolder_free(folder); 81 mailfolder_free(folder);
@@ -90,61 +89,61 @@ void MBOXwrapper::answeredMail(const RecMail&)
90RecBody MBOXwrapper::fetchBody( const RecMail &mail ) 89RecBody MBOXwrapper::fetchBody( const RecMail &mail )
91{ 90{
92 RecBody body; 91 RecBody body;
93 mailstorage*storage = mailstorage_new(NULL); 92 mailstorage*storage = mailstorage_new(NULL);
94 QString p = MBOXPath+"/"; 93 QString p = MBOXPath+"/";
95 p+=mail.getMbox(); 94 p+=mail.getMbox();
96 mailmessage * msg; 95 mailmessage * msg;
97 char*data=0; 96 char*data=0;
98 size_t size; 97 size_t size;
99 98
100 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 99 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
101 mailfolder*folder; 100 mailfolder*folder;
102 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 101 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
103 r = mailfolder_connect(folder); 102 r = mailfolder_connect(folder);
104 if (r != MAIL_NO_ERROR) { 103 if (r != MAIL_NO_ERROR) {
105 qDebug("Error initializing mbox"); 104 qDebug("Error initializing mbox");
106 mailfolder_free(folder); 105 mailfolder_free(folder);
107 mailstorage_free(storage); 106 mailstorage_free(storage);
108 return body; 107 return body;
109 } 108 }
110 r = mailsession_get_message(folder->fld_session, mail.getNumber(), &msg); 109 r = mailsession_get_message(folder->fld_session, mail.getNumber(), &msg);
111 if (r != MAIL_NO_ERROR) { 110 if (r != MAIL_NO_ERROR) {
112 qDebug("Error fetching mail %i",mail.getNumber()); 111 qDebug("Error fetching mail %i",mail.getNumber());
113 mailfolder_free(folder); 112 mailfolder_free(folder);
114 mailstorage_free(storage); 113 mailstorage_free(storage);
115 return body; 114 return body;
116 } 115 }
117 r = mailmessage_fetch(msg,&data,&size); 116 r = mailmessage_fetch(msg,&data,&size);
118 if (r != MAIL_NO_ERROR) { 117 if (r != MAIL_NO_ERROR) {
119 qDebug("Error fetching mail %i",mail.getNumber()); 118 qDebug("Error fetching mail %i",mail.getNumber());
120 mailfolder_free(folder); 119 mailfolder_free(folder);
121 mailstorage_free(storage); 120 mailstorage_free(storage);
122 mailmessage_free(msg); 121 mailmessage_free(msg);
123 return body; 122 return body;
124 } 123 }
125 body = parseMail(msg); 124 body = parseMail(msg);
126 mailmessage_fetch_result_free(msg,data); 125 mailmessage_fetch_result_free(msg,data);
127 mailfolder_free(folder); 126 mailfolder_free(folder);
128 mailstorage_free(storage); 127 mailstorage_free(storage);
129 128
130 return body; 129 return body;
131} 130}
132 131
133void MBOXwrapper::mbox_progress( size_t current, size_t maximum ) 132void MBOXwrapper::mbox_progress( size_t current, size_t maximum )
134{ 133{
135 qDebug("MBOX %i von %i",current,maximum); 134 qDebug("MBOX %i von %i",current,maximum);
136} 135}
137 136
138int MBOXwrapper::createMbox(const QString&folder,const Folder*,const QString&,bool ) 137int MBOXwrapper::createMbox(const QString&folder,const FolderP&,const QString&,bool )
139{ 138{
140 QString p = MBOXPath+"/"; 139 QString p = MBOXPath+"/";
141 p+=folder; 140 p+=folder;
142 QFileInfo fi(p); 141 QFileInfo fi(p);
143 if (fi.exists()) { 142 if (fi.exists()) {
144 Global::statusMessage(tr("Mailbox exists.")); 143 Global::statusMessage(tr("Mailbox exists."));
145 return 0; 144 return 0;
146 } 145 }
147 mailmbox_folder*f = 0; 146 mailmbox_folder*f = 0;
148 if (mailmbox_init(p.latin1(),0,1,0,&f) != MAIL_NO_ERROR) { 147 if (mailmbox_init(p.latin1(),0,1,0,&f) != MAIL_NO_ERROR) {
149 Global::statusMessage(tr("Error init folder")); 148 Global::statusMessage(tr("Error init folder"));
150 return 0; 149 return 0;
@@ -173,25 +172,25 @@ void MBOXwrapper::storeMessage(const char*msg,size_t length, const QString&folde
173encodedString* MBOXwrapper::fetchRawBody(const RecMail&mail) 172encodedString* MBOXwrapper::fetchRawBody(const RecMail&mail)
174{ 173{
175 RecBody body; 174 RecBody body;
176 mailstorage*storage = mailstorage_new(NULL); 175 mailstorage*storage = mailstorage_new(NULL);
177 QString p = MBOXPath+"/"; 176 QString p = MBOXPath+"/";
178 p+=mail.getMbox(); 177 p+=mail.getMbox();
179 mailmessage * msg; 178 mailmessage * msg;
180 char*data=0; 179 char*data=0;
181 size_t size; 180 size_t size;
182 181
183 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 182 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
184 mailfolder*folder; 183 mailfolder*folder;
185 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 184 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
186 r = mailfolder_connect(folder); 185 r = mailfolder_connect(folder);
187 if (r != MAIL_NO_ERROR) { 186 if (r != MAIL_NO_ERROR) {
188 Global::statusMessage(tr("Error initializing mbox")); 187 Global::statusMessage(tr("Error initializing mbox"));
189 mailfolder_free(folder); 188 mailfolder_free(folder);
190 mailstorage_free(storage); 189 mailstorage_free(storage);
191 return 0; 190 return 0;
192 } 191 }
193 r = mailsession_get_message(folder->fld_session, mail.getNumber(), &msg); 192 r = mailsession_get_message(folder->fld_session, mail.getNumber(), &msg);
194 if (r != MAIL_NO_ERROR) { 193 if (r != MAIL_NO_ERROR) {
195 Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber())); 194 Global::statusMessage(tr("Error fetching mail %i").arg(mail.getNumber()));
196 mailfolder_free(folder); 195 mailfolder_free(folder);
197 mailstorage_free(storage); 196 mailstorage_free(storage);
@@ -234,40 +233,40 @@ void MBOXwrapper::deleteMails(mailmbox_folder*f,QList<RecMail> &target)
234 for (unsigned int i=0; i < target.count();++i) { 233 for (unsigned int i=0; i < target.count();++i) {
235 r = mailmbox_delete_msg(f,target.at(i)->getNumber()); 234 r = mailmbox_delete_msg(f,target.at(i)->getNumber());
236 if (r!=MAILMBOX_NO_ERROR) { 235 if (r!=MAILMBOX_NO_ERROR) {
237 qDebug("error delete mail"); 236 qDebug("error delete mail");
238 } 237 }
239 } 238 }
240 r = mailmbox_expunge(f); 239 r = mailmbox_expunge(f);
241 if (r != MAILMBOX_NO_ERROR) { 240 if (r != MAILMBOX_NO_ERROR) {
242 qDebug("error expunge mailbox"); 241 qDebug("error expunge mailbox");
243 } 242 }
244} 243}
245 244
246int MBOXwrapper::deleteAllMail(const Folder*tfolder) 245int MBOXwrapper::deleteAllMail(const FolderP&tfolder)
247{ 246{
248 if (!tfolder) return 0; 247 if (!tfolder) return 0;
249 QString p = MBOXPath+"/"+tfolder->getDisplayName(); 248 QString p = MBOXPath+"/"+tfolder->getDisplayName();
250 int res = 1; 249 int res = 1;
251 250
252 mailfolder*folder = 0; 251 mailfolder*folder = 0;
253 mailmessage_list*l=0; 252 mailmessage_list*l=0;
254 mailstorage*storage = mailstorage_new(NULL); 253 mailstorage*storage = mailstorage_new(NULL);
255 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 254 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
256 if (r != MAIL_NO_ERROR) { 255 if (r != MAIL_NO_ERROR) {
257 Global::statusMessage(tr("Error initializing mbox")); 256 Global::statusMessage(tr("Error initializing mbox"));
258 res = 0; 257 res = 0;
259 } 258 }
260 if (res) { 259 if (res) {
261 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 260 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
262 r = mailfolder_connect(folder); 261 r = mailfolder_connect(folder);
263 if (r != MAIL_NO_ERROR) { 262 if (r != MAIL_NO_ERROR) {
264 Global::statusMessage(tr("Error initializing mbox")); 263 Global::statusMessage(tr("Error initializing mbox"));
265 res = 0; 264 res = 0;
266 } 265 }
267 } 266 }
268 if (res) { 267 if (res) {
269 r = mailsession_get_messages_list(folder->fld_session,&l); 268 r = mailsession_get_messages_list(folder->fld_session,&l);
270 if (r != MAIL_NO_ERROR) { 269 if (r != MAIL_NO_ERROR) {
271 qDebug("Error message list"); 270 qDebug("Error message list");
272 res=0; 271 res=0;
273 } 272 }
@@ -277,25 +276,25 @@ int MBOXwrapper::deleteAllMail(const Folder*tfolder)
277 if (r != MAIL_NO_ERROR) { 276 if (r != MAIL_NO_ERROR) {
278 Global::statusMessage(tr("Error deleting mail %1").arg(i+1)); 277 Global::statusMessage(tr("Error deleting mail %1").arg(i+1));
279 res = 0; 278 res = 0;
280 break; 279 break;
281 } 280 }
282 } 281 }
283 if (l) mailmessage_list_free(l); 282 if (l) mailmessage_list_free(l);
284 if (folder) mailfolder_free(folder); 283 if (folder) mailfolder_free(folder);
285 if (storage) mailstorage_free(storage); 284 if (storage) mailstorage_free(storage);
286 return res; 285 return res;
287} 286}
288 287
289int MBOXwrapper::deleteMbox(const Folder*tfolder) 288int MBOXwrapper::deleteMbox(const FolderP&tfolder)
290{ 289{
291 if (!tfolder) return 0; 290 if (!tfolder) return 0;
292 QString p = MBOXPath+"/"+tfolder->getDisplayName(); 291 QString p = MBOXPath+"/"+tfolder->getDisplayName();
293 QFile fi(p); 292 QFile fi(p);
294 if (!fi.exists()) { 293 if (!fi.exists()) {
295 Global::statusMessage(tr("Mailbox doesn't exist.")); 294 Global::statusMessage(tr("Mailbox doesn't exist."));
296 return 0; 295 return 0;
297 } 296 }
298 if (!fi.remove()) { 297 if (!fi.remove()) {
299 Global::statusMessage(tr("Error deleting Mailbox.")); 298 Global::statusMessage(tr("Error deleting Mailbox."));
300 return 0; 299 return 0;
301 } 300 }
@@ -307,25 +306,25 @@ void MBOXwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
307 mailfolder*folder = 0; 306 mailfolder*folder = 0;
308 mailstorage*storage = mailstorage_new(NULL); 307 mailstorage*storage = mailstorage_new(NULL);
309 target_stat.message_count = 0; 308 target_stat.message_count = 0;
310 target_stat.message_unseen = 0; 309 target_stat.message_unseen = 0;
311 target_stat.message_recent = 0; 310 target_stat.message_recent = 0;
312 QString p = MBOXPath+"/"+mailbox; 311 QString p = MBOXPath+"/"+mailbox;
313 QFile fi(p); 312 QFile fi(p);
314 if (!fi.exists()) { 313 if (!fi.exists()) {
315 Global::statusMessage(tr("Mailbox doesn't exist.")); 314 Global::statusMessage(tr("Mailbox doesn't exist."));
316 return; 315 return;
317 } 316 }
318 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 317 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
319 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 318 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
320 r = mailfolder_connect(folder); 319 r = mailfolder_connect(folder);
321 r = mailsession_status_folder(folder->fld_session,(char*)mailbox.latin1(),&target_stat.message_count, 320 r = mailsession_status_folder(folder->fld_session,(char*)mailbox.latin1(),&target_stat.message_count,
322 &target_stat.message_recent,&target_stat.message_unseen); 321 &target_stat.message_recent,&target_stat.message_unseen);
323 if (folder) mailfolder_free(folder); 322 if (folder) mailfolder_free(folder);
324 if (storage) mailstorage_free(storage); 323 if (storage) mailstorage_free(storage);
325} 324}
326 325
327MAILLIB::ATYPE MBOXwrapper::getType()const 326MAILLIB::ATYPE MBOXwrapper::getType()const
328{ 327{
329 return MAILLIB::A_MBOX; 328 return MAILLIB::A_MBOX;
330} 329}
331 330
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.h b/noncore/net/mail/libmailwrapper/mboxwrapper.h
index 7e7f359..c3d9b50 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.h
@@ -7,41 +7,42 @@
7class RecMail; 7class RecMail;
8class RecBody; 8class RecBody;
9class encodedString; 9class encodedString;
10struct mailmbox_folder; 10struct mailmbox_folder;
11 11
12class MBOXwrapper : public Genericwrapper 12class MBOXwrapper : public Genericwrapper
13{ 13{
14 Q_OBJECT 14 Q_OBJECT
15 15
16public: 16public:
17 MBOXwrapper(const QString & dir,const QString&name); 17 MBOXwrapper(const QString & dir,const QString&name);
18 virtual ~MBOXwrapper(); 18 virtual ~MBOXwrapper();
19 19
20 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 20 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
21 virtual QList<Folder>* listFolders(); 21 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
22 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 22 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
23 23
24 virtual void deleteMail(const RecMail&mail); 24 virtual void deleteMail(const RecMail&mail);
25 virtual void answeredMail(const RecMail&mail); 25 virtual void answeredMail(const RecMail&mail);
26 26
27 virtual int createMbox(const QString&folder,const Folder*f=0,const QString&d="",bool s=false); 27 virtual int createMbox(const QString&folder,const Opie::osmart_pointer<Folder>&f=0,
28 virtual int deleteMbox(const Folder*); 28 const QString&d="",bool s=false);
29 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&);
29 30
30 virtual void storeMessage(const char*msg,size_t length, const QString&folder); 31 virtual void storeMessage(const char*msg,size_t length, const QString&folder);
31 32
32 virtual RecBody fetchBody( const RecMail &mail ); 33 virtual RecBody fetchBody( const RecMail &mail );
33 static void mbox_progress( size_t current, size_t maximum ); 34 static void mbox_progress( size_t current, size_t maximum );
34 35
35 virtual encodedString* fetchRawBody(const RecMail&mail); 36 virtual encodedString* fetchRawBody(const RecMail&mail);
36 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target); 37 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
37 virtual int deleteAllMail(const Folder*); 38 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&);
38 virtual MAILLIB::ATYPE getType()const; 39 virtual MAILLIB::ATYPE getType()const;
39 virtual const QString&getName()const; 40 virtual const QString&getName()const;
40 41
41protected: 42protected:
42 static void deleteMails(mailmbox_folder*f,QList<RecMail> &target); 43 static void deleteMails(mailmbox_folder*f,QList<RecMail> &target);
43 QString MBOXPath; 44 QString MBOXPath;
44 QString MBOXName; 45 QString MBOXName;
45}; 46};
46 47
47#endif 48#endif
diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.cpp b/noncore/net/mail/libmailwrapper/mhwrapper.cpp
index 560eab0..aaaa20a 100644
--- a/noncore/net/mail/libmailwrapper/mhwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mhwrapper.cpp
@@ -67,28 +67,27 @@ void MHwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
67 return; 67 return;
68 } 68 }
69 QString f = buildPath(mailbox); 69 QString f = buildPath(mailbox);
70 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); 70 int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1());
71 if (r!=MAIL_NO_ERROR) { 71 if (r!=MAIL_NO_ERROR) {
72 qDebug("listMessages: error selecting folder!"); 72 qDebug("listMessages: error selecting folder!");
73 return; 73 return;
74 } 74 }
75 parseList(target,m_storage->sto_session,f); 75 parseList(target,m_storage->sto_session,f);
76 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); 76 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count()));
77} 77}
78 78
79QList<Folder>* MHwrapper::listFolders() 79QValueList<Opie::osmart_pointer<Folder> >* MHwrapper::listFolders()
80{ 80{
81 QList<Folder> * folders = new QList<Folder>(); 81 QValueList<Opie::osmart_pointer<Folder> >* folders = new QValueList<Opie::osmart_pointer<Folder> >();
82 folders->setAutoDelete( false );
83 /* this is needed! */ 82 /* this is needed! */
84 if (m_storage) mailstorage_disconnect(m_storage); 83 if (m_storage) mailstorage_disconnect(m_storage);
85 init_storage(); 84 init_storage();
86 if (!m_storage) { 85 if (!m_storage) {
87 return folders; 86 return folders;
88 } 87 }
89 mail_list*flist = 0; 88 mail_list*flist = 0;
90 clistcell*current=0; 89 clistcell*current=0;
91 int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist); 90 int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist);
92 if (r != MAIL_NO_ERROR || !flist) { 91 if (r != MAIL_NO_ERROR || !flist) {
93 qDebug("error getting folder list"); 92 qDebug("error getting folder list");
94 return folders; 93 return folders;
@@ -135,50 +134,50 @@ RecBody MHwrapper::fetchBody( const RecMail &mail )
135 size_t size; 134 size_t size;
136 135
137 /* mail should hold the complete path! */ 136 /* mail should hold the complete path! */
138 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1()); 137 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1());
139 if (r != MAIL_NO_ERROR) { 138 if (r != MAIL_NO_ERROR) {
140 return body; 139 return body;
141 } 140 }
142 r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg); 141 r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg);
143 if (r != MAIL_NO_ERROR) { 142 if (r != MAIL_NO_ERROR) {
144 qDebug("Error fetching mail %i",mail.getNumber()); 143 qDebug("Error fetching mail %i",mail.getNumber());
145 return body; 144 return body;
146 } 145 }
147 body = parseMail(msg); 146 body = parseMail(msg);
148 mailmessage_fetch_result_free(msg,data); 147 mailmessage_fetch_result_free(msg,data);
149 return body; 148 return body;
150} 149}
151 150
152void MHwrapper::mbox_progress( size_t current, size_t maximum ) 151void MHwrapper::mbox_progress( size_t current, size_t maximum )
153{ 152{
154 qDebug("MH %i von %i",current,maximum); 153 qDebug("MH %i von %i",current,maximum);
155} 154}
156 155
157QString MHwrapper::buildPath(const QString&p) 156QString MHwrapper::buildPath(const QString&p)
158{ 157{
159 QString f=""; 158 QString f="";
160 if (p.length()==0||p=="/") 159 if (p.length()==0||p=="/")
161 return MHPath; 160 return MHPath;
162 if (!p.startsWith(MHPath)) { 161 if (!p.startsWith(MHPath)) {
163 f+=MHPath; 162 f+=MHPath;
164 } 163 }
165 if (!p.startsWith("/")) { 164 if (!p.startsWith("/")) {
166 f+="/"; 165 f+="/";
167 } 166 }
168 f+=p; 167 f+=p;
169 return f; 168 return f;
170} 169}
171 170
172int MHwrapper::createMbox(const QString&folder,const Folder*pfolder,const QString&,bool ) 171int MHwrapper::createMbox(const QString&folder,const FolderP&pfolder,const QString&,bool )
173{ 172{
174 init_storage(); 173 init_storage();
175 if (!m_storage) { 174 if (!m_storage) {
176 return 0; 175 return 0;
177 } 176 }
178 QString f; 177 QString f;
179 if (!pfolder) { 178 if (!pfolder) {
180 // toplevel folder 179 // toplevel folder
181 f = buildPath(folder); 180 f = buildPath(folder);
182 } else { 181 } else {
183 f = pfolder->getName(); 182 f = pfolder->getName();
184 f+="/"; 183 f+="/";
@@ -254,25 +253,25 @@ void MHwrapper::deleteMails(const QString & mailbox,QList<RecMail> &target)
254 } 253 }
255 RecMail*c = 0; 254 RecMail*c = 0;
256 for (unsigned int i=0; i < target.count();++i) { 255 for (unsigned int i=0; i < target.count();++i) {
257 c = target.at(i); 256 c = target.at(i);
258 r = mailsession_remove_message(m_storage->sto_session,c->getNumber()); 257 r = mailsession_remove_message(m_storage->sto_session,c->getNumber());
259 if (r != MAIL_NO_ERROR) { 258 if (r != MAIL_NO_ERROR) {
260 qDebug("error deleting mail"); 259 qDebug("error deleting mail");
261 break; 260 break;
262 } 261 }
263 } 262 }
264} 263}
265 264
266int MHwrapper::deleteAllMail(const Folder*tfolder) 265int MHwrapper::deleteAllMail(const FolderP&tfolder)
267{ 266{
268 init_storage(); 267 init_storage();
269 if (!m_storage) { 268 if (!m_storage) {
270 return 0; 269 return 0;
271 } 270 }
272 int res = 1; 271 int res = 1;
273 if (!tfolder) return 0; 272 if (!tfolder) return 0;
274 int r = mailsession_select_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); 273 int r = mailsession_select_folder(m_storage->sto_session,(char*)tfolder->getName().latin1());
275 if (r!=MAIL_NO_ERROR) { 274 if (r!=MAIL_NO_ERROR) {
276 qDebug("error selecting folder!"); 275 qDebug("error selecting folder!");
277 return 0; 276 return 0;
278 } 277 }
@@ -289,46 +288,46 @@ int MHwrapper::deleteAllMail(const Folder*tfolder)
289 j = msg->msg_index; 288 j = msg->msg_index;
290 r = mailsession_remove_message(m_storage->sto_session,j); 289 r = mailsession_remove_message(m_storage->sto_session,j);
291 if (r != MAIL_NO_ERROR) { 290 if (r != MAIL_NO_ERROR) {
292 Global::statusMessage(tr("Error deleting mail %1").arg(i+1)); 291 Global::statusMessage(tr("Error deleting mail %1").arg(i+1));
293 res = 0; 292 res = 0;
294 break; 293 break;
295 } 294 }
296 } 295 }
297 if (l) mailmessage_list_free(l); 296 if (l) mailmessage_list_free(l);
298 return res; 297 return res;
299} 298}
300 299
301int MHwrapper::deleteMbox(const Folder*tfolder) 300int MHwrapper::deleteMbox(const FolderP&tfolder)
302{ 301{
303 init_storage(); 302 init_storage();
304 if (!m_storage) { 303 if (!m_storage) {
305 return 0; 304 return 0;
306 } 305 }
307 if (!tfolder) return 0; 306 if (!tfolder) return 0;
308 if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0; 307 if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0;
309 308
310 int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); 309 int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1());
311 310
312 if (r != MAIL_NO_ERROR) { 311 if (r != MAIL_NO_ERROR) {
313 qDebug("error deleting mail box"); 312 qDebug("error deleting mail box");
314 return 0; 313 return 0;
315 } 314 }
316 QString cmd = "rm -rf "+tfolder->getName(); 315 QString cmd = "rm -rf "+tfolder->getName();
317 QStringList command; 316 QStringList command;
318 command << "/bin/sh"; 317 command << "/bin/sh";
319 command << "-c"; 318 command << "-c";
320 command << cmd.latin1(); 319 command << cmd.latin1();
321 OProcess *process = new OProcess(); 320 OProcess *process = new OProcess();
322 321
323 connect(process, SIGNAL(processExited(OProcess*)), 322 connect(process, SIGNAL(processExited(OProcess*)),
324 this, SLOT( processEnded(OProcess*))); 323 this, SLOT( processEnded(OProcess*)));
325 connect(process, SIGNAL( receivedStderr(OProcess*,char*,int)), 324 connect(process, SIGNAL( receivedStderr(OProcess*,char*,int)),
326 this, SLOT( oprocessStderr(OProcess*,char*,int))); 325 this, SLOT( oprocessStderr(OProcess*,char*,int)));
327 326
328 *process << command; 327 *process << command;
329 removeMboxfailed = false; 328 removeMboxfailed = false;
330 if(!process->start(OProcess::Block, OProcess::All) ) { 329 if(!process->start(OProcess::Block, OProcess::All) ) {
331 qDebug("could not start process"); 330 qDebug("could not start process");
332 return 0; 331 return 0;
333 } 332 }
334 qDebug("mail box deleted"); 333 qDebug("mail box deleted");
@@ -377,40 +376,41 @@ void MHwrapper::mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractM
377{ 376{
378 init_storage(); 377 init_storage();
379 if (!m_storage) { 378 if (!m_storage) {
380 return; 379 return;
381 } 380 }
382 if (targetWrapper != this) { 381 if (targetWrapper != this) {
383 qDebug("Using generic"); 382 qDebug("Using generic");
384 Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit); 383 Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit);
385 return; 384 return;
386 } 385 }
387 qDebug("Using internal routines for move/copy"); 386 qDebug("Using internal routines for move/copy");
388 QString tf = buildPath(targetFolder); 387 QString tf = buildPath(targetFolder);
389 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1()); 388 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1());
390 if (r != MAIL_NO_ERROR) { 389 if (r != MAIL_NO_ERROR) {
391 qDebug("Error selecting source mailbox"); 390 qDebug("Error selecting source mailbox");
392 return; 391 return;
393 } 392 }
394 if (moveit) { 393 if (moveit) {
395 r = mailsession_move_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1()); 394 r = mailsession_move_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1());
396 } else { 395 } else {
397 r = mailsession_copy_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1()); 396 r = mailsession_copy_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1());
398 } 397 }
399 if (r != MAIL_NO_ERROR) { 398 if (r != MAIL_NO_ERROR) {
400 qDebug("Error copy/moving mail internal (%i)",r); 399 qDebug("Error copy/moving mail internal (%i)",r);
401 } 400 }
402} 401}
403 402
404void MHwrapper::mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 403void MHwrapper::mvcpAllMails(const FolderP&fromFolder,
404 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
405{ 405{
406 init_storage(); 406 init_storage();
407 if (!m_storage) { 407 if (!m_storage) {
408 return; 408 return;
409 } 409 }
410 if (targetWrapper != this) { 410 if (targetWrapper != this) {
411 qDebug("Using generic"); 411 qDebug("Using generic");
412 Genericwrapper::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit); 412 Genericwrapper::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit);
413 return; 413 return;
414 } 414 }
415 if (!fromFolder) return; 415 if (!fromFolder) return;
416 int r = mailsession_select_folder(m_storage->sto_session,(char*)fromFolder->getName().latin1()); 416 int r = mailsession_select_folder(m_storage->sto_session,(char*)fromFolder->getName().latin1());
diff --git a/noncore/net/mail/libmailwrapper/mhwrapper.h b/noncore/net/mail/libmailwrapper/mhwrapper.h
index b7c23af..c7c8183 100644
--- a/noncore/net/mail/libmailwrapper/mhwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mhwrapper.h
@@ -9,52 +9,54 @@
9class RecMail; 9class RecMail;
10class RecBody; 10class RecBody;
11class encodedString; 11class encodedString;
12struct mailmbox_folder; 12struct mailmbox_folder;
13class OProcess; 13class OProcess;
14 14
15class MHwrapper : public Genericwrapper 15class MHwrapper : public Genericwrapper
16{ 16{
17 Q_OBJECT 17 Q_OBJECT
18public: 18public:
19 MHwrapper(const QString & dir,const QString&name); 19 MHwrapper(const QString & dir,const QString&name);
20 virtual ~MHwrapper(); 20 virtual ~MHwrapper();
21 21
22 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 22 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
23 virtual QList<Folder>* listFolders(); 23 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
24 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 24 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
25 25
26 virtual void deleteMail(const RecMail&mail); 26 virtual void deleteMail(const RecMail&mail);
27 virtual void answeredMail(const RecMail&mail); 27 virtual void answeredMail(const RecMail&mail);
28 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 28 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
29 virtual void mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 29 virtual void mvcpAllMails(const Opie::osmart_pointer<Folder>&fromFolder,
30 30 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
31 virtual int createMbox(const QString&folder,const Folder*f=0,const QString&d="",bool s=false); 31
32 virtual int deleteMbox(const Folder*); 32 virtual int createMbox(const QString&folder,const Opie::osmart_pointer<Folder>&f=0,
33 const QString&d="",bool s=false);
34 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&);
33 35
34 virtual void storeMessage(const char*msg,size_t length, const QString&folder); 36 virtual void storeMessage(const char*msg,size_t length, const QString&folder);
35 37
36 virtual RecBody fetchBody( const RecMail &mail ); 38 virtual RecBody fetchBody( const RecMail &mail );
37 static void mbox_progress( size_t current, size_t maximum ); 39 static void mbox_progress( size_t current, size_t maximum );
38 40
39 virtual encodedString* fetchRawBody(const RecMail&mail); 41 virtual encodedString* fetchRawBody(const RecMail&mail);
40 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target); 42 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
41 virtual int deleteAllMail(const Folder*); 43 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&);
42 virtual MAILLIB::ATYPE getType()const; 44 virtual MAILLIB::ATYPE getType()const;
43 virtual const QString&getName()const; 45 virtual const QString&getName()const;
44 46
45public slots: 47public slots:
46 /* for deleting maildirs we are using a system call */ 48 /* for deleting maildirs we are using a system call */
47 virtual void oprocessStderr(OProcess*, char *buffer, int ); 49 virtual void oprocessStderr(OProcess*, char *buffer, int );
48 virtual void processEnded(OProcess *); 50 virtual void processEnded(OProcess *);
49protected: 51protected:
50 QString buildPath(const QString&p); 52 QString buildPath(const QString&p);
51 QString MHPath; 53 QString MHPath;
52 QString MHName; 54 QString MHName;
53 55
54 void init_storage(); 56 void init_storage();
55 void clean_storage(); 57 void clean_storage();
56 58
57 bool removeMboxfailed; 59 bool removeMboxfailed;
58}; 60};
59 61
60#endif 62#endif
diff --git a/noncore/net/mail/libmailwrapper/nntpwrapper.cpp b/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
index 1956c61..2ec052c 100644
--- a/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
@@ -179,41 +179,40 @@ void NNTPwrapper::login()
179 179
180} 180}
181 181
182void NNTPwrapper::logout() 182void NNTPwrapper::logout()
183{ 183{
184 int err = NEWSNNTP_NO_ERROR; 184 int err = NEWSNNTP_NO_ERROR;
185 if ( m_nntp == NULL ) 185 if ( m_nntp == NULL )
186 return; 186 return;
187 mailstorage_free(m_nntp); 187 mailstorage_free(m_nntp);
188 m_nntp = 0; 188 m_nntp = 0;
189} 189}
190 190
191QList<Folder>* NNTPwrapper::listFolders() { 191QValueList<Opie::osmart_pointer<Folder> >* NNTPwrapper::listFolders() {
192 192
193 QList<Folder> * folders = new QList<Folder>(); 193 QValueList<Opie::osmart_pointer<Folder> >* folders = new QValueList<Opie::osmart_pointer<Folder> >();
194 folders->setAutoDelete( false );
195 QStringList groups; 194 QStringList groups;
196 if (account) { 195 if (account) {
197 groups = account->getGroups(); 196 groups = account->getGroups();
198 } 197 }
199 for ( QStringList::Iterator it = groups.begin(); it != groups.end(); ++it ) { 198 for ( QStringList::Iterator it = groups.begin(); it != groups.end(); ++it ) {
200 folders->append(new Folder((*it),".")); 199 folders->append(new Folder((*it),"."));
201 } 200 }
202 return folders; 201 return folders;
203} 202}
204 203
205/* we made this method in raw nntp access of etpan and not via generic interface 204/* we made this method in raw nntp access of etpan and not via generic interface
206 * 'cause in that case there will be doubled copy operations. eg. the etpan would 205 * 'cause in that case there will be doubled copy operations. eg. the etpan would
207 * copy that stuff into its own structures and we must copy it into useable c++ 206 * copy that stuff into its own structures and we must copy it into useable c++
208 * structures for our frontend. this would not make sense, so it is better to reimplement 207 * structures for our frontend. this would not make sense, so it is better to reimplement
209 * the stuff from generic interface of etpan but copy it direct to qt classes. 208 * the stuff from generic interface of etpan but copy it direct to qt classes.
210 */ 209 */
211QStringList NNTPwrapper::listAllNewsgroups(const QString&mask) { 210QStringList NNTPwrapper::listAllNewsgroups(const QString&mask) {
212 login(); 211 login();
213 QStringList res; 212 QStringList res;
214 clist *result = 0; 213 clist *result = 0;
215 clistcell *current = 0; 214 clistcell *current = 0;
216 newsnntp_group_description *group; 215 newsnntp_group_description *group;
217 216
218 if ( m_nntp ) { 217 if ( m_nntp ) {
219 mailsession * session = m_nntp->sto_session; 218 mailsession * session = m_nntp->sto_session;
@@ -271,14 +270,14 @@ encodedString* NNTPwrapper::fetchRawBody(const RecMail&mail) {
271 270
272MAILLIB::ATYPE NNTPwrapper::getType()const { 271MAILLIB::ATYPE NNTPwrapper::getType()const {
273 return account->getType(); 272 return account->getType();
274} 273}
275 274
276const QString&NNTPwrapper::getName()const{ 275const QString&NNTPwrapper::getName()const{
277 return account->getAccountName(); 276 return account->getAccountName();
278} 277}
279 278
280void NNTPwrapper::deleteMail(const RecMail&) { 279void NNTPwrapper::deleteMail(const RecMail&) {
281} 280}
282 281
283int NNTPwrapper::deleteAllMail(const Folder*) { 282int NNTPwrapper::deleteAllMail(const FolderP&) {
284} 283}
diff --git a/noncore/net/mail/libmailwrapper/nntpwrapper.h b/noncore/net/mail/libmailwrapper/nntpwrapper.h
index 955b9f1..d3a384a 100644
--- a/noncore/net/mail/libmailwrapper/nntpwrapper.h
+++ b/noncore/net/mail/libmailwrapper/nntpwrapper.h
@@ -13,31 +13,31 @@ struct mailfolder;
13class NNTPwrapper : public Genericwrapper 13class NNTPwrapper : public Genericwrapper
14{ 14{
15 15
16 Q_OBJECT 16 Q_OBJECT
17 17
18public: 18public:
19 NNTPwrapper( NNTPaccount *a ); 19 NNTPwrapper( NNTPaccount *a );
20 virtual ~NNTPwrapper(); 20 virtual ~NNTPwrapper();
21 21
22 /* mailbox will be ignored */ 22 /* mailbox will be ignored */
23 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 23 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
24 /* should only get the subscribed one */ 24 /* should only get the subscribed one */
25 virtual QList<Folder>* listFolders(); 25 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
26 /* mailbox will be ignored */ 26 /* mailbox will be ignored */
27 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 27 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
28 QStringList listAllNewsgroups(const QString&mask = QString::null); 28 QStringList listAllNewsgroups(const QString&mask = QString::null);
29 virtual void deleteMail(const RecMail&mail); 29 virtual void deleteMail(const RecMail&mail);
30 virtual void answeredMail(const RecMail&mail); 30 virtual void answeredMail(const RecMail&mail);
31 virtual int deleteAllMail(const Folder*); 31 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&);
32 32
33 virtual RecBody fetchBody( const RecMail &mail ); 33 virtual RecBody fetchBody( const RecMail &mail );
34 virtual encodedString* fetchRawBody(const RecMail&mail); 34 virtual encodedString* fetchRawBody(const RecMail&mail);
35 virtual void logout(); 35 virtual void logout();
36 virtual MAILLIB::ATYPE getType()const; 36 virtual MAILLIB::ATYPE getType()const;
37 virtual const QString&getName()const; 37 virtual const QString&getName()const;
38 static void nntp_progress( size_t current, size_t maximum ); 38 static void nntp_progress( size_t current, size_t maximum );
39 39
40protected: 40protected:
41 void login(); 41 void login();
42 NNTPaccount *account; 42 NNTPaccount *account;
43 mailstorage* m_nntp; 43 mailstorage* m_nntp;
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
index 0939b22..7bf7ed2 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
@@ -168,45 +168,44 @@ void POP3wrapper::login()
168} 168}
169 169
170void POP3wrapper::logout() 170void POP3wrapper::logout()
171{ 171{
172 int err = MAILPOP3_NO_ERROR; 172 int err = MAILPOP3_NO_ERROR;
173 if ( m_pop3 == NULL ) 173 if ( m_pop3 == NULL )
174 return; 174 return;
175 mailstorage_free(m_pop3); 175 mailstorage_free(m_pop3);
176 m_pop3 = 0; 176 m_pop3 = 0;
177} 177}
178 178
179 179
180QList<Folder>* POP3wrapper::listFolders() { 180QValueList<Opie::osmart_pointer<Folder> >* POP3wrapper::listFolders() {
181 QList<Folder> * folders = new QList<Folder>(); 181 QValueList<Opie::osmart_pointer<Folder> >* folders = new QValueList<FolderP>();
182 folders->setAutoDelete( false ); 182 FolderP inb=new Folder("INBOX","/");
183 Folder*inb=new Folder("INBOX","/");
184 folders->append(inb); 183 folders->append(inb);
185 return folders; 184 return folders;
186} 185}
187 186
188void POP3wrapper::deleteMail(const RecMail&mail) { 187void POP3wrapper::deleteMail(const RecMail&mail) {
189 login(); 188 login();
190 if (!m_pop3) 189 if (!m_pop3)
191 return; 190 return;
192 int err = mailsession_remove_message(m_pop3->sto_session,mail.getNumber()); 191 int err = mailsession_remove_message(m_pop3->sto_session,mail.getNumber());
193 if (err != MAIL_NO_ERROR) { 192 if (err != MAIL_NO_ERROR) {
194 Global::statusMessage(tr("error deleting mail")); 193 Global::statusMessage(tr("error deleting mail"));
195 } 194 }
196} 195}
197 196
198void POP3wrapper::answeredMail(const RecMail&) {} 197void POP3wrapper::answeredMail(const RecMail&) {}
199 198
200int POP3wrapper::deleteAllMail(const Folder*) { 199int POP3wrapper::deleteAllMail(const FolderP&) {
201 login(); 200 login();
202 if (!m_pop3) 201 if (!m_pop3)
203 return 0; 202 return 0;
204 int res = 1; 203 int res = 1;
205 204
206 uint32_t result = 0; 205 uint32_t result = 0;
207 int err = mailsession_messages_number(m_pop3->sto_session,NULL,&result); 206 int err = mailsession_messages_number(m_pop3->sto_session,NULL,&result);
208 if (err != MAIL_NO_ERROR) { 207 if (err != MAIL_NO_ERROR) {
209 Global::statusMessage(tr("Error getting folder info")); 208 Global::statusMessage(tr("Error getting folder info"));
210 return 0; 209 return 0;
211 } 210 }
212 for (unsigned int i = 0; i < result; ++i) { 211 for (unsigned int i = 0; i < result; ++i) {
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h
index 391c841..e4afb94 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.h
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h
@@ -9,31 +9,31 @@ class encodedString;
9struct mailstorage; 9struct mailstorage;
10struct mailfolder; 10struct mailfolder;
11 11
12class POP3wrapper : public Genericwrapper 12class POP3wrapper : public Genericwrapper
13{ 13{
14 Q_OBJECT 14 Q_OBJECT
15 15
16public: 16public:
17 POP3wrapper( POP3account *a ); 17 POP3wrapper( POP3account *a );
18 virtual ~POP3wrapper(); 18 virtual ~POP3wrapper();
19 /* mailbox will be ignored */ 19 /* mailbox will be ignored */
20 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 20 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
21 virtual QList<Folder>* listFolders(); 21 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
22 /* mailbox will be ignored */ 22 /* mailbox will be ignored */
23 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 23 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
24 24
25 virtual void deleteMail(const RecMail&mail); 25 virtual void deleteMail(const RecMail&mail);
26 virtual void answeredMail(const RecMail&mail); 26 virtual void answeredMail(const RecMail&mail);
27 virtual int deleteAllMail(const Folder*); 27 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&);
28 28
29 virtual RecBody fetchBody( const RecMail &mail ); 29 virtual RecBody fetchBody( const RecMail &mail );
30 virtual encodedString* fetchRawBody(const RecMail&mail); 30 virtual encodedString* fetchRawBody(const RecMail&mail);
31 virtual void logout(); 31 virtual void logout();
32 virtual MAILLIB::ATYPE getType()const; 32 virtual MAILLIB::ATYPE getType()const;
33 virtual const QString&getName()const; 33 virtual const QString&getName()const;
34 static void pop3_progress( size_t current, size_t maximum ); 34 static void pop3_progress( size_t current, size_t maximum );
35 35
36protected: 36protected:
37 void login(); 37 void login();
38 POP3account *account; 38 POP3account *account;
39 mailstorage*m_pop3; 39 mailstorage*m_pop3;
diff --git a/noncore/net/mail/viewmail.cpp b/noncore/net/mail/viewmail.cpp
index aa8f37a..78652d7 100644
--- a/noncore/net/mail/viewmail.cpp
+++ b/noncore/net/mail/viewmail.cpp
@@ -124,24 +124,25 @@ void ViewMail::setBody( RecBody body )
124 */ 124 */
125 QTextOStream o(&fsize); 125 QTextOStream o(&fsize);
126 if (w>0) o.precision(2); else o.precision(0); 126 if (w>0) o.precision(2); else o.precision(0);
127 o.setf(QTextStream::fixed); 127 o.setf(QTextStream::fixed);
128 o << s << " " << q << "Byte"; 128 o << s << " " << q << "Byte";
129 } 129 }
130 130
131 curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body.Description().Positionlist()); 131 curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body.Description().Positionlist());
132 QString filename = ""; 132 QString filename = "";
133 133
134 for (unsigned int i = 0; i < body.Parts().count();++i) 134 for (unsigned int i = 0; i < body.Parts().count();++i)
135 { 135 {
136 filename = "";
136 type = body.Parts()[i].Type()+"/"+body.Parts()[i].Subtype(); 137 type = body.Parts()[i].Type()+"/"+body.Parts()[i].Subtype();
137 part_plist_t::ConstIterator it = body.Parts()[i].Parameters().begin(); 138 part_plist_t::ConstIterator it = body.Parts()[i].Parameters().begin();
138 for (;it!=body.Parts()[i].Parameters().end();++it) 139 for (;it!=body.Parts()[i].Parameters().end();++it)
139 { 140 {
140 qDebug(it.key()); 141 qDebug(it.key());
141 if (it.key().lower()=="name") 142 if (it.key().lower()=="name")
142 { 143 {
143 filename=it.data(); 144 filename=it.data();
144 } 145 }
145 } 146 }
146 s = body.Parts()[i].Size(); 147 s = body.Parts()[i].Size();
147 w = 0; 148 w = 0;
@@ -386,52 +387,52 @@ QString ViewMail::deHtml(const QString &string)
386 return string_; 387 return string_;
387} 388}
388 389
389void ViewMail::slotReply() 390void ViewMail::slotReply()
390{ 391{
391 if (!m_gotBody) 392 if (!m_gotBody)
392 { 393 {
393 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok")); 394 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok"));
394 return; 395 return;
395 } 396 }
396 397
397 QString rtext; 398 QString rtext;
398 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose 399 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose
399 .arg( m_mail[0] ) 400 .arg( m_mail[0] )
400 .arg( m_mail[3] ); 401 .arg( m_mail[3] );
401 402
402 QString text = m_mail[2]; 403 QString text = m_mail[2];
403 QStringList lines = QStringList::split(QRegExp("\\n"), text); 404 QStringList lines = QStringList::split(QRegExp("\\n"), text);
404 QStringList::Iterator it; 405 QStringList::Iterator it;
405 for (it = lines.begin(); it != lines.end(); it++) 406 for (it = lines.begin(); it != lines.end(); it++)
406 { 407 {
407 rtext += "> " + *it + "\n"; 408 rtext += "> " + *it + "\n";
408 } 409 }
409 rtext += "\n"; 410 rtext += "\n";
410 411
411 QString prefix; 412 QString prefix;
412 if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = ""; 413 if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = "";
413 else prefix = "Re: "; // no i18n on purpose 414 else prefix = "Re: "; // no i18n on purpose
414 415
415 Settings *settings = new Settings(); 416 Settings *settings = new Settings();
416 ComposeMail composer( settings ,this, 0, true); 417 ComposeMail composer( settings ,this, 0, true);
417 if (m_recMail.Replyto().isEmpty()) { 418 if (m_recMail.Replyto().isEmpty()) {
418 composer.setTo( m_recMail.getFrom()); 419 composer.setTo( m_recMail.getFrom());
419 } else { 420 } else {
420 composer.setTo( m_recMail.Replyto()); 421 composer.setTo( m_recMail.Replyto());
421 } 422 }
422 composer.setSubject( prefix + m_mail[1] ); 423 composer.setSubject( prefix + m_mail[1] );
423 composer.setMessage( rtext ); 424 composer.setMessage( rtext );
424 composer.setInReplyTo(m_recMail.Msgid()); 425 composer.setInReplyTo(m_recMail.Msgid());
425 426
426 if ( QDialog::Accepted == QPEApplication::execDialog( &composer ) ) 427 if ( QDialog::Accepted == QPEApplication::execDialog( &composer ) )
427 { 428 {
428 m_recMail.Wrapper()->answeredMail(m_recMail); 429 m_recMail.Wrapper()->answeredMail(m_recMail);
429 } 430 }
430} 431}
431 432
432void ViewMail::slotForward() 433void ViewMail::slotForward()
433{ 434{
434 if (!m_gotBody) 435 if (!m_gotBody)
435 { 436 {
436 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot forward yet."), tr("Ok")); 437 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot forward yet."), tr("Ok"));
437 return; 438 return;