00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "transportresourcebase.h"
00021 #include "transportresourcebase_p.h"
00022
00023 #include "transportadaptor.h"
00024
00025 #include <akonadi/itemfetchjob.h>
00026 #include <akonadi/itemfetchscope.h>
00027
00028 #include <QtDBus/QDBusConnection>
00029
00030 using namespace Akonadi;
00031
00032 TransportResourceBasePrivate::TransportResourceBasePrivate( TransportResourceBase *qq )
00033 : QObject(), q( qq )
00034 {
00035 new Akonadi__TransportAdaptor( this );
00036 QDBusConnection::sessionBus().registerObject( QLatin1String( "/Transport" ),
00037 this, QDBusConnection::ExportAdaptors );
00038 }
00039
00040 void TransportResourceBasePrivate::send( Item::Id id )
00041 {
00042 ItemFetchJob *job = new ItemFetchJob( Item( id ) );
00043 job->fetchScope().fetchFullPayload();
00044 job->setProperty( "id", QVariant( id ) );
00045 connect( job, SIGNAL( result( KJob* ) ), SLOT( fetchResult( KJob* ) ) );
00046 }
00047
00048 void TransportResourceBasePrivate::fetchResult( KJob *job )
00049 {
00050 if ( job->error() ) {
00051 const Item::Id id = job->property( "id" ).toLongLong();
00052 emit transportResult( id, (int)TransportResourceBase::TransportFailed, job->errorText() );
00053 return;
00054 }
00055
00056 ItemFetchJob *fetchJob = qobject_cast<ItemFetchJob*>( job );
00057 Q_ASSERT( fetchJob );
00058
00059 const Item item = fetchJob->items().first();
00060 q->sendItem( item );
00061 }
00062
00063 TransportResourceBase::TransportResourceBase()
00064 : d( new TransportResourceBasePrivate( this ) )
00065 {
00066 }
00067
00068 TransportResourceBase::~TransportResourceBase()
00069 {
00070 delete d;
00071 }
00072
00073 void TransportResourceBase::itemSent( const Item &item,
00074 TransportResult result,
00075 const QString &message )
00076 {
00077 emit d->transportResult( item.id(), (int)result, message );
00078 }
00079
00080 #include "transportresourcebase_p.moc"