gboolean e_mail_session_append_to_local_folder_sync (EMailSession *session, EMailLocalFolder local_id, CamelMimeMessage *message, CamelMessageInfo *info, gchar **appended_uid, GCancellable *cancellable, GError **error) { CamelFolder *folder; const gchar *folder_uri; gboolean success = FALSE; g_return_val_if_fail (E_IS_MAIL_SESSION (session), FALSE); g_return_val_if_fail (CAMEL_IS_MIME_MESSAGE (message), FALSE); folder_uri = e_mail_session_get_local_folder_uri (session, local_id); g_return_val_if_fail (folder_uri != NULL, FALSE); folder = e_mail_session_uri_to_folder_sync ( session, folder_uri, CAMEL_STORE_FOLDER_CREATE, cancellable, error); if (folder != NULL) { success = e_mail_folder_append_message_sync ( folder, message, info, appended_uid, cancellable, error); g_object_unref (folder); } return success; }
static GtkWidget * mbox_getwidget (EImport *ei, EImportTarget *target, EImportImporter *im) { EShell *shell; EShellBackend *shell_backend; EMailBackend *backend; EMailSession *session; GtkWindow *window; GtkWidget *hbox, *w; GtkLabel *label; gchar *select_uri = NULL; /* XXX Dig up the mail backend from the default EShell. * Since the EImport framework doesn't allow for user * data, I don't see how else to get to it. */ shell = e_shell_get_default (); shell_backend = e_shell_get_backend_by_name (shell, "mail"); backend = E_MAIL_BACKEND (shell_backend); session = e_mail_backend_get_session (backend); /* preselect the folder selected in a mail view */ window = e_shell_get_active_window (shell); if (E_IS_SHELL_WINDOW (window)) { EShellWindow *shell_window; const gchar *view; shell_window = E_SHELL_WINDOW (window); view = e_shell_window_get_active_view (shell_window); if (view && g_str_equal (view, "mail")) { EShellView *shell_view; EShellSidebar *shell_sidebar; EMFolderTree *folder_tree = NULL; shell_view = e_shell_window_get_shell_view ( shell_window, view); shell_sidebar = e_shell_view_get_shell_sidebar (shell_view); g_object_get ( shell_sidebar, "folder-tree", &folder_tree, NULL); select_uri = em_folder_tree_get_selected_uri (folder_tree); g_object_unref (folder_tree); } } if (!select_uri) { const gchar *uri; uri = e_mail_session_get_local_folder_uri ( session, E_MAIL_LOCAL_FOLDER_INBOX); select_uri = g_strdup (uri); } hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); w = gtk_label_new_with_mnemonic (_("_Destination folder:")); gtk_box_pack_start ((GtkBox *) hbox, w, FALSE, TRUE, 6); label = GTK_LABEL (w); w = em_folder_selection_button_new ( session, _("Select folder"), _("Select folder to import into")); gtk_label_set_mnemonic_widget (label, w); em_folder_selection_button_set_folder_uri ( EM_FOLDER_SELECTION_BUTTON (w), select_uri); folder_selected ( EM_FOLDER_SELECTION_BUTTON (w), (EImportTargetURI *) target); g_signal_connect ( w, "selected", G_CALLBACK (folder_selected), target); gtk_box_pack_start ((GtkBox *) hbox, w, FALSE, TRUE, 6); w = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start ((GtkBox *) w, hbox, FALSE, FALSE, 0); gtk_widget_show_all (w); g_free (select_uri); return w; }