X-Git-Url: https://vaikene.ee/gitweb/highlight.css?a=blobdiff_plain;f=src%2Fplugins%2FSdiWindow%2Fsdiwindow.h;h=757ed28cfeaa51f452954cc7ee0c62992aa3a71d;hb=5dd5f367dfcecab75077c3cb4ca1f01113fc1561;hp=0032bc6dafd5986daabb74cc8b11d4f3e4800056;hpb=8e0779e2e5a9f947f79c28e2ff121f6ffdd78b3f;p=evaf diff --git a/src/plugins/SdiWindow/sdiwindow.h b/src/plugins/SdiWindow/sdiwindow.h index 0032bc6..757ed28 100644 --- a/src/plugins/SdiWindow/sdiwindow.h +++ b/src/plugins/SdiWindow/sdiwindow.h @@ -23,11 +23,14 @@ #include "isdiwindow.h" #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