#include <gtkhtml/gtkhtml.h>
+#define MIN_FREE_SPACE 5 * 1024 * 1024
+
typedef struct _GetMsgAsyncHelper {
ModestWindow *window;
ModestMailOperation *mail_op;
win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr(),
TRUE); /* create if not existent */
- /* make sure the mainwindow is visible */
gtk_window_set_transient_for (GTK_WINDOW (wizard), GTK_WINDOW (win));
- gtk_widget_show_all (GTK_WIDGET(win));
- gtk_window_present (GTK_WINDOW(win));
+
+ /* make sure the mainwindow is visible. We need to present the
+ wizard again to give it the focus back. show_all are needed
+ in order to get the widgets properly drawn (MainWindow main
+ paned won't be in its right position and the dialog will be
+ missplaced */
+ gtk_widget_show_all (GTK_WIDGET (win));
+ gtk_widget_show_all (GTK_WIDGET (wizard));
+ gtk_window_present (GTK_WINDOW (win));
+ gtk_window_present (GTK_WINDOW (wizard));
dialog_response = gtk_dialog_run (GTK_DIALOG (wizard));
gtk_widget_destroy (GTK_WIDGET (wizard));
/* Select next or previous row */
if (gtk_tree_row_reference_valid (next_row_reference)) {
-/* next_path = gtk_tree_row_reference_get_path (row_reference); */
gtk_tree_selection_select_path (sel, next_path);
}
else if (gtk_tree_row_reference_valid (prev_row_reference)) {
}
/* Update toolbar dimming state */
- if (main_window)
+ if (main_window) {
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (main_window));
modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (main_window));
+ }
/* Free */
g_list_foreach (sel_list, (GFunc) gtk_tree_path_free, NULL);
g_object_unref (G_OBJECT(account));
if (folder)
g_object_unref (G_OBJECT(folder));
- if (msg_win)
- g_object_unref (G_OBJECT(msg_win));
if (msg)
g_object_unref (G_OBJECT(msg));
}
if (open_in_editor) {
ModestAccountMgr *mgr = modest_runtime_get_account_mgr ();
- gchar *from_header = NULL;
+ gchar *from_header = NULL, *acc_name;
from_header = tny_header_dup_from (header);
/* we cannot edit without a valid account... */
if (!modest_account_mgr_has_accounts(mgr, TRUE)) {
if (!modest_ui_actions_run_account_setup_wizard(parent_win)) {
- modest_window_mgr_unregister_header (modest_runtime_get_window_mgr (),
+ modest_window_mgr_unregister_header (modest_runtime_get_window_mgr (),
header);
g_free (from_header);
goto cleanup;
}
}
-
- if (from_header) {
- GSList *accounts = modest_account_mgr_account_names (mgr, TRUE);
- GSList *node = NULL;
-
- for (node = accounts; node != NULL; node = g_slist_next (node)) {
- gchar *from = modest_account_mgr_get_from_string (mgr, node->data);
-
- if (from && (strcmp (from_header, from) == 0)) {
- g_free (account);
- account = g_strdup (node->data);
- g_free (from);
- break;
- }
- g_free (from);
- }
- g_free (from_header);
- g_slist_foreach (accounts, (GFunc) g_free, NULL);
- g_slist_free (accounts);
+ acc_name = modest_utils_get_account_name_from_recipient (from_header);
+ g_free (from_header);
+ if (acc_name) {
+ g_free (account);
+ account = acc_name;
}
win = modest_msg_edit_window_new (msg, account, TRUE);
-
-
-
} else {
gchar *uid = modest_tny_folder_get_header_unique_id (header);
if (win != NULL) {
mgr = modest_runtime_get_window_mgr ();
modest_window_mgr_register_window (mgr, win);
- g_object_unref (win);
gtk_widget_show_all (GTK_WIDGET(win));
}
static gboolean
is_memory_full_error (GError *error)
{
- if (error->code == TNY_SYSTEM_ERROR_MEMORY ||
- error->code == TNY_IO_ERROR_WRITE ||
- error->code == TNY_IO_ERROR_READ) {
+ gboolean enough_free_space = TRUE;
+ GnomeVFSURI *cache_dir_uri;
+ const gchar *cache_dir;
+ GnomeVFSFileSize free_space;
+
+ cache_dir = tny_account_store_get_cache_dir (TNY_ACCOUNT_STORE (modest_runtime_get_account_store ()));
+ cache_dir_uri = gnome_vfs_uri_new (cache_dir);
+ if (gnome_vfs_get_volume_free_space (cache_dir_uri, &free_space) == GNOME_VFS_OK) {
+ if (free_space < MIN_FREE_SPACE)
+ enough_free_space = FALSE;
+ }
+ gnome_vfs_uri_unref (cache_dir_uri);
+
+ if ((error->code == TNY_SYSTEM_ERROR_MEMORY ||
+ /* When asking for a mail and no space left on device
+ tinymail returns this error */
+ error->code == TNY_SERVICE_ERROR_MESSAGE_NOT_AVAILABLE ||
+ /* When the folder summary could not be read or
+ written */
+ error->code == TNY_IO_ERROR_WRITE ||
+ error->code == TNY_IO_ERROR_READ) &&
+ !enough_free_space) {
return TRUE;
} else {
return FALSE;
}
}
+static gboolean
+check_memory_full_error (GtkWidget *parent_window, GError *err)
+{
+ if (err == NULL)
+ return FALSE;
+
+ if (is_memory_full_error (err))
+ modest_platform_information_banner (parent_window,
+ NULL, dgettext("ke-recv",
+ "cerm_device_memory_full"));
+ else if (err->code == TNY_SYSTEM_ERROR_MEMORY)
+ /* If the account was created in memory full
+ conditions then tinymail won't be able to
+ connect so it'll return this error code */
+ modest_platform_information_banner (parent_window,
+ NULL, _("emev_ui_imap_inbox_select_error"));
+ else
+ return FALSE;
+
+ return TRUE;
+}
+
void
modest_ui_actions_disk_operations_error_handler (ModestMailOperation *mail_op,
gpointer user_data)
modest_platform_information_banner ((GtkWidget *) win,
NULL, dgettext("ke-recv",
"cerm_device_memory_full"));
- } else if (error->code == MODEST_MAIL_OPERATION_ERROR_FILE_IO) {
+ } else if (error->code == TNY_SYSTEM_ERROR_MEMORY) {
+ modest_platform_information_banner ((GtkWidget *) win,
+ NULL, _("emev_ui_imap_inbox_select_error"));
+ } else if (error->domain == MODEST_MAIL_OPERATION_ERROR &&
+ error->code == MODEST_MAIL_OPERATION_ERROR_FILE_IO) {
modest_platform_information_banner ((GtkWidget *) win,
NULL, dgettext ("hildon-common-strings", "sfil_ni_unable_to_open_file_not_found"));
} else if (user_data) {
open_msgs_helper_destroyer (helper);
/* In memory full conditions we could get this error here */
- if (err && is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- }
+ check_memory_full_error ((GtkWidget *) parent_window, err);
+
goto clean;
}
}
}
}
-
+
/* Register the headers before actually creating the windows: */
iter_not_opened = tny_list_create_iterator (not_opened_headers);
while (!tny_iterator_is_done (iter_not_opened)) {
gtk_widget_show_all (GTK_WIDGET (msg_win));
cleanup:
- if (msg_win)
- g_object_unref (msg_win);
if (new_msg)
g_object_unref (G_OBJECT (new_msg));
if (account)
header_list = get_selected_headers (win);
if (!header_list)
return;
- if (tny_list_get_length (header_list) == 0) {
+ /* Check that only one message is selected for replying */
+ if (tny_list_get_length (header_list) != 1) {
+ modest_platform_information_banner ((win) ? GTK_WIDGET (win) : NULL,
+ NULL, _("mcen_ib_select_one_message"));
g_object_unref (header_list);
return;
}
}
/* Show sorting dialog */
- modest_platform_run_sort_dialog (GTK_WINDOW (window), MODEST_SORT_HEADERS);
+ modest_utils_run_sort_dialog (GTK_WINDOW (window), MODEST_SORT_HEADERS);
}
}
if (err || canceled) {
/* In memory full conditions we could get this error here */
- if (err && is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- }
+ check_memory_full_error ((GtkWidget *) parent_window, err);
+
if (info->mail_op) {
modest_mail_operation_queue_remove (modest_runtime_get_mail_operation_queue (),
info->mail_op);
GtkWidget *folder_view =
modest_main_window_get_child_widget (main_window,
MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
- if (folder != NULL)
+ if (folder != NULL) {
modest_folder_view_select_folder (MODEST_FOLDER_VIEW (folder_view), folder, FALSE);
+ g_object_unref (folder);
+ }
gtk_widget_grab_focus (GTK_WIDGET (folder_view));
return;
}
if (!GTK_WIDGET_IS_SENSITIVE (open_widget))
return;
-/* headers = tny_simple_list_new (); */
-/* tny_list_prepend (headers, G_OBJECT (header)); */
headers = modest_header_view_get_selected_headers (header_view);
open_msgs_from_headers (headers, MODEST_WINDOW (main_window));
gpointer user_data)
{
ModestMainWindow *win = NULL;
- GtkWidget *header_view;
+ GtkWidget *folder_view;
const GError *error;
g_return_if_fail (TNY_IS_FOLDER (folder));
return;
}
- header_view =
- modest_main_window_get_child_widget(win, MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
+ folder_view =
+ modest_main_window_get_child_widget(win, MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
- if (header_view) {
- TnyFolder *current_folder;
+ if (folder_view) {
+ TnyFolderStore *current_folder;
- current_folder = modest_header_view_get_folder (MODEST_HEADER_VIEW (header_view));
- if (current_folder != NULL && folder != current_folder) {
- g_object_unref (current_folder);
- return;
- } else if (current_folder)
+ current_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
+ if (current_folder) {
+ gboolean different = ((TnyFolderStore *) folder != current_folder);
g_object_unref (current_folder);
+ if (different)
+ return;
+ }
}
/* Check if folder is empty and set headers view contents style */
}
} else {
if (TNY_IS_FOLDER (folder_store) && selected) {
-
+ TnyAccount *account;
+ const gchar *account_name = NULL;
+ gboolean refresh;
+
/* Update the active account */
- TnyAccount *account = modest_tny_folder_get_account (TNY_FOLDER (folder_store));
+ account = modest_tny_folder_get_account (TNY_FOLDER (folder_store));
if (account) {
set_active_account_from_tny_account (account, MODEST_WINDOW (main_window));
+ account_name =
+ modest_tny_account_get_parent_modest_account_name_for_server_account (account);
g_object_unref (account);
account = NULL;
}
modest_main_window_set_contents_style (main_window,
MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS);
+ refresh = !modest_account_mgr_account_is_busy (modest_runtime_get_account_mgr (), account_name);
+
/* Set folder on header view. This function
will call tny_folder_refresh_async so we
pass a callback that will be called when
empty view if there are no messages */
modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view),
TNY_FOLDER (folder_store),
+ refresh,
folder_refreshed_cb,
main_window);
g_object_unref(edit_window);
}
-gboolean
-modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edit_window)
+static gboolean
+enough_space_for_message (ModestMsgEditWindow *edit_window,
+ MsgData *data)
{
- TnyTransportAccount *transport_account;
- ModestMailOperation *mail_operation;
- MsgData *data;
- gchar *account_name, *from;
- ModestAccountMgr *account_mgr;
-/* char *info_text; */
- gboolean had_error = FALSE;
+ TnyAccountStore *acc_store;
guint64 available_disk, expected_size;
gint parts_count;
guint64 parts_size;
- ModestMainWindow *win;
-
- g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW(edit_window), FALSE);
-
- data = modest_msg_edit_window_get_msg_data (edit_window);
/* Check size */
- available_disk = modest_folder_available_space (NULL);
+ acc_store = TNY_ACCOUNT_STORE (modest_runtime_get_account_store());
+ available_disk = modest_utils_get_available_space (NULL);
modest_msg_edit_window_get_parts_size (edit_window, &parts_count, &parts_size);
expected_size = modest_tny_msg_estimate_size (data->plain_body,
- data->html_body,
- parts_count,
- parts_size);
+ data->html_body,
+ parts_count,
+ parts_size);
- if ((available_disk != -1) && expected_size > available_disk) {
- modest_msg_edit_window_free_msg_data (edit_window, data);
+ /* Double check: memory full condition or message too big */
+ if (available_disk < MIN_FREE_SPACE ||
+ expected_size > available_disk) {
- modest_platform_information_banner (NULL, NULL, dgettext("ke-recv", "cerm_device_memory_full"));
+ modest_platform_information_banner (NULL, NULL,
+ dgettext("ke-recv",
+ "cerm_device_memory_full"));
return FALSE;
}
* MODEST_MAX_LOW_MEMORY_MESSAGE_SIZE (see modest-defs.h) this
* should still allow for sending anything critical...
*/
- if (expected_size > MODEST_MAX_LOW_MEMORY_MESSAGE_SIZE) {
-
- if (modest_platform_check_memory_low (MODEST_WINDOW(edit_window), TRUE)) {
- modest_msg_edit_window_free_msg_data (edit_window, data);
- return FALSE;
- }
- }
+ if ((expected_size > MODEST_MAX_LOW_MEMORY_MESSAGE_SIZE) &&
+ modest_platform_check_memory_low (MODEST_WINDOW(edit_window), TRUE))
+ return FALSE;
/*
* djcb: we also make sure that the attachments are smaller than the max size
GTK_WINDOW(edit_window),
dgettext("ke-recv","memr_ib_operation_disabled"),
TRUE);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edit_window)
+{
+ TnyTransportAccount *transport_account;
+ ModestMailOperation *mail_operation;
+ MsgData *data;
+ gchar *account_name, *from;
+ ModestAccountMgr *account_mgr;
+ gboolean had_error = FALSE;
+ ModestMainWindow *win;
+
+ g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW(edit_window), FALSE);
+
+ data = modest_msg_edit_window_get_msg_data (edit_window);
+
+ /* Check size */
+ if (!enough_space_for_message (edit_window, data)) {
modest_msg_edit_window_free_msg_data (edit_window, data);
return FALSE;
}
transport_account =
TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account
- (modest_runtime_get_account_store(),
+ (modest_runtime_get_account_store (),
account_name,
TNY_ACCOUNT_TYPE_TRANSPORT));
if (!transport_account) {
{
TnyTransportAccount *transport_account = NULL;
gboolean had_error = FALSE;
- guint64 available_disk, expected_size;
- gint parts_count;
- guint64 parts_size;
+ MsgData *data;
+ ModestAccountMgr *account_mgr;
+ gchar *account_name;
+ gchar *from;
+ ModestMailOperation *mail_operation;
g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW(edit_window), TRUE);
if (!modest_msg_edit_window_check_names (edit_window, TRUE))
return TRUE;
- MsgData *data = modest_msg_edit_window_get_msg_data (edit_window);
+ data = modest_msg_edit_window_get_msg_data (edit_window);
/* Check size */
- available_disk = modest_folder_available_space (NULL);
- modest_msg_edit_window_get_parts_size (edit_window, &parts_count, &parts_size);
- expected_size = modest_tny_msg_estimate_size (data->plain_body,
- data->html_body,
- parts_count,
- parts_size);
-
- if ((available_disk != -1) && expected_size > available_disk) {
- modest_msg_edit_window_free_msg_data (edit_window, data);
-
- modest_platform_information_banner (NULL, NULL, dgettext("ke-recv", "cerm_device_memory_full"));
- return FALSE;
- }
-
-
- /*
- * djcb: if we're in low-memory state, we only allow for sending messages
- * smaller than MODEST_MAX_LOW_MEMORY_MESSAGE_SIZE (see modest-defs.h)
- * this should still allow for sending anything critical...
- */
- if (expected_size > MODEST_MAX_LOW_MEMORY_MESSAGE_SIZE) {
- if (modest_platform_check_memory_low (MODEST_WINDOW(edit_window), TRUE)) {
- modest_msg_edit_window_free_msg_data (edit_window, data);
- return FALSE;
- }
- }
-
- /*
- * djcb: we also make sure that the attachments are smaller than the max size
- * this is for the case where we'd try to forward a message with attachments
- * bigger than our max allowed size, or sending an message from drafts which
- * somehow got past our checks when attaching.
- */
- if (expected_size > MODEST_MAX_ATTACHMENT_SIZE) {
- modest_platform_run_information_dialog (
- GTK_WINDOW(edit_window),
- dgettext("ke-recv","memr_ib_operation_disabled"),
- TRUE);
+ if (!enough_space_for_message (edit_window, data)) {
modest_msg_edit_window_free_msg_data (edit_window, data);
return FALSE;
}
- ModestAccountMgr *account_mgr = modest_runtime_get_account_mgr();
- gchar *account_name = g_strdup (data->account_name);
+ account_mgr = modest_runtime_get_account_mgr();
+ account_name = g_strdup (data->account_name);
if (!account_name)
account_name = g_strdup(modest_window_get_active_account (MODEST_WINDOW(edit_window)));
/* Get the currently-active transport account for this modest account: */
if (strcmp (account_name, MODEST_LOCAL_FOLDERS_ACCOUNT_ID) != 0) {
- transport_account = TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account
- (modest_runtime_get_account_store(),
- account_name, TNY_ACCOUNT_TYPE_TRANSPORT));
+ transport_account =
+ TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account
+ (modest_runtime_get_account_store (),
+ account_name, TNY_ACCOUNT_TYPE_TRANSPORT));
}
if (!transport_account) {
return TRUE;
}
- gchar *from = modest_account_mgr_get_from_string (account_mgr, account_name);
/* Create the mail operation */
- ModestMailOperation *mail_operation = modest_mail_operation_new_with_error_handling (NULL, modest_ui_actions_disk_operations_error_handler, NULL, NULL);
+ from = modest_account_mgr_get_from_string (account_mgr, account_name);
+ mail_operation = modest_mail_operation_new_with_error_handling (NULL, modest_ui_actions_disk_operations_error_handler, NULL, NULL);
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_operation);
modest_mail_operation_send_new_mail (mail_operation,
transport_account,
data->draft_msg,
from,
- data->to,
+ data->to,
data->cc,
data->bcc,
data->subject,
if (modest_mail_operation_get_error (mail_operation) != NULL) {
const GError *error = modest_mail_operation_get_error (mail_operation);
- if (error->code == MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED) {
+ if (error->domain == MODEST_MAIL_OPERATION_ERROR &&
+ error->code == MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED) {
g_warning ("%s failed: %s\n", __FUNCTION__, (modest_mail_operation_get_error (mail_operation))->message);
modest_platform_information_banner (NULL, NULL, _CS("sfil_ni_not_enough_memory"));
had_error = TRUE;
modest_msg_edit_window_remove_attachments (window, NULL);
}
+
+#ifdef MODEST_PLATFORM_MAEMO
+typedef struct {
+ guint handler;
+ gchar *name;
+ GtkWindow *win;
+ TnyFolderStore *folder;
+} CreateFolderHelper;
+
+static gboolean
+show_create_folder_in_timeout (gpointer data)
+{
+ CreateFolderHelper *helper = (CreateFolderHelper *) data;
+
+ /* Remove the timeout ASAP, we can not wait until the dialog
+ is shown because it could take a lot of time and so the
+ timeout could be called twice or more times */
+ g_source_remove (helper->handler);
+
+ gdk_threads_enter ();
+ do_create_folder (helper->win, helper->folder, helper->name);
+ gdk_threads_leave ();
+
+ g_object_unref (helper->win);
+ g_object_unref (helper->folder);
+ g_free (helper->name);
+ g_slice_free (CreateFolderHelper, helper);
+
+ return FALSE;
+}
+#endif
+
static void
do_create_folder_cb (ModestMailOperation *mail_op,
TnyFolderStore *parent_folder,
/* Try again. Do *NOT* show any error because the mail
operations system will do it for us because we
created the mail_op with new_with_error_handler */
+#ifdef MODEST_PLATFORM_MAEMO
+ CreateFolderHelper *helper;
+ helper = g_slice_new0 (CreateFolderHelper);
+ helper->name = g_strdup (suggested_name);
+ helper->folder = g_object_ref (parent_folder);
+ helper->win = g_object_ref (source_win);
+
+ /* Ugly but neccesary stuff. The problem is that the
+ dialog when is shown calls a function that destroys
+ all the temporary windows, so the banner is
+ destroyed */
+ helper->handler = g_timeout_add (2000, show_create_folder_in_timeout, helper);
+#else
do_create_folder (source_win, parent_folder, (const gchar *) suggested_name);
+#endif
} else {
/* the 'source_win' is either the ModestMainWindow, or the 'Move to folder'-dialog
* FIXME: any other? */
if (canceled || err) {
/* In memory full conditions we could get this error here */
- if (err && is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- }
+ check_memory_full_error ((GtkWidget *) parent_window, err);
goto frees;
}
if (!error)
g_return_if_reached ();
- switch (error->code) {
- case MODEST_MAIL_OPERATION_ERROR_FOLDER_EXISTS:
+ if (error->domain == MODEST_MAIL_OPERATION_ERROR &&
+ error->code == MODEST_MAIL_OPERATION_ERROR_FOLDER_EXISTS) {
message = _CS("ckdg_ib_folder_already_exists");
- break;
- case TNY_SERVICE_ERROR_STATE:
+ } else if (error->domain == TNY_ERROR_DOMAIN &&
+ error->code == TNY_SERVICE_ERROR_STATE) {
/* This means that the folder is already in use (a
message is opened for example */
message = _("emev_ni_internal_error");
- break;
- default:
+ } else {
message = _("emev_ib_ui_imap_unable_to_rename");
}
if (canceled || err) {
/* In memory full conditions we could get this error here */
- if (err && is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- }
+ check_memory_full_error ((GtkWidget *) parent_window, err);
} else if (MODEST_IS_MAIN_WINDOW(parent_window)) {
folder_view = modest_main_window_get_child_widget (
/* Set focuse on header view */
gtk_widget_grab_focus (header_view);
-
/* Enable window dimming management */
modest_window_enable_dimming (MODEST_WINDOW(window));
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window));
modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
}
return;
children = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area));
+#ifdef MODEST_PLATFORM_MAEMO
ok_button = GTK_WIDGET (children->next->next->data);
new_button = GTK_WIDGET (children->next->data);
+#else
+ ok_button = GTK_WIDGET (children->data);
+ new_button = GTK_WIDGET (children->next->next->data);
+#endif
g_list_free (children);
/* check if folder_store is an remote account */
GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT,
NULL);
+#ifdef MODEST_PLATFORM_MAEMO
gtk_dialog_add_button (GTK_DIALOG (dialog), _("mcen_bd_dialog_ok"), GTK_RESPONSE_ACCEPT);
/* We do this manually so GTK+ does not associate a response ID for
* the button. */
new_button = gtk_button_new_from_stock (_("mcen_bd_new"));
gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog)->action_area), new_button, FALSE, FALSE, 0);
gtk_dialog_add_button (GTK_DIALOG (dialog), _("mcen_bd_dialog_cancel"), GTK_RESPONSE_REJECT);
+#else
+ /* We do this manually so GTK+ does not associate a response ID for
+ * the button. */
+ new_button = gtk_button_new_with_label (_("mcen_ti_new_folder"));
+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), new_button, FALSE, FALSE, 0);
+ gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (GTK_DIALOG (dialog)->action_area), new_button, TRUE);
+ gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT);
+ gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_OK, GTK_RESPONSE_ACCEPT);
+ gtk_container_set_border_width (GTK_CONTAINER (dialog), 12);
+ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 24);
+#endif
/* Create scrolled window */
scroll = gtk_scrolled_window_new (NULL, NULL);
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
+#ifndef MODEST_PLATFORM_MAEMO
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_IN);
+#endif
+
/* Create folder view */
*tree_view = modest_platform_create_folder_view (NULL);
scroll, TRUE, TRUE, 0);
gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
+#ifdef MODEST_PLATFORM_MAEMO
gtk_window_set_default_size (GTK_WINDOW (dialog), 300, 300);
+#else
+ gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 400);
+#endif
return dialog;
}
response = modest_platform_run_confirmation_dialog (GTK_WINDOW (win),_("mcen_nc_purge_file_text_inbox"));
if (response == GTK_RESPONSE_OK) {
- modest_platform_information_banner (NULL, NULL, _("mcen_ib_removing_attachment"));
+ GtkWidget *info;
+ info =
+ modest_platform_animation_banner (GTK_WIDGET (win), NULL, _("mcen_ib_removing_attachment"));
iter = tny_list_create_iterator (parts);
while (!tny_iterator_is_done (iter)) {
TnyMimePart *part;
g_object_unref (iter);
tny_msg_rewrite_cache (msg);
+
+ gtk_widget_destroy (info);
}
- /* } else { */
- /* This string no longer exists, refer to NB#75415 for more info */
- /* modest_platform_information_banner (NULL, NULL, _("mail_ib_attachment_already_purged")); */
}
modest_window_mgr_unregister_header (mgr, header);
move_to_helper_destroyer (user_data);
}
+typedef struct {
+ TnyFolderStore *dst_folder;
+ TnyList *headers;
+} XferMsgsHelper;
+
/**
* Utility function that transfer messages from both the main window
* and the msg view window when using the "Move to" dialog
TnyAccount *account,
gpointer user_data)
{
- TnyFolderStore *dst_folder = TNY_FOLDER_STORE (user_data);
ModestWindow *win = MODEST_WINDOW (parent_window);
- TnyList *headers = NULL;
TnyAccount *dst_account = NULL;
const gchar *proto_str = NULL;
gboolean dst_is_pop = FALSE;
+ XferMsgsHelper *helper;
+ MoveToHelper *movehelper;
+ ModestMailOperation *mail_op;
- if (canceled)
- goto end;
+ helper = (XferMsgsHelper *) user_data;
- if (err) {
- if (is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- } else {
+ if (canceled || err) {
+ if (!check_memory_full_error ((GtkWidget *) parent_window, err)) {
/* Show the proper error message */
modest_ui_actions_on_account_connection_error (parent_window, account);
}
goto end;
}
- dst_account = tny_folder_get_account (TNY_FOLDER (dst_folder));
+ dst_account = tny_folder_get_account (TNY_FOLDER (helper->dst_folder));
proto_str = tny_account_get_proto (dst_account);
/* tinymail will return NULL for local folders it seems */
g_object_unref (dst_account);
- /* Get selected headers */
- headers = get_selected_headers (MODEST_WINDOW (win));
- if (!headers) {
- g_warning ("%s: no headers selected", __FUNCTION__);
- goto end;
- }
-
if (dst_is_pop) {
modest_platform_information_banner (GTK_WIDGET (win),
NULL,
ngettext("mail_in_ui_folder_move_target_error",
"mail_in_ui_folder_move_targets_error",
- tny_list_get_length (headers)));
- g_object_unref (headers);
+ tny_list_get_length (helper->headers)));
goto end;
}
- MoveToHelper *helper = g_new0 (MoveToHelper, 1);
- helper->banner = modest_platform_animation_banner (GTK_WIDGET (win), NULL,
- _CS("ckct_nw_pasting"));
- if (helper->banner != NULL) {
- g_object_ref (helper->banner);
- gtk_widget_show (GTK_WIDGET(helper->banner));
+ movehelper = g_new0 (MoveToHelper, 1);
+ movehelper->banner = modest_platform_animation_banner (GTK_WIDGET (win), NULL,
+ _CS("ckct_nw_pasting"));
+ if (movehelper->banner != NULL) {
+ g_object_ref (movehelper->banner);
+ gtk_widget_show (GTK_WIDGET (movehelper->banner));
}
if (MODEST_IS_MAIN_WINDOW (win)) {
GtkWidget *header_view =
modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
- helper->reference = get_next_after_selected_headers (MODEST_HEADER_VIEW (header_view));
+ movehelper->reference = get_next_after_selected_headers (MODEST_HEADER_VIEW (header_view));
}
- ModestMailOperation *mail_op =
- modest_mail_operation_new_with_error_handling (G_OBJECT(win),
- xfer_messages_error_handler,
- helper, NULL);
+ /* Perform the mail operation */
+ mail_op = modest_mail_operation_new_with_error_handling (G_OBJECT(win),
+ xfer_messages_error_handler,
+ movehelper, NULL);
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
mail_op);
modest_mail_operation_xfer_msgs (mail_op,
- headers,
- TNY_FOLDER (dst_folder),
+ helper->headers,
+ TNY_FOLDER (helper->dst_folder),
TRUE,
msgs_move_to_cb,
- helper);
+ movehelper);
g_object_unref (G_OBJECT (mail_op));
- g_object_unref (headers);
end:
- g_object_unref (dst_folder);
+ g_object_unref (helper->dst_folder);
+ g_object_unref (helper->headers);
+ g_slice_free (XferMsgsHelper, helper);
}
typedef struct {
{
gboolean need_connection = TRUE;
gboolean do_xfer = TRUE;
+ XferMsgsHelper *helper;
modest_ui_actions_xfer_messages_check (win, TNY_FOLDER_STORE (src_folder),
headers, TNY_FOLDER (dst_folder),
if (!do_xfer)
return;
+ /* Create the helper */
+ helper = g_slice_new (XferMsgsHelper);
+ helper->dst_folder = g_object_ref (dst_folder);
+ helper->headers = g_object_ref (headers);
+
if (need_connection) {
DoubleConnectionInfo *connect_info = g_slice_new (DoubleConnectionInfo);
connect_info->callback = xfer_messages_performer;
connect_info->dst_account = tny_folder_get_account (TNY_FOLDER (dst_folder));
- connect_info->data = g_object_ref (dst_folder);
+ connect_info->data = helper;
modest_platform_double_connect_and_perform(GTK_WINDOW (win), TRUE,
TNY_FOLDER_STORE (src_folder),
} else {
TnyAccount *src_account = get_account_from_folder_store (TNY_FOLDER_STORE (src_folder));
xfer_messages_performer (FALSE, NULL, GTK_WINDOW (win),
- src_account, g_object_ref (dst_folder));
+ src_account, helper);
g_object_unref (src_account);
}
}
TnyList *headers = TNY_LIST (user_data);
if (err || canceled) {
- if (err && is_memory_full_error (err)) {
- modest_platform_information_banner ((GtkWidget *) parent_window,
- NULL, dgettext("ke-recv",
- "cerm_device_memory_full"));
- }
+ check_memory_full_error ((GtkWidget *) parent_window, err);
goto out;
}
TnyTransportAccount *server_account;
gchar *message = NULL;
- /* Don't show anything if the user cancelled something or the send receive request is not
- * interactive */
+ /* Don't show anything if the user cancelled something or the
+ * send receive request is not interactive. Authentication
+ * errors are managed by the account store so no need to show
+ * a dialog here again */
if (err->code == TNY_SYSTEM_ERROR_CANCEL ||
+ err->code == TNY_SERVICE_ERROR_AUTHENTICATE ||
!modest_tny_send_queue_get_requested_send_receive (MODEST_TNY_SEND_QUEUE (self)))
return;
case TNY_SERVICE_ERROR_CONNECT:
message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), server_name);
break;
- case TNY_SERVICE_ERROR_AUTHENTICATE:
- message = g_strdup_printf (_("emev_ni_ui_smtp_authentication_fail_error"), server_name);
- break;
case TNY_SERVICE_ERROR_SEND:
message = g_strdup (dgettext("hildon-common-strings", "sfil_ib_unable_to_send"));
break;
message = g_strdup (dgettext("hildon-common-strings", "sfil_ib_unable_to_send"));
break;
}
-
- /* TODO if the username or the password where not defined we
- should show the Accounts Settings dialog or the Connection
- specific SMTP server window */
modest_platform_run_information_dialog (NULL, message, FALSE);
g_free (message);