Browse Source

Fix save popup on quit event

Johannes Kreutz 2 years ago
parent
commit
f6869dd63e
2 changed files with 26 additions and 11 deletions
  1. 4 0
      trackpoint-app/include/MainWindow.hpp
  2. 22 11
      trackpoint-app/src/MainWindow.cpp

+ 4 - 0
trackpoint-app/include/MainWindow.hpp

@@ -9,6 +9,7 @@
 
 // Include dependencies
 #include <QMainWindow>
+#include <QCloseEvent>
 
 QT_BEGIN_NAMESPACE
 namespace Ui { class MainWindow; }
@@ -26,6 +27,9 @@ public:
   ProjectStore* getStore();
   EditWidget* getEditWiget();
 
+protected:
+  virtual void closeEvent(QCloseEvent *event);
+
 private:
   void newFile();
   void load();

+ 22 - 11
trackpoint-app/src/MainWindow.cpp

@@ -72,6 +72,21 @@ MainWindow::~MainWindow() {
   delete osgWidget;
 }
 
+void MainWindow::renderView(GuiView view) {
+  switch(view) {
+    case NoMesh: {
+      editWidget->setParent(nullptr);
+      ui->controlWidget->layout()->addWidget(noMeshWidget);
+      break;
+    }
+    case Edit: {
+      noMeshWidget->setParent(nullptr);
+      ui->controlWidget->layout()->addWidget(editWidget);
+      break;
+    }
+  }
+}
+
 OSGWidget* MainWindow::getOsgWidget() {
   return osgWidget;
 }
@@ -84,19 +99,15 @@ EditWidget* MainWindow::getEditWiget() {
   return editWidget;
 }
 
-void MainWindow::renderView(GuiView view) {
-  switch(view) {
-    case NoMesh: {
-      editWidget->setParent(nullptr);
-      ui->controlWidget->layout()->addWidget(noMeshWidget);
-      break;
-    }
-    case Edit: {
-      noMeshWidget->setParent(nullptr);
-      ui->controlWidget->layout()->addWidget(editWidget);
-      break;
+void MainWindow::closeEvent(QCloseEvent *event) {
+  if (MainWindow::getInstance()->getStore()->isModified()) {
+    if (!saveChangesPopup()) {
+      event->ignore();
+      return;
     }
   }
+  MainWindow::getInstance()->getStore()->closeProject();
+  event->accept();
 }
 
 void MainWindow::newFile() {