summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountview.cpp234
-rw-r--r--noncore/net/mail/accountview.h71
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.cpp9
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h4
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp6
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.h2
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.cpp9
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.h6
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp6
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.h1
-rw-r--r--noncore/net/mail/libmailwrapper/settings.cpp12
-rw-r--r--noncore/net/mail/libmailwrapper/settings.h5
-rw-r--r--noncore/net/mail/libmailwrapper/smtpwrapper.cpp10
-rw-r--r--noncore/net/mail/libmailwrapper/smtpwrapper.h4
-rw-r--r--noncore/net/mail/selectstore.cpp53
-rw-r--r--noncore/net/mail/selectstore.h18
-rw-r--r--noncore/net/mail/selectstoreui.ui43
17 files changed, 415 insertions, 78 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index faa6982..eea021f 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -12,3 +12,3 @@
12 */ 12 */
13POP3viewItem::POP3viewItem( POP3account *a, QListView *parent ) 13POP3viewItem::POP3viewItem( POP3account *a, AccountView *parent )
14 : AccountViewItem( parent ) 14 : AccountViewItem( parent )
@@ -34,2 +34,3 @@ void POP3viewItem::refresh( QList<RecMail> & )
34{ 34{
35 if (account->getOffline()) return;
35 QList<Folder> *folders = wrapper->listFolders(); 36 QList<Folder> *folders = wrapper->listFolders();
@@ -58,2 +59,48 @@ RecBody POP3viewItem::fetchBody( const RecMail &mail )
58 59
60QPopupMenu * POP3viewItem::getContextMenu()
61{
62 QPopupMenu *m = new QPopupMenu(0);
63 if (m) {
64 if (!account->getOffline()) {
65 m->insertItem(QObject::tr("Disconnect",contextName),0);
66 m->insertItem(QObject::tr("Set offline",contextName),1);
67 } else {
68 m->insertItem(QObject::tr("Set online",contextName),1);
69 }
70 }
71 return m;
72}
73
74void POP3viewItem::disconnect()
75{
76 QListViewItem *child = firstChild();
77 while ( child ) {
78 QListViewItem *tmp = child;
79 child = child->nextSibling();
80 delete tmp;
81 }
82 wrapper->logout();
83}
84
85void POP3viewItem::setOnOffline()
86{
87 if (!account->getOffline()) {
88 disconnect();
89 }
90 account->setOffline(!account->getOffline());
91 account->save();
92}
93
94void POP3viewItem::contextMenuSelected(int which)
95{
96 switch (which) {
97 case 0:
98 disconnect();
99 break;
100 case 1:
101 setOnOffline();
102 break;
103 }
104}
105
59POP3folderItem::~POP3folderItem() 106POP3folderItem::~POP3folderItem()
@@ -93,3 +140,3 @@ QPopupMenu * POP3folderItem::getContextMenu()
93 m->insertItem(QObject::tr("Delete all mails",contextName),1); 140 m->insertItem(QObject::tr("Delete all mails",contextName),1);
94 m->insertItem(QObject::tr("Download all mails",contextName),2); 141 m->insertItem(QObject::tr("Move/Copie all mails",contextName),2);
95 } 142 }
@@ -100,5 +147,5 @@ void POP3folderItem::downloadMails()
100{ 147{
101 Selectstore sels; 148 AccountView*bl = pop3->accountView();
102 sels.showMaximized(); 149 if (!bl) return;
103 sels.exec(); 150 bl->downloadMails(folder,pop3->getWrapper());
104} 151}
@@ -128,3 +175,3 @@ void POP3folderItem::contextMenuSelected(int which)
128 */ 175 */
129IMAPviewItem::IMAPviewItem( IMAPaccount *a, QListView *parent ) 176IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent )
130 : AccountViewItem( parent ) 177 : AccountViewItem( parent )
@@ -185,2 +232,7 @@ void IMAPviewItem::removeChilds()
185 232
233const QStringList&IMAPviewItem::subFolders()
234{
235 return currentFolders;
236}
237
186void IMAPviewItem::refreshFolders(bool force) 238void IMAPviewItem::refreshFolders(bool force)
@@ -188,5 +240,6 @@ void IMAPviewItem::refreshFolders(bool force)
188 if (childCount()>0 && force==false) return; 240 if (childCount()>0 && force==false) return;
189 241 if (account->getOffline()) return;
190 removeChilds();
191 242
243 removeChilds();
244 currentFolders.clear();
192 QList<Folder> *folders = wrapper->listFolders(); 245 QList<Folder> *folders = wrapper->listFolders();
@@ -211,2 +264,3 @@ void IMAPviewItem::refreshFolders(bool force)
211 fname = it->getDisplayName(); 264 fname = it->getDisplayName();
265 currentFolders.append(it->getName());
212 pos = fname.findRev(it->Separator()); 266 pos = fname.findRev(it->Separator());
@@ -233,6 +287,11 @@ QPopupMenu * IMAPviewItem::getContextMenu()
233 if (m) { 287 if (m) {
234 m->insertItem(QObject::tr("Refresh folder list",contextName),0); 288 if (!account->getOffline()) {
235 m->insertItem(QObject::tr("Create new folder",contextName),1); 289 m->insertItem(QObject::tr("Refresh folder list",contextName),0);
236 m->insertSeparator(); 290 m->insertItem(QObject::tr("Create new folder",contextName),1);
237 m->insertItem(QObject::tr("Disconnect",contextName),2); 291 m->insertSeparator();
292 m->insertItem(QObject::tr("Disconnect",contextName),2);
293 m->insertItem(QObject::tr("Set offline",contextName),3);
294 } else {
295 m->insertItem(QObject::tr("Set online",contextName),3);
296 }
238 } 297 }
@@ -273,2 +332,11 @@ void IMAPviewItem::contextMenuSelected(int id)
273 break; 332 break;
333 case 3:
334 if (account->getOffline()==false) {
335 removeChilds();
336 wrapper->logout();
337 }
338 account->setOffline(!account->getOffline());
339 account->save();
340 refreshFolders(false);
341 break;
274 default: 342 default:
@@ -283,5 +351,5 @@ RecBody IMAPviewItem::fetchBody(const RecMail&)
283 351
284IMAPfolderItem::~IMAPfolderItem() 352bool IMAPviewItem::offline()
285{ 353{
286 delete folder; 354 return account->getOffline();
287} 355}
@@ -314,2 +382,7 @@ IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPfolderItem *parent , QLi
314 382
383IMAPfolderItem::~IMAPfolderItem()
384{
385 delete folder;
386}
387
315const QString& IMAPfolderItem::Delemiter()const 388const QString& IMAPfolderItem::Delemiter()const
@@ -344,2 +417,3 @@ QPopupMenu * IMAPfolderItem::getContextMenu()
344 m->insertItem(QObject::tr("Refresh header list",contextName),0); 417 m->insertItem(QObject::tr("Refresh header list",contextName),0);
418 m->insertItem(QObject::tr("Move/Copie all mails",contextName),4);
345 m->insertItem(QObject::tr("Delete all mails",contextName),1); 419 m->insertItem(QObject::tr("Delete all mails",contextName),1);
@@ -391,2 +465,9 @@ void IMAPfolderItem::deleteFolder()
391 465
466void IMAPfolderItem::downloadMails()
467{
468 AccountView*bl = imap->accountView();
469 if (!bl) return;
470 bl->downloadMails(folder,imap->getWrapper());
471}
472
392void IMAPfolderItem::contextMenuSelected(int id) 473void IMAPfolderItem::contextMenuSelected(int id)
@@ -408,2 +489,5 @@ void IMAPfolderItem::contextMenuSelected(int id)
408 break; 489 break;
490 case 4:
491 downloadMails();
492 break;
409 default: 493 default:
@@ -419,2 +503,29 @@ const QString AccountViewItem::contextName="AccountViewItem";
419 503
504AccountViewItem::AccountViewItem( AccountView *parent )
505 : QListViewItem( parent )
506{
507 m_Backlink = parent;
508}
509
510AccountViewItem::AccountViewItem( QListViewItem *parent)
511 : QListViewItem( parent)
512{
513 m_Backlink = 0;
514}
515
516AccountViewItem::AccountViewItem( QListViewItem *parent , QListViewItem*after )
517 :QListViewItem( parent,after )
518{
519 m_Backlink = 0;
520}
521
522AccountViewItem::~AccountViewItem()
523{
524}
525
526AccountView*AccountViewItem::accountView()
527{
528 return m_Backlink;
529}
530
420void AccountViewItem::deleteAllMail(AbstractMail*wrapper,Folder*folder) 531void AccountViewItem::deleteAllMail(AbstractMail*wrapper,Folder*folder)
@@ -449,2 +560,8 @@ AccountView::AccountView( QWidget *parent, const char *name, WFlags flags )
449 560
561AccountView::~AccountView()
562{
563 imapAccounts.clear();
564 mboxAccounts.clear();
565}
566
450void AccountView::slotContextMenu(int id) 567void AccountView::slotContextMenu(int id)
@@ -473,3 +590,6 @@ void AccountView::populate( QList<Account> list )
473 590
474 (void) new MBOXviewItem(AbstractMail::defaultLocalfolder(),this); 591 imapAccounts.clear();
592 mboxAccounts.clear();
593
594 mboxAccounts.append(new MBOXviewItem(AbstractMail::defaultLocalfolder(),this));
475 595
@@ -480,3 +600,3 @@ void AccountView::populate( QList<Account> list )
480 qDebug( "added IMAP " + imap->getAccountName() ); 600 qDebug( "added IMAP " + imap->getAccountName() );
481 (void) new IMAPviewItem( imap, this ); 601 imapAccounts.append(new IMAPviewItem( imap, this ));
482 } else if ( it->getType().compare( "POP3" ) == 0 ) { 602 } else if ( it->getType().compare( "POP3" ) == 0 ) {
@@ -484,2 +604,3 @@ void AccountView::populate( QList<Account> list )
484 qDebug( "added POP3 " + pop3->getAccountName() ); 604 qDebug( "added POP3 " + pop3->getAccountName() );
605 /* must not be hold 'cause it isn't required */
485 (void) new POP3viewItem( pop3, this ); 606 (void) new POP3viewItem( pop3, this );
@@ -505,8 +626,8 @@ void AccountView::refreshCurrent()
505 m_currentItem = currentItem(); 626 m_currentItem = currentItem();
506 if ( !m_currentItem ) return; 627 if ( !m_currentItem ) return;
507 QList<RecMail> headerlist; 628 QList<RecMail> headerlist;
508 headerlist.setAutoDelete(true); 629 headerlist.setAutoDelete(true);
509 AccountViewItem *view = static_cast<AccountViewItem *>(m_currentItem); 630 AccountViewItem *view = static_cast<AccountViewItem *>(m_currentItem);
510 view->refresh(headerlist); 631 view->refresh(headerlist);
511 emit refreshMailview(&headerlist); 632 emit refreshMailview(&headerlist);
512} 633}
@@ -526,2 +647,48 @@ RecBody AccountView::fetchBody(const RecMail&aMail)
526 647
648void AccountView::setupFolderselect(Selectstore*sels)
649{
650 sels->showMaximized();
651 QStringList sFolders;
652 unsigned int i = 0;
653 for (i=0; i < mboxAccounts.count();++i) {
654 mboxAccounts[i]->refresh(false);
655 sFolders = mboxAccounts[i]->subFolders();
656 sels->addAccounts(mboxAccounts[i]->getWrapper(),sFolders);
657 }
658 for (i=0; i < imapAccounts.count();++i) {
659 if (imapAccounts[i]->offline())
660 continue;
661 imapAccounts[i]->refreshFolders(false);
662 sels->addAccounts(imapAccounts[i]->getWrapper(),imapAccounts[i]->subFolders());
663 }
664}
665
666void AccountView::downloadMails(Folder*fromFolder,AbstractMail*fromWrapper)
667{
668 unsigned int i = 0;
669 AbstractMail*targetMail = 0;
670 QString targetFolder = "";
671 Selectstore sels;
672 setupFolderselect(&sels);
673 if (!sels.exec()) return;
674 targetMail = sels.currentMail();
675 targetFolder = sels.currentFolder();
676 if ( (fromWrapper==targetMail && fromFolder->getName()==targetFolder) ||
677 targetFolder.isEmpty()) {
678 return;
679 }
680
681 QList<RecMail> t;
682 fromWrapper->listMessages(fromFolder->getName(),t);
683 encodedString*st = 0;
684 for (i = 0; i < t.count();++i) {
685 RecMail*r = t.at(i);
686 st = fromWrapper->fetchRawBody(*r);
687 if (st) {
688 targetMail->storeMessage(st->Content(),st->Length(),targetFolder);
689 delete st;
690 }
691 }
692}
693
527/** 694/**
@@ -530,3 +697,3 @@ RecBody AccountView::fetchBody(const RecMail&aMail)
530 697
531MBOXviewItem::MBOXviewItem( const QString&aPath, QListView *parent ) 698MBOXviewItem::MBOXviewItem( const QString&aPath, AccountView *parent )
532 : AccountViewItem( parent ) 699 : AccountViewItem( parent )
@@ -534,3 +701,4 @@ MBOXviewItem::MBOXviewItem( const QString&aPath, QListView *parent )
534 m_Path = aPath; 701 m_Path = aPath;
535 wrapper = AbstractMail::getWrapper( m_Path ); 702 /* be carefull - the space within settext is wanted - thats why the string twice */
703 wrapper = AbstractMail::getWrapper( m_Path,"Local Folders");
536 setPixmap( 0, PIXMAP_LOCALFOLDER ); 704 setPixmap( 0, PIXMAP_LOCALFOLDER );
@@ -604,2 +772,15 @@ void MBOXviewItem::createFolder()
604 772
773QStringList MBOXviewItem::subFolders()
774{
775 QStringList result;
776 QListViewItem *child = firstChild();
777 while ( child ) {
778 MBOXfolderItem *tmp = (MBOXfolderItem*)child;
779 child = child->nextSibling();
780 result.append(tmp->getFolder()->getName());
781 }
782 qDebug("Size of result: %i",result.count());
783 return result;
784}
785
605void MBOXviewItem::contextMenuSelected(int which) 786void MBOXviewItem::contextMenuSelected(int which)
@@ -638,2 +819,7 @@ MBOXfolderItem::MBOXfolderItem( Folder *folderInit, MBOXviewItem *parent , QList
638 819
820Folder*MBOXfolderItem::getFolder()
821{
822 return folder;
823}
824
639void MBOXfolderItem::refresh(QList<RecMail>&target) 825void MBOXfolderItem::refresh(QList<RecMail>&target)
diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h
index 7131192..48f52c7 100644
--- a/noncore/net/mail/accountview.h
+++ b/noncore/net/mail/accountview.h
@@ -14,2 +14,4 @@ class RecBody;
14class QPopupMenu; 14class QPopupMenu;
15class Selectstore;
16class AccountView;
15 17
@@ -19,5 +21,6 @@ class AccountViewItem : public QListViewItem
19public: 21public:
20 AccountViewItem( QListView *parent ) : QListViewItem( parent ) {} 22 AccountViewItem( AccountView *parent );
21 AccountViewItem( QListViewItem *parent) : QListViewItem( parent) {} 23 AccountViewItem( QListViewItem *parent);
22 AccountViewItem( QListViewItem *parent , QListViewItem*after ) : QListViewItem( parent,after ) {} 24 AccountViewItem( QListViewItem *parent , QListViewItem*after );
25 virtual ~AccountViewItem();
23 virtual void refresh(QList<RecMail>&)=0; 26 virtual void refresh(QList<RecMail>&)=0;
@@ -26,2 +29,3 @@ public:
26 virtual void contextMenuSelected(int){} 29 virtual void contextMenuSelected(int){}
30 virtual AccountView*accountView();
27protected: 31protected:
@@ -29,2 +33,3 @@ protected:
29 static const QString contextName; 33 static const QString contextName;
34 AccountView*m_Backlink;
30}; 35};
@@ -35,4 +40,4 @@ class POP3viewItem : public AccountViewItem
35public: 40public:
36 POP3viewItem( POP3account *a, QListView *parent ); 41 POP3viewItem( POP3account *a, AccountView *parent );
37 ~POP3viewItem(); 42 virtual ~POP3viewItem();
38 virtual void refresh( QList<RecMail> &target ); 43 virtual void refresh( QList<RecMail> &target );
@@ -40,6 +45,10 @@ public:
40 AbstractMail *getWrapper(); 45 AbstractMail *getWrapper();
41private: 46 virtual QPopupMenu * getContextMenu();
47 virtual void contextMenuSelected(int);
48
49protected:
42 POP3account *account; 50 POP3account *account;
43 AbstractMail *wrapper; 51 AbstractMail *wrapper;
44 52 void disconnect();
53 void setOnOffline();
45}; 54};
@@ -51,3 +60,3 @@ public:
51 POP3folderItem( Folder *folder, POP3viewItem *parent , QListViewItem*after ); 60 POP3folderItem( Folder *folder, POP3viewItem *parent , QListViewItem*after );
52 ~POP3folderItem(); 61 virtual ~POP3folderItem();
53 virtual void refresh(QList<RecMail>&); 62 virtual void refresh(QList<RecMail>&);
@@ -59,4 +68,2 @@ protected:
59 void downloadMails(); 68 void downloadMails();
60
61private:
62 Folder *folder; 69 Folder *folder;
@@ -71,4 +78,4 @@ class IMAPviewItem : public AccountViewItem
71public: 78public:
72 IMAPviewItem( IMAPaccount *a, QListView *parent ); 79 IMAPviewItem( IMAPaccount *a, AccountView *parent );
73 ~IMAPviewItem(); 80 virtual ~IMAPviewItem();
74 virtual void refresh(QList<RecMail>&); 81 virtual void refresh(QList<RecMail>&);
@@ -78,2 +85,5 @@ public:
78 virtual void contextMenuSelected(int); 85 virtual void contextMenuSelected(int);
86 const QStringList&subFolders();
87 virtual void refreshFolders(bool force=false);
88 bool offline();
79 89
@@ -81,9 +91,7 @@ protected:
81 IMAPfolderItem*findSubItem(const QString&path,IMAPfolderItem*start=0); 91 IMAPfolderItem*findSubItem(const QString&path,IMAPfolderItem*start=0);
82 virtual void refreshFolders(bool force=false);
83 virtual void createNewFolder(); 92 virtual void createNewFolder();
84 virtual void removeChilds(); 93 virtual void removeChilds();
85
86private:
87 IMAPaccount *account; 94 IMAPaccount *account;
88 AbstractMail *wrapper; 95 AbstractMail *wrapper;
96 QStringList currentFolders;
89}; 97};
@@ -96,3 +104,3 @@ public:
96 IMAPfolderItem( Folder *folder, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master ); 104 IMAPfolderItem( Folder *folder, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master );
97 ~IMAPfolderItem(); 105 virtual ~IMAPfolderItem();
98 virtual void refresh(QList<RecMail>&); 106 virtual void refresh(QList<RecMail>&);
@@ -106,4 +114,3 @@ protected:
106 virtual void deleteFolder(); 114 virtual void deleteFolder();
107 115 virtual void downloadMails();
108private:
109 Folder *folder; 116 Folder *folder;
@@ -117,5 +124,4 @@ class MBOXviewItem : public AccountViewItem
117public: 124public:
118// MBOXviewItem( MBOXaccount *a, QListView *parent ); 125 MBOXviewItem( const QString&aMboxPath, AccountView *parent );
119 MBOXviewItem( const QString&aMboxPath, QListView *parent ); 126 virtual ~MBOXviewItem();
120 ~MBOXviewItem();
121 virtual void refresh( QList<RecMail> &target ); 127 virtual void refresh( QList<RecMail> &target );
@@ -125,9 +131,7 @@ public:
125 virtual void contextMenuSelected(int); 131 virtual void contextMenuSelected(int);
132 QStringList subFolders();
133 virtual void refresh(bool force=false);
126 134
127protected: 135protected:
128 virtual void refresh(bool force=false);
129 virtual void createFolder(); 136 virtual void createFolder();
130
131private:
132// MBOXaccount *account;
133 QString m_Path; 137 QString m_Path;
@@ -142,3 +146,3 @@ public:
142 MBOXfolderItem( Folder *folder, MBOXviewItem *parent , QListViewItem*after ); 146 MBOXfolderItem( Folder *folder, MBOXviewItem *parent , QListViewItem*after );
143 ~MBOXfolderItem(); 147 virtual ~MBOXfolderItem();
144 virtual void refresh(QList<RecMail>&); 148 virtual void refresh(QList<RecMail>&);
@@ -147,2 +151,3 @@ public:
147 virtual void contextMenuSelected(int); 151 virtual void contextMenuSelected(int);
152 virtual Folder*getFolder();
148 153
@@ -150,3 +155,2 @@ protected:
150 virtual void deleteFolder(); 155 virtual void deleteFolder();
151private:
152 Folder *folder; 156 Folder *folder;
@@ -161,4 +165,6 @@ public:
161 AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); 165 AccountView( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 );
162 void populate( QList<Account> list ); 166 virtual ~AccountView();
163 RecBody fetchBody(const RecMail&aMail); 167 virtual void populate( QList<Account> list );
168 virtual RecBody fetchBody(const RecMail&aMail);
169 virtual void downloadMails(Folder*fromFolder,AbstractMail*fromWrapper);
164 170
@@ -170,2 +176,3 @@ public slots:
170 virtual void slotContextMenu(int id); 176 virtual void slotContextMenu(int id);
177 void setupFolderselect(Selectstore*sels);
171 178
@@ -174,4 +181,6 @@ signals:
174 181
175private: 182protected:
176 QListViewItem* m_currentItem; 183 QListViewItem* m_currentItem;
184 QValueList<IMAPviewItem*> imapAccounts;
185 QValueList<MBOXviewItem*> mboxAccounts;
177}; 186};
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp
index 80d0b52..3dd2fce 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.cpp
+++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp
@@ -23,5 +23,5 @@ AbstractMail* AbstractMail::getWrapper(POP3account *a)
23 23
24AbstractMail* AbstractMail::getWrapper(const QString&a) 24AbstractMail* AbstractMail::getWrapper(const QString&a,const QString&name)
25{ 25{
26 return new MBOXwrapper(a); 26 return new MBOXwrapper(a,name);
27} 27}
@@ -101 +101,6 @@ QString AbstractMail::defaultLocalfolder()
101} 101}
102
103/* temporary - will be removed when implemented in all classes */
104void AbstractMail::deleteMails(const QString &,QList<RecMail> &)
105{
106}
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h
index 9770991..15d83cb 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.h
+++ b/noncore/net/mail/libmailwrapper/abstractmail.h
@@ -33,2 +33,3 @@ public:
33 virtual int deleteAllMail(const Folder*)=0; 33 virtual int deleteAllMail(const Folder*)=0;
34 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
34 virtual int deleteMbox(const Folder*)=0; 35 virtual int deleteMbox(const Folder*)=0;
@@ -48,3 +49,3 @@ public:
48 /* mbox only! */ 49 /* mbox only! */
49 static AbstractMail* getWrapper(const QString&a); 50 static AbstractMail* getWrapper(const QString&a,const QString&name="Local Folders");
50 51
@@ -53,2 +54,3 @@ public:
53 virtual const QString&getType()const=0; 54 virtual const QString&getType()const=0;
55 virtual const QString&getName()const=0;
54 56
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index d252159..bb74de9 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -31,2 +31,3 @@ void IMAPwrapper::login()
31 31
32 if (account->getOffline()) return;
32 /* we are connected this moment */ 33 /* we are connected this moment */
@@ -1008,2 +1009,7 @@ const QString&IMAPwrapper::getType()const
1008 1009
1010const QString&IMAPwrapper::getName()const
1011{
1012 return account->getAccountName();
1013}
1014
1009encodedString* IMAPwrapper::fetchRawBody(const RecMail&mail) 1015encodedString* IMAPwrapper::fetchRawBody(const RecMail&mail)
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h
index b246f58..b2bd7e9 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.h
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.h
@@ -47,2 +47,4 @@ public:
47 virtual const QString&getType()const; 47 virtual const QString&getType()const;
48 virtual const QString&getName()const;
49
48protected: 50protected:
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
index bc496f7..97f301e 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
@@ -10,4 +10,4 @@ const QString MBOXwrapper::wrapperType="MBOX";
10 10
11MBOXwrapper::MBOXwrapper(const QString & mbox_dir) 11MBOXwrapper::MBOXwrapper(const QString & mbox_dir,const QString&mbox_name)
12 : Genericwrapper(),MBOXPath(mbox_dir) 12 : Genericwrapper(),MBOXPath(mbox_dir),MBOXName(mbox_name)
13{ 13{
@@ -332 +332,6 @@ const QString&MBOXwrapper::getType()const
332} 332}
333
334const QString&MBOXwrapper::getName()const
335{
336 return MBOXName;
337}
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.h b/noncore/net/mail/libmailwrapper/mboxwrapper.h
index 2794014..194ff86 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.h
@@ -15,3 +15,3 @@ class MBOXwrapper : public Genericwrapper
15public: 15public:
16 MBOXwrapper(const QString & dir); 16 MBOXwrapper(const QString & dir,const QString&name);
17 virtual ~MBOXwrapper(); 17 virtual ~MBOXwrapper();
@@ -34,5 +34,6 @@ public:
34 virtual encodedString* fetchRawBody(const RecMail&mail); 34 virtual encodedString* fetchRawBody(const RecMail&mail);
35 virtual void deleteMails(const QString & mailbox,QList<RecMail> &target); 35 virtual void deleteMails(const QString & FolderName,QList<RecMail> &target);
36 virtual int deleteAllMail(const Folder*); 36 virtual int deleteAllMail(const Folder*);
37 virtual const QString&getType()const; 37 virtual const QString&getType()const;
38 virtual const QString&getName()const;
38 39
@@ -41,2 +42,3 @@ protected:
41 QString MBOXPath; 42 QString MBOXPath;
43 QString MBOXName;
42 static const QString wrapperType; 44 static const QString wrapperType;
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
index cceb22e..67bde38 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
@@ -110,2 +110,3 @@ void POP3wrapper::login()
110{ 110{
111 if (account->getOffline()) return;
111 /* we'll hold the line */ 112 /* we'll hold the line */
@@ -251 +252,6 @@ const QString&POP3wrapper::getType()const
251} 252}
253
254const QString&POP3wrapper::getName()const
255{
256 return account->getAccountName();
257}
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h
index f0307b6..d2b708d 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.h
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h
@@ -32,2 +32,3 @@ public:
32 virtual const QString&getType()const; 32 virtual const QString&getType()const;
33 virtual const QString&getName()const;
33 static void pop3_progress( size_t current, size_t maximum ); 34 static void pop3_progress( size_t current, size_t maximum );
diff --git a/noncore/net/mail/libmailwrapper/settings.cpp b/noncore/net/mail/libmailwrapper/settings.cpp
index c5187f5..02a80a3 100644
--- a/noncore/net/mail/libmailwrapper/settings.cpp
+++ b/noncore/net/mail/libmailwrapper/settings.cpp
@@ -170,2 +170,4 @@ void IMAPaccount::read()
170 if (prefix.isNull()) prefix = ""; 170 if (prefix.isNull()) prefix = "";
171 offline = conf->readBoolEntry("Offline",false);
172 delete conf;
171} 173}
@@ -186,3 +188,5 @@ void IMAPaccount::save()
186 conf->writeEntry( "MailPrefix",prefix); 188 conf->writeEntry( "MailPrefix",prefix);
189 conf->writeEntry( "Offline",offline);
187 conf->write(); 190 conf->write();
191 delete conf;
188} 192}
@@ -240,2 +244,4 @@ void POP3account::read()
240 password = conf->readEntryCrypt( "Password" ); 244 password = conf->readEntryCrypt( "Password" );
245 offline = conf->readBoolEntry("Offline",false);
246 delete conf;
241} 247}
@@ -255,3 +261,5 @@ void POP3account::save()
255 conf->writeEntryCrypt( "Password", password ); 261 conf->writeEntryCrypt( "Password", password );
262 conf->writeEntry( "Offline",offline);
256 conf->write(); 263 conf->write();
264 delete conf;
257} 265}
@@ -315,2 +323,3 @@ void SMTPaccount::read()
315 password = conf->readEntryCrypt( "Password" ); 323 password = conf->readEntryCrypt( "Password" );
324 delete conf;
316} 325}
@@ -332,2 +341,3 @@ void SMTPaccount::save()
332 conf->write(); 341 conf->write();
342 delete conf;
333} 343}
@@ -388,2 +398,3 @@ void NNTPaccount::read()
388 password = conf->readEntryCrypt( "Password" ); 398 password = conf->readEntryCrypt( "Password" );
399 delete conf;
389} 400}
@@ -405,2 +416,3 @@ void NNTPaccount::save()
405 conf->write(); 416 conf->write();
417 delete conf;
406} 418}
diff --git a/noncore/net/mail/libmailwrapper/settings.h b/noncore/net/mail/libmailwrapper/settings.h
index caa5dfc..2104997 100644
--- a/noncore/net/mail/libmailwrapper/settings.h
+++ b/noncore/net/mail/libmailwrapper/settings.h
@@ -32,2 +32,5 @@ public:
32 bool getSSL() { return ssl; } 32 bool getSSL() { return ssl; }
33
34 void setOffline(bool b) {offline = b;}
35 bool getOffline()const{return offline;}
33 36
@@ -40,3 +43,3 @@ protected:
40 bool ssl; 43 bool ssl;
41 44 bool offline;
42}; 45};
diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
index 4764b77..281b88e 100644
--- a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
@@ -491,3 +491,3 @@ void SMTPwrapper::storeMail(const char*mail, size_t length, const QString&box)
491 QString localfolders = AbstractMail::defaultLocalfolder(); 491 QString localfolders = AbstractMail::defaultLocalfolder();
492 MBOXwrapper*wrap = new MBOXwrapper(localfolders); 492 AbstractMail*wrap = AbstractMail::getWrapper(localfolders);
493 wrap->storeMessage(mail,length,box); 493 wrap->storeMessage(mail,length,box);
@@ -518,7 +518,5 @@ void SMTPwrapper::smtpSend( mailmime *mail,bool later, SMTPaccount *smtp )
518 } 518 }
519 QString tmp = data;
520 tmp.replace(QRegExp("\r+",true,false),"");
521 msg = 0; 519 msg = 0;
522 if (later) { 520 if (later) {
523 storeMail((char*)tmp.data(),tmp.length(),"Outgoing"); 521 storeMail(data,size,"Outgoing");
524 if (data) free( data ); 522 if (data) free( data );
@@ -638,3 +636,3 @@ void SMTPwrapper::sendMail(const Mail&mail,SMTPaccount*aSmtp,bool later )
638 636
639int SMTPwrapper::sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which) 637int SMTPwrapper::sendQueuedMail(AbstractMail*wrap,SMTPaccount*smtp,RecMail*which)
640{ 638{
@@ -687,3 +685,3 @@ bool SMTPwrapper::flushOutbox(SMTPaccount*smtp)
687 QString localfolders = AbstractMail::defaultLocalfolder(); 685 QString localfolders = AbstractMail::defaultLocalfolder();
688 MBOXwrapper*wrap = new MBOXwrapper(localfolders); 686 AbstractMail*wrap = AbstractMail::getWrapper(localfolders);
689 if (!wrap) { 687 if (!wrap) {
diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.h b/noncore/net/mail/libmailwrapper/smtpwrapper.h
index 04fc4b0..7dcdbfd 100644
--- a/noncore/net/mail/libmailwrapper/smtpwrapper.h
+++ b/noncore/net/mail/libmailwrapper/smtpwrapper.h
@@ -12,3 +12,3 @@
12class Mail; 12class Mail;
13class MBOXwrapper; 13class AbstractMail;
14class RecMail; 14class RecMail;
@@ -61,3 +61,3 @@ protected:
61 61
62 int sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which); 62 int sendQueuedMail(AbstractMail*wrap,SMTPaccount*smtp,RecMail*which);
63 63
diff --git a/noncore/net/mail/selectstore.cpp b/noncore/net/mail/selectstore.cpp
index 28ab5a8..0a07d51 100644
--- a/noncore/net/mail/selectstore.cpp
+++ b/noncore/net/mail/selectstore.cpp
@@ -1,2 +1,6 @@
1#include "selectstore.h" 1#include "selectstore.h"
2#include <qlineedit.h>
3#include <qcheckbox.h>
4#include <qcombobox.h>
5#include <libmailwrapper/abstractmail.h>
2 6
@@ -5,3 +9,5 @@ Selectstore::Selectstore(QWidget* parent, const char* name)
5{ 9{
6 10 folderMap.clear();
11 mailMap.clear();
12 cMail = 0;
7} 13}
@@ -14,2 +20,5 @@ void Selectstore::slotCreateNewFolder()
14{ 20{
21 bool how = newFoldersel->isChecked();
22 folderSelection->setEnabled(!how);
23 newFolderedit->setEnabled(how);
15} 24}
@@ -19 +28,43 @@ void Selectstore::slotMoveMail()
19} 28}
29
30void Selectstore::addAccounts(AbstractMail*mail,const QStringList&folders)
31{
32 accountSelection->insertItem(mail->getName());
33 mailMap[accountSelection->count()-1]=mail;
34 folderMap[accountSelection->count()-1]=folders;
35 if (accountSelection->count()==1) {
36 cMail = mail;
37 folderSelection->insertStringList(folders);
38 }
39}
40
41void Selectstore::slotAccountselected(int i)
42{
43 folderSelection->clear();
44 folderSelection->insertStringList(folderMap[i]);
45 cMail = mailMap[i];
46}
47
48QString Selectstore::currentFolder()
49{
50 if (newFoldersel->isChecked()) {
51 return newFolderedit->text();
52 } else {
53 return folderSelection->currentText();
54 }
55}
56
57AbstractMail*Selectstore::currentMail()
58{
59 return cMail;
60}
61
62bool Selectstore::newFolder()
63{
64 return newFoldersel->isChecked();
65}
66
67bool Selectstore::moveMails()
68{
69 return selMove->isChecked();
70}
diff --git a/noncore/net/mail/selectstore.h b/noncore/net/mail/selectstore.h
index 8b8e8ee..447a6ae 100644
--- a/noncore/net/mail/selectstore.h
+++ b/noncore/net/mail/selectstore.h
@@ -4,2 +4,7 @@
4#include "selectstoreui.h" 4#include "selectstoreui.h"
5#include <qvaluelist.h>
6#include <qmap.h>
7#include <qstringlist.h>
8
9class AbstractMail;
5 10
@@ -11,8 +16,17 @@ public:
11 virtual ~Selectstore(); 16 virtual ~Selectstore();
17 virtual void addAccounts(AbstractMail*mail,const QStringList&folders);
18 virtual QString currentFolder();
19 virtual AbstractMail*currentMail();
20 bool newFolder();
21 bool moveMails();
12 22
13protected: 23protected slots:
14 virtual void slotCreateNewFolder(); 24 virtual void slotCreateNewFolder();
15 virtual void slotMoveMail(); 25 virtual void slotMoveMail();
16protected slots: 26 virtual void slotAccountselected(int);
17 27
28protected:
29 QMap<int,QStringList> folderMap;
30 QMap<int,AbstractMail*> mailMap;
31 AbstractMail*cMail;
18}; 32};
diff --git a/noncore/net/mail/selectstoreui.ui b/noncore/net/mail/selectstoreui.ui
index 3741b71..5f0e507 100644
--- a/noncore/net/mail/selectstoreui.ui
+++ b/noncore/net/mail/selectstoreui.ui
@@ -13,3 +13,3 @@
13 <y>0</y> 13 <y>0</y>
14 <width>190</width> 14 <width>182</width>
15 <height>273</height> 15 <height>273</height>
@@ -30,3 +30,3 @@
30 <name>margin</name> 30 <name>margin</name>
31 <number>2</number> 31 <number>1</number>
32 </property> 32 </property>
@@ -34,3 +34,3 @@
34 <name>spacing</name> 34 <name>spacing</name>
35 <number>2</number> 35 <number>1</number>
36 </property> 36 </property>
@@ -176,2 +176,23 @@
176 <widget> 176 <widget>
177 <class>QLabel</class>
178 <property stdset="1">
179 <name>name</name>
180 <cstring>newFolderLabel</cstring>
181 </property>
182 <property stdset="1">
183 <name>text</name>
184 <string>Prefix will prepend, no need to enter it!</string>
185 </property>
186 <property stdset="1">
187 <name>alignment</name>
188 <set>WordBreak|AlignCenter</set>
189 </property>
190 <property>
191 <name>hAlign</name>
192 </property>
193 <property>
194 <name>wordwrap</name>
195 </property>
196 </widget>
197 <widget>
177 <class>Line</class> 198 <class>Line</class>
@@ -233,4 +254,18 @@
233 </connection> 254 </connection>
234 <slot access="protected">slotMoveMail()</slot> 255 <connection>
256 <sender>accountSelection</sender>
257 <signal>activated(int)</signal>
258 <receiver>selectstoreui</receiver>
259 <slot>slotAccountselected(int)</slot>
260 </connection>
261 <connection>
262 <sender>folderSelection</sender>
263 <signal>activated(int)</signal>
264 <receiver>selectstoreui</receiver>
265 <slot>slotFolderSelected(int)</slot>
266 </connection>
267 <slot access="protected">slotFolderSelected(int)</slot>
268 <slot access="protected">slotAccountselected(int)</slot>
235 <slot access="protected">slotCreateNewFolder()</slot> 269 <slot access="protected">slotCreateNewFolder()</slot>
270 <slot access="protected">slotMoveMail()</slot>
236</connections> 271</connections>