qtmobility/plugins/contacts/qtcontacts-tracker/trackerchangelistener.h
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 11 06b8e2af4411
--- a/qtmobility/plugins/contacts/qtcontacts-tracker/trackerchangelistener.h	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/plugins/contacts/qtcontacts-tracker/trackerchangelistener.h	Mon May 03 13:18:40 2010 +0300
@@ -44,46 +44,17 @@
 
 #include <QObject>
 #include <QHash>
+#include <qcontact.h>
 #include <QSharedPointer>
-
 #include <QtTracker/QLive>
 #include <QtTracker/Tracker>
-
-#include <qmobilityglobal.h>
-#include <qcontact.h>
+#include <qcontactmanagerengine.h>
 
 QTM_USE_NAMESPACE
 
 QContactLocalId url2UniqueId(const QString &contactUrl);
 
 /*!
- * Helper class to handle multiple async queries at the same time inside TrackerChangeListener.
- * This class is designed to be generic, and initially used to get all contacts that correspond
- * to list of IMAccounts. When we get signal that multiple IMAccounts have changed, we read
- * all contacts and emit signal contacts changed for them.
- *
- * Usage: construct AsyncQuery with RDFSelect query. When signal queryReady(AsyncQuery *self)
- * is received, read data from rows in self->nodes (self-nodes()->rowCount() ...)
- *
- * Intention: The class has been created to wrap LiveNodes::modelUpdated signal,
- * and to know which query it corresponds to (not possible to fetch it from sender()).
- * \sa queryReady(AsyncQuery *)
- */
-class AsyncQuery: public QObject
-{
-    Q_OBJECT
-public:
-    AsyncQuery(SopranoLive::RDFSelect selectQuery);
-    SopranoLive::LiveNodes nodes;
-
-private slots:
-    void queryReady();
-signals:
-    // emitted when modelUpdated() from LiveNodes related to selectQuery is received
-    void queryReady(AsyncQuery *self);
-};
-
-/*!
  * \class TrackerChangeListener
  * \brief Translates signals from tracker and to contact signals
  * Listen for tracker signals, computes which contacts are and what si changed and emits
@@ -94,7 +65,7 @@
 {
     Q_OBJECT
 public:
-    TrackerChangeListener(QObject *parent=0);
+    explicit TrackerChangeListener(QContactManagerEngine *engine, QObject *parent);
     virtual ~TrackerChangeListener();
 
 signals:
@@ -104,16 +75,16 @@
     void contactsRemoved(const QList<QContactLocalId>& contactIds);
 
 private slots:
-    void subjectsAdded(const QStringList &subjects);
-    void subjectsRemoved(const QStringList &subjects);
-    void subjectsChanged(const QStringList &subjects);
+    void contactsAdded(const QStringList &subjects);
+    void contactsRemoved(const QStringList &subjects);
+    void contactsChanged(const QStringList &subjects);
+    void imAccountsChanged(const QStringList &subjects);
+    void imAddressesChanged(const QStringList &subjects);
 private:
     SopranoLive::BackEnds::Tracker::ClassUpdateSignaler *signaler_contact;
     SopranoLive::BackEnds::Tracker::ClassUpdateSignaler *signaler_imaccount;
-
-    void connectSignals(SopranoLive::BackEnds::Tracker::ClassUpdateSignaler *signaler);
-
-    QHash<AsyncQuery*, QSharedPointer<AsyncQuery> > pendingQueries;
+    SopranoLive::BackEnds::Tracker::ClassUpdateSignaler *signaler_imaddress;
+    QContactManagerEngine *engine;
 };