From e8cbb9d3d1ecca25f1e0a31a75fac70c7a3ea0cb Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Mon, 11 Jan 2021 18:27:46 -0500 Subject: add typing indicator with optional res/typing_indicator.gif --- components/typingindicator.hpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 components/typingindicator.hpp (limited to 'components/typingindicator.hpp') diff --git a/components/typingindicator.hpp b/components/typingindicator.hpp new file mode 100644 index 0000000..d9633f4 --- /dev/null +++ b/components/typingindicator.hpp @@ -0,0 +1,24 @@ +#pragma once +#include +#include +#include "../discord/snowflake.hpp" +#include "../discord/user.hpp" + +class TypingIndicator : public Gtk::Box { +public: + TypingIndicator(); + void SetActiveChannel(Snowflake id); + +private: + void AddUser(Snowflake channel_id, const UserData &user, int timeout); + void OnUserTypingStart(Snowflake user_id, Snowflake channel_id); + void OnMessageCreate(Snowflake message_id); + void SetTypingString(const Glib::ustring &str); + void ComputeTypingString(); + + Gtk::Image m_img; + Gtk::Label m_label; + + Snowflake m_active_channel; + std::unordered_map> m_typers; // channel id -> [user id -> connection] +}; -- cgit v1.2.3