modest_window_mgr_set_modal (modest_runtime_get_window_mgr(), wizard);
/* always present a main window in the background
- * we do it here, so we cannot end up with to wizards (as this
+ * we do it here, so we cannot end up with two wizards (as this
* function might be called in modest_window_mgr_get_main_window as well */
if (!win)
- win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr());
-
+ win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr(),
+ TRUE); /* create if not existent */
+
/* make sure the mainwindow is visible */
gtk_widget_show_all (GTK_WIDGET(win));
gtk_window_present (GTK_WINDOW(win));
flags = tny_header_get_flags (header);
if (flags & TNY_HEADER_FLAG_SEEN) return;
- tny_header_set_flags (header, TNY_HEADER_FLAG_SEEN);
+ tny_header_set_flag (header, TNY_HEADER_FLAG_SEEN);
}
static void
flags = tny_header_get_flags (header);
if (flags & TNY_HEADER_FLAG_SEEN) {
- tny_header_unset_flags (header, TNY_HEADER_FLAG_SEEN);
+ tny_header_unset_flag (header, TNY_HEADER_FLAG_SEEN);
}
}
* otherwise complicated, and it's best to change it in one place
* when we change it.
*/
-void modest_do_message_delete (TnyHeader *header, ModestWindow *win)
-{
- ModestMailOperation *mail_op = NULL;
- mail_op = modest_mail_operation_new (win ? G_OBJECT(win) : NULL);
- modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
- mail_op);
-
- /* Always delete. TODO: Move to trash still not supported */
- modest_mail_operation_remove_msg (mail_op, header, FALSE);
- g_object_unref (G_OBJECT (mail_op));
-}
-
-/** A convenience method, because deleting a message is
- * otherwise complicated, and it's best to change it in one place
- * when we change it.
- */
void modest_do_messages_delete (TnyList *headers, ModestWindow *win)
{
ModestMailOperation *mail_op = NULL;
}
}
+
void
modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win)
{
GtkTreeRowReference *prev_row_reference = NULL;
GtkTreePath *next_path = NULL;
GtkTreePath *prev_path = NULL;
- GError *err = NULL;
/* Find last selected row */
if (MODEST_IS_MAIN_WINDOW (win)) {
/* Get main window */
mgr = modest_runtime_get_window_mgr ();
- main_window = modest_window_mgr_get_main_window (mgr);
- }
- else {
+ main_window = modest_window_mgr_get_main_window (mgr, FALSE); /* don't create */
+ } else {
/* Move cursor to next row */
main_window = win;
if (prev_path != NULL)
gtk_tree_path_free (prev_path);
}
-
- if (err != NULL) {
- printf ("DEBUG: %s: Error: code=%d, text=%s\n", __FUNCTION__, err->code, err->message);
- g_error_free(err);
- }
/* Update toolbar dimming state */
modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (main_window));
TnyFolderType folder_type = TNY_FOLDER_TYPE_UNKNOWN;
gchar *account = NULL;
TnyFolder *folder;
+ gboolean open_in_editor = FALSE;
/* Do nothing if there was any problem with the mail
operation. The error will be shown by the error_handler of
/* Gets folder type (OUTBOX headers will be opened in edit window */
if (modest_tny_folder_is_local_folder (folder)) {
folder_type = modest_tny_folder_get_local_or_mmc_folder_type (folder);
+ if (folder_type == TNY_FOLDER_TYPE_INVALID)
+ g_warning ("%s: BUG: TNY_FOLDER_TYPE_INVALID", __FUNCTION__);
+ }
+
+
+ if (folder_type == TNY_FOLDER_TYPE_OUTBOX) {
+ TnyTransportAccount *traccount = NULL;
+ ModestTnyAccountStore *accstore = modest_runtime_get_account_store();
+ traccount = modest_tny_account_store_get_transport_account_from_outbox_header(accstore, header);
+ if (traccount) {
+ ModestTnySendQueue *send_queue = NULL;
+ ModestTnySendQueueStatus status;
+ char *msg_id;
+ account = g_strdup(modest_tny_account_get_parent_modest_account_name_for_server_account(
+ TNY_ACCOUNT(traccount)));
+ send_queue = modest_runtime_get_send_queue(traccount);
+ msg_id = modest_tny_send_queue_get_msg_id (header);
+ status = modest_tny_send_queue_get_msg_status(send_queue, msg_id);
+ /* Only open messages in outbox with the editor if they are in Failed state */
+ if (status == MODEST_TNY_SEND_QUEUE_FAILED) {
+ open_in_editor = TRUE;
+ }
+ g_free(msg_id);
+ g_object_unref(traccount);
+ } else {
+ g_warning("Cannot get transport account for message in outbox!!");
+ }
+ } else if (folder_type == TNY_FOLDER_TYPE_DRAFTS) {
+ open_in_editor = TRUE; /* Open in editor if the message is in the Drafts folder */
}
/* Get account */
if (!account)
account = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr());
- /* If the header is in the drafts folder then open the editor,
- else the message view window */
- if (folder_type == TNY_FOLDER_TYPE_DRAFTS) {
+ if (open_in_editor) {
ModestAccountMgr *mgr = modest_runtime_get_account_mgr ();
const gchar *from_header = NULL;
mgr = modest_runtime_get_window_mgr ();
modest_window_mgr_register_window (mgr, win);
g_object_unref (win);
- gtk_window_set_transient_for (GTK_WINDOW (win), GTK_WINDOW (parent_win));
gtk_widget_show_all (GTK_WIDGET(win));
}
g_free (suggested_name);
suggested_name = NULL;
- if (result == GTK_RESPONSE_REJECT) {
- finished = TRUE;
- } else {
+ if (result == GTK_RESPONSE_ACCEPT) {
ModestMailOperation *mail_op;
TnyFolder *new_folder = NULL;
finished = TRUE;
}
g_object_unref (mail_op);
+ } else {
+ finished = TRUE;
}
suggested_name = folder_name;
message = _CS("ckdg_ib_folder_already_exists");
break;
default:
- g_return_if_reached ();
+ g_warning ("%s: BUG: unexpected error:[%d]: %s", __FUNCTION__,
+ error->code, error->message);
+ return;
}
modest_platform_information_banner (GTK_WIDGET (window), NULL, message);
ModestMainWindow *main_window)
{
g_return_if_fail(server_account_name);
- /* printf("DEBUG: %s: server_account_name=%s\n", __FUNCTION__, server_account_name); */
/* Initalize output parameters: */
if (cancel)
modest_runtime_get_account_mgr(), server_account_name);
if (!server_name) {/* This happened once, though I don't know why. murrayc. */
g_warning("%s: Could not get server name for server account '%s'", __FUNCTION__, server_account_name);
- *cancel = TRUE;
+ if (cancel)
+ *cancel = TRUE;
return;
}
if (MODEST_IS_FOLDER_VIEW (folder_view)) {
const gchar *visible_id = NULL;
+ modest_folder_view_set_style (MODEST_FOLDER_VIEW (*tree_view),
+ MODEST_FOLDER_VIEW_STYLE_SHOW_ALL);
modest_folder_view_copy_model (MODEST_FOLDER_VIEW(folder_view),
MODEST_FOLDER_VIEW(*tree_view));
ModestAccountMgr *mgr = NULL;
ModestAccountData *acc_data = NULL;
+ modest_folder_view_set_style (MODEST_FOLDER_VIEW (*tree_view),
+ MODEST_FOLDER_VIEW_STYLE_SHOW_ALL);
modest_folder_view_update_model (MODEST_FOLDER_VIEW (*tree_view),
TNY_ACCOUNT_STORE (modest_runtime_get_account_store ()));
}
/* Disable next automatic folder selection */
- main_window = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr ());
+ main_window = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (),
+ FALSE); /* don't create */
+ if (!main_window)
+ g_warning ("%s: BUG: no main window", __FUNCTION__);
+
folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (main_window),
MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
modest_folder_view_disable_next_folder_selection (MODEST_FOLDER_VIEW(folder_view));
MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
header_list = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW (header_view));
-
+ if (!header_list) {
+ g_warning ("%s: no header selected", __FUNCTION__);
+ return;
+ }
+
if (tny_list_get_length (header_list) == 1) {
iter = tny_list_create_iterator (header_list);
header = TNY_HEADER (tny_iterator_get_current (iter));
/* Get selected headers */
headers = get_selected_headers (MODEST_WINDOW (win));
+ if (!headers) {
+ g_warning ("%s: no headers selected", __FUNCTION__);
+ return;
+ }
+
if (dst_is_pop) {
modest_platform_information_banner (GTK_WIDGET (win),
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view));
gtk_tree_selection_unselect_all (sel);
+ /* Let gtk events run. We need that the folder
+ view frees its reference to the source
+ folder *before* issuing the mail operation
+ so we need the signal handler of selection
+ changed to happen before the mail
+ operation */
+ while (gtk_events_pending ())
+ gtk_main_iteration ();
+
mail_op =
modest_mail_operation_new_with_error_handling (G_OBJECT(win),
modest_ui_actions_move_folder_error_handler,
main_window = MODEST_MAIN_WINDOW (win);
else
main_window =
- MODEST_MAIN_WINDOW (modest_window_mgr_get_main_window (modest_runtime_get_window_mgr ()));
+ MODEST_MAIN_WINDOW (modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (),
+ FALSE)); /* don't create */
/* Get the folder view widget if exists */
if (main_window)
void
modest_ui_actions_on_help (GtkAction *action,
- ModestWindow *win)
+ GtkWindow *win)
{
- const gchar *help_id = NULL;
-
- if (MODEST_IS_MAIN_WINDOW (win)) {
- GtkWidget *folder_view;
- TnyFolderStore *folder_store;
-
- /* Get selected folder */
- folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
- MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
- folder_store = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
+ const gchar *help_id;
- /* Switch help_id */
- if (TNY_IS_FOLDER (folder_store)) {
- switch (modest_tny_folder_guess_folder_type (TNY_FOLDER (folder_store))) {
- case TNY_FOLDER_TYPE_NORMAL:
- help_id = "applications_email_managefolders";
- break;
- case TNY_FOLDER_TYPE_INBOX:
- help_id = "applications_email_inbox";
- break;
- case TNY_FOLDER_TYPE_OUTBOX:
- help_id = "applications_email_outbox";
- break;
- case TNY_FOLDER_TYPE_SENT:
- help_id = "applications_email_sent";
- break;
- case TNY_FOLDER_TYPE_DRAFTS:
- help_id = "applications_email_drafts";
- break;
- case TNY_FOLDER_TYPE_ARCHIVE:
- help_id = "applications_email_managefolders";
- break;
- default:
- help_id = "applications_email_managefolders";
- }
- } else {
- help_id = "applications_email_mainview";
- }
- g_object_unref (folder_store);
- } else if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
- help_id = "applications_email_viewer";
- } else if (MODEST_IS_MSG_EDIT_WINDOW (win))
- help_id = "applications_email_editor";
-
- modest_platform_show_help (GTK_WINDOW (win), help_id);
+ g_return_if_fail (action);
+ g_return_if_fail (win && GTK_IS_WINDOW(win));
+
+ help_id = modest_window_mgr_get_help_id (modest_runtime_get_window_mgr(), win);
+
+ if (help_id)
+ modest_platform_show_help (GTK_WINDOW (win), help_id);
+ else
+ g_warning ("%s: no help for window %p", __FUNCTION__, win);
}
void
TnyFolderType folder_type;
mgr = modest_runtime_get_window_mgr ();
- main_window = MODEST_MAIN_WINDOW (modest_window_mgr_get_main_window (mgr));
-
+ main_window = MODEST_MAIN_WINDOW (modest_window_mgr_get_main_window (mgr,
+ FALSE));/* don't create */
if (!main_window)
return;