The Battle for Wesnoth  1.13.10+dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
gui2::dialogs::mp_lobby Class Reference

#include <lobby.hpp>

Inheritance diagram for gui2::dialogs::mp_lobby:
Inheritance graph

Public Types

enum  lobby_result {
  QUIT, JOIN, OBSERVE, CREATE,
  RELOAD_CONFIG
}
 

Public Member Functions

 mp_lobby (const config &game_config, mp::lobby_info &info, wesnothd_connection &connection)
 
 ~mp_lobby ()
 
int get_joined_game_id () const
 
void update_gamelist ()
 
void update_playerlist ()
 
- Public Member Functions inherited from gui2::dialogs::modal_dialog
 modal_dialog ()
 
virtual ~modal_dialog ()
 
bool show (CVideo &video, const unsigned auto_close_time=0)
 Shows the window. More...
 
windowget_window () const
 Returns a pointer to the dialog's window. More...
 
int get_retval () const
 
void set_always_save_fields (const bool always_save_fields)
 
void set_restore (const bool restore)
 
void set_allow_plugin_skip (const bool allow_plugin_skip)
 
void set_show_even_without_video (const bool show_even_without_video)
 
- Public Member Functions inherited from quit_confirmation
 quit_confirmation (const std::function< bool()> &prompt=&quit_confirmation::default_prompt)
 
 ~quit_confirmation ()
 

Protected Member Functions

void update_gamelist_header ()
 
void update_gamelist_diff ()
 
void update_gamelist_filter ()
 
std::map< std::string, string_mapmake_game_row_data (const mp::game_info &game)
 
void adjust_game_row_contents (const mp::game_info &game, int idx, grid *grid, bool add_callbacks=true)
 
- Protected Member Functions inherited from gui2::dialogs::modal_dialog
field_boolregister_bool (const std::string &id, const bool mandatory, const std::function< bool()> callback_load_value=nullptr, const std::function< void(bool)> callback_save_value=nullptr, const std::function< void(widget &)> callback_change=nullptr, const bool initial_fire=false)
 Creates a new boolean field. More...
 
field_boolregister_bool (const std::string &id, const bool mandatory, bool &linked_variable, const std::function< void(widget &)> callback_change=nullptr, const bool initial_fire=false)
 Creates a new boolean field. More...
 
field_integerregister_integer (const std::string &id, const bool mandatory, const std::function< int()> callback_load_value=nullptr, const std::function< void(int)> callback_save_value=nullptr)
 Creates a new integer field. More...
 
field_integerregister_integer (const std::string &id, const bool mandatory, int &linked_variable)
 Creates a new integer field. More...
 
field_textregister_text (const std::string &id, const bool mandatory, const std::function< std::string()> callback_load_value=nullptr, const std::function< void(const std::string &)> callback_save_value=nullptr, const bool capture_focus=false)
 Creates a new text field. More...
 
field_textregister_text (const std::string &id, const bool mandatory, std::string &linked_variable, const bool capture_focus=false)
 Creates a new text field. More...
 
field_labelregister_label (const std::string &id, const bool mandatory, const std::string &text, const bool use_markup=false)
 Registers a new styled_widget as a label. More...
 
field_labelregister_image (const std::string &id, const bool mandatory, const std::string &filename)
 Registers a new styled_widget as image. More...
 

Private Member Functions

void update_selected_game ()
 
void network_handler ()
 Network polling callback. More...
 
void process_network_data (const config &data)
 
void process_gamelist (const config &data)
 
void process_gamelist_diff (const config &data)
 
void join_global_button_callback (window &window)
 
void observe_global_button_callback (window &window)
 
void join_or_observe (int index)
 
bool do_game_join (int idx, bool observe)
 Assemble and send a game join request. More...
 
void show_preferences_button_callback (window &window)
 
void refresh_lobby ()
 
void game_filter_reload ()
 
void game_filter_change_callback ()
 
void game_filter_keypress_callback (const SDL_Keycode key)
 
void gamelist_change_callback ()
 
void player_filter_callback ()
 
void user_dialog_callback (mp::user_info *info)
 
void skip_replay_changed_callback (window &window)
 
bool exit_hook (window &window)
 
int get_game_index_from_id (const int game_id) const
 
virtual const std::string & window_id () const override
 Inherited from modal_dialog, implemented by REGISTER_DIALOG. More...
 
