From ac187de0c99d7be7145abb82fc1027e88cd21144 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sat, 18 Jul 2015 16:01:57 +0300 Subject: [PATCH] "Maybe save" message. --HG-- branch : feature --- src/app/tape/tmainwindow.cpp | 34 ++++++++++++++++++++++++++++++++ src/app/tape/tmainwindow.h | 5 +++++ src/app/valentina/mainwindow.cpp | 2 +- 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index 60e15087f..4d03c6c94 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -120,6 +120,19 @@ void TMainWindow::FileOpen() } } +//--------------------------------------------------------------------------------------------------------------------- +void TMainWindow::closeEvent(QCloseEvent *event) +{ + if (MaybeSave()) + { + event->accept(); + } + else + { + event->ignore(); + } +} + //--------------------------------------------------------------------------------------------------------------------- void TMainWindow::FileSave() { @@ -495,3 +508,24 @@ bool TMainWindow::SaveMeasurements(const QString &fileName, QString &error) } return result; } + +//--------------------------------------------------------------------------------------------------------------------- +bool TMainWindow::MaybeSave() +{ + if (this->isWindowModified()) + { + QMessageBox::StandardButton ret; + ret = QMessageBox::warning(this, tr("Unsaved changes"), tr("Measurements have been modified.\n" + "Do you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); + if (ret == QMessageBox::Save) + { + FileSave(); + } + else if (ret == QMessageBox::Cancel) + { + return false; + } + } + return true; +} diff --git a/src/app/tape/tmainwindow.h b/src/app/tape/tmainwindow.h index c11e0b754..f8030b7c4 100644 --- a/src/app/tape/tmainwindow.h +++ b/src/app/tape/tmainwindow.h @@ -52,6 +52,9 @@ public slots: void FileNew(); void FileOpen(); +protected: + virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; + private slots: void FileSave(); void FileSaveAs(); @@ -82,6 +85,8 @@ private: void MeasurementsWasSaved(bool saved); void SetCurrentFile(const QString &fileName); bool SaveMeasurements(const QString &fileName, QString &error); + + bool MaybeSave(); }; #endif // TMAINWINDOW_H diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 2670b2f35..39efcaacc 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -2437,7 +2437,7 @@ bool MainWindow::MaybeSave() if (this->isWindowModified() && guiEnabled) { QMessageBox::StandardButton ret; - ret = QMessageBox::warning(this, tr("Unsaved change"), tr("The pattern has been modified.\n" + ret = QMessageBox::warning(this, tr("Unsaved changes"), tr("The pattern has been modified.\n" "Do you want to save your changes?"), QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); if (ret == QMessageBox::Save)