summaryrefslogtreecommitdiffabout
path: root/kmicromail/libmailwrapper
authorzautrix <zautrix>2004-09-11 18:10:31 (UTC)
committer zautrix <zautrix>2004-09-11 18:10:31 (UTC)
commit53dda80aaab72d7efdbed8a206dc1fa64fed10ee (patch) (unidiff)
tree23b5248145679628c0d346f7d42c53714634e1a3 /kmicromail/libmailwrapper
parent438403295657bdcab9ee9e526c6a08894e876f63 (diff)
downloadkdepimpi-53dda80aaab72d7efdbed8a206dc1fa64fed10ee.zip
kdepimpi-53dda80aaab72d7efdbed8a206dc1fa64fed10ee.tar.gz
kdepimpi-53dda80aaab72d7efdbed8a206dc1fa64fed10ee.tar.bz2
progress fixes
Diffstat (limited to 'kmicromail/libmailwrapper') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libmailwrapper/abstractmail.cpp13
-rw-r--r--kmicromail/libmailwrapper/imapwrapper.cpp5
-rw-r--r--kmicromail/libmailwrapper/pop3wrapper.cpp12
3 files changed, 23 insertions, 7 deletions
diff --git a/kmicromail/libmailwrapper/abstractmail.cpp b/kmicromail/libmailwrapper/abstractmail.cpp
index 44878e0..8f67566 100644
--- a/kmicromail/libmailwrapper/abstractmail.cpp
+++ b/kmicromail/libmailwrapper/abstractmail.cpp
@@ -55,218 +55,223 @@ AbstractMail* AbstractMail::getWrapper(Account*a)
55 break; 55 break;
56 default: 56 default:
57 return 0; 57 return 0;
58 } 58 }
59} 59}
60 60
61encodedString* AbstractMail::decode_String(const encodedString*text,const QString&enc) 61encodedString* AbstractMail::decode_String(const encodedString*text,const QString&enc)
62{ 62{
63 // odebug << "Decode string start" << oendl; 63 // odebug << "Decode string start" << oendl;
64 char*result_text; 64 char*result_text;
65 size_t index = 0; 65 size_t index = 0;
66 /* reset for recursive use! */ 66 /* reset for recursive use! */
67 size_t target_length = 0; 67 size_t target_length = 0;
68 result_text = 0; 68 result_text = 0;
69 int mimetype = MAILMIME_MECHANISM_7BIT; 69 int mimetype = MAILMIME_MECHANISM_7BIT;
70 if (enc.lower()=="quoted-printable") { 70 if (enc.lower()=="quoted-printable") {
71 mimetype = MAILMIME_MECHANISM_QUOTED_PRINTABLE; 71 mimetype = MAILMIME_MECHANISM_QUOTED_PRINTABLE;
72 } else if (enc.lower()=="base64") { 72 } else if (enc.lower()=="base64") {
73 mimetype = MAILMIME_MECHANISM_BASE64; 73 mimetype = MAILMIME_MECHANISM_BASE64;
74 } else if (enc.lower()=="8bit") { 74 } else if (enc.lower()=="8bit") {
75 mimetype = MAILMIME_MECHANISM_8BIT; 75 mimetype = MAILMIME_MECHANISM_8BIT;
76 } else if (enc.lower()=="binary") { 76 } else if (enc.lower()=="binary") {
77 mimetype = MAILMIME_MECHANISM_BINARY; 77 mimetype = MAILMIME_MECHANISM_BINARY;
78 } 78 }
79 79
80 int err = mailmime_part_parse(text->Content(),text->Length(),&index,mimetype, 80 int err = mailmime_part_parse(text->Content(),text->Length(),&index,mimetype,
81 &result_text,&target_length); 81 &result_text,&target_length);
82 82
83 encodedString* result = new encodedString(); 83 encodedString* result = new encodedString();
84 if (err == MAILIMF_NO_ERROR) { 84 if (err == MAILIMF_NO_ERROR) {
85 result->setContent(result_text,target_length); 85 result->setContent(result_text,target_length);
86 } 86 }
87 //odebug << "Decode string finished" << oendl; 87 //odebug << "Decode string finished" << oendl;
88 return result; 88 return result;
89} 89}
90 90
91QString AbstractMail::convert_String(const char*text) 91QString AbstractMail::convert_String(const char*text)
92{ 92{
93 //size_t index = 0; 93 //size_t index = 0;
94 char*res = 0; 94 char*res = 0;
95 int err = MAILIMF_NO_ERROR; 95 int err = MAILIMF_NO_ERROR;
96 96
97 QString result(text); 97 QString result(text);
98 98
99 /* due a bug in libetpan it isn't usable this moment */ 99 /* due a bug in libetpan it isn't usable this moment */
100/* int err = mailmime_encoded_phrase_parse("iso-8859-1", 100/* int err = mailmime_encoded_phrase_parse("iso-8859-1",
101 text, strlen(text),&index, "iso-8859-1",&res);*/ 101 text, strlen(text),&index, "iso-8859-1",&res);*/
102 //odebug << "Input: " << text << "" << oendl; 102 //odebug << "Input: " << text << "" << oendl;
103 if (err == MAILIMF_NO_ERROR && res && strlen(res)) { 103 if (err == MAILIMF_NO_ERROR && res && strlen(res)) {
104// result = QString(res); 104// result = QString(res);
105// odebug << "Res: " << res << ", length: " << strlen(res) << "" << oendl; 105// odebug << "Res: " << res << ", length: " << strlen(res) << "" << oendl;
106 } 106 }
107 if (res) free(res); 107 if (res) free(res);
108 return result; 108 return result;
109} 109}
110 110
111/* cp & paste from launcher */ 111/* cp & paste from launcher */
112QString AbstractMail::gen_attachment_id() 112QString AbstractMail::gen_attachment_id()
113{ 113{
114 QFile file( "/proc/sys/kernel/random/uuid" ); 114 QFile file( "/proc/sys/kernel/random/uuid" );
115 if (!file.open(IO_ReadOnly ) ) 115 if (!file.open(IO_ReadOnly ) )
116 return QString::null; 116 return QString::null;
117 117
118 QTextStream stream(&file); 118 QTextStream stream(&file);
119 119
120 return "{" + stream.read().stripWhiteSpace() + "}"; 120 return "{" + stream.read().stripWhiteSpace() + "}";
121} 121}
122 122
123int AbstractMail::createMbox(const QString&,const FolderP&,const QString& ,bool) 123int AbstractMail::createMbox(const QString&,const FolderP&,const QString& ,bool)
124{ 124{
125 return 0; 125 return 0;
126} 126}
127 127
128QString AbstractMail::defaultLocalfolder() 128QString AbstractMail::defaultLocalfolder()
129{ 129{
130 // QString f = getenv( "HOME" ); 130 // QString f = getenv( "HOME" );
131 QString f = locateLocal( "data", "kopiemail/localmail"); 131 QString f = locateLocal( "data", "kopiemail/localmail");
132 // f += "/Applications/opiemail/localmail"; 132 // f += "/Applications/opiemail/localmail";
133 return f; 133 return f;
134} 134}
135 135
136QString AbstractMail::draftFolder() 136QString AbstractMail::draftFolder()
137{ 137{
138 return QString("Drafts"); 138 return QString("Drafts");
139} 139}
140 140
141/* temporary - will be removed when implemented in all classes */ 141/* temporary - will be removed when implemented in all classes */
142void AbstractMail::deleteMails(const QString &,const QValueList<Opie::Core::OSmartPointer<RecMail> > &) 142void AbstractMail::deleteMails(const QString &,const QValueList<Opie::Core::OSmartPointer<RecMail> > &)
143{ 143{
144} 144}
145void AbstractMail::deleteMailList(const QValueList<RecMailP>&target) 145void AbstractMail::deleteMailList(const QValueList<RecMailP>&target)
146{ 146{
147 //qDebug("AbstractMail::deleteMailList:: Please reimplement! "); 147 //qDebug("AbstractMail::deleteMailList:: Please reimplement! ");
148 // this is currently re-implemented in pop3wrapper and imapwrapper 148 // this is currently re-implemented in pop3wrapper and imapwrapper
149 int iii = 0; 149 int iii = 0;
150 int count = target.count(); 150 int count = target.count();
151 QWidget wid; 151 QProgressBar wid ( count );
152 wid.setCaption( tr("Deleting ..."));
152 wid.show(); 153 wid.show();
153 while (iii < count ) { 154 while (iii < count ) {
154 Global::statusMessage(tr("Delete message %1 of %2").arg(iii).arg(count)); 155 Global::statusMessage(tr("Delete message %1 of %2").arg(iii).arg(count));
156 wid.setProgress( iii );
155 wid.raise(); 157 wid.raise();
156 qApp->processEvents(); 158 qApp->processEvents();
157 RecMailP mail = (*target.at( iii )); 159 RecMailP mail = (*target.at( iii ));
158 deleteMail(mail); 160 deleteMail(mail);
159 ++iii; 161 ++iii;
160 } 162 }
161} 163}
162 164
163void AbstractMail::downloadNewMails(const FolderP&fromFolder, AbstractMail*targetMail ) 165void AbstractMail::downloadNewMails(const FolderP&fromFolder, AbstractMail*targetMail )
164{ 166{
165 //qDebug("AbstractMail::downloadNewMails %s ", fromFolder->getName().latin1()); 167 //qDebug("AbstractMail::downloadNewMails %s ", fromFolder->getName().latin1());
166 // get local folder 168 // get local folder
167 Account * acc = getAccount(); 169 Account * acc = getAccount();
168 if ( !acc ) return; 170 if ( !acc ) return;
169 QString lfName = acc->getLocalFolder(); 171 QString lfName = acc->getLocalFolder();
170 if ( lfName.isEmpty() ) 172 if ( lfName.isEmpty() )
171 lfName = acc->getAccountName(); 173 lfName = acc->getAccountName();
172 // create local folder 174 // create local folder
173 if ( !targetMail->createMbox(lfName)) 175 if ( !targetMail->createMbox(lfName))
174 { 176 {
175 QMessageBox::critical(0,tr("Error creating new Folder"), 177 QMessageBox::critical(0,tr("Error creating new Folder"),
176 tr("Error while creating new folder\n%1\n\nCancelling action.").arg(lfName)); 178 tr("Error while creating new folder\n%1\n\nCancelling action.").arg(lfName));
177 return; 179 return;
178 } 180 }
179 QValueList<RecMailP> t; 181 QValueList<RecMailP> t;
180 listMessages(fromFolder->getName(),t,acc->getMaxMailSize() ); 182 listMessages(fromFolder->getName(),t,acc->getMaxMailSize() );
181 if ( t.count() == 0 ) { 183 if ( t.count() == 0 ) {
182 Global::statusMessage(tr("There are no new messages")); 184 Global::statusMessage(tr("There are no new messages"));
183 return; 185 return;
184 } 186 }
185 QValueList<RecMailP> e; 187 QValueList<RecMailP> e;
186 targetMail->listMessages(lfName,e,acc->getMaxMailSize() ); 188 targetMail->listMessages(lfName,e,acc->getMaxMailSize() );
187 //qDebug("target has mails %d ", e.count()); 189 //qDebug("target has mails %d ", e.count());
188 QValueList<RecMailP> n; 190 QValueList<RecMailP> n;
189 int iii = 0; 191 int iii = 0;
190 int count = t.count(); 192 int count = t.count();
191 while (iii < count ) { 193 while (iii < count ) {
192 RecMailP r = (*t.at( iii )); 194 RecMailP r = (*t.at( iii ));
193 bool found = false; 195 bool found = false;
194 int jjj = 0; 196 int jjj = 0;
195 int countE = e.count(); 197 int countE = e.count();
196 while (jjj < countE ) { 198 while (jjj < countE ) {
197 RecMailP re = (*e.at( jjj )); 199 RecMailP re = (*e.at( jjj ));
198 if ( re->isEqual(r) ) { 200 if ( re->isEqual(r) ) {
199 found = true; 201 found = true;
200 break; 202 break;
201 } 203 }
202 ++jjj; 204 ++jjj;
203 } 205 }
204 if ( !found ) { 206 if ( !found ) {
205 n.append( r ); 207 n.append( r );
206 } 208 }
207 ++iii; 209 ++iii;
208 } 210 }
209 if ( n.count() == 0 ) { 211 if ( n.count() == 0 ) {
210 Global::statusMessage(tr("There are no new messages")); 212 Global::statusMessage(tr("There are no new messages"));
211 return; 213 return;
212 } 214 }
213 mvcpMailList( n,lfName,targetMail,!acc->getLeaveOnServer()); 215 mvcpMailList( n,lfName,targetMail,!acc->getLeaveOnServer());
214 Global::statusMessage(tr("Downloaded %1 messages").arg(n.count())); 216 Global::statusMessage(tr("Downloaded %1 messages").arg(n.count()));
215 217
216#if 0 218#if 0
217 QValueList<RecMailP> t; 219 QValueList<RecMailP> t;
218 listMessages(fromFolder->getName(),t, maxSizeInKb); 220 listMessages(fromFolder->getName(),t, maxSizeInKb);
219 mvcpMailList( t,targetFolder,targetWrapper,moveit); 221 mvcpMailList( t,targetFolder,targetWrapper,moveit);
220#endif 222#endif
221 223
222} 224}
223void AbstractMail::mvcpAllMails(const FolderP&fromFolder, 225void AbstractMail::mvcpAllMails(const FolderP&fromFolder,
224 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit, int maxSizeInKb) 226 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit, int maxSizeInKb)
225{ 227{
226 QValueList<RecMailP> t; 228 QValueList<RecMailP> t;
227 listMessages(fromFolder->getName(),t, maxSizeInKb); 229 listMessages(fromFolder->getName(),t, maxSizeInKb);
228 mvcpMailList( t,targetFolder,targetWrapper,moveit); 230 mvcpMailList( t,targetFolder,targetWrapper,moveit);
229 231
230} 232}
231void AbstractMail::mvcpMailList(const QValueList<RecMailP>& t, 233void AbstractMail::mvcpMailList(const QValueList<RecMailP>& t,
232 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 234 const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
233{ 235{
234 encodedString*st = 0; 236 encodedString*st = 0;
235 int iii = 0; 237 int iii = 0;
236 int count = t.count(); 238 int count = t.count();
237 if ( count == 0 ) 239 if ( count == 0 )
238 return; 240 return;
239 // wel, processevents is qite strange, we need a widget for getting 241 // wel, processevents is qite strange, we need a widget for getting
240 // Global::statusMessage(tr("Copy2 message %1").arg(iii)); displayed 242 // Global::statusMessage(tr("Copy2 message %1").arg(iii)); displaye
241 QWidget wid; 243
244 QProgressBar wid ( count );
245 wid.setCaption( tr("Copying ..."));
242 wid.show(); 246 wid.show();
243 while (iii < count ) { 247 while (iii < count ) {
244 Global::statusMessage(tr("Copy message %1 of %2").arg(iii).arg(count)); 248 Global::statusMessage(tr("Copy message %1 of %2").arg(iii).arg(count));
249 wid.setProgress( iii );
245 wid.raise(); 250 wid.raise();
246 qApp->processEvents(); 251 qApp->processEvents();
247 RecMailP r = (*t.at( iii )); 252 RecMailP r = (*t.at( iii ));
248 st = fetchRawBody(r); 253 st = fetchRawBody(r);
249 if (st) { 254 if (st) {
250 targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); 255 targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder);
251 delete st; 256 delete st;
252 } 257 }
253 ++iii; 258 ++iii;
254 } 259 }
255 if (moveit) { 260 if (moveit) {
256 deleteMailList( t ); 261 deleteMailList( t );
257 //deleteAllMail(fromFolder); 262 //deleteAllMail(fromFolder);
258 } 263 }
259} 264}
260 265
261void AbstractMail::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 266void AbstractMail::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
262{ 267{
263 encodedString*st = 0; 268 encodedString*st = 0;
264 st = fetchRawBody(mail); 269 st = fetchRawBody(mail);
265 if (st) { 270 if (st) {
266 targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); 271 targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder);
267 delete st; 272 delete st;
268 } 273 }
269 if (moveit) { 274 if (moveit) {
270 deleteMail(mail); 275 deleteMail(mail);
271 } 276 }
272} 277}
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp
index 91332c3..d79df4f 100644
--- a/kmicromail/libmailwrapper/imapwrapper.cpp
+++ b/kmicromail/libmailwrapper/imapwrapper.cpp
@@ -851,196 +851,199 @@ void IMAPwrapper::fillSingleBasicPart(RecPartP&target_part,mailimap_body_type_ba
851 type = "audio"; 851 type = "audio";
852 break; 852 break;
853 case MAILIMAP_MEDIA_BASIC_IMAGE: 853 case MAILIMAP_MEDIA_BASIC_IMAGE:
854 type = "image"; 854 type = "image";
855 break; 855 break;
856 case MAILIMAP_MEDIA_BASIC_MESSAGE: 856 case MAILIMAP_MEDIA_BASIC_MESSAGE:
857 type = "message"; 857 type = "message";
858 break; 858 break;
859 case MAILIMAP_MEDIA_BASIC_VIDEO: 859 case MAILIMAP_MEDIA_BASIC_VIDEO:
860 type = "video"; 860 type = "video";
861 break; 861 break;
862 case MAILIMAP_MEDIA_BASIC_OTHER: 862 case MAILIMAP_MEDIA_BASIC_OTHER:
863 default: 863 default:
864 if (which->bd_media_basic->med_basic_type) { 864 if (which->bd_media_basic->med_basic_type) {
865 type = which->bd_media_basic->med_basic_type; 865 type = which->bd_media_basic->med_basic_type;
866 } else { 866 } else {
867 type = ""; 867 type = "";
868 } 868 }
869 break; 869 break;
870 } 870 }
871 if (which->bd_media_basic->med_subtype) { 871 if (which->bd_media_basic->med_subtype) {
872 sub = which->bd_media_basic->med_subtype; 872 sub = which->bd_media_basic->med_subtype;
873 } else { 873 } else {
874 sub = ""; 874 sub = "";
875 } 875 }
876 // odebug << "Type = " << type.latin1() << "/" << sub.latin1() << "" << oendl; 876 // odebug << "Type = " << type.latin1() << "/" << sub.latin1() << "" << oendl;
877 target_part->setType(type.lower()); 877 target_part->setType(type.lower());
878 target_part->setSubtype(sub.lower()); 878 target_part->setSubtype(sub.lower());
879 fillBodyFields(target_part,which->bd_fields); 879 fillBodyFields(target_part,which->bd_fields);
880} 880}
881 881
882void IMAPwrapper::fillBodyFields(RecPartP&target_part,mailimap_body_fields*which) 882void IMAPwrapper::fillBodyFields(RecPartP&target_part,mailimap_body_fields*which)
883{ 883{
884 if (!which) return; 884 if (!which) return;
885 if (which->bd_parameter && which->bd_parameter->pa_list && which->bd_parameter->pa_list->count>0) { 885 if (which->bd_parameter && which->bd_parameter->pa_list && which->bd_parameter->pa_list->count>0) {
886 clistcell*cur; 886 clistcell*cur;
887 mailimap_single_body_fld_param*param=0; 887 mailimap_single_body_fld_param*param=0;
888 for (cur = clist_begin(which->bd_parameter->pa_list);cur!=NULL;cur=clist_next(cur)) { 888 for (cur = clist_begin(which->bd_parameter->pa_list);cur!=NULL;cur=clist_next(cur)) {
889 param = (mailimap_single_body_fld_param*)cur->data; 889 param = (mailimap_single_body_fld_param*)cur->data;
890 if (param) { 890 if (param) {
891 target_part->addParameter(QString(param->pa_name).lower(),QString(param->pa_value)); 891 target_part->addParameter(QString(param->pa_name).lower(),QString(param->pa_value));
892 } 892 }
893 } 893 }
894 } 894 }
895 mailimap_body_fld_enc*enc = which->bd_encoding; 895 mailimap_body_fld_enc*enc = which->bd_encoding;
896 QString encoding(""); 896 QString encoding("");
897 switch (enc->enc_type) { 897 switch (enc->enc_type) {
898 case MAILIMAP_BODY_FLD_ENC_7BIT: 898 case MAILIMAP_BODY_FLD_ENC_7BIT:
899 encoding = "7bit"; 899 encoding = "7bit";
900 break; 900 break;
901 case MAILIMAP_BODY_FLD_ENC_8BIT: 901 case MAILIMAP_BODY_FLD_ENC_8BIT:
902 encoding = "8bit"; 902 encoding = "8bit";
903 break; 903 break;
904 case MAILIMAP_BODY_FLD_ENC_BINARY: 904 case MAILIMAP_BODY_FLD_ENC_BINARY:
905 encoding="binary"; 905 encoding="binary";
906 break; 906 break;
907 case MAILIMAP_BODY_FLD_ENC_BASE64: 907 case MAILIMAP_BODY_FLD_ENC_BASE64:
908 encoding="base64"; 908 encoding="base64";
909 break; 909 break;
910 case MAILIMAP_BODY_FLD_ENC_QUOTED_PRINTABLE: 910 case MAILIMAP_BODY_FLD_ENC_QUOTED_PRINTABLE:
911 encoding="quoted-printable"; 911 encoding="quoted-printable";
912 break; 912 break;
913 case MAILIMAP_BODY_FLD_ENC_OTHER: 913 case MAILIMAP_BODY_FLD_ENC_OTHER:
914 default: 914 default:
915 if (enc->enc_value) { 915 if (enc->enc_value) {
916 char*t=enc->enc_value; 916 char*t=enc->enc_value;
917 encoding=QString(enc->enc_value); 917 encoding=QString(enc->enc_value);
918 enc->enc_value=0L; 918 enc->enc_value=0L;
919 free(t); 919 free(t);
920 } 920 }
921 } 921 }
922 if (which->bd_description) { 922 if (which->bd_description) {
923 target_part->setDescription(QString(which->bd_description)); 923 target_part->setDescription(QString(which->bd_description));
924 } 924 }
925 target_part->setEncoding(encoding); 925 target_part->setEncoding(encoding);
926 target_part->setSize(which->bd_size); 926 target_part->setSize(which->bd_size);
927} 927}
928void IMAPwrapper::deleteMailList(const QValueList<RecMailP>&target) 928void IMAPwrapper::deleteMailList(const QValueList<RecMailP>&target)
929{ 929{
930 //#if 0 930 //#if 0
931 mailimap_flag_list*flist; 931 mailimap_flag_list*flist;
932 mailimap_set *set; 932 mailimap_set *set;
933 mailimap_store_att_flags * store_flags; 933 mailimap_store_att_flags * store_flags;
934 int err; 934 int err;
935 login(); 935 login();
936 //#endif 936 //#endif
937 if (!m_imap) { 937 if (!m_imap) {
938 return; 938 return;
939 } 939 }
940 int iii = 0; 940 int iii = 0;
941 int count = target.count(); 941 int count = target.count();
942 // qDebug("imap remove count %d ", count); 942 // qDebug("imap remove count %d ", count);
943 943
944 944
945 mMax = count; 945 mMax = count;
946 //progress( tr("Delete")); 946 //progress( tr("Delete"));
947 QWidget wid; 947
948 QProgressBar wid ( count );
949 wid.setCaption( tr("Deleting ..."));
948 wid.show(); 950 wid.show();
949 while (iii < count ) { 951 while (iii < count ) {
950 Global::statusMessage(tr("Delete message %1 of %2").arg(iii).arg(count)); 952 Global::statusMessage(tr("Delete message %1 of %2").arg(iii).arg(count));
953 wid.setProgress( iii );
951 wid.raise(); 954 wid.raise();
952 qApp->processEvents(); 955 qApp->processEvents();
953 RecMailP mail = (*target.at( iii )); 956 RecMailP mail = (*target.at( iii ));
954 //#if 0 957 //#if 0
955 //qDebug("IMAP remove %d %d ", iii, mail->getNumber() ); 958 //qDebug("IMAP remove %d %d ", iii, mail->getNumber() );
956 err = selectMbox(mail->getMbox()); 959 err = selectMbox(mail->getMbox());
957 if ( err != MAILIMAP_NO_ERROR ) { 960 if ( err != MAILIMAP_NO_ERROR ) {
958 return; 961 return;
959 } 962 }
960 flist = mailimap_flag_list_new_empty(); 963 flist = mailimap_flag_list_new_empty();
961 mailimap_flag_list_add(flist,mailimap_flag_new_deleted()); 964 mailimap_flag_list_add(flist,mailimap_flag_new_deleted());
962 store_flags = mailimap_store_att_flags_new_set_flags(flist); 965 store_flags = mailimap_store_att_flags_new_set_flags(flist);
963 set = mailimap_set_new_single(mail->getNumber()); 966 set = mailimap_set_new_single(mail->getNumber());
964 err = mailimap_store(m_imap,set,store_flags); 967 err = mailimap_store(m_imap,set,store_flags);
965 mailimap_set_free( set ); 968 mailimap_set_free( set );
966 mailimap_store_att_flags_free(store_flags); 969 mailimap_store_att_flags_free(store_flags);
967 970
968 if (err != MAILIMAP_NO_ERROR) { 971 if (err != MAILIMAP_NO_ERROR) {
969 // odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl; 972 // odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl;
970 return; 973 return;
971 } 974 }
972 // odebug << "deleting mail: " << m_imap->imap_response << "" << oendl; 975 // odebug << "deleting mail: " << m_imap->imap_response << "" << oendl;
973 /* should we realy do that at this moment? */ 976 /* should we realy do that at this moment? */
974 977
975 // err = mailimap_expunge(m_imap); 978 // err = mailimap_expunge(m_imap);
976 //if (err != MAILIMAP_NO_ERROR) { 979 //if (err != MAILIMAP_NO_ERROR) {
977 // Global::statusMessage(tr("Error deleting mails: %s").arg(m_imap->imap_response)); 980 // Global::statusMessage(tr("Error deleting mails: %s").arg(m_imap->imap_response));
978 // } 981 // }
979 //#endif 982 //#endif
980 //deleteMail( mail); 983 //deleteMail( mail);
981 ++iii; 984 ++iii;
982 } 985 }
983 //qDebug("Deleting imap mails... "); 986 //qDebug("Deleting imap mails... ");
984 err = mailimap_expunge(m_imap); 987 err = mailimap_expunge(m_imap);
985 if (err != MAILIMAP_NO_ERROR) { 988 if (err != MAILIMAP_NO_ERROR) {
986 Global::statusMessage(tr("Error deleting mails: %s").arg(m_imap->imap_response)); 989 Global::statusMessage(tr("Error deleting mails: %s").arg(m_imap->imap_response));
987 } 990 }
988} 991}
989void IMAPwrapper::deleteMail(const RecMailP&mail) 992void IMAPwrapper::deleteMail(const RecMailP&mail)
990{ 993{
991 mailimap_flag_list*flist; 994 mailimap_flag_list*flist;
992 mailimap_set *set; 995 mailimap_set *set;
993 mailimap_store_att_flags * store_flags; 996 mailimap_store_att_flags * store_flags;
994 int err; 997 int err;
995 login(); 998 login();
996 if (!m_imap) { 999 if (!m_imap) {
997 return; 1000 return;
998 } 1001 }
999 err = selectMbox(mail->getMbox()); 1002 err = selectMbox(mail->getMbox());
1000 if ( err != MAILIMAP_NO_ERROR ) { 1003 if ( err != MAILIMAP_NO_ERROR ) {
1001 return; 1004 return;
1002 } 1005 }
1003 flist = mailimap_flag_list_new_empty(); 1006 flist = mailimap_flag_list_new_empty();
1004 mailimap_flag_list_add(flist,mailimap_flag_new_deleted()); 1007 mailimap_flag_list_add(flist,mailimap_flag_new_deleted());
1005 store_flags = mailimap_store_att_flags_new_set_flags(flist); 1008 store_flags = mailimap_store_att_flags_new_set_flags(flist);
1006 set = mailimap_set_new_single(mail->getNumber()); 1009 set = mailimap_set_new_single(mail->getNumber());
1007 err = mailimap_store(m_imap,set,store_flags); 1010 err = mailimap_store(m_imap,set,store_flags);
1008 mailimap_set_free( set ); 1011 mailimap_set_free( set );
1009 mailimap_store_att_flags_free(store_flags); 1012 mailimap_store_att_flags_free(store_flags);
1010 1013
1011 if (err != MAILIMAP_NO_ERROR) { 1014 if (err != MAILIMAP_NO_ERROR) {
1012 // odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl; 1015 // odebug << "error deleting mail: " << m_imap->imap_response << "" << oendl;
1013 return; 1016 return;
1014 } 1017 }
1015 // odebug << "deleting mail: " << m_imap->imap_response << "" << oendl; 1018 // odebug << "deleting mail: " << m_imap->imap_response << "" << oendl;
1016 /* should we realy do that at this moment? */ 1019 /* should we realy do that at this moment? */
1017 1020
1018 err = mailimap_expunge(m_imap); 1021 err = mailimap_expunge(m_imap);
1019 if (err != MAILIMAP_NO_ERROR) { 1022 if (err != MAILIMAP_NO_ERROR) {
1020 Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response)); 1023 Global::statusMessage(tr("error deleting mail: %s").arg(m_imap->imap_response));
1021 } 1024 }
1022 //qDebug("IMAPwrapper::deleteMail 2"); 1025 //qDebug("IMAPwrapper::deleteMail 2");
1023 1026
1024} 1027}
1025 1028
1026void IMAPwrapper::answeredMail(const RecMailP&mail) 1029void IMAPwrapper::answeredMail(const RecMailP&mail)
1027{ 1030{
1028 mailimap_flag_list*flist; 1031 mailimap_flag_list*flist;
1029 mailimap_set *set; 1032 mailimap_set *set;
1030 mailimap_store_att_flags * store_flags; 1033 mailimap_store_att_flags * store_flags;
1031 int err; 1034 int err;
1032 login(); 1035 login();
1033 if (!m_imap) { 1036 if (!m_imap) {
1034 return; 1037 return;
1035 } 1038 }
1036 err = selectMbox(mail->getMbox()); 1039 err = selectMbox(mail->getMbox());
1037 if ( err != MAILIMAP_NO_ERROR ) { 1040 if ( err != MAILIMAP_NO_ERROR ) {
1038 return; 1041 return;
1039 } 1042 }
1040 flist = mailimap_flag_list_new_empty(); 1043 flist = mailimap_flag_list_new_empty();
1041 mailimap_flag_list_add(flist,mailimap_flag_new_answered()); 1044 mailimap_flag_list_add(flist,mailimap_flag_new_answered());
1042 store_flags = mailimap_store_att_flags_new_add_flags(flist); 1045 store_flags = mailimap_store_att_flags_new_add_flags(flist);
1043 set = mailimap_set_new_single(mail->getNumber()); 1046 set = mailimap_set_new_single(mail->getNumber());
1044 err = mailimap_store(m_imap,set,store_flags); 1047 err = mailimap_store(m_imap,set,store_flags);
1045 mailimap_set_free( set ); 1048 mailimap_set_free( set );
1046 mailimap_store_att_flags_free(store_flags); 1049 mailimap_store_att_flags_free(store_flags);
diff --git a/kmicromail/libmailwrapper/pop3wrapper.cpp b/kmicromail/libmailwrapper/pop3wrapper.cpp
index 1edec9e..9d52f52 100644
--- a/kmicromail/libmailwrapper/pop3wrapper.cpp
+++ b/kmicromail/libmailwrapper/pop3wrapper.cpp
@@ -107,188 +107,196 @@ void POP3wrapper::listMessages(const QString &, QValueList<Opie::Core::OSmartPoi
107 uint32_t res_messages,res_recent,res_unseen; 107 uint32_t res_messages,res_recent,res_unseen;
108 mailsession_status_folder(m_pop3->sto_session,"INBOX",&res_messages,&res_recent,&res_unseen); 108 mailsession_status_folder(m_pop3->sto_session,"INBOX",&res_messages,&res_recent,&res_unseen);
109 parseList(target,m_pop3->sto_session,"INBOX", false, maxSizeInKb); 109 parseList(target,m_pop3->sto_session,"INBOX", false, maxSizeInKb);
110 Global::statusMessage( tr("Mailbox contains %1 mail(s)").arg(res_messages)); 110 Global::statusMessage( tr("Mailbox contains %1 mail(s)").arg(res_messages));
111} 111}
112 112
113void POP3wrapper::login() 113void POP3wrapper::login()
114{ 114{
115 if (account->getOffline()) 115 if (account->getOffline())
116 return; 116 return;
117 /* we'll hold the line */ 117 /* we'll hold the line */
118 if ( m_pop3 != NULL ) 118 if ( m_pop3 != NULL )
119 return; 119 return;
120 120
121 QString server,user, pass; 121 QString server,user, pass;
122 uint16_t port; 122 uint16_t port;
123 int err = MAILPOP3_NO_ERROR; 123 int err = MAILPOP3_NO_ERROR;
124 124
125 server = account->getServer(); 125 server = account->getServer();
126 port = account->getPort().toUInt(); 126 port = account->getPort().toUInt();
127 127
128 if ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) { 128 if ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) {
129 qApp->processEvents(); 129 qApp->processEvents();
130 LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true ); 130 LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true );
131 login.show(); 131 login.show();
132 if ( QDialog::Accepted == login.exec() ) { 132 if ( QDialog::Accepted == login.exec() ) {
133 // ok 133 // ok
134 user = login.getUser(); 134 user = login.getUser();
135 pass = login.getPassword(); 135 pass = login.getPassword();
136 } else { 136 } else {
137 // cancel 137 // cancel
138 ; // odebug << "POP3: Login canceled" << oendl; 138 ; // odebug << "POP3: Login canceled" << oendl;
139 return; 139 return;
140 } 140 }
141 } else { 141 } else {
142 user = account->getUser(); 142 user = account->getUser();
143 pass = account->getPassword(); 143 pass = account->getPassword();
144 } 144 }
145 // bool ssl = account->getSSL(); 145 // bool ssl = account->getSSL();
146 146
147 m_pop3=mailstorage_new(NULL); 147 m_pop3=mailstorage_new(NULL);
148 int conntypeset = account->ConnectionType(); 148 int conntypeset = account->ConnectionType();
149 int conntype = 0; 149 int conntype = 0;
150 if ( conntypeset == 3 ) { 150 if ( conntypeset == 3 ) {
151 conntype = CONNECTION_TYPE_COMMAND; 151 conntype = CONNECTION_TYPE_COMMAND;
152 } else if ( conntypeset == 2 ) { 152 } else if ( conntypeset == 2 ) {
153 conntype = CONNECTION_TYPE_TLS; 153 conntype = CONNECTION_TYPE_TLS;
154 } else if ( conntypeset == 1 ) { 154 } else if ( conntypeset == 1 ) {
155 conntype = CONNECTION_TYPE_STARTTLS; 155 conntype = CONNECTION_TYPE_STARTTLS;
156 } else if ( conntypeset == 0 ) { 156 } else if ( conntypeset == 0 ) {
157 conntype = CONNECTION_TYPE_TRY_STARTTLS; 157 conntype = CONNECTION_TYPE_TRY_STARTTLS;
158 } 158 }
159 159
160 //(ssl?CONNECTION_TYPE_TLS:CONNECTION_TYPE_PLAIN); 160 //(ssl?CONNECTION_TYPE_TLS:CONNECTION_TYPE_PLAIN);
161 161
162 pop3_mailstorage_init(m_pop3,(char*)server.latin1(), port, NULL, conntype, POP3_AUTH_TYPE_PLAIN, 162 pop3_mailstorage_init(m_pop3,(char*)server.latin1(), port, NULL, conntype, POP3_AUTH_TYPE_PLAIN,
163 (char*)user.latin1(),(char*)pass.latin1(),0,0,0); 163 (char*)user.latin1(),(char*)pass.latin1(),0,0,0);
164 164
165 err = mailstorage_connect(m_pop3); 165 err = mailstorage_connect(m_pop3);
166 if (err != MAIL_NO_ERROR) { 166 if (err != MAIL_NO_ERROR) {
167 ; // odebug << QString( "FEHLERNUMMER %1" ).arg( err ) << oendl; 167 ; // odebug << QString( "FEHLERNUMMER %1" ).arg( err ) << oendl;
168 Global::statusMessage(tr("Error %1 initializing folder").arg( err )); 168 Global::statusMessage(tr("Error %1 initializing folder").arg( err ));
169 mailstorage_free(m_pop3); 169 mailstorage_free(m_pop3);
170 m_pop3 = 0; 170 m_pop3 = 0;
171 } else { 171 } else {
172 mailsession * session = m_pop3->sto_session; 172 mailsession * session = m_pop3->sto_session;
173 mailpop3 * mail = ( ( pop3_session_state_data * )session->sess_data )->pop3_session; 173 mailpop3 * mail = ( ( pop3_session_state_data * )session->sess_data )->pop3_session;
174 if (mail) { 174 if (mail) {
175 mail->pop3_progr_fun = &pop3_progress; 175 mail->pop3_progr_fun = &pop3_progress;
176 } 176 }
177 } 177 }
178} 178}
179 179
180void POP3wrapper::logout() 180void POP3wrapper::logout()
181{ 181{
182 if ( m_pop3 == NULL ) 182 if ( m_pop3 == NULL )
183 return; 183 return;
184 mailstorage_free(m_pop3); 184 mailstorage_free(m_pop3);
185 m_pop3 = 0; 185 m_pop3 = 0;
186} 186}
187 187
188 188
189QValueList<Opie::Core::OSmartPointer<Folder> >* POP3wrapper::listFolders() { 189QValueList<Opie::Core::OSmartPointer<Folder> >* POP3wrapper::listFolders() {
190 QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<FolderP>(); 190 QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<FolderP>();
191 FolderP inb=new Folder("INBOX","/"); 191 FolderP inb=new Folder("INBOX","/");
192 folders->append(inb); 192 folders->append(inb);
193 return folders; 193 return folders;
194} 194}
195 195
196void POP3wrapper::deleteMailList(const QValueList<RecMailP>&target) 196void POP3wrapper::deleteMailList(const QValueList<RecMailP>&target)
197{ 197{
198 login(); 198 login();
199 if (!m_pop3) 199 if (!m_pop3)
200 return; 200 return;
201 int iii = 0; 201 int iii = 0;
202 int count = target.count(); 202 int count = target.count();
203 QWidget wid; 203
204 QProgressBar wid ( count );
205 wid.setCaption( tr("Deleting ..."));
204 wid.show(); 206 wid.show();
205 while (iii < count ) { 207 while (iii < count ) {
206 Global::statusMessage(tr("Delete message %1 of %2").arg(iii).arg(count)); 208 Global::statusMessage(tr("Delete message %1 of %2").arg(iii).arg(count));
209 wid.setProgress( iii );
207 wid.raise(); 210 wid.raise();
208 qApp->processEvents(); 211 qApp->processEvents();
209 //qDebug("delete "); 212 //qDebug("delete ");
210 RecMailP mail = (*target.at( iii )); 213 RecMailP mail = (*target.at( iii ));
211 int err = mailsession_remove_message(m_pop3->sto_session,mail->getNumber()); 214 int err = mailsession_remove_message(m_pop3->sto_session,mail->getNumber());
212 if (err != MAIL_NO_ERROR) { 215 if (err != MAIL_NO_ERROR) {
213 Global::statusMessage(tr("Error deleting mail")); 216 Global::statusMessage(tr("Error deleting mail"));
214 } 217 }
215 ++iii; 218 ++iii;
216 } 219 }
217} 220}
218void POP3wrapper::deleteMail(const RecMailP&mail) { 221void POP3wrapper::deleteMail(const RecMailP&mail) {
219 login(); 222 login();
220 if (!m_pop3) 223 if (!m_pop3)
221 return; 224 return;
222 int err = mailsession_remove_message(m_pop3->sto_session,mail->getNumber()); 225 int err = mailsession_remove_message(m_pop3->sto_session,mail->getNumber());
223 if (err != MAIL_NO_ERROR) { 226 if (err != MAIL_NO_ERROR) {
224 Global::statusMessage(tr("error deleting mail")); 227 Global::statusMessage(tr("error deleting mail"));
225 } 228 }
226} 229}
227 230
228void POP3wrapper::answeredMail(const RecMailP&) {} 231void POP3wrapper::answeredMail(const RecMailP&) {}
229 232
230int POP3wrapper::deleteAllMail(const FolderP&) { 233int POP3wrapper::deleteAllMail(const FolderP&) {
231 login(); 234 login();
232 if (!m_pop3) 235 if (!m_pop3)
233 return 0; 236 return 0;
234 int res = 1; 237 int res = 1;
235 238
236 uint32_t result = 0; 239 uint32_t result = 0;
237 int err = mailsession_messages_number(m_pop3->sto_session,NULL,&result); 240 int err = mailsession_messages_number(m_pop3->sto_session,NULL,&result);
238 if (err != MAIL_NO_ERROR) { 241 if (err != MAIL_NO_ERROR) {
239 Global::statusMessage(tr("Error getting folder info")); 242 Global::statusMessage(tr("Error getting folder info"));
240 return 0; 243 return 0;
241 } 244 }
242 QWidget wid; 245
246
247
248 QProgressBar wid ( result );
249 wid.setCaption( tr("Deleting ..."));
243 wid.show(); 250 wid.show();
244 for (unsigned int i = 0; i < result; ++i) { 251 for (unsigned int i = 0; i < result; ++i) {
245 Global::statusMessage(tr("Delete message %1 of %2").arg(i).arg(result)); 252 Global::statusMessage(tr("Delete message %1 of %2").arg(i).arg(result));
253 wid.setProgress( i );
246 wid.raise(); 254 wid.raise();
247 qApp->processEvents(); 255 qApp->processEvents();
248 256
249 err = mailsession_remove_message(m_pop3->sto_session,i+1); 257 err = mailsession_remove_message(m_pop3->sto_session,i+1);
250 if (err != MAIL_NO_ERROR) { 258 if (err != MAIL_NO_ERROR) {
251 Global::statusMessage(tr("Error deleting mail %1").arg(i+1)); 259 Global::statusMessage(tr("Error deleting mail %1").arg(i+1));
252 res=0; 260 res=0;
253 } 261 }
254 break; 262 break;
255 } 263 }
256 return res; 264 return res;
257} 265}
258 266
259void POP3wrapper::statusFolder(folderStat&target_stat,const QString&) { 267void POP3wrapper::statusFolder(folderStat&target_stat,const QString&) {
260 login(); 268 login();
261 target_stat.message_count = 0; 269 target_stat.message_count = 0;
262 target_stat.message_unseen = 0; 270 target_stat.message_unseen = 0;
263 target_stat.message_recent = 0; 271 target_stat.message_recent = 0;
264 if (!m_pop3) 272 if (!m_pop3)
265 return; 273 return;
266 int r = mailsession_status_folder(m_pop3->sto_session,0,&target_stat.message_count, 274 int r = mailsession_status_folder(m_pop3->sto_session,0,&target_stat.message_count,
267 &target_stat.message_recent,&target_stat.message_unseen); 275 &target_stat.message_recent,&target_stat.message_unseen);
268 if (r != MAIL_NO_ERROR) { 276 if (r != MAIL_NO_ERROR) {
269 ; // odebug << "error getting folter status." << oendl; 277 ; // odebug << "error getting folter status." << oendl;
270 } 278 }
271} 279}
272 280
273encodedString* POP3wrapper::fetchRawBody(const RecMailP&mail) { 281encodedString* POP3wrapper::fetchRawBody(const RecMailP&mail) {
274 char*target=0; 282 char*target=0;
275 size_t length=0; 283 size_t length=0;
276 encodedString*res = 0; 284 encodedString*res = 0;
277 mailmessage * mailmsg = 0; 285 mailmessage * mailmsg = 0;
278 int err = mailsession_get_message(m_pop3->sto_session, mail->getNumber(), &mailmsg); 286 int err = mailsession_get_message(m_pop3->sto_session, mail->getNumber(), &mailmsg);
279 err = mailmessage_fetch(mailmsg,&target,&length); 287 err = mailmessage_fetch(mailmsg,&target,&length);
280 if (mailmsg) 288 if (mailmsg)
281 mailmessage_free(mailmsg); 289 mailmessage_free(mailmsg);
282 if (target) { 290 if (target) {
283 res = new encodedString(target,length); 291 res = new encodedString(target,length);
284 } 292 }
285 return res; 293 return res;
286} 294}
287 295
288MAILLIB::ATYPE POP3wrapper::getType()const { 296MAILLIB::ATYPE POP3wrapper::getType()const {
289 return account->getType(); 297 return account->getType();
290} 298}
291 299
292const QString&POP3wrapper::getName()const{ 300const QString&POP3wrapper::getName()const{
293 return account->getAccountName(); 301 return account->getAccountName();
294} 302}