summaryrefslogtreecommitdiff
path: root/noncore/net/mail/accountview.cpp
authoralwin <alwin>2004-01-08 02:52:13 (UTC)
committer alwin <alwin>2004-01-08 02:52:13 (UTC)
commit05d47b2603adfab0e16f7395e34b7aa56ce6d8de (patch) (unidiff)
tree4253654acb70b859fd0d32981132dffd35092b9f /noncore/net/mail/accountview.cpp
parentdfa1477a28ecd90e08cf09aeecbe816e94bec0b5 (diff)
downloadopie-05d47b2603adfab0e16f7395e34b7aa56ce6d8de.zip
opie-05d47b2603adfab0e16f7395e34b7aa56ce6d8de.tar.gz
opie-05d47b2603adfab0e16f7395e34b7aa56ce6d8de.tar.bz2
move/copy mails to another folder resides inside wrappers so we can
use special funs of libetpan and/or mailserver itself (eg. imap) libetpan 0.32 requires for that feature a patch! (see libetpanstuff/) accounts marked as "offline" get a new icon TODO: - when creating a new folder while copy/move on imap-server, get the real resulting foldername when using prefix - implement usage of copy/move inside one mbox using special etpan funs
Diffstat (limited to 'noncore/net/mail/accountview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountview.cpp40
1 files changed, 26 insertions, 14 deletions
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index eea021f..b7de7b9 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -1,46 +1,59 @@
1#include "accountview.h" 1#include "accountview.h"
2#include <libmailwrapper/mailtypes.h> 2#include <libmailwrapper/mailtypes.h>
3#include <libmailwrapper/abstractmail.h> 3#include <libmailwrapper/abstractmail.h>
4#include "defines.h" 4#include "defines.h"
5#include "newmaildir.h" 5#include "newmaildir.h"
6#include "selectstore.h" 6#include "selectstore.h"
7#include <qmessagebox.h> 7#include <qmessagebox.h>
8#include <qpopupmenu.h> 8#include <qpopupmenu.h>
9 9
10#define SETPIX(x) if (!account->getOffline()) {setPixmap( 0,x);} else {setPixmap( 0, PIXMAP_OFFLINE );}
10/** 11/**
11 * POP3 Account stuff 12 * POP3 Account stuff
12 */ 13 */
13POP3viewItem::POP3viewItem( POP3account *a, AccountView *parent ) 14POP3viewItem::POP3viewItem( POP3account *a, AccountView *parent )
14 : AccountViewItem( parent ) 15 : AccountViewItem( parent )
15{ 16{
16 account = a; 17 account = a;
17 wrapper = AbstractMail::getWrapper( account ); 18 wrapper = AbstractMail::getWrapper( account );
18 setPixmap( 0, PIXMAP_POP3FOLDER ); 19 SETPIX(PIXMAP_POP3FOLDER);
20#if 0
21 if (!account->getOffline()) {
22 setPixmap( 0, );
23 } else {
24 setPixmap( 0, PIXMAP_OFFLINE );
25 }
26#endif
19 setText( 0, account->getAccountName() ); 27 setText( 0, account->getAccountName() );
20 setOpen( true ); 28 setOpen( true );
21} 29}
22 30
23POP3viewItem::~POP3viewItem() 31POP3viewItem::~POP3viewItem()
24{ 32{
25 delete wrapper; 33 delete wrapper;
26} 34}
27 35
28AbstractMail *POP3viewItem::getWrapper() 36AbstractMail *POP3viewItem::getWrapper()
29{ 37{
30 return wrapper; 38 return wrapper;
31} 39}
32 40
33void POP3viewItem::refresh( QList<RecMail> & ) 41void POP3viewItem::refresh( QList<RecMail> & )
34{ 42{
43 refresh();
44}
45
46void POP3viewItem::refresh()
47{
35 if (account->getOffline()) return; 48 if (account->getOffline()) return;
36 QList<Folder> *folders = wrapper->listFolders(); 49 QList<Folder> *folders = wrapper->listFolders();
37 QListViewItem *child = firstChild(); 50 QListViewItem *child = firstChild();
38 while ( child ) { 51 while ( child ) {
39 QListViewItem *tmp = child; 52 QListViewItem *tmp = child;
40 child = child->nextSibling(); 53 child = child->nextSibling();
41 delete tmp; 54 delete tmp;
42 } 55 }
43 Folder *it; 56 Folder *it;
44 QListViewItem*item = 0; 57 QListViewItem*item = 0;
45 for ( it = folders->first(); it; it = folders->next() ) { 58 for ( it = folders->first(); it; it = folders->next() ) {
46 item = new POP3folderItem( it, this , item ); 59 item = new POP3folderItem( it, this , item );
@@ -80,24 +93,26 @@ void POP3viewItem::disconnect()
80 delete tmp; 93 delete tmp;
81 } 94 }
82 wrapper->logout(); 95 wrapper->logout();
83} 96}
84 97
85void POP3viewItem::setOnOffline() 98void POP3viewItem::setOnOffline()
86{ 99{
87 if (!account->getOffline()) { 100 if (!account->getOffline()) {
88 disconnect(); 101 disconnect();
89 } 102 }
90 account->setOffline(!account->getOffline()); 103 account->setOffline(!account->getOffline());
91 account->save(); 104 account->save();
105 SETPIX(PIXMAP_POP3FOLDER);
106 refresh();
92} 107}
93 108
94void POP3viewItem::contextMenuSelected(int which) 109void POP3viewItem::contextMenuSelected(int which)
95{ 110{
96 switch (which) { 111 switch (which) {
97 case 0: 112 case 0:
98 disconnect(); 113 disconnect();
99 break; 114 break;
100 case 1: 115 case 1:
101 setOnOffline(); 116 setOnOffline();
102 break; 117 break;
103 } 118 }
@@ -169,25 +184,25 @@ void POP3folderItem::contextMenuSelected(int which)
169 break; 184 break;
170 } 185 }
171} 186}
172 187
173/** 188/**
174 * IMAP Account stuff 189 * IMAP Account stuff
175 */ 190 */
176IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent ) 191IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent )
177 : AccountViewItem( parent ) 192 : AccountViewItem( parent )
178{ 193{
179 account = a; 194 account = a;
180 wrapper = AbstractMail::getWrapper( account ); 195 wrapper = AbstractMail::getWrapper( account );
181 setPixmap( 0, PIXMAP_IMAPFOLDER ); 196 SETPIX(PIXMAP_IMAPFOLDER);
182 setText( 0, account->getAccountName() ); 197 setText( 0, account->getAccountName() );
183 setOpen( true ); 198 setOpen( true );
184} 199}
185 200
186IMAPviewItem::~IMAPviewItem() 201IMAPviewItem::~IMAPviewItem()
187{ 202{
188 delete wrapper; 203 delete wrapper;
189} 204}
190 205
191AbstractMail *IMAPviewItem::getWrapper() 206AbstractMail *IMAPviewItem::getWrapper()
192{ 207{
193 return wrapper; 208 return wrapper;
@@ -328,24 +343,25 @@ void IMAPviewItem::contextMenuSelected(int id)
328 break; 343 break;
329 case 2: 344 case 2:
330 removeChilds(); 345 removeChilds();
331 wrapper->logout(); 346 wrapper->logout();
332 break; 347 break;
333 case 3: 348 case 3:
334 if (account->getOffline()==false) { 349 if (account->getOffline()==false) {
335 removeChilds(); 350 removeChilds();
336 wrapper->logout(); 351 wrapper->logout();
337 } 352 }
338 account->setOffline(!account->getOffline()); 353 account->setOffline(!account->getOffline());
339 account->save(); 354 account->save();
355 SETPIX(PIXMAP_IMAPFOLDER);
340 refreshFolders(false); 356 refreshFolders(false);
341 break; 357 break;
342 default: 358 default:
343 break; 359 break;
344 } 360 }
345} 361}
346 362
347RecBody IMAPviewItem::fetchBody(const RecMail&) 363RecBody IMAPviewItem::fetchBody(const RecMail&)
348{ 364{
349 return RecBody(); 365 return RecBody();
350} 366}
351 367
@@ -656,48 +672,44 @@ void AccountView::setupFolderselect(Selectstore*sels)
656 sels->addAccounts(mboxAccounts[i]->getWrapper(),sFolders); 672 sels->addAccounts(mboxAccounts[i]->getWrapper(),sFolders);
657 } 673 }
658 for (i=0; i < imapAccounts.count();++i) { 674 for (i=0; i < imapAccounts.count();++i) {
659 if (imapAccounts[i]->offline()) 675 if (imapAccounts[i]->offline())
660 continue; 676 continue;
661 imapAccounts[i]->refreshFolders(false); 677 imapAccounts[i]->refreshFolders(false);
662 sels->addAccounts(imapAccounts[i]->getWrapper(),imapAccounts[i]->subFolders()); 678 sels->addAccounts(imapAccounts[i]->getWrapper(),imapAccounts[i]->subFolders());
663 } 679 }
664} 680}
665 681
666void AccountView::downloadMails(Folder*fromFolder,AbstractMail*fromWrapper) 682void AccountView::downloadMails(Folder*fromFolder,AbstractMail*fromWrapper)
667{ 683{
668 unsigned int i = 0;
669 AbstractMail*targetMail = 0; 684 AbstractMail*targetMail = 0;
670 QString targetFolder = ""; 685 QString targetFolder = "";
671 Selectstore sels; 686 Selectstore sels;
672 setupFolderselect(&sels); 687 setupFolderselect(&sels);
673 if (!sels.exec()) return; 688 if (!sels.exec()) return;
674 targetMail = sels.currentMail(); 689 targetMail = sels.currentMail();
675 targetFolder = sels.currentFolder(); 690 targetFolder = sels.currentFolder();
676 if ( (fromWrapper==targetMail && fromFolder->getName()==targetFolder) || 691 if ( (fromWrapper==targetMail && fromFolder->getName()==targetFolder) ||
677 targetFolder.isEmpty()) { 692 targetFolder.isEmpty()) {
678 return; 693 return;
679 } 694 }
680 695 if (sels.newFolder() && !targetMail->createMbox(targetFolder)) {
681 QList<RecMail> t; 696 QMessageBox::critical(0,tr("Error creating new Folder"),
682 fromWrapper->listMessages(fromFolder->getName(),t); 697 tr("<center>Error while creating<br>new folder - breaking.</center>"));
683 encodedString*st = 0; 698 return;
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 } 699 }
700 qDebug("Targetfolder: %s",targetFolder.latin1());
701 qDebug("Fromfolder: %s",fromFolder->getName().latin1());
702 fromWrapper->mvcpAllMails(fromFolder,targetFolder,targetMail,sels.moveMails());
703 refreshCurrent();
692} 704}
693 705
694/** 706/**
695 * MBOX Account stuff 707 * MBOX Account stuff
696 */ 708 */
697 709
698MBOXviewItem::MBOXviewItem( const QString&aPath, AccountView *parent ) 710MBOXviewItem::MBOXviewItem( const QString&aPath, AccountView *parent )
699 : AccountViewItem( parent ) 711 : AccountViewItem( parent )
700{ 712{
701 m_Path = aPath; 713 m_Path = aPath;
702 /* be carefull - the space within settext is wanted - thats why the string twice */ 714 /* be carefull - the space within settext is wanted - thats why the string twice */
703 wrapper = AbstractMail::getWrapper( m_Path,"Local Folders"); 715 wrapper = AbstractMail::getWrapper( m_Path,"Local Folders");