24 #include "imapcommand.h"
25 #include <kimap/rfccodecs.h>
58 using namespace KIMAP;
73 aParameter = parameter;
116 if ( mId.isEmpty() ) {
136 mResultInfo = result;
148 aParameter = parameter;
154 if ( parameter().isEmpty() ) {
155 return id() +
' ' + command() +
"\r\n";
157 return id() +
' ' + command() +
' ' + parameter() +
"\r\n";
164 return CommandPtr(
new imapCommand(
"NOOP",
"" ) );
170 return CommandPtr( clientFetch( uid, uid, fields, nouid ) );
177 QString uid = QString::number( fromUid );
179 if ( fromUid != toUid ) {
181 if ( toUid < fromUid ) {
184 uid += QString::number( toUid );
187 return clientFetch( uid, fields, nouid );
194 return CommandPtr(
new imapCommand( nouid ?
"FETCH" :
"UID FETCH",
195 sequence +
" (" + fields +
')' ) );
202 return CommandPtr(
new imapCommand( lsub ?
"LSUB" :
"LIST",
203 QString(
"\"" ) + KIMAP::encodeImapFolderName( reference ) +
204 "\" \"" + KIMAP::encodeImapFolderName( path ) +
"\"" ) );
215 QString(
"\"" ) + KIMAP::encodeImapFolderName( path ) +
"\"" ) );
221 return CommandPtr(
new imapCommand(
"CLOSE",
"" ) );
228 return CommandPtr(
new imapCommand( nouid ?
"COPY" :
"UID COPY",
229 sequence +
" \"" + KIMAP::encodeImapFolderName( box ) +
"\"" ) );
237 if ( !flags.isEmpty() ) {
238 tmp =
'(' + flags +
") ";
240 tmp +=
'{' + QString::number( size ) +
'}';
243 "\"" + KIMAP::encodeImapFolderName( box ) +
"\" " + tmp ) );
250 QString(
"\"" ) + KIMAP::encodeImapFolderName( path ) +
251 "\" (" + parameters +
")" ) );
258 QString(
"\"" ) + KIMAP::encodeImapFolderName( path ) +
"\"" ) );
265 QString(
"\"" ) + KIMAP::encodeImapFolderName( path ) +
"\"" ) );
272 QString(
"\"" ) + KIMAP::encodeImapFolderName( path ) +
"\"" ) );
279 QString(
"\"" ) + KIMAP::encodeImapFolderName( path ) +
"\"" ) );
285 return CommandPtr(
new imapCommand(
"EXPUNGE", QString(
"" ) ) );
292 QString(
"\"" ) + KIMAP::encodeImapFolderName( src ) +
293 "\" \"" + KIMAP::encodeImapFolderName( dest ) +
"\"" ) );
299 return CommandPtr(
new imapCommand( nouid ?
"SEARCH" :
"UID SEARCH", search ) );
304 const QString & data,
bool nouid)
306 return CommandPtr(
new imapCommand( nouid ?
"STORE" :
"UID STORE",
307 set +
' ' + item +
" (" + data +
')' ) );
313 return CommandPtr(
new imapCommand(
"LOGOUT",
"" ) );
319 return CommandPtr(
new imapCommand(
"STARTTLS",
"" ) );
325 return CommandPtr(
new imapCommand(
"SETACL", QString(
"\"" ) + KIMAP::encodeImapFolderName( box )
326 +
"\" \"" + KIMAP::encodeImapFolderName( user )
327 +
"\" \"" + KIMAP::encodeImapFolderName( acl ) +
"\"" ) );
333 return CommandPtr(
new imapCommand(
"DELETEACL", QString(
"\"" ) + KIMAP::encodeImapFolderName( box )
334 +
"\" \"" + KIMAP::encodeImapFolderName( user )
341 return CommandPtr(
new imapCommand(
"GETACL", QString(
"\"" ) + KIMAP::encodeImapFolderName( box )
348 return CommandPtr(
new imapCommand(
"LISTRIGHTS", QString(
"\"" ) + KIMAP::encodeImapFolderName( box )
349 +
"\" \"" + KIMAP::encodeImapFolderName( user )
356 return CommandPtr(
new imapCommand(
"MYRIGHTS", QString(
"\"" ) + KIMAP::encodeImapFolderName( box )
363 QString parameter = QString(
"\"" ) + KIMAP::encodeImapFolderName( box )
364 +
"\" \"" + KIMAP::encodeImapFolderName( entry )
366 for ( QMap<QString, QString>::ConstIterator it = attributes.begin(); it != attributes.end(); ++it ) {
368 parameter += KIMAP::encodeImapFolderName( it.key() );
369 parameter +=
"\" \"";
370 parameter += KIMAP::encodeImapFolderName( it.value() );
374 parameter[parameter.length() - 1] =
')';
376 return CommandPtr(
new imapCommand(
"SETANNOTATION", parameter ) );
382 QString parameter = QString(
"\"" ) + KIMAP::encodeImapFolderName( box )
383 +
"\" \"" + KIMAP::encodeImapFolderName( entry )
385 if ( attributeNames.count() == 1 ) {
386 parameter +=
"\"" + KIMAP::encodeImapFolderName( attributeNames.first() ) +
'"';
389 for ( QStringList::ConstIterator it = attributeNames.begin(); it != attributeNames.end(); ++it ) {
390 parameter +=
"\"" + KIMAP::encodeImapFolderName( *it ) +
"\" ";
393 parameter[parameter.length() - 1] =
')';
395 return CommandPtr(
new imapCommand(
"GETANNOTATION", parameter ) );
401 return CommandPtr(
new imapCommand(
"NAMESPACE",
"" ) );
407 QString parameter = QString(
"\"" ) + KIMAP::encodeImapFolderName( box ) +
'"';
408 return CommandPtr(
new imapCommand(
"GETQUOTAROOT", parameter ) );
414 return CommandPtr(
new imapCommand( command, arguments ) );