} ReplyForwardHelper;
typedef struct _MoveToHelper {
- ModestMailOperation *mail_op;
- TnyFolder *folder;
+ GtkTreeRowReference *reference;
+ GtkWidget *banner;
} MoveToHelper;
typedef struct _PasteAsAttachmentHelper {
* returns: TRUE if an account was created. FALSE if the user cancelled.
*/
gboolean
-modest_run_account_setup_wizard (ModestWindow *win)
+modest_ui_actions_run_account_setup_wizard (ModestWindow *win)
{
- gboolean result = FALSE;
- GtkDialog *wizard, *dialog;
+ gboolean result = FALSE;
+ GtkWindow *dialog, *wizard;
+ gint dialog_response;
/* Show the easy-setup wizard: */
- dialog = modest_window_mgr_get_modal_dialog (modest_runtime_get_window_mgr());
+ dialog = modest_window_mgr_get_modal (modest_runtime_get_window_mgr());
if (dialog && MODEST_IS_EASYSETUP_WIZARD_DIALOG(dialog)) {
/* old wizard is active already;
*/
}
- /* there is no such wizard yet */
-
- wizard = GTK_DIALOG(modest_easysetup_wizard_dialog_new ());
- if (!wizard) {
- g_printerr ("modest: failed to create easysetup wizard\n");
- return FALSE;
- }
-
- modest_window_mgr_set_modal_dialog
- (modest_runtime_get_window_mgr(), GTK_DIALOG(wizard));
-
-
- /* there is no such wizard yet */
- wizard = GTK_DIALOG(modest_easysetup_wizard_dialog_new ());
- modest_window_mgr_set_modal_dialog (modest_runtime_get_window_mgr(),
- GTK_DIALOG(wizard));
-
- /* make it non-modal; if though we register it as a modal dialog above
- * apparently, making it modal *at all* gives hangs -- FIXME: check this*/
- gtk_window_set_modal (GTK_WINDOW(dialog), FALSE);
+ /* there is no such wizard yet */
+ wizard = GTK_WINDOW (modest_easysetup_wizard_dialog_new ());
+ 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
/* make sure the mainwindow is visible */
gtk_widget_show_all (GTK_WIDGET(win));
gtk_window_present (GTK_WINDOW(win));
-
- gtk_window_set_transient_for (GTK_WINDOW (wizard), GTK_WINDOW (win));
+ dialog_response = gtk_dialog_run (GTK_DIALOG (wizard));
+ gtk_widget_destroy (GTK_WIDGET (wizard));
+ if (gtk_events_pending ())
+ gtk_main_iteration ();
- /* Don't make this a modal window, because secondary windows will then
- * be unusable, freezing the UI: */
- /* gtk_window_set_modal (GTK_WINDOW (wizard), TRUE); */
-
- gint dialog_response = gtk_dialog_run (GTK_DIALOG (wizard));
- if (dialog_response == GTK_RESPONSE_CANCEL)
+ if (dialog_response == GTK_RESPONSE_CANCEL) {
result = FALSE;
- else {
+ } else {
/* Check whether an account was created: */
result = modest_account_mgr_has_accounts(modest_runtime_get_account_mgr(), TRUE);
}
- gtk_widget_destroy (GTK_WIDGET (wizard));
-
- /* clear it from the window mgr */
- modest_window_mgr_set_modal_dialog
- (modest_runtime_get_window_mgr(), NULL);
-
return result;
}
return NULL;
}
+static GtkTreeRowReference *
+get_next_after_selected_headers (ModestHeaderView *header_view)
+{
+ GtkTreeSelection *sel;
+ GList *selected_rows, *node;
+ GtkTreePath *path;
+ GtkTreeRowReference *result;
+ GtkTreeModel *model;
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (header_view));
+ sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (header_view));
+ selected_rows = gtk_tree_selection_get_selected_rows (sel, NULL);
+
+ if (selected_rows == NULL)
+ return NULL;
+
+ node = g_list_last (selected_rows);
+ path = gtk_tree_path_copy ((GtkTreePath *) node->data);
+ gtk_tree_path_next (path);
+
+ result = gtk_tree_row_reference_new (model, path);
+
+ gtk_tree_path_free (path);
+ g_list_foreach (selected_rows, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (selected_rows);
+
+ return result;
+}
+
static void
headers_action_mark_as_read (TnyHeader *header,
ModestWindow *win,
}
void
-modest_ui_actions_on_accounts (GtkAction *action, ModestWindow *win)
+modest_ui_actions_on_accounts (GtkAction *action,
+ ModestWindow *win)
{
/* This is currently only implemented for Maemo */
#ifdef MODEST_PLATFORM_MAEMO /* Defined in config.h */
- if (!modest_account_mgr_has_accounts(modest_runtime_get_account_mgr(), TRUE)) {
- modest_run_account_setup_wizard (win);
+ if (!modest_account_mgr_has_accounts (modest_runtime_get_account_mgr(), TRUE)) {
+ modest_ui_actions_run_account_setup_wizard (win);
return;
- } else {
- /* Show the list of accounts: */
- GtkDialog *account_win = GTK_DIALOG(modest_account_view_window_new ());
- gtk_window_set_transient_for (GTK_WINDOW (account_win), GTK_WINDOW (win));
+ } else {
+ /* Show the list of accounts */
+ GtkWindow *account_win = GTK_WINDOW (modest_account_view_window_new ());
+ gtk_window_set_transient_for (account_win, GTK_WINDOW (win));
- /* 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);
+ /* The accounts dialog must be modal */
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), account_win);
+ modest_maemo_show_dialog_and_forget (GTK_WINDOW (win), GTK_DIALOG (account_win));
}
#else
GtkWidget *dialog, *label;
/* if there are no accounts yet, just show the wizard */
if (!modest_account_mgr_has_accounts (modest_runtime_get_account_mgr(), TRUE)) {
- const gboolean created = modest_run_account_setup_wizard (win);
- if (!created)
- return;
+ if (!modest_ui_actions_run_account_setup_wizard (win))
+ return;
}
account_name = g_strdup (modest_window_get_active_account (win));
(folder_type == TNY_FOLDER_TYPE_OUTBOX)) {
/* we cannot edit without a valid account... */
if (!modest_account_mgr_has_accounts(modest_runtime_get_account_mgr(), TRUE)) {
- const gboolean created = modest_run_account_setup_wizard(parent_win);
- if (!created)
+ if (!modest_ui_actions_run_account_setup_wizard(parent_win))
goto cleanup;
}
win = modest_msg_edit_window_new (msg, account, TRUE);
TnyAccount *account = NULL;
ModestWindowMgr *mgr = NULL;
gchar *signature = NULL;
+ gboolean use_signature;
/* If there was any error. The mail operation could be NULL,
this means that we already have the message downloaded and
from = modest_account_mgr_get_from_string (modest_runtime_get_account_mgr(),
rf_helper->account_name);
- if (modest_account_mgr_get_bool (modest_runtime_get_account_mgr(),
- rf_helper->account_name,
- MODEST_ACCOUNT_USE_SIGNATURE, FALSE)) {
- signature = modest_account_mgr_get_string (modest_runtime_get_account_mgr (),
- rf_helper->account_name,
- MODEST_ACCOUNT_SIGNATURE, FALSE);
- }
+ signature = modest_account_mgr_get_signature (modest_runtime_get_account_mgr(),
+ rf_helper->account_name,
+ &use_signature);
/* Create reply mail */
switch (rf_helper->action) {
/* we need an account when editing */
if (!modest_account_mgr_has_accounts(modest_runtime_get_account_mgr(), TRUE)) {
- const gboolean created = modest_run_account_setup_wizard (win);
- if (!created)
+ if (!modest_ui_actions_run_account_setup_wizard (win))
return;
}
if (!header)
return;
+ if (modest_header_view_count_selected_headers (header_view) > 1) {
+ hildon_banner_show_information (NULL, NULL, _("mcen_ib_select_one_message"));
+ return;
+ }
+
/* headers = tny_simple_list_new (); */
/* tny_list_prepend (headers, G_OBJECT (header)); */
data->plain_body,
data->html_body,
data->attachments,
+ data->images,
data->priority_flags);
/* Frees */
g_free (from);
info_text = g_strdup_printf (_("mail_va_saved_to_drafts"), _("mcen_me_folder_drafts"));
modest_platform_information_banner (NULL, NULL, info_text);
+ modest_msg_edit_window_reset_modified (edit_window);
g_free (info_text);
}
if (!account_name) {
/* Run account setup wizard */
- const gboolean created = modest_run_account_setup_wizard(MODEST_WINDOW(edit_window));
- if (!created)
+ if (!modest_ui_actions_run_account_setup_wizard (MODEST_WINDOW(edit_window)))
return;
}
account_name));
if (!transport_account) {
/* Run account setup wizard */
- const gboolean created = modest_run_account_setup_wizard(MODEST_WINDOW(edit_window));
- if (!created)
+ if (!modest_ui_actions_run_account_setup_wizard(MODEST_WINDOW(edit_window)))
return;
}
data->plain_body,
data->html_body,
data->attachments,
+ data->images,
data->priority_flags);
/* Free data: */
gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(main_window));
- gchar *server_name = modest_server_account_get_hostname (
+ gchar *server_name = modest_account_mgr_get_server_account_hostname (
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);
server_name = NULL;
/* username: */
- gchar *initial_username = modest_server_account_get_username (
+ gchar *initial_username = modest_account_mgr_get_server_account_username (
modest_runtime_get_account_mgr(), server_account_name);
GtkWidget *entry_username = gtk_entry_new ();
/* Dim this if a connection has ever succeeded with this username,
* as per the UI spec: */
const gboolean username_known =
- modest_server_account_get_username_has_succeeded(
+ modest_account_mgr_get_server_account_username_has_succeeded(
modest_runtime_get_account_mgr(), server_account_name);
gtk_widget_set_sensitive (entry_username, !username_known);
gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), entry_password,
TRUE, FALSE, 0);
#endif /* MODEST_PLATFORM_MAEMO */
+
+ if (initial_username != NULL)
+ gtk_widget_grab_focus (GTK_WIDGET (entry_password));
/* This is not in the Maemo UI spec:
remember_pass_check = gtk_check_button_new_with_label (_("Remember password"));
if (username) {
*username = g_strdup (gtk_entry_get_text (GTK_ENTRY(entry_username)));
- modest_server_account_set_username (
+ modest_account_mgr_set_server_account_username (
modest_runtime_get_account_mgr(), server_account_name,
*username);
static void
move_to_cb (ModestMailOperation *mail_op, gpointer user_data)
{
+ MoveToHelper *helper = (MoveToHelper *) user_data;
+
/* Note that the operation could have failed, in that case do
nothing */
if (modest_mail_operation_get_status (mail_op) ==
if (!modest_msg_view_window_select_previous_message (self))
/* No more messages to view, so close this window */
modest_ui_actions_on_close_window (NULL, MODEST_WINDOW(self));
+ } else if (MODEST_IS_MAIN_WINDOW (object) && helper->reference != NULL) {
+ GtkWidget *header_view;
+ GtkTreePath *path;
+ GtkTreeSelection *sel;
+
+ header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(object),
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
+ sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (header_view));
+ path = gtk_tree_row_reference_get_path (helper->reference);
+ gtk_tree_selection_select_path (sel, path);
+ gtk_tree_path_free (path);
}
g_object_unref (object);
}
/* Close the "Pasting" information banner */
- gtk_widget_destroy (GTK_WIDGET(user_data));
+ gtk_widget_destroy (GTK_WIDGET(helper->banner));
+ if (helper->reference != NULL)
+ gtk_tree_row_reference_free (helper->reference);
+ g_free (helper);
}
void
return;
}
- 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));
+ MoveToHelper *helper = g_new0 (MoveToHelper, 1);
+ helper->banner = modest_platform_animation_banner (GTK_WIDGET (win), NULL,
+ _CS("ckct_nw_pasting"));
+ if (helper->banner != NULL) {
+ gtk_window_set_modal (GTK_WINDOW(helper->banner), FALSE);
+ gtk_widget_show (GTK_WIDGET(helper->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));
}
ModestMailOperation *mail_op =
TNY_FOLDER (dst_folder),
TRUE,
move_to_cb,
- inf_note);
+ helper);
g_object_unref (G_OBJECT (mail_op));
g_object_unref (headers);
}
if (do_xfer) {
- 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));
+ MoveToHelper *helper = g_new0 (MoveToHelper, 1);
+ helper->banner = modest_platform_animation_banner (GTK_WIDGET (win), NULL,
+ _CS("ckct_nw_pasting"));
+ if (helper->banner != NULL) {
+ gtk_window_set_modal (GTK_WINDOW(helper->banner), FALSE);
+ gtk_widget_show (GTK_WIDGET(helper->banner));
}
/* Clean folder on header view before moving it */
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view));
dst_folder,
TRUE,
move_to_cb,
- inf_note);
+ helper);
/* Unref mail operation */
g_object_unref (G_OBJECT (mail_op));
}