From 810ef7956b8a815e55cd687e9bf50be4d0e8c2e3 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Fri, 3 May 2019 19:35:21 -0300 Subject: [PATCH] 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 | 17 ++++++--- src/gcal-window.c | 17 +++++---- 6 files changed, 71 insertions(+), 103 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); + GcalCalendar *calendar = GCAL_CALENDAR (aux->data); - if (g_strcmp0 (e_source_get_uid (source), uid) == 0) - { - GdkRGBA color; - cairo_surface_t *surface; + if (g_strcmp0 (gcal_calendar_get_id (calendar), uid) == 0) + { + cairo_surface_t *surface; + const GdkRGBA *color; - /* retrieve color */ - get_color_name_from_source (source, &color); + /* 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); - surface = get_circle_surface_from_color (&color, 16); - gtk_image_set_from_surface (GTK_IMAGE (self->source_image), surface); + self->selected_source = gcal_calendar_get_source (calendar); - self->selected_source = source; + gtk_label_set_label (GTK_LABEL (self->subtitle_label), gcal_calendar_get_name (calendar)); - gtk_label_set_label (GTK_LABEL (self->subtitle_label), e_source_get_display_name (source)); - - 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); + calendars = gcal_manager_get_calendars (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); + 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 (sources); + 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; + g_autoptr (GList) calendars = NULL; + GList *l; - sources = gcal_manager_get_sources_connected (manager); + calendars = gcal_manager_get_calendars (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); + 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);