]> vaikene.ee Git - evaf/commitdiff
* The iEventQueue interface is now properly registered.
authorEnar Väikene <enar@vaikene.net>
Wed, 16 Nov 2011 15:06:34 +0000 (17:06 +0200)
committerEnar Väikene <enar@vaikene.net>
Wed, 16 Nov 2011 15:06:34 +0000 (17:06 +0200)
* The iApp interface implementation now registers events and listens for EV_QUIT and EV_RESTART events.
  Broadcasting EV_READY and EV_TERMINATING events still needs to be implemented. This is also valid for
  iApp::ready() and iApp::terminating() signals.

src/libs/Common/app.cpp
src/libs/Common/app.h
src/libs/Common/eventqueue.cpp
src/libs/Common/version.h

index 53efce95d319ad6cc12eea546d5b9f1189202275..21818f9ebe7d1e67e1e6eff9c911ac17bd22efdf 100644 (file)
@@ -19,7 +19,9 @@
 
 #include "app.h"
 #include "globals.h"
-#include "registry.h"
+#include "iregistry.h"
+#include "ieventqueue.h"
+#include "event.h"
 #include "version.h"
 
 #include <QtCore>
@@ -49,6 +51,10 @@ App::App()
     : iApp()
     , mReady(false)
     , mName(VER_PRODUCT_NAME_STR)
+    , mEvQuit(0)
+    , mEvRestart(0)
+    , mEvReady(0)
+    , mEvTerminating(0)
 {
     setObjectName(QString("%1.iApp").arg(VER_MODULE_NAME_STR));
 
@@ -63,6 +69,12 @@ bool App::init()
     // Register our interface
     iRegistry::instance()->registerInterface("iApp", this);
 
+    // Register events
+    mEvQuit = iEventQueue::instance()->subscribeEvent(iEventQueue::instance()->registerEvent(EV_QUIT), this);
+    mEvRestart = iEventQueue::instance()->subscribeEvent(iEventQueue::instance()->registerEvent(EV_RESTART), this);
+    mEvReady = iEventQueue::instance()->registerEvent(EV_READY);
+    mEvTerminating = iEventQueue::instance()->registerEvent(EV_TERMINATING);
+
     // Set the default application name and language
     mName = VER_PRODUCT_NAME_STR;
     mLanguage = QLocale::system().name();
@@ -176,6 +188,21 @@ bool App::init()
     return true;
 }
 
+bool App::event(QEvent * e)
+{
+    if (e->type() == Event::eVafEvent) {
+        Event * event = static_cast<Event *>(e);
+        if (event->id() == mEvQuit)
+            quit();
+        else if (event->id() == mEvRestart)
+            restart();
+
+        return false;
+    }
+    else
+        return iApp::event(e);
+}
+
 QString const App::dataRootDir() const
 {
     if (mDataRootDir.isEmpty()) {
index 3bcde5aaa045c422acaeff53658b9529e40c6be7..8fb0dca887919f7916486c0ab580932d30df6c94 100644 (file)
@@ -25,6 +25,8 @@
 #include <QObject>
 #include <QString>
 
+class QEvent;
+
 namespace eVaf {
 namespace Common {
 namespace Internal {
@@ -48,6 +50,8 @@ public:
      */
     bool init();
 
+    virtual bool event(QEvent *);
+
     /*
         iApp interface
     */
@@ -113,6 +117,12 @@ private:
     /// Name of the documentation directory
     mutable QString mDocDir;
 
+    /// Event numbers
+    uint mEvQuit;
+    uint mEvRestart;
+    uint mEvReady;
+    uint mEvTerminating;
+
 };
 
 } // namespace eVaf::Common::Internal
index 33e73c0d6e54e26888f3fd1e7651f3fe1435c5a8..795224c8fbc42022801da892670789897e54b59f 100644 (file)
@@ -45,6 +45,7 @@ EventQueue::EventQueue()
     : iEventQueue()
     , mNextEventId(1)
 {
+    iRegistry::instance()->registerInterface("iEventQueue", this);
 }
 
 EventQueue::~EventQueue()
index b99636f69ecac604c3efd1df5e0f3037e0c3a5f4..5feecd6f00fe4feed7a1a374c0594ca89f08378b 100644 (file)
 /**
  * Module/library version number in the form major,minor,release,build
  */
-#define VER_FILE_VERSION                0,1,2,5
+#define VER_FILE_VERSION                0,1,3,6
 
 /**
  * Module/library version number in the string format (shall end with \0)
  */
-#define VER_FILE_VERSION_STR            "0.1.2.5\0"
+#define VER_FILE_VERSION_STR            "0.1.3.6\0"
 
 /**
  * Module/library name (shall end with \0)