[gnome-calendar] calendar-popover: Show success after synchronizing



commit ea043ab48baa11988715e901022db71be14f3cbe
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Fri May 10 13:45:00 2019 -0300

    calendar-popover: Show success after synchronizing
    
    https://gitlab.gnome.org/GNOME/gnome-calendar/issues/395

 data/ui/calendar-popover.ui     |  9 +++++++++
 src/gui/gcal-calendar-popover.c | 38 ++++++++++++++++++++++++++------------
 2 files changed, 35 insertions(+), 12 deletions(-)
---
diff --git a/data/ui/calendar-popover.ui b/data/ui/calendar-popover.ui
index f450cf9e..a451af16 100644
--- a/data/ui/calendar-popover.ui
+++ b/data/ui/calendar-popover.ui
@@ -78,5 +78,14 @@
         <property name="name">spinner</property>
       </packing>
     </child>
+    <child>
+      <object class="GtkImage" id="success_image">
+        <property name="visible">True</property>
+        <property name="icon_name">emblem-ok-symbolic</property>
+      </object>
+      <packing>
+        <property name="name">success</property>
+      </packing>
+    </child>
   </object>
 </interface>
diff --git a/src/gui/gcal-calendar-popover.c b/src/gui/gcal-calendar-popover.c
index 1216063b..33051126 100644
--- a/src/gui/gcal-calendar-popover.c
+++ b/src/gui/gcal-calendar-popover.c
@@ -143,7 +143,7 @@ remove_calendar (GcalCalendarPopover *self,
 }
 
 static void
-schedule_icon_change (GcalCalendarPopover *self)
+schedule_switch_to_spinner (GcalCalendarPopover *self)
 {
   if (self->icon_changed_source_id > 0)
     return;
@@ -153,6 +153,18 @@ schedule_icon_change (GcalCalendarPopover *self)
   self->icon_changed_source_id = g_timeout_add (500, icon_change_timeout_cb, self);
 }
 
+static void
+schedule_switch_to_success (GcalCalendarPopover *self)
+{
+  g_clear_handle_id (&self->icon_changed_source_id, g_source_remove);
+
+  g_debug ("Switching to success icon");
+
+  gtk_stack_set_visible_child_name (self->icon_stack, "success");
+
+  self->icon_changed_source_id = g_timeout_add (2000, icon_change_timeout_cb, self);
+}
+
 
 /*
  * Callbacks
@@ -161,11 +173,18 @@ schedule_icon_change (GcalCalendarPopover *self)
 static gboolean
 icon_change_timeout_cb (gpointer data)
 {
-  GcalCalendarPopover *self = GCAL_CALENDAR_POPOVER (data);
+  GcalCalendarPopover *self;
+  GcalManager *manager;
+
+  self = GCAL_CALENDAR_POPOVER (data);
+  manager = gcal_context_get_manager (self->context);
 
   g_debug ("Updating calendar icon to spinner");
 
-  gtk_stack_set_visible_child_name (self->icon_stack, "spinner");
+  if (gcal_manager_get_synchronizing (manager))
+    gtk_stack_set_visible_child_name (self->icon_stack, "spinner");
+  else
+    gtk_stack_set_visible_child_name (self->icon_stack, "icon");
 
   self->icon_changed_source_id = 0;
   return G_SOURCE_REMOVE;
@@ -214,17 +233,12 @@ on_manager_synchronizing_changed_cb (GcalManager         *manager,
                                      GParamSpec          *pspec,
                                      GcalCalendarPopover *self)
 {
-  if (!gcal_manager_get_synchronizing (manager))
-    {
-      g_debug ("Updating calendar icon to calendar");
+  g_message ("Notify");
 
-      g_clear_handle_id (&self->icon_changed_source_id, g_source_remove);
-      gtk_stack_set_visible_child_name (self->icon_stack, "icon");
-    }
+  if (gcal_manager_get_synchronizing (manager))
+    schedule_switch_to_spinner (self);
   else
-    {
-      schedule_icon_change (self);
-    }
+    schedule_switch_to_success (self);
 }
 
 static void


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