virtual void post_build (window &window) override
 Inherited from modal_dialog. More...
 
virtual void pre_show (window &window) override
 Inherited from modal_dialog. More...
 
virtual void post_show (window &window) override
 Inherited from modal_dialog. More...
 
- Private Member Functions inherited from gui2::dialogs::plugin_executor
 plugin_executor ()
 
 ~plugin_executor ()
 

Static Private Member Functions

static bool logout_prompt ()
 

Private Attributes

const configgame_config_
 
listboxgamelistbox_
 
mp::lobby_infolobby_info_
 
chatboxchatbox_
 
toggle_buttonfilter_friends_
 
toggle_buttonfilter_ignored_
 
toggle_buttonfilter_slots_
 
toggle_buttonfilter_invert_
 
text_boxfilter_text_
 
int selected_game_id_
 
player_list player_list_
 
bool player_list_dirty_
 
bool gamelist_dirty_
 
unsigned last_gamelist_update_
 
bool gamelist_diff_update_
 
wesnothd_connectionnetwork_connection_
 
size_t lobby_update_timer_
 Timer for updating the lobby. More...
 
std::vector< int > gamelist_id_at_row_
 
bool delay_playerlist_update_
 
bool delay_gamelist_update_
 
int joined_game_id_
 
- Private Attributes inherited from gui2::dialogs::plugin_executor
std::unique_ptr< plugins_contextplugins_context_
 

Friends

struct lobby_delay_gamelist_update_guard
 

Additional Inherited Members

- Static Public Member Functions inherited from quit_confirmation
static bool quit ()
 Shows the quit confirmation if needed. More...
 
static void quit_to_title ()
 
static void quit_to_desktop ()
 
static bool show_prompt (const std::string &message)
 
static bool default_prompt ()
 

Detailed Description

Definition at line 72 of file lobby.hpp.

Member Enumeration Documentation

Enumerator
QUIT 
JOIN 
OBSERVE 
CREATE 
RELOAD_CONFIG 

Definition at line 97 of file lobby.hpp.

Constructor & Destructor Documentation

gui2::dialogs::mp_lobby::mp_lobby ( const config game_config,
mp::lobby_info info,
wesnothd_connection connection 
)
gui2::dialogs::mp_lobby::~mp_lobby ( )

Definition at line 169 of file lobby.cpp.

References lobby_update_timer_, and gui2::remove_timer().

Member Function Documentation

void gui2::dialogs::mp_lobby::adjust_game_row_contents ( const mp::game_info game,
int  idx,
grid grid,
bool  add_callbacks = true 
)
protected
bool gui2::dialogs::mp_lobby::do_game_join ( int  idx,
bool  observe 
)
private
bool gui2::dialogs::mp_lobby::exit_hook ( window window)
private

Definition at line 658 of file lobby.cpp.

References gui2::window::CANCEL, gui2::window::get_retval(), and quit_confirmation::quit().

Referenced by pre_show().

void gui2::dialogs::mp_lobby::game_filter_change_callback ( )
private

Definition at line 1064 of file lobby.cpp.

References game_filter_reload(), and update_gamelist_filter().

Referenced by pre_show().

void gui2::dialogs::mp_lobby::game_filter_keypress_callback ( const SDL_Keycode  key)
private

Definition at line 1056 of file lobby.cpp.

References game_filter_reload(), and update_gamelist_filter().

Referenced by pre_show().

void gui2::dialogs::mp_lobby::game_filter_reload ( )
private
void gui2::dialogs::mp_lobby::gamelist_change_callback ( )
private

Definition at line 1070 of file lobby.cpp.

References update_selected_game().

Referenced by pre_show().

int gui2::dialogs::mp_lobby::get_game_index_from_id ( const int  game_id) const
private
int gui2::dialogs::mp_lobby::get_joined_game_id ( ) const
inline

Definition at line 79 of file lobby.hpp.

References joined_game_id_.

Referenced by enter_lobby_mode().

void gui2::dialogs::mp_lobby::join_global_button_callback ( window window)
private
void gui2::dialogs::mp_lobby::join_or_observe ( int  index)
private
bool gui2::dialogs::mp_lobby::logout_prompt ( )
staticprivate

Definition at line 122 of file lobby.cpp.

References _(), and quit_confirmation::show_prompt().

