Quellcode durchsuchen

Merge branch 'ctk-callback'

* ctk-callback:
  Add additional constructor to ctkCallback
  ctkCallback::invoke is now virtual
  Add getter to ctkCallback
Jean-Christophe Fillion-Robin vor 14 Jahren
Ursprung
Commit
48a9e39214
3 geänderte Dateien mit 40 neuen und 6 gelöschten Zeilen
  1. 24 4
      Libs/Core/Testing/Cpp/ctkCallbackTest1.cpp
  2. 12 0
      Libs/Core/ctkCallback.cpp
  3. 4 2
      Libs/Core/ctkCallback.h

+ 24 - 4
Libs/Core/Testing/Cpp/ctkCallbackTest1.cpp

@@ -49,15 +49,35 @@ void doSomething2()
 int ctkCallbackTest1(int argc, char * argv [] )
 {
   QCoreApplication app(argc, argv);
+  
 
   Done1 = false;
   Done2 = false;
 
-  ctkCallback callback(doSomething1);
-  QTimer::singleShot(0, &callback, SLOT(invoke()));
+  ctkCallback callback1;
+  if (callback1.callback() != 0)
+    {
+    std::cerr << "Line " << __LINE__ << " - Problem vith ctkCallback constructor"
+              << " - ctkCallback::callback() should return 0" << std::endl;
+    return EXIT_FAILURE;
+    }
+    
+  callback1.setCallback(doSomething1);
+  if (callback1.callback() != doSomething1)
+    {
+    std::cerr << "Line " << __LINE__ << " - Problem vith ctkCallback::setCallback()" << std::endl;
+    return EXIT_FAILURE;
+    }
+  
+  QTimer::singleShot(0, &callback1, SLOT(invoke()));
   
-  ctkCallback callback2;
-  callback2.setCallback(doSomething2);
+  ctkCallback callback2(doSomething2);
+  if (callback2.callback() != doSomething2)
+    {
+    std::cerr << "Line " << __LINE__ << " - Problem vith ctkCallback constructor" << std::endl;
+    return EXIT_FAILURE;
+    }
+    
   QTimer::singleShot(0, &callback2, SLOT(invoke()));
 
   QTimer::singleShot(0, &app, SLOT(quit()));

+ 12 - 0
Libs/Core/ctkCallback.cpp

@@ -25,6 +25,12 @@
 // ctkCallback methods
 
 // --------------------------------------------------------------------------
+ctkCallback::ctkCallback(QObject * parentObject) : QObject(parentObject)
+{
+  this->setCallback(0);
+}
+
+// --------------------------------------------------------------------------
 ctkCallback::ctkCallback(void (*callback)(), QObject * parentObject) : QObject(parentObject)
 {
   this->setCallback(callback);
@@ -36,6 +42,12 @@ ctkCallback::~ctkCallback()
 }
 
 // --------------------------------------------------------------------------
+void (*ctkCallback::callback())()const
+{
+  return this->Callback;
+}
+  
+// --------------------------------------------------------------------------
 void ctkCallback::setCallback(void (*callback)())
 {
   this->Callback = callback;

+ 4 - 2
Libs/Core/ctkCallback.h

@@ -33,13 +33,15 @@ class CTK_CORE_EXPORT ctkCallback : public QObject
   Q_OBJECT
 public:
 
-  ctkCallback(void (*callback)() = 0, QObject * parentObject = 0);
+  ctkCallback(QObject * parentObject = 0);
+  ctkCallback(void (*callback)(), QObject * parentObject = 0);
   virtual ~ctkCallback();
   
+  void (*callback())()const;
   void setCallback(void (*callback)());
   
 public slots:
-  void invoke();
+  virtual void invoke();
   
 private:
   void (*Callback)();