TerminalSettings: Convert setting widgets to a failable factory

This commit is contained in:
Karol Kosek 2023-05-09 23:00:41 +02:00 committed by Andreas Kling
parent 754a5bda7a
commit 1ad81687e7
Notes: sideshowbarker 2024-07-17 06:40:35 +09:00
2 changed files with 31 additions and 9 deletions

View file

@ -29,9 +29,16 @@
#include <LibVT/TerminalWidget.h>
#include <spawn.h>
TerminalSettingsMainWidget::TerminalSettingsMainWidget()
ErrorOr<NonnullRefPtr<TerminalSettingsMainWidget>> TerminalSettingsMainWidget::try_create()
{
load_from_gml(terminal_settings_main_gml).release_value_but_fixme_should_propagate_errors();
auto widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) TerminalSettingsMainWidget()));
TRY(widget->setup());
return widget;
}
ErrorOr<void> TerminalSettingsMainWidget::setup()
{
TRY(load_from_gml(terminal_settings_main_gml));
auto& beep_bell_radio = *find_descendant_of_type_named<GUI::RadioButton>("beep_bell_radio");
auto& visual_bell_radio = *find_descendant_of_type_named<GUI::RadioButton>("visual_bell_radio");
@ -77,11 +84,19 @@ TerminalSettingsMainWidget::TerminalSettingsMainWidget()
set_modified(true);
};
confirm_close_checkbox.set_checked(m_confirm_close, GUI::AllowCallback::No);
return {};
}
TerminalSettingsViewWidget::TerminalSettingsViewWidget()
ErrorOr<NonnullRefPtr<TerminalSettingsViewWidget>> TerminalSettingsViewWidget::try_create()
{
load_from_gml(terminal_settings_view_gml).release_value_but_fixme_should_propagate_errors();
auto widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) TerminalSettingsViewWidget()));
TRY(widget->setup());
return widget;
}
ErrorOr<void> TerminalSettingsViewWidget::setup()
{
TRY(load_from_gml(terminal_settings_view_gml));
auto& slider = *find_descendant_of_type_named<GUI::HorizontalOpacitySlider>("background_opacity_slider");
m_opacity = Config::read_i32("Terminal"sv, "Window"sv, "Opacity"sv);
@ -101,7 +116,7 @@ TerminalSettingsViewWidget::TerminalSettingsViewWidget()
else
m_font = Gfx::FontDatabase::the().get_by_name(font_name);
m_original_font = m_font;
font_text.set_text(String::from_deprecated_string(m_font->human_readable_name()).release_value_but_fixme_should_propagate_errors());
font_text.set_text(TRY(String::from_deprecated_string(m_font->human_readable_name())));
font_text.set_font(m_font);
font_button.on_click = [&](auto) {
auto picker = GUI::FontPicker::construct(window(), m_font.ptr(), true);
@ -207,6 +222,7 @@ TerminalSettingsViewWidget::TerminalSettingsViewWidget()
set_modified(true);
};
show_scrollbar_checkbox.set_checked(m_show_scrollbar, GUI::AllowCallback::No);
return {};
}
VT::TerminalWidget::BellMode TerminalSettingsMainWidget::parse_bell(StringView bell_string)

View file

@ -14,13 +14,16 @@
#include <LibVT/TerminalWidget.h>
class TerminalSettingsMainWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT(TerminalSettingsMainWidget)
C_OBJECT_ABSTRACT(TerminalSettingsMainWidget)
public:
static ErrorOr<NonnullRefPtr<TerminalSettingsMainWidget>> try_create();
virtual void apply_settings() override;
virtual void cancel_settings() override;
private:
TerminalSettingsMainWidget();
TerminalSettingsMainWidget() = default;
ErrorOr<void> setup();
void write_back_settings() const;
static VT::TerminalWidget::BellMode parse_bell(StringView bell_string);
@ -34,13 +37,16 @@ private:
};
class TerminalSettingsViewWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT(TerminalSettingsViewWidget)
C_OBJECT_ABSTRACT(TerminalSettingsViewWidget)
public:
static ErrorOr<NonnullRefPtr<TerminalSettingsViewWidget>> try_create();
virtual void apply_settings() override;
virtual void cancel_settings() override;
private:
TerminalSettingsViewWidget();
TerminalSettingsViewWidget() = default;
ErrorOr<void> setup();
void write_back_settings() const;
RefPtr<Gfx::Font const> m_font;