void get_source_parent_name_color (GcalManager *manager, ESource *source, gchar **name, gchar **color) { ESource *parent_source; g_assert (source && E_IS_SOURCE (source)); parent_source = gcal_manager_get_source (manager, e_source_get_parent (source)); if (name != NULL) *name = e_source_dup_display_name (parent_source); if (color != NULL) { GdkRGBA c; get_color_name_from_source (parent_source, &c); *color = gdk_rgba_to_string (&c); } }
/** * e_cal_backend_mail_account_is_valid: * @registry: an #ESourceRegistry * @user: user name for the account to check * @name: placeholder for the account name * * Checks that a mail account is valid, and returns its name. * * Returns: TRUE if the account is valid, FALSE if not. */ gboolean e_cal_backend_mail_account_is_valid (ESourceRegistry *registry, gchar *user, gchar **name) { GList *list, *iter; const gchar *extension_name; gboolean valid = FALSE; g_return_val_if_fail (E_IS_SOURCE_REGISTRY (registry), FALSE); g_return_val_if_fail (user != NULL, FALSE); extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; list = e_source_registry_list_enabled (registry, extension_name); for (iter = list; iter != NULL; iter = g_list_next (iter)) { ESource *source = E_SOURCE (iter->data); ESourceMailAccount *mail_account; ESourceMailIdentity *mail_identity; const gchar *uid; gboolean match = FALSE; gchar *address; extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; mail_account = e_source_get_extension (source, extension_name); uid = e_source_mail_account_get_identity_uid (mail_account); if (uid == NULL) continue; source = e_source_registry_ref_source (registry, uid); if (source == NULL) continue; extension_name = E_SOURCE_EXTENSION_MAIL_IDENTITY; if (!e_source_has_extension (source, extension_name)) { g_object_unref (source); continue; } mail_identity = e_source_get_extension (source, extension_name); address = e_source_mail_identity_dup_address (mail_identity); if (address != NULL) { match = (g_ascii_strcasecmp (address, user) == 0); g_free (address); } if (match && name != NULL) *name = e_source_dup_display_name (source); g_object_unref (source); if (match) { valid = TRUE; break; } } g_list_free_full (list, (GDestroyNotify) g_object_unref); return valid; }