diff --git a/src/gcal-manager.c b/src/gcal-manager.c index e44e5b50..63920caf 100644 --- a/src/gcal-manager.c +++ b/src/gcal-manager.c @@ -1088,6 +1088,34 @@ gcal_manager_set_query (GcalManager *manager, query != NULL ? query : "#t"); } +/** + * gcal_manager_query_client_data: + * + * Queries for a specific data field of + * the {@link ECalClient}. + * + * Returns: (Transfer none) a string representing the retrieved value, or NULL. + */ +gchar* +gcal_manager_query_client_data (GcalManager *manager, + ESource *source, + const gchar *field) +{ + GcalManagerPrivate *priv; + GcalManagerUnit *unit; + gchar *out; + + priv = gcal_manager_get_instance_private (manager); + unit = g_hash_table_lookup (priv->clients, source); + + if (unit == NULL) + return NULL; + + g_object_get (unit->client, field, &out, NULL); + + return out; +} + /** * gcal_manager_add_source: * @manager: a #GcalManager diff --git a/src/gcal-manager.h b/src/gcal-manager.h index 6b1bf776..e12d01b9 100644 --- a/src/gcal-manager.h +++ b/src/gcal-manager.h @@ -105,6 +105,10 @@ void gcal_manager_set_search_subscriber (GcalManager *manager void gcal_manager_set_query (GcalManager *manager, const gchar *query); +gchar* gcal_manager_query_client_data (GcalManager *manager, + ESource *source, + const gchar *field); + gchar* gcal_manager_add_source (GcalManager *manager, const gchar *name, const gchar *backend,