static void e_mail_config_mapi_extension_constructed (GObject *object) { EExtension *extension; EExtensible *extensible; ESource *source; ESourceBackend *backend_ext; EMailConfigNotebook *notebook; const gchar *backend_name; const gchar *extension_name; extension = E_EXTENSION (object); extensible = e_extension_get_extensible (extension); /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (e_mail_config_mapi_extension_parent_class)->constructed (object); notebook = E_MAIL_CONFIG_NOTEBOOK (extensible); source = e_mail_config_notebook_get_account_source (notebook); extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; backend_ext = e_source_get_extension (source, extension_name); backend_name = e_source_backend_get_backend_name (backend_ext); if (g_strcmp0 (backend_name, "mapi") == 0) { ESource *profile_source; ESourceCamel *camel_ext; ESourceRegistry *registry; EMailSession *mail_session; CamelSettings *settings; const gchar *profile; mail_session = e_mail_config_notebook_get_session (notebook); registry = e_mail_session_get_registry (mail_session); if (e_source_get_parent (source)) profile_source = e_source_registry_ref_source (registry, e_source_get_parent (source)); else profile_source = g_object_ref (source); camel_ext = e_source_get_extension (profile_source, e_source_camel_get_extension_name (backend_name)); settings = e_source_camel_get_settings (camel_ext); profile = camel_mapi_settings_get_profile (CAMEL_MAPI_SETTINGS (settings)); /* add page only when editing already configured accounts */ if (profile && *profile) { EMailConfigPage *page; page = e_mail_config_mapi_page_new (source, registry); e_mail_config_notebook_add_page (notebook, page); } g_object_unref (profile_source); } }
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); } }
static gboolean ews_transport_can_server_side_sent_folder (CamelService *service, EwsFolderId **folder_id, GCancellable *cancellable) { CamelSession *session; ESourceRegistry *registry; ESource *sibling, *source = NULL; gboolean is_server_side = FALSE; g_return_val_if_fail (CAMEL_IS_EWS_TRANSPORT (service), FALSE); g_return_val_if_fail (folder_id != NULL, FALSE); session = camel_service_ref_session (service); if (session && E_IS_MAIL_SESSION (session)) registry = g_object_ref (e_mail_session_get_registry (E_MAIL_SESSION (session))); else registry = e_source_registry_new_sync (cancellable, NULL); if (!registry) { g_clear_object (&session); return FALSE; } sibling = e_source_registry_ref_source (registry, camel_service_get_uid (service)); if (sibling) { GList *sources, *siter; sources = e_source_registry_list_sources (registry, E_SOURCE_EXTENSION_MAIL_SUBMISSION); for (siter = sources; siter; siter = siter->next) { source = siter->data; if (!source || g_strcmp0 (e_source_get_parent (source), e_source_get_parent (sibling)) != 0 || !e_source_has_extension (source, E_SOURCE_EXTENSION_MAIL_SUBMISSION) || !e_source_has_extension (source, E_SOURCE_EXTENSION_MAIL_COMPOSITION)) source = NULL; else break; } if (source && e_source_has_extension (source, E_SOURCE_EXTENSION_MAIL_SUBMISSION) && e_source_has_extension (source, E_SOURCE_EXTENSION_MAIL_COMPOSITION)) { ESourceMailSubmission *subm_extension; CamelStore *store = NULL; gchar *folder_name = NULL; subm_extension = e_source_get_extension (source, E_SOURCE_EXTENSION_MAIL_SUBMISSION); /* Copy messages on the server side only if the replies might not be saved to the original folder, which is handled by the evolution itself. */ if (!e_source_mail_submission_get_replies_to_origin_folder (subm_extension) && e_source_mail_submission_get_sent_folder (subm_extension) && e_mail_folder_uri_parse (session, e_source_mail_submission_get_sent_folder (subm_extension), &store, &folder_name, NULL) & CAMEL_IS_EWS_STORE (store)) { CamelEwsStore *ews_store = CAMEL_EWS_STORE (store); gchar *folder_id_str; folder_id_str = camel_ews_store_summary_get_folder_id_from_name ( ews_store->summary, folder_name); if (folder_id_str) { gchar *change_key; change_key = camel_ews_store_summary_get_change_key (ews_store->summary, folder_name, NULL); *folder_id = e_ews_folder_id_new (folder_id_str, change_key, FALSE); g_free (change_key); is_server_side = *folder_id != NULL; } g_free (folder_id_str); } g_clear_object (&store); g_free (folder_name); } g_list_free_full (sources, g_object_unref); g_object_unref (sibling); } g_object_unref (registry); g_clear_object (&session); return is_server_side; }