[geary/mjog/mail-merge-plugin: 65/72] Plugin.InfoBar: Enable plugins to dynamically update info bar labels




commit 30e5e5bedcff53deea1ae412b184e7fb5c86674c
Author: Michael Gratton <mike vee net>
Date:   Fri Aug 14 15:09:11 2020 +1000

    Plugin.InfoBar: Enable plugins to dynamically update info bar labels
    
    Make status and description properties publicly settable, keep tabs
    on changes in `Component.InfoBar` and update GTK labels as needed.

 src/client/components/components-info-bar.vala | 7 +++++++
 src/client/plugin/plugin-info-bar.vala         | 4 ++--
 2 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/src/client/components/components-info-bar.vala b/src/client/components/components-info-bar.vala
index e3bc6516b..a6e1d4b6b 100644
--- a/src/client/components/components-info-bar.vala
+++ b/src/client/components/components-info-bar.vala
@@ -82,6 +82,13 @@ public class Components.InfoBar : Gtk.InfoBar {
         this.plugin = plugin;
         this.show_close_button = plugin.show_close_button;
 
+        plugin.notify["status"].connect(
+            () => { this.status.label = plugin.status; }
+        );
+        plugin.notify["description"].connect(
+            () => { this.description.label = plugin.description; }
+        );
+
         var secondaries = plugin.secondary_buttons.bidir_list_iterator();
         bool has_prev = secondaries.last();
         while (has_prev) {
diff --git a/src/client/plugin/plugin-info-bar.vala b/src/client/plugin/plugin-info-bar.vala
index 00696ace7..a0ccfcf09 100644
--- a/src/client/plugin/plugin-info-bar.vala
+++ b/src/client/plugin/plugin-info-bar.vala
@@ -23,7 +23,7 @@ public class Plugin.InfoBar : Geary.BaseObject {
      *
      * This should ideally be less than 20 characters long.
      */
-    public string status { get; private set; }
+    public string status { get; set; }
 
     /**
      * An optional, longer human-readable explanation of the status.
@@ -31,7 +31,7 @@ public class Plugin.InfoBar : Geary.BaseObject {
      * This provides additional information and context for {@link
      * status}.
      */
-    public string? description { get; private set; }
+    public string? description { get; set; }
 
     /** Determines if a close button is displayed by the info bar. */
     public bool show_close_button { get; set; default = false; }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]