#include <modest-address-book.h>
#include "modest-error.h"
#include "modest-ui-actions.h"
-#include "modest-protocol-info.h"
#include "modest-tny-platform-factory.h"
#include "modest-platform.h"
#include "modest-debug.h"
#ifdef MODEST_PLATFORM_MAEMO
#include "maemo/modest-osso-state-saving.h"
+#endif /* MODEST_PLATFORM_MAEMO */
+#ifndef MODEST_TOOLKIT_GTK
#include "maemo/modest-hildon-includes.h"
#include "maemo/modest-connection-specific-smtp-window.h"
-#endif /* MODEST_PLATFORM_MAEMO */
+#endif /* !MODEST_TOOLKIT_GTK */
#include <modest-utils.h>
#include "widgets/modest-ui-constants.h"
gint num_of_uncached_msgs,
TnyAccount *account);
-static gboolean remote_folder_is_pop (TnyFolderStore *folder);
+static gboolean remote_folder_has_leave_on_server (TnyFolderStore *folder);
static void do_create_folder (GtkWindow *window,
TnyFolderStore *parent_folder,
* This function checks whether a TnyFolderStore is a pop account
*/
static gboolean
-remote_folder_is_pop (TnyFolderStore *folder)
+remote_folder_has_leave_on_server (TnyFolderStore *folder)
{
- const gchar *proto = NULL;
- TnyAccount *account = NULL;
+ TnyAccount *account;
+ gboolean result;
g_return_val_if_fail (TNY_IS_FOLDER_STORE (folder), FALSE);
account = get_account_from_folder_store (folder);
- proto = tny_account_get_proto (account);
+ result = (modest_protocol_registry_protocol_type_has_leave_on_server (modest_runtime_get_protocol_registry (),
+ modest_tny_account_get_protocol_type (account)));
g_object_unref (account);
- return (modest_protocol_info_get_transport_store_protocol (proto) == MODEST_PROTOCOL_STORE_POP);
+ return result;
}
/* FIXME: this should be merged with the similar code in modest-account-view-window */
/* 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);
* because it requires an API (libconic) to detect different connection
* possiblities.
*/
-#ifdef MODEST_PLATFORM_MAEMO /* Defined in config.h */
+#ifndef MODEST_TOOLKIT_GTK /* Defined in config.h */
/* Create the window if necessary: */
GtkWidget *specific_window = GTK_WIDGET (modest_connection_specific_smtp_window_new ());
modest_window_mgr_set_modal (modest_runtime_get_window_mgr (),
GTK_WINDOW (specific_window));
gtk_widget_show (specific_window);
-#endif /* MODEST_PLATFORM_MAEMO */
+#endif /* !MODEST_TOOLKIT_GTK */
}
void
signature = modest_account_mgr_get_signature (mgr, account_name, &use_signature);
if (body_str != NULL) {
- body = use_signature ? g_strconcat(body_str, "\n", signature, NULL) : g_strdup(body_str);
+ body = use_signature ? g_strconcat(body_str, "\n--\n", signature, NULL) : g_strdup(body_str);
} else {
- body = use_signature ? g_strconcat("\n", signature, NULL) : g_strdup("");
+ body = use_signature ? g_strconcat("\n--\n", signature, NULL) : g_strdup("");
}
msg = modest_tny_msg_new (to_str, from_str, cc_str, bcc_str, subject_str, body, NULL, NULL, NULL);
total_size = 0;
allowed_size = MODEST_MAX_ATTACHMENT_SIZE;
msg_win = modest_msg_edit_window_new (msg, account_name, FALSE);
+
+ modest_window_mgr_register_window (modest_runtime_get_window_mgr(), msg_win);
+ modest_msg_edit_window_set_modified (MODEST_MSG_EDIT_WINDOW (msg_win), set_as_modified);
+ gtk_widget_show_all (GTK_WIDGET (msg_win));
+
while (attachments) {
total_size +=
- modest_msg_edit_window_attach_file_one(
- (ModestMsgEditWindow *)msg_win,
- attachments->data, allowed_size);
+ modest_msg_edit_window_attach_file_one((ModestMsgEditWindow *)msg_win,
+ attachments->data, allowed_size);
if (total_size > allowed_size) {
g_warning ("%s: total size: %u",
attachments = g_slist_next(attachments);
}
- modest_window_mgr_register_window (modest_runtime_get_window_mgr(), msg_win);
- modest_msg_edit_window_set_modified (MODEST_MSG_EDIT_WINDOW (msg_win), set_as_modified);
-
- gtk_widget_show_all (GTK_WIDGET (msg_win));
cleanup:
g_free (from_str);
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));
}
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) {
gpointer user_data)
{
ModestMailOperation *mail_op = NULL;
- const gchar *proto_name;
gchar *error_msg;
- ModestTransportStoreProtocol proto;
+ ModestProtocolType proto;
TnyList *not_opened_headers;
TnyConnectionStatus status;
gboolean show_open_draft = FALSE;
}
/* Get the error message depending on the protocol */
- proto_name = tny_account_get_proto (account);
- if (proto_name != NULL) {
- proto = modest_protocol_info_get_transport_store_protocol (proto_name);
- } else {
- proto = MODEST_PROTOCOL_STORE_MAILDIR;
+ proto = modest_tny_account_get_protocol_type (account);
+ if (proto == MODEST_PROTOCOL_REGISTRY_TYPE_INVALID) {
+ proto = MODEST_PROTOCOLS_STORE_MAILDIR;
}
/* Create the error messages */
if (tny_list_get_length (not_opened_headers) == 1) {
- if (proto == MODEST_PROTOCOL_STORE_POP) {
- error_msg = g_strdup (_("emev_ni_ui_pop3_msg_recv_error"));
- } else if (proto == MODEST_PROTOCOL_STORE_IMAP) {
- TnyIterator *iter = tny_list_create_iterator (not_opened_headers);
- TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter));
- gchar *subject = tny_header_dup_subject (header);
- error_msg = g_strdup_printf (_("emev_ni_ui_imap_message_not_available_in_server"),
- subject);
- g_free (subject);
- g_object_unref (header);
- g_object_unref (iter);
- } else {
+ ModestProtocol *protocol;
+ ModestProtocolRegistry *protocol_registry;
+ TnyIterator *iter;
+ TnyHeader *header;
+ gchar *subject;
+
+ protocol_registry = modest_runtime_get_protocol_registry ();
+ iter = tny_list_create_iterator (not_opened_headers);
+ header = TNY_HEADER (tny_iterator_get_current (iter));
+ subject = tny_header_dup_subject (header);
+
+ protocol = modest_protocol_registry_get_protocol_by_type (protocol_registry, proto);
+ error_msg = modest_protocol_get_translation (protocol, MODEST_PROTOCOL_TRANSLATION_MSG_NOT_AVAILABLE, subject);
+ g_free (subject);
+ g_object_unref (header);
+ g_object_unref (iter);
+
+ if (error_msg == NULL) {
+ error_msg = g_strdup (_("mail_ni_ui_folder_get_msg_folder_error"));
+ }
+
+ if (modest_protocol_registry_protocol_type_has_tag (protocol_registry,
+ proto,
+ MODEST_PROTOCOL_REGISTRY_LOCAL_STORE_PROTOCOLS)) {
TnyHeader *header;
TnyFolder *folder;
TnyIterator *iter;
g_object_unref (folder);
g_object_unref (header);
g_object_unref (iter);
- error_msg = g_strdup (_("mail_ni_ui_folder_get_msg_folder_error"));
}
} else {
error_msg = g_strdup (_("mail_ni_ui_folder_get_msg_folder_error"));
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;
}
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 */
if (TNY_IS_FOLDER (folder_store) && selected) {
TnyAccount *account;
const gchar *account_name = NULL;
- gboolean refresh;
/* Update the active account */
account = modest_tny_folder_get_account (TNY_FOLDER (folder_store));
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,
+ TRUE,
folder_refreshed_cb,
main_window);
already being done by the sort
dialog. Remove it when the GNOME version
has the same behaviour */
-#ifdef MODEST_PLATFORM_GNOME
+#ifdef MODEST_TOOLKIT_GTK
if (modest_main_window_get_contents_style (main_window) ==
MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS)
modest_widget_memory_save (conf, G_OBJECT (header_view),
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) {
+ if (!enough_space_for_message (edit_window, data)) {
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);
- 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,
modest_msg_edit_window_remove_attachments (window, NULL);
}
+
+#ifndef MODEST_TOOLKIT_GTK
+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 */
+#ifndef MODEST_TOOLKIT_GTK
+ 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? */
/* Clear the headers view */
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view));
- gtk_tree_selection_unselect_all (sel);
+ gtk_tree_selection_unselect_all (sel);
/* Actually rename the folder */
modest_mail_operation_rename_folder (mail_op,
(const gchar *) (data->new_name),
on_rename_folder_cb,
folder_view);
+ g_object_unref (data->folder);
g_object_unref (mail_op);
}
do_rename = FALSE;
} else {
RenameFolderInfo *rename_folder_data = g_new0 (RenameFolderInfo, 1);
- rename_folder_data->folder = folder;
+ rename_folder_data->folder = g_object_ref (folder);
rename_folder_data->new_name = folder_name;
modest_platform_connect_if_remote_and_perform (GTK_WINDOW(main_window), TRUE,
folder, on_rename_folder_performer, rename_folder_data);
if (remember)
*remember = TRUE;
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
/* Maemo uses a different (awkward) button order,
* It should probably just use gtk_alternative_dialog_button_order ().
*/
GTK_STOCK_OK,
GTK_RESPONSE_ACCEPT,
NULL);
-#endif /* MODEST_PLATFORM_MAEMO */
+#endif /* !MODEST_TOOLKIT_GTK */
modest_window_mgr_set_modal (modest_runtime_get_window_mgr(), GTK_WINDOW (dialog));
*/
gtk_widget_set_sensitive (entry_username, FALSE);
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
/* Auto-capitalization is the default, so let's turn it off: */
hildon_gtk_entry_set_input_mode (GTK_ENTRY (entry_username), HILDON_GTK_INPUT_MODE_FULL);
#else
gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), entry_username,
TRUE, FALSE, 0);
-#endif /* MODEST_PLATFORM_MAEMO */
+#endif /* !MODEST_TOOLKIT_GTK */
/* password: */
GtkWidget *entry_password = gtk_entry_new ();
gtk_entry_set_visibility (GTK_ENTRY(entry_password), FALSE);
/* gtk_entry_set_invisible_char (GTK_ENTRY(entry_password), "*"); */
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
/* Auto-capitalization is the default, so let's turn it off: */
hildon_gtk_entry_set_input_mode (GTK_ENTRY (entry_password),
HILDON_GTK_INPUT_MODE_FULL | HILDON_GTK_INPUT_MODE_INVISIBLE);
#else
gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), entry_password,
TRUE, FALSE, 0);
-#endif /* MODEST_PLATFORM_MAEMO */
+#endif /* !MODEST_TOOLKIT_GTK */
if (initial_username != NULL)
gtk_widget_grab_focus (GTK_WIDGET (entry_password));
gtk_clipboard_set_can_store (clipboard, NULL, 0);
gtk_clipboard_store (clipboard);
} else if (GTK_IS_HTML (focused_widget)) {
- gtk_html_copy (GTK_HTML (focused_widget));
- gtk_clipboard_set_can_store (clipboard, NULL, 0);
- gtk_clipboard_store (clipboard);
+ const gchar *sel;
+ int len = -1;
+ sel = gtk_html_get_selection_html (GTK_HTML (focused_widget), &len);
+ if ((sel == NULL) || (sel[0] == '\0')) {
+ copied = FALSE;
+ } else {
+ gtk_html_copy (GTK_HTML (focused_widget));
+ gtk_clipboard_set_can_store (clipboard, NULL, 0);
+ gtk_clipboard_store (clipboard);
+ }
} else if (GTK_IS_TEXT_VIEW (focused_widget)) {
GtkTextBuffer *buffer;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (focused_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));
}
dialog = modest_details_dialog_new_with_header (GTK_WINDOW (window), header);
/* Run dialog */
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog));
gtk_widget_show_all (dialog);
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
+ g_signal_connect_swapped (dialog, "response",
+ G_CALLBACK (gtk_widget_destroy),
+ dialog);
}
/*
return;
children = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area));
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
ok_button = GTK_WIDGET (children->next->next->data);
new_button = GTK_WIDGET (children->next->data);
#else
if ((gpointer) local_account != (gpointer) folder_store &&
(gpointer) mmc_account != (gpointer) folder_store) {
- const char *proto_name = tny_account_get_proto (TNY_ACCOUNT (folder_store));
- ModestTransportStoreProtocol proto = MODEST_PROTOCOL_STORE_MAILDIR;
- if (proto_name != NULL) {
- proto = modest_protocol_info_get_transport_store_protocol (proto_name);
+ ModestProtocolType proto;
+ proto = modest_tny_account_get_protocol_type (TNY_ACCOUNT (folder_store));
+ if (proto == MODEST_PROTOCOL_REGISTRY_TYPE_INVALID) {
+ proto = MODEST_PROTOCOLS_STORE_MAILDIR;
}
is_local_account = FALSE;
/* New button should be dimmed on remote
POP account root */
- new_sensitive = (proto != MODEST_PROTOCOL_STORE_POP);
+ new_sensitive = (modest_protocol_registry_protocol_type_has_tag (modest_runtime_get_protocol_registry (),
+ proto,
+ MODEST_PROTOCOL_REGISTRY_STORE_HAS_FOLDERS));
}
g_object_unref (local_account);
g_object_unref (mmc_account);
GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT,
NULL);
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
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. */
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
-#ifndef MODEST_PLATFORM_MAEMO
+#ifdef MODEST_TOOLKIT_GTK
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_IN);
#endif
scroll, TRUE, TRUE, 0);
gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
gtk_window_set_default_size (GTK_WINDOW (dialog), 300, 300);
#else
gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 400);
/* The transfer is possible and the user wants to */
*do_xfer = TRUE;
- if (remote_folder_is_pop (src_folder) && delete_originals) {
+ if (remote_folder_has_leave_on_server (src_folder) && delete_originals) {
const gchar *account_name;
gboolean leave_on_server;
{
ModestWindow *win = MODEST_WINDOW (parent_window);
TnyAccount *dst_account = NULL;
- const gchar *proto_str = NULL;
- gboolean dst_is_pop = FALSE;
+ gboolean dst_forbids_message_add = FALSE;
XferMsgsHelper *helper;
MoveToHelper *movehelper;
ModestMailOperation *mail_op;
}
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 */
- dst_is_pop = proto_str &&
- (modest_protocol_info_get_transport_store_protocol (proto_str) ==
- MODEST_PROTOCOL_STORE_POP);
-
+ dst_forbids_message_add = modest_protocol_registry_protocol_type_has_tag (modest_runtime_get_protocol_registry (),
+ modest_tny_account_get_protocol_type (dst_account),
+ MODEST_PROTOCOL_REGISTRY_STORE_FORBID_MESSAGE_ADD);
g_object_unref (dst_account);
- if (dst_is_pop) {
+ if (dst_forbids_message_add) {
modest_platform_information_banner (GTK_WIDGET (win),
NULL,
ngettext("mail_in_ui_folder_move_target_error",
gboolean need_connection = TRUE;
gboolean do_xfer = TRUE;
XferMsgsHelper *helper;
+
+ g_return_if_fail (TNY_IS_FOLDER (src_folder));
+ g_return_if_fail (TNY_IS_FOLDER (dst_folder));
+ g_return_if_fail (TNY_IS_LIST (headers));
modest_ui_actions_xfer_messages_check (win, TNY_FOLDER_STORE (src_folder),
headers, TNY_FOLDER (dst_folder),
TNY_FOLDER (dst_folder));
/* Frees */
+ g_object_unref (src_folder);
g_object_unref (header);
g_object_unref (headers);
}
/* Create and run the dialog */
dialog = create_move_to_dialog (GTK_WINDOW (win), folder_view, &tree_view);
modest_folder_view_select_first_inbox_or_local (MODEST_FOLDER_VIEW (tree_view));
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog));
result = gtk_dialog_run (GTK_DIALOG(dialog));
g_object_ref (tree_view);
gtk_widget_destroy (dialog);
/* Rerun dimming rules, because the message could become deletable for example */
modest_window_check_dimming_rules_group (MODEST_WINDOW (main_window),
MODEST_DIMMING_RULES_TOOLBAR);
+ modest_window_check_dimming_rules_group (MODEST_WINDOW (main_window),
+ MODEST_DIMMING_RULES_MENU);
/* Free */
frees:
modest_ui_actions_on_account_connection_error (GtkWindow *parent_window,
TnyAccount *account)
{
- ModestTransportStoreProtocol proto;
- const gchar *proto_name;
+ ModestProtocolType protocol_type;
+ ModestProtocol *protocol;
gchar *error_note = NULL;
- proto_name = tny_account_get_proto (account);
- proto = modest_protocol_info_get_transport_store_protocol (proto_name);
-
- switch (proto) {
- case MODEST_PROTOCOL_STORE_POP:
- error_note = g_strdup_printf (_("emev_ni_ui_pop3_msg_connect_error"),
- tny_account_get_hostname (account));
- break;
- case MODEST_PROTOCOL_STORE_IMAP:
- error_note = g_strdup_printf (_("emev_ni_ui_imap_connect_server_error"),
- tny_account_get_hostname (account));
- break;
- case MODEST_PROTOCOL_STORE_MAILDIR:
- case MODEST_PROTOCOL_STORE_MBOX:
- error_note = g_strdup (_("emev_nc_mailbox_notavailable"));
- break;
- default:
- g_warning ("%s: This should not be reached", __FUNCTION__);
- }
+ protocol_type = modest_tny_account_get_protocol_type (account);
+ protocol = modest_protocol_registry_get_protocol_by_type (modest_runtime_get_protocol_registry (),
+ protocol_type);
- if (error_note) {
+ error_note = modest_protocol_get_translation (protocol, MODEST_PROTOCOL_TRANSLATION_ACCOUNT_CONNECTION_ERROR, tny_account_get_hostname (account));
+ if (error_note == NULL) {
+ g_warning ("%s: This should not be reached", __FUNCTION__);
+ } else {
modest_platform_run_information_dialog (parent_window, error_note, FALSE);
g_free (error_note);
}
modest_ui_actions_get_msg_already_deleted_error_msg (ModestWindow *win)
{
gchar *msg = NULL;
+ gchar *subject;
TnyFolderStore *folder = NULL;
TnyAccount *account = NULL;
- ModestTransportStoreProtocol proto;
+ ModestProtocolType proto;
+ ModestProtocol *protocol;
TnyHeader *header = NULL;
if (MODEST_IS_MAIN_WINDOW (win)) {
/* Get the account type */
account = tny_folder_get_account (TNY_FOLDER (folder));
- proto = modest_protocol_info_get_transport_store_protocol (tny_account_get_proto (account));
- if (proto == MODEST_PROTOCOL_STORE_POP) {
- msg = g_strdup (_("emev_ni_ui_pop3_msg_recv_error"));
- } else if (proto == MODEST_PROTOCOL_STORE_IMAP) {
- gchar *subject;
- subject = tny_header_dup_subject (header);
- msg = g_strdup_printf (_("emev_ni_ui_imap_message_not_available_in_server"),
- subject);
- g_free (subject);
- } else {
+ proto = modest_tny_account_get_protocol_type (account);
+ protocol = modest_protocol_registry_get_protocol_by_type (modest_runtime_get_protocol_registry (),
+ proto);
+
+ subject = tny_header_dup_subject (header);
+ msg = modest_protocol_get_translation (protocol, MODEST_PROTOCOL_TRANSLATION_MSG_NOT_AVAILABLE, subject);
+ g_free (subject);
+ if (msg == NULL) {
msg = g_strdup_printf (_("mail_ni_ui_folder_get_msg_folder_error"));
}