The Battle for Wesnoth  1.17.12+dev
mp_method_selection.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2008 - 2022
3  by Mark de Wever <koraq@xs4all.nl>
4  Part of the Battle for Wesnoth Project https://www.wesnoth.org/
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY.
12 
13  See the COPYING file for more details.
14 */
15 
16 #define GETTEXT_DOMAIN "wesnoth-lib"
17 
19 
20 #include "desktop/open.hpp"
23 #include "gui/widgets/button.hpp"
24 #include "gui/widgets/listbox.hpp"
25 #include "gui/widgets/settings.hpp"
26 #include "gui/widgets/text_box.hpp"
27 #include "gui/widgets/window.hpp"
29 
30 namespace gui2::dialogs
31 {
32 
33 REGISTER_DIALOG(mp_method_selection)
34 
35 static const std::string forum_registration_url = "https://forums.wesnoth.org/ucp.php?mode=register";
36 
38 {
39  user_name_ = preferences::login();
40 
41  text_box* user_widget = find_widget<text_box>(&window, "user_name", false, true);
42  user_widget->set_value(user_name_);
44 
45  window.keyboard_capture(user_widget);
46 
47  listbox* list = find_widget<listbox>(&window, "method_list", false, true);
48  window.add_to_keyboard_chain(list);
49 
50  connect_signal_mouse_left_click(find_widget<button>(&window, "register", false),
52 }
53 
55 {
56  if(get_retval() == retval::OK) {
57  listbox& list = find_widget<listbox>(&window, "method_list", false);
58  choice_ = static_cast<choice>(list.get_selected_row());
59 
60  text_box& user_widget = find_widget<text_box>(&window, "user_name", false);
61  user_widget.save_to_history();
62 
63  user_name_ = user_widget.get_value();
65  }
66 }
67 
68 } // namespace dialogs
window(const builder_window::window_resolution &definition)
< Needs to be initialized in show.
Definition: window.cpp:263
const std::size_t max_login_size
Max length of a player name.
Definition: multiplayer.hpp:30
void connect_signal_mouse_left_click(dispatcher &dispatcher, const signal &signal)
Connects a signal handler for a left mouse button click.
Definition: dispatcher.cpp:179
std::string user_name_
The name to use on the MP server.
void set_maximum_length(const std::size_t maximum_length)
virtual void post_show(window &window) override
Actions to be taken after the window has been shown.
std::string get_value() const
This file contains the window object, this object is a top level container which has the event manage...
void save_to_history()
Saves the text in the widget to the history.
Definition: text_box.hpp:149
STL namespace.
int get_selected_row() const
Returns the first selected row.
Definition: listbox.cpp:270
Class for a single line text area.
Definition: text_box.hpp:141
The listbox class.
Definition: listbox.hpp:45
Desktop environment interaction functions.
This file contains the settings handling of the widget library.
void set_login(const std::string &login)
static const std::string forum_registration_url
std::string login()
bool open_object([[maybe_unused]] const std::string &path_or_url)
Definition: open.cpp:47
choice
Corresponds to each connection option.
virtual void set_value(const std::string &text)
The set_value is virtual for the password_box class.
int get_retval() const
Returns the cached window exit code.
This shows the dialog to select the kind of MP game the user wants to play.
choice choice_
The selected method to `connect&#39; to the MP server.
Dialog was closed with the OK button.
Definition: retval.hpp:35
base class of top level items, the only item which needs to store the final canvases to draw on...
Definition: window.hpp:66