Skip to content

Commit 502a0a9

Browse files
committed
ClockSettings: Port to GML compiler
1 parent 6e78e89 commit 502a0a9

8 files changed

+41
-41
lines changed

Userland/Applications/ClockSettings/CMakeLists.txt

+4-7
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,15 @@ serenity_component(
44
TARGETS ClockSettings
55
)
66

7-
stringify_gml(ClockSettingsWidget.gml ClockSettingsWidgetGML.h clock_settings_widget_gml)
8-
stringify_gml(TimeZoneSettingsWidget.gml TimeZoneSettingsWidgetGML.h time_zone_settings_widget_gml)
7+
compile_gml(ClockSettingsWidget.gml ClockSettingsWidgetGML.cpp)
8+
compile_gml(TimeZoneSettingsWidget.gml TimeZoneSettingsWidgetGML.cpp)
99

1010
set(SOURCES
1111
main.cpp
1212
ClockSettingsWidget.cpp
1313
TimeZoneSettingsWidget.cpp
14-
)
15-
16-
set(GENERATED_SOURCES
17-
ClockSettingsWidgetGML.h
18-
TimeZoneSettingsWidgetGML.h
14+
ClockSettingsWidgetGML.cpp
15+
TimeZoneSettingsWidgetGML.cpp
1916
)
2017

2118
serenity_app(ClockSettings ICON app-analog-clock) # FIXME: Create a ClockSettings icon.

Userland/Applications/ClockSettings/ClockSettingsWidget.cpp

+6-11
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,28 @@
11
/*
22
* Copyright (c) 2022, cflip <[email protected]>
33
* Copyright (c) 2022, Sam Atkins <[email protected]>
4+
* Copyright (c) 2025, RatcheT2497 <[email protected]>
45
*
56
* SPDX-License-Identifier: BSD-2-Clause
67
*/
78

89
#include "ClockSettingsWidget.h"
9-
#include <Applications/ClockSettings/ClockSettingsWidgetGML.h>
1010
#include <LibConfig/Client.h>
1111
#include <LibCore/DateTime.h>
1212
#include <LibGUI/CheckBox.h>
1313
#include <LibGUI/Label.h>
1414
#include <LibGUI/RadioButton.h>
1515
#include <LibGUI/TextBox.h>
1616

17+
namespace ClockSettings {
18+
1719
constexpr auto time_format_12h = "%I:%M %p"sv;
1820
constexpr auto time_format_12h_seconds = "%r"sv;
1921
constexpr auto time_format_24h = "%R"sv;
2022
constexpr auto time_format_24h_seconds = "%T"sv;
2123

22-
ErrorOr<NonnullRefPtr<ClockSettingsWidget>> ClockSettingsWidget::try_create()
23-
{
24-
auto widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) ClockSettingsWidget()));
25-
TRY(widget->setup());
26-
return widget;
27-
}
28-
29-
ErrorOr<void> ClockSettingsWidget::setup()
24+
ErrorOr<void> ClockSettingsWidget::initialize()
3025
{
31-
TRY(load_from_gml(clock_settings_widget_gml));
32-
3326
m_24_hour_radio = *find_descendant_of_type_named<GUI::RadioButton>("24hour_radio");
3427
auto& twelve_hour_radio = *find_descendant_of_type_named<GUI::RadioButton>("12hour_radio");
3528
m_show_seconds_checkbox = *find_descendant_of_type_named<GUI::CheckBox>("seconds_checkbox");
@@ -130,3 +123,5 @@ void ClockSettingsWidget::update_clock_preview()
130123
{
131124
m_clock_preview->set_text(Core::DateTime::now().to_string(m_time_format).release_value_but_fixme_should_propagate_errors());
132125
}
126+
127+
}

