X-Git-Url: https://vaikene.ee/gitweb/pswgen11.html?a=blobdiff_plain;ds=sidebyside;f=src%2Fplugins%2FSdiWindow%2Fsdiwindow.h;h=08bfcd90e5be8b09cf0afcf2979dd988a3cbb7ef;hb=4c0329c5c2690bde28212c89029015a5da4c7e34;hp=f0cfe6fc52aae2e5f96c7d6487acb2483388d5db;hpb=0957525838e501a4609a15b8d7a765da43362025;p=evaf
diff --git a/src/plugins/SdiWindow/sdiwindow.h b/src/plugins/SdiWindow/sdiwindow.h
index f0cfe6f..08bfcd9 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,12 +23,15 @@
#include "isdiwindow.h"
#include
+#include
#include
#include
#include
#include
-#include
+#include
+#include
+#include
class QVBoxLayout;
@@ -46,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 = Qt::WindowFlags());
virtual ~MainWindow();
@@ -56,9 +59,18 @@ public:
virtual bool isReady() { return mReady; }
- virtual void addWidget(QWidget * widget);
+ virtual void addPanel(QString const & name, Gui::Panel * panel);
- virtual void addLayout(QLayout * layout);
+ 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
@@ -75,11 +87,36 @@ private: // Members
/// Ready flag
bool mReady;
- /// The layout of the window
+ /// The layout of the main window
QVBoxLayout * mLayout;
- /// Widgets and layouts added to the main window
- QList > mItemsAdded;
+ /// 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);
};
@@ -101,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