Author: mir3x Date: Sun Jul 24 20:16:44 2016 New Revision: 33320 URL: http://svn.gna.org/viewcvs/freeciv?rev=33320&view=rev Log: Qt client - new layout for pregame options. Patch by Louis Moureaux <louis94>
See patch #7489 Modified: trunk/client/gui-qt/fc_client.cpp trunk/client/gui-qt/fc_client.h trunk/client/gui-qt/pages.cpp Modified: trunk/client/gui-qt/fc_client.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/fc_client.cpp?rev=33320&r1=33319&r2=33320&view=diff ============================================================================== --- trunk/client/gui-qt/fc_client.cpp (original) +++ trunk/client/gui-qt/fc_client.cpp Sun Jul 24 20:16:44 2016 @@ -914,14 +914,20 @@ void pregame_options::init() { QFormLayout *layout; + QHBoxLayout *hbox = nullptr; QPushButton *but; int level; layout = new QFormLayout(this); + nation = new QPushButton(this); max_players = new QSpinBox(this); ailevel = new QComboBox(this); cruleset = new QComboBox(this); max_players->setRange(1, MAX_NUM_PLAYERS); + + // Text and icon set by update_buttons() + connect(nation, &QPushButton::clicked, + this, &pregame_options::pick_nation); for (level = 0; level < AI_LEVEL_COUNT; level++) { if (is_settable_ai_level(static_cast<ai_level>(level))) { @@ -946,11 +952,17 @@ SLOT(popup_server_options())); layout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); - layout->addRow(_("Number of Players (including AI):"), max_players); - layout->addRow(_("AI Skill Level:"), ailevel); - layout->addRow(_("Ruleset"), cruleset); + layout->addRow(_("Nation:"), nation); + layout->addRow(_("Rules:"), cruleset); + + hbox = new QHBoxLayout(); + hbox->addWidget(max_players); + hbox->addWidget(ailevel); + layout->addRow(_("Players:"), hbox); layout->addWidget(but); setLayout(layout); + + update_buttons(); } /**************************************************************************** @@ -987,6 +999,30 @@ } /**************************************************************************** + Updates the buttons whenever the game state has changed +****************************************************************************/ +void pregame_options::update_buttons() +{ + struct sprite *psprite = nullptr; + QPixmap *pixmap = nullptr; + const struct player *pplayer = client_player(); + + // Update the "Select Nation" button + if (pplayer != nullptr) { + if (pplayer->nation != nullptr) { + nation->setText(nation_adjective_for_player(pplayer)); + psprite = get_nation_shield_sprite(tileset, pplayer->nation); + pixmap = psprite->pm; + nation->setIconSize(pixmap->size()); + nation->setIcon(QIcon(*pixmap)); + } else { + nation->setText(_("Random")); + nation->setIcon(fc_icons::instance()->get_icon("flush-random")); + } + } +} + +/**************************************************************************** Slot for changing aifill value ****************************************************************************/ void pregame_options::max_players_change(int i) @@ -1018,6 +1054,14 @@ } /**************************************************************************** + Slot for picking a nation +****************************************************************************/ +void pregame_options::pick_nation() +{ + popup_races_dialog(client_player()); +} + +/**************************************************************************** Popups client options ****************************************************************************/ void pregame_options::popup_server_options() Modified: trunk/client/gui-qt/fc_client.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/fc_client.h?rev=33320&r1=33319&r2=33320&view=diff ============================================================================== --- trunk/client/gui-qt/fc_client.h (original) +++ trunk/client/gui-qt/fc_client.h Sun Jul 24 20:16:44 2016 @@ -336,6 +336,7 @@ Q_OBJECT QComboBox *ailevel; QComboBox *cruleset; + QPushButton *nation; QSpinBox *max_players; public: pregame_options() {}; @@ -343,10 +344,12 @@ void set_rulesets(int num_rulesets, char **rulesets); void set_aifill(int aifill); + void update_buttons(); private slots: void max_players_change(int i); void ailevel_change(int i); void ruleset_change(int i); + void pick_nation(); public slots: void popup_server_options(); }; Modified: trunk/client/gui-qt/pages.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/pages.cpp?rev=33320&r1=33319&r2=33320&view=diff ============================================================================== --- trunk/client/gui-qt/pages.cpp (original) +++ trunk/client/gui-qt/pages.cpp Sun Jul 24 20:16:44 2016 @@ -1501,6 +1501,8 @@ sensitive = game.info.is_new_game; pr_options->setEnabled(sensitive); + + gui()->pr_options->update_buttons(); } /*************************************************************************** _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits