Plasma
akonadiengine.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef AKONADIENGINE_H
00023 #define AKONADIENGINE_H
00024
00025 #include <plasma/dataengine.h>
00026
00027 #include <Akonadi/Item>
00028 #include <Akonadi/Monitor>
00029
00030 #include <kmime/kmime_message.h>
00031 #include <kabc/addressee.h>
00032
00033 #include <boost/shared_ptr.hpp>
00034 typedef boost::shared_ptr<KMime::Message> MessagePtr;
00035
00036 class KJob;
00037
00038 class AkonadiEngine : public Plasma::DataEngine
00039 {
00040 Q_OBJECT
00041
00042 public:
00043 AkonadiEngine( QObject* parent, const QVariantList& args );
00044 ~AkonadiEngine();
00045 QStringList sources() const;
00046
00047 protected:
00048 bool sourceRequestEvent(const QString &name);
00049
00050 private slots:
00051
00052 void stopMonitor(const QString &name);
00053
00054 void fetchEmailCollectionDone(KJob* job);
00055 void fetchContactCollectionDone(KJob* job);
00056 void fetchMicroBlogDone(KJob* job);
00057
00058 void emailItemsReceived(const Akonadi::Item::List &items);
00059
00060 void fetchEmailCollectionsDone(KJob* job);
00061 void fetchContactCollectionsDone(KJob* job);
00062 void fetchMicroBlogCollectionsDone(KJob* job);
00063
00064 void emailItemAdded(const Akonadi::Item &item, const QString &collection = QString());
00065 void contactItemAdded(const Akonadi::Item & item);
00066 void microBlogItemAdded(const Akonadi::Item &item);
00067
00068 private:
00069 void initEmailMonitor();
00070 void initContactMonitor();
00071 void initMicroBlogMonitor();
00072
00073 void printMessage(MessagePtr msg);
00074 void printContact(const QString &source, const KABC::Addressee &a);
00075
00076 Akonadi::Monitor* m_emailMonitor;
00077 Akonadi::Monitor* m_contactMonitor;
00078 Akonadi::Monitor* m_microBlogMonitor;
00079
00080 QHash<KJob*, QString> m_jobCollections;
00081 };
00082
00083 K_EXPORT_PLASMA_DATAENGINE(akonadi, AkonadiEngine)
00084
00085 #endif