00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "collectionselectjob_p.h"
00021
00022 #include "job_p.h"
00023 #include "protocol_p.h"
00024 #include <akonadi/private/imapparser_p.h>
00025
00026 #include <QtCore/QDebug>
00027 #include <KLocale>
00028 using namespace Akonadi;
00029
00030 class Akonadi::CollectionSelectJobPrivate : public JobPrivate
00031 {
00032 public:
00033 CollectionSelectJobPrivate( CollectionSelectJob *parent )
00034 : JobPrivate( parent )
00035 {
00036 }
00037
00038 Collection mCollection;
00039 };
00040
00041 CollectionSelectJob::CollectionSelectJob( const Collection &collection, QObject *parent )
00042 : Job( new CollectionSelectJobPrivate( this ), parent )
00043 {
00044 Q_D( CollectionSelectJob );
00045
00046 d->mCollection = collection;
00047 }
00048
00049 CollectionSelectJob::~CollectionSelectJob( )
00050 {
00051 }
00052
00053 void CollectionSelectJob::doStart( )
00054 {
00055 Q_D( CollectionSelectJob );
00056
00057 if ( d->mCollection.isValid() ) {
00058 QByteArray command( d->newTag() + " SELECT SILENT " );
00059 d->writeData( command + QByteArray::number( d->mCollection.id() ) + '\n' );
00060 } else if ( !d->mCollection.remoteId().isEmpty() ) {
00061 QByteArray command( d->newTag() + " " AKONADI_CMD_RID " SELECT SILENT " );
00062 d->writeData( command + ImapParser::quote( d->mCollection.remoteId().toUtf8() ) + '\n' );
00063 } else {
00064 setError( Unknown );
00065 setErrorText( i18n( "Invalid collection specified" ) );
00066 emitResult();
00067 }
00068 }
00069
00070 #include "collectionselectjob_p.moc"