summaryrefslogtreecommitdiff
path: root/components/chatwindow.hpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2020-08-20 03:19:16 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2020-08-20 03:19:16 -0400
commita201d5905ad9188e890eeb0cc0aee8d4fb9dcf3c (patch)
treee7b28048f1150c379db1fb27e8efa032aafaf06d /components/chatwindow.hpp
parent4b903bbd3e8436e1d63b8c12e76d8a3c924da5fc (diff)
downloadabaddon-portaudio-a201d5905ad9188e890eeb0cc0aee8d4fb9dcf3c.tar.gz
abaddon-portaudio-a201d5905ad9188e890eeb0cc0aee8d4fb9dcf3c.zip
rudimentary chat
Diffstat (limited to 'components/chatwindow.hpp')
-rw-r--r--components/chatwindow.hpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/components/chatwindow.hpp b/components/chatwindow.hpp
new file mode 100644
index 0000000..9b4a16d
--- /dev/null
+++ b/components/chatwindow.hpp
@@ -0,0 +1,33 @@
+#pragma once
+#include <gtkmm.h>
+#include <queue>
+#include <mutex>
+#include "../discord/discord.hpp"
+
+class ChatWindow {
+public:
+ ChatWindow();
+ Gtk::Widget *GetRoot() const;
+ void SetActiveChannel(Snowflake id);
+ Snowflake GetActiveChannel() const;
+ void SetMessages(std::unordered_set<const MessageData *> msgs);
+
+protected:
+ void ScrollToBottom();
+ void SetMessagesInternal();
+ Gtk::ListBoxRow *CreateChatEntryComponentText(const MessageData *data);
+ Gtk::ListBoxRow *CreateChatEntryComponent(const MessageData *data);
+
+ Glib::Dispatcher m_update_dispatcher;
+ std::queue<std::unordered_set<const MessageData *>> m_update_queue;
+ std::mutex m_update_mutex;
+
+ Snowflake m_active_channel;
+
+ Gtk::Box *m_main;
+ Gtk::ListBox *m_listbox;
+ Gtk::Viewport *m_viewport;
+ Gtk::ScrolledWindow *m_scroll;
+ Gtk::ScrolledWindow *m_entry_scroll;
+ Gtk::TextView *m_input;
+};