X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=f42c05eefaeef35d5a10693e99b9fa36f2b060d9;hb=fa8cfc5abf9fd542fe3fa058f7e2eef294b8121a;hp=0909b13a2b621d0bdb54d2c3734a9f7fdb3eb419;hpb=b1fa5f4856489fb96916ffd1a66af1957f7198dc;p=modest diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 0909b13..f42c05e 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -189,16 +190,13 @@ modest_ui_actions_on_delete (GtkAction *action, ModestWindow *win) if (MODEST_IS_MSG_VIEW_WINDOW (win)) { gtk_widget_destroy (GTK_WIDGET(win)); - } + } } void modest_ui_actions_on_quit (GtkAction *action, ModestWindow *win) { - /* FIXME: save size of main window */ -/* save_sizes (main_window); */ -/* gtk_widget_destroy (GTK_WIDGET (win)); */ gtk_main_quit (); } @@ -289,12 +287,16 @@ modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win) gchar *account_name = NULL; gchar *from_str = NULL; GError *err = NULL; - TnyAccount *account; + TnyAccount *account = NULL; ModestWindowMgr *mgr; account_name = g_strdup(modest_window_get_active_account (win)); if (!account_name) account_name = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr()); + if (!account_name) { + g_printerr ("modest: no account found\n"); + goto cleanup; + } account = modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store(), account_name, @@ -305,8 +307,12 @@ modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win) } from_str = modest_account_mgr_get_from_string (modest_runtime_get_account_mgr(), account_name); + if (!from_str) { + g_printerr ("modest: failed get from string for '%s'\n", account_name); + goto cleanup; + } - msg = modest_tny_msg_new ("", from_str, "", "", "", "", NULL); + msg = modest_tny_msg_new ("", from_str, "", "", "", "", NULL); if (!msg) { g_printerr ("modest: failed to create new msg\n"); goto cleanup; @@ -632,6 +638,7 @@ action_receive (const gchar* account_name) mail_op = modest_mail_operation_new (); modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op); modest_mail_operation_update_account (mail_op, TNY_STORE_ACCOUNT(tny_account)); + g_object_unref (G_OBJECT(tny_account)); g_object_unref (G_OBJECT (mail_op)); @@ -644,7 +651,11 @@ void modest_ui_actions_on_send_receive (GtkAction *action, ModestWindow *win) { gchar *account_name; + + g_message ("online? %s", + tny_device_is_online(modest_runtime_get_device()) ? "yes":"no"); + account_name = g_strdup(modest_window_get_active_account(MODEST_WINDOW(win))); if (!account_name) @@ -663,7 +674,7 @@ modest_ui_actions_on_send_receive (GtkAction *action, ModestWindow *win) void -modest_ui_actions_toggle_view (GtkAction *action, ModestMainWindow *main_window) +modest_ui_actions_toggle_header_list_view (GtkAction *action, ModestMainWindow *main_window) { ModestConf *conf; GtkWidget *header_view; @@ -770,29 +781,37 @@ get_msg_cb (TnyFolder *folder, TnyMsg *msg, GError **err, gpointer user_data) } void -modest_ui_actions_on_header_selected (ModestHeaderView *folder_view, +modest_ui_actions_on_header_selected (ModestHeaderView *header_view, TnyHeader *header, ModestMainWindow *main_window) { - GtkWidget *msg_preview; TnyFolder *folder; GetMsgAsyncHelper *helper; TnyList *list; g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); - - msg_preview = modest_main_window_get_child_widget(main_window, - MODEST_WIDGET_TYPE_MSG_PREVIEW); - if (!msg_preview) - return; - + /* when there's no header, clear the msgview */ if (!header) { - modest_msg_view_set_message (MODEST_MSG_VIEW(msg_preview), NULL); + GtkWidget *msg_preview; + + /* Clear msg preview if exists */ + msg_preview = modest_main_window_get_child_widget(main_window, + MODEST_WIDGET_TYPE_MSG_PREVIEW); + + if (msg_preview) + modest_msg_view_set_message (MODEST_MSG_VIEW(msg_preview), NULL); return; } - folder = tny_header_get_folder (TNY_HEADER(header)); + /* Update Main window title */ + if (GTK_WIDGET_HAS_FOCUS (header_view)) { + const gchar *subject = tny_header_get_subject (header); + if (subject && strcmp (subject, "")) + gtk_window_set_title (GTK_WINDOW (main_window), subject); + else + gtk_window_set_title (GTK_WINDOW (main_window), _("mail_va_no_subject")); + } /* Create list */ list = tny_simple_list_new (); @@ -804,6 +823,8 @@ modest_ui_actions_on_header_selected (ModestHeaderView *folder_view, helper->iter = tny_list_create_iterator (list); helper->func = read_msg_func; + folder = tny_header_get_folder (TNY_HEADER(header)); + tny_folder_get_msg_async (TNY_FOLDER(folder), header, get_msg_cb, helper); @@ -818,7 +839,7 @@ void modest_ui_actions_on_header_activated (ModestHeaderView *folder_view, TnyHeader *header, ModestMainWindow *main_window) { - ModestWindow *win; + ModestWindow *win = NULL; TnyFolder *folder = NULL; TnyMsg *msg = NULL; ModestWindowMgr *mgr; @@ -831,7 +852,7 @@ modest_ui_actions_on_header_activated (ModestHeaderView *folder_view, TnyHeader folder = tny_header_get_folder (header); if (!folder) { g_printerr ("modest: cannot get folder for header\n"); - goto cleanup; + return; } /* FIXME: make async?; check error */ @@ -858,17 +879,14 @@ modest_ui_actions_on_header_activated (ModestHeaderView *folder_view, TnyHeader gtk_window_set_transient_for (GTK_WINDOW (win), GTK_WINDOW (main_window)); - - g_free (account); } gtk_widget_show_all (GTK_WIDGET(win)); + + g_object_unref (G_OBJECT (msg)); cleanup: - if (folder) - g_object_unref (G_OBJECT (folder)); - if (msg) - g_object_unref (G_OBJECT (msg)); + g_object_unref (G_OBJECT (folder)); } void @@ -877,7 +895,6 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view, gboolean selected, ModestMainWindow *main_window) { - gchar *txt; ModestConf *conf; GtkWidget *header_view; @@ -890,32 +907,15 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view, conf = modest_runtime_get_conf (); - if (!selected) { /* the folder was unselected; save it's settings */ - modest_widget_memory_save (conf, G_OBJECT (header_view), "header-view"); - gtk_window_set_title (GTK_WINDOW(main_window), "Modest"); - modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), NULL); - } else { /* the folder was selected */ - if (folder) { /* folder may be NULL */ - guint num, unread; - gchar *title; - - num = tny_folder_get_all_count (folder); - unread = tny_folder_get_unread_count (folder); - - title = g_strdup_printf ("Modest: %s", - tny_folder_get_name (folder)); - - gtk_window_set_title (GTK_WINDOW(main_window), title); - g_free (title); - - txt = g_strdup_printf (_("%d %s, %d unread"), - num, num==1 ? _("item") : _("items"), unread); - //gtk_label_set_label (GTK_LABEL(folder_info_label), txt); - g_free (txt); + if (TNY_IS_FOLDER (folder)) { + if (!selected) { /* the folder was unselected; save it's settings */ + modest_widget_memory_save (conf, G_OBJECT (header_view), "header-view"); + modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), NULL); + } else { + modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), folder); + modest_widget_memory_restore (conf, G_OBJECT(header_view), + "header-view"); } - modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), folder); - modest_widget_memory_restore (conf, G_OBJECT(header_view), - "header-view"); } } @@ -1057,7 +1057,8 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) data->subject, data->plain_body, data->html_body, - data->attachments); + data->attachments, + data->priority_flags); /* Frees */ g_free (from); g_free (account_name); @@ -1238,7 +1239,7 @@ ask_for_folder_name (GtkWindow *parent_window, void modest_ui_actions_on_new_folder (GtkAction *action, ModestMainWindow *main_window) { - TnyFolder *parent_folder; + TnyFolderStore *parent_folder; GtkWidget *folder_view; g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); @@ -1265,7 +1266,7 @@ modest_ui_actions_on_new_folder (GtkAction *action, ModestMainWindow *main_windo mail_op); new_folder = modest_mail_operation_create_folder (mail_op, - TNY_FOLDER_STORE (parent_folder), + parent_folder, (const gchar *) folder_name); if (new_folder) g_object_unref (new_folder); @@ -1280,7 +1281,7 @@ void modest_ui_actions_on_rename_folder (GtkAction *action, ModestMainWindow *main_window) { - TnyFolder *folder; + TnyFolderStore *folder; GtkWidget *folder_view; g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); @@ -1292,7 +1293,7 @@ modest_ui_actions_on_rename_folder (GtkAction *action, folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view)); - if (folder) { + 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")); @@ -1305,7 +1306,7 @@ modest_ui_actions_on_rename_folder (GtkAction *action, mail_op); modest_mail_operation_rename_folder (mail_op, - folder, + TNY_FOLDER (folder), (const gchar *) folder_name); g_object_unref (mail_op); @@ -1318,7 +1319,7 @@ modest_ui_actions_on_rename_folder (GtkAction *action, static void delete_folder (ModestMainWindow *main_window, gboolean move_to_trash) { - TnyFolder *folder; + TnyFolderStore *folder; ModestMailOperation *mail_op; GtkWidget *folder_view; @@ -1334,7 +1335,7 @@ delete_folder (ModestMainWindow *main_window, gboolean move_to_trash) mail_op = modest_mail_operation_new (); modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op); - modest_mail_operation_remove_folder (mail_op, folder, move_to_trash); + modest_mail_operation_remove_folder (mail_op, TNY_FOLDER (folder), move_to_trash); g_object_unref (G_OBJECT (mail_op)); g_object_unref (G_OBJECT (folder)); @@ -1453,6 +1454,17 @@ modest_ui_actions_on_copy (GtkAction *action, } void +modest_ui_actions_on_undo (GtkAction *action, + ModestWindow *window) +{ + if (MODEST_IS_MSG_EDIT_WINDOW (window)) { + modest_msg_edit_window_undo (MODEST_MSG_EDIT_WINDOW (window)); + } else { + g_return_if_reached (); + } +} + +void modest_ui_actions_on_paste (GtkAction *action, ModestWindow *window) { @@ -1493,25 +1505,6 @@ modest_ui_actions_on_select_all (GtkAction *action, } } -void -modest_ui_actions_on_toggle_fullscreen (GtkAction *action, - ModestWindow *window) -{ - ModestWindowMgr *mgr; - gboolean active; - - mgr = modest_runtime_get_window_mgr (); - /* set/unset the application fullscreen mode */ - active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)); - modest_window_mgr_set_fullscreen_mode (mgr, active); - - /* Bring the current window to the front. The above call will - put all the windows in fullscreen mode, so we can not be - sure that the last fullscreen-ed window is the current - one */ - gtk_window_present (GTK_WINDOW (window)); -} - void modest_ui_actions_on_change_zoom (GtkRadioAction *action, GtkRadioAction *selected, @@ -1525,6 +1518,83 @@ modest_ui_actions_on_change_zoom (GtkRadioAction *action, } } +void modest_ui_actions_msg_edit_on_change_priority (GtkRadioAction *action, + GtkRadioAction *selected, + ModestWindow *window) +{ + TnyHeaderFlags flags; + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + + flags = gtk_radio_action_get_current_value (selected); + modest_msg_edit_window_set_priority_flags (MODEST_MSG_EDIT_WINDOW (window), flags); +} + +void modest_ui_actions_msg_edit_on_change_file_format (GtkRadioAction *action, + GtkRadioAction *selected, + ModestWindow *window) +{ + gint file_format; + + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + + file_format = gtk_radio_action_get_current_value (selected); + modest_msg_edit_window_set_file_format (MODEST_MSG_EDIT_WINDOW (window), file_format); +} + + +void +modest_ui_actions_on_zoom_plus (GtkAction *action, + ModestWindow *window) +{ + g_return_if_fail (MODEST_IS_WINDOW (window)); + + modest_window_zoom_plus (MODEST_WINDOW (window)); +} + +void +modest_ui_actions_on_zoom_minus (GtkAction *action, + ModestWindow *window) +{ + g_return_if_fail (MODEST_IS_WINDOW (window)); + + modest_window_zoom_minus (MODEST_WINDOW (window)); +} + +void +modest_ui_actions_on_toggle_fullscreen (GtkToggleAction *toggle, + ModestWindow *window) +{ + ModestWindowMgr *mgr; + gboolean fullscreen, active; + g_return_if_fail (MODEST_IS_WINDOW (window)); + + mgr = modest_runtime_get_window_mgr (); + + active = (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (toggle)))?1:0; + fullscreen = modest_window_mgr_get_fullscreen_mode (mgr); + + if (active != fullscreen) { + modest_window_mgr_set_fullscreen_mode (mgr, active); + gtk_window_present (GTK_WINDOW (window)); + } +} + +void +modest_ui_actions_on_change_fullscreen (GtkAction *action, + ModestWindow *window) +{ + ModestWindowMgr *mgr; + gboolean fullscreen; + + g_return_if_fail (MODEST_IS_WINDOW (window)); + + mgr = modest_runtime_get_window_mgr (); + fullscreen = modest_window_mgr_get_fullscreen_mode (mgr); + modest_window_mgr_set_fullscreen_mode (mgr, !fullscreen); + + gtk_window_present (GTK_WINDOW (window)); +} + static void modest_ui_actions_message_details_cb (gpointer msg_data, gpointer helper_data) @@ -1578,21 +1648,88 @@ modest_ui_actions_on_message_details (GtkAction *action, } } +void +modest_ui_actions_on_toggle_show_cc (GtkToggleAction *toggle, + ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + + modest_msg_edit_window_show_cc (window, gtk_toggle_action_get_active (toggle)); +} + +void +modest_ui_actions_on_toggle_show_bcc (GtkToggleAction *toggle, + ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + + modest_msg_edit_window_show_bcc (window, gtk_toggle_action_get_active (toggle)); +} + +void +modest_ui_actions_toggle_folders_view (GtkAction *action, + ModestMainWindow *main_window) +{ + ModestConf *conf; + + g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); + + conf = modest_runtime_get_conf (); + + if (modest_main_window_get_style (main_window) == MODEST_MAIN_WINDOW_STYLE_SPLIT) + modest_main_window_set_style (main_window, MODEST_MAIN_WINDOW_STYLE_SIMPLE); + else + modest_main_window_set_style (main_window, MODEST_MAIN_WINDOW_STYLE_SPLIT); +} + void -modest_ui_actions_on_change_fullscreen (GtkRadioAction *action, - GtkRadioAction *selected, - ModestWindow *window) +modest_ui_actions_on_toggle_toolbar (GtkToggleAction *toggle, + ModestWindow *window) { - gint value; + gboolean active, fullscreen = FALSE; ModestWindowMgr *mgr; - value = gtk_radio_action_get_current_value (selected); + active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (toggle)); + + /* Check if we want to toggle the toolbar vuew in fullscreen + or normal mode */ + if (!strcmp (gtk_action_get_name (GTK_ACTION (toggle)), + "ViewShowToolbarFullScreen")) { + fullscreen = TRUE; + } + + /* Toggle toolbar */ mgr = modest_runtime_get_window_mgr (); + modest_window_mgr_show_toolbars (mgr, active, fullscreen); +} - if (value == 0) - modest_window_mgr_set_fullscreen_mode (mgr, FALSE); - else - modest_window_mgr_set_fullscreen_mode (mgr, TRUE); +void +modest_ui_actions_msg_edit_on_select_font (GtkAction *action, + ModestMsgEditWindow *window) +{ + modest_msg_edit_window_select_font (window); +} - gtk_window_present (GTK_WINDOW (window)); +void +modest_ui_actions_on_folder_display_name_changed (ModestFolderView *folder_view, + const gchar *display_name, + GtkWindow *window) +{ + /* Do not change the application name if the widget has not + the focus. This callback could be called even if the folder + view has not the focus, because the handled signal could be + emitted when the folder view is redrawn */ + if (GTK_WIDGET_HAS_FOCUS (folder_view)) { + if (display_name) + gtk_window_set_title (window, display_name); + else + gtk_window_set_title (window, " "); + } +} + +void +modest_ui_actions_on_select_contacts (GtkAction *action, ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + modest_msg_edit_window_select_contacts (window); }