]> vaikene.ee Git - evaf/blobdiff - src/plugins/SdiWindow/sdiwindow.h
Changed the SdiWindow::iSdiWindow interface.
[evaf] / src / plugins / SdiWindow / sdiwindow.h
index d886cca5d842914472e0e92b939abb7e7e04e78c..f88425554319b872fc52fdb9e38ccae724f21497 100644 (file)
 #include "isdiwindow.h"
 
 #include <Plugins/iPlugin>
+#include <Gui/Window>
 
 #include <QObject>
 #include <QString>
 #include <QWidget>
+#include <QList>
+#include <QWeakPointer>
+
+class QVBoxLayout;
 
 namespace eVaf {
 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:
 
@@ -45,9 +51,13 @@ public:
 
     virtual ~MainWindow();
 
-    bool init();
+    virtual bool init(QString const & args);
+
+    virtual void done();
 
-    void done();
+    virtual bool isReady() { return mReady; }
+
+    virtual void addWindow(Gui::Window * window);
 
 
 private: // Methods
@@ -57,28 +67,6 @@ private: // Methods
     void saveSettings();
 
     void restoreSettings();
-};
-
-/**
- * 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 QWidget * widget() const { return wWindow; }
 
 
 private: // Members
@@ -86,8 +74,12 @@ private: // Members
     /// Ready flag
     bool mReady;
 
-    /// The main window widget
-    MainWindow * wWindow;
+    /// The layout of the main window
+    QVBoxLayout * mLayout;
+
+    /// eVaf GUI window implementing the main window
+    QWeakPointer<Gui::Window> mWindow;
+
 };
 
 /**
@@ -96,6 +88,7 @@ private: // Members
 class SdiWindowPlugin : public Plugins::iPlugin
 {
     Q_OBJECT
+    Q_INTERFACES(eVaf::Plugins::iPlugin)
 
 public:
 
@@ -113,7 +106,7 @@ public:
 private:
 
     /// iSdiWindow interface implementation
-    SdiWindowImpl * mWindow;
+    MainWindow * mWindow;
 };
 
 } // namespace eVaf::SdiWindow::Internal