static gboolean notify_error_in_dbus_callback (gpointer user_data);
+static gboolean notify_msg_not_found_in_idle (gpointer user_data);
static gboolean on_idle_compose_mail(gpointer user_data);
static gboolean on_idle_top_application (gpointer user_data);
return msg;
}
-
typedef struct {
TnyAccount *account;
gchar *uri;
info = (OpenMsgPerformerInfo *) user_data;
uri = info->uri;
- if (err)
+ if (canceled || err) {
goto frees;
+ }
/* Get message */
folder = tny_store_account_find_folder (TNY_STORE_ACCOUNT (account), uri, NULL);
is_draft = TRUE;
}
+ if (!msg) {
+ g_idle_add (notify_msg_not_found_in_idle, NULL);
+ goto frees;
+ }
+
header = tny_msg_get_header (msg);
+ if (header && (tny_header_get_flags (header)&TNY_HEADER_FLAG_DELETED)) {
+ g_object_unref (header);
+ g_object_unref (msg);
+ g_idle_add (notify_msg_not_found_in_idle, NULL);
+ goto frees;
+ }
msg_uid = modest_tny_folder_get_header_unique_id (header);
win_mgr = modest_runtime_get_window_mgr ();
if (is_draft) {
msg_view = modest_msg_edit_window_new (msg, modest_account_name, TRUE);
} else {
- msg_view = modest_msg_view_window_new_for_search_result (msg, modest_account_name,
- msg_uid);
+ TnyHeader *header;
+ header = tny_msg_get_header (msg);
+ msg_view = modest_msg_view_window_new_for_search_result (msg, modest_account_name, msg_uid);
+ if (! (tny_header_get_flags (header) & TNY_HEADER_FLAG_SEEN))
+ tny_header_set_flag (header, TNY_HEADER_FLAG_SEEN);
+ g_object_unref (header);
+
}
modest_window_mgr_register_window (win_mgr, msg_view);
gtk_widget_show_all (GTK_WIDGET (msg_view));
static gboolean
on_idle_send_receive(gpointer user_data)
{
- ModestWindow *main_win =
+ gboolean auto_update;
+ ModestWindow *main_win = NULL;
+
+ main_win =
modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (),
FALSE); /* don't create */
- /* Send & receive all */
gdk_threads_enter (); /* CHECKED */
- modest_ui_actions_do_send_receive_all (main_win);
+
+ /* Check if the autoupdate feature is on */
+ auto_update = modest_conf_get_bool (modest_runtime_get_conf (),
+ MODEST_CONF_AUTO_UPDATE, NULL);
+
+ if (auto_update)
+ /* Do send receive */
+ modest_ui_actions_do_send_receive_all (main_win);
+ else
+ /* Disable auto update */
+ modest_platform_set_update_interval (0);
+
gdk_threads_leave (); /* CHECKED */
return FALSE;
}
+
+static gint
+on_dbus_method_dump (DBusConnection *con, DBusMessage *message)
+{
+ gchar *str;
+ gchar *op_queue_str;
+ DBusMessage *reply;
+ dbus_uint32_t serial = 0;
+
+ op_queue_str = modest_mail_operation_queue_to_string
+ (modest_runtime_get_mail_operation_queue ());
+
+ str = g_strdup_printf ("\nmodest debug dump\n=================\n%s\n",
+ op_queue_str);
+ g_free (op_queue_str);
+
+ g_printerr (str);
+
+ reply = dbus_message_new_method_return (message);
+ if (reply) {
+ dbus_message_append_args (reply,
+ DBUS_TYPE_STRING, &str,
+ DBUS_TYPE_INVALID);
+ dbus_connection_send (con, reply, &serial);
+ dbus_connection_flush (con);
+ dbus_message_unref (reply);
+ }
+
+ g_free (str);
+ return OSSO_OK;
+}
+
+
static gint
on_send_receive(GArray *arguments, gpointer data, osso_rpc_t * retval)
{
} else if (g_ascii_strcasecmp (method, MODEST_DBUS_METHOD_TOP_APPLICATION) == 0) {
if (arguments->len != 0)
goto param_error;
- return on_top_application (arguments, data, retval);
+ return on_top_application (arguments, data, retval);
} else {
/* We need to return INVALID here so
* libosso will return DBUS_HANDLER_RESULT_NOT_YET_HANDLED,
on_dbus_method_search (con, message);
handled = TRUE;
} else if (dbus_message_is_method_call (message,
- MODEST_DBUS_IFACE,
- MODEST_DBUS_METHOD_GET_FOLDERS)) {
+ MODEST_DBUS_IFACE,
+ MODEST_DBUS_METHOD_GET_FOLDERS)) {
on_dbus_method_get_folders (con, message);
handled = TRUE;
- }
- else {
+ } else if (dbus_message_is_method_call (message,
+ MODEST_DBUS_IFACE,
+ MODEST_DBUS_METHOD_DUMP)) {
+ on_dbus_method_dump (con, message);
+ handled = TRUE;
+ } else {
/* Note that this mentions methods that were already handled in modest_dbus_req_handler(). */
/*
g_debug (" debug: %s: Unexpected (maybe already handled) D-Bus method:\n Interface=%s, Member=%s\n",
return FALSE;
}
+
+static gboolean
+notify_msg_not_found_in_idle (gpointer user_data)
+{
+ modest_platform_run_information_dialog (NULL, _("mail_ni_ui_folder_get_msg_folder_error"));
+
+ return FALSE;
+}