[gnome-calendar] manager: Replace gcal_manager_get_sources()



commit 810ef7956b8a815e55cd687e9bf50be4d0e8c2e3
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Fri May 3 19:35:21 2019 -0300

    manager: Replace gcal_manager_get_sources()
    
    With a GcalCalendar-based function.

 src/gcal-application.c       | 23 ++++++++-------
 src/gcal-edit-dialog.c       | 68 +++++++++++++++++++++-----------------------
 src/gcal-manager.c           | 45 ++---------------------------
 src/gcal-manager.h           |  4 +--
 src/gcal-quick-add-popover.c | 21 +++++++++-----
 src/gcal-window.c            | 21 ++++++++------
 6 files changed, 75 insertions(+), 107 deletions(-)
---
diff --git a/src/gcal-application.c b/src/gcal-application.c
index d4a9c37f..3d6f908b 100644
--- a/src/gcal-application.c
+++ b/src/gcal-application.c
@@ -101,31 +101,34 @@ process_sources (GcalApplication *self)
   g_autofree gchar *new_css_data = NULL;
   g_auto (GStrv) new_css_snippets = NULL;
   GcalManager *manager;
-  GList *sources, *l;
-  ESource *source;
+  GList *calendars, *l;
   GQuark color_id;
-  GdkRGBA color;
   gint arr_length;
   gint i = 0;
 
   manager = gcal_context_get_manager (self->context);
-  sources = gcal_manager_get_sources_connected (manager);
-  arr_length = g_list_length (sources);
+  calendars = gcal_manager_get_calendars (manager);
+  arr_length = g_list_length (calendars);
   new_css_snippets = g_new0 (gchar*, arr_length + 2);
-  for (l = sources; l != NULL; l = g_list_next (l), i++)
+  for (l = calendars; l; l = l->next, i++)
     {
       g_autofree gchar* color_str = NULL;
+      const GdkRGBA *color;
+      GcalCalendar *calendar;
 
-      source = l->data;
+      calendar = l->data;
 
-      get_color_name_from_source (source, &color);
-      color_str = gdk_rgba_to_string (&color);
+      if (!gcal_calendar_get_visible (calendar))
+        continue;
+
+      color = gcal_calendar_get_color (calendar);
+      color_str = gdk_rgba_to_string (color);
       color_id = g_quark_from_string (color_str);
 
       new_css_snippets[i] = g_strdup_printf (CSS_TEMPLATE, color_id, color_str);
     }
 
-  g_list_free (sources);
+  g_list_free (calendars);
 
   new_css_data = g_strjoinv ("\n", new_css_snippets);
 
