Browse Source

Changed the custom object type from QObject* to QVariant.

Sascha Zelzer 14 years ago
parent
commit
89f0984a84

+ 10 - 10
Libs/PluginFramework/ctkPluginAbstractTracked.cpp

@@ -145,7 +145,7 @@ void ctkPluginAbstractTracked<Item,Related>::close()
 template<class Item, class Related>
 void ctkPluginAbstractTracked<Item,Related>::track(Item item, Related related)
 {
-  QObject* object = 0;
+  QVariant object;
   {
     QMutexLocker lock(this);
     if (closed)
@@ -153,7 +153,7 @@ void ctkPluginAbstractTracked<Item,Related>::track(Item item, Related related)
       return;
     }
     object = tracked.value(item);
-    if (object == 0)
+    if (object.isNull())
     { /* we are not tracking the item */
       if (adding.contains(item))
       {
@@ -176,7 +176,7 @@ void ctkPluginAbstractTracked<Item,Related>::track(Item item, Related related)
     }
   }
 
-  if (object == 0)
+  if (object.isNull())
   { /* we are not tracking the item */
     trackAdding(item, related);
   }
@@ -194,7 +194,7 @@ void ctkPluginAbstractTracked<Item,Related>::track(Item item, Related related)
 template<class Item, class Related>
 void ctkPluginAbstractTracked<Item,Related>::untrack(Item item, Related related)
 {
-  QObject* object = 0;
+  QVariant object;
   {
     QMutexLocker lock(this);
     if (initial.removeOne(item))
@@ -227,7 +227,7 @@ void ctkPluginAbstractTracked<Item,Related>::untrack(Item item, Related related)
                      * must remove from tracker before
                      * calling customizer callback
                      */
-    if (object == 0)
+    if (object.isNull())
     { /* are we actually tracking the item */
       return;
     }
@@ -252,7 +252,7 @@ int ctkPluginAbstractTracked<Item,Related>::size() const
 }
 
 template<class Item, class Related>
-QObject* ctkPluginAbstractTracked<Item,Related>::getCustomizedObject(Item item) const
+QVariant ctkPluginAbstractTracked<Item,Related>::getCustomizedObject(Item item) const
 {
   return tracked.value(item);
 }
@@ -276,7 +276,7 @@ int ctkPluginAbstractTracked<Item,Related>::getTrackingCount() const
 }
 
 template<class Item, class Related>
-bool ctkPluginAbstractTracked<Item,Related>::customizerAddingFinal(Item item, QObject* custom)
+bool ctkPluginAbstractTracked<Item,Related>::customizerAddingFinal(Item item, const QVariant& custom)
 {
   QMutexLocker lock(this);
   if (adding.removeOne(item) && !closed)
@@ -285,7 +285,7 @@ bool ctkPluginAbstractTracked<Item,Related>::customizerAddingFinal(Item item, QO
      * if the item was not untracked during the customizer
      * callback
      */
-    if (custom != 0)
+    if (!custom.isNull())
     {
       tracked.insert(item, custom);
       modified(); /* increment modification count */
@@ -306,7 +306,7 @@ void ctkPluginAbstractTracked<Item,Related>::trackAdding(Item item, Related rela
   {
     qDebug() << "ctkPluginAbstractTracked::trackAdding:" << item;
   }
-  QObject* object = 0;
+  QVariant object;
   bool becameUntracked = false;
   /* Call customizer outside of synchronized region */
   try
@@ -327,7 +327,7 @@ void ctkPluginAbstractTracked<Item,Related>::trackAdding(Item item, Related rela
   /*
    * The item became untracked during the customizer callback.
    */
-  if (becameUntracked && (object != 0))
+  if (becameUntracked && (!object.isNull()))
   {
     if (DEBUG)
     {

+ 7 - 6
Libs/PluginFramework/ctkPluginAbstractTracked_p.h

@@ -27,6 +27,7 @@
 #include <QMutex>
 #include <QWaitCondition>
 #include <QLinkedList>
+#include <QVariant>
 
 /**
  * Abstract class to track items. If a Tracker is reused (closed then reopened),
@@ -119,7 +120,7 @@ public:
    *
    * @GuardedBy this
    */
-  QObject* getCustomizedObject(Item item) const;
+  QVariant getCustomizedObject(Item item) const;
 
   /**
    * Return the list of tracked items.
@@ -158,7 +159,7 @@ public:
    * @return Customized object for the tracked item or <code>null</code> if
    *         the item is not to be tracked.
    */
-  virtual QObject* customizerAdding(Item item, Related related) = 0;
+  virtual QVariant customizerAdding(Item item, Related related) = 0;
 
   /**
    * Call the specific customizer modified method. This method must not be
@@ -169,7 +170,7 @@ public:
    * @param object Customized object for the tracked item.
    */
   virtual void customizerModified(Item item, Related related,
-      QObject* object) = 0;
+      QVariant object) = 0;
 
   /**
    * Call the specific customizer removed method. This method must not be
@@ -180,7 +181,7 @@ public:
    * @param object Customized object for the tracked item.
    */
   virtual void customizerRemoved(Item item, Related related,
-      QObject* object) = 0;
+      QVariant object) = 0;
 
   /**
    * List of items in the process of being added. This is used to deal with
@@ -244,7 +245,7 @@ private:
    *
    * @GuardedBy this
    */
-  QHash<Item, QObject*> tracked;
+  QHash<Item, QVariant> tracked;
 
   /**
    * Modification count. This field is initialized to zero and incremented by
@@ -254,7 +255,7 @@ private:
    */
   QAtomicInt trackingCount;
 
-  bool customizerAddingFinal(Item item, QObject* custom);
+  bool customizerAddingFinal(Item item, const QVariant& custom);
 
 };
 

+ 1 - 1
Libs/PluginFramework/ctkServiceTracker.cpp

@@ -295,7 +295,7 @@ QObject* ctkServiceTracker::getService(const ctkServiceReference& reference) con
   }
   {
     QMutexLocker lockT(t.data());
-    return t->getCustomizedObject(reference);
+    return t->getCustomizedObject(reference).value<QObject*>();
   }
 }
 

+ 8 - 6
Libs/PluginFramework/ctkTrackedService.cpp

@@ -101,22 +101,24 @@ void ctkTrackedService::modified()
   serviceTracker->d_func()->modified();
 }
 
-QObject* ctkTrackedService::customizerAdding(ctkServiceReference item, ctkServiceEvent related)
+QVariant ctkTrackedService::customizerAdding(ctkServiceReference item, ctkServiceEvent related)
 {
   Q_UNUSED(related)
-  return customizer->addingService(item);
+  QVariant var;
+  var.setValue(customizer->addingService(item));
+  return var;
 }
 
 void ctkTrackedService::customizerModified(ctkServiceReference item,
-                        ctkServiceEvent related, QObject* object)
+                        ctkServiceEvent related, QVariant object)
 {
   Q_UNUSED(related)
-  customizer->modifiedService(item, object);
+  customizer->modifiedService(item, object.value<QObject*>());
 }
 
 void ctkTrackedService::customizerRemoved(ctkServiceReference item,
-                       ctkServiceEvent related, QObject* object)
+                       ctkServiceEvent related, QVariant object)
 {
   Q_UNUSED(related)
-  customizer->removedService(item, object);
+  customizer->removedService(item, object.value<QObject*>());
 }

+ 3 - 3
Libs/PluginFramework/ctkTrackedService_p.h

@@ -73,7 +73,7 @@ private:
    * @return Customized object for the tracked item or <code>null</code>
    *         if the item is not to be tracked.
    */
-  QObject* customizerAdding(ctkServiceReference item, ctkServiceEvent related);
+  QVariant customizerAdding(ctkServiceReference item, ctkServiceEvent related);
 
   /**
    * Call the specific customizer modified method. This method must not be
@@ -84,7 +84,7 @@ private:
    * @param object Customized object for the tracked item.
    */
   void customizerModified(ctkServiceReference item,
-                          ctkServiceEvent related, QObject* object) ;
+                          ctkServiceEvent related, QVariant object) ;
 
   /**
    * Call the specific customizer removed method. This method must not be
@@ -95,7 +95,7 @@ private:
    * @param object Customized object for the tracked item.
    */
   void customizerRemoved(ctkServiceReference item,
-                         ctkServiceEvent related, QObject* object) ;
+                         ctkServiceEvent related, QVariant object) ;
 };
 
 #endif // CTKTRACKEDSERVICE_P_H