From f6e7f821fa3cb9f65d63851e9c90bc04afe99d35 Mon Sep 17 00:00:00 2001
From: "simon.fanetti" <simon.fanetti@etu.hesge.ch>
Date: Wed, 3 Jun 2020 18:07:06 +0200
Subject: [PATCH] add screenshot of screens in setupapp + adjust destructors

---
 app/SandboxSetup/beamerlocationgui.cpp |  2 ++
 app/SandboxSetup/camerafocus.cpp       |  1 +
 app/SandboxSetup/croppingmask.cpp      |  2 ++
 app/SandboxSetup/initcamera.cpp        |  5 +++--
 app/SandboxSetup/mainwindow.cpp        |  8 ++++++++
 app/SandboxSetup/monitorgui.cpp        | 11 ++++++++++-
 app/SandboxSetup/monitorgui.h          |  1 +
 app/SandboxSetup/monitorgui.ui         | 18 +++++++++++++++++-
 app/SandboxSetup/projectiongui.cpp     |  2 ++
 app/SandboxSetup/qtfullscreen.cpp      |  6 ++++++
 app/SandboxSetup/qtfullscreen.h        |  1 +
 11 files changed, 53 insertions(+), 4 deletions(-)

diff --git a/app/SandboxSetup/beamerlocationgui.cpp b/app/SandboxSetup/beamerlocationgui.cpp
index 1c1940c..ed095b8 100644
--- a/app/SandboxSetup/beamerlocationgui.cpp
+++ b/app/SandboxSetup/beamerlocationgui.cpp
@@ -20,6 +20,8 @@ BeamerLocationGui::BeamerLocationGui(SandboxSetup *_setup, MonitorGui *_mg, QWid
 
 BeamerLocationGui::~BeamerLocationGui()
 {
+    delete timer;
+    delete winFullScreen;
     delete ui;
 }
 
diff --git a/app/SandboxSetup/camerafocus.cpp b/app/SandboxSetup/camerafocus.cpp
index e71c0a0..7845814 100644
--- a/app/SandboxSetup/camerafocus.cpp
+++ b/app/SandboxSetup/camerafocus.cpp
@@ -16,6 +16,7 @@ CameraFocus::CameraFocus(SandboxSetup *sandbox, QWidget *parent) :
 
 CameraFocus::~CameraFocus()
 {
+    delete frameTimer;
     delete ui;
 }
 
diff --git a/app/SandboxSetup/croppingmask.cpp b/app/SandboxSetup/croppingmask.cpp
index b966c66..e2c984c 100644
--- a/app/SandboxSetup/croppingmask.cpp
+++ b/app/SandboxSetup/croppingmask.cpp
@@ -20,6 +20,8 @@ CroppingMask::CroppingMask(SandboxSetup *sandbox, MonitorGui *_mg, QWidget *pare
 
 CroppingMask::~CroppingMask()
 {
+    delete projBlueScreen;
+    delete maskEdit;
     delete ui;
 }
 
diff --git a/app/SandboxSetup/initcamera.cpp b/app/SandboxSetup/initcamera.cpp
index 9b73c0a..fc2caa2 100644
--- a/app/SandboxSetup/initcamera.cpp
+++ b/app/SandboxSetup/initcamera.cpp
@@ -31,10 +31,11 @@ InitCamera::InitCamera(SandboxSetup *_setup, QWidget *parent) :
 }
 
 InitCamera::~InitCamera()
-{
-    delete ui;
+{   
     workerThread->quit();
     workerThread->wait();
+    delete workerThread;
+    delete ui;
 }
 
 void InitCamera::showEvent(QShowEvent *event){
diff --git a/app/SandboxSetup/mainwindow.cpp b/app/SandboxSetup/mainwindow.cpp
index 4fc220d..6036ea7 100644
--- a/app/SandboxSetup/mainwindow.cpp
+++ b/app/SandboxSetup/mainwindow.cpp
@@ -36,6 +36,14 @@ MainWindow::MainWindow(QWidget *parent) :
 
 MainWindow::~MainWindow()
 {
+    delete scfg;
+    delete bl;
+    delete cm;
+    delete cf;
+    delete pg;
+    delete mg;
+    delete init;
+    delete setup;
     delete ui;
 }
 
diff --git a/app/SandboxSetup/monitorgui.cpp b/app/SandboxSetup/monitorgui.cpp
index 594ac11..0c7d2d2 100644
--- a/app/SandboxSetup/monitorgui.cpp
+++ b/app/SandboxSetup/monitorgui.cpp
@@ -22,11 +22,13 @@ MonitorGui::MonitorGui(SandboxSetup *_setup, QWidget *parent) :
 
     if(screens.size() > 0){
         loadResolutionsOf(screens[0]);
+        showMonitorsScreenshot(screens[0]);
     }
 }
 
 MonitorGui::~MonitorGui()
 {
+    delete resolution;
     delete ui;
 }
 
@@ -73,7 +75,9 @@ QScreen* MonitorGui::getMonitor(){
 void MonitorGui::on_cbxOutputs_currentIndexChanged(int index)
 {
     QList<QScreen*> screens = QApplication::screens();
-    loadResolutionsOf(screens[index]);
+    QScreen *sc = screens[index];
+    loadResolutionsOf(sc);
+    showMonitorsScreenshot(sc);
 }
 
 
@@ -139,3 +143,8 @@ void MonitorGui::loadResolutionsFromFile(std::string path){
         }
     }
 }
+
+void MonitorGui::showMonitorsScreenshot(QScreen *screen){
+    QPixmap px = screen->grabWindow(0);
+    ui->lblScreenshot->setPixmap(px);
+}
diff --git a/app/SandboxSetup/monitorgui.h b/app/SandboxSetup/monitorgui.h
index b26d82f..6d9c085 100644
--- a/app/SandboxSetup/monitorgui.h
+++ b/app/SandboxSetup/monitorgui.h
@@ -53,6 +53,7 @@ private:
     bool isResolution(std::string s);
     void loadResolutionsFromFile(std::string path);
     void initMonitorMapWithFile(std::string path);
+    void showMonitorsScreenshot(QScreen *screen);
 };
 
 #endif // MONITORGUI_H
