mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 23:17:46 +00:00
Hearts: Allow player to set their name
Added a new settings dialog to Hearts with a textbox to allow the player to set a name, which is persisted in the Hearts config file.
This commit is contained in:
parent
e706de8f91
commit
d27616cf36
6 changed files with 104 additions and 4 deletions
52
Userland/Games/Hearts/SettingsDialog.cpp
Normal file
52
Userland/Games/Hearts/SettingsDialog.cpp
Normal file
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright (c) 2021, the SerenityOS developers.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "SettingsDialog.h"
|
||||
#include <LibGUI/BoxLayout.h>
|
||||
#include <LibGUI/Button.h>
|
||||
#include <LibGUI/Label.h>
|
||||
#include <LibGUI/TextBox.h>
|
||||
|
||||
SettingsDialog::SettingsDialog(GUI::Window* parent, String player_name)
|
||||
: GUI::Dialog(parent)
|
||||
, m_player_name(move(player_name))
|
||||
{
|
||||
set_rect({ 0, 0, 250, 75 });
|
||||
set_title("Settings");
|
||||
set_icon(parent->icon());
|
||||
set_resizable(false);
|
||||
|
||||
auto& main_widget = set_main_widget<GUI::Widget>();
|
||||
main_widget.set_fill_with_background_color(true);
|
||||
|
||||
auto& layout = main_widget.set_layout<GUI::VerticalBoxLayout>();
|
||||
layout.set_margins({ 4, 4, 4, 4 });
|
||||
|
||||
auto& name_box = main_widget.add<GUI::Widget>();
|
||||
auto& input_layout = name_box.set_layout<GUI::HorizontalBoxLayout>();
|
||||
input_layout.set_spacing(4);
|
||||
|
||||
auto& name_label = name_box.add<GUI::Label>("Name:");
|
||||
name_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
|
||||
|
||||
auto& textbox = name_box.add<GUI::TextBox>();
|
||||
textbox.set_text(m_player_name);
|
||||
textbox.on_change = [&] {
|
||||
m_player_name = textbox.text();
|
||||
};
|
||||
|
||||
auto& button_box = main_widget.add<GUI::Widget>();
|
||||
auto& button_layout = button_box.set_layout<GUI::HorizontalBoxLayout>();
|
||||
button_layout.set_spacing(10);
|
||||
|
||||
button_box.add<GUI::Button>("Cancel").on_click = [this](auto) {
|
||||
done(Dialog::ExecCancel);
|
||||
};
|
||||
|
||||
button_box.add<GUI::Button>("OK").on_click = [this](auto) {
|
||||
done(Dialog::ExecOK);
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue