aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2011-05-04 01:42:15 +0800
committerRodrigo Moya <rodrigo@gnome-db.org>2011-06-30 00:42:06 +0800
commit839b17d1fd5265f0dd32e63be2b9146466266757 (patch)
tree63e563cb56895dbc06278949acda68049b365adc /modules
parent5d1d6f4969e37f67e0900aa51ba6a51a3222ed1d (diff)
downloadgsoc2013-evolution-839b17d1fd5265f0dd32e63be2b9146466266757.tar.gz
gsoc2013-evolution-839b17d1fd5265f0dd32e63be2b9146466266757.tar.zst
gsoc2013-evolution-839b17d1fd5265f0dd32e63be2b9146466266757.zip
Remove 'from_uri' params from e-msg-composer-utils.c.
Pass CamelFolder objects instead, which are already available at almost every call site.
Diffstat (limited to 'modules')
-rw-r--r--modules/mail/e-mail-shell-backend.c39
1 files changed, 33 insertions, 6 deletions
diff --git a/modules/mail/e-mail-shell-backend.c b/modules/mail/e-mail-shell-backend.c
index 609e483083..3d75b87f2c 100644
--- a/modules/mail/e-mail-shell-backend.c
+++ b/modules/mail/e-mail-shell-backend.c
@@ -36,6 +36,7 @@
#include "e-mail-shell-view.h"
#include "e-mail-browser.h"
+#include "e-mail-folder-utils.h"
#include "e-mail-reader.h"
#include "e-mail-session.h"
#include "e-mail-store.h"
@@ -147,12 +148,14 @@ action_mail_message_new_cb (GtkAction *action,
EShellWindow *shell_window)
{
EMailShellSidebar *mail_shell_sidebar;
+ EShellBackend *shell_backend;
EShellSidebar *shell_sidebar;
EShellView *shell_view;
EShell *shell;
EMFolderTree *folder_tree;
+ CamelFolder *folder = NULL;
const gchar *view_name;
- gchar *uri = NULL;
+ gchar *folder_uri = NULL;
shell = e_shell_window_get_shell (shell_window);
@@ -165,16 +168,40 @@ action_mail_message_new_cb (GtkAction *action,
goto exit;
shell_view = e_shell_window_get_shell_view (shell_window, view_name);
+ shell_backend = e_shell_view_get_shell_backend (shell_view);
shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
mail_shell_sidebar = E_MAIL_SHELL_SIDEBAR (shell_sidebar);
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
- uri = em_folder_tree_get_selected_uri (folder_tree);
+ folder_uri = em_folder_tree_get_selected_uri (folder_tree);
+
+ if (folder_uri != NULL) {
+ EMailBackend *backend;
+ EMailSession *session;
+ CamelStore *store;
+ gchar *folder_name;
+ gboolean success;
+
+ backend = E_MAIL_BACKEND (shell_backend);
+ session = e_mail_backend_get_session (backend);
+
+ success = e_mail_folder_uri_parse (
+ CAMEL_SESSION (session), folder_uri,
+ &store, &folder_name, NULL);
+
+ /* FIXME This blocks and is not cancellable. */
+ if (success) {
+ folder = camel_store_get_folder_sync (
+ store, folder_name, 0, NULL, NULL);
+ g_object_unref (store);
+ g_free (folder_name);
+ }
-exit:
- em_utils_compose_new_message (shell, uri);
+ g_free (folder_uri);
+ }
- g_free (uri);
+exit:
+ em_utils_compose_new_message (shell, folder);
}
static GtkActionEntry item_entries[] = {
@@ -307,7 +334,7 @@ mail_shell_backend_handle_email_uri_cb (gchar *folder_uri,
shell_settings, "mail-forward-style");
em_utils_forward_messages (
- shell, folder, uids, folder_uri, forward_style);
+ shell, folder, uids, forward_style);
} else {
GtkWidget *browser;