Author: cazfi Date: Tue Apr 28 18:16:26 2015 New Revision: 28932 URL: http://svn.gna.org/viewcvs/freeciv?rev=28932&view=rev Log: Confirm Qt modpack installer quit if modpack download or installation is in progress.
See patch #6042 Modified: branches/S2_5/tools/mpgui_qt.cpp branches/S2_5/tools/mpgui_qt.h Modified: branches/S2_5/tools/mpgui_qt.cpp URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/tools/mpgui_qt.cpp?rev=28932&r1=28931&r2=28932&view=diff ============================================================================== --- branches/S2_5/tools/mpgui_qt.cpp (original) +++ branches/S2_5/tools/mpgui_qt.cpp Tue Apr 28 18:16:26 2015 @@ -17,11 +17,13 @@ // Qt #include <QApplication> +#include <QCloseEvent> #include <QHBoxLayout> #include <QHeaderView> #include <QLabel> #include <QLineEdit> #include <QMainWindow> +#include <QMessageBox> #include <QProgressBar> #include <QPushButton> #include <QTableWidget> @@ -106,15 +108,15 @@ if (ui_options != -1) { QApplication *qapp; - QMainWindow *main_window; + mpgui_main *main_window; QWidget *central; const char *errmsg; load_install_info_lists(&fcmp); qapp = new QApplication(ui_options, argv); - main_window = new QMainWindow; central = new QWidget; + main_window = new mpgui_main(qapp, central); main_window->setGeometry(0, 30, 640, 60); main_window->setWindowTitle(QString::fromUtf8(_("Freeciv modpack installer (Qt)"))); @@ -455,3 +457,49 @@ URL_given(); } + +/************************************************************************** + Main window constructor +**************************************************************************/ +mpgui_main::mpgui_main(QApplication *qapp_in, QWidget *central_in) : QMainWindow() +{ + qapp = qapp_in; + central = central_in; +} + +/************************************************************************** + Open dialog to confirm that user wants to quit modpack installer. +**************************************************************************/ +void mpgui_main::popup_quit_dialog() +{ + QMessageBox ask(central); + int ret; + + ask.setText(_("Are you sure you want to quit?")); + ask.setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok); + ask.setDefaultButton(QMessageBox::Cancel); + ask.setIcon(QMessageBox::Warning); + ask.setWindowTitle(_("Quit?")); + ret = ask.exec(); + + switch (ret) { + case QMessageBox::Cancel: + return; + break; + case QMessageBox::Ok: + qapp->quit(); + break; + } +} + +/************************************************************************** + User clicked windows close button. +**************************************************************************/ +void mpgui_main::closeEvent(QCloseEvent *event) +{ + if (worker != nullptr && worker->isRunning()) { + // Download in progress. Confirm quit from user. + popup_quit_dialog(); + event->ignore(); + } +} Modified: branches/S2_5/tools/mpgui_qt.h URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_5/tools/mpgui_qt.h?rev=28932&r1=28931&r2=28932&view=diff ============================================================================== --- branches/S2_5/tools/mpgui_qt.h (original) +++ branches/S2_5/tools/mpgui_qt.h Tue Apr 28 18:16:26 2015 @@ -19,6 +19,7 @@ #endif // Qt +#include <QMainWindow> #include <QObject> // tools @@ -28,6 +29,22 @@ class QLineEdit; class QProgressBar; class QTableWidget; + +class mpgui_main : public QMainWindow +{ + Q_OBJECT + +public: + mpgui_main(QApplication *qapp_in, QWidget *central_in); + +private: + void popup_quit_dialog(); + QApplication *qapp; + QWidget *central; + +protected: + void closeEvent(QCloseEvent *event); +}; class mpgui : public QObject { _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits