diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2024-08-17 11:41:43 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2024-08-17 11:41:43 +0200 |
| commit | fb917713e55147c6b0de514924c4867d9e8d5894 (patch) | |
| tree | 5668c2772759a5b4d01cbca15cc03ce36199cbed /ui/src | |
| parent | 46c93e74067de844b35c1249122fcf878a0db924 (diff) | |
| download | turns-fb917713e55147c6b0de514924c4867d9e8d5894.tar.xz turns-fb917713e55147c6b0de514924c4867d9e8d5894.zip | |
ui: add participant shading color preferences
Diffstat (limited to 'ui/src')
| -rw-r--r-- | ui/src/widgets/preferences.cpp | 68 | ||||
| -rw-r--r-- | ui/src/windows/tracker.cpp | 6 | ||||
| -rw-r--r-- | ui/src/windows/tracker/actions.cpp | 13 |
3 files changed, 86 insertions, 1 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 diff --git a/ui/src/windows/tracker.cpp b/ui/src/windows/tracker.cpp index c6dc731..b9a55c0 100644 --- a/ui/src/windows/tracker.cpp +++ b/ui/src/windows/tracker.cpp @@ -4,6 +4,7 @@ #include "turns/adw/toastoverlay.hpp" #include "turns/core/turn_order.hpp" #include "turns/lang/messages.hpp" +#include "turns/ui/widgets/preferences.hpp" #include "turns/ui/widgets/turn_order_view.hpp" #include <sigc++/adaptors/bind.h> @@ -15,6 +16,7 @@ #include <glibmm/refptr.h> #include <glibmm/ustring.h> #include <glibmm/varianttype.h> +#include <glibmm/wrap.h> #include <giomm/liststore.h> #include <giomm/settings.h> @@ -53,9 +55,9 @@ namespace turns::ui::windows , m_title{builder->get_widget<Gtk::Widget>("title")} , m_turn_order{core::turn_order::create()} , m_turn_order_view{Gtk::make_managed<widgets::turn_order_view>(m_turn_order)} + , m_settings{Gio::Settings::create("ch.arknet.Turns")} , m_subtitle{m_title, "subtitle"} , m_css{Gtk::CssProvider::create()} - , m_settings{Gio::Settings::create("ch.arknet.Turns")} { setup_colors(); setup_actions(); @@ -141,10 +143,12 @@ namespace turns::ui::windows // win.delete // win.edit // win.open + // win.preferences { add_action_with_parameter("delete", Glib::VARIANT_TYPE_INT32, sigc::mem_fun(*this, &tracker::delete_participant)); add_action_with_parameter("edit", Glib::VARIANT_TYPE_INT32, sigc::mem_fun(*this, &tracker::edit_participant)); add_action("open", sigc::mem_fun(*this, &tracker::open)); + add_action("preferences", sigc::mem_fun(*this, &tracker::preferences)); } // win.save diff --git a/ui/src/windows/tracker/actions.cpp b/ui/src/windows/tracker/actions.cpp index 3210089..c26afbf 100644 --- a/ui/src/windows/tracker/actions.cpp +++ b/ui/src/windows/tracker/actions.cpp @@ -1,6 +1,8 @@ +#include "turns/adw/preferencesdialog.hpp" #include "turns/core/participant.hpp" #include "turns/core/turn_order.hpp" #include "turns/lang/messages.hpp" +#include "turns/ui/widgets/preferences.hpp" #include "turns/ui/windows/participant_editor.hpp" #include "turns/ui/windows/tracker.hpp" @@ -14,10 +16,12 @@ #include <glibmm/wrap.h> #include <giomm/liststore.h> +#include <giomm/settings.h> #include <gtkmm/builder.h> #include <gtkmm/filedialog.h> #include <gtkmm/filefilter.h> +#include <gtkmm/object.h> #include <adwaita.h> #include <gio/gio.h> @@ -89,6 +93,15 @@ namespace turns::ui::windows dialog->open(sigc::bind(sigc::mem_fun(*this, &tracker::on_open_response), dialog)); } + auto tracker::preferences() -> void + { + auto preferences = Gtk::make_managed<widgets::preferences>(m_settings); + auto dialog = Gtk::make_managed<adw::PreferencesDialog>(); + dialog->add(*preferences); + adw_preferences_dialog_set_visible_page(Glib::unwrap(dialog), Glib::unwrap(preferences)); + dialog->present(this); + } + auto tracker::save(bool force_ask) -> void { if (m_file && !force_ask) |
