]> vaikene.ee Git - evaf/commitdiff
Changed the SdiWindow::iSdiWindow interface to be not derived from QObject.
authorEnar Väikene <enar@vaikene.net>
Wed, 19 Oct 2011 10:08:01 +0000 (13:08 +0300)
committerEnar Väikene <enar@vaikene.net>
Wed, 19 Oct 2011 10:08:01 +0000 (13:08 +0300)
* No plans to use signals in this interface
* Simplifies the implementation as we can now have one single class derived both from
  Widget and iSdiWindow
* No need to link against the SdiWindow library as long as the iSdiWindow::instance() method is not used.

src/apps/PswGen/GUI/CMakeLists.txt
src/plugins/SdiWindow/CMakeLists.txt
src/plugins/SdiWindow/isdiwindow.h
src/plugins/SdiWindow/sdiwindow.cpp
src/plugins/SdiWindow/sdiwindow.h
src/plugins/SdiWindow/version.h

index 060625bea3be6402d0aa3a2fc3ebcebf43fb5851..329cd170bbfa949ebf1d2b0149aa52a8fca531e9 100644 (file)
@@ -8,7 +8,7 @@ include(${QT_USE_FILE})
 include_directories(${eVaf_INCLUDE})
 
 # Required eVaf libraries
-set(eVaf_LIBRARIES CommonLib PluginsLib SdiWindow)
+set(eVaf_LIBRARIES CommonLib PluginsLib)
 
 # Source files
 set(SRCS
index 9edf476798b7378e53b809f735835968e18d263f..b1a9c79be343abb17dde3b62e0789e2a0ae7a8fe 100644 (file)
@@ -22,7 +22,6 @@ set(SRCS
 # Header files for the meta-object compiler
 set(MOC_HDRS
     factory.h
-    isdiwindow.h
     sdiwindow.h
 )
 
index 8cd4343666db997ef1f1118a73fa637873029454..28e774d1b5be7c262aaabbc761aa78b96b23e05c 100644 (file)
@@ -22,8 +22,8 @@
 
 #include "libsdiwindow.h"
 
-#include <QObject>
 #include <QString>
+#include <QtPlugin>
 
 class QWidget;
 class QLayout;
@@ -37,18 +37,8 @@ namespace SdiWindow {
  * The iSdiWindow interface provides access to the SDI main window. The SDI main window is
  * an empty window that the application can fill with widgets.
  */
-class SDIWINDOW_EXPORT iSdiWindow : public QObject
+struct SDIWINDOW_EXPORT iSdiWindow
 {
-    Q_OBJECT
-
-public:
-
-    /// Interface constructor
-    iSdiWindow() : QObject() {}
-
-    /// Empty virtual destructor
-    virtual ~iSdiWindow() {}
-
     /**
      * Returns the iSdiWindow interface instance
      * @return The iSdiWindow interface or zero if not available
@@ -80,4 +70,6 @@ public:
 } // namespace eVaf::SdiWindow
 } // namespace eVaf
 
+Q_DECLARE_INTERFACE(eVaf::SdiWindow::iSdiWindow, "eVaf.SdiWindow.iSdiWindow/1.0")
+
 #endif // isdiwindow.h
index 02de43a320a80ecf231a3b51d7305e93905764b5..aba9ce2041502ac51fed5f2a5aa04d9cc4be01bf 100644 (file)
@@ -54,6 +54,7 @@ using namespace eVaf::SdiWindow::Internal;
 
 MainWindow::MainWindow(QWidget * parent, Qt::WindowFlags flags)
     : QWidget(parent, flags)
+    , mReady(false)
 {
     setObjectName(QString("%1-%2").arg(VER_MODULE_NAME_STR).arg(__FUNCTION__));
 
@@ -67,23 +68,33 @@ MainWindow::MainWindow(QWidget * parent, Qt::WindowFlags flags)
     mLayout = new QVBoxLayout;
     setLayout(mLayout);
 
+    mSdiWindow = this;
+
     EVAF_INFO("%s created", qPrintable(objectName()));
 }
 
 MainWindow::~MainWindow()
 {
+    mSdiWindow = 0;
+
     // Save geometry
     saveSettings();
 
     EVAF_INFO("%s destroyed", qPrintable(objectName()));
 }
 
-bool MainWindow::init()
+bool MainWindow::init(QString const & args)
 {
+    Q_UNUSED(args);
+
+    Common::iRegistry::instance()->registerInterface("iSdiWindow", this);
+
     setWindowTitle(Common::iApp::instance()->name());
 
     show();
 
+    mReady = true;
+
     EVAF_INFO("%s initialized", qPrintable(objectName()));
 
     return true;
@@ -91,6 +102,8 @@ bool MainWindow::init()
 
 void MainWindow::done()
 {
+    mReady = false;
+
     close();
 
     // Delete all the items added to the main window
@@ -178,56 +191,6 @@ void MainWindow::setWindowSize()
 }
 
 
-//-------------------------------------------------------------------
-
-SdiWindowImpl::SdiWindowImpl()
-    : iSdiWindow()
-    , mReady(false)
-{
-    setObjectName(QString("%1.iSdiWindow").arg(VER_MODULE_NAME_STR));
-
-    mSdiWindow = this;
-
-    wWindow = new MainWindow;
-
-    Common::iRegistry::instance()->registerInterface("iSdiWindow", this);
-
-    EVAF_INFO("%s created", qPrintable(objectName()));
-}
-
-SdiWindowImpl::~SdiWindowImpl()
-{
-    delete wWindow;
-
-    mSdiWindow = 0;
-
-    EVAF_INFO("%s destroyed", qPrintable(objectName()));
-}
-
-bool SdiWindowImpl::init(const QString & args)
-{
-    Q_UNUSED(args);
-
-    if (!wWindow->init())
-        return false;
-
-    mReady = true;
-
-    EVAF_INFO("%s initialized", qPrintable(objectName()));
-
-    return true;
-}
-
-void SdiWindowImpl::done()
-{
-    mReady = false;
-
-    wWindow->done();
-
-    EVAF_INFO("%s finalized", qPrintable(objectName()));
-}
-
-
 //-------------------------------------------------------------------
 
 SdiWindowPlugin::SdiWindowPlugin()
@@ -235,7 +198,7 @@ SdiWindowPlugin::SdiWindowPlugin()
 {
     setObjectName(VER_MODULE_NAME_STR);
 
-    mWindow = new SdiWindowImpl;
+    mWindow = new MainWindow;
 
     EVAF_INFO("%s created", qPrintable(objectName()));
 }
index 0032bc6dafd5986daabb74cc8b11d4f3e4800056..a73f2eec3d85a9b52dc09ed063c87664e3f5fedf 100644 (file)
@@ -37,11 +37,12 @@ namespace SdiWindow {
 namespace Internal {
 
 /**
- * Main window widget
+ * Main window widget implementing the iSdiWindow interface
  */
-class MainWindow : public QWidget
+class MainWindow : public QWidget, public iSdiWindow
 {
     Q_OBJECT
+    Q_INTERFACES(eVaf::SdiWindow::iSdiWindow)
 
 public:
 
@@ -49,13 +50,15 @@ public:
 
     virtual ~MainWindow();
 
-    bool init();
+    virtual bool init(QString const & args);
 
-    void done();
+    virtual void done();
+
+    virtual bool isReady() { return mReady; }
 
-    void addWidget(QWidget * widget);
+    virtual void addWidget(QWidget * widget);
 
-    void addLayout(QLayout * layout);
+    virtual void addLayout(QLayout * layout);
 
 
 private: // Methods
@@ -69,6 +72,9 @@ private: // Methods
 
 private: // Members
 
+    /// Ready flag
+    bool mReady;
+
     /// The layout of the window
     QVBoxLayout * mLayout;
 
@@ -77,39 +83,6 @@ private: // Members
 
 };
 
-/**
- * iSdiWindow interface implementation
- */
-class SdiWindowImpl : public iSdiWindow
-{
-    Q_OBJECT
-
-public:
-
-    SdiWindowImpl();
-
-    virtual ~SdiWindowImpl();
-
-    bool init(const QString & args);
-
-    void done();
-
-    bool isReady() const { return mReady; }
-
-    virtual void addWidget(QWidget * widget) { wWindow->addWidget(widget); }
-
-    virtual void addLayout(QLayout * layout) { wWindow->addLayout(layout); }
-
-
-private: // Members
-
-    /// Ready flag
-    bool mReady;
-
-    /// The main window widget
-    MainWindow * wWindow;
-};
-
 /**
  * SdiWindow module's implementation
  */
@@ -133,7 +106,7 @@ public:
 private:
 
     /// iSdiWindow interface implementation
-    SdiWindowImpl * mWindow;
+    MainWindow * mWindow;
 };
 
 } // namespace eVaf::SdiWindow::Internal
index 6df80cf90f37c33ae75382704848eb15112708ef..96719006739b1e6e2be33d5fc7eb27cfebe0adfa 100644 (file)
 /**
  * Module/library version number in the form major,minor,release,build
  */
-#define VER_FILE_VERSION                0,2,3,4
+#define VER_FILE_VERSION                0,2,4,5
 
 /**
  * Module/library version number in the string format (shall end with \0)
  */
-#define VER_FILE_VERSION_STR            "0.2.3.4\0"
+#define VER_FILE_VERSION_STR            "0.2.4.5\0"
 
 /**
  * Module/library name (shall end with \0)