Userland/Applications/ClockSettings/ClockSettingsWidget.gml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@GUI::Frame {
1+
@ClockSettings::ClockSettingsWidget {
22
fill_with_background_color: true
33
layout: @GUI::VerticalBoxLayout {
44
margins: [10]

Userland/Applications/ClockSettings/ClockSettingsWidget.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/*
22
* Copyright (c) 2022, cflip <[email protected]>
3+
* Copyright (c) 2025, RatcheT2497 <[email protected]>
34
*
45
* SPDX-License-Identifier: BSD-2-Clause
56
*/
@@ -9,15 +10,17 @@
910
#include <AK/RefPtr.h>
1011
#include <LibGUI/SettingsWindow.h>
1112

13+
namespace ClockSettings {
14+
1215
class ClockSettingsWidget final : public GUI::SettingsWindow::Tab {
1316
C_OBJECT_ABSTRACT(ClockSettingsWidget)
1417

1518
public:
1619
static ErrorOr<NonnullRefPtr<ClockSettingsWidget>> try_create();
20+
ErrorOr<void> initialize();
1721

1822
private:
1923
ClockSettingsWidget() = default;
20-
ErrorOr<void> setup();
2124

2225
virtual void apply_settings() override;
2326
virtual void reset_default_values() override;
@@ -34,3 +37,5 @@ class ClockSettingsWidget final : public GUI::SettingsWindow::Tab {
3437

3538
ByteString m_time_format;
3639
};
40+
41+
}

Userland/Applications/ClockSettings/TimeZoneSettingsWidget.cpp

+13-16
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
/*
22
* Copyright (c) 2022, Tim Flynn <[email protected]>
3+
* Copyright (c) 2025, RatcheT2497 <[email protected]>
34
*
45
* SPDX-License-Identifier: BSD-2-Clause
56
*/
67

78
#include "TimeZoneSettingsWidget.h"
89
#include <AK/Time.h>
9-
#include <Applications/ClockSettings/TimeZoneSettingsWidgetGML.h>
1010
#include <LibGUI/ComboBox.h>
1111
#include <LibGUI/Event.h>
1212
#include <LibGUI/ImageWidget.h>
@@ -24,6 +24,8 @@
2424
#include <spawn.h>
2525
#include <unistd.h>
2626

27+
namespace ClockSettings {
28+
2729
static constexpr auto PI_OVER_180 = M_PIf32 / 180.0f;
2830
static constexpr auto PI_OVER_4 = M_PIf32 / 4.0f;
2931
static constexpr auto TAU = M_PIf32 * 2.0f;
@@ -38,28 +40,17 @@ static constexpr auto TIME_ZONE_TEXT_HEIGHT = 40;
3840
static constexpr auto TIME_ZONE_TEXT_PADDING = 5;
3941
static constexpr auto TIME_ZONE_TEXT_COLOR = Gfx::Color::from_rgb(0xeaf688);
4042

41-
ErrorOr<NonnullRefPtr<TimeZoneSettingsWidget>> TimeZoneSettingsWidget::create()
43+
ErrorOr<void> TimeZoneSettingsWidget::initialize()
4244
{
43-
auto timezonesettings_widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) TimeZoneSettingsWidget));
44-
4545
auto time_zone_map_bitmap = TRY(Gfx::Bitmap::load_from_file("/res/graphics/map.png"sv));
4646
auto time_zone_rect = time_zone_map_bitmap->rect().shrunken(TIME_ZONE_MAP_NORTHERN_TRIM, 0, TIME_ZONE_MAP_SOUTHERN_TRIM, 0);
4747
time_zone_map_bitmap = TRY(time_zone_map_bitmap->cropped(time_zone_rect));
4848

49-
timezonesettings_widget->m_time_zone_map = *timezonesettings_widget->find_descendant_of_type_named<GUI::ImageWidget>("time_zone_map");
50-
timezonesettings_widget->m_time_zone_map->set_bitmap(time_zone_map_bitmap);
49+
m_time_zone_map = find_descendant_of_type_named<GUI::ImageWidget>("time_zone_map");
50+
m_time_zone_map->set_bitmap(time_zone_map_bitmap);
5151

5252
auto time_zone_marker = TRY(Gfx::Bitmap::load_from_file("/res/icons/32x32/ladyball.png"sv));
53-
timezonesettings_widget->m_time_zone_marker = TRY(time_zone_marker->scaled(0.75f, 0.75f));
54-
55-
timezonesettings_widget->set_time_zone_location();
56-
57-
return timezonesettings_widget;
58-
}
59-
60-
TimeZoneSettingsWidget::TimeZoneSettingsWidget()
61-
{
62-
load_from_gml(time_zone_settings_widget_gml).release_value_but_fixme_should_propagate_errors();
53+
m_time_zone_marker = TRY(time_zone_marker->scaled(0.75f, 0.75f));
6354

6455
static auto time_zones = []() {
6556
Vector<StringView> time_zones;
@@ -81,6 +72,10 @@ TimeZoneSettingsWidget::TimeZoneSettingsWidget()
8172
m_time_zone_combo_box->on_change = [&](auto, auto) {
8273
set_modified(true);
8374
};
75+
76+
set_time_zone_location();
77+
78+
return {};
8479
}
8580

8681
void TimeZoneSettingsWidget::second_paint_event(GUI::PaintEvent& event)
@@ -176,3 +171,5 @@ void TimeZoneSettingsWidget::set_time_zone()
176171
{
177172
GUI::Process::spawn_or_show_error(window(), "/bin/timezone"sv, Array { m_time_zone.characters() });
178173
}
174+
175+
}

Userland/Applications/ClockSettings/TimeZoneSettingsWidget.gml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@GUI::Frame {
1+
@ClockSettings::TimeZoneSettingsWidget {
22
fill_with_background_color: true
33
layout: @GUI::VerticalBoxLayout {
44
margins: [10]

Userland/Applications/ClockSettings/TimeZoneSettingsWidget.h

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/*
22
* Copyright (c) 2022, Tim Flynn <[email protected]>
3+
* Copyright (c) 2025, RatcheT2497 <[email protected]>
34
*
45
* SPDX-License-Identifier: BSD-2-Clause
56
*/
@@ -13,13 +14,16 @@
1314
#include <LibGUI/TextEditor.h>
1415
#include <LibGUI/Window.h>
1516

17+
namespace ClockSettings {
18+
1619
class TimeZoneSettingsWidget final : public GUI::SettingsWindow::Tab {
1720
C_OBJECT_ABSTRACT(TimeZoneSettingsWidget)
1821
public:
19-
static ErrorOr<NonnullRefPtr<TimeZoneSettingsWidget>> create();
22+
static ErrorOr<NonnullRefPtr<TimeZoneSettingsWidget>> try_create();
23+
ErrorOr<void> initialize();
2024

2125
private:
22-
TimeZoneSettingsWidget();
26+
TimeZoneSettingsWidget() = default;
2327

2428
virtual void second_paint_event(GUI::PaintEvent&) override;
2529

@@ -38,3 +42,5 @@ class TimeZoneSettingsWidget final : public GUI::SettingsWindow::Tab {
3842
Optional<Gfx::FloatPoint> m_time_zone_location;
3943
ByteString m_time_zone_text;
4044
};
45+
46+
}

Userland/Applications/ClockSettings/main.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
3636
auto app_icon = GUI::Icon::default_icon("app-analog-clock"sv); // FIXME: Create a ClockSettings icon.
3737

3838
auto window = TRY(GUI::SettingsWindow::create("Clock Settings", GUI::SettingsWindow::ShowDefaultsButton::Yes));
39-
(void)TRY(window->add_tab<ClockSettingsWidget>("Clock"_string, "clock"sv));
40-
auto timezonesettings_widget = TRY(TimeZoneSettingsWidget::create());
39+
(void)TRY(window->add_tab<ClockSettings::ClockSettingsWidget>("Clock"_string, "clock"sv));
40+
auto timezonesettings_widget = TRY(ClockSettings::TimeZoneSettingsWidget::try_create());
4141
TRY(window->add_tab(timezonesettings_widget, "Time Zone"_string, "time-zone"sv));
4242

4343
window->set_icon(app_icon.bitmap_for_size(16));

0 commit comments

Comments
 (0)