std::map< std::string, string_map > gui2::dialogs::mp_lobby::make_game_row_data ( const mp::game_info game)
protected
void gui2::dialogs::mp_lobby::network_handler ( )
private
void gui2::dialogs::mp_lobby::observe_global_button_callback ( window window)
private
void gui2::dialogs::mp_lobby::player_filter_callback ( )
private
void gui2::dialogs::mp_lobby::post_build ( window window)
overrideprivatevirtual

Inherited from modal_dialog.

Todo:
Should become a global hotkey after 1.8, then remove it here.

Reimplemented from gui2::dialogs::modal_dialog.

Definition at line 182 of file lobby.cpp.

References gui2::dialogs::fullscreen(), hotkey::HOTKEY_FULLSCREEN, hotkey::HOTKEY_PREFERENCES, gui2::event::dispatcher::register_hotkey(), show_preferences_button_callback(), gui2::window::video(), and w.

void gui2::dialogs::mp_lobby::post_show ( window window)
overrideprivatevirtual
void gui2::dialogs::mp_lobby::pre_show ( window window)
overrideprivatevirtual

Inherited from modal_dialog.

Reimplemented from gui2::dialogs::modal_dialog.

Definition at line 667 of file lobby.cpp.

References gui2::chatbox::active_window_changed(), gui2::add_timer(), preferences::blindfold_replay(), gui2::window::CANCEL, chatbox_, gui2::menu_button::connect_click_handler(), gui2::event::connect_signal_mouse_left_click(), gui2::event::connect_signal_notify_modified(), gui2::event::connect_signal_pre_key_press(), CREATE, do_game_join(), exit_hook(), filter_friends_, filter_ignored_, filter_invert_, filter_slots_, filter_text_, game_config_, game_filter_change_callback(), game_filter_keypress_callback(), game_filter_reload(), mp::lobby_info::gamelist(), gamelist_change_callback(), gamelistbox_, mp::lobby_info::games(), get_game_index_from_id(), config::has_attribute(), gui2::dialogs::player_list::init(), JOIN, join_global_button_callback(), lobby_info_, game_config::lobby_network_timer, lobby_update_timer_, network_connection_, network_handler(), OBSERVE, observe_global_button_callback(), player_filter_callback(), player_list_, player_list_dirty_, preferences::playerlist_sort_name(), preferences::playerlist_sort_relation(), gui2::dialogs::plugin_executor::plugins_context_, refresh_lobby(), gui2::chatbox::room_window_open(), SCOPE_LB, selected_game_id_, gui2::chatbox::send_chat_message(), gui2::chatbox::set_active_window_changed_callback(), gui2::chatbox::set_lobby_info(), gui2::menu_button::set_selected(), gui2::toggle_button::set_value(), gui2::chatbox::set_wesnothd_connection(), show_preferences_button_callback(), preferences::skip_mp_replay(), skip_replay_changed_callback(), gui2::dialogs::player_list::sort_by_name, gui2::dialogs::player_list::sort_by_relation, and gui2::dialogs::player_list::update_sort_icons().

void gui2::dialogs::mp_lobby::process_gamelist ( const config data)
private
void gui2::dialogs::mp_lobby::process_gamelist_diff ( const config data)
private
void gui2::dialogs::mp_lobby::process_network_data ( const config data)
private
void gui2::dialogs::mp_lobby::refresh_lobby ( )
private
void gui2::dialogs::mp_lobby::show_preferences_button_callback ( window window)
private

The screen size might have changed force an update of the size.

Todo:
This might no longer be needed when gui2 is done.

The screen size might have changed force an update of the size.

Todo:
This might no longer be needed when gui2 is done.

Definition at line 998 of file lobby.cpp.

References gui2::dialogs::preferences_dialog::display(), game_config_, gui2::settings::gamemap_height, gui2::settings::gamemap_width, gui2::window::invalidate_layout(), refresh_lobby(), screen_area(), gui2::settings::screen_height, gui2::settings::screen_width, and gui2::window::video().

Referenced by post_build(), and pre_show().

void gui2::dialogs::mp_lobby::skip_replay_changed_callback ( window window)
private

Definition at line 1125 of file lobby.cpp.

References preferences::set_blindfold_replay(), and preferences::set_skip_mp_replay().

Referenced by pre_show().

