1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 13:38:11 +00:00

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

View file

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

View file

@ -95,16 +95,7 @@ private:
Vector<WebView::SearchEngine> m_search_engines; Vector<WebView::SearchEngine> m_search_engines;
}; };
ErrorOr<NonnullRefPtr<BrowserSettingsWidget>> BrowserSettingsWidget::create() ErrorOr<void> BrowserSettingsWidget::initialize()
{
auto widget = TRY(BrowserSettingsWidget::try_create());
TRY(widget->setup());
return widget;
}
ErrorOr<void> BrowserSettingsWidget::setup()
{ {
m_homepage_url_textbox = find_descendant_of_type_named<GUI::TextBox>("homepage_url_textbox"); 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); 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 { class BrowserSettingsWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(BrowserSettingsWidget) C_OBJECT_ABSTRACT(BrowserSettingsWidget)
public: public:
static ErrorOr<NonnullRefPtr<BrowserSettingsWidget>> create(); static ErrorOr<NonnullRefPtr<BrowserSettingsWidget>> try_create();
virtual ~BrowserSettingsWidget() override = default; virtual ~BrowserSettingsWidget() override = default;
virtual void apply_settings() override; virtual void apply_settings() override;
virtual void reset_default_values() override; virtual void reset_default_values() override;
ErrorOr<void> initialize();
private: private:
static ErrorOr<NonnullRefPtr<BrowserSettingsWidget>> try_create();
ErrorOr<void> setup();
RefPtr<GUI::TextBox> m_homepage_url_textbox; RefPtr<GUI::TextBox> m_homepage_url_textbox;
RefPtr<GUI::TextBox> m_new_tab_url_textbox; RefPtr<GUI::TextBox> m_new_tab_url_textbox;
void set_color_scheme(StringView); void set_color_scheme(StringView);

View file

@ -117,47 +117,46 @@ void DomainListModel::reset_default_values()
namespace BrowserSettings { namespace BrowserSettings {
ErrorOr<NonnullRefPtr<ContentFilterSettingsWidget>> ContentFilterSettingsWidget::create() ErrorOr<void> ContentFilterSettingsWidget::initialize()
{ {
auto domain_list_model = TRY(try_make_ref_counted<DomainListModel>()); auto domain_list_model = TRY(try_make_ref_counted<DomainListModel>());
TRY(domain_list_model->load()); TRY(domain_list_model->load());
auto widget = TRY(ContentFilterSettingsWidget::try_create()); set_domain_list_model(move(domain_list_model));
widget->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"); m_enable_content_filtering_checkbox = 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); 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) { m_enable_content_filtering_checkbox->on_checked = [this](auto) {
widget->set_modified(true); set_modified(true);
}; };
widget->m_domain_list_view = widget->find_descendant_of_type_named<GUI::ListView>("domain_list_view"); m_domain_list_view = find_descendant_of_type_named<GUI::ListView>("domain_list_view");
widget->m_domain_list_view->set_model(widget->m_domain_list_model); m_domain_list_view->set_model(m_domain_list_model);
widget->m_domain_list_view->on_context_menu_request = [widget](GUI::ModelIndex const& index, GUI::ContextMenuEvent const& event) { m_domain_list_view->on_context_menu_request = [this](GUI::ModelIndex const& index, GUI::ContextMenuEvent const& event) {
widget->m_domain_list_view->set_cursor(index, GUI::AbstractView::SelectionUpdate::Set); m_domain_list_view->set_cursor(index, GUI::AbstractView::SelectionUpdate::Set);
widget->m_entry_context_menu->popup(event.screen_position()); 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"); m_add_new_domain_button = 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->on_click = [this](unsigned) {
String text; String text;
if (GUI::InputBox::show(widget->window(), text, "Enter a domain:"sv, "Add Content Filter"sv, GUI::InputType::NonemptyText) == GUI::Dialog::ExecResult::OK) { if (GUI::InputBox::show(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)); m_domain_list_model->add_domain(move(text));
widget->set_modified(true); set_modified(true);
} }
}; };
auto delete_action = GUI::CommonActions::make_delete_action([widget](GUI::Action const&) { auto delete_action = GUI::CommonActions::make_delete_action([this](GUI::Action const&) {
if (!widget->m_domain_list_view->selection().is_empty()) { if (!m_domain_list_view->selection().is_empty()) {
widget->m_domain_list_model->delete_domain(widget->m_domain_list_view->selection().first().row()); m_domain_list_model->delete_domain(m_domain_list_view->selection().first().row());
widget->set_modified(true); set_modified(true);
} }
}); });
widget->m_entry_context_menu = GUI::Menu::construct(); m_entry_context_menu = GUI::Menu::construct();
widget->m_entry_context_menu->add_action(delete_action); m_entry_context_menu->add_action(delete_action);
return widget; return {};
} }
void ContentFilterSettingsWidget::set_domain_list_model(NonnullRefPtr<DomainListModel> domain_list_model) 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) C_OBJECT_ABSTRACT(ContentFilterSettingsWidget)
public: public:
static ErrorOr<NonnullRefPtr<ContentFilterSettingsWidget>> create(); static ErrorOr<NonnullRefPtr<ContentFilterSettingsWidget>> try_create();
ErrorOr<void> initialize();
virtual void apply_settings() override; virtual void apply_settings() override;
virtual void reset_default_values() override; virtual void reset_default_values() override;
private: private:
static ErrorOr<NonnullRefPtr<ContentFilterSettingsWidget>> try_create();
ContentFilterSettingsWidget() = default; ContentFilterSettingsWidget() = default;
void set_domain_list_model(NonnullRefPtr<DomainListModel>); 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)); auto window = TRY(GUI::SettingsWindow::create("Browser Settings", GUI::SettingsWindow::ShowDefaultsButton::Yes));
window->set_icon(app_icon.bitmap_for_size(16)); 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<BrowserSettings::BrowserSettingsWidget>("Browser"_string, "browser"sv));
(void)TRY(window->add_tab(TRY(BrowserSettings::ContentFilterSettingsWidget::create()), "Content Filtering"_string, "content-filtering"sv)); (void)TRY(window->add_tab<BrowserSettings::ContentFilterSettingsWidget>("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::AutoplaySettingsWidget>("Autoplay"_string, "autoplay"sv));
window->set_active_tab(selected_tab); window->set_active_tab(selected_tab);
window->show(); window->show();

View file

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

View file

@ -20,7 +20,8 @@ namespace Calculator {
class CalculatorWidget final : public GUI::Widget { class CalculatorWidget final : public GUI::Widget {
C_OBJECT(CalculatorWidget) C_OBJECT(CalculatorWidget)
public: public:
static ErrorOr<NonnullRefPtr<CalculatorWidget>> create(); static ErrorOr<NonnullRefPtr<CalculatorWidget>> try_create();
ErrorOr<void> initialize();
virtual ~CalculatorWidget() override = default; virtual ~CalculatorWidget() override = default;
String get_entry(); String get_entry();
@ -34,7 +35,6 @@ public:
void set_rounding_custom(GUI::Action& action, StringView); void set_rounding_custom(GUI::Action& action, StringView);
private: private:
static ErrorOr<NonnullRefPtr<CalculatorWidget>> try_create();
CalculatorWidget() = default; CalculatorWidget() = default;
void add_operation_button(GUI::Button&, Calculator::Operation); 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->set_resizable(false);
window->resize(250, 215); 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_main_widget(widget.ptr());
window->set_icon(app_icon.bitmap_for_size(16)); 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"); m_default_view_combobox->set_text("Month");
} }
ErrorOr<NonnullRefPtr<CalendarSettingsWidget>> CalendarSettingsWidget::create() ErrorOr<void> CalendarSettingsWidget::initialize()
{
auto widget = TRY(try_create());
TRY(widget->setup());
return widget;
}
ErrorOr<void> CalendarSettingsWidget::setup()
{ {
m_first_day_of_week_combobox = *find_descendant_of_type_named<GUI::ComboBox>("first_day_of_week"); 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)); 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) C_OBJECT_ABSTRACT(CalendarSettingsWidget)
public: public:
static ErrorOr<NonnullRefPtr<CalendarSettingsWidget>> create(); static ErrorOr<NonnullRefPtr<CalendarSettingsWidget>> try_create();
ErrorOr<void> initialize();
virtual void apply_settings() override; virtual void apply_settings() override;
virtual void reset_default_values() override; virtual void reset_default_values() override;
private: private:
CalendarSettingsWidget() = default; CalendarSettingsWidget() = default;
static ErrorOr<NonnullRefPtr<CalendarSettingsWidget>> try_create();
ErrorOr<void> setup();
static constexpr Array<StringView, 2> const m_view_modes = { "Month"sv, "Year"sv }; static constexpr Array<StringView, 2> const m_view_modes = { "Month"sv, "Year"sv };
RefPtr<GUI::ComboBox> m_first_day_of_week_combobox; 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 app_icon = GUI::Icon::default_icon("app-calendar"sv);
auto window = TRY(GUI::SettingsWindow::create("Calendar Settings", GUI::SettingsWindow::ShowDefaultsButton::Yes)); 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_icon(app_icon.bitmap_for_size(16));
window->set_active_tab(selected_tab); window->set_active_tab(selected_tab);

View file

@ -151,13 +151,6 @@ ErrorOr<void> CertificateStoreWidget::export_pem()
return {}; return {};
} }
ErrorOr<NonnullRefPtr<CertificateStoreWidget>> CertificateStoreWidget::create()
{
auto widget = TRY(CertificateStoreWidget::try_create());
TRY(widget->initialize());
return widget;
}
ErrorOr<void> CertificateStoreWidget::initialize() ErrorOr<void> CertificateStoreWidget::initialize()
{ {
m_root_ca_tableview = find_descendant_of_type_named<GUI::TableView>("root_ca_tableview"); 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) C_OBJECT_ABSTRACT(CertStoreWidget)
public: public:
virtual ~CertificateStoreWidget() override = default; virtual ~CertificateStoreWidget() override = default;
static ErrorOr<NonnullRefPtr<CertificateStoreWidget>> create(); static ErrorOr<NonnullRefPtr<CertificateStoreWidget>> try_create();
ErrorOr<void> initialize();
virtual void apply_settings() override {}; virtual void apply_settings() override {};
private: private:
static ErrorOr<NonnullRefPtr<CertificateStoreWidget>> try_create();
CertificateStoreWidget() = default; CertificateStoreWidget() = default;
ErrorOr<void> initialize();
ErrorOr<void> import_pem(); ErrorOr<void> import_pem();
ErrorOr<void> export_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 app_icon = GUI::Icon::default_icon("certificate"sv);
auto window = TRY(GUI::SettingsWindow::create("Certificate Settings", GUI::SettingsWindow::ShowDefaultsButton::No)); 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->set_icon(app_icon.bitmap_for_size(16));
window->show(); window->show();

View file

@ -61,13 +61,6 @@ void CardGamePreview::paint_event(GUI::PaintEvent& event)
stack->paint(painter, background_color); 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() 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)); 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) C_OBJECT_ABSTRACT(CardSettingsWidget)
public: public:
static ErrorOr<NonnullRefPtr<CardSettingsWidget>> try_create(); static ErrorOr<NonnullRefPtr<CardSettingsWidget>> try_create();
static ErrorOr<NonnullRefPtr<CardSettingsWidget>> create(); ErrorOr<void> initialize();
virtual ~CardSettingsWidget() override = default; virtual ~CardSettingsWidget() override = default;
virtual void apply_settings() override; virtual void apply_settings() override;
@ -29,7 +29,6 @@ public:
private: private:
CardSettingsWidget() = default; CardSettingsWidget() = default;
ErrorOr<void> initialize();
bool set_card_back_image_path(StringView); bool set_card_back_image_path(StringView);
String card_back_image_path() const; 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() ErrorOr<void> ChessSettingsWidget::initialize()
{ {
auto piece_set_name = Config::read_string("Games"sv, "Chess"sv, "PieceSet"sv, "Classic"sv); 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) C_OBJECT_ABSTRACT(ChessSettingsWidget)
public: public:
static ErrorOr<NonnullRefPtr<ChessSettingsWidget>> try_create(); static ErrorOr<NonnullRefPtr<ChessSettingsWidget>> try_create();
static ErrorOr<NonnullRefPtr<ChessSettingsWidget>> create(); ErrorOr<void> initialize();
virtual ~ChessSettingsWidget() override = default; virtual ~ChessSettingsWidget() override = default;
virtual void apply_settings() override; virtual void apply_settings() override;
@ -26,7 +26,6 @@ public:
private: private:
ChessSettingsWidget() = default; ChessSettingsWidget() = default;
ErrorOr<void> initialize();
Vector<ByteString> m_piece_sets; 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)); auto window = TRY(GUI::SettingsWindow::create("Games Settings", GUI::SettingsWindow::ShowDefaultsButton::Yes));
window->set_icon(app_icon.bitmap_for_size(16)); window->set_icon(app_icon.bitmap_for_size(16));
auto widget_cards = TRY(GamesSettings::CardSettingsWidget::create()); (void)TRY(window->add_tab<GamesSettings::CardSettingsWidget>("Cards"_string, "cards"sv));
auto widget_chess = TRY(GamesSettings::ChessSettingsWidget::create()); (void)TRY(window->add_tab<GamesSettings::ChessSettingsWidget>("Chess"_string, "chess"sv));
(void)TRY(window->add_tab(widget_cards, "Cards"_string, "cards"sv));
(void)TRY(window->add_tab(widget_chess, "Chess"_string, "chess"sv));
window->set_active_tab(selected_tab); window->set_active_tab(selected_tab);
window->show(); window->show();

