summaryrefslogtreecommitdiff
path: root/components/chatmessage.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'components/chatmessage.hpp')
-rw-r--r--components/chatmessage.hpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/components/chatmessage.hpp b/components/chatmessage.hpp
index 8007f68..181ffcd 100644
--- a/components/chatmessage.hpp
+++ b/components/chatmessage.hpp
@@ -7,7 +7,23 @@ enum class ChatDisplayType {
Text,
};
-class ChatMessageItem : public Gtk::ListBoxRow {
+// contains the username and timestamp, chat items get stuck into its box
+class ChatMessageContainer : public Gtk::ListBoxRow {
+public:
+ Snowflake UserID;
+
+ ChatMessageContainer(const MessageData *data);
+ void AddNewContent(Gtk::Widget *widget, bool prepend = false);
+
+protected:
+ Gtk::Box *m_main_box;
+ Gtk::Box *m_content_box;
+ Gtk::Box *m_meta_box;
+ Gtk::Label *m_author;
+ Gtk::Label *m_timestamp;
+};
+
+class ChatMessageItem {
public:
Snowflake ID;
ChatDisplayType MessageType;
@@ -15,18 +31,10 @@ public:
virtual void MarkAsDeleted() = 0;
};
-class ChatMessageTextItem : public ChatMessageItem {
+class ChatMessageTextItem
+ : public Gtk::TextView // oh well
+ , public ChatMessageItem {
public:
ChatMessageTextItem(const MessageData *data);
- void AppendNewContent(std::string content);
- void PrependNewContent(std::string content);
virtual void MarkAsDeleted();
-
-protected:
- Gtk::Box *m_main_box;
- Gtk::Box *m_sub_box;
- Gtk::Box *m_meta_box;
- Gtk::Label *m_author;
- Gtk::Label *m_timestamp;
- Gtk::TextView *m_text;
};