diff --git a/src/gcal-edit-dialog.c b/src/gcal-edit-dialog.c
index 57081a52..0d014976 100644
--- a/src/gcal-edit-dialog.c
+++ b/src/gcal-edit-dialog.c
@@ -161,58 +161,59 @@ static gint
 sources_menu_sort_func (gconstpointer a,
                         gconstpointer b)
 {
-  ESource *source1, *source2;
+  GcalCalendar *calendar1, *calendar2;
 
-  source1 = E_SOURCE (a);
-  source2 = E_SOURCE (b);
+  calendar1 = GCAL_CALENDAR ((gpointer) a);
+  calendar2 = GCAL_CALENDAR ((gpointer) b);
 
-  return g_ascii_strcasecmp (e_source_get_display_name (source1), e_source_get_display_name (source2));
+  return g_ascii_strcasecmp (gcal_calendar_get_name (calendar1),
+                             gcal_calendar_get_name (calendar2));
 }
 
 static void
 fill_sources_menu (GcalEditDialog *self)
 {
+  g_autoptr (GList) list = NULL;
   GcalManager *manager;
-  GList *list;
   GList *aux;
 
   if (self->context == NULL)
     return;
 
   manager = gcal_context_get_manager (self->context);
-  list = gcal_manager_get_sources (manager);
+  list = gcal_manager_get_calendars (manager);
   self->sources_menu = g_menu_new ();
 
   list = g_list_sort (list, sources_menu_sort_func);
 
   for (aux = list; aux != NULL; aux = aux->next)
     {
-      ESource *source;
+      GcalCalendar *calendar;
+      const GdkRGBA *color;
       GMenuItem *item;
-      GdkRGBA color;
       cairo_surface_t *surface;
       GdkPixbuf *pix;
 
-      source = E_SOURCE (aux->data);
+      calendar = GCAL_CALENDAR (aux->data);
 
       /* retrieve color */
-      get_color_name_from_source (source, &color);
-      surface = get_circle_surface_from_color (&color, 16);
+      color = gcal_calendar_get_color (calendar);
+      surface = get_circle_surface_from_color (color, 16);
       pix = gdk_pixbuf_get_from_surface (surface, 0, 0, 16, 16);
 
       /* menu item */
-      item = g_menu_item_new (e_source_get_display_name (source), "select-calendar");
+      item = g_menu_item_new (gcal_calendar_get_name (calendar), "select-calendar");
       g_menu_item_set_icon (item, G_ICON (pix));
 
       /* set insensitive for read-only calendars */
-      if (!gcal_manager_is_client_writable (manager, source))
+      if (gcal_calendar_is_read_only (calendar))
         {
           g_menu_item_set_action_and_target_value (item, "select-calendar", NULL);
         }
       else
         {
-          g_menu_item_set_action_and_target_value (item, "select-calendar",
-                                                   g_variant_new_string (e_source_get_uid (source)));
+          const gchar *id = gcal_calendar_get_id (calendar);
+          g_menu_item_set_action_and_target_value (item, "select-calendar", g_variant_new_string (id));
         }
 
       g_menu_append_item (self->sources_menu, item);
@@ -226,8 +227,6 @@ fill_sources_menu (GcalEditDialog *self)
 
   /* HACK: show the popover menu icons */
   fix_popover_menu_icons (GTK_POPOVER (self->sources_popover));
-
-  g_list_free (list);
 }
 
 static void
@@ -629,9 +628,9 @@ on_calendar_selected_action_cb (GSimpleAction *action,
                                 GVariant      *value,
                                 gpointer       user_data)
 {
+  g_autoptr (GList) list = NULL;
   GcalEditDialog *self;
   GcalManager *manager;
-  GList *list;
   GList *aux;
   gchar *uid;
 
@@ -639,7 +638,7 @@ on_calendar_selected_action_cb (GSimpleAction *action,
 
   self = GCAL_EDIT_DIALOG (user_data);
   manager = gcal_context_get_manager (self->context);
-  list = gcal_manager_get_sources (manager);
+  list = gcal_manager_get_calendars (manager);
 
   /* retrieve selected calendar uid */
   g_variant_get (value, "s", &uid);
@@ -647,31 +646,28 @@ on_calendar_selected_action_cb (GSimpleAction *action,
   /* search for any source with the given UID */
   for (aux = list; aux != NULL; aux = aux->next)
     {
-      ESource *source;
-      source = E_SOURCE (aux->data);
-
-      if (g_strcmp0 (e_source_get_uid (source), uid) == 0)
-      {
-        GdkRGBA color;
-        cairo_surface_t *surface;
+      GcalCalendar *calendar = GCAL_CALENDAR (aux->data);
 
-        /* retrieve color */
-        get_color_name_from_source (source, &color);
+      if (g_strcmp0 (gcal_calendar_get_id (calendar), uid) == 0)
+        {
+          cairo_surface_t *surface;
+          const GdkRGBA *color;
 
-        surface = get_circle_surface_from_color (&color, 16);
-        gtk_image_set_from_surface (GTK_IMAGE (self->source_image), surface);
+          /* retrieve color */
+          color = gcal_calendar_get_color (calendar);
+          surface = get_circle_surface_from_color (color, 16);
+          gtk_image_set_from_surface (GTK_IMAGE (self->source_image), surface);
 
-        self->selected_source = source;
+          self->selected_source = gcal_calendar_get_source (calendar);
 
-        gtk_label_set_label (GTK_LABEL (self->subtitle_label), e_source_get_display_name (source));
+          gtk_label_set_label (GTK_LABEL (self->subtitle_label), gcal_calendar_get_name (calendar));
 
-        g_clear_pointer (&surface, cairo_surface_destroy);
-        break;
-      }
+          g_clear_pointer (&surface, cairo_surface_destroy);
+          break;
+        }
     }
 
   g_free (uid);
-  g_list_free (list);
 
   GCAL_EXIT;
 }
diff --git a/src/gcal-manager.c b/src/gcal-manager.c
index 36266aa8..751b3dc1 100644
--- a/src/gcal-manager.c
+++ b/src/gcal-manager.c
@@ -773,53 +773,12 @@ gcal_manager_get_source (GcalManager *self,
   return e_source_registry_ref_source (self->source_registry, uid);
 }
 
-/**
- * gcal_manager_get_sources:
- * @self: a #GcalManager
- *
- * Retrieve a list of the enabled sources used in the application.
- *
- * Returns: (nullable)(transfer container)(content-type ESource): a #GList
- */
-GList*
-gcal_manager_get_sources (GcalManager *self)
-{
-  GHashTableIter iter;
-  gpointer key, value;
-  GList *aux = NULL;
-
-  GCAL_ENTRY;
-
-  g_return_val_if_fail (GCAL_IS_MANAGER (self), NULL);
-
-  g_hash_table_iter_init (&iter, self->clients);
-
-  while (g_hash_table_iter_next (&iter, &key, &value))
-    {
-      if (!is_source_enabled (key))
-        continue;
-
-      aux = g_list_append (aux, key);
-    }
-
-  GCAL_RETURN (aux);
-}
-
-/**
- * gcal_manager_get_sources_connected:
- * @self: a #GcalManager
- *
- * Returns a #GList with every source connected on the app,
- * whether they are enabled or not.
- *
- * Returns: (nullable)(transfer container)(content-type ESource): a #GList
- */
 GList*
-gcal_manager_get_sources_connected (GcalManager *self)
+gcal_manager_get_calendars (GcalManager *self)
 {
   g_return_val_if_fail (GCAL_IS_MANAGER (self), NULL);
 
-  return g_hash_table_get_keys (self->clients);
+  return g_hash_table_get_values (self->clients);
 }
 
 /**
diff --git a/src/gcal-manager.h b/src/gcal-manager.h
index aa814660..2e1b68d8 100644
--- a/src/gcal-manager.h
+++ b/src/gcal-manager.h
@@ -35,9 +35,7 @@ GcalManager*         gcal_manager_new                            (void);
 ESource*             gcal_manager_get_source                     (GcalManager        *self,
                                                                   const gchar        *uid);
 
-GList*               gcal_manager_get_sources                    (GcalManager        *self);
-
-GList*               gcal_manager_get_sources_connected          (GcalManager        *self);
+GList*               gcal_manager_get_calendars                  (GcalManager        *self);
 
 ESource*             gcal_manager_get_default_source             (GcalManager        *self);
 
diff --git a/src/gcal-quick-add-popover.c b/src/gcal-quick-add-popover.c
index b8c58160..c7569073 100644
--- a/src/gcal-quick-add-popover.c
+++ b/src/gcal-quick-add-popover.c
@@ -788,17 +788,24 @@ gcal_quick_add_popover_set_property (GObject      *object,
     case PROP_CONTEXT:
       if (g_set_object (&self->context, g_value_get_object (value)))
         {
+          g_autoptr (GList) calendars = NULL;
           GcalManager *manager;
-          GList *sources, *l;
+          GList *l;
 
           /* Add currently loaded sources */
           manager = gcal_context_get_manager (self->context);
-          sources = gcal_manager_get_sources_connected (manager);
-
-          for (l = sources; l != NULL; l = g_list_next (l))
-            on_source_added (manager, l->data, gcal_manager_is_client_writable (manager, l->data), self);
-
-          g_list_free (sources);
+          calendars = gcal_manager_get_calendars (manager);
+
+          for (l = calendars; l; l = l->next)
+            {
+              GcalCalendar *calendar = l->data;
+              on_source_added (manager,
+                               gcal_calendar_get_source (calendar),
+                               gcal_calendar_get_visible (calendar),
+                               self);
+            }
+
+          g_list_free (calendars);
 
           /* Connect to the manager signals and keep the list updates */
           g_signal_connect (manager, "source-added", G_CALLBACK (on_source_added), self);
diff --git a/src/gcal-window.c b/src/gcal-window.c
index 24e6f24b..e2138221 100644
--- a/src/gcal-window.c
+++ b/src/gcal-window.c
@@ -1192,14 +1192,19 @@ gcal_window_set_property (GObject      *object,
 
           if (!gcal_manager_get_loading (manager))
             {
-              GList *sources, *l;
-
-              sources = gcal_manager_get_sources_connected (manager);
-
-              for (l = sources; l != NULL; l = g_list_next (l))
-                add_source (manager, l->data, is_source_enabled (l->data), self);
-
-              g_list_free (sources);
+              g_autoptr (GList) calendars = NULL;
+              GList *l;
+
+              calendars = gcal_manager_get_calendars (manager);
+
+              for (l = calendars; l; l = l->next)
+                {
+                  GcalCalendar *calendar = l->data;
+                  add_source (manager,
+                              gcal_calendar_get_source (calendar),
+                              gcal_calendar_get_visible (calendar),
+                              self);
+                }
             }
 
           g_signal_connect (manager, "source-added", G_CALLBACK (add_source), object);


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