X-Git-Url: https://vaikene.ee/gitweb/pswgen09.html?a=blobdiff_plain;f=src%2Fplugins%2FSdiWindow%2Fsdiwindow.h;h=757ed28cfeaa51f452954cc7ee0c62992aa3a71d;hb=51afea61c3cf72248b2998f6874a354b49ed12ca;hp=31b311d60454d8a4c4d04efa640f5fb88bf7b4b4;hpb=f443e47f50a5d12f592aaae6a4e553e4a125ee1c;p=evaf
diff --git a/src/plugins/SdiWindow/sdiwindow.h b/src/plugins/SdiWindow/sdiwindow.h
index 31b311d..757ed28 100644
--- a/src/plugins/SdiWindow/sdiwindow.h
+++ b/src/plugins/SdiWindow/sdiwindow.h
@@ -23,12 +23,15 @@
#include "isdiwindow.h"
#include
+#include
#include
#include
#include
#include
-#include
+#include
+#include
+#include
class QVBoxLayout;
@@ -37,11 +40,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 +53,27 @@ public:
virtual ~MainWindow();
- bool init();
+ virtual bool init(QString const & args);
- void done();
+ virtual void done();
+
+ virtual bool isReady() { return mReady; }
+
+ virtual void addPanel(QString const & name, Gui::Panel * panel);
+
+ virtual Gui::Panel * panel(QString const & name) const;
+
+ virtual bool showPanel(QString const & name);
+
+ virtual void changeEvent(QEvent * e);
+
+ virtual void closeEvent(QCloseEvent * e);
- void addWidget(QWidget * widget);
- void addLayout(QLayout * layout);
+protected: // Methods
+
+ /// Garbage collector timer
+ virtual void timerEvent(QTimerEvent * e);
private: // Methods
@@ -69,45 +87,36 @@ private: // Methods
private: // Members
- /// The layout of the window
- QVBoxLayout * mLayout;
-
- /// Widgets and layouts added to the main window
- QList > mItemsAdded;
-
-};
-
-/**
- * iSdiWindow interface implementation
- */
-class SdiWindowImpl : public iSdiWindow
-{
- Q_OBJECT
-
-public:
+ /// Ready flag
+ bool mReady;
- SdiWindowImpl();
+ /// The layout of the main window
+ QVBoxLayout * mLayout;
- virtual ~SdiWindowImpl();
+ /// Name of the main panel that becomes part of this window
+ QString mMainPanelName;
- bool init(const QString & args);
+ /// List of GUI::Panel objects added to the manager
+ QList > mPanels;
- void done();
+ /// List of minimized GUI::Panel objects
+ QVector > mMinimizedPanels;
- bool isReady() const { return mReady; }
+ /// Hash with panel names
+ QHash > mPanelNames;
- virtual void addWidget(QWidget * widget) { wWindow->addWidget(widget); }
+ /// Current main panel added to this window
+ QWeakPointer mMainPanel;
- virtual void addLayout(QLayout * layout) { wWindow->addLayout(layout); }
+ /// Garbage collector timer ID
+ int mTimerId;
-private: // Members
+private: // Methods
- /// Ready flag
- bool mReady;
+ /// Gets the main panel name from module attributes
+ QString getMainPanelName(QString const & args) const;
- /// The main window widget
- MainWindow * wWindow;
};
/**
@@ -116,6 +125,7 @@ private: // Members
class SdiWindowPlugin : public Plugins::iPlugin
{
Q_OBJECT
+ Q_INTERFACES(eVaf::Plugins::iPlugin)
public:
@@ -133,7 +143,7 @@ public:
private:
/// iSdiWindow interface implementation
- SdiWindowImpl * mWindow;
+ MainWindow * mWindow;
};
} // namespace eVaf::SdiWindow::Internal