diff --git a/Userland/Services/LoginServer/CMakeLists.txt b/Userland/Services/LoginServer/CMakeLists.txt index 6a00a763c2..2f3b37ca3f 100644 --- a/Userland/Services/LoginServer/CMakeLists.txt +++ b/Userland/Services/LoginServer/CMakeLists.txt @@ -4,16 +4,13 @@ serenity_component( TARGETS LoginServer ) -stringify_gml(LoginWindow.gml LoginWindowGML.h login_window_gml) +compile_gml(LoginWindow.gml LoginWindowGML.cpp) set(SOURCES LoginWindow.cpp + LoginWindowGML.cpp main.cpp ) -set(GENERATED_SOURCES - LoginWindowGML.h -) - serenity_bin(LoginServer) target_link_libraries(LoginServer PRIVATE LibCore LibGfx LibGUI LibMain) diff --git a/Userland/Services/LoginServer/LoginWindow.cpp b/Userland/Services/LoginServer/LoginWindow.cpp index fdb75fd69b..3ea0e40446 100644 --- a/Userland/Services/LoginServer/LoginWindow.cpp +++ b/Userland/Services/LoginServer/LoginWindow.cpp @@ -7,7 +7,9 @@ #include #include #include -#include +#include + +namespace LoginServer { LoginWindow::LoginWindow(GUI::Window* parent) : GUI::Window(parent) @@ -20,11 +22,9 @@ LoginWindow::LoginWindow(GUI::Window* parent) set_closeable(false); set_icon(GUI::Icon::default_icon("ladyball"sv).bitmap_for_size(16)); - auto widget = set_main_widget(); - widget->load_from_gml(login_window_gml).release_value_but_fixme_should_propagate_errors(); + auto widget = MUST(LoginServer::Widget::try_create()); + set_main_widget(widget); m_banner = *widget->find_descendant_of_type_named("banner"); - m_banner->load_from_file("/res/graphics/brand-banner.png"sv); - m_banner->set_auto_resize(true); m_username = *widget->find_descendant_of_type_named("username"); m_username->set_focus(true); @@ -46,3 +46,5 @@ LoginWindow::LoginWindow(GUI::Window* parent) m_fail_message->set_text({}); }; } + +} diff --git a/Userland/Services/LoginServer/LoginWindow.gml b/Userland/Services/LoginServer/LoginWindow.gml index e3219ebe10..07bf4af6df 100644 --- a/Userland/Services/LoginServer/LoginWindow.gml +++ b/Userland/Services/LoginServer/LoginWindow.gml @@ -1,9 +1,10 @@ -@GUI::Widget { +@LoginServer::Widget { fill_with_background_color: true layout: @GUI::VerticalBoxLayout {} @GUI::ImageWidget { name: "banner" + bitmap: "/res/graphics/brand-banner.png" auto_resize: true } diff --git a/Userland/Services/LoginServer/LoginWindow.h b/Userland/Services/LoginServer/LoginWindow.h index 2859999f52..446e9e15aa 100644 --- a/Userland/Services/LoginServer/LoginWindow.h +++ b/Userland/Services/LoginServer/LoginWindow.h @@ -12,6 +12,8 @@ #include #include +namespace LoginServer { + class LoginWindow final : public GUI::Window { C_OBJECT(LoginWindow); @@ -37,3 +39,5 @@ private: RefPtr m_fail_message; RefPtr m_log_in_button; }; + +} diff --git a/Userland/Services/LoginServer/Widget.h b/Userland/Services/LoginServer/Widget.h new file mode 100644 index 0000000000..c4502d6b54 --- /dev/null +++ b/Userland/Services/LoginServer/Widget.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023, kleines Filmröllchen + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace LoginServer { + +class Widget : public GUI::Widget { + C_OBJECT_ABSTRACT(Widget) + +public: + static ErrorOr> try_create(); + +private: + Widget() = default; +}; + +} diff --git a/Userland/Services/LoginServer/main.cpp b/Userland/Services/LoginServer/main.cpp index df58920cfc..e6e8ae7f02 100644 --- a/Userland/Services/LoginServer/main.cpp +++ b/Userland/Services/LoginServer/main.cpp @@ -43,7 +43,7 @@ static void child_process(Core::Account const& account) exit(127); } -static void login(Core::Account const& account, LoginWindow& window) +static void login(Core::Account const& account, LoginServer::LoginWindow& window) { pid_t pid = fork(); if (pid == 0) @@ -73,7 +73,7 @@ ErrorOr serenity_main(Main::Arguments arguments) TRY(Core::System::unveil("/res", "r")); TRY(Core::System::unveil(nullptr, nullptr)); - auto window = LoginWindow::construct(); + auto window = LoginServer::LoginWindow::construct(); window->on_submit = [&]() { auto username = window->username(); auto password = Core::SecretString::take_ownership(window->password().to_byte_buffer());