]> vaikene.ee Git - evaf/blobdiff - src/plugins/SdiWindow/sdiwindow.h
Warning fixes and copyright update.
[evaf] / src / plugins / SdiWindow / sdiwindow.h
index 757ed28cfeaa51f452954cc7ee0c62992aa3a71d..08bfcd90e5be8b09cf0afcf2979dd988a3cbb7ef 100644 (file)
@@ -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.
  *
@@ -31,7 +31,7 @@
 #include <QList>
 #include <QVector>
 #include <QHash>
-#include <QWeakPointer>
+#include <QScopedPointer>
 
 class QVBoxLayout;
 
@@ -49,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();
 
@@ -72,9 +72,6 @@ public:
 
 protected: // Methods
 
-    /// Garbage collector timer
-    virtual void timerEvent(QTimerEvent * e);
-
 
 private: // Methods
 
@@ -97,19 +94,16 @@ private: // Members
     QString mMainPanelName;
 
     /// List of GUI::Panel objects added to the manager
-    QList<QWeakPointer<Gui::Panel> > mPanels;
+    QList<Gui::Panel *> mPanels;
 
     /// List of minimized GUI::Panel objects
-    QVector<QWeakPointer<Gui::Panel> > mMinimizedPanels;
+    QVector<Gui::Panel *> mMinimizedPanels;
 
     /// Hash with panel names
-    QHash<QString, QWeakPointer<Gui::Panel> > mPanelNames;
+    QHash<QString, Gui::Panel *> mPanelNames;
 
     /// Current main panel added to this window
-    QWeakPointer<Gui::Panel> mMainPanel;
-
-    /// Garbage collector timer ID
-    int mTimerId;
+    Gui::Panel * mMainPanel;
 
 
 private: // Methods
@@ -117,6 +111,13 @@ 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);
+
 };
 
 /**
@@ -137,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<MainWindow> mWindow;
 };
 
 } // namespace eVaf::SdiWindow::Internal