aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_summary/conversation_view.vala
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/ui/conversation_summary/conversation_view.vala')
-rw-r--r--main/src/ui/conversation_summary/conversation_view.vala25
1 files changed, 24 insertions, 1 deletions
diff --git a/main/src/ui/conversation_summary/conversation_view.vala b/main/src/ui/conversation_summary/conversation_view.vala
index af6e96c1..83da81aa 100644
--- a/main/src/ui/conversation_summary/conversation_view.vala
+++ b/main/src/ui/conversation_summary/conversation_view.vala
@@ -7,7 +7,7 @@ using Dino.Entities;
namespace Dino.Ui.ConversationSummary {
[GtkTemplate (ui = "/im/dino/Dino/conversation_summary/view.ui")]
-public class ConversationView : Box, Plugins.ConversationItemCollection {
+public class ConversationView : Box, Plugins.ConversationItemCollection, Plugins.NotificationCollection {
public Conversation? conversation { get; private set; }
@@ -46,6 +46,8 @@ public class ConversationView : Box, Plugins.ConversationItemCollection {
insert_item.connect(filter_insert_item);
remove_item.connect(do_remove_item);
+ add_meta_notification.connect(on_add_meta_notification);
+ remove_meta_notification.connect(on_remove_meta_notification);
Application app = GLib.Application.get_default() as Application;
app.plugin_registry.register_conversation_addition_populator(new ChatStatePopulator(stream_interactor));
@@ -134,6 +136,9 @@ public class ConversationView : Box, Plugins.ConversationItemCollection {
foreach (Plugins.ConversationItemPopulator populator in app.plugin_registry.conversation_addition_populators) {
populator.close(conversation);
}
+ foreach (Plugins.NotificationPopulator populator in app.plugin_registry.notification_populators) {
+ populator.close(conversation);
+ }
}
// Clear data structures
@@ -159,6 +164,10 @@ public class ConversationView : Box, Plugins.ConversationItemCollection {
foreach (ContentMetaItem item in items) {
do_insert_item(item);
}
+ Application app = GLib.Application.get_default() as Application;
+ foreach (Plugins.NotificationPopulator populator in app.plugin_registry.notification_populators) {
+ populator.init(conversation, this, Plugins.WidgetType.GTK);
+ }
Idle.add(() => { on_value_notify(); return false; });
}
@@ -203,6 +212,20 @@ public class ConversationView : Box, Plugins.ConversationItemCollection {
}
}
+ public void on_add_meta_notification(Plugins.MetaConversationNotification notification) {
+ Widget? widget = (Widget) notification.get_widget(Plugins.WidgetType.GTK);
+ if (widget != null) {
+ add_notification(widget);
+ }
+ }
+
+ public void on_remove_meta_notification(Plugins.MetaConversationNotification notification){
+ Widget? widget = (Widget) notification.get_widget(Plugins.WidgetType.GTK);
+ if (widget != null) {
+ remove_notification(widget);
+ }
+ }
+
public void add_notification(Widget widget) {
notifications.add(widget);
Timeout.add(20, () => {