summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountitem.cpp115
-rw-r--r--noncore/net/mail/accountitem.h23
-rw-r--r--noncore/net/mail/accountview.cpp2
-rw-r--r--noncore/net/mail/accountview.h7
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.cpp5
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h16
-rw-r--r--noncore/net/mail/libmailwrapper/genericwrapper.h2
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp14
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.h20
-rw-r--r--noncore/net/mail/libmailwrapper/mailtypes.h1
-rw-r--r--noncore/net/mail/libmailwrapper/mailwrapper.cpp12
-rw-r--r--noncore/net/mail/libmailwrapper/mailwrapper.h16
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.cpp39
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.h13
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.cpp24
-rw-r--r--noncore/net/mail/libmailwrapper/mhwrapper.h20
-rw-r--r--noncore/net/mail/libmailwrapper/nntpwrapper.cpp9
-rw-r--r--noncore/net/mail/libmailwrapper/nntpwrapper.h4
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp9
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.h4
-rw-r--r--noncore/net/mail/viewmail.cpp7
21 files changed, 190 insertions, 172 deletions
diff --git a/noncore/net/mail/accountitem.cpp b/noncore/net/mail/accountitem.cpp
index 396dcb7..3e12563 100644
--- a/noncore/net/mail/accountitem.cpp
+++ b/noncore/net/mail/accountitem.cpp
@@ -54,29 +54,27 @@ void POP3viewItem::refresh( QList<RecMail> & )
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" );
@@ -138,16 +136,15 @@ void POP3viewItem::contextMenuSelected(int which)
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
@@ -247,29 +244,28 @@ void NNTPviewItem::refresh( QList<RecMail> & )
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" );
@@ -344,16 +340,15 @@ void NNTPviewItem::contextMenuSelected(int which)
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
@@ -447,53 +442,51 @@ void 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()
@@ -575,32 +568,30 @@ RecBody IMAPviewItem::fetchBody(const RecMail&)
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
@@ -765,26 +756,26 @@ void MHviewItem::refresh( QList<RecMail> & target)
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 {
@@ -794,22 +785,20 @@ void MHviewItem::refresh(bool force)
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" );
@@ -875,22 +864,21 @@ void MHviewItem::contextMenuSelected(int which)
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
@@ -918,13 +906,13 @@ void MHfolderItem::initName()
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{
@@ -1040,40 +1028,45 @@ AccountViewItem::AccountViewItem( AccountView *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).
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,11 +1,12 @@
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;
@@ -15,17 +16,19 @@ class 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();
@@ -33,16 +36,16 @@ public:
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:
@@ -63,13 +66,13 @@ protected:
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
@@ -101,13 +104,13 @@ protected:
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
@@ -141,14 +144,14 @@ protected:
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;
@@ -183,20 +186,20 @@ protected:
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();
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
@@ -140,13 +140,13 @@ void AccountView::setupFolderselect(Selectstore*sels)
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;
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,11 +1,12 @@
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;
@@ -19,27 +20,27 @@ class AccountView : public QListView
19 20
20public: 21public:
21 AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); 22 AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 );
22 virtual ~AccountView(); 23 virtual ~AccountView();
23 virtual void populate( QList<Account> list ); 24 virtual void populate( QList<Account> list );
24 virtual RecBody fetchBody(const RecMail&aMail); 25 virtual RecBody fetchBody(const RecMail&aMail);
25 virtual void downloadMails(Folder*fromFolder,AbstractMail*fromWrapper); 26 virtual void downloadMails(const Opie::osmart_pointer<Folder>&fromFolder,AbstractMail*fromWrapper);
26 virtual bool currentisDraft(); 27 virtual bool currentisDraft();
27 28
28public slots: 29public slots:
29 virtual void refreshAll(); 30 virtual void refreshAll();
30 virtual void refresh(QListViewItem *item); 31 virtual void refresh(QListViewItem *item);
31 virtual void refreshCurrent(); 32 virtual void refreshCurrent();
32 virtual void slotHold(int, QListViewItem *,const QPoint&,int); 33 virtual void slotHold(int, QListViewItem *,const QPoint&,int);
33 virtual void slotContextMenu(int id); 34 virtual void slotContextMenu(int id);
34 void setupFolderselect(Selectstore*sels); 35 void setupFolderselect(Selectstore*sels);
35 36
36signals: 37signals:
37 void refreshMailview(QList<RecMail>*); 38 void refreshMailview(QList<RecMail>*);
38 39
39protected: 40protected:
40 QListViewItem* m_currentItem; 41 QListViewItem* m_currentItem;
41 QValueList<IMAPviewItem*> imapAccounts; 42 QValueList<IMAPviewItem*> imapAccounts;
42 QValueList<MHviewItem*> mhAccounts; 43 QValueList<MHviewItem*> mhAccounts;
43}; 44};
44 45
45#endif 46#endif
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp
index ac6f380..7e6d383 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.cpp
+++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp
@@ -108,13 +108,13 @@ QString AbstractMail::gen_attachment_id()
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{
@@ -130,13 +130,14 @@ QString AbstractMail::draftFolder()
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);
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,14 +1,16 @@
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;
@@ -18,38 +20,40 @@ struct folderStat;
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! */
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
@@ -35,13 +35,13 @@ public:
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 );
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
@@ -263,23 +263,22 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target )
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/*
@@ -963,13 +962,13 @@ encodedString* IMAPwrapper::fetchDecodedPart(const RecMail&mail,const RecPart&pa
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;
@@ -1004,13 +1003,13 @@ int IMAPwrapper::deleteAllMail(const Folder*folder)
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) {
@@ -1034,13 +1033,13 @@ int IMAPwrapper::createMbox(const QString&folder,const Folder*parentfolder,const
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) {
@@ -1120,13 +1119,14 @@ encodedString* 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 }
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
@@ -20,34 +20,36 @@ class encodedString;
20class IMAPwrapper : public AbstractMail 20class IMAPwrapper : public AbstractMail
21{ 21{
22 Q_OBJECT 22 Q_OBJECT
23public: 23public:
24 IMAPwrapper( IMAPaccount *a ); 24 IMAPwrapper( IMAPaccount *a );
25 virtual ~IMAPwrapper(); 25 virtual ~IMAPwrapper();
26 virtual QList<Folder>* listFolders(); 26 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
27 virtual void listMessages(const QString & mailbox,QList<RecMail>&target ); 27 virtual void listMessages(const QString & mailbox,QList<RecMail>&target );
28 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 28 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
29 29
30 virtual void deleteMail(const RecMail&mail); 30 virtual void deleteMail(const RecMail&mail);
31 virtual void answeredMail(const RecMail&mail); 31 virtual void answeredMail(const RecMail&mail);
32 virtual int deleteAllMail(const Folder*folder); 32 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&folder);
33 virtual void storeMessage(const char*msg,size_t length, const QString&folder); 33 virtual void storeMessage(const char*msg,size_t length, const QString&folder);
34 virtual void mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 34 virtual void mvcpAllMails(const Opie::osmart_pointer<Folder>&fromFolder,
35 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
35 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 36 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
36 37
37 virtual RecBody fetchBody(const RecMail&mail); 38 virtual RecBody fetchBody(const RecMail&mail);
38 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part); 39 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part);
39 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part); 40 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part);
40 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part); 41 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part);
41 virtual encodedString* fetchRawBody(const RecMail&mail); 42 virtual encodedString* fetchRawBody(const RecMail&mail);
42 43
43 virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false); 44 virtual int createMbox(const QString&,const Opie::osmart_pointer<Folder>&parentfolder=0,
44 virtual int deleteMbox(const Folder*folder); 45 const QString& delemiter="/",bool getsubfolder=false);
45 46 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&folder);
47
46 static void imap_progress( size_t current, size_t maximum ); 48 static void imap_progress( size_t current, size_t maximum );
47 49
48 virtual void logout(); 50 virtual void logout();
49 virtual MAILLIB::ATYPE getType()const; 51 virtual MAILLIB::ATYPE getType()const;
50 virtual const QString&getName()const; 52 virtual const QString&getName()const;
51 53
52protected: 54protected:
53 RecMail*parse_list_result(mailimap_msg_att*); 55 RecMail*parse_list_result(mailimap_msg_att*);
@@ -61,13 +63,13 @@ protected:
61 void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description); 63 void fillSinglePart(RecPart&target_part,mailimap_body_type_1part*Description);
62 void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which); 64 void fillSingleTextPart(RecPart&target_part,mailimap_body_type_text*which);
63 void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which); 65 void fillSingleBasicPart(RecPart&target_part,mailimap_body_type_basic*which);
64 void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which); 66 void fillSingleMsgPart(RecPart&target_part,mailimap_body_type_msg*which);
65 void fillMultiPart(RecPart&target_part,mailimap_body_type_mpart*which); 67 void fillMultiPart(RecPart&target_part,mailimap_body_type_mpart*which);
66 void traverseBody(const RecMail&mail,mailimap_body*body,RecBody&target_body,int current_recursion,QValueList<int>recList,int current_count=1); 68 void traverseBody(const RecMail&mail,mailimap_body*body,RecBody&target_body,int current_recursion,QValueList<int>recList,int current_count=1);
67 69
68 /* just helpers */ 70 /* just helpers */
69 static void fillBodyFields(RecPart&target_part,mailimap_body_fields*which); 71 static void fillBodyFields(RecPart&target_part,mailimap_body_fields*which);
70 static QStringList address_list_to_stringlist(clist*list); 72 static QStringList address_list_to_stringlist(clist*list);
71 73
72 74
73 IMAPaccount *account; 75 IMAPaccount *account;
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
@@ -5,13 +5,12 @@
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
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
@@ -32,12 +32,16 @@ Folder::Folder(const QString&tmp_name, const QString&sep )
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 )
@@ -54,12 +58,16 @@ IMAPFolder::IMAPFolder(const QString&name,const QString&sep, bool select,bool no
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
@@ -161,6 +169,10 @@ MHFolder::MHFolder(const QString&disp_name,const QString&mbox)
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
@@ -10,21 +10,21 @@
10 10
11#include <opie2/osmart_pointer.h> 11#include <opie2/osmart_pointer.h>
12 12
13class Attachment 13class Attachment
14{ 14{
15public: 15public:
16 Attachment( DocLnk lnk ); 16 Attachment( DocLnk lnk );
17 virtual ~Attachment(){} 17 virtual ~Attachment(){}
18 const QString getFileName()const{ return doc.file(); } 18 const QString getFileName()const{ return doc.file(); }
19 const QString getName()const{ return doc.name(); } 19 const QString getName()const{ return doc.name(); }
20 const QString getMimeType()const{ return doc.type(); } 20 const QString getMimeType()const{ return doc.type(); }
21 const QPixmap getPixmap()const{ return doc.pixmap(); } 21 const QPixmap getPixmap()const{ return doc.pixmap(); }
22 const int getSize()const { return size; } 22 const int getSize()const { return size; }
23 DocLnk getDocLnk() { return doc; } 23 DocLnk getDocLnk() { return doc; }
24 24
25protected: 25protected:
26 DocLnk doc; 26 DocLnk doc;
27 int size; 27 int size;
28 28
29}; 29};
30 30
@@ -37,13 +37,13 @@ public:
37 * in this case this object will not get a virtual table -> memory and 37 * in this case this object will not get a virtual table -> memory and
38 * speed will be a little bit better? 38 * speed will be a little bit better?
39 */ 39 */
40 virtual ~Mail(){} 40 virtual ~Mail(){}
41 void addAttachment( Attachment *att ) { attList.append( att ); } 41 void addAttachment( Attachment *att ) { attList.append( att ); }
42 const QList<Attachment>& getAttachments()const { return attList; } 42 const QList<Attachment>& getAttachments()const { return attList; }
43 void removeAttachment( Attachment *att ) { attList.remove( att ); } 43 void removeAttachment( Attachment *att ) { attList.remove( att ); }
44 const QString&getName()const { return name; } 44 const QString&getName()const { return name; }
45 void setName( QString s ) { name = s; } 45 void setName( QString s ) { name = s; }
46 const QString&getMail()const{ return mail; } 46 const QString&getMail()const{ return mail; }
47 void setMail( const QString&s ) { mail = s; } 47 void setMail( const QString&s ) { mail = s; }
48 const QString&getTo()const{ return to; } 48 const QString&getTo()const{ return to; }
49 void setTo( const QString&s ) { to = s; } 49 void setTo( const QString&s ) { to = s; }
@@ -63,40 +63,42 @@ public:
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};
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
@@ -11,66 +11,65 @@ MBOXwrapper::MBOXwrapper(const QString & mbox_dir,const QString&mbox_name)
11{ 11{
12 QDir dir(MBOXPath); 12 QDir dir(MBOXPath);
13 if (!dir.exists()) { 13 if (!dir.exists()) {
14 dir.mkdir(MBOXPath); 14 dir.mkdir(MBOXPath);
15 } 15 }
16} 16}
17 17
18MBOXwrapper::~MBOXwrapper() 18MBOXwrapper::~MBOXwrapper()
19{ 19{
20} 20}
21 21
22void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target ) 22void MBOXwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
23{ 23{
24 mailstorage*storage = mailstorage_new(NULL); 24 mailstorage*storage = mailstorage_new(NULL);
25 QString p = MBOXPath+"/"; 25 QString p = MBOXPath+"/";
26 p+=mailbox; 26 p+=mailbox;
27 27
28 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 28 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
29 mailfolder*folder; 29 mailfolder*folder;
30 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 30 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
31 r = mailfolder_connect(folder); 31 r = mailfolder_connect(folder);
32 if (r != MAIL_NO_ERROR) { 32 if (r != MAIL_NO_ERROR) {
33 qDebug("Error initializing mbox"); 33 qDebug("Error initializing mbox");
34 mailfolder_free(folder); 34 mailfolder_free(folder);
35 mailstorage_free(storage); 35 mailstorage_free(storage);
36 return; 36 return;
37 } 37 }
38 38
39 parseList(target,folder->fld_session,mailbox); 39 parseList(target,folder->fld_session,mailbox);
40 40
41 mailfolder_disconnect(folder); 41 mailfolder_disconnect(folder);
42 mailfolder_free(folder); 42 mailfolder_free(folder);
43 mailstorage_free(storage); 43 mailstorage_free(storage);
44 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); 44 Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count()));
45} 45}
46 46
47QList<Folder>* MBOXwrapper::listFolders() 47QValueList<Opie::osmart_pointer<Folder> >* MBOXwrapper::listFolders()
48{ 48{
49 QList<Folder> * folders = new QList<Folder>(); 49 QValueList<Opie::osmart_pointer<Folder> >* folders = new QValueList<Opie::osmart_pointer<Folder> >();
50 folders->setAutoDelete( false );
51 QDir dir(MBOXPath); 50 QDir dir(MBOXPath);
52 if (!dir.exists()) return folders; 51 if (!dir.exists()) return folders;
53 dir.setFilter(QDir::Files|QDir::Writable|QDir::Readable); 52 dir.setFilter(QDir::Files|QDir::Writable|QDir::Readable);
54 QStringList entries = dir.entryList(); 53 QStringList entries = dir.entryList();
55 QStringList::ConstIterator it = entries.begin(); 54 QStringList::ConstIterator it = entries.begin();
56 for (;it!=entries.end();++it) { 55 for (;it!=entries.end();++it) {
57 Folder*inb=new Folder(*it,"/"); 56 FolderP inb=new Folder(*it,"/");
58 folders->append(inb); 57 folders->append(inb);
59 } 58 }
60 return folders; 59 return folders;
61} 60}
62 61
63void MBOXwrapper::deleteMail(const RecMail&mail) 62void MBOXwrapper::deleteMail(const RecMail&mail)
64{ 63{
65 mailstorage*storage = mailstorage_new(NULL); 64 mailstorage*storage = mailstorage_new(NULL);
66 QString p = MBOXPath+"/"; 65 QString p = MBOXPath+"/";
67 p+=mail.getMbox(); 66 p+=mail.getMbox();
68 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 67 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
69 mailfolder*folder; 68 mailfolder*folder;
70 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 69 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
71 r = mailfolder_connect(folder); 70 r = mailfolder_connect(folder);
72 if (r != MAIL_NO_ERROR) { 71 if (r != MAIL_NO_ERROR) {
73 qDebug("Error initializing mbox"); 72 qDebug("Error initializing mbox");
74 mailfolder_free(folder); 73 mailfolder_free(folder);
75 mailstorage_free(storage); 74 mailstorage_free(storage);
76 return; 75 return;
@@ -96,13 +95,13 @@ RecBody MBOXwrapper::fetchBody( const RecMail &mail )
96 mailmessage * msg; 95 mailmessage * msg;
97 char*data=0; 96 char*data=0;
98 size_t size; 97 size_t size;
99 98
100 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 99 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
101 mailfolder*folder; 100 mailfolder*folder;
102 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 101 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
103 r = mailfolder_connect(folder); 102 r = mailfolder_connect(folder);
104 if (r != MAIL_NO_ERROR) { 103 if (r != MAIL_NO_ERROR) {
105 qDebug("Error initializing mbox"); 104 qDebug("Error initializing mbox");
106 mailfolder_free(folder); 105 mailfolder_free(folder);
107 mailstorage_free(storage); 106 mailstorage_free(storage);
108 return body; 107 return body;
@@ -119,26 +118,26 @@ RecBody MBOXwrapper::fetchBody( const RecMail &mail )
119 qDebug("Error fetching mail %i",mail.getNumber()); 118 qDebug("Error fetching mail %i",mail.getNumber());
120 mailfolder_free(folder); 119 mailfolder_free(folder);
121 mailstorage_free(storage); 120 mailstorage_free(storage);
122 mailmessage_free(msg); 121 mailmessage_free(msg);
123 return body; 122 return body;
124 } 123 }
125 body = parseMail(msg); 124 body = parseMail(msg);
126 mailmessage_fetch_result_free(msg,data); 125 mailmessage_fetch_result_free(msg,data);
127 mailfolder_free(folder); 126 mailfolder_free(folder);
128 mailstorage_free(storage); 127 mailstorage_free(storage);
129 128
130 return body; 129 return body;
131} 130}
132 131
133void MBOXwrapper::mbox_progress( size_t current, size_t maximum ) 132void MBOXwrapper::mbox_progress( size_t current, size_t maximum )
134{ 133{
135 qDebug("MBOX %i von %i",current,maximum); 134 qDebug("MBOX %i von %i",current,maximum);
136} 135}
137 136
138int MBOXwrapper::createMbox(const QString&folder,const Folder*,const QString&,bool ) 137int MBOXwrapper::createMbox(const QString&folder,const FolderP&,const QString&,bool )
139{ 138{
140 QString p = MBOXPath+"/"; 139 QString p = MBOXPath+"/";
141 p+=folder; 140 p+=folder;
142 QFileInfo fi(p); 141 QFileInfo fi(p);
143 if (fi.exists()) { 142 if (fi.exists()) {
144 Global::statusMessage(tr("Mailbox exists.")); 143 Global::statusMessage(tr("Mailbox exists."));
@@ -179,13 +178,13 @@ encodedString* MBOXwrapper::fetchRawBody(const RecMail&mail)
179 mailmessage * msg; 178 mailmessage * msg;
180 char*data=0; 179 char*data=0;
181 size_t size; 180 size_t size;
182 181
183 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 182 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
184 mailfolder*folder; 183 mailfolder*folder;
185 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 184 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
186 r = mailfolder_connect(folder); 185 r = mailfolder_connect(folder);
187 if (r != MAIL_NO_ERROR) { 186 if (r != MAIL_NO_ERROR) {
188 Global::statusMessage(tr("Error initializing mbox")); 187 Global::statusMessage(tr("Error initializing mbox"));
189 mailfolder_free(folder); 188 mailfolder_free(folder);
190 mailstorage_free(storage); 189 mailstorage_free(storage);
191 return 0; 190 return 0;
@@ -240,28 +239,28 @@ void MBOXwrapper::deleteMails(mailmbox_folder*f,QList<RecMail> &target)
240 r = mailmbox_expunge(f); 239 r = mailmbox_expunge(f);
241 if (r != MAILMBOX_NO_ERROR) { 240 if (r != MAILMBOX_NO_ERROR) {
242 qDebug("error expunge mailbox"); 241 qDebug("error expunge mailbox");
243 } 242 }
244} 243}
245 244
246int MBOXwrapper::deleteAllMail(const Folder*tfolder) 245int MBOXwrapper::deleteAllMail(const FolderP&tfolder)
247{ 246{
248 if (!tfolder) return 0; 247 if (!tfolder) return 0;
249 QString p = MBOXPath+"/"+tfolder->getDisplayName(); 248 QString p = MBOXPath+"/"+tfolder->getDisplayName();
250 int res = 1; 249 int res = 1;
251 250
252 mailfolder*folder = 0; 251 mailfolder*folder = 0;
253 mailmessage_list*l=0; 252 mailmessage_list*l=0;
254 mailstorage*storage = mailstorage_new(NULL); 253 mailstorage*storage = mailstorage_new(NULL);
255 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 254 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
256 if (r != MAIL_NO_ERROR) { 255 if (r != MAIL_NO_ERROR) {
257 Global::statusMessage(tr("Error initializing mbox")); 256 Global::statusMessage(tr("Error initializing mbox"));
258 res = 0; 257 res = 0;
259 } 258 }
260 if (res) { 259 if (res) {
261 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 260 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
262 r = mailfolder_connect(folder); 261 r = mailfolder_connect(folder);
263 if (r != MAIL_NO_ERROR) { 262 if (r != MAIL_NO_ERROR) {
264 Global::statusMessage(tr("Error initializing mbox")); 263 Global::statusMessage(tr("Error initializing mbox"));
265 res = 0; 264 res = 0;
266 } 265 }
267 } 266 }
@@ -283,13 +282,13 @@ int MBOXwrapper::deleteAllMail(const Folder*tfolder)
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."));
@@ -313,13 +312,13 @@ void MBOXwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
313 QFile fi(p); 312 QFile fi(p);
314 if (!fi.exists()) { 313 if (!fi.exists()) {
315 Global::statusMessage(tr("Mailbox doesn't exist.")); 314 Global::statusMessage(tr("Mailbox doesn't exist."));
316 return; 315 return;
317 } 316 }
318 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0); 317 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
319 folder = mailfolder_new( storage,(char*)p.latin1(),NULL); 318 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
320 r = mailfolder_connect(folder); 319 r = mailfolder_connect(folder);
321 r = mailsession_status_folder(folder->fld_session,(char*)mailbox.latin1(),&target_stat.message_count, 320 r = mailsession_status_folder(folder->fld_session,(char*)mailbox.latin1(),&target_stat.message_count,
322 &target_stat.message_recent,&target_stat.message_unseen); 321 &target_stat.message_recent,&target_stat.message_unseen);
323 if (folder) mailfolder_free(folder); 322 if (folder) mailfolder_free(folder);
324 if (storage) mailstorage_free(storage); 323 if (storage) mailstorage_free(storage);
325} 324}
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
@@ -13,31 +13,32 @@ class 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;
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
@@ -73,16 +73,15 @@ void MHwrapper::listMessages(const QString & mailbox, QList<RecMail> &target )
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 }
@@ -141,13 +140,13 @@ RecBody MHwrapper::fetchBody( const RecMail &mail )
141 } 140 }
142 r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg); 141 r = mailsession_get_message(m_storage->sto_session, mail.getNumber(), &msg);
143 if (r != MAIL_NO_ERROR) { 142 if (r != MAIL_NO_ERROR) {
144 qDebug("Error fetching mail %i",mail.getNumber()); 143 qDebug("Error fetching mail %i",mail.getNumber());
145 return body; 144 return body;
146 } 145 }
147 body = parseMail(msg); 146 body = parseMail(msg);
148 mailmessage_fetch_result_free(msg,data); 147 mailmessage_fetch_result_free(msg,data);
149 return body; 148 return body;
150} 149}
151 150
152void MHwrapper::mbox_progress( size_t current, size_t maximum ) 151void MHwrapper::mbox_progress( size_t current, size_t maximum )
153{ 152{
@@ -166,13 +165,13 @@ QString MHwrapper::buildPath(const QString&p)
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;
@@ -260,13 +259,13 @@ void MHwrapper::deleteMails(const QString & mailbox,QList<RecMail> &target)
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;
@@ -295,34 +294,34 @@ int MHwrapper::deleteAllMail(const Folder*tfolder)
295 } 294 }
296 } 295 }
297 if (l) mailmessage_list_free(l); 296 if (l) mailmessage_list_free(l);
298 return res; 297 return res;
299} 298}
300 299
301int MHwrapper::deleteMbox(const Folder*tfolder) 300int MHwrapper::deleteMbox(const FolderP&tfolder)
302{ 301{
303 init_storage(); 302 init_storage();
304 if (!m_storage) { 303 if (!m_storage) {
305 return 0; 304 return 0;
306 } 305 }
307 if (!tfolder) return 0; 306 if (!tfolder) return 0;
308 if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0; 307 if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0;
309 308
310 int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); 309 int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1());
311 310
312 if (r != MAIL_NO_ERROR) { 311 if (r != MAIL_NO_ERROR) {
313 qDebug("error deleting mail box"); 312 qDebug("error deleting mail box");
314 return 0; 313 return 0;
315 } 314 }
316 QString cmd = "rm -rf "+tfolder->getName(); 315 QString cmd = "rm -rf "+tfolder->getName();
317 QStringList command; 316 QStringList command;
318 command << "/bin/sh"; 317 command << "/bin/sh";
319 command << "-c"; 318 command << "-c";
320 command << cmd.latin1(); 319 command << cmd.latin1();
321 OProcess *process = new OProcess(); 320 OProcess *process = new OProcess();
322 321
323 connect(process, SIGNAL(processExited(OProcess*)), 322 connect(process, SIGNAL(processExited(OProcess*)),
324 this, SLOT( processEnded(OProcess*))); 323 this, SLOT( processEnded(OProcess*)));
325 connect(process, SIGNAL( receivedStderr(OProcess*,char*,int)), 324 connect(process, SIGNAL( receivedStderr(OProcess*,char*,int)),
326 this, SLOT( oprocessStderr(OProcess*,char*,int))); 325 this, SLOT( oprocessStderr(OProcess*,char*,int)));
327 326
328 *process << command; 327 *process << command;
@@ -383,13 +382,13 @@ void MHwrapper::mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractM
383 qDebug("Using generic"); 382 qDebug("Using generic");
384 Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit); 383 Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit);
385 return; 384 return;
386 } 385 }
387 qDebug("Using internal routines for move/copy"); 386 qDebug("Using internal routines for move/copy");
388 QString tf = buildPath(targetFolder); 387 QString tf = buildPath(targetFolder);
389 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1()); 388 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail.getMbox().latin1());
390 if (r != MAIL_NO_ERROR) { 389 if (r != MAIL_NO_ERROR) {
391 qDebug("Error selecting source mailbox"); 390 qDebug("Error selecting source mailbox");
392 return; 391 return;
393 } 392 }
394 if (moveit) { 393 if (moveit) {
395 r = mailsession_move_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1()); 394 r = mailsession_move_message(m_storage->sto_session,mail.getNumber(),(char*)tf.latin1());
@@ -398,13 +397,14 @@ void MHwrapper::mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractM
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) {
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
@@ -15,46 +15,48 @@ class OProcess;
15class MHwrapper : public Genericwrapper 15class MHwrapper : public Genericwrapper
16{ 16{
17 Q_OBJECT 17 Q_OBJECT
18public: 18public:
19 MHwrapper(const QString & dir,const QString&name); 19 MHwrapper(const QString & dir,const QString&name);
20 virtual ~MHwrapper(); 20 virtual ~MHwrapper();
21 21
22 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 22 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
23 virtual QList<Folder>* listFolders(); 23 virtual QValueList<Opie::osmart_pointer<Folder> >* listFolders();
24 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX"); 24 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
25 25
26 virtual void deleteMail(const RecMail&mail); 26 virtual void deleteMail(const RecMail&mail);
27 virtual void answeredMail(const RecMail&mail); 27 virtual void answeredMail(const RecMail&mail);
28 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 28 virtual void mvcpMail(const RecMail&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
29 virtual void mvcpAllMails(Folder*fromFolder,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit); 29 virtual void mvcpAllMails(const Opie::osmart_pointer<Folder>&fromFolder,
30 30 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit);
31 virtual int createMbox(const QString&folder,const Folder*f=0,const QString&d="",bool s=false); 31
32 virtual int deleteMbox(const Folder*); 32 virtual int createMbox(const QString&folder,const Opie::osmart_pointer<Folder>&f=0,
33 const QString&d="",bool s=false);
34 virtual int deleteMbox(const Opie::osmart_pointer<Folder>&);
33 35
34 virtual void storeMessage(const char*msg,size_t length, const QString&folder); 36 virtual void storeMessage(const char*msg,size_t length, const QString&folder);
35 37
36 virtual RecBody fetchBody( const RecMail &mail ); 38 virtual RecBody fetchBody( const RecMail &mail );
37 static void mbox_progress( size_t current, size_t maximum ); 39 static void mbox_progress( size_t current, size_t maximum );
38 40
39 virtual encodedString* fetchRawBody(const RecMail&mail); 41 virtual encodedString* fetchRawBody(const RecMail&mail);
40 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target); 42 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
41 virtual int deleteAllMail(const Folder*); 43 virtual int deleteAllMail(const Opie::osmart_pointer<Folder>&);
42 virtual MAILLIB::ATYPE getType()const; 44 virtual MAILLIB::ATYPE getType()const;
43 virtual const QString&getName()const; 45 virtual const QString&getName()const;
44 46
45public slots: 47public slots:
46 /* for deleting maildirs we are using a system call */ 48 /* for deleting maildirs we are using a system call */
47 virtual void oprocessStderr(OProcess*, char *buffer, int ); 49 virtual void oprocessStderr(OProcess*, char *buffer, int );
48 virtual void processEnded(OProcess *); 50 virtual void processEnded(OProcess *);
49protected: 51protected:
50 QString buildPath(const QString&p); 52 QString buildPath(const QString&p);
51 QString MHPath; 53 QString MHPath;
52 QString MHName; 54 QString MHName;
53 55
54 void init_storage(); 56 void init_storage();
55 void clean_storage(); 57 void clean_storage();
56 58
57 bool removeMboxfailed; 59 bool removeMboxfailed;
58}; 60};
59 61
60#endif 62#endif
diff --git a/noncore/net/mail/libmailwrapper/nntpwrapper.cpp b/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
index 1956c61..2ec052c 100644
--- a/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/nntpwrapper.cpp
@@ -185,29 +185,28 @@ void NNTPwrapper::logout()
185 if ( m_nntp == NULL ) 185 if ( m_nntp == NULL )
186 return; 186 return;
187 mailstorage_free(m_nntp); 187 mailstorage_free(m_nntp);
188 m_nntp = 0; 188 m_nntp = 0;
189} 189}
190 190
191QList<Folder>* NNTPwrapper::listFolders() { 191QValueList<Opie::osmart_pointer<Folder> >* NNTPwrapper::listFolders() {
192 192
193 QList<Folder> * folders = new QList<Folder>(); 193 QValueList<Opie::osmart_pointer<Folder> >* folders = new QValueList<Opie::osmart_pointer<Folder> >();
194 folders->setAutoDelete( false );
195 QStringList groups; 194 QStringList groups;
196 if (account) { 195 if (account) {
197 groups = account->getGroups(); 196 groups = account->getGroups();
198 } 197 }
199 for ( QStringList::Iterator it = groups.begin(); it != groups.end(); ++it ) { 198 for ( QStringList::Iterator it = groups.begin(); it != groups.end(); ++it ) {
200 folders->append(new Folder((*it),".")); 199 folders->append(new Folder((*it),"."));
201 } 200 }
202 return folders; 201 return folders;
203} 202}
204 203
205/* we made this method in raw nntp access of etpan and not via generic interface 204/* we made this method in raw nntp access of etpan and not via generic interface
206 * 'cause in that case there will be doubled copy operations. eg. the etpan would 205 * 'cause in that case there will be doubled copy operations. eg. the etpan would
207 * copy that stuff into its own structures and we must copy it into useable c++ 206 * copy that stuff into its own structures and we must copy it into useable c++
208 * structures for our frontend. this would not make sense, so it is better to reimplement 207 * structures for our frontend. this would not make sense, so it is better to reimplement
209 * the stuff from generic interface of etpan but copy it direct to qt classes. 208 * the stuff from generic interface of etpan but copy it direct to qt classes.
210 */ 209 */
211QStringList NNTPwrapper::listAllNewsgroups(const QString&mask) { 210QStringList NNTPwrapper::listAllNewsgroups(const QString&mask) {
212 login(); 211 login();
213 QStringList res; 212 QStringList res;
@@ -277,8 +276,8 @@ const 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
@@ -19,19 +19,19 @@ public:
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;
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
@@ -174,16 +174,15 @@ void POP3wrapper::logout()
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();
@@ -194,13 +193,13 @@ void POP3wrapper::deleteMail(const RecMail&mail) {
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;
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
@@ -15,19 +15,19 @@ class POP3wrapper : public Genericwrapper
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;
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
@@ -130,12 +130,13 @@ void ViewMail::setBody( RecBody body )
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")
@@ -392,13 +393,13 @@ void ViewMail::slotReply()
392 { 393 {
393 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok")); 394 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok"));
394 return; 395 return;
395 } 396 }
396 397
397 QString rtext; 398 QString rtext;
398 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose 399 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose
399 .arg( m_mail[0] ) 400 .arg( m_mail[0] )
400 .arg( m_mail[3] ); 401 .arg( m_mail[3] );
401 402
402 QString text = m_mail[2]; 403 QString text = m_mail[2];
403 QStringList lines = QStringList::split(QRegExp("\\n"), text); 404 QStringList lines = QStringList::split(QRegExp("\\n"), text);
404 QStringList::Iterator it; 405 QStringList::Iterator it;
@@ -407,25 +408,25 @@ void ViewMail::slotReply()
407 rtext += "> " + *it + "\n"; 408 rtext += "> " + *it + "\n";
408 } 409 }
409 rtext += "\n"; 410 rtext += "\n";
410 411
411 QString prefix; 412 QString prefix;
412 if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = ""; 413 if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = "";
413 else prefix = "Re: "; // no i18n on purpose 414 else prefix = "Re: "; // no i18n on purpose
414 415
415 Settings *settings = new Settings(); 416 Settings *settings = new Settings();
416 ComposeMail composer( settings ,this, 0, true); 417 ComposeMail composer( settings ,this, 0, true);
417 if (m_recMail.Replyto().isEmpty()) { 418 if (m_recMail.Replyto().isEmpty()) {
418 composer.setTo( m_recMail.getFrom()); 419 composer.setTo( m_recMail.getFrom());
419 } else { 420 } else {
420 composer.setTo( m_recMail.Replyto()); 421 composer.setTo( m_recMail.Replyto());
421 } 422 }
422 composer.setSubject( prefix + m_mail[1] ); 423 composer.setSubject( prefix + m_mail[1] );
423 composer.setMessage( rtext ); 424 composer.setMessage( rtext );
424 composer.setInReplyTo(m_recMail.Msgid()); 425 composer.setInReplyTo(m_recMail.Msgid());
425 426
426 if ( QDialog::Accepted == QPEApplication::execDialog( &composer ) ) 427 if ( QDialog::Accepted == QPEApplication::execDialog( &composer ) )
427 { 428 {
428 m_recMail.Wrapper()->answeredMail(m_recMail); 429 m_recMail.Wrapper()->answeredMail(m_recMail);
429 } 430 }
430} 431}
431 432