diff options
Diffstat (limited to 'main/src/ui/conversation_summary/conversation_item.vala')
-rw-r--r-- | main/src/ui/conversation_summary/conversation_item.vala | 34 |
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 |