aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_summary/conversation_item.vala
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/ui/conversation_summary/conversation_item.vala')
-rw-r--r--main/src/ui/conversation_summary/conversation_item.vala34
1 files changed, 34 insertions, 0 deletions
diff --git a/main/src/ui/conversation_summary/conversation_item.vala b/main/src/ui/conversation_summary/conversation_item.vala
new file mode 100644
index 00000000..480ccd48
--- /dev/null
+++ b/main/src/ui/conversation_summary/conversation_item.vala
@@ -0,0 +1,34 @@
+using Dino.Entities;
+
+namespace Dino.Ui.ConversationSummary {
+
+public enum MessageKind {
+ TEXT,
+ ME_COMMAND
+}
+
+public MessageKind get_message_kind(Message message) {
+ if (message.body.has_prefix("/me ")) {
+ return MessageKind.ME_COMMAND;
+ } else {
+ return MessageKind.TEXT;
+ }
+}
+
+public interface ConversationItem : Gtk.Widget {
+ public abstract bool merge(Entities.Message message);
+
+ public static ConversationItem create_for_message(StreamInteractor stream_interactor, Conversation conversation, Message message) {
+ switch (get_message_kind(message)) {
+ case MessageKind.TEXT:
+ return new MergedMessageItem(stream_interactor, conversation, message);
+ break;
+ case MessageKind.ME_COMMAND:
+ return new SlashMeItem(stream_interactor, conversation, message);
+ break;
+ }
+ return null;
+ }
+}
+
+} \ No newline at end of file