summaryrefslogtreecommitdiff
path: root/noncore/unsupported/mail2/libmail/imapresponse.cpp
Unidiff
Diffstat (limited to 'noncore/unsupported/mail2/libmail/imapresponse.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/mail2/libmail/imapresponse.cpp224
1 files changed, 151 insertions, 73 deletions
diff --git a/noncore/unsupported/mail2/libmail/imapresponse.cpp b/noncore/unsupported/mail2/libmail/imapresponse.cpp
index 06dca33..ce5b18b 100644
--- a/noncore/unsupported/mail2/libmail/imapresponse.cpp
+++ b/noncore/unsupported/mail2/libmail/imapresponse.cpp
@@ -1,87 +1,122 @@
1#include "imapresponse.h" 1#include "imapresponse.h"
2 2
3static QString _previousData;
4static unsigned int _neededData;
5 3
6IMAPResponseParser::IMAPResponseParser(const QString &data) 4IMAPResponseParser::IMAPResponseParser()
5{
6}
7
8void IMAPResponseParser::parse ( const QString &_data )
7 { 9 {
8 QString _data = data, more; 10 QString data = _data;
9 _data.replace((QString)"\r\n", "\n"); 11
10 12 int pos = 0;
11 QStringList lines = QStringList::split('\n', _data); 13 int len = data. length ( );
12 QStringList::Iterator it; 14
13 for (it = lines.begin(); it != lines.end(); it++) { 15
14 QString tag, lineData; 16 while ( pos < len ) {
15 17 pos = data. find ( QRegExp ( "[^\\s]" ), pos );
16 if (!_previousData.isNull()) { 18
17 qDebug(QString("IMAPResponseParser: got additional data. (%1/%2)").arg(_previousData.length()).arg(_neededData)); 19 if (( pos < 0 ) || ( pos >= len ))
18 _previousData += *it + "\n"; 20 break;
19 if (_previousData.length() >= _neededData) { 21
20 _previousData += ")"; 22 switch ( data [pos]. latin1 ( )) {
21 qDebug("IMAPResponseParser: got ALL additional data."); 23 case '*': {
22 qDebug("Data is: " + _previousData); 24 qDebug ( "* ASTERIX\n" );
23 parseResponse(_previousData); 25
24 _previousData = QString(0); 26 int eol = data. find ( '\n', pos );
25 _neededData = 0; 27 int bracket = data. findRev ( '{', eol );
26 } 28 int rest = data. find ( QRegExp ( "[^\\s]" ), pos + 1 );
27 } else { 29
28 splitTagData(*it, tag, lineData); 30 qDebug ( "pos=%d, rest=%d, bracket=%d, eol=%d\n", pos, rest, bracket, eol );
29 if (tag == "*") { 31
30 int pos; 32 if ( bracket > pos ) {
31 if ((pos = data.find(QRegExp("\\{\\d*\\}"))) != -1) { 33 uint needdata = data. mid ( bracket + 1, data. find ( '}', bracket + 1 ) - bracket - 1 ). toUInt ( );
32 qDebug("IMAPResponseParser: waiting for additional data..."); 34
33 _previousData = lineData + "\n"; 35 if ( needdata ) {
34 36 qDebug ( "nd=%d - hd=%d\n", needdata, ( len - eol - 1 ));
35 QString tmp = data.right(data.length() - pos - 1).stripWhiteSpace(); 37
36 tmp.truncate(tmp.length() - 1); 38 while ( needdata > ( len - eol - 1 )) {
37 39 qDebug ( "emitting need more...\n" );
38 _neededData = tmp.toUInt(); 40 emit needMoreData ( data );
39 if (_previousData.length() >= _neededData) { 41 len = data. length ( );
40 qDebug("IMAPResponseParser: got ALL additional data. (1st)"); 42 }
41 parseResponse(_previousData); 43 qDebug ( "Got all data...\n" );
42 _previousData = QString(0); 44
43 _neededData = 0; 45 QString tmp = data. mid ( rest, eol - rest + 1 + needdata );
44 } else { 46
47 int tail = 0;
48
49 while ( data [eol - rest + 1 + needdata + tail] != ')' )
50 tail++;
51 tmp. append ( data. mid ( eol - rest + 1 + needdata, tail + 1 ));
52
53
54 qDebug ( "Complete parse = |%s|\n", tmp.latin1());
55
56 parseResponse ( tmp );
57
58 pos = rest + needdata + tail + 1;
45 break; 59 break;
46 } 60 }
47 } else {
48 parseResponse(lineData);
49 } 61 }
50 } else if (tag == "+") { 62
51 emit needMoreData(_data); 63 parseResponse ( data. mid ( rest, eol - rest + 1 ). stripWhiteSpace ( ));
52 } else { 64 break;
53 _iresponse.setTag(tag); 65 }
54 parseResponse(_data, true); 66 case '+': {
67 qDebug ( "+ PLUS\n" );
68
69 emit needMoreData ( data );
70 len = data. length ( );
71 break;
72 }
73 default : {
74 qDebug ( "OTHER: '%s...'\n", data. mid ( pos, 20 ). latin1 ( ));
75
76 uint rest = data. find ( ' ', pos + 1 );
77 rest = data. find ( QRegExp ( "[^\\s]" ), rest + 1 );
78 _iresponse. setTag ( data. mid ( pos, rest - pos ). stripWhiteSpace ( ));
79 parseResponse ( data. mid ( rest, data. find ( '\n', rest )). stripWhiteSpace ( ), true );
80 break;
55 } 81 }
56 } 82 }
83
84 // skip to end-of-line
85 while (( pos < len ) && ( data [pos] != '\n' ))
86 pos++;
57 } 87 }
58} 88}
59 89
90
60IMAPResponse IMAPResponseParser::response() 91IMAPResponse IMAPResponseParser::response()
61{ 92{
62 return _iresponse; 93 return _iresponse;
63} 94}
64 95
65void IMAPResponseParser::parseResponse(const QString &data, bool tagged) 96void IMAPResponseParser::parseResponse(const QString &data, bool tagged)
66{ 97{
67 QString response, line; 98 QString response, line;
68 int pos; 99 int pos;
69 bool isNum = false; 100 bool isNum = false;
101
102
103 //qDebug ( "\n\n#### PRD #### : #%s#\n\n", data.latin1());
104
70 if ((pos = data.find(' ')) != -1) { 105 if ((pos = data.find(' ')) != -1) {
71 response = data.left(pos).upper(); 106 response = data.left(pos).upper();
72 response.toInt(&isNum); 107 response.toInt(&isNum);
73 line = data.right(data.length() - pos - 1); 108 line = data.right(data.length() - pos - 1);
74 } else { 109 } else {
75 qWarning("IMAPResponseParser: parseResponse: No response found."); 110 qWarning("IMAPResponseParser: parseResponse: No response found.");
76 return; 111 return;
77 } 112 }
78 113
79 if (response == "OK" && tagged) { 114 if (response == "OK" && tagged) {
80 IMAPResponseStatusResponse status(OK, line); 115 IMAPResponseStatusResponse status(OK, line);
81 status.setResponseCode(getResponseCode(status.comment())); 116 status.setResponseCode(getResponseCode(status.comment()));
82 _iresponse.setStatusResponse(status); 117 _iresponse.setStatusResponse(status);
83 } else if (response == "OK" && !tagged) { 118 } else if (response == "OK" && !tagged) {
84 IMAPResponseOK ok(line, getResponseCode(line)); 119 IMAPResponseOK ok(line, getResponseCode(line));
85 _iresponse.addOK(ok); 120 _iresponse.addOK(ok);
86 } else if (response == "NO" && tagged) { 121 } else if (response == "NO" && tagged) {
87 IMAPResponseStatusResponse status(NO, line); 122 IMAPResponseStatusResponse status(NO, line);
@@ -136,25 +171,25 @@ void IMAPResponseParser::parseResponse(const QString &data, bool tagged)
136 removeLimiters(list[0]); 171 removeLimiters(list[0]);
137 IMAPResponseSTATUS status(list[0]); 172 IMAPResponseSTATUS status(list[0]);
138 173
139 QStringList flags; 174 QStringList flags;
140 parseParenthesizedList(list[1], flags); 175 parseParenthesizedList(list[1], flags);
141 QStringList::Iterator it; 176 QStringList::Iterator it;
142 for (it = flags.begin(); it != flags.end(); it++) { 177 for (it = flags.begin(); it != flags.end(); it++) {
143 if (*it == "MESSAGES") status.setMessages(*(++it)); 178 if (*it == "MESSAGES") status.setMessages(*(++it));
144 else if (*it == "RECENT") status.setRecent(*(++it)); 179 else if (*it == "RECENT") status.setRecent(*(++it));
145 else if (*it == "UIDNEXT") status.setUidnext(*(++it)); 180 else if (*it == "UIDNEXT") status.setUidnext(*(++it));
146 else if (*it == "UIDVALIDITY") status.setUidvalidity(*(++it)); 181 else if (*it == "UIDVALIDITY") status.setUidvalidity(*(++it));
147 else if (*it == "UNSEEN") status.setUnseen(*(++it)); 182 else if (*it == "UNSEEN") status.setUnseen(*(++it));
148 else qWarning("IMAPResponseParser: parseResponse: Unknown status data: " + *(it++) + "|"); 183 else qWarning((QString("IMAPResponseParser: parseResponse: Unknown status data: " )+ *(it++) + "|").latin1());
149 } 184 }
150 _iresponse.addSTATUS(status); 185 _iresponse.addSTATUS(status);
151 } else if (response == "SEARCH") { 186 } else if (response == "SEARCH") {
152 IMAPResponseSEARCH search(QStringList::split(' ', line)); 187 IMAPResponseSEARCH search(QStringList::split(' ', line));
153 _iresponse.addSEARCH(search); 188 _iresponse.addSEARCH(search);
154 } else if (response == "FLAGS") { 189 } else if (response == "FLAGS") {
155 QStringList list; 190 QStringList list;
156 parseParenthesizedList(line, list); 191 parseParenthesizedList(line, list);
157 192
158 IMAPResponseFLAGS flags(parseFlagList(list)); 193 IMAPResponseFLAGS flags(parseFlagList(list));
159 _iresponse.addFLAGS(flags); 194 _iresponse.addFLAGS(flags);
160 } else if (isNum) { 195 } else if (isNum) {
@@ -163,51 +198,62 @@ void IMAPResponseParser::parseResponse(const QString &data, bool tagged)
163 IMAPResponseEXISTS exists(response); 198 IMAPResponseEXISTS exists(response);
164 _iresponse.addEXISTS(exists); 199 _iresponse.addEXISTS(exists);
165 } else if (list[0] == "RECENT") { 200 } else if (list[0] == "RECENT") {
166 IMAPResponseRECENT recent(response); 201 IMAPResponseRECENT recent(response);
167 _iresponse.addRECENT(recent); 202 _iresponse.addRECENT(recent);
168 } else if (list[0] == "EXPUNGE") { 203 } else if (list[0] == "EXPUNGE") {
169 IMAPResponseEXPUNGE expunge(response); 204 IMAPResponseEXPUNGE expunge(response);
170 _iresponse.addEXPUNGE(expunge); 205 _iresponse.addEXPUNGE(expunge);
171 } else if (list[0] == "FETCH") { 206 } else if (list[0] == "FETCH") {
172 IMAPResponseFETCH fetch; 207 IMAPResponseFETCH fetch;
173 QStringList::Iterator it; 208 QStringList::Iterator it;
174 209
210 qDebug ( "Got FETCH\n" );
211
175 QStringList fetchList = splitData(line, true); 212 QStringList fetchList = splitData(line, true);
176 QStringList list; 213 QStringList list;
214
215 qDebug ( "fl [0]=%s, fl [1]=%s, fl[2]=%s\n", fetchList[0].latin1(),fetchList[1].latin1(),fetchList[2].latin1());
216
177 parseParenthesizedList(fetchList[1], list); 217 parseParenthesizedList(fetchList[1], list);
178 218
179 for (it = list.begin(); it != list.end(); it++) { 219 for (it = list.begin(); it != list.end(); it++) {
220 qDebug ( "Checking list[] == %s\n", (*it).latin1());
221
180 if (*it == "BODY") { 222 if (*it == "BODY") {
181 qDebug("IMAPResponseParser: responseParser: got FETCH::BODY"); 223 qDebug("IMAPResponseParser: responseParser: got FETCH::BODY");
182 // XXX 224 // XXX
183 } else if ((*it).find(QRegExp("BODY\\[\\d+\\]")) != -1) { 225 } else if ((*it).find(QRegExp("^BODY\\[\\d+\\]")) != -1) {
184 QString bodydata = *(++it);
185 qDebug("IMAPResponseParser: responseParser: got FETCH::BODY[x]"); 226 qDebug("IMAPResponseParser: responseParser: got FETCH::BODY[x]");
186 227
187 QStringList blist; 228 QString number = ( *it ). mid ( 5, ( *it ). length ( ) - 6 );
188 parseParenthesizedList(bodydata, blist); 229 QString bodydata = *(++it);
230
231 // QStringList blist;
232 // parseParenthesizedList(bodydata, blist);
189 233
190 IMAPResponseBodyPart bodypart; 234 IMAPResponseBodyPart bodypart;
191 QString tmp; 235 // QString tmp;
192 for (unsigned int i = 2; i < blist.count(); i++) { 236 // for (unsigned int i = 2; i < blist.count(); i++) {
193 if (i != 2) tmp += " " + blist[i]; 237 // if (i != 2) tmp += " " + blist[i];
194 else tmp += blist[i]; 238 // else tmp += blist[i];
195 } 239 // }
196 bodypart.setData(tmp); 240 bodypart.setData(bodydata);
241
242 // QString tmp = list[0];
243 // tmp.replace(0, 5, "");
244 // tmp.truncate(blist[0].length() - 1);
245 bodypart.setPart(number);
197 246
198 tmp = list[0]; 247 qDebug("added bodypart [%s]: '%s'\n\n", number.latin1(), bodydata.latin1());
199 tmp.replace(0, 5, "");
200 tmp.truncate(blist[0].length() - 1);
201 bodypart.setPart(tmp);
202 248
203 fetch.addBodyPart(bodypart); 249 fetch.addBodyPart(bodypart);
204 } else if (*it == "BODYSTRUCTURE") { 250 } else if (*it == "BODYSTRUCTURE") {
205 qDebug("IMAPResponseParser: responseParser: got FETCH::BODYSTRUCTURE"); 251 qDebug("IMAPResponseParser: responseParser: got FETCH::BODYSTRUCTURE");
206/* 252/*
207 QString bsdata = *(++it); 253 QString bsdata = *(++it);
208 QStringList bsList; 254 QStringList bsList;
209 parseParenthesizedList(bsdata, bsList); 255 parseParenthesizedList(bsdata, bsList);
210 256
211 IMAPResponseBodystructure bodystructure; 257 IMAPResponseBodystructure bodystructure;
212 QStringList attachml; 258 QStringList attachml;
213 259
@@ -328,121 +374,153 @@ void IMAPResponseParser::parseResponse(const QString &data, bool tagged)
328 // XXX 374 // XXX
329 } else if (*it == "RFC822.SIZE") { 375 } else if (*it == "RFC822.SIZE") {
330 fetch.setRFC822Size(*(++it)); 376 fetch.setRFC822Size(*(++it));
331 } else if (*it == "RFC822.TEXT" || *it == "BODY[TEXT]") { 377 } else if (*it == "RFC822.TEXT" || *it == "BODY[TEXT]") {
332 qDebug("IMAPResponseParser: responseParser: got FETCH::RFC822.TEXT"); 378 qDebug("IMAPResponseParser: responseParser: got FETCH::RFC822.TEXT");
333 // XXX 379 // XXX
334 } else if (*it == "UID") { 380 } else if (*it == "UID") {
335 fetch.setUid(*(++it)); 381 fetch.setUid(*(++it));
336 } 382 }
337 } 383 }
338 _iresponse.addFETCH(fetch); 384 _iresponse.addFETCH(fetch);
339 } 385 }
340 } else qWarning("IMAPResponseParser: parseResponse: Unknown response: " + response + "|"); 386 } else qWarning((QString("IMAPResponseParser: parseResponse: Unknown response: ") + response + "|").latin1());
387
341} 388}
342 389
343QStringList IMAPResponseParser::splitData(const QString &data, bool withBrackets) 390QStringList IMAPResponseParser::splitData(const QString &data, bool withBrackets)
344{ 391{
345 int b = 0; 392 int b = 0;
346 bool a = false, noappend = false, escaped = false; 393 bool a = false, noappend = false, escaped = false;
347 QString temp; 394 QString temp;
348 QStringList list; 395 QStringList list;
349 396
397 qDebug ( "sd: '%s'\n", data.latin1());
398
350 for (unsigned int i = 0; i <= data.length(); i++) { 399 for (unsigned int i = 0; i <= data.length(); i++) {
351 if (withBrackets && data[i] == '(' && !a) b++; 400 if (withBrackets && data[i] == '(' && !a) b++;
352 else if (withBrackets && data[i] == ')' && !a) b--; 401 else if (withBrackets && data[i] == ')' && !a) b--;
353 402
354 if (data[i] == '"' && !escaped) a = !a; 403 if (data[i] == '{' && !escaped && !a ) {
404 qDebug ( "sd: found a {\n" );
405
406 int p = data. find ( '}', i + 1 );
407 int eol = data. find ( '\n', i + 1 );
408
409 if ( p > int( i )) {
410 int len = data. mid ( i + 1, p - i - 1 ). toInt ( );
411
412 qDebug ( "sd: skipping %d bytes\n", len );
413
414 if ( b == 0 ) {
415 temp = data. mid ( eol + 1, len );
416 noappend = false;
417 i = eol + len;
418 continue;
419 }
420 else {
421 temp. append ( '{' );
422 temp. append ( QString::number ( len ));
423 temp. append ( "}\r\n" );
424 temp. append ( data. mid ( eol + 1, len ));
425 i = eol + len;
426 continue;
427 }
428 }
429 }
430
431 if (data[i] == '\"' && !escaped) a = !a;
355 else escaped = false; 432 else escaped = false;
356 433
357 if (data[i] == '\\' && data[i + 1] == '"') escaped = true; 434 if (data[i] == '\\' && data[i + 1] == '\"') escaped = true;
358 435
359 if ((data[i] == ' ' || i == data.length()) && b == 0 && !a) { 436 if ((data[i] == ' ' || i == data.length()) && b == 0 && !a) {
360 list.append(temp); 437 list.append(temp);
361 temp = QString(0); 438 temp = QString::null;
362 if (data[i] == ' ') noappend = true; 439 if (data[i] == ' ') noappend = true;
363 } 440 }
364 441
365 if (!noappend) temp += data[i]; 442 if (!noappend) temp += data[i];
366 noappend = false; 443 noappend = false;
367 } 444 }
368 445
369 return list; 446 return list;
370} 447}
371 448
372void IMAPResponseParser::parseParenthesizedList(const QString &data, QStringList &parsed) 449void IMAPResponseParser::parseParenthesizedList(const QString &data, QStringList &parsed)
373{ 450{
374 QString data_(data); 451 QString data_(data);
375 removeLimiters(data_, '(', ')'); 452 removeLimiters(data_, '(', ')');
376 parsed = splitData(data_, true); 453 parsed = splitData(data_, true);
377} 454}
378 455
379void IMAPResponseParser::splitTagData(const QString &line, QString &tag, QString &data) 456void IMAPResponseParser::splitTagData(const QString &line, QString &tag, QString &data)
380{ 457{
381 int pos; 458 int pos;
382 if ((pos = line.find(' ')) != -1) { 459 if ((pos = line.find(' ')) != -1) {
383 tag = line.left(pos); 460 tag = line.left(pos);
384 data = line.right(line.length() - pos - 1); 461 data = line.right(line.length() - pos - 1);
385 } else qWarning("IMAPResponseParser: splitTagData: tag not found. Line was " + line + "|"); 462 } else qWarning((QString("IMAPResponseParser: splitTagData: tag not found. Line was ") + line + "|").latin1());
386} 463}
387 464
388QString IMAPResponseParser::removeLimiters(QString &string, const QChar &sl, const QChar &el) 465QString IMAPResponseParser::removeLimiters(QString &string, const QChar &sl, const QChar &el)
389{ 466{
390 QString tmpString; 467 QString tmpString;
468 string = string. stripWhiteSpace ( );
469
391 if (string[0] == sl && string[string.length() - 1] == el) { 470 if (string[0] == sl && string[string.length() - 1] == el) {
392 string.truncate(string.length() - 1); 471 string.truncate(string.length() - 1);
393 string.replace(0, 1, ""); 472 string.replace(0, 1, "");
394 473
395 for (unsigned int i = 1; i <= string.length(); i++) { 474 for (unsigned int i = 1; i <= string.length(); i++) {
396 if (string[i - 1] == '\\' && sl == '"') ++i; 475 if (string[i - 1] == '\\' && sl == '\"') ++i;
397 tmpString += string[i - 1]; 476 tmpString += string[i - 1];
398 } 477 }
399 } 478 }
400
401 return tmpString; 479 return tmpString;
402} 480}
403 481
404IMAPResponseEnums::IMAPResponseCode IMAPResponseParser::getResponseCode(const QString &line) 482IMAPResponseEnums::IMAPResponseCode IMAPResponseParser::getResponseCode(const QString &line)
405{ 483{
406 if (line.find(QRegExp((QString) "^\\[.*\\]" + ' ' + ".*")) != -1) { 484 if (line.find(QRegExp((QString) "^\\[.*\\]" + ' ' + ".*")) != -1) {
407 int pos = line.find("] "); 485 int pos = line.find("] ");
408 QString code = line.left(pos + 1).upper(); 486 QString code = line.left(pos + 1).upper();
409 487
410 if (code.find(QRegExp("[ALERT]")) != -1) return ALERT; 488 if (code.find(QRegExp("[ALERT]")) != -1) return ALERT;
411 else if (code.find(QRegExp("[NEWNAME .* .*]")) != -1) return NEWNAME; // XXX 489 else if (code.find(QRegExp("[NEWNAME .* .*]")) != -1) return NEWNAME; // XXX
412 else if (code.find(QRegExp("[PARSE]")) != -1) return PARSE; 490 else if (code.find(QRegExp("[PARSE]")) != -1) return PARSE;
413 else if (code.find(QRegExp("[PERMANENTFLAGS \\d*]")) != -1) return PERMANENTFLAGS; // XXX 491 else if (code.find(QRegExp("[PERMANENTFLAGS \\d*]")) != -1) return PERMANENTFLAGS; // XXX
414 else if (code.find(QRegExp("[READ-ONLY]")) != -1) return READONLY; 492 else if (code.find(QRegExp("[READ-ONLY]")) != -1) return READONLY;
415 else if (code.find(QRegExp("[READ-WRITE]")) != -1) return READWRITE; 493 else if (code.find(QRegExp("[READ-WRITE]")) != -1) return READWRITE;
416 else if (code.find(QRegExp("[TRYCREATE]")) != -1) return TRYCREATE; 494 else if (code.find(QRegExp("[TRYCREATE]")) != -1) return TRYCREATE;
417 else if (code.find(QRegExp("[UIDVALIDITY \\d*]")) != -1) return UIDVALIDITY; // XXX 495 else if (code.find(QRegExp("[UIDVALIDITY \\d*]")) != -1) return UIDVALIDITY; // XXX
418 else if (code.find(QRegExp("[UNSEEN \\d*]")) != -1) return UNSEEN; // XXX 496 else if (code.find(QRegExp("[UNSEEN \\d*]")) != -1) return UNSEEN; // XXX
419 else { 497 else {
420 qWarning("IMAPResponseParser: getResponseCode: Unknown code: " + code + "|"); 498 qWarning((QString("IMAPResponseParser: getResponseCode: Unknown code: ") + code + "|").latin1());
421 return UnknownCode; 499 return UnknownCode;
422 } 500 }
423 } 501 }
424 return NoCode; 502 return NoCode;
425} 503}
426 504
427QValueList<IMAPResponseEnums::IMAPResponseFlags> IMAPResponseParser::parseFlagList(const QStringList &flagList) 505QValueList<IMAPResponseEnums::IMAPResponseFlags> IMAPResponseParser::parseFlagList(const QStringList &flagList)
428{ 506{
429 QValueList<IMAPResponseFlags> flags; 507 QValueList<IMAPResponseFlags> flags;
430 QStringList::ConstIterator it; 508 QStringList::ConstIterator it;
431 for (it = flagList.begin(); it != flagList.end(); it++) { 509 for (it = flagList.begin(); it != flagList.end(); it++) {
432 QString flag = (*it).lower(); 510 QString flag = (*it).lower();
433 if (flag == "\\seen") flags.append(Seen); 511 if (flag == "\\seen") flags.append(Seen);
434 else if (flag == "\\answered") flags.append(Answered); 512 else if (flag == "\\answered") flags.append(Answered);
435 else if (flag == "\\flagged") flags.append(Flagged); 513 else if (flag == "\\flagged") flags.append(Flagged);
436 else if (flag == "\\deleted") flags.append(Deleted); 514 else if (flag == "\\deleted") flags.append(Deleted);
437 else if (flag == "\\draft") flags.append(Draft); 515 else if (flag == "\\draft") flags.append(Draft);
438 else if (flag == "\\recent") flags.append(Recent); 516 else if (flag == "\\recent") flags.append(Recent);
439 else if (flag == "\\noinferiors") flags.append(Noinferiors); 517 else if (flag == "\\noinferiors") flags.append(Noinferiors);
440 else if (flag == "\\noselect") flags.append(Noselect); 518 else if (flag == "\\noselect") flags.append(Noselect);
441 else if (flag == "\\marked") flags.append(Marked); 519 else if (flag == "\\marked") flags.append(Marked);
442 else if (flag == "\\unmarked") flags.append(Unmarked); 520 else if (flag == "\\unmarked") flags.append(Unmarked);
443 else if (flag.isEmpty()) { } 521 else if (flag.isEmpty()) { }
444 else qWarning("IMAPResponseParser: parseFlagList: Unknown flag: " + *it + "|"); 522 else qWarning((QString("IMAPResponseParser: parseFlagList: Unknown flag: ") + *it + "|").latin1());
445 } 523 }
446 return flags; 524 return flags;
447} 525}
448 526