aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_content_view/content_populator.vala
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2020-04-03 22:49:59 +0200
committerfiaxh <git@lightrise.org>2020-04-03 22:49:59 +0200
commit871ff33ac79f3d17b0260b8bfcd27780038edd6d (patch)
treef8079e29db5d0f9294fbfbfb47b93b0403249cc9 /main/src/ui/conversation_content_view/content_populator.vala
parent1c8e15c408f57d93461e6adb33c4c4415ac49267 (diff)
downloaddino-871ff33ac79f3d17b0260b8bfcd27780038edd6d.tar.gz
dino-871ff33ac79f3d17b0260b8bfcd27780038edd6d.zip
Add support for last message correction
Diffstat (limited to 'main/src/ui/conversation_content_view/content_populator.vala')
-rw-r--r--main/src/ui/conversation_content_view/content_populator.vala39
1 files changed, 16 insertions, 23 deletions
diff --git a/main/src/ui/conversation_content_view/content_populator.vala b/main/src/ui/conversation_content_view/content_populator.vala
index e8eee06c..2a0f8ac1 100644
--- a/main/src/ui/conversation_content_view/content_populator.vala
+++ b/main/src/ui/conversation_content_view/content_populator.vala
@@ -9,13 +9,11 @@ namespace Dino.Ui.ConversationSummary {
public class ContentProvider : ContentItemCollection, Object {
private StreamInteractor stream_interactor;
- private ContentItemWidgetFactory widget_factory;
private Conversation? current_conversation;
private Plugins.ConversationItemCollection? item_collection;
public ContentProvider(StreamInteractor stream_interactor) {
this.stream_interactor = stream_interactor;
- this.widget_factory = new ContentItemWidgetFactory(stream_interactor);
}
public void init(Plugins.ConversationItemCollection item_collection, Conversation conversation, Plugins.WidgetType type) {
@@ -28,7 +26,7 @@ public class ContentProvider : ContentItemCollection, Object {
}
public void insert_item(ContentItem item) {
- item_collection.insert_item(new ContentMetaItem(item, widget_factory));
+ item_collection.insert_item(create_content_meta_item(item));
}
public void remove_item(ContentItem item) { }
@@ -38,7 +36,7 @@ public class ContentProvider : ContentItemCollection, Object {
Gee.List<ContentItem> items = stream_interactor.get_module(ContentItemStore.IDENTITY).get_n_latest(conversation, n);
Gee.List<ContentMetaItem> ret = new ArrayList<ContentMetaItem>();
foreach (ContentItem item in items) {
- ret.add(new ContentMetaItem(item, widget_factory));
+ ret.add(create_content_meta_item(item));
}
return ret;
}
@@ -47,7 +45,7 @@ public class ContentProvider : ContentItemCollection, Object {
Gee.List<ContentMetaItem> ret = new ArrayList<ContentMetaItem>();
Gee.List<ContentItem> items = stream_interactor.get_module(ContentItemStore.IDENTITY).get_before(conversation, before_item, n);
foreach (ContentItem item in items) {
- ret.add(new ContentMetaItem(item, widget_factory));
+ ret.add(create_content_meta_item(item));
}
return ret;
}
@@ -56,26 +54,30 @@ public class ContentProvider : ContentItemCollection, Object {
Gee.List<ContentMetaItem> ret = new ArrayList<ContentMetaItem>();
Gee.List<ContentItem> items = stream_interactor.get_module(ContentItemStore.IDENTITY).get_after(conversation, after_item, n);
foreach (ContentItem item in items) {
- ret.add(new ContentMetaItem(item, widget_factory));
+ ret.add(create_content_meta_item(item));
}
return ret;
}
public ContentMetaItem get_content_meta_item(ContentItem content_item) {
- return new ContentMetaItem(content_item, widget_factory);
+ return create_content_meta_item(content_item);
+ }
+
+ private ContentMetaItem create_content_meta_item(ContentItem content_item) {
+ if (content_item.type_ == MessageItem.TYPE) {
+ return new MessageMetaItem(content_item, stream_interactor);
+ } else if (content_item.type_ == FileItem.TYPE) {
+ return new FileMetaItem(content_item, stream_interactor);
+ }
+ return null;
}
}
-public class ContentMetaItem : Plugins.MetaConversationItem {
- public override Jid? jid { get; set; }
- public override DateTime sort_time { get; set; }
- public override DateTime? display_time { get; set; }
- public override Encryption encryption { get; set; }
+public abstract class ContentMetaItem : Plugins.MetaConversationItem {
public ContentItem content_item;
- private ContentItemWidgetFactory widget_factory;
- public ContentMetaItem(ContentItem content_item, ContentItemWidgetFactory widget_factory) {
+ protected ContentMetaItem(ContentItem content_item) {
this.jid = content_item.jid;
this.sort_time = content_item.sort_time;
this.seccondary_sort_indicator = (long) content_item.display_time.to_unix();
@@ -96,15 +98,6 @@ public class ContentMetaItem : Plugins.MetaConversationItem {
this.requires_header = true;
this.content_item = content_item;
- this.widget_factory = widget_factory;
- }
-
- public override bool can_merge { get; set; default=true; }
- public override bool requires_avatar { get; set; default=true; }
- public override bool requires_header { get; set; default=true; }
-
- public override Object? get_widget(Plugins.WidgetType type) {
- return widget_factory.get_widget(content_item);
}
}