43 #include "imapparser.h"
47 imapInfo::imapInfo ():count_ (0),
55 countAvailable_ (false),
56 recentAvailable_ (false),
57 unseenAvailable_ (false),
58 uidValidityAvailable_ (false),
59 uidNextAvailable_ (false),
60 flagsAvailable_ (false),
61 permanentFlagsAvailable_ (false), readWriteAvailable_ (false)
65 imapInfo::imapInfo (
const imapInfo & mi):count_ (mi.count_),
68 uidValidity_ (mi.uidValidity_),
69 uidNext_ (mi.uidNext_),
71 permanentFlags_ (mi.permanentFlags_),
72 readWrite_ (mi.readWrite_),
73 countAvailable_ (mi.countAvailable_),
74 recentAvailable_ (mi.recentAvailable_),
75 unseenAvailable_ (mi.unseenAvailable_),
76 uidValidityAvailable_ (mi.uidValidityAvailable_),
77 uidNextAvailable_ (mi.uidNextAvailable_),
78 flagsAvailable_ (mi.flagsAvailable_),
79 permanentFlagsAvailable_ (mi.permanentFlagsAvailable_),
80 readWriteAvailable_ (mi.readWriteAvailable_)
84 imapInfo & imapInfo::operator = (
const imapInfo & mi)
94 uidValidity_ = mi.uidValidity_;
95 uidNext_ = mi.uidNext_;
97 permanentFlags_ = mi.permanentFlags_;
98 readWrite_ = mi.readWrite_;
99 countAvailable_ = mi.countAvailable_;
100 recentAvailable_ = mi.recentAvailable_;
101 unseenAvailable_ = mi.unseenAvailable_;
102 uidValidityAvailable_ = mi.uidValidityAvailable_;
103 uidNextAvailable_ = mi.uidNextAvailable_;
104 flagsAvailable_ = mi.flagsAvailable_;
105 permanentFlagsAvailable_ = mi.permanentFlagsAvailable_;
106 readWriteAvailable_ = mi.readWriteAvailable_;
111 imapInfo::imapInfo (
const QStringList & list):count_ (0),
119 countAvailable_ (false),
120 recentAvailable_ (false),
121 unseenAvailable_ (false),
122 uidValidityAvailable_ (false),
123 uidNextAvailable_ (false),
124 flagsAvailable_ (false),
125 permanentFlagsAvailable_ (false), readWriteAvailable_ (false)
130 line.truncate( line.length() - 2 );
131 QStringList tokens( line.split(
' ', QString::SkipEmptyParts ) );
133 kDebug( 7116 ) <<
"Processing:" << line;
134 if ( tokens[0] !=
"*" ) {
138 if ( tokens[1] ==
"OK" ) {
139 if ( tokens[2] ==
"[UNSEEN" ) {
140 setUnseen( tokens[3].left( tokens[3].length() - 1 ).toULong() );
141 }
else if ( tokens[2] ==
"[UIDVALIDITY" ) {
142 setUidValidity( tokens[3].left( tokens[3].length() - 1 ).toULong() );
143 }
else if ( tokens[2] ==
"[UIDNEXT" ) {
144 setUidNext( tokens[3].left( tokens[3].length() - 1 ).toULong() );
145 }
else if ( tokens[2] ==
"[PERMANENTFLAGS" ) {
146 int flagsStart = line.indexOf(
'(' );
147 int flagsEnd = line.indexOf(
')' );
149 kDebug( 7116 ) <<
"Checking permFlags from" << flagsStart <<
" to" << flagsEnd;
150 if ( ( -1 != flagsStart ) && ( -1 != flagsEnd ) && flagsStart < flagsEnd ) {
151 setPermanentFlags( _flags( line.mid( flagsStart, flagsEnd ).toLatin1() ) );
153 }
else if ( tokens[2] ==
"[READ-WRITE" ) {
154 setReadWrite(
true );
155 }
else if ( tokens[2] ==
"[READ-ONLY" ) {
156 setReadWrite(
false );
158 kDebug( 7116 ) <<
"unknown token2:" << tokens[2];
160 }
else if ( tokens[1] ==
"FLAGS" ) {
161 int flagsStart = line.indexOf(
'(' );
162 int flagsEnd = line.indexOf(
')' );
164 if ( ( -1 != flagsStart ) && ( -1 != flagsEnd ) && flagsStart < flagsEnd ) {
165 setFlags( _flags( line.mid( flagsStart, flagsEnd ).toLatin1() ) );
168 if ( tokens[2] ==
"EXISTS" ) {
169 setCount( tokens[1].toULong() );
170 }
else if ( tokens[2] ==
"RECENT" ) {
171 setRecent( tokens[1].toULong() );
173 kDebug( 7116 ) <<
"unknown token1/2:" << tokens[1] << tokens[2];
179 ulong imapInfo::_flags(
const QByteArray &inFlags )
183 flagsString.data = inFlags;
184 if ( flagsString.isEmpty() ) {
188 if ( flagsString[0] ==
'(' ) {
192 while ( !flagsString.isEmpty() && flagsString[0] !=
')' ) {
197 }
else if ( 0 != entry.
contains(
"\\SEEN" ) ) {
199 }
else if ( 0 != entry.
contains(
"\\ANSWERED" ) ) {
201 }
else if ( 0 != entry.
contains(
"\\FLAGGED" ) ) {
203 }
else if ( 0 != entry.
contains(
"\\DELETED" ) ) {
205 }
else if ( 0 != entry.
contains(
"\\DRAFT" ) ) {
207 }
else if ( 0 != entry.
contains(
"\\RECENT" ) ) {
209 }
else if ( 0 != entry.
contains(
"\\*" ) ) {
213 }
else if ( entry.
contains(
"KMAILFORWARDED" ) || entry.
contains(
"$FORWARDED" ) ) {
214 flags = flags | Forwarded;
216 flags = flags | Todo;
217 }
else if ( entry.
contains(
"KMAILWATCHED" ) || entry.
contains(
"$WATCHED" ) ) {
218 flags = flags | Watched;
219 }
else if ( entry.
contains(
"KMAILIGNORED" ) || entry.
contains(
"$IGNORED" ) ) {
220 flags = flags | Ignored;
QByteArray toUpper() const
a string used during parsing the string allows you to move the effective start of the string using st...
bool contains(char ch) const