From 46c93e74067de844b35c1249122fcf878a0db924 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 15 Aug 2024 20:41:34 +0200 Subject: ui: prepare basic color preference infrastructure --- ui/src/windows/tracker.cpp | 29 +++++++++++++++++++++++++++++ ui/src/windows/tracker/event_handlers.cpp | 6 ++++++ 2 files changed, 35 insertions(+) (limited to 'ui/src') diff --git a/ui/src/windows/tracker.cpp b/ui/src/windows/tracker.cpp index 0b581af..c6dc731 100644 --- a/ui/src/windows/tracker.cpp +++ b/ui/src/windows/tracker.cpp @@ -11,22 +11,28 @@ #include #include +#include #include +#include #include #include +#include #include #include #include +#include #include #include #include #include #include +#include #include #include +#include #include #include @@ -48,7 +54,10 @@ namespace turns::ui::windows , m_turn_order{core::turn_order::create()} , m_turn_order_view{Gtk::make_managed(m_turn_order)} , m_subtitle{m_title, "subtitle"} + , m_css{Gtk::CssProvider::create()} + , m_settings{Gio::Settings::create("ch.arknet.Turns")} { + setup_colors(); setup_actions(); m_stack->add(*m_turn_order_view); @@ -159,6 +168,13 @@ namespace turns::ui::windows } } + auto tracker::setup_colors() -> void + { + Gtk::CssProvider::add_provider_for_display(get_display(), m_css, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + m_settings->signal_changed().connect(sigc::mem_fun(*this, &tracker::on_settings_changed)); + update_colors(); + } + auto tracker::start_replace_content() -> void { m_file_buffer = m_turn_order->serialize().dump(2); @@ -176,6 +192,19 @@ namespace turns::ui::windows m_overlay->add(adw::Toast{message}); } + auto tracker::update_colors() -> void + { + auto friendly_color = m_settings->get_string("disposition-color-friendly"); + auto hostile_color = m_settings->get_string("disposition-color-hostile"); + auto secret_color = m_settings->get_string("disposition-color-secret"); + m_css->load_from_string(std::format("@define-color friendly {};\n" + "@define-color hostile {};\n" + "@define-color secret {};\n", + friendly_color.c_str(), + hostile_color.c_str(), + secret_color.c_str())); + } + auto tracker::update_subtitle() -> void { if (m_turn_order->is_empty()) diff --git a/ui/src/windows/tracker/event_handlers.cpp b/ui/src/windows/tracker/event_handlers.cpp index 3fc1c53..e33e889 100644 --- a/ui/src/windows/tracker/event_handlers.cpp +++ b/ui/src/windows/tracker/event_handlers.cpp @@ -5,6 +5,7 @@ #include #include +#include #include #include @@ -97,4 +98,9 @@ namespace turns::ui::windows set_sensitive(false); } + auto tracker::on_settings_changed(Glib::ustring) -> void + { + update_colors(); + } + } // namespace turns::ui::windows \ No newline at end of file -- cgit v1.2.3