Userland: Port to automatic GML initializer where possible

This commit is contained in:
kleines Filmröllchen 2024-01-22 16:52:25 +01:00 committed by Andrew Kaster
parent dec066fa5c
commit adc845e0cb
41 changed files with 148 additions and 245 deletions

View file

@ -29,47 +29,46 @@ void AutoplayAllowlistModel::reset_default_values()
namespace BrowserSettings {
ErrorOr<NonnullRefPtr<AutoplaySettingsWidget>> AutoplaySettingsWidget::create()
ErrorOr<void> AutoplaySettingsWidget::initialize()
{
auto allowlist_model = TRY(try_make_ref_counted<AutoplayAllowlistModel>());
TRY(allowlist_model->load());
auto widget = TRY(AutoplaySettingsWidget::try_create());
widget->set_allowlist_model(move(allowlist_model));
set_allowlist_model(move(allowlist_model));
widget->m_allow_autoplay_on_all_websites_checkbox = widget->find_descendant_of_type_named<GUI::CheckBox>("allow_autoplay_on_all_websites_checkbox");
widget->m_allow_autoplay_on_all_websites_checkbox->set_checked(Config::read_bool("Browser"sv, "Preferences"sv, "AllowAutoplayOnAllWebsites"sv, Browser::default_allow_autoplay_on_all_websites), GUI::AllowCallback::No);
widget->m_allow_autoplay_on_all_websites_checkbox->on_checked = [widget](auto) {
widget->set_modified(true);
m_allow_autoplay_on_all_websites_checkbox = find_descendant_of_type_named<GUI::CheckBox>("allow_autoplay_on_all_websites_checkbox");
m_allow_autoplay_on_all_websites_checkbox->set_checked(Config::read_bool("Browser"sv, "Preferences"sv, "AllowAutoplayOnAllWebsites"sv, Browser::default_allow_autoplay_on_all_websites), GUI::AllowCallback::No);
m_allow_autoplay_on_all_websites_checkbox->on_checked = [this](auto) {
set_modified(true);
};
widget->m_allowlist_view = widget->find_descendant_of_type_named<GUI::ListView>("allowlist_view");
widget->m_allowlist_view->set_model(widget->m_allowlist_model);
widget->m_allowlist_view->on_context_menu_request = [widget](GUI::ModelIndex const& index, GUI::ContextMenuEvent const& event) {
widget->m_allowlist_view->set_cursor(index, GUI::AbstractView::SelectionUpdate::Set);
widget->m_entry_context_menu->popup(event.screen_position());
m_allowlist_view = find_descendant_of_type_named<GUI::ListView>("allowlist_view");
m_allowlist_view->set_model(m_allowlist_model);
m_allowlist_view->on_context_menu_request = [this](GUI::ModelIndex const& index, GUI::ContextMenuEvent const& event) {
m_allowlist_view->set_cursor(index, GUI::AbstractView::SelectionUpdate::Set);
m_entry_context_menu->popup(event.screen_position());
};
widget->m_add_website_button = widget->find_descendant_of_type_named<GUI::Button>("add_website_button");
widget->m_add_website_button->on_click = [widget](unsigned) {
m_add_website_button = find_descendant_of_type_named<GUI::Button>("add_website_button");
m_add_website_button->on_click = [this](unsigned) {
String text;
if (GUI::InputBox::show(widget->window(), text, "Enter a website:"sv, "Add Autoplay Entry"sv, GUI::InputType::NonemptyText) == GUI::Dialog::ExecResult::OK) {
widget->m_allowlist_model->add_domain(move(text));
widget->set_modified(true);
if (GUI::InputBox::show(window(), text, "Enter a website:"sv, "Add Autoplay Entry"sv, GUI::InputType::NonemptyText) == GUI::Dialog::ExecResult::OK) {
m_allowlist_model->add_domain(move(text));
set_modified(true);
}
};
auto delete_action = GUI::CommonActions::make_delete_action([widget](GUI::Action const&) {
if (!widget->m_allowlist_view->selection().is_empty()) {
widget->m_allowlist_model->delete_domain(widget->m_allowlist_view->selection().first().row());
widget->set_modified(true);
auto delete_action = GUI::CommonActions::make_delete_action([this](GUI::Action const&) {
if (!m_allowlist_view->selection().is_empty()) {
m_allowlist_model->delete_domain(m_allowlist_view->selection().first().row());
set_modified(true);
}
});
widget->m_entry_context_menu = GUI::Menu::construct();
widget->m_entry_context_menu->add_action(move(delete_action));
m_entry_context_menu = GUI::Menu::construct();
m_entry_context_menu->add_action(move(delete_action));
return widget;
return {};
}
void AutoplaySettingsWidget::set_allowlist_model(NonnullRefPtr<AutoplayAllowlistModel> model)

View file

@ -27,13 +27,13 @@ class AutoplaySettingsWidget : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(AutoplaySettingsWidget)
public:
static ErrorOr<NonnullRefPtr<AutoplaySettingsWidget>> create();
static ErrorOr<NonnullRefPtr<AutoplaySettingsWidget>> try_create();
ErrorOr<void> initialize();
virtual void apply_settings() override;
virtual void reset_default_values() override;
private:
static ErrorOr<NonnullRefPtr<AutoplaySettingsWidget>> try_create();
AutoplaySettingsWidget() = default;
void set_allowlist_model(NonnullRefPtr<AutoplayAllowlistModel> model);

View file

@ -95,16 +95,7 @@ private:
Vector<WebView::SearchEngine> m_search_engines;
};
ErrorOr<NonnullRefPtr<BrowserSettingsWidget>> BrowserSettingsWidget::create()
{
auto widget = TRY(BrowserSettingsWidget::try_create());
TRY(widget->setup());
return widget;
}
ErrorOr<void> BrowserSettingsWidget::setup()
ErrorOr<void> BrowserSettingsWidget::initialize()
{
m_homepage_url_textbox = find_descendant_of_type_named<GUI::TextBox>("homepage_url_textbox");
m_homepage_url_textbox->set_text(Config::read_string("Browser"sv, "Preferences"sv, "Home"sv, Browser::default_homepage_url), GUI::AllowCallback::No);

View file

@ -17,17 +17,15 @@ namespace BrowserSettings {
class BrowserSettingsWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(BrowserSettingsWidget)
public:
static ErrorOr<NonnullRefPtr<BrowserSettingsWidget>> create();
static ErrorOr<NonnullRefPtr<BrowserSettingsWidget>> try_create();
virtual ~BrowserSettingsWidget() override = default;
virtual void apply_settings() override;
virtual void reset_default_values() override;
ErrorOr<void> initialize();
private:
static ErrorOr<NonnullRefPtr<BrowserSettingsWidget>> try_create();
ErrorOr<void> setup();
RefPtr<GUI::TextBox> m_homepage_url_textbox;
RefPtr<GUI::TextBox> m_new_tab_url_textbox;
void set_color_scheme(StringView);

View file

@ -117,47 +117,46 @@ void DomainListModel::reset_default_values()
namespace BrowserSettings {
ErrorOr<NonnullRefPtr<ContentFilterSettingsWidget>> ContentFilterSettingsWidget::create()
ErrorOr<void> ContentFilterSettingsWidget::initialize()
{
auto domain_list_model = TRY(try_make_ref_counted<DomainListModel>());
TRY(domain_list_model->load());
auto widget = TRY(ContentFilterSettingsWidget::try_create());
widget->set_domain_list_model(move(domain_list_model));
set_domain_list_model(move(domain_list_model));
widget->m_enable_content_filtering_checkbox = widget->find_descendant_of_type_named<GUI::CheckBox>("enable_content_filtering_checkbox");
widget->m_enable_content_filtering_checkbox->set_checked(Config::read_bool("Browser"sv, "Preferences"sv, "EnableContentFilters"sv, Browser::default_enable_content_filters), GUI::AllowCallback::No);
widget->m_enable_content_filtering_checkbox->on_checked = [widget](auto) {
widget->set_modified(true);
m_enable_content_filtering_checkbox = find_descendant_of_type_named<GUI::CheckBox>("enable_content_filtering_checkbox");
m_enable_content_filtering_checkbox->set_checked(Config::read_bool("Browser"sv, "Preferences"sv, "EnableContentFilters"sv, Browser::default_enable_content_filters), GUI::AllowCallback::No);
m_enable_content_filtering_checkbox->on_checked = [this](auto) {
set_modified(true);
};
widget->m_domain_list_view = widget->find_descendant_of_type_named<GUI::ListView>("domain_list_view");
widget->m_domain_list_view->set_model(widget->m_domain_list_model);
widget->m_domain_list_view->on_context_menu_request = [widget](GUI::ModelIndex const& index, GUI::ContextMenuEvent const& event) {
widget->m_domain_list_view->set_cursor(index, GUI::AbstractView::SelectionUpdate::Set);
widget->m_entry_context_menu->popup(event.screen_position());
m_domain_list_view = find_descendant_of_type_named<GUI::ListView>("domain_list_view");
m_domain_list_view->set_model(m_domain_list_model);
m_domain_list_view->on_context_menu_request = [this](GUI::ModelIndex const& index, GUI::ContextMenuEvent const& event) {
m_domain_list_view->set_cursor(index, GUI::AbstractView::SelectionUpdate::Set);
m_entry_context_menu->popup(event.screen_position());
};
widget->m_add_new_domain_button = widget->find_descendant_of_type_named<GUI::Button>("add_new_domain_button");
widget->m_add_new_domain_button->on_click = [widget](unsigned) {
m_add_new_domain_button = find_descendant_of_type_named<GUI::Button>("add_new_domain_button");
m_add_new_domain_button->on_click = [this](unsigned) {
String text;
if (GUI::InputBox::show(widget->window(), text, "Enter a domain:"sv, "Add Content Filter"sv, GUI::InputType::NonemptyText) == GUI::Dialog::ExecResult::OK) {
widget->m_domain_list_model->add_domain(move(text));
widget->set_modified(true);
if (GUI::InputBox::show(window(), text, "Enter a domain:"sv, "Add Content Filter"sv, GUI::InputType::NonemptyText) == GUI::Dialog::ExecResult::OK) {
m_domain_list_model->add_domain(move(text));
set_modified(true);
}
};
auto delete_action = GUI::CommonActions::make_delete_action([widget](GUI::Action const&) {
if (!widget->m_domain_list_view->selection().is_empty()) {
widget->m_domain_list_model->delete_domain(widget->m_domain_list_view->selection().first().row());
widget->set_modified(true);
auto delete_action = GUI::CommonActions::make_delete_action([this](GUI::Action const&) {
if (!m_domain_list_view->selection().is_empty()) {
m_domain_list_model->delete_domain(m_domain_list_view->selection().first().row());
set_modified(true);
}
});
widget->m_entry_context_menu = GUI::Menu::construct();
widget->m_entry_context_menu->add_action(delete_action);
m_entry_context_menu = GUI::Menu::construct();
m_entry_context_menu->add_action(delete_action);
return widget;
return {};
}
void ContentFilterSettingsWidget::set_domain_list_model(NonnullRefPtr<DomainListModel> domain_list_model)

View file

@ -37,13 +37,13 @@ class ContentFilterSettingsWidget : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(ContentFilterSettingsWidget)
public:
static ErrorOr<NonnullRefPtr<ContentFilterSettingsWidget>> create();
static ErrorOr<NonnullRefPtr<ContentFilterSettingsWidget>> try_create();
ErrorOr<void> initialize();
virtual void apply_settings() override;
virtual void reset_default_values() override;
private:
static ErrorOr<NonnullRefPtr<ContentFilterSettingsWidget>> try_create();
ContentFilterSettingsWidget() = default;
void set_domain_list_model(NonnullRefPtr<DomainListModel>);

View file

@ -37,9 +37,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto window = TRY(GUI::SettingsWindow::create("Browser Settings", GUI::SettingsWindow::ShowDefaultsButton::Yes));
window->set_icon(app_icon.bitmap_for_size(16));
(void)TRY(window->add_tab(TRY(BrowserSettings::BrowserSettingsWidget::create()), "Browser"_string, "browser"sv));
(void)TRY(window->add_tab(TRY(BrowserSettings::ContentFilterSettingsWidget::create()), "Content Filtering"_string, "content-filtering"sv));
(void)TRY(window->add_tab(TRY(BrowserSettings::AutoplaySettingsWidget::create()), "Autoplay"_string, "autoplay"sv));
(void)TRY(window->add_tab<BrowserSettings::BrowserSettingsWidget>("Browser"_string, "browser"sv));
(void)TRY(window->add_tab<BrowserSettings::ContentFilterSettingsWidget>("Content Filtering"_string, "content-filtering"sv));
(void)TRY(window->add_tab<BrowserSettings::AutoplaySettingsWidget>("Autoplay"_string, "autoplay"sv));
window->set_active_tab(selected_tab);
window->show();

View file

@ -17,89 +17,87 @@
namespace Calculator {
ErrorOr<NonnullRefPtr<CalculatorWidget>> CalculatorWidget::create()
ErrorOr<void> CalculatorWidget::initialize()
{
auto widget = TRY(CalculatorWidget::try_create());
widget->m_entry = *widget->find_descendant_of_type_named<GUI::TextBox>("entry_textbox");
m_entry = *find_descendant_of_type_named<GUI::TextBox>("entry_textbox");
// FIXME: Use GML for this.
widget->m_entry->set_relative_rect(5, 5, 244, 26);
widget->m_entry->set_text_alignment(Gfx::TextAlignment::CenterRight);
m_entry->set_relative_rect(5, 5, 244, 26);
m_entry->set_text_alignment(Gfx::TextAlignment::CenterRight);
// FIXME: Use GML for this.
widget->m_label = *widget->find_descendant_of_type_named<GUI::Label>("label");
widget->m_label->set_frame_style(Gfx::FrameStyle::SunkenContainer);
m_label = *find_descendant_of_type_named<GUI::Label>("label");
m_label->set_frame_style(Gfx::FrameStyle::SunkenContainer);
for (int i = 0; i < 10; i++) {
widget->m_digit_button[i] = *widget->find_descendant_of_type_named<GUI::Button>(TRY(String::formatted("{}_button", i)));
widget->add_digit_button(*widget->m_digit_button[i], i);
m_digit_button[i] = *find_descendant_of_type_named<GUI::Button>(TRY(String::formatted("{}_button", i)));
add_digit_button(*m_digit_button[i], i);
}
widget->m_mem_add_button = *widget->find_descendant_of_type_named<GUI::Button>("mem_add_button");
widget->add_operation_button(*widget->m_mem_add_button, Calculator::Operation::MemAdd);
m_mem_add_button = *find_descendant_of_type_named<GUI::Button>("mem_add_button");
add_operation_button(*m_mem_add_button, Calculator::Operation::MemAdd);
widget->m_mem_save_button = *widget->find_descendant_of_type_named<GUI::Button>("mem_save_button");
widget->add_operation_button(*widget->m_mem_save_button, Calculator::Operation::MemSave);
m_mem_save_button = *find_descendant_of_type_named<GUI::Button>("mem_save_button");
add_operation_button(*m_mem_save_button, Calculator::Operation::MemSave);
widget->m_mem_recall_button = *widget->find_descendant_of_type_named<GUI::Button>("mem_recall_button");
widget->add_operation_button(*widget->m_mem_recall_button, Calculator::Operation::MemRecall);
m_mem_recall_button = *find_descendant_of_type_named<GUI::Button>("mem_recall_button");
add_operation_button(*m_mem_recall_button, Calculator::Operation::MemRecall);
widget->m_mem_clear_button = *widget->find_descendant_of_type_named<GUI::Button>("mem_clear_button");
widget->add_operation_button(*widget->m_mem_clear_button, Calculator::Operation::MemClear);
m_mem_clear_button = *find_descendant_of_type_named<GUI::Button>("mem_clear_button");
add_operation_button(*m_mem_clear_button, Calculator::Operation::MemClear);
widget->m_clear_button = *widget->find_descendant_of_type_named<GUI::Button>("clear_button");
widget->m_clear_button->on_click = [self = NonnullRefPtr<CalculatorWidget>(widget)](auto) {
self->m_keypad.set_to_0();
self->m_calculator.clear_operation();
self->update_display();
m_clear_button = *find_descendant_of_type_named<GUI::Button>("clear_button");
m_clear_button->on_click = [this](auto) {
m_keypad.set_to_0();
m_calculator.clear_operation();
update_display();
};
widget->m_clear_error_button = *widget->find_descendant_of_type_named<GUI::Button>("clear_error_button");
widget->m_clear_error_button->on_click = [self = NonnullRefPtr<CalculatorWidget>(widget)](auto) {
self->m_keypad.set_to_0();
self->update_display();
m_clear_error_button = *find_descendant_of_type_named<GUI::Button>("clear_error_button");
m_clear_error_button->on_click = [this](auto) {
m_keypad.set_to_0();
update_display();
};
widget->m_backspace_button = *widget->find_descendant_of_type_named<GUI::Button>("backspace_button");
widget->m_backspace_button->on_click = [self = NonnullRefPtr<CalculatorWidget>(widget)](auto) {
self->m_keypad.type_backspace();
self->update_display();
m_backspace_button = *find_descendant_of_type_named<GUI::Button>("backspace_button");
m_backspace_button->on_click = [this](auto) {
m_keypad.type_backspace();
update_display();
};
widget->m_decimal_point_button = *widget->find_descendant_of_type_named<GUI::Button>("decimal_button");
widget->m_decimal_point_button->on_click = [self = NonnullRefPtr<CalculatorWidget>(widget)](auto) {
self->m_keypad.type_decimal_point();
self->update_display();
m_decimal_point_button = *find_descendant_of_type_named<GUI::Button>("decimal_button");
m_decimal_point_button->on_click = [this](auto) {
m_keypad.type_decimal_point();
update_display();
};
widget->m_sign_button = *widget->find_descendant_of_type_named<GUI::Button>("sign_button");
widget->add_operation_button(*widget->m_sign_button, Calculator::Operation::ToggleSign);
m_sign_button = *find_descendant_of_type_named<GUI::Button>("sign_button");
add_operation_button(*m_sign_button, Calculator::Operation::ToggleSign);
widget->m_add_button = *widget->find_descendant_of_type_named<GUI::Button>("add_button");
widget->add_operation_button(*widget->m_add_button, Calculator::Operation::Add);
m_add_button = *find_descendant_of_type_named<GUI::Button>("add_button");
add_operation_button(*m_add_button, Calculator::Operation::Add);
widget->m_subtract_button = *widget->find_descendant_of_type_named<GUI::Button>("subtract_button");
widget->add_operation_button(*widget->m_subtract_button, Calculator::Operation::Subtract);
m_subtract_button = *find_descendant_of_type_named<GUI::Button>("subtract_button");
add_operation_button(*m_subtract_button, Calculator::Operation::Subtract);
widget->m_multiply_button = *widget->find_descendant_of_type_named<GUI::Button>("multiply_button");
widget->add_operation_button(*widget->m_multiply_button, Calculator::Operation::Multiply);
m_multiply_button = *find_descendant_of_type_named<GUI::Button>("multiply_button");
add_operation_button(*m_multiply_button, Calculator::Operation::Multiply);
widget->m_divide_button = *widget->find_descendant_of_type_named<GUI::Button>("divide_button");
widget->add_operation_button(*widget->m_divide_button, Calculator::Operation::Divide);
m_divide_button = *find_descendant_of_type_named<GUI::Button>("divide_button");
add_operation_button(*m_divide_button, Calculator::Operation::Divide);
widget->m_sqrt_button = *widget->find_descendant_of_type_named<GUI::Button>("sqrt_button");
widget->add_operation_button(*widget->m_sqrt_button, Calculator::Operation::Sqrt);
m_sqrt_button = *find_descendant_of_type_named<GUI::Button>("sqrt_button");
add_operation_button(*m_sqrt_button, Calculator::Operation::Sqrt);
widget->m_inverse_button = *widget->find_descendant_of_type_named<GUI::Button>("inverse_button");
widget->add_operation_button(*widget->m_inverse_button, Calculator::Operation::Inverse);
m_inverse_button = *find_descendant_of_type_named<GUI::Button>("inverse_button");
add_operation_button(*m_inverse_button, Calculator::Operation::Inverse);
widget->m_percent_button = *widget->find_descendant_of_type_named<GUI::Button>("mod_button");
widget->add_operation_button(*widget->m_percent_button, Calculator::Operation::Percent);
m_percent_button = *find_descendant_of_type_named<GUI::Button>("mod_button");
add_operation_button(*m_percent_button, Calculator::Operation::Percent);
widget->m_equals_button = *widget->find_descendant_of_type_named<GUI::Button>("equal_button");
widget->add_operation_button(*widget->m_equals_button, Calculator::Operation::Equals);
m_equals_button = *find_descendant_of_type_named<GUI::Button>("equal_button");
add_operation_button(*m_equals_button, Calculator::Operation::Equals);
return widget;
return {};
}
void CalculatorWidget::perform_operation(Calculator::Operation operation)

View file

@ -20,7 +20,8 @@ namespace Calculator {
class CalculatorWidget final : public GUI::Widget {
C_OBJECT(CalculatorWidget)
public:
static ErrorOr<NonnullRefPtr<CalculatorWidget>> create();
static ErrorOr<NonnullRefPtr<CalculatorWidget>> try_create();
ErrorOr<void> initialize();
virtual ~CalculatorWidget() override = default;
String get_entry();
@ -34,7 +35,6 @@ public:
void set_rounding_custom(GUI::Action& action, StringView);
private:
static ErrorOr<NonnullRefPtr<CalculatorWidget>> try_create();
CalculatorWidget() = default;
void add_operation_button(GUI::Button&, Calculator::Operation);

View file

@ -42,7 +42,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
window->set_resizable(false);
window->resize(250, 215);
auto widget = TRY(Calculator::CalculatorWidget::create());
auto widget = TRY(Calculator::CalculatorWidget::try_create());
window->set_main_widget(widget.ptr());
window->set_icon(app_icon.bitmap_for_size(16));

View file

@ -30,14 +30,7 @@ void CalendarSettingsWidget::reset_default_values()
m_default_view_combobox->set_text("Month");
}
ErrorOr<NonnullRefPtr<CalendarSettingsWidget>> CalendarSettingsWidget::create()
{
auto widget = TRY(try_create());
TRY(widget->setup());
return widget;
}
ErrorOr<void> CalendarSettingsWidget::setup()
ErrorOr<void> CalendarSettingsWidget::initialize()
{
m_first_day_of_week_combobox = *find_descendant_of_type_named<GUI::ComboBox>("first_day_of_week");
m_first_day_of_week_combobox->set_text(Config::read_string("Calendar"sv, "View"sv, "FirstDayOfWeek"sv, "Sunday"sv));

View file

@ -15,16 +15,15 @@ class CalendarSettingsWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(CalendarSettingsWidget)
public:
static ErrorOr<NonnullRefPtr<CalendarSettingsWidget>> create();
static ErrorOr<NonnullRefPtr<CalendarSettingsWidget>> try_create();
ErrorOr<void> initialize();
virtual void apply_settings() override;
virtual void reset_default_values() override;
private:
CalendarSettingsWidget() = default;
static ErrorOr<NonnullRefPtr<CalendarSettingsWidget>> try_create();
ErrorOr<void> setup();
static constexpr Array<StringView, 2> const m_view_modes = { "Month"sv, "Year"sv };
RefPtr<GUI::ComboBox> m_first_day_of_week_combobox;

View file

@ -33,7 +33,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto app_icon = GUI::Icon::default_icon("app-calendar"sv);
auto window = TRY(GUI::SettingsWindow::create("Calendar Settings", GUI::SettingsWindow::ShowDefaultsButton::Yes));
(void)TRY(window->add_tab(TRY(CalendarSettings::CalendarSettingsWidget::create()), "Calendar"_string, "Calendar"sv));
(void)TRY(window->add_tab<CalendarSettings::CalendarSettingsWidget>("Calendar"_string, "Calendar"sv));
window->set_icon(app_icon.bitmap_for_size(16));
window->set_active_tab(selected_tab);

View file

@ -151,13 +151,6 @@ ErrorOr<void> CertificateStoreWidget::export_pem()
return {};
}
ErrorOr<NonnullRefPtr<CertificateStoreWidget>> CertificateStoreWidget::create()
{
auto widget = TRY(CertificateStoreWidget::try_create());
TRY(widget->initialize());
return widget;
}
ErrorOr<void> CertificateStoreWidget::initialize()
{
m_root_ca_tableview = find_descendant_of_type_named<GUI::TableView>("root_ca_tableview");

View file

@ -58,14 +58,13 @@ class CertificateStoreWidget : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(CertStoreWidget)
public:
virtual ~CertificateStoreWidget() override = default;
static ErrorOr<NonnullRefPtr<CertificateStoreWidget>> create();
static ErrorOr<NonnullRefPtr<CertificateStoreWidget>> try_create();
ErrorOr<void> initialize();
virtual void apply_settings() override {};
private:
static ErrorOr<NonnullRefPtr<CertificateStoreWidget>> try_create();
CertificateStoreWidget() = default;
ErrorOr<void> initialize();
ErrorOr<void> import_pem();
ErrorOr<void> export_pem();

View file

@ -28,7 +28,7 @@ ErrorOr<int> serenity_main(Main::Arguments args)
auto app_icon = GUI::Icon::default_icon("certificate"sv);
auto window = TRY(GUI::SettingsWindow::create("Certificate Settings", GUI::SettingsWindow::ShowDefaultsButton::No));
TRY(window->add_tab(TRY(CertificateSettings::CertificateStoreWidget::create()), "Certificate Store"_string, "certificate"sv));
(void)TRY(window->add_tab<CertificateSettings::CertificateStoreWidget>("Certificate Store"_string, "certificate"sv));
window->set_icon(app_icon.bitmap_for_size(16));
window->show();

View file

@ -61,13 +61,6 @@ void CardGamePreview::paint_event(GUI::PaintEvent& event)
stack->paint(painter, background_color);
}
ErrorOr<NonnullRefPtr<CardSettingsWidget>> CardSettingsWidget::create()
{
auto card_settings_widget = TRY(try_create());
TRY(card_settings_widget->initialize());
return card_settings_widget;
}
ErrorOr<void> CardSettingsWidget::initialize()
{
auto background_color = Gfx::Color::from_string(Config::read_string("Games"sv, "Cards"sv, "BackgroundColor"sv)).value_or(Gfx::Color::from_rgb(0x008000));

View file

@ -21,7 +21,7 @@ class CardSettingsWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(CardSettingsWidget)
public:
static ErrorOr<NonnullRefPtr<CardSettingsWidget>> try_create();
static ErrorOr<NonnullRefPtr<CardSettingsWidget>> create();
ErrorOr<void> initialize();
virtual ~CardSettingsWidget() override = default;
virtual void apply_settings() override;
@ -29,7 +29,6 @@ public:
private:
CardSettingsWidget() = default;
ErrorOr<void> initialize();
bool set_card_back_image_path(StringView);
String card_back_image_path() const;

View file

@ -231,13 +231,6 @@ void ChessGamePreview::paint_event(GUI::PaintEvent& event)
}
}
ErrorOr<NonnullRefPtr<ChessSettingsWidget>> ChessSettingsWidget::create()
{
auto chess_settings_widget = TRY(try_create());
TRY(chess_settings_widget->initialize());
return chess_settings_widget;
}
ErrorOr<void> ChessSettingsWidget::initialize()
{
auto piece_set_name = Config::read_string("Games"sv, "Chess"sv, "PieceSet"sv, "Classic"sv);

View file

@ -18,7 +18,7 @@ class ChessSettingsWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(ChessSettingsWidget)
public:
static ErrorOr<NonnullRefPtr<ChessSettingsWidget>> try_create();
static ErrorOr<NonnullRefPtr<ChessSettingsWidget>> create();
ErrorOr<void> initialize();
virtual ~ChessSettingsWidget() override = default;
virtual void apply_settings() override;
@ -26,7 +26,6 @@ public:
private:
ChessSettingsWidget() = default;
ErrorOr<void> initialize();
Vector<ByteString> m_piece_sets;

View file

@ -35,10 +35,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto window = TRY(GUI::SettingsWindow::create("Games Settings", GUI::SettingsWindow::ShowDefaultsButton::Yes));
window->set_icon(app_icon.bitmap_for_size(16));
auto widget_cards = TRY(GamesSettings::CardSettingsWidget::create());
auto widget_chess = TRY(GamesSettings::ChessSettingsWidget::create());
(void)TRY(window->add_tab(widget_cards, "Cards"_string, "cards"sv));
(void)TRY(window->add_tab(widget_chess, "Chess"_string, "chess"sv));
(void)TRY(window->add_tab<GamesSettings::CardSettingsWidget>("Cards"_string, "cards"sv));
(void)TRY(window->add_tab<GamesSettings::ChessSettingsWidget>("Chess"_string, "chess"sv));
window->set_active_tab(selected_tab);
window->show();

View file

@ -61,7 +61,7 @@ ErrorOr<void> MainWidget::set_start_page(Vector<StringView, 2> query_parameters)
return {};
}
ErrorOr<void> MainWidget::initialize_fallibles(GUI::Window& window)
ErrorOr<void> MainWidget::initialize(GUI::Window& window)
{
m_toolbar = find_descendant_of_type_named<GUI::Toolbar>("toolbar");
m_tab_widget = find_descendant_of_type_named<GUI::TabWidget>("tab_widget");

View file

@ -21,7 +21,7 @@ public:
static ErrorOr<NonnullRefPtr<MainWidget>> try_create();
ErrorOr<void> initialize_fallibles(GUI::Window&);
ErrorOr<void> initialize(GUI::Window&);
ErrorOr<void> set_start_page(Vector<StringView, 2> query_parameters);
private:

View file

@ -63,7 +63,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto main_widget = TRY(MainWidget::try_create());
window->set_main_widget(main_widget);
TRY(main_widget->initialize_fallibles(window));
TRY(main_widget->initialize(window));
TRY(main_widget->set_start_page(query_parameters));
window->show();

View file

@ -15,14 +15,7 @@
namespace Maps {
ErrorOr<NonnullRefPtr<FavoritesPanel>> FavoritesPanel::create()
{
auto widget = TRY(try_create());
TRY(widget->setup());
return widget;
}
ErrorOr<void> FavoritesPanel::setup()
ErrorOr<void> FavoritesPanel::initialize()
{
m_empty_container = *find_descendant_of_type_named<GUI::Frame>("empty_container");
m_favorites_list = *find_descendant_of_type_named<GUI::ListView>("favorites_list");

View file

@ -22,7 +22,8 @@ public:
MapWidget::LatLng latlng;
int zoom;
};
static ErrorOr<NonnullRefPtr<FavoritesPanel>> create();
static ErrorOr<NonnullRefPtr<FavoritesPanel>> try_create();
ErrorOr<void> initialize();
void load_favorites();
void reset();
@ -34,10 +35,6 @@ public:
protected:
FavoritesPanel() = default;
static ErrorOr<NonnullRefPtr<FavoritesPanel>> try_create();
ErrorOr<void> setup();
private:
ErrorOr<void> edit_favorite(int row);
void favorites_changed();

View file

@ -9,14 +9,7 @@
namespace Maps {
ErrorOr<NonnullRefPtr<SearchPanel>> SearchPanel::create()
{
auto widget = TRY(try_create());
TRY(widget->setup());
return widget;
}
ErrorOr<void> SearchPanel::setup()
ErrorOr<void> SearchPanel::initialize()
{
m_request_client = TRY(Protocol::RequestClient::try_create());

View file

@ -21,7 +21,8 @@ class SearchPanel final : public GUI::Widget {
C_OBJECT(SearchPanel)
public:
static ErrorOr<NonnullRefPtr<SearchPanel>> create();
static ErrorOr<NonnullRefPtr<SearchPanel>> try_create();
ErrorOr<void> initialize();
void search(StringView query);
void reset();
@ -37,10 +38,6 @@ public:
private:
SearchPanel() = default;
static ErrorOr<NonnullRefPtr<SearchPanel>> try_create();
ErrorOr<void> setup();
RefPtr<Protocol::RequestClient> m_request_client;
RefPtr<Protocol::Request> m_request;
RefPtr<GUI::TextBox> m_search_textbox;

View file

@ -72,7 +72,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
int panel_width = Config::read_i32("Maps"sv, "Panel"sv, "Width"sv, INT_MIN);
// Search panel
auto search_panel = TRY(Maps::SearchPanel::create());
auto search_panel = TRY(Maps::SearchPanel::try_create());
search_panel->on_places_change = [&map_widget](auto) { map_widget.remove_markers_with_name("search"sv); };
search_panel->on_selected_place_change = [&map_widget](auto const& place) {
// Remove old search marker
@ -105,7 +105,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
// Favorites panel
auto marker_red_image = TRY(Gfx::Bitmap::load_from_file("/res/graphics/maps/marker-red.png"sv));
auto favorites_panel = TRY(Maps::FavoritesPanel::create());
auto favorites_panel = TRY(Maps::FavoritesPanel::try_create());
favorites_panel->on_favorites_change = [&map_widget, marker_red_image](auto const& favorites) {
// Sync all favorites markers
map_widget.remove_markers_with_name("favorites"sv);

View file

@ -14,13 +14,6 @@
namespace MapsSettings {
ErrorOr<NonnullRefPtr<MapsSettingsWidget>> MapsSettingsWidget::create()
{
auto widget = TRY(try_create());
TRY(widget->setup());
return widget;
}
void MapsSettingsWidget::apply_settings()
{
// Tile Provider
@ -43,7 +36,7 @@ void MapsSettingsWidget::reset_default_values()
set_tile_provider(Maps::default_tile_provider_url_format);
}
ErrorOr<void> MapsSettingsWidget::setup()
ErrorOr<void> MapsSettingsWidget::initialize()
{
// Tile Provider
Vector<GUI::JsonArrayModel::FieldSpec> tile_provider_fields;

View file

@ -14,16 +14,15 @@ class MapsSettingsWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(MapsSettingsWidget)
public:
static ErrorOr<NonnullRefPtr<MapsSettingsWidget>> create();
static ErrorOr<NonnullRefPtr<MapsSettingsWidget>> try_create();
ErrorOr<void> initialize();
virtual void apply_settings() override;
virtual void reset_default_values() override;
private:
MapsSettingsWidget() = default;
static ErrorOr<NonnullRefPtr<MapsSettingsWidget>> try_create();
ErrorOr<void> setup();
void set_tile_provider(StringView url);
RefPtr<GUI::ComboBox> m_tile_provider_combobox;

View file

@ -27,7 +27,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto window = TRY(GUI::SettingsWindow::create("Maps Settings", GUI::SettingsWindow::ShowDefaultsButton::Yes));
window->set_icon(app_icon.bitmap_for_size(16));
(void)TRY(window->add_tab(TRY(MapsSettings::MapsSettingsWidget::create()), "Maps"_string, "maps"sv));
(void)TRY(window->add_tab<MapsSettings::MapsSettingsWidget>("Maps"_string, "maps"sv));
window->show();
return app->exec();

View file

@ -29,14 +29,7 @@ static int netmask_to_cidr(IPv4Address const& address)
return 32 - count_trailing_zeroes_safe(address_in_host_representation);
}
ErrorOr<NonnullRefPtr<NetworkSettingsWidget>> NetworkSettingsWidget::create()
{
auto widget = TRY(try_create());
TRY(widget->setup());
return widget;
}
ErrorOr<void> NetworkSettingsWidget::setup()
ErrorOr<void> NetworkSettingsWidget::initialize()
{
m_adapters_combobox = *find_descendant_of_type_named<GUI::ComboBox>("adapters_combobox");
m_enabled_checkbox = *find_descendant_of_type_named<GUI::CheckBox>("enabled_checkbox");

View file

@ -16,17 +16,14 @@ class NetworkSettingsWidget : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(NetworkSettingsWidget)
public:
static ErrorOr<NonnullRefPtr<NetworkSettingsWidget>> create();
static ErrorOr<NonnullRefPtr<NetworkSettingsWidget>> try_create();
ErrorOr<void> initialize();
virtual void apply_settings() override;
void switch_adapter(ByteString const& adapter);
protected:
static ErrorOr<NonnullRefPtr<NetworkSettingsWidget>> try_create();
private:
NetworkSettingsWidget() = default;
ErrorOr<void> setup();
struct NetworkAdapterData {
bool enabled = false;

View file

@ -37,7 +37,7 @@ ErrorOr<int> serenity_main(Main::Arguments args)
auto app_icon = GUI::Icon::default_icon("network"sv);
auto window = TRY(GUI::SettingsWindow::create("Network Settings", GUI::SettingsWindow::ShowDefaultsButton::No));
auto network_settings_widget = TRY(NetworkSettings::NetworkSettingsWidget::create());
auto network_settings_widget = TRY(NetworkSettings::NetworkSettingsWidget::try_create());
TRY(window->add_tab(network_settings_widget, "Network"_string, "network"sv));
if (!adapter.is_null()) {
network_settings_widget->switch_adapter(adapter);

View file

@ -18,7 +18,7 @@ ExportProgressWindow::ExportProgressWindow(GUI::Window& parent_window, Atomic<in
{
}
ErrorOr<void> ExportProgressWindow::initialize_fallibles()
ErrorOr<void> ExportProgressWindow::initialize()
{
auto main_widget = set_main_widget<GUI::Widget>();
TRY(main_widget->load_from_gml(export_progress_widget));

View file

@ -17,7 +17,7 @@ class ExportProgressWindow : public GUI::Dialog {
public:
virtual ~ExportProgressWindow() override = default;
ErrorOr<void> initialize_fallibles();
ErrorOr<void> initialize();
virtual void timer_event(Core::TimerEvent&) override;

View file

@ -52,7 +52,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
window->set_icon(app_icon.bitmap_for_size(16));
auto wav_progress_window = ExportProgressWindow::construct(*window, wav_percent_written);
TRY(wav_progress_window->initialize_fallibles());
TRY(wav_progress_window->initialize());
auto main_widget_updater = TRY(Core::Timer::create_repeating(static_cast<int>((1 / 30.0) * 1000), [&] {
if (window->is_active())

View file

@ -24,16 +24,7 @@
namespace VideoPlayer {
ErrorOr<NonnullRefPtr<VideoPlayerWidget>> VideoPlayerWidget::create()
{
auto main_widget = TRY(try_create());
TRY(main_widget->setup_interface());
return main_widget;
}
ErrorOr<void> VideoPlayerWidget::setup_interface()
ErrorOr<void> VideoPlayerWidget::initialize()
{
m_video_display = find_descendant_of_type_named<VideoPlayer::VideoFrameWidget>("video_frame");
m_video_display->on_click = [&]() { toggle_pause(); };

View file

@ -25,7 +25,7 @@ class VideoPlayerWidget final : public GUI::Widget {
public:
static ErrorOr<NonnullRefPtr<VideoPlayerWidget>> try_create();
static ErrorOr<NonnullRefPtr<VideoPlayerWidget>> create();
ErrorOr<void> initialize();
virtual ~VideoPlayerWidget() override = default;
void close_file();
void open_file(FileSystemAccessClient::File filename);
@ -43,7 +43,6 @@ public:
private:
VideoPlayerWidget() = default;
ErrorOr<void> setup_interface();
void update_play_pause_icon();
void update_seek_slider_max();
void set_current_timestamp(Duration);

View file

@ -34,7 +34,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
TRY(Core::System::unveil("/res", "r"));
TRY(Core::System::unveil(nullptr, nullptr));
auto main_widget = TRY(VideoPlayer::VideoPlayerWidget::create());
auto main_widget = TRY(VideoPlayer::VideoPlayerWidget::try_create());
window->set_main_widget(main_widget);
main_widget->update_title();
TRY(main_widget->initialize_menubar(window));