author | zautrix <zautrix> | 2004-08-31 21:01:18 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-08-31 21:01:18 (UTC) |
commit | 3f5c51234c8068f3d4826a2a0066648ace21a19f (patch) (unidiff) | |
tree | 91b76c1c7ddec6628c573e409070070747d99feb /kmicromail/libmailwrapper/imapwrapper.cpp | |
parent | 95f8d4f1de557bd25ae38807d970208399cec5d1 (diff) | |
download | kdepimpi-3f5c51234c8068f3d4826a2a0066648ace21a19f.zip kdepimpi-3f5c51234c8068f3d4826a2a0066648ace21a19f.tar.gz kdepimpi-3f5c51234c8068f3d4826a2a0066648ace21a19f.tar.bz2 |
Enhancements of kopiemail
Diffstat (limited to 'kmicromail/libmailwrapper/imapwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kmicromail/libmailwrapper/imapwrapper.cpp | 68 |
1 files changed, 58 insertions, 10 deletions
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp index e0fb6f9..bb8bbfc 100644 --- a/kmicromail/libmailwrapper/imapwrapper.cpp +++ b/kmicromail/libmailwrapper/imapwrapper.cpp | |||
@@ -1,8 +1,9 @@ | |||
1 | // CHANGED 2004-09-31 Lutz Rogowski | ||
1 | #include <stdlib.h> | 2 | #include <stdlib.h> |
2 | #include <libetpan/libetpan.h> | 3 | #include <libetpan/libetpan.h> |
3 | #include <qpe/global.h> | 4 | #include <qpe/global.h> |
4 | #include <qapplication.h> | 5 | #include <qapplication.h> |
5 | #include "imapwrapper.h" | 6 | #include "imapwrapper.h" |
6 | #include "mailtypes.h" | 7 | #include "mailtypes.h" |
7 | #include "logindialog.h" | 8 | #include "logindialog.h" |
8 | 9 | ||
@@ -197,17 +198,17 @@ void IMAPwrapper::logout() | |||
197 | if (!m_imap) return; | 198 | if (!m_imap) return; |
198 | err = mailimap_logout( m_imap ); | 199 | err = mailimap_logout( m_imap ); |
199 | err = mailimap_close( m_imap ); | 200 | err = mailimap_close( m_imap ); |
200 | mailimap_free( m_imap ); | 201 | mailimap_free( m_imap ); |
201 | m_imap = 0; | 202 | m_imap = 0; |
202 | m_Lastmbox = ""; | 203 | m_Lastmbox = ""; |
203 | } | 204 | } |
204 | 205 | ||
205 | void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSmartPointer<RecMail> > &target ) | 206 | void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSmartPointer<RecMail> > &target , int maxSizeInKb) |
206 | { | 207 | { |
207 | int err = MAILIMAP_NO_ERROR; | 208 | int err = MAILIMAP_NO_ERROR; |
208 | clist *result = 0; | 209 | clist *result = 0; |
209 | clistcell *current; | 210 | clistcell *current; |
210 | mailimap_fetch_type *fetchType = 0; | 211 | mailimap_fetch_type *fetchType = 0; |
211 | mailimap_set *set = 0; | 212 | mailimap_set *set = 0; |
212 | 213 | ||
213 | login(); | 214 | login(); |
@@ -245,20 +246,22 @@ void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSma | |||
245 | if ( err == MAILIMAP_NO_ERROR ) { | 246 | if ( err == MAILIMAP_NO_ERROR ) { |
246 | mailimap_msg_att * msg_att; | 247 | mailimap_msg_att * msg_att; |
247 | int i = 0; | 248 | int i = 0; |
248 | for (current = clist_begin(result); current != 0; current=clist_next(current)) { | 249 | for (current = clist_begin(result); current != 0; current=clist_next(current)) { |
249 | ++i; | 250 | ++i; |
250 | msg_att = (mailimap_msg_att*)current->data; | 251 | msg_att = (mailimap_msg_att*)current->data; |
251 | RecMail*m = parse_list_result(msg_att); | 252 | RecMail*m = parse_list_result(msg_att); |
252 | if (m) { | 253 | if (m) { |
253 | m->setNumber(i); | 254 | if ( maxSizeInKb == 0 || m->Msgsize()<=maxSizeInKb*1024 ) { |
254 | m->setMbox(mailbox); | 255 | m->setNumber(i); |
255 | m->setWrapper(this); | 256 | m->setMbox(mailbox); |
256 | target.append(m); | 257 | m->setWrapper(this); |
258 | target.append(m); | ||
259 | } | ||
257 | } | 260 | } |
258 | } | 261 | } |
259 | Global::statusMessage(tr("Mailbox has %1 mails").arg(target.count())); | 262 | Global::statusMessage(tr("Mailbox has %1 mails").arg(target.count())); |
260 | } else { | 263 | } else { |
261 | 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)); |
262 | } | 265 | } |
263 | if (result) mailimap_fetch_list_free(result); | 266 | if (result) mailimap_fetch_list_free(result); |
264 | } | 267 | } |
@@ -861,17 +864,59 @@ void IMAPwrapper::fillBodyFields(RecPartP&target_part,mailimap_body_fields*which | |||
861 | } | 864 | } |
862 | } | 865 | } |
863 | if (which->bd_description) { | 866 | if (which->bd_description) { |
864 | target_part->setDescription(QString(which->bd_description)); | 867 | target_part->setDescription(QString(which->bd_description)); |
865 | } | 868 | } |
866 | target_part->setEncoding(encoding); | 869 | target_part->setEncoding(encoding); |
867 | target_part->setSize(which->bd_size); | 870 | target_part->setSize(which->bd_size); |
868 | } | 871 | } |
872 | void IMAPwrapper::deleteMailList(const QValueList<RecMailP>&target) | ||
873 | { | ||
874 | mailimap_flag_list*flist; | ||
875 | mailimap_set *set; | ||
876 | mailimap_store_att_flags * store_flags; | ||
877 | int err; | ||
878 | login(); | ||
879 | if (!m_imap) { | ||
880 | return; | ||
881 | } | ||
882 | int iii = 0; | ||
883 | int count = target.count(); | ||
884 | qDebug("imap remove count %d ", count); | ||
885 | while (iii < count ) { | ||
886 | qDebug("IMAP remove %d ", iii); | ||
887 | RecMailP mail = (*target.at( iii )); | ||
869 | 888 | ||
889 | err = selectMbox(mail->getMbox()); | ||
890 | if ( err != MAILIMAP_NO_ERROR ) { | ||
891 | return; | ||
892 | } | ||
893 | flist = mailimap_flag_list_new_empty(); | ||
894 | mailimap_flag_list_add(flist,mailimap_flag_new_deleted()); | ||
895 | store_flags = mailimap_store_att_flags_new_set_flags(flist); | ||
896 | set = mailimap_set_new_single(mail->getNumber()); | ||
897 | err = mailimap_store(m_imap,set,store_flags); | ||
898 | mailimap_set_free( set ); | ||
899 | mailimap_store_att_flags_free(store_flags); | ||
900 | |||
901 | if (err != MAILIMAP_NO_ERROR) { | ||
902 | // odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl; | ||
903 | return; | ||
904 | } | ||
905 | // odebug << "deleting mail: " << m_imap->imap_response << "" << oendl; | ||
906 | /* should we realy do that at this moment? */ | ||
907 | |||
908 | err = mailimap_expunge(m_imap); | ||
909 | if (err != MAILIMAP_NO_ERROR) { | ||
910 | Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response)); | ||
911 | } | ||
912 | ++iii; | ||
913 | } | ||
914 | } | ||
870 | void IMAPwrapper::deleteMail(const RecMailP&mail) | 915 | void IMAPwrapper::deleteMail(const RecMailP&mail) |
871 | { | 916 | { |
872 | mailimap_flag_list*flist; | 917 | mailimap_flag_list*flist; |
873 | mailimap_set *set; | 918 | mailimap_set *set; |
874 | mailimap_store_att_flags * store_flags; | 919 | mailimap_store_att_flags * store_flags; |
875 | int err; | 920 | int err; |
876 | login(); | 921 | login(); |
877 | if (!m_imap) { | 922 | if (!m_imap) { |
@@ -890,21 +935,23 @@ void IMAPwrapper::deleteMail(const RecMailP&mail) | |||
890 | mailimap_store_att_flags_free(store_flags); | 935 | mailimap_store_att_flags_free(store_flags); |
891 | 936 | ||
892 | if (err != MAILIMAP_NO_ERROR) { | 937 | if (err != MAILIMAP_NO_ERROR) { |
893 | // odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl; | 938 | // odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl; |
894 | return; | 939 | return; |
895 | } | 940 | } |
896 | // odebug << "deleting mail: " << m_imap->imap_response << "" << oendl; | 941 | // odebug << "deleting mail: " << m_imap->imap_response << "" << oendl; |
897 | /* should we realy do that at this moment? */ | 942 | /* should we realy do that at this moment? */ |
943 | |||
898 | err = mailimap_expunge(m_imap); | 944 | err = mailimap_expunge(m_imap); |
899 | if (err != MAILIMAP_NO_ERROR) { | 945 | if (err != MAILIMAP_NO_ERROR) { |
900 | // odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl; | 946 | Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response)); |
901 | } | 947 | } |
902 | // odebug << "Delete successfull " << m_imap->imap_response << "" << oendl; | 948 | qDebug("IMAPwrapper::deleteMail "); |
949 | |||
903 | } | 950 | } |
904 | 951 | ||
905 | void IMAPwrapper::answeredMail(const RecMailP&mail) | 952 | void IMAPwrapper::answeredMail(const RecMailP&mail) |
906 | { | 953 | { |
907 | mailimap_flag_list*flist; | 954 | mailimap_flag_list*flist; |
908 | mailimap_set *set; | 955 | mailimap_set *set; |
909 | mailimap_store_att_flags * store_flags; | 956 | mailimap_store_att_flags * store_flags; |
910 | int err; | 957 | int err; |
@@ -1115,20 +1162,21 @@ const QString&IMAPwrapper::getName()const | |||
1115 | encodedString* IMAPwrapper::fetchRawBody(const RecMailP&mail) | 1162 | encodedString* IMAPwrapper::fetchRawBody(const RecMailP&mail) |
1116 | { | 1163 | { |
1117 | // dummy | 1164 | // dummy |
1118 | QValueList<int> path; | 1165 | QValueList<int> path; |
1119 | return fetchRawPart(mail,path,false); | 1166 | return fetchRawPart(mail,path,false); |
1120 | } | 1167 | } |
1121 | 1168 | ||
1122 | void IMAPwrapper::mvcpAllMails(const FolderP&fromFolder, | 1169 | void IMAPwrapper::mvcpAllMails(const FolderP&fromFolder, |
1123 | const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) | 1170 | const QString&targetFolder,AbstractMail*targetWrapper,bool moveit, int maxSizeInKb) |
1124 | { | 1171 | { |
1125 | if (targetWrapper != this) { | 1172 | if (targetWrapper != this || maxSizeInKb > 0 ) { |
1126 | AbstractMail::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit); | 1173 | AbstractMail::mvcpAllMails(fromFolder,targetFolder,targetWrapper,moveit, maxSizeInKb); |
1174 | qDebug("IMAPwrapper::mvcpAllMails::Using generic"); | ||
1127 | // odebug << "Using generic" << oendl; | 1175 | // odebug << "Using generic" << oendl; |
1128 | return; | 1176 | return; |
1129 | } | 1177 | } |
1130 | mailimap_set *set = 0; | 1178 | mailimap_set *set = 0; |
1131 | login(); | 1179 | login(); |
1132 | if (!m_imap) { | 1180 | if (!m_imap) { |
1133 | return; | 1181 | return; |
1134 | } | 1182 | } |