00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef AKONADI_ITEMMONITOR_P_H
00021 #define AKONADI_ITEMMONITOR_P_H
00022
00023 #include <QtCore/QObject>
00024
00025 #include <akonadi/itemfetchjob.h>
00026 #include <akonadi/monitor.h>
00027
00028 namespace Akonadi {
00029
00033 class ItemMonitor::Private : public QObject
00034 {
00035 Q_OBJECT
00036
00037 public:
00038 Private( ItemMonitor *parent )
00039 : QObject( 0 ),
00040 mParent( parent ), mMonitor( new Monitor() )
00041 {
00042 connect( mMonitor, SIGNAL( itemChanged( const Akonadi::Item&, const QSet<QByteArray>& ) ),
00043 SLOT( slotItemChanged( const Akonadi::Item&, const QSet<QByteArray>& ) ) );
00044 connect( mMonitor, SIGNAL( itemRemoved( const Akonadi::Item& ) ),
00045 SLOT( slotItemRemoved( const Akonadi::Item& ) ) );
00046 }
00047
00048 ~Private()
00049 {
00050 delete mMonitor;
00051 }
00052
00053 ItemMonitor *mParent;
00054 Item mItem;
00055 Monitor *mMonitor;
00056
00057 private Q_SLOTS:
00058 void slotItemChanged( const Akonadi::Item &item, const QSet<QByteArray>& )
00059 {
00060 mItem.apply( item );
00061 mParent->itemChanged( item );
00062 }
00063
00064 void slotItemRemoved( const Akonadi::Item& )
00065 {
00066 mItem = Item();
00067 mParent->itemRemoved();
00068 }
00069
00070 void initialFetchDone( KJob *job )
00071 {
00072 if ( job->error() )
00073 return;
00074
00075 ItemFetchJob *fetchJob = qobject_cast<ItemFetchJob*>( job );
00076
00077 if ( !fetchJob->items().isEmpty() ) {
00078 mItem = fetchJob->items().first();
00079 mParent->itemChanged( mItem );
00080 }
00081 }
00082 };
00083
00084 }
00085
00086 #endif