00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "itemcopyjob.h"
00021
00022 #include "collection.h"
00023 #include "imapset_p.h"
00024 #include "job_p.h"
00025
00026 using namespace Akonadi;
00027
00028 class Akonadi::ItemCopyJobPrivate : public JobPrivate
00029 {
00030 public:
00031 ItemCopyJobPrivate( ItemCopyJob *parent )
00032 : JobPrivate( parent )
00033 {
00034 }
00035
00036 Item::List mItems;
00037 Collection mTarget;
00038 };
00039
00040 ItemCopyJob::ItemCopyJob(const Item & item, const Collection & target, QObject * parent)
00041 : Job( new ItemCopyJobPrivate( this ), parent )
00042 {
00043 Q_D( ItemCopyJob );
00044
00045 d->mItems << item;
00046 d->mTarget = target;
00047 }
00048
00049 ItemCopyJob::ItemCopyJob(const Item::List & items, const Collection & target, QObject * parent)
00050 : Job( new ItemCopyJobPrivate( this ), parent )
00051 {
00052 Q_D( ItemCopyJob );
00053
00054 d->mItems = items;
00055 d->mTarget = target;
00056 }
00057
00058 ItemCopyJob::~ItemCopyJob()
00059 {
00060 }
00061
00062 void ItemCopyJob::doStart()
00063 {
00064 Q_D( ItemCopyJob );
00065
00066 QVector<Item::Id> ids;
00067 foreach ( const Item &item, d->mItems )
00068 ids << item.id();
00069 ImapSet set;
00070 set.add( ids );
00071 QByteArray cmd( d->newTag() );
00072 cmd += " COPY ";
00073 cmd += set.toImapSequenceSet();
00074 cmd += ' ';
00075 cmd += QByteArray::number( d->mTarget.id() );
00076 cmd += '\n';
00077 d->writeData( cmd );
00078 }
00079
00080 #include "itemcopyjob.moc"