diff --git a/src/utils/gcal-utils.c b/src/utils/gcal-utils.c index d2721b51..c78549f8 100644 --- a/src/utils/gcal-utils.c +++ b/src/utils/gcal-utils.c @@ -1356,3 +1356,29 @@ gcal_create_soup_session (void) return g_steal_pointer (&session); } + +/** + * gcal_create_writable_calendars_model: + * @manager: a #GcalManager + * + * Retrieves a model with all available read-write #GcalCalendar. + * This is useful for binding to combo rows. + * + * Returns: (transfer full): a #GListModel with all available read-write #GcalCalendar + */ +GListModel* +gcal_create_writable_calendars_model (GcalManager *manager) +{ + GtkBoolFilter *bool_filter; + GtkExpression *expression; + + g_return_val_if_fail (GCAL_IS_MANAGER (manager), NULL); + + expression = gtk_property_expression_new (GCAL_TYPE_CALENDAR, NULL, "read-only"); + + bool_filter = gtk_bool_filter_new (expression); + gtk_bool_filter_set_invert (bool_filter, TRUE); + + return G_LIST_MODEL (gtk_filter_list_model_new (G_LIST_MODEL (gcal_manager_get_calendars_model (manager)), + GTK_FILTER (bool_filter))); +} diff --git a/src/utils/gcal-utils.h b/src/utils/gcal-utils.h index 721847a2..c5dd8d24 100644 --- a/src/utils/gcal-utils.h +++ b/src/utils/gcal-utils.h @@ -141,4 +141,6 @@ const gchar* gcal_get_service_name_from_url (const gchar SoupSession * gcal_create_soup_session (void); +GListModel * gcal_create_writable_calendars_model (GcalManager *manager); + #endif /* __GCAL_UTILS_H__ */