20 #include "collectioncreatejob.h"
21 #include "imapparser_p.h"
22 #include "protocolhelper_p.h"
28 using namespace Akonadi;
30 class Akonadi::CollectionCreateJobPrivate :
public JobPrivate
42 :
Job( new CollectionCreateJobPrivate( this ), parent )
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 ) {
67 command +=
" CREATE " + ImapParser::quote( d->mCollection.name().toUtf8() ) +
' ';
68 if ( d->mCollection.parentCollection().id() >= 0 ) {
69 command += QByteArray::number( d->mCollection.parentCollection().id() );
71 command += ImapParser::quote( d->mCollection.parentCollection().remoteId().toUtf8() );
74 if ( !d->mCollection.contentMimeTypes().isEmpty() ) {
75 QList<QByteArray> cList;
76 foreach (
const QString &s, d->mCollection.contentMimeTypes() ) {
77 cList << s.toLatin1();
79 command +=
"MIMETYPE (" + ImapParser::join( cList, QByteArray(
" ") ) +
')';
81 command +=
" REMOTEID " + ImapParser::quote( d->mCollection.remoteId().toUtf8() );
82 command +=
" REMOTEREVISION " + ImapParser::quote( d->mCollection.remoteRevision().toUtf8() );
83 command +=
" VIRTUAL " + QByteArray::number( d->mCollection.isVirtual() );
84 foreach (
Attribute *attr, d->mCollection.attributes() ) {
85 command +=
' ' + attr->
type() +
' ' + ImapParser::quote( attr->
serialized() );
89 d->writeData( command );
97 return d->mCollection;
112 col.
setName( d->mCollection.name() );
116 d->mCollection = col;