1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 17:07:34 +00:00

LoginServer: Use new GML compiler

This commit is contained in:
kleines Filmröllchen 2023-10-01 18:23:21 +02:00 committed by Sam Atkins
parent 8ee014a437
commit 3afbf66295
6 changed files with 40 additions and 13 deletions

View file

@ -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)

View file

@ -7,7 +7,9 @@
#include <LibGUI/Icon.h>
#include <LibGUI/Widget.h>
#include <Services/LoginServer/LoginWindow.h>
#include <Services/LoginServer/LoginWindowGML.h>
#include <Services/LoginServer/Widget.h>
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<GUI::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<GUI::ImageWidget>("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<GUI::TextBox>("username");
m_username->set_focus(true);
@ -46,3 +46,5 @@ LoginWindow::LoginWindow(GUI::Window* parent)
m_fail_message->set_text({});
};
}
}

View file

@ -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
}

View file

@ -12,6 +12,8 @@
#include <LibGUI/TextBox.h>
#include <LibGUI/Window.h>
namespace LoginServer {
class LoginWindow final : public GUI::Window {
C_OBJECT(LoginWindow);
@ -37,3 +39,5 @@ private:
RefPtr<GUI::Label> m_fail_message;
RefPtr<GUI::Button> m_log_in_button;
};
}

View file

@ -0,0 +1,23 @@
/*
* Copyright (c) 2023, kleines Filmröllchen <filmroellchen@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibGUI/Widget.h>
namespace LoginServer {
class Widget : public GUI::Widget {
C_OBJECT_ABSTRACT(Widget)
public:
static ErrorOr<NonnullRefPtr<Widget>> try_create();
private:
Widget() = default;
};
}

View file

@ -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<int> 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());