summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/abstractmail.cpp4
-rw-r--r--noncore/net/mail/abstractmail.h4
-rw-r--r--noncore/net/mail/imapwrapper.cpp40
-rw-r--r--noncore/net/mail/imapwrapper.h1
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.cpp4
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h4
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp40
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.h1
-rw-r--r--noncore/net/mail/libmailwrapper/mailtypes.h7
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.cpp21
-rw-r--r--noncore/net/mail/libmailwrapper/mboxwrapper.h1
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp11
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.h2
-rw-r--r--noncore/net/mail/mailtypes.h7
-rw-r--r--noncore/net/mail/mboxwrapper.cpp21
-rw-r--r--noncore/net/mail/mboxwrapper.h1
-rw-r--r--noncore/net/mail/pop3wrapper.cpp11
-rw-r--r--noncore/net/mail/pop3wrapper.h2
18 files changed, 180 insertions, 2 deletions
diff --git a/noncore/net/mail/abstractmail.cpp b/noncore/net/mail/abstractmail.cpp
index 416795b..f303d72 100644
--- a/noncore/net/mail/abstractmail.cpp
+++ b/noncore/net/mail/abstractmail.cpp
@@ -85,6 +85,10 @@ QString AbstractMail::gen_attachment_id()
85 85
86 QTextStream stream(&file); 86 QTextStream stream(&file);
87 87
88 return "{" + stream.read().stripWhiteSpace() + "}"; 88 return "{" + stream.read().stripWhiteSpace() + "}";
89} 89}
90 90
91int AbstractMail::createMbox(const QString&,const Folder*,const QString& delemiter,bool)
92{
93 return 0;
94}
diff --git a/noncore/net/mail/abstractmail.h b/noncore/net/mail/abstractmail.h
index 5dc4cab..dab9e10 100644
--- a/noncore/net/mail/abstractmail.h
+++ b/noncore/net/mail/abstractmail.h
@@ -8,21 +8,23 @@ class RecMail;
8class RecBody; 8class RecBody;
9class RecPart; 9class RecPart;
10class IMAPwrapper; 10class IMAPwrapper;
11class POP3wrapper; 11class POP3wrapper;
12class Folder; 12class Folder;
13class encodedString; 13class encodedString;
14struct folderStat;
14 15
15class AbstractMail:public QObject 16class AbstractMail:public QObject
16{ 17{
17 Q_OBJECT 18 Q_OBJECT
18public: 19public:
19 AbstractMail(){}; 20 AbstractMail(){};
20 virtual ~AbstractMail(){} 21 virtual ~AbstractMail(){}
21 virtual QList<Folder>* listFolders()=0; 22 virtual QList<Folder>* listFolders()=0;
22 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0; 23 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0;
24 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX")=0;
23 virtual RecBody fetchBody(const RecMail&mail)=0; 25 virtual RecBody fetchBody(const RecMail&mail)=0;
24 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part)=0; 26 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part)=0;
25 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part)=0; 27 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part)=0;
26 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part)=0; 28 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part)=0;
27 29
28 virtual void deleteMail(const RecMail&mail)=0; 30 virtual void deleteMail(const RecMail&mail)=0;
@@ -33,13 +35,13 @@ public:
33 35
34 /* mail box methods */ 36 /* mail box methods */
35 /* parameter is the box to create. 37 /* parameter is the box to create.
36 * if the implementing subclass has prefixes, 38 * if the implementing subclass has prefixes,
37 * them has to be appended automatic. 39 * them has to be appended automatic.
38 */ 40 */
39 virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false){return 0;} 41 virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false);
40 42
41 static AbstractMail* getWrapper(IMAPaccount *a); 43 static AbstractMail* getWrapper(IMAPaccount *a);
42 static AbstractMail* getWrapper(POP3account *a); 44 static AbstractMail* getWrapper(POP3account *a);
43 /* mbox only! */ 45 /* mbox only! */
44 static AbstractMail* getWrapper(const QString&a); 46 static AbstractMail* getWrapper(const QString&a);
45 47
diff --git a/noncore/net/mail/imapwrapper.cpp b/noncore/net/mail/imapwrapper.cpp
index b437df0..f1d42c2 100644
--- a/noncore/net/mail/imapwrapper.cpp
+++ b/noncore/net/mail/imapwrapper.cpp
@@ -931,6 +931,46 @@ int IMAPwrapper::deleteMbox(const Folder*folder)
931 if (res != MAILIMAP_NO_ERROR) { 931 if (res != MAILIMAP_NO_ERROR) {
932 Global::statusMessage(tr("%1").arg(m_imap->imap_response)); 932 Global::statusMessage(tr("%1").arg(m_imap->imap_response));
933 return 0; 933 return 0;
934 } 934 }
935 return 1; 935 return 1;
936} 936}
937
938void IMAPwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
939{
940 mailimap_status_att_list * att_list =0;
941 mailimap_mailbox_data_status * status=0;
942 clistiter * cur = 0;
943 int r = 0;
944 int res = 0;
945 target_stat.message_count = 0;
946 target_stat.message_unseen = 0;
947 target_stat.message_recent = 0;
948 login();
949 if (!m_imap) {
950 return;
951 }
952 att_list = mailimap_status_att_list_new_empty();
953 if (!att_list) return;
954 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_MESSAGES);
955 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_RECENT);
956 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_UNSEEN);
957 r = mailimap_status(m_imap, mailbox.latin1(), att_list, &status);
958 for (cur = clist_begin(status->st_info_list);
959 cur != NULL ; cur = clist_next(cur)) {
960 mailimap_status_info * status_info;
961 status_info = (mailimap_status_info *)clist_content(cur);
962 switch (status_info->st_att) {
963 case MAILIMAP_STATUS_ATT_MESSAGES:
964 target_stat.message_count = status_info->st_value;
965 break;
966 case MAILIMAP_STATUS_ATT_RECENT:
967 target_stat.message_recent = status_info->st_value;
968 break;
969 case MAILIMAP_STATUS_ATT_UNSEEN:
970 target_stat.message_unseen = status_info->st_value;
971 break;
972 }
973 }
974 mailimap_mailbox_data_status_free(status);
975 mailimap_status_att_list_free(att_list);
976}
diff --git a/noncore/net/mail/imapwrapper.h b/noncore/net/mail/imapwrapper.h
index 7941046..8f5a2b5 100644
--- a/noncore/net/mail/imapwrapper.h
+++ b/noncore/net/mail/imapwrapper.h
@@ -22,12 +22,13 @@ class IMAPwrapper : public AbstractMail
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 QList<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 29
29 virtual void deleteMail(const RecMail&mail); 30 virtual void deleteMail(const RecMail&mail);
30 virtual void answeredMail(const RecMail&mail); 31 virtual void answeredMail(const RecMail&mail);
31 virtual int deleteAllMail(const Folder*folder); 32 virtual int deleteAllMail(const Folder*folder);
32 33
33 virtual RecBody fetchBody(const RecMail&mail); 34 virtual RecBody fetchBody(const RecMail&mail);
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp
index 416795b..f303d72 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.cpp
+++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp
@@ -85,6 +85,10 @@ QString AbstractMail::gen_attachment_id()
85 85
86 QTextStream stream(&file); 86 QTextStream stream(&file);
87 87
88 return "{" + stream.read().stripWhiteSpace() + "}"; 88 return "{" + stream.read().stripWhiteSpace() + "}";
89} 89}
90 90
91int AbstractMail::createMbox(const QString&,const Folder*,const QString& delemiter,bool)
92{
93 return 0;
94}
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h
index 5dc4cab..dab9e10 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.h
+++ b/noncore/net/mail/libmailwrapper/abstractmail.h
@@ -8,21 +8,23 @@ class RecMail;
8class RecBody; 8class RecBody;
9class RecPart; 9class RecPart;
10class IMAPwrapper; 10class IMAPwrapper;
11class POP3wrapper; 11class POP3wrapper;
12class Folder; 12class Folder;
13class encodedString; 13class encodedString;
14struct folderStat;
14 15
15class AbstractMail:public QObject 16class AbstractMail:public QObject
16{ 17{
17 Q_OBJECT 18 Q_OBJECT
18public: 19public:
19 AbstractMail(){}; 20 AbstractMail(){};
20 virtual ~AbstractMail(){} 21 virtual ~AbstractMail(){}
21 virtual QList<Folder>* listFolders()=0; 22 virtual QList<Folder>* listFolders()=0;
22 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0; 23 virtual void listMessages(const QString & mailbox,QList<RecMail>&target )=0;
24 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX")=0;
23 virtual RecBody fetchBody(const RecMail&mail)=0; 25 virtual RecBody fetchBody(const RecMail&mail)=0;
24 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part)=0; 26 virtual QString fetchTextPart(const RecMail&mail,const RecPart&part)=0;
25 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part)=0; 27 virtual encodedString* fetchDecodedPart(const RecMail&mail,const RecPart&part)=0;
26 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part)=0; 28 virtual encodedString* fetchRawPart(const RecMail&mail,const RecPart&part)=0;
27 29
28 virtual void deleteMail(const RecMail&mail)=0; 30 virtual void deleteMail(const RecMail&mail)=0;
@@ -33,13 +35,13 @@ public:
33 35
34 /* mail box methods */ 36 /* mail box methods */
35 /* parameter is the box to create. 37 /* parameter is the box to create.
36 * if the implementing subclass has prefixes, 38 * if the implementing subclass has prefixes,
37 * them has to be appended automatic. 39 * them has to be appended automatic.
38 */ 40 */
39 virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false){return 0;} 41 virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false);
40 42
41 static AbstractMail* getWrapper(IMAPaccount *a); 43 static AbstractMail* getWrapper(IMAPaccount *a);
42 static AbstractMail* getWrapper(POP3account *a); 44 static AbstractMail* getWrapper(POP3account *a);
43 /* mbox only! */ 45 /* mbox only! */
44 static AbstractMail* getWrapper(const QString&a); 46 static AbstractMail* getWrapper(const QString&a);
45 47
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index b437df0..f1d42c2 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -931,6 +931,46 @@ int IMAPwrapper::deleteMbox(const Folder*folder)
931 if (res != MAILIMAP_NO_ERROR) { 931 if (res != MAILIMAP_NO_ERROR) {
932 Global::statusMessage(tr("%1").arg(m_imap->imap_response)); 932 Global::statusMessage(tr("%1").arg(m_imap->imap_response));
933 return 0; 933 return 0;
934 } 934 }
935 return 1; 935 return 1;
936} 936}
937
938void IMAPwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
939{
940 mailimap_status_att_list * att_list =0;
941 mailimap_mailbox_data_status * status=0;
942 clistiter * cur = 0;
943 int r = 0;
944 int res = 0;
945 target_stat.message_count = 0;
946 target_stat.message_unseen = 0;
947 target_stat.message_recent = 0;
948 login();
949 if (!m_imap) {
950 return;
951 }
952 att_list = mailimap_status_att_list_new_empty();
953 if (!att_list) return;
954 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_MESSAGES);
955 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_RECENT);
956 r = mailimap_status_att_list_add(att_list, MAILIMAP_STATUS_ATT_UNSEEN);
957 r = mailimap_status(m_imap, mailbox.latin1(), att_list, &status);
958 for (cur = clist_begin(status->st_info_list);
959 cur != NULL ; cur = clist_next(cur)) {
960 mailimap_status_info * status_info;
961 status_info = (mailimap_status_info *)clist_content(cur);
962 switch (status_info->st_att) {
963 case MAILIMAP_STATUS_ATT_MESSAGES:
964 target_stat.message_count = status_info->st_value;
965 break;
966 case MAILIMAP_STATUS_ATT_RECENT:
967 target_stat.message_recent = status_info->st_value;
968 break;
969 case MAILIMAP_STATUS_ATT_UNSEEN:
970 target_stat.message_unseen = status_info->st_value;
971 break;
972 }
973 }
974 mailimap_mailbox_data_status_free(status);
975 mailimap_status_att_list_free(att_list);
976}
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h
index 7941046..8f5a2b5 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.h
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.h
@@ -22,12 +22,13 @@ class IMAPwrapper : public AbstractMail
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 QList<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 29
29 virtual void deleteMail(const RecMail&mail); 30 virtual void deleteMail(const RecMail&mail);
30 virtual void answeredMail(const RecMail&mail); 31 virtual void answeredMail(const RecMail&mail);
31 virtual int deleteAllMail(const Folder*folder); 32 virtual int deleteAllMail(const Folder*folder);
32 33
33 virtual RecBody fetchBody(const RecMail&mail); 34 virtual RecBody fetchBody(const RecMail&mail);
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.h b/noncore/net/mail/libmailwrapper/mailtypes.h
index abfbe65..05c4816 100644
--- a/noncore/net/mail/libmailwrapper/mailtypes.h
+++ b/noncore/net/mail/libmailwrapper/mailtypes.h
@@ -179,7 +179,14 @@ protected:
179 179
180 void init(); 180 void init();
181 void copy_old(const encodedString&old); 181 void copy_old(const encodedString&old);
182 void clean(); 182 void clean();
183}; 183};
184 184
185struct folderStat
186{
187 unsigned int message_count;
188 unsigned int message_unseen;
189 unsigned int message_recent;
190};
191
185#endif 192#endif
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
index 0aa33dd..540a971 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp
@@ -298,6 +298,27 @@ int MBOXwrapper::deleteMbox(const Folder*tfolder)
298 Global::statusMessage(tr("Error deleting Mailbox.")); 298 Global::statusMessage(tr("Error deleting Mailbox."));
299 return 0; 299 return 0;
300 } 300 }
301 return 1; 301 return 1;
302} 302}
303 303
304void MBOXwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
305{
306 mailfolder*folder = 0;
307 mailstorage*storage = mailstorage_new(NULL);
308 target_stat.message_count = 0;
309 target_stat.message_unseen = 0;
310 target_stat.message_recent = 0;
311 QString p = MBOXPath+"/"+mailbox;
312 QFile fi(p);
313 if (!fi.exists()) {
314 Global::statusMessage(tr("Mailbox doesn't exist."));
315 return;
316 }
317 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
318 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
319 r = mailfolder_connect(folder);
320 r = mailsession_status_folder(folder->fld_session,(char*)mailbox.latin1(),&target_stat.message_count,
321 &target_stat.message_recent,&target_stat.message_unseen);
322 if (folder) mailfolder_free(folder);
323 if (storage) mailstorage_free(storage);
324}
diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.h b/noncore/net/mail/libmailwrapper/mboxwrapper.h
index 226a544..f822997 100644
--- a/noncore/net/mail/libmailwrapper/mboxwrapper.h
+++ b/noncore/net/mail/libmailwrapper/mboxwrapper.h
@@ -14,12 +14,13 @@ class MBOXwrapper : public Genericwrapper
14public: 14public:
15 MBOXwrapper(const QString & dir); 15 MBOXwrapper(const QString & dir);
16 virtual ~MBOXwrapper(); 16 virtual ~MBOXwrapper();
17 17
18 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 18 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
19 virtual QList<Folder>* listFolders(); 19 virtual QList<Folder>* listFolders();
20 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
20 21
21 virtual void deleteMail(const RecMail&mail); 22 virtual void deleteMail(const RecMail&mail);
22 virtual void answeredMail(const RecMail&mail); 23 virtual void answeredMail(const RecMail&mail);
23 24
24 virtual int createMbox(const QString&folder,const Folder*f=0,const QString&d="",bool s=false); 25 virtual int createMbox(const QString&folder,const Folder*f=0,const QString&d="",bool s=false);
25 virtual int deleteMbox(const Folder*); 26 virtual int deleteMbox(const Folder*);
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
index de90dd1..d76d82a 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
@@ -213,6 +213,17 @@ int POP3wrapper::deleteAllMail(const Folder*)
213 res=0; 213 res=0;
214 } 214 }
215 break; 215 break;
216 } 216 }
217 return res; 217 return res;
218} 218}
219
220void POP3wrapper::statusFolder(folderStat&target_stat,const QString&)
221{
222 login();
223 target_stat.message_count = 0;
224 target_stat.message_unseen = 0;
225 target_stat.message_recent = 0;
226 if (!m_pop3) return;
227 int r = mailsession_status_folder(m_folder->fld_session,0,&target_stat.message_count,
228 &target_stat.message_recent,&target_stat.message_unseen);
229}
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h
index b3a42be..536cadc 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.h
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h
@@ -15,12 +15,14 @@ class POP3wrapper : public Genericwrapper
15public: 15public:
16 POP3wrapper( POP3account *a ); 16 POP3wrapper( POP3account *a );
17 virtual ~POP3wrapper(); 17 virtual ~POP3wrapper();
18 /* mailbox will be ignored */ 18 /* mailbox will be ignored */
19 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 19 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
20 virtual QList<Folder>* listFolders(); 20 virtual QList<Folder>* listFolders();
21 /* mailbox will be ignored */
22 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
21 23
22 virtual void deleteMail(const RecMail&mail); 24 virtual void deleteMail(const RecMail&mail);
23 virtual void answeredMail(const RecMail&mail); 25 virtual void answeredMail(const RecMail&mail);
24 virtual int deleteAllMail(const Folder*); 26 virtual int deleteAllMail(const Folder*);
25 27
26 virtual RecBody fetchBody( const RecMail &mail ); 28 virtual RecBody fetchBody( const RecMail &mail );
diff --git a/noncore/net/mail/mailtypes.h b/noncore/net/mail/mailtypes.h
index abfbe65..05c4816 100644
--- a/noncore/net/mail/mailtypes.h
+++ b/noncore/net/mail/mailtypes.h
@@ -179,7 +179,14 @@ protected:
179 179
180 void init(); 180 void init();
181 void copy_old(const encodedString&old); 181 void copy_old(const encodedString&old);
182 void clean(); 182 void clean();
183}; 183};
184 184
185struct folderStat
186{
187 unsigned int message_count;
188 unsigned int message_unseen;
189 unsigned int message_recent;
190};
191
185#endif 192#endif
diff --git a/noncore/net/mail/mboxwrapper.cpp b/noncore/net/mail/mboxwrapper.cpp
index 0aa33dd..540a971 100644
--- a/noncore/net/mail/mboxwrapper.cpp
+++ b/noncore/net/mail/mboxwrapper.cpp
@@ -298,6 +298,27 @@ int MBOXwrapper::deleteMbox(const Folder*tfolder)
298 Global::statusMessage(tr("Error deleting Mailbox.")); 298 Global::statusMessage(tr("Error deleting Mailbox."));
299 return 0; 299 return 0;
300 } 300 }
301 return 1; 301 return 1;
302} 302}
303 303
304void MBOXwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
305{
306 mailfolder*folder = 0;
307 mailstorage*storage = mailstorage_new(NULL);
308 target_stat.message_count = 0;
309 target_stat.message_unseen = 0;
310 target_stat.message_recent = 0;
311 QString p = MBOXPath+"/"+mailbox;
312 QFile fi(p);
313 if (!fi.exists()) {
314 Global::statusMessage(tr("Mailbox doesn't exist."));
315 return;
316 }
317 int r = mbox_mailstorage_init(storage,(char*)p.latin1(),0,0,0);
318 folder = mailfolder_new( storage,(char*)p.latin1(),NULL);
319 r = mailfolder_connect(folder);
320 r = mailsession_status_folder(folder->fld_session,(char*)mailbox.latin1(),&target_stat.message_count,
321 &target_stat.message_recent,&target_stat.message_unseen);
322 if (folder) mailfolder_free(folder);
323 if (storage) mailstorage_free(storage);
324}
diff --git a/noncore/net/mail/mboxwrapper.h b/noncore/net/mail/mboxwrapper.h
index 226a544..f822997 100644
--- a/noncore/net/mail/mboxwrapper.h
+++ b/noncore/net/mail/mboxwrapper.h
@@ -14,12 +14,13 @@ class MBOXwrapper : public Genericwrapper
14public: 14public:
15 MBOXwrapper(const QString & dir); 15 MBOXwrapper(const QString & dir);
16 virtual ~MBOXwrapper(); 16 virtual ~MBOXwrapper();
17 17
18 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 18 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
19 virtual QList<Folder>* listFolders(); 19 virtual QList<Folder>* listFolders();
20 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
20 21
21 virtual void deleteMail(const RecMail&mail); 22 virtual void deleteMail(const RecMail&mail);
22 virtual void answeredMail(const RecMail&mail); 23 virtual void answeredMail(const RecMail&mail);
23 24
24 virtual int createMbox(const QString&folder,const Folder*f=0,const QString&d="",bool s=false); 25 virtual int createMbox(const QString&folder,const Folder*f=0,const QString&d="",bool s=false);
25 virtual int deleteMbox(const Folder*); 26 virtual int deleteMbox(const Folder*);
diff --git a/noncore/net/mail/pop3wrapper.cpp b/noncore/net/mail/pop3wrapper.cpp
index de90dd1..d76d82a 100644
--- a/noncore/net/mail/pop3wrapper.cpp
+++ b/noncore/net/mail/pop3wrapper.cpp
@@ -213,6 +213,17 @@ int POP3wrapper::deleteAllMail(const Folder*)
213 res=0; 213 res=0;
214 } 214 }
215 break; 215 break;
216 } 216 }
217 return res; 217 return res;
218} 218}
219
220void POP3wrapper::statusFolder(folderStat&target_stat,const QString&)
221{
222 login();
223 target_stat.message_count = 0;
224 target_stat.message_unseen = 0;
225 target_stat.message_recent = 0;
226 if (!m_pop3) return;
227 int r = mailsession_status_folder(m_folder->fld_session,0,&target_stat.message_count,
228 &target_stat.message_recent,&target_stat.message_unseen);
229}
diff --git a/noncore/net/mail/pop3wrapper.h b/noncore/net/mail/pop3wrapper.h
index b3a42be..536cadc 100644
--- a/noncore/net/mail/pop3wrapper.h
+++ b/noncore/net/mail/pop3wrapper.h
@@ -15,12 +15,14 @@ class POP3wrapper : public Genericwrapper
15public: 15public:
16 POP3wrapper( POP3account *a ); 16 POP3wrapper( POP3account *a );
17 virtual ~POP3wrapper(); 17 virtual ~POP3wrapper();
18 /* mailbox will be ignored */ 18 /* mailbox will be ignored */
19 virtual void listMessages(const QString & mailbox, QList<RecMail> &target ); 19 virtual void listMessages(const QString & mailbox, QList<RecMail> &target );
20 virtual QList<Folder>* listFolders(); 20 virtual QList<Folder>* listFolders();
21 /* mailbox will be ignored */
22 virtual void statusFolder(folderStat&target_stat,const QString & mailbox="INBOX");
21 23
22 virtual void deleteMail(const RecMail&mail); 24 virtual void deleteMail(const RecMail&mail);
23 virtual void answeredMail(const RecMail&mail); 25 virtual void answeredMail(const RecMail&mail);
24 virtual int deleteAllMail(const Folder*); 26 virtual int deleteAllMail(const Folder*);
25 27
26 virtual RecBody fetchBody( const RecMail &mail ); 28 virtual RecBody fetchBody( const RecMail &mail );