Author: mir3x Date: Thu Dec 18 18:26:40 2014 New Revision: 27342 URL: http://svn.gna.org/viewcvs/freeciv?rev=27342&view=rev Log: Added 'Save', 'Save As' and 'Leave Game' menus to Qt-client
See bug #23011 Modified: trunk/client/gui-qt/menu.cpp trunk/client/gui-qt/menu.h Modified: trunk/client/gui-qt/menu.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/menu.cpp?rev=27342&r1=27341&r2=27342&view=diff ============================================================================== --- trunk/client/gui-qt/menu.cpp (original) +++ trunk/client/gui-qt/menu.cpp Thu Dec 18 18:26:40 2014 @@ -17,9 +17,13 @@ // Qt #include <QApplication> +#include <QFileDialog> #include <QMainWindow> #include <QMessageBox> #include <QScrollArea> + +// utility +#include "string_vector.h" // common #include "game.h" @@ -28,6 +32,7 @@ #include "unit.h" // client +#include "connectdlg_common.h" #include "control.h" #include "helpdata.h" @@ -284,6 +289,20 @@ act = menu->addAction(_("Messages")); connect(act, SIGNAL(triggered()), this, SLOT(messages_options())); menu = pr; + menu->addSeparator(); + act = menu->addAction(_("Save Game")); + act->setShortcut(QKeySequence(tr("Ctrl+s"))); + act->setIcon(style()->standardIcon(QStyle::SP_DialogSaveButton)); + menu_list.insertMulti(SAVE, act); + connect(act, SIGNAL(triggered()), this, SLOT(save_game())); + act = menu->addAction(_("Save Game As...")); + menu_list.insertMulti(SAVE, act); + act->setIcon(style()->standardIcon(QStyle::SP_DialogSaveButton)); + connect(act, SIGNAL(triggered()), this, SLOT(save_game_as())); + menu->addSeparator(); + act = menu->addAction(_("Leave game")); + act->setIcon(style()->standardIcon(QStyle::SP_DialogDiscardButton)); + connect(act, SIGNAL(triggered()), this, SLOT(back_to_menu())); act = menu->addAction(_("Quit")); act->setIcon(style()->standardIcon(QStyle::SP_TitleBarCloseButton)); connect(act, SIGNAL(triggered()), this, SLOT(quit_game())); @@ -1148,7 +1167,11 @@ i.value()->setEnabled(true); } break; - + case SAVE: + if (can_client_access_hack() && C_S_RUNNING <= client_state()) { + i.value()->setEnabled(true); + } + break; default: break; } @@ -1981,3 +2004,65 @@ { popup_quit_dialog(); } + +/*************************************************************************** + Menu Save Game +***************************************************************************/ +void mr_menu::save_game() +{ + send_save_game(NULL); +} + +/*************************************************************************** + Menu Save Game As... +***************************************************************************/ +void mr_menu::save_game_as() +{ + QString str; + QString current_file; + QString location; + + strvec_iterate(get_save_dirs(), dirname) { + location = dirname; + // choose last location + } strvec_iterate_end; + + str = QString(_("Save Games")) + + QString(" (*.sav *.sav.bz2 *.sav.gz *.sav.xz)"); + current_file = QFileDialog::getSaveFileName(gui()->central_wdg, + _("Save Game As..."), + location, str); + if (current_file.isEmpty() == false) { + send_save_game(current_file.toLocal8Bit().data()); + } +} + +/*************************************************************************** + Back to Main Menu +***************************************************************************/ +void mr_menu::back_to_menu() +{ + QMessageBox ask(gui()->central_wdg); + int ret; + if (is_server_running()) { + ask.setText(_("Leaving a local game will end it!")); + ask.setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok); + ask.setDefaultButton(QMessageBox::Cancel); + ask.setIcon(QMessageBox::Warning); + ask.setWindowTitle("Leave game"); + ret = ask.exec(); + + switch (ret) { + case QMessageBox::Cancel: + break; + case QMessageBox::Ok: + if (client.conn.used) { + disconnect_from_server(); + } + break; + } + } else { + disconnect_from_server(); + } +} + Modified: trunk/client/gui-qt/menu.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/menu.h?rev=27342&r1=27341&r2=27342&view=diff ============================================================================== --- trunk/client/gui-qt/menu.h (original) +++ trunk/client/gui-qt/menu.h Thu Dec 18 18:26:40 2014 @@ -69,7 +69,8 @@ ORDER_DIPLOMAT_DLG, NUKE, UPGRADE, - SETTLER + SETTLER, + SAVE }; /************************************************************************** @@ -135,6 +136,9 @@ void local_options(); void server_options(); void messages_options(); + void save_game(); + void save_game_as(); + void back_to_menu(); void quit_game(); /* help menu */ _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits