diff --git a/src/gui/importer/gcal-import-dialog.c b/src/gui/importer/gcal-import-dialog.c index 725e3c49a847fa2b157917f37a938b73417b4082..dcd826756dfcc625ff6ba1c66a8981c6c0fae262 100644 --- a/src/gui/importer/gcal-import-dialog.c +++ b/src/gui/importer/gcal-import-dialog.c @@ -264,16 +264,17 @@ on_combo_row_signal_factory_setup_cb (GtkSignalListItemFactory *factory, GcalImportDialog *self) { GtkWidget *label; - GtkWidget *icon; + GtkWidget *color_icon; + GtkWidget *visibility_status_icon; GtkWidget *grid; grid = gtk_grid_new (); gtk_grid_set_column_spacing (GTK_GRID (grid), 6); - icon = gtk_image_new (); - gtk_widget_add_css_class (icon, "calendar-color-image"); - g_object_set_data (G_OBJECT (grid), "icon", icon); - gtk_grid_attach (GTK_GRID (grid), icon, 0, 0, 1, 2); + color_icon = gtk_image_new (); + gtk_widget_add_css_class (color_icon, "calendar-color-image"); + g_object_set_data (G_OBJECT (grid), "color_icon", color_icon); + gtk_grid_attach (GTK_GRID (grid), color_icon, 0, 0, 1, 2); label = gtk_label_new (NULL); gtk_label_set_xalign (GTK_LABEL (label), 0.0); @@ -287,6 +288,13 @@ on_combo_row_signal_factory_setup_cb (GtkSignalListItemFactory *factory, g_object_set_data (G_OBJECT (grid), "subtitle", label); gtk_grid_attach (GTK_GRID (grid), label, 1, 1, 1, 1); + visibility_status_icon = gtk_image_new (); + + g_object_set_data (G_OBJECT (grid), "visibility_status_icon", visibility_status_icon); + gtk_widget_set_hexpand (visibility_status_icon, TRUE); + gtk_widget_set_halign (visibility_status_icon, GTK_ALIGN_END); + gtk_grid_attach (GTK_GRID (grid), visibility_status_icon, 2, 0, 1, 2); + gtk_list_item_set_child (item, grid); } @@ -299,25 +307,42 @@ on_combo_row_signal_factory_bind_cb (GtkSignalListItemFactory *factory, g_autofree gchar *parent_name = NULL; GcalCalendar *calendar; GtkWidget *label; - GtkWidget *icon; + GtkWidget *color_icon_widget; GtkWidget *grid; calendar = gtk_list_item_get_item (item); grid = gtk_list_item_get_child (item); + color_icon_widget = g_object_get_data (G_OBJECT (grid), "color_icon"); color_paintable = get_circle_paintable_from_color (gcal_calendar_get_color (calendar), 16); - get_source_parent_name_color (gcal_context_get_manager (self->context), - gcal_calendar_get_source (calendar), - &parent_name, - NULL); + gtk_image_set_from_paintable (GTK_IMAGE (color_icon_widget), color_paintable); + + /* Show indicator icons for calendars that are not shown in the views */ + if (!gcal_calendar_get_visible (calendar)) + { + g_autofree gchar *accessible_description = NULL; + g_autoptr (GIcon) visibility_icon = NULL; + GtkWidget *visibility_status_icon_widget; - icon = g_object_get_data (G_OBJECT (grid), "icon"); - gtk_image_set_from_paintable (GTK_IMAGE (icon), color_paintable); + visibility_icon = g_themed_icon_new ("eye-not-looking-symbolic"); + visibility_status_icon_widget = g_object_get_data (G_OBJECT (grid), "visibility_status_icon"); + gtk_image_set_from_gicon (GTK_IMAGE (visibility_status_icon_widget), visibility_icon); + + accessible_description = g_strdup (_("This calendar is hidden")); + gtk_accessible_update_property (GTK_ACCESSIBLE (visibility_status_icon_widget), + GTK_ACCESSIBLE_PROPERTY_DESCRIPTION, accessible_description, -1); + } label = g_object_get_data (G_OBJECT (grid), "title"); gtk_label_set_label (GTK_LABEL (label), gcal_calendar_get_name (calendar)); + /* Get a colored version of the calendar source's name, to use as a subtitle */ + get_source_parent_name_color (gcal_context_get_manager (self->context), + gcal_calendar_get_source (calendar), + &parent_name, + NULL); + label = g_object_get_data (G_OBJECT (grid), "subtitle"); gtk_label_set_label (GTK_LABEL (label), parent_name);