diff --git a/Userland/Applications/KeyboardSettings/CMakeLists.txt b/Userland/Applications/KeyboardSettings/CMakeLists.txt index 5edad16209..9111022f7f 100644 --- a/Userland/Applications/KeyboardSettings/CMakeLists.txt +++ b/Userland/Applications/KeyboardSettings/CMakeLists.txt @@ -4,8 +4,11 @@ serenity_component( TARGETS KeyboardSettings ) +compile_gml(Keyboard.gml KeyboardWidgetGML.h keyboard_widget_gml) + set(SOURCES main.cpp + KeyboardWidgetGML.h ) serenity_app(KeyboardSettings ICON app-keyboard-settings) diff --git a/Userland/Applications/KeyboardSettings/Keyboard.gml b/Userland/Applications/KeyboardSettings/Keyboard.gml new file mode 100644 index 0000000000..0e09cb125c --- /dev/null +++ b/Userland/Applications/KeyboardSettings/Keyboard.gml @@ -0,0 +1,48 @@ +@GUI::Frame { + fill_with_background_color: true + + layout: @GUI::VerticalBoxLayout { + margins: [10] + spacing: 5 + } + + @GUI::GroupBox { + title: "Mapping" + fixed_height: 60 + + layout: @GUI::VerticalBoxLayout { + margins: [16, 8, 8] + spacing: 2 + } + + @GUI::Widget { + layout: @GUI::HorizontalBoxLayout { + spacing: 16 + } + + @GUI::Label { + text: "Character mapping file:" + fixed_width: 130 + text_alignment: "CenterLeft" + } + + @GUI::ComboBox { + name: "character_map_file_combo" + } + } + } + + @GUI::GroupBox { + title: "Num Lock" + fixed_height: 60 + + layout: @GUI::HorizontalBoxLayout { + margins: [16, 8, 8] + } + + @GUI::CheckBox { + text: "Enable Num Lock on login" + name: "num_lock_checkbox" + } + } +} diff --git a/Userland/Applications/KeyboardSettings/main.cpp b/Userland/Applications/KeyboardSettings/main.cpp index 0a5d4c0843..60d9c4bb0a 100644 --- a/Userland/Applications/KeyboardSettings/main.cpp +++ b/Userland/Applications/KeyboardSettings/main.cpp @@ -1,11 +1,13 @@ /* * Copyright (c) 2020, Hüseyin Aslıtürk + * Copyright (c) 2021, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #include #include +#include #include #include #include @@ -16,9 +18,8 @@ #include #include #include -#include -#include #include +#include #include #include #include @@ -95,36 +96,29 @@ int main(int argc, char** argv) auto window = GUI::Window::construct(); window->set_title("Keyboard Settings"); - window->resize(300, 78); + window->resize(400, 480); window->set_resizable(false); window->set_minimizable(false); - window->set_icon(app_icon.bitmap_for_size(16)); - auto& root_widget = window->set_main_widget(); - root_widget.set_layout(); - root_widget.set_fill_with_background_color(true); - root_widget.layout()->set_spacing(0); - root_widget.layout()->set_margins(4); + auto& main_widget = window->set_main_widget(); + main_widget.set_fill_with_background_color(true); + main_widget.set_layout(); + main_widget.layout()->set_margins(4); + main_widget.layout()->set_spacing(6); - auto& character_map_file_selection_container = root_widget.add(); - character_map_file_selection_container.set_layout(); - character_map_file_selection_container.set_fixed_height(22); + auto& tab_widget = main_widget.add(); + auto& keyboard_widget = tab_widget.add_tab("Keyboard"); - auto& character_map_file_label = character_map_file_selection_container.add(); - character_map_file_label.set_text_alignment(Gfx::TextAlignment::CenterLeft); - character_map_file_label.set_fixed_width(130); - character_map_file_label.set_text("Character Mapping File:"); + keyboard_widget.load_from_gml(keyboard_widget_gml); - auto& character_map_file_combo = character_map_file_selection_container.add(); + auto& character_map_file_combo = *keyboard_widget.find_descendant_of_type_named("character_map_file_combo"); character_map_file_combo.set_only_allow_values_from_model(true); character_map_file_combo.set_model(*GUI::ItemListModel::create(character_map_files)); character_map_file_combo.set_selected_index(initial_keymap_index); - auto& num_lock_checkbox = root_widget.add("Enable Num Lock on login"); + auto& num_lock_checkbox = *keyboard_widget.find_descendant_of_type_named("num_lock_checkbox"); num_lock_checkbox.set_checked(Config::read_bool("KeyboardSettings", "StartupEnable", "NumLock", true)); - root_widget.layout()->add_spacer(); - auto apply_settings = [&](bool quit) { String character_map_file = character_map_file_combo.text(); if (character_map_file.is_empty()) {