From 43e463748d0a6503db3966c1daa385b14884f527 Mon Sep 17 00:00:00 2001 From: Maciej Date: Mon, 31 Jan 2022 21:40:48 +0100 Subject: [PATCH] Browser: Implement listener for most config options The only option leaved as TODO is ColorScheme. --- .../Applications/Browser/BrowserWindow.cpp | 26 +++++++++++++++++++ Userland/Applications/Browser/BrowserWindow.h | 7 ++++- Userland/Applications/Browser/main.cpp | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/Userland/Applications/Browser/BrowserWindow.cpp b/Userland/Applications/Browser/BrowserWindow.cpp index c435293ec4..943703ac3a 100644 --- a/Userland/Applications/Browser/BrowserWindow.cpp +++ b/Userland/Applications/Browser/BrowserWindow.cpp @@ -526,4 +526,30 @@ void BrowserWindow::create_new_tab(URL url, bool activate) m_tab_widget->set_active_widget(&new_tab); } +void BrowserWindow::config_string_did_change(String const& domain, String const& group, String const& key, String const& value) +{ + if (domain != "Browser" || group != "Preferences") + return; + + if (key == "SearchEngine") + Browser::g_search_engine = value; + else if (key == "Home") + Browser::g_home_url = value; + + // TODO: ColorScheme +} + +void BrowserWindow::config_bool_did_change(String const& domain, String const& group, String const& key, bool value) +{ + if (domain != "Browser" || group != "Preferences") + return; + + if (key == "ShowBookmarksBar") { + m_window_actions.show_bookmarks_bar_action().set_checked(value); + Browser::BookmarksBarWidget::the().set_visible(value); + } + + // NOTE: CloseDownloadWidgetOnFinish is read each time in DownloadWindow +} + } diff --git a/Userland/Applications/Browser/BrowserWindow.h b/Userland/Applications/Browser/BrowserWindow.h index 826cb33bb7..a4c68d5e3b 100644 --- a/Userland/Applications/Browser/BrowserWindow.h +++ b/Userland/Applications/Browser/BrowserWindow.h @@ -10,6 +10,7 @@ #include "BookmarksBarWidget.h" #include "Tab.h" #include "WindowActions.h" +#include #include #include @@ -18,7 +19,8 @@ namespace Browser { class CookieJar; class Tab; -class BrowserWindow final : public GUI::Window { +class BrowserWindow final : public GUI::Window + , public Config::Listener { C_OBJECT(BrowserWindow); public: @@ -45,6 +47,9 @@ private: ErrorOr load_search_engines(GUI::Menu& settings_menu); void set_window_title_for_tab(Tab const&); + virtual void config_string_did_change(String const& domain, String const& group, String const& key, String const& value) override; + virtual void config_bool_did_change(String const& domain, String const& group, String const& key, bool value) override; + RefPtr m_go_back_action; RefPtr m_go_forward_action; RefPtr m_go_home_action; diff --git a/Userland/Applications/Browser/main.cpp b/Userland/Applications/Browser/main.cpp index 218fc5a59e..016bb0c584 100644 --- a/Userland/Applications/Browser/main.cpp +++ b/Userland/Applications/Browser/main.cpp @@ -67,6 +67,7 @@ ErrorOr serenity_main(Main::Arguments arguments) auto app = GUI::Application::construct(arguments); Config::pledge_domain("Browser"); + Config::monitor_domain("Browser"); // Connect to LaunchServer immediately and let it know that we won't ask for anything other than opening // the user's downloads directory.