diff options
Diffstat (limited to 'ui/src/widgets/preferences.cpp')
| -rw-r--r-- | ui/src/widgets/preferences.cpp | 68 |
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 |
