ModestMailOperationState *state,
gpointer user_data);
-static gint header_list_count_uncached_msgs (
- TnyList *header_list,
- GtkWindow *win);
+static gint header_list_count_uncached_msgs (TnyList *header_list);
static gboolean connect_to_get_msg (
GtkWindow *win,
gint num_of_uncached_msgs);
+static gboolean remote_folder_is_pop (const TnyFolderStore *folder);
+static gboolean msgs_already_deleted_from_server ( TnyList *headers,
+ const TnyFolderStore *src_folder);
+
+
+/*
+ * This function checks whether a TnyFolderStore is a pop account
+ */
+static gboolean
+remote_folder_is_pop (const TnyFolderStore *folder)
+{
+ const gchar *proto = NULL;
+ TnyAccount *account = NULL;
+
+ g_return_val_if_fail (TNY_IS_FOLDER_STORE(folder), FALSE);
+
+ if (TNY_IS_ACCOUNT (folder)) {
+ account = TNY_ACCOUNT(folder);
+ g_object_ref(account);
+ } else if (TNY_IS_FOLDER (folder)) {
+ account = tny_folder_get_account(TNY_FOLDER(folder));
+ }
+
+ proto = tny_account_get_proto(account);
+ g_object_unref (account);
+
+ return proto &&
+ (modest_protocol_info_get_transport_store_protocol (proto) == MODEST_PROTOCOL_STORE_POP);
+}
+
+/*
+ * This functions checks whether if a list of messages are already
+ * deleted from the server: that is, if the server is a POP account
+ * and all messages are already cached.
+ */
+static gboolean
+msgs_already_deleted_from_server (TnyList *headers, const TnyFolderStore *src_folder)
+{
+ g_return_val_if_fail (TNY_IS_FOLDER_STORE(src_folder), FALSE);
+ g_return_val_if_fail (TNY_IS_LIST(headers), FALSE);
+
+ gboolean src_is_pop = remote_folder_is_pop (src_folder);
+ gint uncached_msgs = header_list_count_uncached_msgs (headers);
+
+ return (src_is_pop && !uncached_msgs);
+}
/* Show the account creation wizard dialog.
* returns: TRUE if an account was created. FALSE if the user cancelled.
GtkWidget *header_view;
header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
return modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
} else if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
if (MODEST_IS_MAIN_WINDOW (win)) {
header_view =
modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
if (!gtk_widget_is_focus (header_view))
return;
}
GtkTreeModel *model = NULL;
GtkTreeSelection *sel = NULL;
GList *sel_list = NULL, *tmp = NULL;
- GtkTreeRowReference *row_reference = NULL;
+ GtkTreeRowReference *next_row_reference = NULL;
+ GtkTreeRowReference *prev_row_reference = NULL;
GtkTreePath *next_path = NULL;
+ GtkTreePath *prev_path = NULL;
GError *err = NULL;
/* Find last selected row */
sel_list = gtk_tree_selection_get_selected_rows (sel, &model);
for (tmp=sel_list; tmp; tmp=tmp->next) {
if (tmp->next == NULL) {
+ prev_path = gtk_tree_path_copy((GtkTreePath *) tmp->data);
next_path = gtk_tree_path_copy((GtkTreePath *) tmp->data);
+
+ gtk_tree_path_prev (prev_path);
gtk_tree_path_next (next_path);
- row_reference = gtk_tree_row_reference_new (model, next_path);
- gtk_tree_path_free (next_path);
+
+ prev_row_reference = gtk_tree_row_reference_new (model, prev_path);
+ next_row_reference = gtk_tree_row_reference_new (model, next_path);
}
}
}
modest_window_disable_dimming (MODEST_WINDOW(win));
/* Remove each header. If it's a view window header_view == NULL */
-/* do_headers_action (win, headers_action_delete, header_view); */
modest_do_messages_delete (header_list, win);
-
/* Enable window dimming management */
- gtk_tree_selection_unselect_all (sel);
+ if (sel != NULL) {
+ gtk_tree_selection_unselect_all (sel);
+ }
modest_window_enable_dimming (MODEST_WINDOW(win));
-
- /* FIXME: May be folder_monitor will also refilter treemode on EXPUNGE changes ? */
- /* refresh the header view (removing marked-as-deleted) */
-/* modest_header_view_refilter (MODEST_HEADER_VIEW(header_view)); */
if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
modest_ui_actions_refresh_message_window_after_delete (MODEST_MSG_VIEW_WINDOW (win));
/* Move cursor to next row */
main_window = win;
- /* Select next row */
- if (gtk_tree_row_reference_valid (row_reference)) {
- next_path = gtk_tree_row_reference_get_path (row_reference);
+ /* 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);
- gtk_tree_path_free (next_path);
}
- if (row_reference != NULL)
- gtk_tree_row_reference_free (row_reference);
+ else if (gtk_tree_row_reference_valid (prev_row_reference)) {
+ gtk_tree_selection_select_path (sel, prev_path);
+ }
+
+ /* Free */
+ if (next_row_reference != NULL)
+ gtk_tree_row_reference_free (next_row_reference);
+ if (next_path != NULL)
+ gtk_tree_path_free (next_path);
+ if (prev_row_reference != NULL)
+ gtk_tree_row_reference_free (prev_row_reference);
+ if (prev_path != NULL)
+ gtk_tree_path_free (prev_path);
}
if (err != NULL) {
if (MODEST_IS_MAIN_WINDOW (win)) {
GtkWidget *w;
w = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
if (gtk_widget_is_focus (w)) {
modest_ui_actions_on_delete_folder (action, MODEST_MAIN_WINDOW(win));
return;
void
modest_ui_actions_on_quit (GtkAction *action, ModestWindow *win)
-{
+{
+ ModestWindowMgr *mgr = NULL;
+
#ifdef MODEST_PLATFORM_MAEMO
modest_osso_save_state();
#endif /* MODEST_PLATFORM_MAEMO */
g_debug ("queue has been cleared");
+
+ /* Check if there are opened editing windows */
+ mgr = modest_runtime_get_window_mgr ();
+ modest_window_mgr_close_all_windows (mgr);
+
/* note: when modest-tny-account-store is finalized,
it will automatically set all network connections
to offline */
- gtk_main_quit ();
+/* gtk_main_quit (); */
}
void
GtkDialog *account_win = GTK_DIALOG(modest_account_view_window_new ());
gtk_window_set_transient_for (GTK_WINDOW (account_win), GTK_WINDOW (win));
- /* Don't make this a modal window, because secondary windows will then
- * be unusable, freezing the UI: */
- /* gtk_window_set_modal (GTK_WINDOW (account_win), TRUE); */
+ /* The accounts dialog must be modal */
+ gtk_window_set_modal (GTK_WINDOW (account_win), TRUE);
modest_maemo_show_dialog_and_forget (GTK_WINDOW (win), account_win);
}
#else
GtkTreeModel *model;
header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(parent_win),
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (header_view));
sel_list = gtk_tree_selection_get_selected_rows (sel, &model);
GObject *win = modest_mail_operation_get_source (mail_op);
error = modest_mail_operation_get_error (mail_op);
- printf ("DEBUG: %s: Error: code=%d, text=%s\n", __FUNCTION__, error->code, error->message);
+/* printf ("DEBUG: %s: Error: code=%d, text=%s\n", __FUNCTION__, error->code, error->message); */
if (error->code == MODEST_MAIL_OPERATION_ERROR_MESSAGE_SIZE_LIMIT) {
* downloaded (CACHED) then returns TRUE else returns FALSE.
*/
static gint
-header_list_count_uncached_msgs (
- TnyList *header_list,
- GtkWindow *win)
+header_list_count_uncached_msgs (TnyList *header_list)
{
TnyIterator *iter;
gint uncached_messages = 0;
if (do_retrieve){
gint num_of_unc_msgs;
/* check that the messages have been previously downloaded */
- num_of_unc_msgs = header_list_count_uncached_msgs(
- header_list,
- GTK_WINDOW (win));
+ num_of_unc_msgs = header_list_count_uncached_msgs(header_list);
/* If there are any uncached message ask the user
* whether he/she wants to download them. */
if (num_of_unc_msgs)
header_view = modest_main_window_get_child_widget (
MODEST_MAIN_WINDOW(window),
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
if (!header_view)
return;
if (MODEST_IS_MAIN_WINDOW (window)) {
GtkWidget *header_view;
header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(window),
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
if (!header_view)
return;
if (MODEST_IS_MAIN_WINDOW (window)) {
GtkWidget *header_view;
header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(window),
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
if (!header_view) {
modest_platform_information_banner (NULL, NULL, _CS("ckdg_ib_nothing_to_sort"));
static void
new_messages_arrived (ModestMailOperation *self,
- gint new_messages,
+ TnyList *new_headers,
gpointer user_data)
{
ModestMainWindow *win = NULL;
g_return_if_fail (MODEST_IS_MAIN_WINDOW (user_data));
win = MODEST_MAIN_WINDOW (user_data);
+ /* Don't do anything if there are not new headers, this could
+ happen if there was any problem with the mail operation */
+ if (!new_headers)
+ return;
+
/* Set contents style of headers view */
if (modest_main_window_get_contents_style (win) == MODEST_MAIN_WINDOW_CONTENTS_STYLE_EMPTY) {
folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
}
/* Notify new messages have been downloaded */
- if (new_messages > 0)
- modest_platform_on_new_msg ();
+ if ((new_headers != NULL) && (tny_list_get_length (new_headers) > 0)) {
+ TnyIterator *iter = tny_list_create_iterator (new_headers);
+ do {
+ TnyHeader *header = NULL;
+
+ header = TNY_HEADER (tny_iterator_get_current (iter));
+ modest_platform_on_new_header_received (header);
+ g_object_unref (header);
+
+ tny_iterator_next (iter);
+ } while (!tny_iterator_is_done (iter));
+ g_object_unref (iter);
+ }
}
/*
{
gchar *acc_name = NULL;
ModestMailOperation *mail_op;
+ TnyAccount *store_account = NULL;
/* If no account name was provided then get the current account, and if
there is no current account then pick the default one: */
acc_name = g_strdup (account_name);
}
+
+ /* Ensure that we have a connection available */
+ store_account =
+ modest_tny_account_store_get_server_account (modest_runtime_get_account_store (),
+ acc_name,
+ TNY_ACCOUNT_TYPE_STORE);
+ if (!modest_platform_connect_and_wait (NULL, TNY_ACCOUNT (store_account))) {
+ g_object_unref (store_account);
+ return;
+ }
+ g_object_unref (store_account);
+
/* Set send/receive operation in progress */
modest_main_window_notify_send_receive_initied (MODEST_MAIN_WINDOW(win));
/* Get folder and header view */
folder_view =
modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
if (!folder_view)
return;
if (folder_store && TNY_IS_FOLDER (folder_store)) {
header_view =
modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
/* We do not need to set the contents style
because it hasn't changed. We also do not
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
header_view = modest_main_window_get_child_widget (main_window,
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
if (!header_view)
return;
TnyFolder *folder = modest_header_view_get_folder (header_view);
GtkWidget *folder_view =
modest_main_window_get_child_widget (main_window,
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
if (folder != NULL)
modest_folder_view_select_folder (MODEST_FOLDER_VIEW (folder_view), folder, FALSE);
gtk_widget_grab_focus (GTK_WIDGET (folder_view));
win = MODEST_MAIN_WINDOW (user_data);
header_view =
- modest_main_window_get_child_widget(win, MODEST_WIDGET_TYPE_HEADER_VIEW);
+ modest_main_window_get_child_widget(win, MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
if (header_view) {
TnyFolder *current_folder;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
header_view = modest_main_window_get_child_widget(main_window,
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
if (!header_view)
return;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
folder_view = modest_main_window_get_child_widget (main_window,
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
if (!folder_view)
return;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
folder_view = modest_main_window_get_child_widget (main_window,
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
if (!folder_view)
return;
header_view = modest_main_window_get_child_widget (main_window,
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
if (!header_view)
return;
g_return_if_fail (MODEST_IS_MAIN_WINDOW (main_window));
folder_view = modest_main_window_get_child_widget (main_window,
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
if (!folder_view)
return;
delete_folder (main_window, FALSE);
folder_view = modest_main_window_get_child_widget (main_window,
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
if (!folder_view)
return;
modest_folder_view_select_first_inbox_or_local (MODEST_FOLDER_VIEW (folder_view));
gboolean continue_download = FALSE;
gint num_of_unc_msgs;
- num_of_unc_msgs = header_list_count_uncached_msgs(
- header_list, GTK_WINDOW (window));
+ num_of_unc_msgs = header_list_count_uncached_msgs(header_list);
if (num_of_unc_msgs)
continue_download = connect_to_get_msg(
gboolean continue_download = FALSE;
gint num_of_unc_msgs;
- num_of_unc_msgs = header_list_count_uncached_msgs(
- header_list,
- GTK_WINDOW (window));
+ num_of_unc_msgs = header_list_count_uncached_msgs(header_list);
if (num_of_unc_msgs)
continue_download = connect_to_get_msg(
if (!(MODEST_IS_HEADER_VIEW (focused_widget))) {
header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (window),
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
}
/* Disable window dimming management */
/* Check which widget has the focus */
folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
if (gtk_widget_is_focus (folder_view)) {
TnyFolderStore *folder_store
= modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
} else {
header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
/* Show details of each header */
do_headers_action (win, headers_action_show_details, header_view);
}
if (MODEST_IS_MAIN_WINDOW (user_data)) {
/* Get the widgets */
folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (user_data),
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
if (gtk_widget_is_focus (folder_view))
moving_folder = TRUE;
}
* GTK_RESPONSE_OK
*
* This one is used by the next functions:
- * modest_ui_actions_xfer_messages_from_move_to
* modest_ui_actions_on_paste - commented out
* drag_and_drop_from_header_view (for d&d in modest_folder_view.c)
*/
if (MODEST_IS_MAIN_WINDOW (user_data)) {
main_window = MODEST_MAIN_WINDOW(user_data);
folder_view = modest_main_window_get_child_widget (main_window,
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
modest_folder_view_disable_next_folder_selection (MODEST_FOLDER_VIEW(folder_view));
}
g_return_if_fail (MODEST_IS_MAIN_WINDOW (win));
header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
- MODEST_WIDGET_TYPE_HEADER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
header_list = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW (header_view));
ModestWindow *win)
{
TnyList *headers = NULL;
- gint response = 0;
TnyAccount *dst_account = NULL;
const gchar *proto_str = NULL;
gboolean dst_is_pop = FALSE;
return;
}
- /* Ask for user confirmation */
- response = msgs_move_to_confirmation (GTK_WINDOW (win),
- TNY_FOLDER (dst_folder),
- TRUE,
- headers);
-
- /* Transfer messages */
- if (response == GTK_RESPONSE_OK) {
- GtkWidget *inf_note;
- inf_note = modest_platform_animation_banner (GTK_WIDGET (win), NULL,
- _CS("ckct_nw_pasting"));
- if (inf_note != NULL) {
- gtk_window_set_modal (GTK_WINDOW(inf_note), FALSE);
- gtk_widget_show (GTK_WIDGET(inf_note));
- }
+ GtkWidget *inf_note;
+ inf_note = modest_platform_animation_banner (GTK_WIDGET (win), NULL,
+ _CS("ckct_nw_pasting"));
+ if (inf_note != NULL) {
+ gtk_window_set_modal (GTK_WINDOW(inf_note), FALSE);
+ gtk_widget_show (GTK_WIDGET(inf_note));
+ }
- ModestMailOperation *mail_op =
- modest_mail_operation_new_with_error_handling (MODEST_MAIL_OPERATION_TYPE_RECEIVE,
- G_OBJECT(win),
- modest_ui_actions_move_folder_error_handler,
- NULL);
- modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
- mail_op);
+ ModestMailOperation *mail_op =
+ modest_mail_operation_new_with_error_handling (MODEST_MAIL_OPERATION_TYPE_RECEIVE,
+ G_OBJECT(win),
+ modest_ui_actions_move_folder_error_handler,
+ 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),
- TRUE,
- move_to_cb,
- inf_note);
+ modest_mail_operation_xfer_msgs (mail_op,
+ headers,
+ TNY_FOLDER (dst_folder),
+ TRUE,
+ move_to_cb,
+ inf_note);
- g_object_unref (G_OBJECT (mail_op));
- }
+ g_object_unref (G_OBJECT (mail_op));
g_object_unref (headers);
}
src_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
/* Get header view */
- header_view = MODEST_HEADER_VIEW(modest_main_window_get_child_widget (win, MODEST_WIDGET_TYPE_HEADER_VIEW));
+ header_view = MODEST_HEADER_VIEW(modest_main_window_get_child_widget (win, MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW));
/* Get folder or messages to transfer */
if (gtk_widget_is_focus (folder_view)) {
gboolean do_xfer = TRUE;
/* Ask for confirmation if the source folder is remote and we're not connected */
if (!online && modest_platform_is_network_folderstore(src_folder)) {
- guint num_headers = modest_header_view_count_selected_headers(header_view);
- if (!connect_to_get_msg(GTK_WINDOW(win), num_headers)) {
- do_xfer = FALSE;
+ TnyList *headers = modest_header_view_get_selected_headers(header_view);
+ if (!msgs_already_deleted_from_server(headers, src_folder)) {
+ guint num_headers = tny_list_get_length(headers);
+ if (!connect_to_get_msg(GTK_WINDOW(win), num_headers)) {
+ do_xfer = FALSE;
+ }
}
+ g_object_unref(headers);
}
if (do_xfer) /* Transfer messages */
modest_ui_actions_xfer_messages_from_move_to (dst_folder, MODEST_WINDOW (win));
g_object_unref (header);
/* Transfer the message if online or confirmed by the user */
- if (tny_device_is_online (modest_runtime_get_device()) ||
+ if (tny_device_is_online (modest_runtime_get_device()) || remote_folder_is_pop(src_folder) ||
(modest_platform_is_network_folderstore(src_folder) && connect_to_get_msg(GTK_WINDOW(win), 1))) {
modest_ui_actions_xfer_messages_from_move_to (dst_folder, MODEST_WINDOW (win));
}
/* Get the folder view widget if exists */
if (main_window)
folder_view = modest_main_window_get_child_widget (main_window,
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
else
folder_view = NULL;
/* Get selected folder */
folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
folder_store = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
/* Switch help_id */
}
void
+modest_ui_actions_on_format_menu_activated (GtkAction *action,
+ ModestWindow *window)
+{
+ g_return_if_fail (MODEST_IS_WINDOW (window));
+
+ /* Update dimmed */
+ modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");
+}
+
+void
modest_ui_actions_on_tools_menu_activated (GtkAction *action,
ModestWindow *window)
{
}
+void
+modest_ui_actions_on_send_queue_error_happened (TnySendQueue *self,
+ TnyHeader *header,
+ TnyMsg *msg,
+ GError *err,
+ gpointer user_data)
+{
+ const gchar* server_name = NULL;
+ TnyTransportAccount *server_account;
+ gchar *message = NULL;
+
+ /* Don't show anything if the user cancelled something */
+ if (err->code == TNY_TRANSPORT_ACCOUNT_ERROR_SEND_USER_CANCEL)
+ return;
+
+ /* Get the server name: */
+ server_account =
+ TNY_TRANSPORT_ACCOUNT (tny_camel_send_queue_get_transport_account (TNY_CAMEL_SEND_QUEUE (self)));
+ if (server_account) {
+ server_name = tny_account_get_hostname (TNY_ACCOUNT (server_account));
+
+ g_object_unref (server_account);
+ server_account = NULL;
+ }
+
+ g_return_if_fail (server_name);
+
+ /* Show the appropriate message text for the GError: */
+ switch (err->code) {
+ case TNY_TRANSPORT_ACCOUNT_ERROR_SEND_HOST_LOOKUP_FAILED:
+ message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), server_name);
+ break;
+ case TNY_TRANSPORT_ACCOUNT_ERROR_SEND_SERVICE_UNAVAILABLE:
+ message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), server_name);
+ break;
+ case TNY_TRANSPORT_ACCOUNT_ERROR_SEND_AUTHENTICATION_NOT_SUPPORTED:
+ message = g_strdup_printf (_("emev_ni_ui_smtp_authentication_fail_error"), server_name);
+ break;
+ case TNY_TRANSPORT_ACCOUNT_ERROR_SEND:
+ message = g_strdup (_("emev_ib_ui_smtp_send_error"));
+ break;
+ default:
+ g_return_if_reached ();
+ }
+
+ /* 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);
+ g_free (message);
+}
+
+void
+modest_ui_actions_on_send_queue_status_changed (ModestTnySendQueue *send_queue,
+ gchar *msg_id,
+ guint status,
+ gpointer user_data)
+{
+ ModestMainWindow *main_window = NULL;
+ ModestWindowMgr *mgr = NULL;
+ GtkWidget *folder_view = NULL, *header_view = NULL;
+ TnyFolderStore *selected_folder = NULL;
+ TnyFolderType folder_type;
+
+ mgr = modest_runtime_get_window_mgr ();
+ main_window = MODEST_MAIN_WINDOW (modest_window_mgr_get_main_window (mgr));
+
+ if (!main_window)
+ return;
+
+ /* Check if selected folder is OUTBOX */
+ folder_view = modest_main_window_get_child_widget (main_window,
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
+ header_view = modest_main_window_get_child_widget (main_window,
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
+
+ selected_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
+ if (!TNY_IS_FOLDER (selected_folder))
+ goto frees;
+
+ /* gtk_tree_view_column_queue_resize is only available in GTK+ 2.8 */
+#if GTK_CHECK_VERSION(2, 8, 0)
+ folder_type = modest_tny_folder_guess_folder_type (TNY_FOLDER (selected_folder));
+ if (folder_type == TNY_FOLDER_TYPE_OUTBOX) {
+ GtkTreeViewColumn *tree_column;
+
+ tree_column = gtk_tree_view_get_column (GTK_TREE_VIEW (header_view),
+ TNY_GTK_HEADER_LIST_MODEL_FROM_COLUMN);
+ gtk_tree_view_column_queue_resize (tree_column);
+ }
+#else
+ gtk_widget_queue_draw (header_view);
+#endif
+
+ /* Free */
+ frees:
+ if (selected_folder != NULL)
+ g_object_unref (selected_folder);
+}