diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-08-20 03:19:16 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-08-20 03:19:16 -0400 |
commit | a201d5905ad9188e890eeb0cc0aee8d4fb9dcf3c (patch) | |
tree | e7b28048f1150c379db1fb27e8efa032aafaf06d /components/chatwindow.hpp | |
parent | 4b903bbd3e8436e1d63b8c12e76d8a3c924da5fc (diff) | |
download | abaddon-portaudio-a201d5905ad9188e890eeb0cc0aee8d4fb9dcf3c.tar.gz abaddon-portaudio-a201d5905ad9188e890eeb0cc0aee8d4fb9dcf3c.zip |
rudimentary chat
Diffstat (limited to 'components/chatwindow.hpp')
-rw-r--r-- | components/chatwindow.hpp | 33 |
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; +}; |