MP Lobby: implement all replay view options

This commit is contained in:
Charles Dang 2016-08-30 11:11:39 +11:00
parent a92f1751d4
commit 7baf9587ad
3 changed files with 40 additions and 15 deletions

View file

@ -666,13 +666,28 @@
[row]
[column]
border = "top"
border = "left,right,top"
border_size = 5
[toggle_button]
id = "skip_replay"
definition = "large"
label = _ "Quick replay"
[/toggle_button]
horizontal_grow = "true"
[menu_button]
id = "replay_options"
definition = "default"
[option]
label = _ "Normal Replays"
[/option]
[option]
label = _ "Quick Replays"
tooltip = _ "Skip quickly to the active turn when observing"
[/option]
[option]
label = _ "Enter Blindfolded"
tooltip = _ "Do not show the map until given control of a side"
[/option]
[/menu_button]
[/column]
[/row]
{GUI_HORIZONTAL_SPACER_LINE}

View file

@ -30,6 +30,7 @@
#else
#include "gui/widgets/listbox.hpp"
#endif
#include "gui/widgets/menu_button.hpp"
#include "gui/widgets/minimap.hpp"
#include "gui/widgets/multi_page.hpp"
#include "gui/widgets/scroll_label.hpp"
@ -946,11 +947,18 @@ void tlobby_main::pre_show(twindow& window)
find_widget<tbutton>(&window, "observe_global", false).set_active(false);
ttoggle_button& skip_replay
= find_widget<ttoggle_button>(&window, "skip_replay", false);
skip_replay.set_value(preferences::skip_mp_replay());
skip_replay.set_callback_state_change(
std::bind(&tlobby_main::skip_replay_changed_callback, this, _1));
tmenu_button& replay_options = find_widget<tmenu_button>(&window, "replay_options", false);
if(preferences::skip_mp_replay()) {
replay_options.set_selected(1);
}
if(preferences::blindfold_replay()) {
replay_options.set_selected(2);
}
replay_options.connect_click_handler(
std::bind(&tlobby_main::skip_replay_changed_callback, this, std::ref(window)));
filter_friends_ = find_widget<ttoggle_button>(&window, "filter_with_friends", false, true);
filter_ignored_ = find_widget<ttoggle_button>(&window, "filter_without_ignored", false, true);
@ -1743,10 +1751,12 @@ void tlobby_main::user_dialog_callback(user_info* info)
wesnothd_connection_.send_data(config("refresh_lobby"));
}
void tlobby_main::skip_replay_changed_callback(twidget& w)
void tlobby_main::skip_replay_changed_callback(twindow& window)
{
ttoggle_button& tb = dynamic_cast<ttoggle_button&>(w);
preferences::set_skip_mp_replay(tb.get_value_bool());
// TODO: this prefence should probably be controlled with an enum
const int value = find_widget<tmenu_button>(&window, "replay_options", false).get_value();
preferences::set_skip_mp_replay(value == 1);
preferences::set_blindfold_replay(value == 2);
}
void tlobby_main::send_to_server(const config& cfg)

View file

@ -344,7 +344,7 @@ private:
void user_dialog_callback(user_info* info);
void skip_replay_changed_callback(twidget& w);
void skip_replay_changed_callback(twindow& window);
/** Inherited from tdialog, implemented by REGISTER_DIALOG. */
virtual const std::string& window_id() const;