1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 03:47:35 +00:00

Browser: Implement listener for most config options

The only option leaved as TODO is ColorScheme.
This commit is contained in:
Maciej 2022-01-31 21:40:48 +01:00 committed by Andreas Kling
parent d3fc3337ef
commit 43e463748d
3 changed files with 33 additions and 1 deletions

View file

@ -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
}
}

View file

@ -10,6 +10,7 @@
#include "BookmarksBarWidget.h"
#include "Tab.h"
#include "WindowActions.h"
#include <LibConfig/Listener.h>
#include <LibGUI/ActionGroup.h>
#include <LibGUI/Window.h>
@ -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<void> 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<GUI::Action> m_go_back_action;
RefPtr<GUI::Action> m_go_forward_action;
RefPtr<GUI::Action> m_go_home_action;

View file

@ -67,6 +67,7 @@ ErrorOr<int> 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.