From cc0fa0eae6127b21a197043586f5f55608b5c2f8 Mon Sep 17 00:00:00 2001 From: Arto Jonsson Date: Fri, 26 Nov 2010 17:56:34 +0200 Subject: [PATCH] Ask to save a modified game --- projects/gui/src/mainwindow.cpp | 25 +++++++++++++++++++++++++ projects/gui/src/mainwindow.h | 5 +++++ 2 files changed, 30 insertions(+) diff --git a/projects/gui/src/mainwindow.cpp b/projects/gui/src/mainwindow.cpp index abf7f8e..25d3377 100644 --- a/projects/gui/src/mainwindow.cpp +++ b/projects/gui/src/mainwindow.cpp @@ -421,3 +421,28 @@ bool MainWindow::saveGame(const QString& fileName) return true; } + +void MainWindow::closeEvent(QCloseEvent* event) +{ + if (askToSave()) + event->accept(); + else + event->ignore(); +} + +bool MainWindow::askToSave() +{ + if (isWindowModified()) + { + QMessageBox::StandardButton result; + result = QMessageBox::warning(this, QApplication::applicationName(), + tr("The game was modified.\nDo you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); + + if (result == QMessageBox::Save) + return save(); + else if (result == QMessageBox::Cancel) + return false; + } + return true; +} diff --git a/projects/gui/src/mainwindow.h b/projects/gui/src/mainwindow.h index 04348bf..a9ca0ed 100644 --- a/projects/gui/src/mainwindow.h +++ b/projects/gui/src/mainwindow.h @@ -25,6 +25,7 @@ namespace Chess { class Board; class Move; } class QMenu; class QAction; class QTextEdit; +class QCloseEvent; class ChessboardView; class ChessboardModel; class MoveListModel; @@ -44,6 +45,9 @@ class MainWindow : public QMainWindow MainWindow(ChessGame* game); QString windowListTitle() const; + protected: + void closeEvent(QCloseEvent* event); + signals: void promotionMove(const Chess::Move& move, Chess::Side side); @@ -69,6 +73,7 @@ class MainWindow : public QMainWindow void readSettings(); QString genericWindowTitle() const; bool saveGame(const QString& fileName); + bool askToSave(); QMenu* m_gameMenu; QMenu* m_viewMenu; -- 2.11.4.GIT