summaryrefslogtreecommitdiff
path: root/ui/src/widgets/preferences.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2024-08-17 11:41:43 +0200
committerFelix Morgner <felix.morgner@gmail.com>2024-08-17 11:41:43 +0200
commitfb917713e55147c6b0de514924c4867d9e8d5894 (patch)
tree5668c2772759a5b4d01cbca15cc03ce36199cbed /ui/src/widgets/preferences.cpp
parent46c93e74067de844b35c1249122fcf878a0db924 (diff)
downloadturns-fb917713e55147c6b0de514924c4867d9e8d5894.tar.xz
turns-fb917713e55147c6b0de514924c4867d9e8d5894.zip
ui: add participant shading color preferences
Diffstat (limited to 'ui/src/widgets/preferences.cpp')
-rw-r--r--ui/src/widgets/preferences.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/ui/src/widgets/preferences.cpp b/ui/src/widgets/preferences.cpp
new file mode 100644
index 0000000..24de613
--- /dev/null
+++ b/ui/src/widgets/preferences.cpp
@@ -0,0 +1,68 @@
+#include "turns/ui/widgets/preferences.hpp"
+
+#include "turns/adw/actionrow.hpp"
+#include "turns/ui/widgets/template_widget.hpp"
+
+#include <glibmm/objectbase.h>
+#include <glibmm/refptr.h>
+
+#include <giomm/settings.h>
+
+#include <gtkmm/colordialog.h>
+#include <gtkmm/enums.h>
+
+#include <gdkmm/rgba.h>
+
+namespace turns::ui::widgets
+{
+ namespace
+ {
+ auto constexpr static TYPE_NAME = "preferences";
+ auto constexpr static TEMPLATE = "/widgets/preferences.ui";
+ } // namespace
+
+ preferences::preferences(Glib::RefPtr<Gio::Settings> settings)
+ : Glib::ObjectBase{TYPE_NAME}
+ , template_widget{TEMPLATE}
+ , m_settings{settings}
+ , m_friendly{get_widget<adw::ActionRow>("friendly")}
+ , m_hostile{get_widget<adw::ActionRow>("hostile")}
+ , m_secret{get_widget<adw::ActionRow>("secret")}
+ {
+ if (!m_settings)
+ {
+ return;
+ }
+
+ m_friendly->add_suffix(m_friendly_button);
+ m_friendly->set_activatable_widget(m_friendly_button);
+ m_friendly_button.set_dialog(Gtk::ColorDialog::create());
+ m_friendly_button.set_valign(Gtk::Align::CENTER);
+ m_settings->bind<Glib::ustring, Gdk::RGBA>("disposition-color-friendly",
+ m_friendly_button.property_rgba(),
+ Gio::Settings::BindFlags::DEFAULT,
+ [](auto value) { return Gdk::RGBA{value}; },
+ [](auto color) { return color.to_string(); });
+
+ m_hostile->add_suffix(m_hostile_button);
+ m_hostile->set_activatable_widget(m_hostile_button);
+ m_hostile_button.set_dialog(Gtk::ColorDialog::create());
+ m_hostile_button.set_valign(Gtk::Align::CENTER);
+ m_settings->bind<Glib::ustring, Gdk::RGBA>("disposition-color-hostile",
+ m_hostile_button.property_rgba(),
+ Gio::Settings::BindFlags::DEFAULT,
+ [](auto value) { return Gdk::RGBA{value}; },
+ [](auto color) { return color.to_string(); });
+
+ m_secret->add_suffix(m_secret_button);
+ m_secret->set_activatable_widget(m_secret_button);
+ m_secret_button.set_dialog(Gtk::ColorDialog::create());
+ m_secret_button.set_valign(Gtk::Align::CENTER);
+ m_settings->bind<Glib::ustring, Gdk::RGBA>("disposition-color-secret",
+ m_secret_button.property_rgba(),
+ Gio::Settings::BindFlags::DEFAULT,
+ [](auto value) { return Gdk::RGBA{value}; },
+ [](auto color) { return color.to_string(); });
+ }
+
+} // namespace turns::ui::widgets \ No newline at end of file