View file

@ -61,7 +61,7 @@ ErrorOr<void> MainWidget::set_start_page(Vector<StringView, 2> query_parameters)
return {}; 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_toolbar = find_descendant_of_type_named<GUI::Toolbar>("toolbar");
m_tab_widget = find_descendant_of_type_named<GUI::TabWidget>("tab_widget"); 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(); 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); ErrorOr<void> set_start_page(Vector<StringView, 2> query_parameters);
private: private:

View file

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

View file

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

View file

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

View file

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

View file

@ -21,7 +21,8 @@ class SearchPanel final : public GUI::Widget {
C_OBJECT(SearchPanel) C_OBJECT(SearchPanel)
public: public:
static ErrorOr<NonnullRefPtr<SearchPanel>> create(); static ErrorOr<NonnullRefPtr<SearchPanel>> try_create();
ErrorOr<void> initialize();
void search(StringView query); void search(StringView query);
void reset(); void reset();
@ -37,10 +38,6 @@ public:
private: private:
SearchPanel() = default; SearchPanel() = default;
static ErrorOr<NonnullRefPtr<SearchPanel>> try_create();
ErrorOr<void> setup();
RefPtr<Protocol::RequestClient> m_request_client; RefPtr<Protocol::RequestClient> m_request_client;
RefPtr<Protocol::Request> m_request; RefPtr<Protocol::Request> m_request;
RefPtr<GUI::TextBox> m_search_textbox; 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); int panel_width = Config::read_i32("Maps"sv, "Panel"sv, "Width"sv, INT_MIN);
// Search panel // 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_places_change = [&map_widget](auto) { map_widget.remove_markers_with_name("search"sv); };
search_panel->on_selected_place_change = [&map_widget](auto const& place) { search_panel->on_selected_place_change = [&map_widget](auto const& place) {
// Remove old search marker // Remove old search marker
@ -105,7 +105,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
// Favorites panel // Favorites panel
auto marker_red_image = TRY(Gfx::Bitmap::load_from_file("/res/graphics/maps/marker-red.png"sv)); 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) { favorites_panel->on_favorites_change = [&map_widget, marker_red_image](auto const& favorites) {
// Sync all favorites markers // Sync all favorites markers
map_widget.remove_markers_with_name("favorites"sv); map_widget.remove_markers_with_name("favorites"sv);

View file

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

View file

@ -14,16 +14,15 @@ class MapsSettingsWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(MapsSettingsWidget) C_OBJECT_ABSTRACT(MapsSettingsWidget)
public: public:
static ErrorOr<NonnullRefPtr<MapsSettingsWidget>> create(); static ErrorOr<NonnullRefPtr<MapsSettingsWidget>> try_create();
ErrorOr<void> initialize();
virtual void apply_settings() override; virtual void apply_settings() override;
virtual void reset_default_values() override; virtual void reset_default_values() override;
private: private:
MapsSettingsWidget() = default; MapsSettingsWidget() = default;
static ErrorOr<NonnullRefPtr<MapsSettingsWidget>> try_create();
ErrorOr<void> setup();
void set_tile_provider(StringView url); void set_tile_provider(StringView url);
RefPtr<GUI::ComboBox> m_tile_provider_combobox; 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)); auto window = TRY(GUI::SettingsWindow::create("Maps Settings", GUI::SettingsWindow::ShowDefaultsButton::Yes));
window->set_icon(app_icon.bitmap_for_size(16)); 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(); window->show();
return app->exec(); 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); return 32 - count_trailing_zeroes_safe(address_in_host_representation);
} }
ErrorOr<NonnullRefPtr<NetworkSettingsWidget>> NetworkSettingsWidget::create() ErrorOr<void> NetworkSettingsWidget::initialize()
{
auto widget = TRY(try_create());
TRY(widget->setup());
return widget;
}
ErrorOr<void> NetworkSettingsWidget::setup()
{ {
m_adapters_combobox = *find_descendant_of_type_named<GUI::ComboBox>("adapters_combobox"); m_adapters_combobox = *find_descendant_of_type_named<GUI::ComboBox>("adapters_combobox");
m_enabled_checkbox = *find_descendant_of_type_named<GUI::CheckBox>("enabled_checkbox"); 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) C_OBJECT_ABSTRACT(NetworkSettingsWidget)
public: public:
static ErrorOr<NonnullRefPtr<NetworkSettingsWidget>> create(); static ErrorOr<NonnullRefPtr<NetworkSettingsWidget>> try_create();
ErrorOr<void> initialize();
virtual void apply_settings() override; virtual void apply_settings() override;
void switch_adapter(ByteString const& adapter); void switch_adapter(ByteString const& adapter);
protected:
static ErrorOr<NonnullRefPtr<NetworkSettingsWidget>> try_create();
private: private:
NetworkSettingsWidget() = default; NetworkSettingsWidget() = default;
ErrorOr<void> setup();
struct NetworkAdapterData { struct NetworkAdapterData {
bool enabled = false; 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 app_icon = GUI::Icon::default_icon("network"sv);
auto window = TRY(GUI::SettingsWindow::create("Network Settings", GUI::SettingsWindow::ShowDefaultsButton::No)); 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)); TRY(window->add_tab(network_settings_widget, "Network"_string, "network"sv));
if (!adapter.is_null()) { if (!adapter.is_null()) {
network_settings_widget->switch_adapter(adapter); 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>(); auto main_widget = set_main_widget<GUI::Widget>();
TRY(main_widget->load_from_gml(export_progress_widget)); TRY(main_widget->load_from_gml(export_progress_widget));

View file

@ -17,7 +17,7 @@ class ExportProgressWindow : public GUI::Dialog {
public: public:
virtual ~ExportProgressWindow() override = default; virtual ~ExportProgressWindow() override = default;
ErrorOr<void> initialize_fallibles(); ErrorOr<void> initialize();
virtual void timer_event(Core::TimerEvent&) override; 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)); window->set_icon(app_icon.bitmap_for_size(16));
auto wav_progress_window = ExportProgressWindow::construct(*window, wav_percent_written); 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), [&] { auto main_widget_updater = TRY(Core::Timer::create_repeating(static_cast<int>((1 / 30.0) * 1000), [&] {
if (window->is_active()) if (window->is_active())

View file

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

View file

@ -25,7 +25,7 @@ class VideoPlayerWidget final : public GUI::Widget {
public: public:
static ErrorOr<NonnullRefPtr<VideoPlayerWidget>> try_create(); static ErrorOr<NonnullRefPtr<VideoPlayerWidget>> try_create();
static ErrorOr<NonnullRefPtr<VideoPlayerWidget>> create(); ErrorOr<void> initialize();
virtual ~VideoPlayerWidget() override = default; virtual ~VideoPlayerWidget() override = default;
void close_file(); void close_file();
void open_file(FileSystemAccessClient::File filename); void open_file(FileSystemAccessClient::File filename);
@ -43,7 +43,6 @@ public:
private: private:
VideoPlayerWidget() = default; VideoPlayerWidget() = default;
ErrorOr<void> setup_interface();
void update_play_pause_icon(); void update_play_pause_icon();
void update_seek_slider_max(); void update_seek_slider_max();
void set_current_timestamp(Duration); 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("/res", "r"));
TRY(Core::System::unveil(nullptr, nullptr)); 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); window->set_main_widget(main_widget);
main_widget->update_title(); main_widget->update_title();
TRY(main_widget->initialize_menubar(window)); TRY(main_widget->initialize_menubar(window));