From 511fb445d15e379d4dd3b7fd137a249c960cf84d Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Thu, 9 Dec 2021 02:54:59 -0500 Subject: rudimentary guild unread indicator --- src/components/unreadrenderer.cpp | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'src/components/unreadrenderer.cpp') diff --git a/src/components/unreadrenderer.cpp b/src/components/unreadrenderer.cpp index 4e508fc..b53af2d 100644 --- a/src/components/unreadrenderer.cpp +++ b/src/components/unreadrenderer.cpp @@ -1,14 +1,36 @@ #include "unreadrenderer.hpp" #include "abaddon.hpp" +void UnreadRenderer::RenderUnreadOnGuild(Snowflake id, const Cairo::RefPtr &cr, const Gdk::Rectangle &background_area, const Gdk::Rectangle &cell_area) { + // maybe have DiscordClient track this? + auto &discord = Abaddon::Get().GetDiscordClient(); + const auto channels = discord.GetChannelsInGuild(id); + bool has_unread = false; + for (const auto &id : channels) { + if (Abaddon::Get().GetDiscordClient().GetUnreadStateForChannel(id) >= 0) { + has_unread = true; + break; + } + } + if (!has_unread) return; + + cr->set_source_rgb(1.0, 1.0, 1.0); + const auto x = background_area.get_x(); + const auto y = background_area.get_y(); + const auto w = background_area.get_width(); + const auto h = background_area.get_height(); + cr->rectangle(x, y + h / 2 - 24 / 2, 3, 24); + cr->fill(); +} + void UnreadRenderer::RenderUnreadOnChannel(Snowflake id, const Cairo::RefPtr &cr, const Gdk::Rectangle &background_area, const Gdk::Rectangle &cell_area) { const auto state = Abaddon::Get().GetDiscordClient().GetUnreadStateForChannel(id); if (state >= 0) { cr->set_source_rgb(1.0, 1.0, 1.0); - const auto x = cell_area.get_x() + 1; - const auto y = cell_area.get_y(); - const auto w = cell_area.get_width(); - const auto h = cell_area.get_height(); + const auto x = background_area.get_x(); + const auto y = background_area.get_y(); + const auto w = background_area.get_width(); + const auto h = background_area.get_height(); cr->rectangle(x, y, 3, h); cr->fill(); } -- cgit v1.2.3