aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_summary/conversation_item_skeleton.vala
diff options
context:
space:
mode:
authorfiaxh <git@mx.ax.lt>2017-11-21 22:17:04 +0100
committerfiaxh <git@mx.ax.lt>2017-11-22 00:32:11 +0100
commitf3063f56b7e2ccfef255256d5bf527988fcf2957 (patch)
tree6d7ddb4fd5a8ae65ca431f575fe1b1157559f45e /main/src/ui/conversation_summary/conversation_item_skeleton.vala
parentebf8d7ab01bd9df03c3a9fda0f0e2c5da228c8ce (diff)
downloaddino-f3063f56b7e2ccfef255256d5bf527988fcf2957.tar.gz
dino-f3063f56b7e2ccfef255256d5bf527988fcf2957.zip
ConversationView: Split merged messages when an in-between one is added
Diffstat (limited to 'main/src/ui/conversation_summary/conversation_item_skeleton.vala')
-rw-r--r--main/src/ui/conversation_summary/conversation_item_skeleton.vala15
1 files changed, 11 insertions, 4 deletions
diff --git a/main/src/ui/conversation_summary/conversation_item_skeleton.vala b/main/src/ui/conversation_summary/conversation_item_skeleton.vala
index 1eb76840..ed540e5d 100644
--- a/main/src/ui/conversation_summary/conversation_item_skeleton.vala
+++ b/main/src/ui/conversation_summary/conversation_item_skeleton.vala
@@ -17,9 +17,10 @@ public class ConversationItemSkeleton : Grid {
public StreamInteractor stream_interactor;
public Conversation conversation { get; set; }
- public Gee.List<Plugins.MetaConversationItem> items = new ArrayList<Plugins.MetaConversationItem>();
+ public ArrayList<Plugins.MetaConversationItem> items = new ArrayList<Plugins.MetaConversationItem>();
private Box box = new Box(Orientation.VERTICAL, 2) { visible=true };
+ private HashMap<Plugins.MetaConversationItem, Widget> item_widgets = new HashMap<Plugins.MetaConversationItem, Widget>();
public ConversationItemSkeleton(StreamInteractor stream_interactor, Conversation conversation) {
this.conversation = conversation;
@@ -36,11 +37,17 @@ public class ConversationItemSkeleton : Grid {
Widget widget = (Widget) item.get_widget(Plugins.WidgetType.GTK);
if (item.requires_header) {
box.add(widget);
+ item_widgets[item] = widget;
} else {
set_title_widget(widget);
}
- item.notify["mark"].connect_after(update_received);
- update_received();
+ item.notify["mark"].connect_after(update_received_mark);
+ update_received_mark();
+ }
+
+ public void remove_meta_item(Plugins.MetaConversationItem item) {
+ box.remove(item_widgets[item]);
+ items.remove(item);
}
public void set_title_widget(Widget w) {
@@ -81,7 +88,7 @@ public class ConversationItemSkeleton : Grid {
set_title_widget(name_label);
}
- private void update_received() {
+ private void update_received_mark() {
bool all_received = true;
bool all_read = true;
bool all_sent = true;