diff --git a/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.cpp b/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.cpp index d22a1f6e0c..1d6f8f9b39 100644 --- a/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.cpp +++ b/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.cpp @@ -5,7 +5,6 @@ */ #include "AutoplaySettingsWidget.h" -#include #include #include #include @@ -28,13 +27,15 @@ void AutoplayAllowlistModel::reset_default_values() did_update(UpdateFlag::InvalidateAllIndices); } +namespace BrowserSettings { + ErrorOr> AutoplaySettingsWidget::create() { auto allowlist_model = TRY(try_make_ref_counted()); TRY(allowlist_model->load()); - auto widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) AutoplaySettingsWidget(move(allowlist_model)))); - TRY(widget->load_from_gml(autoplay_settings_widget_gml)); + auto widget = TRY(AutoplaySettingsWidget::try_create()); + widget->set_allowlist_model(move(allowlist_model)); widget->m_allow_autoplay_on_all_websites_checkbox = widget->find_descendant_of_type_named("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); @@ -71,9 +72,9 @@ ErrorOr> AutoplaySettingsWidget::create() return widget; } -AutoplaySettingsWidget::AutoplaySettingsWidget(NonnullRefPtr allowlist_model) - : m_allowlist_model(move(allowlist_model)) +void AutoplaySettingsWidget::set_allowlist_model(NonnullRefPtr model) { + m_allowlist_model = model; } void AutoplaySettingsWidget::apply_settings() @@ -87,3 +88,5 @@ void AutoplaySettingsWidget::reset_default_values() m_allowlist_model->reset_default_values(); m_allow_autoplay_on_all_websites_checkbox->set_checked(Browser::default_allow_autoplay_on_all_websites); } + +} diff --git a/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.gml b/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.gml index 1e2ccbb44b..70474ae2bd 100644 --- a/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.gml +++ b/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.gml @@ -1,4 +1,4 @@ -@GUI::Frame { +@BrowserSettings::AutoplaySettingsWidget { fill_with_background_color: true layout: @GUI::VerticalBoxLayout { margins: [8] diff --git a/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.h b/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.h index ce381caec1..ff12294aa3 100644 --- a/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.h +++ b/Userland/Applications/BrowserSettings/AutoplaySettingsWidget.h @@ -12,6 +12,7 @@ #include #include #include +#include #include class AutoplayAllowlistModel : public DomainListModel { @@ -20,6 +21,8 @@ public: virtual void reset_default_values() override; }; +namespace BrowserSettings { + class AutoplaySettingsWidget : public GUI::SettingsWindow::Tab { C_OBJECT_ABSTRACT(AutoplaySettingsWidget) @@ -30,11 +33,16 @@ public: virtual void reset_default_values() override; private: - explicit AutoplaySettingsWidget(NonnullRefPtr); + static ErrorOr> try_create(); + AutoplaySettingsWidget() = default; + + void set_allowlist_model(NonnullRefPtr model); RefPtr m_entry_context_menu; RefPtr m_allow_autoplay_on_all_websites_checkbox; RefPtr m_add_website_button; RefPtr m_allowlist_view; - NonnullRefPtr m_allowlist_model; + RefPtr m_allowlist_model; }; + +} diff --git a/Userland/Applications/BrowserSettings/BrowserSettingsWidget.cpp b/Userland/Applications/BrowserSettings/BrowserSettingsWidget.cpp index a2619f7148..64d13ebe73 100644 --- a/Userland/Applications/BrowserSettings/BrowserSettingsWidget.cpp +++ b/Userland/Applications/BrowserSettings/BrowserSettingsWidget.cpp @@ -6,7 +6,6 @@ */ #include "BrowserSettingsWidget.h" -#include #include #include #include @@ -14,6 +13,8 @@ #include #include +namespace BrowserSettings { + struct ColorScheme { ByteString title; ByteString setting_value; @@ -96,9 +97,8 @@ private: ErrorOr> BrowserSettingsWidget::create() { - auto widget = TRY(try_make_ref_counted()); + auto widget = TRY(BrowserSettingsWidget::try_create()); - TRY(widget->load_from_gml(browser_settings_widget_gml)); TRY(widget->setup()); return widget; @@ -251,3 +251,5 @@ void BrowserSettingsWidget::reset_default_values() m_auto_close_download_windows_checkbox->set_checked(Browser::default_close_download_widget_on_finish); set_search_engine_url(WebView::default_search_engine().query_url); } + +} diff --git a/Userland/Applications/BrowserSettings/BrowserSettingsWidget.gml b/Userland/Applications/BrowserSettings/BrowserSettingsWidget.gml index 3823dc4d96..e1389ba918 100644 --- a/Userland/Applications/BrowserSettings/BrowserSettingsWidget.gml +++ b/Userland/Applications/BrowserSettings/BrowserSettingsWidget.gml @@ -1,4 +1,4 @@ -@GUI::Frame { +@BrowserSettings::BrowserSettingsWidget { fill_with_background_color: true layout: @GUI::VerticalBoxLayout { margins: [8] diff --git a/Userland/Applications/BrowserSettings/BrowserSettingsWidget.h b/Userland/Applications/BrowserSettings/BrowserSettingsWidget.h index 702b2bf1df..56b9b662fb 100644 --- a/Userland/Applications/BrowserSettings/BrowserSettingsWidget.h +++ b/Userland/Applications/BrowserSettings/BrowserSettingsWidget.h @@ -12,6 +12,8 @@ #include #include +namespace BrowserSettings { + class BrowserSettingsWidget final : public GUI::SettingsWindow::Tab { C_OBJECT_ABSTRACT(BrowserSettingsWidget) public: @@ -22,6 +24,8 @@ public: virtual void reset_default_values() override; private: + static ErrorOr> try_create(); + ErrorOr setup(); RefPtr m_homepage_url_textbox; @@ -39,3 +43,5 @@ private: RefPtr m_custom_search_engine_group; RefPtr m_custom_search_engine_textbox; }; + +} diff --git a/Userland/Applications/BrowserSettings/CMakeLists.txt b/Userland/Applications/BrowserSettings/CMakeLists.txt index 3eee5d93ab..94c348a1df 100644 --- a/Userland/Applications/BrowserSettings/CMakeLists.txt +++ b/Userland/Applications/BrowserSettings/CMakeLists.txt @@ -4,22 +4,19 @@ serenity_component( TARGETS BrowserSettings ) -stringify_gml(AutoplaySettingsWidget.gml AutoplaySettingsWidgetGML.h autoplay_settings_widget_gml) -stringify_gml(BrowserSettingsWidget.gml BrowserSettingsWidgetGML.h browser_settings_widget_gml) -stringify_gml(ContentFilterSettingsWidget.gml ContentFilterSettingsWidgetGML.h content_filter_settings_widget_gml) +compile_gml(AutoplaySettingsWidget.gml AutoplaySettingsWidgetGML.cpp) +compile_gml(BrowserSettingsWidget.gml BrowserSettingsWidgetGML.cpp) +compile_gml(ContentFilterSettingsWidget.gml ContentFilterSettingsWidgetGML.cpp) set(SOURCES AutoplaySettingsWidget.cpp BrowserSettingsWidget.cpp ContentFilterSettingsWidget.cpp + AutoplaySettingsWidgetGML.cpp + BrowserSettingsWidgetGML.cpp + ContentFilterSettingsWidgetGML.cpp main.cpp ) -set(GENERATED_SOURCES - AutoplaySettingsWidgetGML.h - BrowserSettingsWidgetGML.h - ContentFilterSettingsWidgetGML.h -) - serenity_app(BrowserSettings ICON app-browser) target_link_libraries(BrowserSettings PRIVATE LibCore LibGfx LibGUI LibConfig LibMain LibWebView) diff --git a/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.cpp b/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.cpp index 0e00992881..2118b75677 100644 --- a/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.cpp +++ b/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.cpp @@ -8,7 +8,6 @@ #include #include -#include #include #include #include @@ -116,13 +115,15 @@ void DomainListModel::reset_default_values() did_update(UpdateFlag::InvalidateAllIndices); } +namespace BrowserSettings { + ErrorOr> ContentFilterSettingsWidget::create() { auto domain_list_model = TRY(try_make_ref_counted()); TRY(domain_list_model->load()); - auto widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) ContentFilterSettingsWidget(move(domain_list_model)))); - TRY(widget->load_from_gml(content_filter_settings_widget_gml)); + auto widget = TRY(ContentFilterSettingsWidget::try_create()); + widget->set_domain_list_model(move(domain_list_model)); widget->m_enable_content_filtering_checkbox = widget->find_descendant_of_type_named("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); @@ -159,9 +160,9 @@ ErrorOr> ContentFilterSettingsWidget: return widget; } -ContentFilterSettingsWidget::ContentFilterSettingsWidget(NonnullRefPtr domain_list_model) - : m_domain_list_model(move(domain_list_model)) +void ContentFilterSettingsWidget::set_domain_list_model(NonnullRefPtr domain_list_model) { + m_domain_list_model = move(domain_list_model); } void ContentFilterSettingsWidget::apply_settings() @@ -175,3 +176,5 @@ void ContentFilterSettingsWidget::reset_default_values() m_domain_list_model->reset_default_values(); m_enable_content_filtering_checkbox->set_checked(Browser::default_enable_content_filters); } + +} diff --git a/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.gml b/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.gml index 5f5a3e73a1..e0583c9e46 100644 --- a/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.gml +++ b/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.gml @@ -1,4 +1,4 @@ -@GUI::Frame { +@BrowserSettings::ContentFilterSettingsWidget { fill_with_background_color: true layout: @GUI::VerticalBoxLayout { margins: [8] diff --git a/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.h b/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.h index 99a6ffe65f..008429eb2f 100644 --- a/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.h +++ b/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.h @@ -9,6 +9,7 @@ #include #include #include +#include #include class DomainListModel : public GUI::Model { @@ -30,6 +31,8 @@ protected: Vector m_domain_list; }; +namespace BrowserSettings { + class ContentFilterSettingsWidget : public GUI::SettingsWindow::Tab { C_OBJECT_ABSTRACT(ContentFilterSettingsWidget) @@ -40,11 +43,16 @@ public: virtual void reset_default_values() override; private: - explicit ContentFilterSettingsWidget(NonnullRefPtr); + static ErrorOr> try_create(); + ContentFilterSettingsWidget() = default; + + void set_domain_list_model(NonnullRefPtr); RefPtr m_entry_context_menu; RefPtr m_enable_content_filtering_checkbox; RefPtr m_add_new_domain_button; RefPtr m_domain_list_view; - NonnullRefPtr m_domain_list_model; + RefPtr m_domain_list_model; }; + +} diff --git a/Userland/Applications/BrowserSettings/main.cpp b/Userland/Applications/BrowserSettings/main.cpp index 780241cb2a..ad69d586bf 100644 --- a/Userland/Applications/BrowserSettings/main.cpp +++ b/Userland/Applications/BrowserSettings/main.cpp @@ -37,9 +37,9 @@ ErrorOr 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(BrowserSettingsWidget::create()), "Browser"_string, "browser"sv)); - (void)TRY(window->add_tab(TRY(ContentFilterSettingsWidget::create()), "Content Filtering"_string, "content-filtering"sv)); - (void)TRY(window->add_tab(TRY(AutoplaySettingsWidget::create()), "Autoplay"_string, "autoplay"sv)); + (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)); window->set_active_tab(selected_tab); window->show();