summaryrefslogtreecommitdiff
path: root/noncore/net
authoralwin <alwin>2004-03-12 14:12:00 (UTC)
committer alwin <alwin>2004-03-12 14:12:00 (UTC)
commitd1929ef43f0eaaa17aa42196384d1ed925132873 (patch) (unidiff)
treeeff911f93fe7919d7820e5a2e68b72f2f76143da /noncore/net
parentd38384a6edb0110117e0297864f813b379d52789 (diff)
downloadopie-d1929ef43f0eaaa17aa42196384d1ed925132873.zip
opie-d1929ef43f0eaaa17aa42196384d1ed925132873.tar.gz
opie-d1929ef43f0eaaa17aa42196384d1ed925132873.tar.bz2
some pointers embedded into osmart_pointer handling
Diffstat (limited to 'noncore/net') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mail/accountitem.cpp115
-rw-r--r--noncore/net/mail/accountitem.h21
-rw-r--r--noncore/net/mail/accountview.cpp2
-rw-r--r--noncore/net/mail/accountview.h3
-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.h12
-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.h10
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.cpp13
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.h9
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.cpp14
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.h12
-rw-r--r--noncore/net/mail/libmailwrapper/nntpwrapper.cpp7
-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.cpp1
21 files changed, 152 insertions, 134 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,37 +1,38 @@
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>*);
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,43 +14,45 @@ 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);
46 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&folder);
45 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
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
@@ -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
@@ -35,35 +35,34 @@ void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
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;
@@ -126,25 +125,25 @@ RecBody MBOXwrapper::fetchBody( const RecMail &mail )
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;
@@ -234,25 +233,25 @@ 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;
@@ -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 }
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
@@ -9,39 +9,40 @@ class 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;
@@ -160,25 +159,25 @@ QString MHwrapper::buildPath(const QString&p)
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,25 +288,25 @@ 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");
@@ -392,25 +391,26 @@ void MHwrapper::mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractM
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
@@ -11,43 +11,45 @@ class 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 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
30 31
31 virtual int createMbox(const QString&folder,const Folder*f=0,const QString&d="",bool s=false); 32 virtual int createMbox(const QString&folder,const Opie::osmart_pointer<Folder>&f=0,
32 virtual int deleteMbox(const Folder*); 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
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,28 +179,27 @@ 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
@@ -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;