]> vaikene.ee Git - evaf/blobdiff - src/plugins/SdiWindow/sdiwindow.h
Added Qt plugin macros to Plugins::iPlugin and Plugins::iPluginFactory for proper...
[evaf] / src / plugins / SdiWindow / sdiwindow.h
index 31b311d60454d8a4c4d04efa640f5fb88bf7b4b4..f0cfe6fc52aae2e5f96c7d6487acb2483388d5db 100644 (file)
@@ -28,7 +28,7 @@
 #include <QString>
 #include <QWidget>
 #include <QList>
-#include <QPointer>
+#include <QWeakPointer>
 
 class QVBoxLayout;
 
@@ -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,45 +72,15 @@ private: // Methods
 
 private: // Members
 
+    /// Ready flag
+    bool mReady;
+
     /// The layout of the window
     QVBoxLayout * mLayout;
 
     /// Widgets and layouts added to the main window
-    QList<QPointer<QObject> > mItemsAdded;
-
-};
-
-/**
- * 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;
+    QList<QWeakPointer<QObject> > mItemsAdded;
 
-    /// The main window widget
-    MainWindow * wWindow;
 };
 
 /**
@@ -116,6 +89,7 @@ private: // Members
 class SdiWindowPlugin : public Plugins::iPlugin
 {
     Q_OBJECT
+    Q_INTERFACES(eVaf::Plugins::iPlugin)
 
 public:
 
@@ -133,7 +107,7 @@ public:
 private:
 
     /// iSdiWindow interface implementation
-    SdiWindowImpl * mWindow;
+    MainWindow * mWindow;
 };
 
 } // namespace eVaf::SdiWindow::Internal