The Battle for Wesnoth  1.19.0-dev
mp_method_selection.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2008 - 2024
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/text_box.hpp"
26 #include "gui/widgets/window.hpp"
28 
29 namespace gui2::dialogs
30 {
31 
32 REGISTER_DIALOG(mp_method_selection)
33 
34 static const std::string forum_registration_url = "https://forums.wesnoth.org/ucp.php?mode=register";
35 
37 {
38  user_name_ = preferences::login();
39 
40  text_box* user_widget = find_widget<text_box>(&window, "user_name", false, true);
41  user_widget->set_value(user_name_);
43 
44  window.keyboard_capture(user_widget);
45 
46  listbox* list = find_widget<listbox>(&window, "method_list", false, true);
48 
49  connect_signal_mouse_left_click(find_widget<button>(&window, "register", false),
51 }
52 
54 {
55  if(get_retval() == retval::OK) {
56  listbox& list = find_widget<listbox>(&window, "method_list", false);
57  choice_ = static_cast<choice>(list.get_selected_row());
58 
59  text_box& user_widget = find_widget<text_box>(&window, "user_name", false);
60  user_widget.save_to_history();
61 
62  user_name_ = user_widget.get_value();
64  }
65 }
66 
67 } // namespace dialogs
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’ to the MP server.
virtual void post_show(window &window) override
Actions to be taken after the window has been shown.
std::string user_name_
The name to use on the MP server.
choice
Corresponds to each connection option.
The listbox class.
Definition: listbox.hpp:43
int get_selected_row() const
Returns the first selected row.
Definition: listbox.cpp:268
std::string get_value() const
virtual void set_value(const std::string &text)
The set_value is virtual for the password_box class.
void set_maximum_length(const std::size_t maximum_length)
Class for a single line text area.
Definition: text_box.hpp:142
void save_to_history()
Saves the text in the widget to the history.
Definition: text_box.hpp:149
base class of top level items, the only item which needs to store the final canvases to draw on.
Definition: window.hpp:63
void keyboard_capture(widget *widget)
Definition: window.cpp:1215
void add_to_keyboard_chain(widget *widget)
Adds the widget to the keyboard chain.
Definition: window.cpp:1221
This file contains the window object, this object is a top level container which has the event manage...
bool open_object([[maybe_unused]] const std::string &path_or_url)
Definition: open.cpp:46
static const std::string forum_registration_url
REGISTER_DIALOG(tod_new_schedule)
void connect_signal_mouse_left_click(dispatcher &dispatcher, const signal &signal)
Connects a signal handler for a left mouse button click.
Definition: dispatcher.cpp:177
@ OK
Dialog was closed with the OK button.
Definition: retval.hpp:35
const std::size_t max_login_size
Max length of a player name.
Definition: multiplayer.hpp:30
void set_login(const std::string &login)
std::string login()
Desktop environment interaction functions.