X-Git-Url: https://vaikene.ee/gitweb/pswgen11.html?a=blobdiff_plain;f=src%2Fplugins%2FSdiWindow%2Fsdiwindow.h;h=4c46eea83617e083813905eae322f5e80cbcbe63;hb=a81a943bee20df3c7eb34bafb3e3fe878facfe4e;hp=d886cca5d842914472e0e92b939abb7e7e04e78c;hpb=06f9c5336ba8a2200b68f636520707693eb5ada7;p=evaf diff --git a/src/plugins/SdiWindow/sdiwindow.h b/src/plugins/SdiWindow/sdiwindow.h index d886cca..4c46eea 100644 --- a/src/plugins/SdiWindow/sdiwindow.h +++ b/src/plugins/SdiWindow/sdiwindow.h @@ -23,21 +23,28 @@ #include "isdiwindow.h" #include +#include #include #include #include +#include +#include +#include + +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 +52,24 @@ public: virtual ~MainWindow(); - bool init(); + virtual bool init(QString const & args); + + 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); - void done(); + virtual void changeEvent(QEvent * e); + + virtual void closeEvent(QCloseEvent * e); + + +protected: // Methods private: // Methods @@ -57,37 +79,44 @@ private: // Methods void saveSettings(); void restoreSettings(); -}; -/** - * iSdiWindow interface implementation - */ -class SdiWindowImpl : public iSdiWindow -{ - Q_OBJECT -public: +private: // Members - SdiWindowImpl(); + /// Ready flag + bool mReady; - virtual ~SdiWindowImpl(); + /// The layout of the main window + QVBoxLayout * mLayout; - bool init(const QString & args); + /// Name of the main panel that becomes part of this window + QString mMainPanelName; - void done(); + /// List of GUI::Panel objects added to the manager + QList mPanels; - bool isReady() const { return mReady; } + /// List of minimized GUI::Panel objects + QVector mMinimizedPanels; - virtual QWidget * widget() const { return wWindow; } + /// Hash with panel names + QHash mPanelNames; + /// Current main panel added to this window + Gui::Panel * mMainPanel; -private: // Members - /// Ready flag - bool mReady; +private: // Methods + + /// Gets the main panel name from module attributes + QString getMainPanelName(QString const & args) const; + + +private slots: + + /// Panel destroyed signal. We need to remove the panel from all the + /// lists. + void panelDestroyed(QObject * obj = 0); - /// The main window widget - MainWindow * wWindow; }; /** @@ -96,6 +125,7 @@ private: // Members class SdiWindowPlugin : public Plugins::iPlugin { Q_OBJECT + Q_INTERFACES(eVaf::Plugins::iPlugin) public: @@ -113,7 +143,7 @@ public: private: /// iSdiWindow interface implementation - SdiWindowImpl * mWindow; + MainWindow * mWindow; }; } // namespace eVaf::SdiWindow::Internal