20 #include "collectioncreatejob.h"
21 #include "imapparser_p.h"
22 #include "protocolhelper_p.h"
28 using namespace Akonadi;
30 class Akonadi::CollectionCreateJobPrivate :
public JobPrivate
33 CollectionCreateJobPrivate( CollectionCreateJob *parent )
34 : JobPrivate( parent )
38 Collection mCollection;
41 CollectionCreateJob::CollectionCreateJob(
const Collection &collection, QObject * parent )
42 :
Job( new CollectionCreateJobPrivate( this ), parent )
46 d->mCollection = collection;
49 CollectionCreateJob::~CollectionCreateJob( )
53 void CollectionCreateJob::doStart( )
56 if ( d->mCollection.parentCollection().id() < 0 && d->mCollection.parentCollection().remoteId().isEmpty() ) {
58 setErrorText( i18n(
"Invalid parent" ) );
63 QByteArray command = d->newTag();
64 if ( d->mCollection.parentCollection().id() < 0 )
66 command +=
" CREATE " + ImapParser::quote( d->mCollection.name().toUtf8() ) +
' ';
67 if ( d->mCollection.parentCollection().id() >= 0 )
68 command += QByteArray::number( d->mCollection.parentCollection().id() );
70 command += ImapParser::quote( d->mCollection.parentCollection().remoteId().toUtf8() );
72 if ( !d->mCollection.contentMimeTypes().isEmpty() )
74 QList<QByteArray> cList;
75 foreach (
const QString &s, d->mCollection.contentMimeTypes() ) cList << s.toLatin1();
76 command +=
"MIMETYPE (" + ImapParser::join( cList, QByteArray(
" ") ) +
')';
78 command +=
" REMOTEID " + ImapParser::quote( d->mCollection.remoteId().toUtf8() );
79 command +=
" REMOTEREVISION " + ImapParser::quote( d->mCollection.remoteRevision().toUtf8() );
80 foreach (
Attribute* attr, d->mCollection.attributes() )
81 command +=
' ' + attr->
type() +
' ' + ImapParser::quote( attr->
serialized() );
82 command +=
' ' + ProtocolHelper::cachePolicyToByteArray( d->mCollection.cachePolicy() );
84 d->writeData( command );
92 return d->mCollection;
95 void CollectionCreateJob::doHandleResponse(
const QByteArray & tag,
const QByteArray & data)
101 ProtocolHelper::parseCollection( data, col );
106 col.
setName( d->mCollection.name() );
109 d->mCollection = col;
111 Job::doHandleResponse( tag, data );
115 #include "collectioncreatejob.moc"