diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2025-06-09 08:44:54 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2025-06-09 08:44:54 +0200 |
| commit | b6b4399b20648de28def5411d90c4a3536da5b01 (patch) | |
| tree | 26f42212498a42df7cdb42a15bb067be0140d33a | |
| parent | 4466f721192844fe542d02aced2c8b3860e1433c (diff) | |
| download | turns-b6b4399b20648de28def5411d90c4a3536da5b01.tar.xz turns-b6b4399b20648de28def5411d90c4a3536da5b01.zip | |
gui: make Preferences default constructible
| -rw-r--r-- | gui/include/preferences.hpp | 9 | ||||
| -rw-r--r-- | gui/src/preferences.cpp | 61 |
2 files changed, 32 insertions, 38 deletions
diff --git a/gui/include/preferences.hpp b/gui/include/preferences.hpp index 9bd2e77..81e4cef 100644 --- a/gui/include/preferences.hpp +++ b/gui/include/preferences.hpp @@ -33,15 +33,10 @@ namespace Turns::gui "skip_defeated", }; - explicit Preferences(Glib::RefPtr<Gio::Settings> settings = {}); + Preferences(); + explicit Preferences(Glib::RefPtr<Gio::Settings> settings); private: - auto bind_reset(Glib::ustring const & key, Gtk::Button * button) -> void; - auto bind_setting(Glib::ustring const & key, Gtk::ColorDialogButton * button) -> void; - auto update_sensitive(Glib::ustring const & key, Gtk::Button * button) -> void; - - Glib::RefPtr<Gio::Settings> m_settings; - Gtk::Button * m_friendly_reset_button{}; Gtk::Button * m_hostile_reset_button{}; Gtk::Button * m_secret_reset_button{}; diff --git a/gui/src/preferences.cpp b/gui/src/preferences.cpp index 7a80aa2..6aa4704 100644 --- a/gui/src/preferences.cpp +++ b/gui/src/preferences.cpp @@ -31,12 +31,31 @@ namespace Turns::gui { auto constexpr static TYPE_NAME = "Preferences"; auto constexpr static TEMPLATE = resource::preferences_ui; + + auto update_sensitive(Glib::ustring const & key, Gtk::Button * button, Glib::RefPtr<Gio::Settings> const & settings) -> void + { + auto v = Glib::Variant<Glib::ustring>{}; + button->set_sensitive(settings->get_user_value(key, v)); + } + + auto bind_reset(Glib::ustring const & key, Gtk::Button * button, Glib::RefPtr<Gio::Settings> const & settings) -> void + { + settings->signal_changed(key).connect([=](auto) { update_sensitive(key, button, settings); }); + update_sensitive(key, button, settings); + button->signal_clicked().connect(sigc::bind(sigc::mem_fun(*settings, &Gio::Settings::reset), key)); + } + + auto bind_setting(Glib::ustring const & key, Gtk::ColorDialogButton * button, Glib::RefPtr<Gio::Settings> const & settings) -> void + { + settings->bind<Glib::ustring, Gdk::RGBA>(key, button->property_rgba(), Gio::Settings::BindFlags::DEFAULT, [](auto value) { + return Gdk::RGBA{value}; + }, [](auto color) { return color.to_string(); }); + } } // namespace - Preferences::Preferences(Glib::RefPtr<Gio::Settings> settings) + Preferences::Preferences() : Glib::ObjectBase{TYPE_NAME} , template_widget{TEMPLATE} - , m_settings{settings} , m_friendly_reset_button{get_widget<Gtk::Button>("friendly_reset_button")} , m_hostile_reset_button{get_widget<Gtk::Button>("hostile_reset_button")} , m_secret_reset_button{get_widget<Gtk::Button>("secret_reset_button")} @@ -45,39 +64,19 @@ namespace Turns::gui , m_secret_color_button{get_widget<Gtk::ColorDialogButton>("secret_color_button")} , m_skip_defeated{get_widget<Adwaita::SwitchRow>("skip_defeated")} { - if (!m_settings) - { - return; - } - - bind_reset(settings::key::disposition_friendly_color, m_friendly_reset_button); - bind_setting(settings::key::disposition_friendly_color, m_friendly_color_button); - bind_reset(settings::key::disposition_hostile_color, m_hostile_reset_button); - bind_setting(settings::key::disposition_hostile_color, m_hostile_color_button); - bind_reset(settings::key::disposition_secret_color, m_secret_reset_button); - bind_setting(settings::key::disposition_secret_color, m_secret_color_button); - - m_settings->bind(settings::key::skip_defeated, m_skip_defeated->property_active()); - } - - auto Preferences::bind_reset(Glib::ustring const & key, Gtk::Button * button) -> void - { - m_settings->signal_changed(key).connect([=, this](auto) { update_sensitive(key, button); }); - update_sensitive(key, button); - button->signal_clicked().connect(sigc::bind(sigc::mem_fun(*m_settings, &Gio::Settings::reset), key)); } - auto Preferences::bind_setting(Glib::ustring const & key, Gtk::ColorDialogButton * button) -> void + Preferences::Preferences(Glib::RefPtr<Gio::Settings> settings) + : Preferences{} { - m_settings->bind<Glib::ustring, Gdk::RGBA>(key, button->property_rgba(), Gio::Settings::BindFlags::DEFAULT, [](auto value) { - return Gdk::RGBA{value}; - }, [](auto color) { return color.to_string(); }); - } + bind_reset(settings::key::disposition_friendly_color, m_friendly_reset_button, settings); + bind_setting(settings::key::disposition_friendly_color, m_friendly_color_button, settings); + bind_reset(settings::key::disposition_hostile_color, m_hostile_reset_button, settings); + bind_setting(settings::key::disposition_hostile_color, m_hostile_color_button, settings); + bind_reset(settings::key::disposition_secret_color, m_secret_reset_button, settings); + bind_setting(settings::key::disposition_secret_color, m_secret_color_button, settings); - auto Preferences::update_sensitive(Glib::ustring const & key, Gtk::Button * button) -> void - { - auto v = Glib::Variant<Glib::ustring>{}; - button->set_sensitive(m_settings->get_user_value(key, v)); + settings->bind(settings::key::skip_defeated, m_skip_defeated->property_active()); } } // namespace Turns::gui
\ No newline at end of file |
