summaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-06-09 08:44:54 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-06-09 08:44:54 +0200
commitb6b4399b20648de28def5411d90c4a3536da5b01 (patch)
tree26f42212498a42df7cdb42a15bb067be0140d33a /gui
parent4466f721192844fe542d02aced2c8b3860e1433c (diff)
downloadturns-b6b4399b20648de28def5411d90c4a3536da5b01.tar.xz
turns-b6b4399b20648de28def5411d90c4a3536da5b01.zip
gui: make Preferences default constructible
Diffstat (limited to 'gui')
-rw-r--r--gui/include/preferences.hpp9
-rw-r--r--gui/src/preferences.cpp61
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