static void mail_config_ews_notebook_constructed (GObject *object) { EMailConfigEwsNotebook *extension; EMailConfigNotebook *notebook; EMailSession *session; ESource *account_source; ESource *identity_source; ESource *collection_source; ESourceBackend *backend_ext; ESourceRegistry *registry; const gchar *backend_name; const gchar *extension_name; extension = E_MAIL_CONFIG_EWS_NOTEBOOK (object); notebook = mail_config_ews_notebook_get_extensible (extension); /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (e_mail_config_ews_notebook_parent_class)->constructed (object); session = e_mail_config_notebook_get_session (notebook); registry = e_mail_session_get_registry (session); account_source = e_mail_config_notebook_get_account_source (notebook); identity_source = e_mail_config_notebook_get_identity_source (notebook); collection_source = e_mail_config_notebook_get_collection_source (notebook); extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; backend_ext = e_source_get_extension (account_source, extension_name); backend_name = e_source_backend_get_backend_name (backend_ext); if (g_strcmp0 (backend_name, "ews") == 0) { EMailConfigPage *page; page = e_mail_config_ews_ooo_page_new ( registry, account_source, identity_source, collection_source); e_mail_config_notebook_add_page (notebook, page); page = e_mail_config_ews_delegates_page_new ( registry, account_source, identity_source, collection_source); e_mail_config_notebook_add_page (notebook, page); page = e_mail_config_ews_folder_sizes_page_new ( account_source, registry); e_mail_config_notebook_add_page (notebook, page); } }
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); } }
static void mail_config_remote_backend_insert_widgets (EMailConfigServiceBackend *backend, GtkBox *parent) { EMailConfigRemoteBackend *remote_backend; CamelProvider *provider; CamelSettings *settings; ESource *source; ESourceBackend *extension; EMailConfigServicePage *page; EMailConfigServicePageClass *class; GtkLabel *label; GtkWidget *widget; GtkWidget *container; const gchar *backend_name; const gchar *extension_name; const gchar *text; gchar *markup; remote_backend = E_MAIL_CONFIG_REMOTE_BACKEND (backend); page = e_mail_config_service_backend_get_page (backend); source = e_mail_config_service_backend_get_source (backend); settings = e_mail_config_service_backend_get_settings (backend); class = E_MAIL_CONFIG_SERVICE_PAGE_GET_CLASS (page); extension_name = class->extension_name; extension = e_source_get_extension (source, extension_name); backend_name = e_source_backend_get_backend_name (extension); text = _("Configuration"); markup = g_markup_printf_escaped ("<b>%s</b>", text); widget = gtk_label_new (markup); gtk_label_set_use_markup (GTK_LABEL (widget), TRUE); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); gtk_widget_show (widget); g_free (markup); widget = gtk_grid_new (); gtk_widget_set_margin_left (widget, 12); gtk_grid_set_row_spacing (GTK_GRID (widget), 6); gtk_grid_set_column_spacing (GTK_GRID (widget), 6); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); gtk_widget_show (widget); container = widget; widget = gtk_label_new_with_mnemonic (_("_Server:")); gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5); gtk_grid_attach (GTK_GRID (container), widget, 0, 0, 1, 1); gtk_widget_show (widget); label = GTK_LABEL (widget); widget = gtk_entry_new (); gtk_widget_set_hexpand (widget, TRUE); gtk_label_set_mnemonic_widget (label, widget); gtk_grid_attach (GTK_GRID (container), widget, 1, 0, 1, 1); remote_backend->host_entry = widget; /* do not reference */ gtk_widget_show (widget); widget = gtk_label_new_with_mnemonic (_("_Port:")); gtk_grid_attach (GTK_GRID (container), widget, 2, 0, 1, 1); gtk_widget_show (widget); label = GTK_LABEL (widget); widget = e_port_entry_new (); gtk_label_set_mnemonic_widget (label, widget); gtk_grid_attach (GTK_GRID (container), widget, 3, 0, 1, 1); remote_backend->port_entry = widget; /* do not reference */ gtk_widget_show (widget); widget = gtk_label_new_with_mnemonic (_("User_name:")); gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5); gtk_grid_attach (GTK_GRID (container), widget, 0, 1, 1, 1); gtk_widget_show (widget); label = GTK_LABEL (widget); widget = gtk_entry_new (); gtk_widget_set_hexpand (widget, TRUE); gtk_label_set_mnemonic_widget (label, widget); gtk_grid_attach (GTK_GRID (container), widget, 1, 1, 3, 1); remote_backend->user_entry = widget; /* do not reference */ gtk_widget_show (widget); text = _("Security"); markup = g_markup_printf_escaped ("<b>%s</b>", text); widget = gtk_label_new (markup); gtk_widget_set_margin_top (widget, 6); gtk_label_set_use_markup (GTK_LABEL (widget), TRUE); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); gtk_widget_show (widget); g_free (markup); widget = gtk_grid_new (); gtk_widget_set_margin_left (widget, 12); gtk_grid_set_row_spacing (GTK_GRID (widget), 6); gtk_grid_set_column_spacing (GTK_GRID (widget), 6); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); gtk_widget_show (widget); container = widget; widget = gtk_label_new_with_mnemonic (_("Encryption _method:")); gtk_grid_attach (GTK_GRID (container), widget, 0, 0, 1, 1); gtk_widget_show (widget); label = GTK_LABEL (widget); /* The IDs correspond to the CamelNetworkSecurityMethod enum. */ widget = gtk_combo_box_text_new (); gtk_combo_box_text_append ( GTK_COMBO_BOX_TEXT (widget), "none", _("No encryption")); gtk_combo_box_text_append ( GTK_COMBO_BOX_TEXT (widget), "starttls-on-standard-port", _("STARTTLS after connecting")); gtk_combo_box_text_append ( GTK_COMBO_BOX_TEXT (widget), "ssl-on-alternate-port", _("SSL on a dedicated port")); gtk_label_set_mnemonic_widget (label, widget); gtk_widget_set_halign (widget, GTK_ALIGN_START); gtk_grid_attach (GTK_GRID (container), widget, 1, 0, 1, 1); remote_backend->security_combo_box = widget; /* do not reference */ gtk_widget_show (widget); provider = camel_provider_get (backend_name, NULL); if (provider != NULL && provider->port_entries != NULL) e_port_entry_set_camel_entries ( E_PORT_ENTRY (remote_backend->port_entry), provider->port_entries); text = _("Authentication"); markup = g_markup_printf_escaped ("<b>%s</b>", text); widget = gtk_label_new (markup); gtk_widget_set_margin_top (widget, 6); gtk_label_set_use_markup (GTK_LABEL (widget), TRUE); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); gtk_widget_show (widget); g_free (markup); widget = e_mail_config_auth_check_new (backend); gtk_widget_set_margin_left (widget, 12); gtk_box_pack_start (GTK_BOX (parent), widget, FALSE, FALSE, 0); remote_backend->auth_check = widget; /* do not reference */ gtk_widget_show (widget); e_binding_bind_object_text_property ( settings, "host", remote_backend->host_entry, "text", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property_full ( settings, "security-method", remote_backend->security_combo_box, "active-id", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE, e_binding_transform_enum_value_to_nick, e_binding_transform_enum_nick_to_value, NULL, (GDestroyNotify) NULL); g_object_bind_property ( settings, "port", remote_backend->port_entry, "port", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property ( settings, "security-method", remote_backend->port_entry, "security-method", G_BINDING_SYNC_CREATE); e_binding_bind_object_text_property ( settings, "user", remote_backend->user_entry, "text", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); /* Don't use G_BINDING_SYNC_CREATE here since the widget * chooses its initial mechanism more intelligently than * a simple property binding would. */ g_object_bind_property ( settings, "auth-mechanism", remote_backend->auth_check, "active-mechanism", G_BINDING_BIDIRECTIONAL); }
gint main (gint argc, gchar *argv[]) { CamelSession *session; CamelService *service; ESourceRegistry *registry; GList *list, *link; const gchar *extension_name; g_type_init (); system ("rm -rf /tmp/test-map"); camel_init ("/tmp/test-map", TRUE); e_source_camel_register_types (); session = g_object_new ( CAMEL_TYPE_SESSION, "user-data-dir", "/tmp/test-map", "user-cache-dir", "/tmp/test-map/cache", NULL); /* Browse through the ESource registry to find out the MAP account */ registry = e_source_registry_new_sync (NULL, NULL); extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; list = e_source_registry_list_sources (registry, extension_name); for (link = list; link != NULL; link = g_list_next (link)) { ESource *source = E_SOURCE (link->data); const gchar *uid; const gchar *backend_name = "INVALID"; const gchar *display_name; ESourceBackend *extension; if (!e_source_get_enabled (source)) continue; uid = e_source_get_uid (source); display_name = e_source_get_display_name (source); printf("Looking for: %s\n", display_name); extension = e_source_get_extension (source, extension_name); backend_name = e_source_backend_get_backend_name (extension); if (strcmp (backend_name, "map") == 0) { /* Lets add just map backend to the session. */ CamelFolderInfo *info; CamelFolder *folder; GPtrArray *uids; int i; GError *error=NULL; service = camel_session_add_service ( CAMEL_SESSION (session), uid, backend_name, CAMEL_PROVIDER_STORE, NULL); e_source_camel_configure_service (source, service); camel_service_connect_sync (service, NULL, NULL); info = camel_store_get_folder_info_sync ( CAMEL_STORE (service), "", 0, NULL, NULL); print_folder_info (info, 0); folder = camel_store_get_folder_sync ( CAMEL_STORE (service), "inbox", 0, NULL, NULL); camel_folder_refresh_info_sync (folder, NULL, &error); if (error) printf("Refresh info failed: %s\n", error->message); uids = camel_folder_get_uids (folder); printf("Length of messages: %p %d\n", folder, uids->len); for (i=0; i<uids->len; i++) printf("UID: %s\n", (char *)uids->pdata[i]); } } return 0; }