gchar **list = g_strsplit(idle_data->attachments, ",", 0);
gint i = 0;
for (i=0; list[i] != NULL; i++) {
- attachments = g_slist_append(attachments, g_strdup(list[i]));
+ attachments = g_slist_append(attachments, g_uri_unescape_string (list[i], NULL));
}
g_strfreev(list);
}
{
OpenMsgPerformerInfo *info;
TnyFolder *folder = NULL;
+ ModestTnyAccountStore *account_store;
+ ModestTnyLocalFoldersAccount *local_folders_account;
+
+ account_store = modest_runtime_get_account_store ();
+ local_folders_account = MODEST_TNY_LOCAL_FOLDERS_ACCOUNT (
+ modest_tny_account_store_get_local_folders_account (account_store));
info = (OpenMsgPerformerInfo *) user_data;
if (canceled || err) {
/* Get folder */
if (!account) {
- ModestTnyAccountStore *account_store;
- ModestTnyLocalFoldersAccount *local_folders_account;
-
- account_store = modest_runtime_get_account_store ();
- local_folders_account = MODEST_TNY_LOCAL_FOLDERS_ACCOUNT (
- modest_tny_account_store_get_local_folders_account (account_store));
folder = modest_tny_local_folders_account_get_merged_outbox (local_folders_account);
g_object_unref (local_folders_account);
- } else {
+ } else if (account == TNY_ACCOUNT (local_folders_account)) {
folder = tny_store_account_find_folder (TNY_STORE_ACCOUNT (account), info->uri, NULL);
+ } else {
+ folder = NULL;
+ }
+ if (!(folder && modest_tny_folder_is_local_folder (folder) &&
+ (modest_tny_folder_get_local_or_mmc_folder_type (folder) == TNY_FOLDER_TYPE_DRAFTS))) {
+ ModestWindowMgr *win_mgr;
+ ModestWindow *msg_view;
+
+ win_mgr = modest_runtime_get_window_mgr ();
+ if (modest_window_mgr_find_registered_message_uid (win_mgr, info->uri, &msg_view)) {
+ gtk_window_present (GTK_WINDOW(msg_view));
+ } else {
+ const gchar *modest_account_name;
+ if (account) {
+ modest_account_name =
+ modest_tny_account_get_parent_modest_account_name_for_server_account (account);
+ } else {
+ modest_account_name = NULL;
+ }
+
+ msg_view = modest_msg_view_window_new_from_uid (modest_account_name, NULL, info->uri);
+ if (msg_view != NULL) {
+ if (!modest_window_mgr_register_window (win_mgr, msg_view, NULL)) {
+ gtk_widget_destroy (GTK_WIDGET (msg_view));
+ } else {
+ gtk_widget_show_all (GTK_WIDGET (msg_view));
+ }
+ }
+ g_object_unref (account);
+
+ }
+ on_find_msg_async_destroy (info);
+ return;
}
- if (!folder) {
- modest_platform_run_information_dialog (NULL, _("mail_ni_ui_folder_get_msg_folder_error"), TRUE);
- g_idle_add (notify_error_in_dbus_callback, NULL);
- on_find_msg_async_destroy (info);
- return;
- }
+
#ifndef MODEST_TOOLKIT_HILDON2
info->animation_timeout = g_timeout_add (1000, on_show_opening_animation, info);
#endif
if (is_merge || account) {
OpenMsgPerformerInfo *info;
TnyFolder *folder = NULL;
+ ModestTnyAccountStore *account_store;
+ ModestTnyLocalFoldersAccount *local_folders_account;
info = g_slice_new0 (OpenMsgPerformerInfo);
if (account)
info->animation = NULL;
info->animation_timeout = 0;
+ account_store = modest_runtime_get_account_store ();
+ local_folders_account = MODEST_TNY_LOCAL_FOLDERS_ACCOUNT
+ (modest_tny_account_store_get_local_folders_account (account_store));
+
/* Try to get the message, if it's already downloaded
we don't need to connect */
if (account) {
- folder = tny_store_account_find_folder (TNY_STORE_ACCOUNT (account), uri, NULL);
+ if (TNY_ACCOUNT (local_folders_account) == account) {
+ folder = tny_store_account_find_folder (TNY_STORE_ACCOUNT (account), uri, NULL);
+ } else {
+ folder = NULL;
+ info->connect = TRUE;
+ }
} else {
- ModestTnyAccountStore *account_store;
- ModestTnyLocalFoldersAccount *local_folders_account;
-
- account_store = modest_runtime_get_account_store ();
- local_folders_account = MODEST_TNY_LOCAL_FOLDERS_ACCOUNT (
- modest_tny_account_store_get_local_folders_account (account_store));
folder = modest_tny_local_folders_account_get_merged_outbox (local_folders_account);
g_object_unref (local_folders_account);
}
if (folder) {
- TnyDevice *device;
- gboolean device_online;
-
- device = modest_runtime_get_device();
- device_online = tny_device_is_online (device);
- if (device_online) {
- info->connect = TRUE;
+ TnyMsg *msg = tny_folder_find_msg (folder, uri, NULL);
+ if (msg) {
+ info->connect = FALSE;
+ g_object_unref (msg);
} else {
- TnyMsg *msg = tny_folder_find_msg (folder, uri, NULL);
- if (msg) {
- info->connect = FALSE;
- g_object_unref (msg);
- } else {
- info->connect = TRUE;
- }
+ info->connect = TRUE;
}
g_object_unref (folder);
}
g_object_unref (account);
if (!msg) {
- g_warning ("%s: Could not find message '%s'", __FUNCTION__, uri);
+ g_debug ("%s: Could not find message '%s'", __FUNCTION__, uri);
g_idle_add (notify_error_in_dbus_callback, NULL);
g_free (uri);
return FALSE;
folder = tny_msg_get_folder (msg);
if (!folder) {
- g_warning ("%s: Could not find folder (uri:'%s')", __FUNCTION__, uri);
+ g_debug ("%s: Could not find folder (uri:'%s')", __FUNCTION__, uri);
g_object_unref (msg);
g_idle_add (notify_error_in_dbus_callback, NULL);
g_free (uri);
ModestWindow *top;
ModestWindowMgr *mgr;
gchar *acc_name;
- gboolean retval = TRUE;
gdk_threads_enter ();
acc_name = (gchar *) user_data;
mgr = modest_runtime_get_window_mgr ();
- /* If Modest is already launched then just ignore this call */
- if (modest_window_mgr_get_current_top (mgr)) {
- retval = FALSE;
- goto end;
- }
-
- top = modest_window_mgr_show_initial_window (mgr);
+ top = modest_window_mgr_get_current_top (mgr);
+ if (!top)
+ top = modest_window_mgr_show_initial_window (mgr);
#ifdef MODEST_TOOLKIT_HILDON2
if (MODEST_IS_ACCOUNTS_WINDOW (top)) {
}
}
#endif
- gdk_threads_leave ();
- end:
+ gdk_threads_leave ();
g_free (acc_name);
return FALSE;
}
if (g_ascii_strcasecmp (method, MODEST_DBUS_METHOD_MAIL_TO) == 0) {
if (arguments->len != MODEST_DBUS_MAIL_TO_ARGS_COUNT)
goto param_error;
+ modest_runtime_set_allow_shutdown (TRUE);
return on_mail_to (arguments, data, retval);
} else if (g_ascii_strcasecmp (method, MODEST_DBUS_METHOD_OPEN_MESSAGE) == 0) {
if (arguments->len != MODEST_DBUS_OPEN_MESSAGE_ARGS_COUNT)
goto param_error;
+ modest_runtime_set_allow_shutdown (TRUE);
return on_open_message (arguments, data, retval);
} else if (g_ascii_strcasecmp (method, MODEST_DBUS_METHOD_OPEN_ACCOUNT) == 0) {
if (arguments->len != MODEST_DBUS_OPEN_ACCOUNT_ARGS_COUNT)
goto param_error;
+ modest_runtime_set_allow_shutdown (TRUE);
return on_open_account (arguments, data, retval);
} else if (g_ascii_strcasecmp (method, MODEST_DBUS_METHOD_SEND_RECEIVE) == 0) {
if (arguments->len != 0)
} else if (g_ascii_strcasecmp (method, MODEST_DBUS_METHOD_COMPOSE_MAIL) == 0) {
if (arguments->len != MODEST_DBUS_COMPOSE_MAIL_ARGS_COUNT)
goto param_error;
+ modest_runtime_set_allow_shutdown (TRUE);
return on_compose_mail (arguments, data, retval);
} else if (g_ascii_strcasecmp (method, MODEST_DBUS_METHOD_DELETE_MESSAGE) == 0) {
if (arguments->len != MODEST_DBUS_DELETE_MESSAGE_ARGS_COUNT)
} else if (g_ascii_strcasecmp (method, MODEST_DBUS_METHOD_OPEN_DEFAULT_INBOX) == 0) {
if (arguments->len != 0)
goto param_error;
+ modest_runtime_set_allow_shutdown (TRUE);
return on_open_default_inbox (arguments, data, retval);
} else if (g_ascii_strcasecmp (method, MODEST_DBUS_METHOD_TOP_APPLICATION) == 0) {
if (arguments->len != 0)
goto param_error;
+ modest_runtime_set_allow_shutdown (TRUE);
return on_top_application (arguments, data, retval);
} else {
/* We need to return INVALID here so