static void reply_forward (ReplyForwardAction action, ModestWindow *win);
-static gchar* ask_for_folder_name (GtkWindow *parent_window, const gchar *title);
-
static void _on_send_receive_progress_changed (ModestMailOperation *mail_op,
ModestMailOperationState *state,
void
modest_ui_actions_on_quit (GtkAction *action, ModestWindow *win)
{
- #ifdef MODEST_PLATFORM_MAEMO
+#ifdef MODEST_PLATFORM_MAEMO
modest_osso_save_state();
- #endif /* MODEST_PLATFORM_MAEMO */
-
+#endif /* MODEST_PLATFORM_MAEMO */
+
+ /* FIXME: we need to cancel all actions/threads here,
+ so we really quit */
+
gtk_main_quit ();
}
void
modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win)
{
- ModestWindow *msg_win;
+ ModestWindow *msg_win = NULL;
TnyMsg *msg = NULL;
TnyFolder *folder = NULL;
gchar *account_name = NULL;
g_free (account_name);
g_free (from_str);
g_free (blank_and_signature);
+ if (msg_win)
+ g_object_unref (msg_win);
if (account)
g_object_unref (G_OBJECT(account));
if (msg)
if (win != 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_object_unref (parent_win);
g_object_unref (msg);
g_object_unref (folder);
- g_object_unref (header);
}
/*
{
TnyMsg *new_msg;
ReplyForwardHelper *rf_helper;
- ModestWindow *msg_win;
+ ModestWindow *msg_win = NULL;
ModestEditType edit_type;
- gchar *from;
+ gchar *from = NULL;
TnyAccount *account = NULL;
- ModestWindowMgr *mgr;
+ ModestWindowMgr *mgr = NULL;
gchar *signature = NULL;
g_return_if_fail (user_data != NULL);
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)
download_uncached_messages (TnyList *header_list, GtkWindow *win)
{
TnyIterator *iter;
- gboolean found, retval;
+ gboolean retval;
+ gint uncached_messages = 0;
iter = tny_list_create_iterator (header_list);
- found = FALSE;
- while (!tny_iterator_is_done (iter) && !found) {
+ while (!tny_iterator_is_done (iter)) {
TnyHeader *header;
TnyHeaderFlags flags;
/* TODO: is this the right flag?, it seems that some
headers that have been previously downloaded do not
come with it */
- found = !(flags & TNY_HEADER_FLAG_CACHED);
+ if (! (flags & TNY_HEADER_FLAG_CACHED))
+ uncached_messages ++;
g_object_unref (header);
tny_iterator_next (iter);
}
/* Ask for user permission to download the messages */
retval = TRUE;
- if (found) {
+ if (uncached_messages > 0) {
GtkResponseType response;
response =
modest_platform_run_confirmation_dialog (GTK_WINDOW (win),
- _("mcen_nc_get_multi_msg_txt"));
+ ngettext("mcen_nc_get_msg",
+ "mcen_nc_get_msgs",
+ uncached_messages));
if (response == GTK_RESPONSE_CANCEL)
retval = FALSE;
}
}
}
+static void
+new_messages_arrived (ModestMailOperation *self,
+ gint new_messages,
+ gpointer user_data)
+{
+ if (new_messages == 0)
+ return;
+
+ modest_platform_on_new_msg ();
+}
+
/*
* This function performs the send & receive required actions. The
* window is used to create the mail operation. Typically it should
internally, so the progress objects will receive the proper
progress information */
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
- modest_mail_operation_update_account (mail_op, acc_name);
+ modest_mail_operation_update_account (mail_op, acc_name, new_messages_arrived, NULL);
g_object_unref (G_OBJECT (mail_op));
/* Free */
/* If no header has been selected then exit */
if (!header)
return;
-
+
+ /* Update focus */
+ if (!gtk_widget_is_focus (GTK_WIDGET(header_view)))
+ gtk_widget_grab_focus (GTK_WIDGET(header_view));
+
/* Update Main window title */
if (gtk_widget_is_focus (GTK_WIDGET(header_view))) {
const gchar *subject = tny_header_get_subject (header);
TnyFolder *folder,
gpointer user_data)
{
-/* printf ("DEBUG: %s\n", __FUNCTION__); */
ModestMainWindow *win = NULL;
GtkWidget *header_view;
} else {
/* Update the active account */
modest_window_set_active_account (MODEST_WINDOW (main_window), NULL);
- /* Do not show folder */
- modest_widget_memory_save (conf, G_OBJECT (header_view), MODEST_CONF_HEADER_VIEW_KEY);
+ /* Save only if we're seeing headers */
+ if (modest_main_window_get_contents_style (main_window) ==
+ MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS)
+ modest_widget_memory_save (conf, G_OBJECT (header_view),
+ MODEST_CONF_HEADER_VIEW_KEY);
modest_header_view_clear (MODEST_HEADER_VIEW(header_view));
}
}
MsgData *data;
gchar *account_name, *from;
ModestAccountMgr *account_mgr;
+ gchar *info_text = NULL;
g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW(edit_window));
modest_msg_edit_window_free_msg_data (edit_window, data);
- /* Save settings and close the window */
- gtk_widget_destroy (GTK_WIDGET (edit_window));
+ info_text = g_strdup_printf (_("mail_va_saved_to_drafts"), _("mcen_me_folder_drafts"));
+ modest_platform_information_banner (NULL, NULL, info_text);
+ g_free (info_text);
}
/* For instance, when clicking the Send toolbar button when editing a message: */
}
}
+ modest_platform_information_banner (NULL, NULL, _("mcen_ib_outbox_waiting_to_be_sent"));
+
/* Create the mail operation */
ModestMailOperation *mail_operation = modest_mail_operation_new (MODEST_MAIL_OPERATION_TYPE_SEND, G_OBJECT(edit_window));
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_operation);
g_object_unref (G_OBJECT (mail_operation));
modest_msg_edit_window_free_msg_data (edit_window, data);
+ modest_msg_edit_window_set_sent (edit_window, TRUE);
/* Save settings and close the window: */
gtk_widget_destroy (GTK_WIDGET (edit_window));
modest_msg_edit_window_remove_attachments (window, NULL);
}
-/*
- * Shows a dialog with an entry that asks for some text. The returned
- * value must be freed by the caller. The dialog window title will be
- * set to @title.
- */
-static gchar *
-ask_for_folder_name (GtkWindow *parent_window,
- const gchar *title)
-{
- GtkWidget *dialog, *entry;
- gchar *folder_name = NULL;
-
- /* Ask for folder name */
- dialog = gtk_dialog_new_with_buttons (_("New Folder Name"),
- parent_window,
- GTK_DIALOG_MODAL,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_REJECT,
- GTK_STOCK_OK,
- GTK_RESPONSE_ACCEPT,
- NULL);
- gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox),
- gtk_label_new(title),
- FALSE, FALSE, 0);
-
- entry = gtk_entry_new_with_max_length (40);
- gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox),
- entry,
- TRUE, FALSE, 0);
-
- gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
-
- if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
- folder_name = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
-
- gtk_widget_destroy (dialog);
-
- return folder_name;
-}
-
void
modest_ui_actions_on_new_folder (GtkAction *action, ModestMainWindow *main_window)
{
if (folder && TNY_IS_FOLDER (folder)) {
gchar *folder_name;
- folder_name = ask_for_folder_name (GTK_WINDOW (main_window),
- _("Please enter a new name for the folder"));
+ gint response;
+ const gchar *current_name;
+
+ current_name = tny_folder_get_name (TNY_FOLDER (folder));
+ response = modest_platform_run_rename_folder_dialog (GTK_WINDOW (main_window), NULL,
+ current_name, &folder_name);
- if (folder_name != NULL && strlen (folder_name) > 0) {
+ if (response == GTK_RESPONSE_OK && strlen (folder_name) > 0) {
ModestMailOperation *mail_op;
mail_op = modest_mail_operation_new (MODEST_MAIL_OPERATION_TYPE_INFO, G_OBJECT(main_window));
const gboolean username_was_changed =
(strcmp (*username, initial_username) != 0);
if (username_was_changed) {
- /* To actually use a changed username,
- * we must reset the connection, according to pvanhoof.
- * This _might_ be a sensible way to do that: */
- TnyDevice *device = modest_runtime_get_device();
- tny_device_force_offline (device);
- tny_device_force_online (device);
+ g_warning ("%s: tinymail does not yet support changing the "
+ "username in the get_password() callback.\n", __FUNCTION__);
}
}
} else if (MODEST_IS_FOLDER_VIEW (focused_widget)) {
modest_folder_view_copy_selection (MODEST_FOLDER_VIEW (focused_widget));
}
+
+ /* Show information banner */
+ modest_platform_information_banner (NULL, NULL, _CS("ecoc_ib_edwin_copied"));
+
}
void
folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
MODEST_WIDGET_TYPE_FOLDER_VIEW);
if (gtk_widget_is_focus (folder_view)) {
- TnyFolder *folder;
-
- folder = (TnyFolder *) modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
-
+ TnyFolderStore *folder_store
+ = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
+ if (!folder_store) {
+ g_warning ("%s: No item was selected.\n", __FUNCTION__);
+ return;
+ }
/* Show only when it's a folder */
- if (!folder || !TNY_IS_FOLDER (folder))
- return;
+ /* This function should not be called for account items,
+ * because we dim the menu item for them. */
+ if (TNY_IS_FOLDER (folder_store)) {
+ show_folder_details (TNY_FOLDER (folder_store), GTK_WINDOW (win));
+ }
- show_folder_details (folder, GTK_WINDOW (win));
- g_object_unref (folder);
+ g_object_unref (folder_store);
} else {
header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
g_object_unref (header);
g_object_unref (iter);
+ /* if no src_folder, message may be an attahcment */
+ if (src_folder == NULL)
+ return GTK_RESPONSE_CANCEL;
+
/* If the source is a remote folder */
if (!modest_tny_folder_is_local_folder (src_folder)) {
const gchar *message;
g_object_unref (headers);
}
}
- g_object_unref (folder_store);
end:
+ if (folder_store != NULL)
+ g_object_unref (folder_store);
gtk_widget_destroy (dialog);
}
/* Create header list */
header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (win));
+
headers = tny_simple_list_new ();
tny_list_prepend (headers, G_OBJECT (header));
g_object_unref (header);
ModestWindow *window)
{
if (MODEST_IS_MSG_VIEW_WINDOW (window)) {
- modest_msg_view_window_remove_attachments (MODEST_MSG_VIEW_WINDOW (window), NULL);
+ modest_msg_view_window_remove_attachments (MODEST_MSG_VIEW_WINDOW (window));
} else {
/* not supported window for this action */
g_return_if_reached ();
dialog = modest_platform_get_global_settings_dialog ();
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (win));
- gtk_widget_show (dialog);
+ gtk_widget_show_all (dialog);
gtk_dialog_run (GTK_DIALOG (dialog));