summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--style/style.css16
-rw-r--r--ui/include/turns/ui/windows/tracker.hpp9
-rw-r--r--ui/src/windows/tracker.cpp29
-rw-r--r--ui/src/windows/tracker/event_handlers.cpp6
4 files changed, 53 insertions, 7 deletions
diff --git a/style/style.css b/style/style.css
index 4dd439a..78be454 100644
--- a/style/style.css
+++ b/style/style.css
@@ -1,25 +1,29 @@
+@define-color hostile @red_3;
+@define-color friendly @green_3;
+@define-color secret @purple_3;
+
.disposition-hostile {
- background-color: mix(shade(@red_3, 1.6), @window_bg_color, 0.5);
+ background-color: mix(shade(@hostile, 1.6), @window_bg_color, 0.5);
}
:checked.disposition-hostile {
- background-color: mix(shade(@red_3, 1), @window_bg_color, 0.5);
+ background-color: mix(shade(@hostile, 1), @window_bg_color, 0.5);
}
.disposition-friendly {
- background-color: mix(shade(@green_3, 1.6), @window_bg_color, 0.5);
+ background-color: mix(shade(@friendly, 1.6), @window_bg_color, 0.5);
}
:checked.disposition-friendly {
- background-color: mix(shade(@green_3, 1), @window_bg_color, 0.5);
+ background-color: mix(shade(@friendly, 1), @window_bg_color, 0.5);
}
.disposition-secret {
- background-color: mix(shade(@purple_3, 1.6), @window_bg_color, 0.5);
+ background-color: mix(shade(@secret, 1.6), @window_bg_color, 0.5);
}
:checked.disposition-secret {
- background-color: mix(shade(@purple_3, 1), @window_bg_color, 0.5);
+ background-color: mix(shade(@secret, 1), @window_bg_color, 0.5);
}
.active-participant {
diff --git a/ui/include/turns/ui/windows/tracker.hpp b/ui/include/turns/ui/windows/tracker.hpp
index 7e5f799..e14f08a 100644
--- a/ui/include/turns/ui/windows/tracker.hpp
+++ b/ui/include/turns/ui/windows/tracker.hpp
@@ -1,7 +1,6 @@
#ifndef TURNS_UI_WINDOWS_TRACKER_HPP
#define TURNS_UI_WINDOWS_TRACKER_HPP
-#include "turns/adw/toast.hpp"
#include "turns/adw/toastoverlay.hpp"
#include "turns/core/turn_order.hpp"
#include "turns/ui/widgets/turn_order_view.hpp"
@@ -13,6 +12,7 @@
#include <giomm/asyncresult.h>
#include <giomm/file.h>
+#include <giomm/settings.h>
#include <gtkmm/applicationwindow.h>
#include <gtkmm/builder.h>
@@ -21,6 +21,7 @@
#include <gtkmm/revealer.h>
#include <gtkmm/stack.h>
#include <gtkmm/widget.h>
+#include <gtkmm/cssprovider.h>
#include <exception>
#include <string>
@@ -37,6 +38,7 @@ namespace turns::ui::windows
private:
/** Setup */
auto setup_actions() -> void;
+ auto setup_colors() -> void;
/** Actions */
auto add_participant() -> void;
@@ -51,11 +53,13 @@ namespace turns::ui::windows
auto on_save_response(Glib::RefPtr<Gio::AsyncResult> result, Glib::RefPtr<Gtk::FileDialog> dialog) -> void;
auto on_load_content_done(Glib::RefPtr<Gio::AsyncResult> result) -> void;
auto on_replace_content_done(Glib::RefPtr<Gio::AsyncResult> result) -> void;
+ auto on_settings_changed(Glib::ustring key) -> void;
/** Helpers */
auto show_error(std::exception const & e) -> void;
auto show_toast(std::string const & message) -> void;
auto start_replace_content() -> void;
+ auto update_colors() -> void;
auto update_subtitle() -> void;
Gtk::Revealer * m_controls;
@@ -71,6 +75,9 @@ namespace turns::ui::windows
Glib::RefPtr<Gio::File> m_file{};
std::string m_file_etag{};
std::string m_file_buffer{};
+
+ Glib::RefPtr<Gtk::CssProvider> m_css{};
+ Glib::RefPtr<Gio::Settings> m_settings{};
};
} // namespace turns::ui::windows
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 <glibmm/binding.h>
#include <glibmm/i18n.h>
+#include <glibmm/propertyproxy.h>
#include <glibmm/refptr.h>
+#include <glibmm/ustring.h>
#include <glibmm/varianttype.h>
#include <giomm/liststore.h>
+#include <giomm/settings.h>
#include <gtkmm/applicationwindow.h>
#include <gtkmm/builder.h>
#include <gtkmm/button.h>
+#include <gtkmm/cssprovider.h>
#include <gtkmm/error.h>
#include <gtkmm/filedialog.h>
#include <gtkmm/object.h>
#include <gtkmm/revealer.h>
#include <gtkmm/stack.h>
+#include <gtkmm/styleprovider.h>
#include <gtkmm/widget.h>
#include <adwaita.h>
+#include <gtk/gtk.h>
#include <nlohmann/json.hpp>
#include <exception>
@@ -48,7 +54,10 @@ namespace turns::ui::windows
, m_turn_order{core::turn_order::create()}
, m_turn_order_view{Gtk::make_managed<widgets::turn_order_view>(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 <glibmm/i18n.h>
#include <glibmm/refptr.h>
+#include <glibmm/ustring.h>
#include <giomm/asyncresult.h>
#include <giomm/error.h>
@@ -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