X-Git-Url: https://vaikene.ee/gitweb/pswgen09.html?a=blobdiff_plain;f=src%2Fplugins%2FSdiWindow%2Fsdiwindow.h;h=40c72111d003ab4d3ab1caf72a1c2f1eccd04684;hb=de270ece1b764b19968e14420f538321f1c06b15;hp=f88425554319b872fc52fdb9e38ccae724f21497;hpb=54f282ee6797c05e60993632218875092362bdf7;p=evaf diff --git a/src/plugins/SdiWindow/sdiwindow.h b/src/plugins/SdiWindow/sdiwindow.h index f884255..40c7211 100644 --- a/src/plugins/SdiWindow/sdiwindow.h +++ b/src/plugins/SdiWindow/sdiwindow.h @@ -3,7 +3,7 @@ * @brief SdiWindow module's implementation * @author Enar Vaikene * - * Copyright (c) 2011 Enar Vaikene + * Copyright (c) 2011-2019 Enar Vaikene * * This file is part of the eVaf C++ cross-platform application development framework. * @@ -23,13 +23,15 @@ #include "isdiwindow.h" #include -#include +#include #include #include #include #include -#include +#include +#include +#include class QVBoxLayout; @@ -47,7 +49,7 @@ class MainWindow : public QWidget, public iSdiWindow public: - MainWindow(QWidget * parent = 0, Qt::WindowFlags flags = 0); + MainWindow(QWidget * parent = nullptr, Qt::WindowFlags flags = 0); virtual ~MainWindow(); @@ -57,7 +59,18 @@ public: virtual bool isReady() { return mReady; } - virtual void addWindow(Gui::Window * window); + 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); + + +protected: // Methods private: // Methods @@ -77,8 +90,33 @@ private: // Members /// The layout of the main window QVBoxLayout * mLayout; - /// eVaf GUI window implementing the main window - QWeakPointer mWindow; + /// Name of the main panel that becomes part of this window + QString mMainPanelName; + + /// List of GUI::Panel objects added to the manager + QList mPanels; + + /// List of minimized GUI::Panel objects + QVector mMinimizedPanels; + + /// Hash with panel names + QHash mPanelNames; + + /// Current main panel added to this window + Gui::Panel * mMainPanel; + + +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 = nullptr); }; @@ -100,13 +138,13 @@ public: virtual void done(); - virtual bool isReady() const { return mWindow != 0 && mWindow->isReady(); } + virtual bool isReady() const { return mWindow != nullptr && mWindow->isReady(); } private: /// iSdiWindow interface implementation - MainWindow * mWindow; + QScopedPointer mWindow; }; } // namespace eVaf::SdiWindow::Internal