diff --git a/app/SandboxSetup/monitorgui.ui b/app/SandboxSetup/monitorgui.ui
index c2ee6eb..d3c56cb 100644
--- a/app/SandboxSetup/monitorgui.ui
+++ b/app/SandboxSetup/monitorgui.ui
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>400</width>
+    <width>617</width>
     <height>300</height>
    </rect>
   </property>
@@ -59,6 +59,22 @@
     </rect>
    </property>
   </widget>
+  <widget class="QLabel" name="lblScreenshot">
+   <property name="geometry">
+    <rect>
+     <x>300</x>
+     <y>50</y>
+     <width>291</width>
+     <height>191</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string/>
+   </property>
+   <property name="scaledContents">
+    <bool>true</bool>
+   </property>
+  </widget>
  </widget>
  <resources/>
  <connections/>
diff --git a/app/SandboxSetup/projectiongui.cpp b/app/SandboxSetup/projectiongui.cpp
index d4d7562..c537ba1 100644
--- a/app/SandboxSetup/projectiongui.cpp
+++ b/app/SandboxSetup/projectiongui.cpp
@@ -23,6 +23,8 @@ void ProjectionGui::closeEvent(QCloseEvent *event){
 
 ProjectionGui::~ProjectionGui()
 {
+    delete frameTimer;
+    delete blueScreen;
     delete ui;
 }
 
diff --git a/app/SandboxSetup/qtfullscreen.cpp b/app/SandboxSetup/qtfullscreen.cpp
index d652952..d4e20c5 100644
--- a/app/SandboxSetup/qtfullscreen.cpp
+++ b/app/SandboxSetup/qtfullscreen.cpp
@@ -14,6 +14,12 @@ QtFullScreen::QtFullScreen(QRect _resolution, bool _isBorderless, QWidget *paren
     image->setScaledContents(true);
 }
 
+QtFullScreen::~QtFullScreen()
+{
+    delete image;
+    delete win;
+}
+
 void QtFullScreen::showEvent(QShowEvent* event){
 
     QWidget::showEvent( event );
diff --git a/app/SandboxSetup/qtfullscreen.h b/app/SandboxSetup/qtfullscreen.h
index 1a2a825..0a31916 100644
--- a/app/SandboxSetup/qtfullscreen.h
+++ b/app/SandboxSetup/qtfullscreen.h
@@ -12,6 +12,7 @@ class QtFullScreen : public QWidget
     Q_OBJECT
 public:
     explicit QtFullScreen(QRect resolution, bool isBorderless=false, QWidget *parent = nullptr);
+    ~QtFullScreen();
     void imShow(cv::Mat frame);
     void close();
     void setGeometry(QRect resolution);
-- 
GitLab