/* * Copyright (c) 2022, Filiph Sandström * Copyright (c) 2023, Cameron Youell * Copyright (c) 2024, Jamie Mansfield * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace Ladybird { class Settings : public QObject { Q_OBJECT public: Settings(Settings const&) = delete; Settings& operator=(Settings const&) = delete; static Settings* the() { static Settings instance; return &instance; } ByteString directory(); Optional last_position(); void set_last_position(QPoint const& last_position); QSize last_size(); void set_last_size(QSize const& last_size); bool is_maximized(); void set_is_maximized(bool is_maximized); QString new_tab_page(); void set_new_tab_page(QString const& page); WebView::SearchEngine search_engine() const { return m_search_engine; } void set_search_engine(WebView::SearchEngine engine); QStringList preferred_languages(); void set_preferred_languages(QStringList const& languages); struct EngineProvider { QString name; QString url; }; EngineProvider autocomplete_engine(); void set_autocomplete_engine(EngineProvider const& engine); bool enable_autocomplete(); void set_enable_autocomplete(bool enable); bool enable_search(); void set_enable_search(bool enable); bool enable_do_not_track(); void set_enable_do_not_track(bool enable); bool show_menubar(); void set_show_menubar(bool show_menubar); signals: void show_menubar_changed(bool show_menubar); void enable_search_changed(bool enable); void search_engine_changed(WebView::SearchEngine engine); void preferred_languages_changed(QStringList const& languages); void enable_do_not_track_changed(bool enable); protected: Settings(); private: OwnPtr m_qsettings; WebView::SearchEngine m_search_engine; }; }