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
[email protected]
https://mail.gna.org/listinfo/freeciv-commits