void gui2::dialogs::mp_lobby::update_gamelist ( )
void gui2::dialogs::mp_lobby::update_gamelist_diff ( )
protected
void gui2::dialogs::mp_lobby::update_gamelist_filter ( )
protected
void gui2::dialogs::mp_lobby::update_gamelist_header ( )
protected
void gui2::dialogs::mp_lobby::update_playerlist ( )
void gui2::dialogs::mp_lobby::update_selected_game ( )
private
void gui2::dialogs::mp_lobby::user_dialog_callback ( mp::user_info info)
private
virtual const std::string& gui2::dialogs::mp_lobby::window_id ( ) const
overrideprivatevirtual

Inherited from modal_dialog, implemented by REGISTER_DIALOG.

Implements gui2::dialogs::modal_dialog.

Friends And Related Function Documentation

friend struct lobby_delay_gamelist_update_guard
friend

Definition at line 214 of file lobby.hpp.

Member Data Documentation

chatbox* gui2::dialogs::mp_lobby::chatbox_
private

Definition at line 177 of file lobby.hpp.

Referenced by pre_show(), process_network_data(), update_playerlist(), and user_dialog_callback().

bool gui2::dialogs::mp_lobby::delay_gamelist_update_
private
bool gui2::dialogs::mp_lobby::delay_playerlist_update_
private

Definition at line 208 of file lobby.hpp.

Referenced by update_playerlist(), and user_dialog_callback().

toggle_button* gui2::dialogs::mp_lobby::filter_friends_
private

Definition at line 179 of file lobby.hpp.

Referenced by game_filter_reload(), and pre_show().

toggle_button* gui2::dialogs::mp_lobby::filter_ignored_
private

Definition at line 181 of file lobby.hpp.

Referenced by game_filter_reload(), and pre_show().

toggle_button* gui2::dialogs::mp_lobby::filter_invert_
private

Definition at line 185 of file lobby.hpp.

Referenced by game_filter_reload(), and pre_show().

toggle_button* gui2::dialogs::mp_lobby::filter_slots_
private

Definition at line 183 of file lobby.hpp.

Referenced by game_filter_reload(), and pre_show().

text_box* gui2::dialogs::mp_lobby::filter_text_
private

Definition at line 187 of file lobby.hpp.

Referenced by game_filter_reload(), and pre_show().

const config& gui2::dialogs::mp_lobby::game_config_
private

Definition at line 171 of file lobby.hpp.

Referenced by adjust_game_row_contents(), pre_show(), and show_preferences_button_callback().

bool gui2::dialogs::mp_lobby::gamelist_diff_update_
private

Definition at line 199 of file lobby.hpp.

Referenced by network_handler(), and process_gamelist().

bool gui2::dialogs::mp_lobby::gamelist_dirty_
private
std::vector<int> gui2::dialogs::mp_lobby::gamelist_id_at_row_
private

Definition at line 206 of file lobby.hpp.

Referenced by update_gamelist(), and update_gamelist_diff().

listbox* gui2::dialogs::mp_lobby::gamelistbox_
private
int gui2::dialogs::mp_lobby::joined_game_id_
private

Definition at line 212 of file lobby.hpp.

Referenced by do_game_join(), and get_joined_game_id().

unsigned gui2::dialogs::mp_lobby::last_gamelist_update_
private

Definition at line 197 of file lobby.hpp.

Referenced by network_handler(), update_gamelist(), and update_gamelist_diff().

mp::lobby_info& gui2::dialogs::mp_lobby::lobby_info_
private
size_t gui2::dialogs::mp_lobby::lobby_update_timer_
private

Timer for updating the lobby.

Definition at line 204 of file lobby.hpp.

Referenced by post_show(), pre_show(), and ~mp_lobby().

wesnothd_connection& gui2::dialogs::mp_lobby::network_connection_
private

Definition at line 201 of file lobby.hpp.

Referenced by do_game_join(), network_handler(), pre_show(), and refresh_lobby().

player_list gui2::dialogs::mp_lobby::player_list_
private

Definition at line 191 of file lobby.hpp.

Referenced by player_filter_callback(), pre_show(), and update_playerlist().

bool gui2::dialogs::mp_lobby::player_list_dirty_
private
int gui2::dialogs::mp_lobby::selected_game_id_
private

The documentation for this class was generated from the following files: