X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=57e10fee054ce79541ed7b10ced819deef0f9b92;hp=550e2ba4ac9100fac195306ebd889074d44c486f;hb=1386f3b566f5b5c9aa2ea4d0a5a6157502a45b4f;hpb=915c00d90d2a73db49dac99e958c6a8417fdb7da diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 550e2ba..57e10fe 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -36,6 +36,7 @@ #include #include #include +#include #include "modest-ui-actions.h" @@ -157,26 +158,24 @@ modest_ui_actions_on_delete (GtkAction *action, ModestWindow *win) header = TNY_HEADER (tny_iterator_get_current (iter)); /* TODO: thick grain mail operation involving a list of objects. Composite pattern ??? */ - mail_op = modest_mail_operation_new (); - /* TODO: add confirmation dialog */ + mail_op = modest_mail_operation_new (); + modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), + mail_op); - /* Move to trash. TODO: Still not supported */ + /* Always delete. TODO: Move to trash still not supported */ modest_mail_operation_remove_msg (mail_op, header, FALSE); - if (modest_mail_operation_get_status (mail_op) != - MODEST_MAIL_OPERATION_STATUS_SUCCESS) { - const GError *error; - error = modest_mail_operation_get_error (mail_op); - if (error) - g_warning (error->message); - } - + /* Frees */ g_object_unref (G_OBJECT (mail_op)); - g_object_unref (header); + g_object_unref (G_OBJECT (header)); + tny_iterator_next (iter); } while (!tny_iterator_is_done (iter)); + + /* Free iter */ + g_object_unref (G_OBJECT (iter)); } } @@ -190,6 +189,19 @@ modest_ui_actions_on_quit (GtkAction *action, ModestWindow *win) } void +modest_ui_actions_on_add_to_contacts (GtkAction *action, ModestWindow *win) +{ + GtkClipboard *clipboard = NULL; + gchar *selection = NULL; + + clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY); + selection = gtk_clipboard_wait_for_text (clipboard); + + modest_address_book_add_address (selection); + g_free (selection); +} + +void modest_ui_actions_on_accounts (GtkAction *action, ModestWindow *win) { /* GtkDialog *account_win; */ @@ -317,19 +329,19 @@ reply_forward_func (gpointer data, gpointer user_data) switch (rf_helper->action) { case ACTION_REPLY: new_msg = - modest_mail_operation_create_reply_mail (msg, from, - rf_helper->reply_forward_type, - MODEST_MAIL_OPERATION_REPLY_MODE_SENDER); + modest_tny_msg_create_reply_msg (msg, from, + rf_helper->reply_forward_type, + MODEST_TNY_MSG_REPLY_MODE_SENDER); break; case ACTION_REPLY_TO_ALL: new_msg = - modest_mail_operation_create_reply_mail (msg, from, rf_helper->reply_forward_type, - MODEST_MAIL_OPERATION_REPLY_MODE_ALL); + modest_tny_msg_create_reply_msg (msg, from, rf_helper->reply_forward_type, + MODEST_TNY_MSG_REPLY_MODE_ALL); edit_type = MODEST_EDIT_TYPE_REPLY; break; case ACTION_FORWARD: new_msg = - modest_mail_operation_create_forward_mail (msg, from, rf_helper->reply_forward_type); + modest_tny_msg_create_forward_msg (msg, from, rf_helper->reply_forward_type); edit_type = MODEST_EDIT_TYPE_FORWARD; break; default: @@ -506,7 +518,7 @@ modest_ui_actions_on_send_receive (GtkAction *action, ModestWindow *win) { gchar *account_name; TnyAccount *tny_account; - //ModestTnySendQueue *send_queue; + ModestTnySendQueue *send_queue; ModestMailOperation *mail_op; account_name = @@ -517,8 +529,7 @@ modest_ui_actions_on_send_receive (GtkAction *action, ModestWindow *win) g_printerr ("modest: cannot get account\n"); return; } - /* FIXME */ -#if 0 + tny_account = modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store(), account_name, @@ -527,18 +538,17 @@ modest_ui_actions_on_send_receive (GtkAction *action, ModestWindow *win) g_printerr ("modest: cannot get tny transport account for %s\n", account_name); return; } - send_queue = modest_tny_send_queue_new (TNY_CAMEL_TRANSPORT_ACCOUNT(tny_account)); if (!send_queue) { g_object_unref (G_OBJECT(tny_account)); g_printerr ("modest: cannot get send queue for %s\n", account_name); return; } - modest_tny_send_queue_flush (send_queue); + //modest_tny_send_queue_flush (send_queue); g_object_unref (G_OBJECT(send_queue)); g_object_unref (G_OBJECT(tny_account)); -#endif /* 0 */ + tny_account = modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store(), account_name, @@ -548,11 +558,14 @@ modest_ui_actions_on_send_receive (GtkAction *action, ModestWindow *win) return; } + /* Create the mail operation */ 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)); FIXME: this is still in use... */ + /* Frees */ + g_object_unref (G_OBJECT (tny_account)); + g_object_unref (G_OBJECT (mail_op)); } @@ -573,7 +586,8 @@ modest_ui_actions_toggle_view (GtkAction *action, ModestMainWindow *main_window) conf = modest_runtime_get_conf (); /* what is saved/restored is depending on the style; thus; we save with - * old style, then update the style, and restore for this new style*/ + * old style, then update the style, and restore for this new style + */ modest_widget_memory_save (conf, G_OBJECT(header_view), "header-view"); if (modest_header_view_get_style @@ -802,56 +816,6 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view, } } - -/****************************************************/ -/* - * below some stuff to clearup statusbar messages after 1,5 seconds.... - */ -static gboolean -progress_bar_clean (GtkWidget *bar) -{ - if (GTK_IS_PROGRESS_BAR(bar)) { - gtk_progress_bar_set_text (GTK_PROGRESS_BAR(bar), ""); - gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(bar), 1.0); - } - return FALSE; -} - -static gboolean -statusbar_clean (GtkWidget *bar) -{ - if (GTK_IS_STATUSBAR(bar)) - gtk_statusbar_push (GTK_STATUSBAR(bar), 0, ""); - return FALSE; -} - - -static void -statusbar_push (ModestMainWindow *main_window, guint context_id, const gchar *msg) -{ - if (!msg) - return; - - GtkWidget *progress_bar, *status_bar; - - progress_bar = modest_main_window_get_child_widget (main_window, - MODEST_WIDGET_TYPE_PROGRESS_BAR); - status_bar = modest_main_window_get_child_widget (main_window, - MODEST_WIDGET_TYPE_STATUS_BAR); - if (progress_bar) { - gtk_widget_show (progress_bar); - g_timeout_add (3000, (GSourceFunc)progress_bar_clean, progress_bar); - } - - if (status_bar) { - gtk_widget_show (status_bar); - gtk_statusbar_push (GTK_STATUSBAR(status_bar), 0, msg); - g_timeout_add (2500, (GSourceFunc)statusbar_clean, status_bar); - } - -} -/****************************************************************************/ - void modest_ui_actions_on_item_not_found (ModestHeaderView *header_view,ModestItemType type, ModestWindow *win) @@ -893,7 +857,7 @@ modest_ui_actions_on_item_not_found (ModestHeaderView *header_view,ModestItemTyp gtk_window_set_default_size (GTK_WINDOW(dialog), 300, 300); if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { - tny_device_force_online (modest_runtime_get_device()); +// tny_device_force_online (modest_runtime_get_device()); } } gtk_widget_destroy (dialog); @@ -901,37 +865,6 @@ modest_ui_actions_on_item_not_found (ModestHeaderView *header_view,ModestItemTyp gdk_threads_leave (); } - - -void -modest_ui_actions_on_header_status_update (ModestHeaderView *header_view, - const gchar *msg, gint num, - gint total, ModestMainWindow *main_window) -{ - char* txt; - GtkWidget *progress_bar; - - g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); - - progress_bar = modest_main_window_get_child_widget (main_window, - MODEST_WIDGET_TYPE_PROGRESS_BAR); - if (!progress_bar) - return; - - if (total != 0) - gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(progress_bar), - (gdouble)num/(gdouble)total); - else - gtk_progress_bar_pulse (GTK_PROGRESS_BAR(progress_bar)); - - txt = g_strdup_printf (_("Downloading %d of %d"), num, total); - gtk_progress_bar_set_text (GTK_PROGRESS_BAR(progress_bar), txt); - g_free (txt); - - statusbar_push (main_window, 0, msg); -} - - void modest_ui_actions_on_msg_link_hover (ModestMsgView *msgview, const gchar* link, ModestWindow *win) @@ -948,7 +881,7 @@ modest_ui_actions_on_msg_link_clicked (ModestMsgView *msgview, const gchar* link } void -modest_ui_actions_on_msg_attachment_clicked (ModestMsgView *msgview, int index, +modest_ui_actions_on_msg_attachment_clicked (ModestMsgView *msgview, TnyMimePart *mime_part, ModestWindow *win) { g_message (__FUNCTION__); @@ -957,23 +890,10 @@ modest_ui_actions_on_msg_attachment_clicked (ModestMsgView *msgview, int index, void modest_ui_actions_on_msg_recpt_activated (ModestMsgView *msgview, - ModestRecptView *recpt_view, + const gchar *address, ModestWindow *win) { - gint start, end; - gchar *utf_start, *utf_end; - gchar *full_string = NULL; - gchar *substring; - - gtk_label_get_selection_bounds (GTK_LABEL (recpt_view), &start, &end); - full_string = (gchar *) gtk_label_get_text (GTK_LABEL (recpt_view)); - utf_start = g_utf8_offset_to_pointer (full_string, start); - utf_end = g_utf8_offset_to_pointer (full_string, end); - substring = g_strndup (utf_start, utf_end - utf_start); - g_message ("%s %s", __FUNCTION__, substring); - - g_free (substring); - + g_message ("%s %s", __FUNCTION__, address); } void @@ -1013,8 +933,11 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) return; } from = modest_account_mgr_get_from_string (account_mgr, account_name); - + + /* Create the mail operation */ mail_operation = modest_mail_operation_new (); + modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_operation); + modest_mail_operation_send_new_mail (mail_operation, transport_account, from, @@ -1022,21 +945,146 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) data->cc, data->bcc, data->subject, - data->body, - NULL); + data->plain_body, + data->html_body, + data->attachments); /* Frees */ g_free (from); g_free (account_name); - g_object_unref (G_OBJECT (mail_operation)); g_object_unref (G_OBJECT (transport_account)); + g_object_unref (G_OBJECT (mail_operation)); modest_msg_edit_window_free_msg_data (edit_window, data); /* Save settings and close the window */ - /* save_settings (edit_window) */ gtk_widget_destroy (GTK_WIDGET (edit_window)); } +void +modest_ui_actions_on_toggle_bold (GtkToggleAction *action, + ModestMsgEditWindow *window) +{ + ModestMsgEditFormatState *format_state = NULL; + + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + g_return_if_fail (GTK_IS_TOGGLE_ACTION (action)); + + if (modest_msg_edit_window_get_format (MODEST_MSG_EDIT_WINDOW (window)) == MODEST_MSG_EDIT_FORMAT_TEXT) + return; + + format_state = modest_msg_edit_window_get_format_state (window); + g_return_if_fail (format_state != NULL); + + format_state->bold = gtk_toggle_action_get_active (action); + modest_msg_edit_window_set_format_state (window, format_state); + g_free (format_state); + +} + +void +modest_ui_actions_on_toggle_italics (GtkToggleAction *action, + ModestMsgEditWindow *window) +{ + ModestMsgEditFormatState *format_state = NULL; + + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + g_return_if_fail (GTK_IS_TOGGLE_ACTION (action)); + + if (modest_msg_edit_window_get_format (MODEST_MSG_EDIT_WINDOW(window)) == MODEST_MSG_EDIT_FORMAT_TEXT) + return; + + format_state = modest_msg_edit_window_get_format_state (window); + g_return_if_fail (format_state != NULL); + + format_state->italics = gtk_toggle_action_get_active (action); + modest_msg_edit_window_set_format_state (window, format_state); + g_free (format_state); + +} + +void +modest_ui_actions_on_toggle_bullets (GtkToggleAction *action, + ModestMsgEditWindow *window) +{ + ModestMsgEditFormatState *format_state = NULL; + + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + g_return_if_fail (GTK_IS_TOGGLE_ACTION (action)); + + if (modest_msg_edit_window_get_format (MODEST_MSG_EDIT_WINDOW (window)) == MODEST_MSG_EDIT_FORMAT_TEXT) + return; + + format_state = modest_msg_edit_window_get_format_state (window); + g_return_if_fail (format_state != NULL); + + format_state->bullet = gtk_toggle_action_get_active (action); + modest_msg_edit_window_set_format_state (window, format_state); + g_free (format_state); + +} + +void +modest_ui_actions_on_change_justify (GtkRadioAction *action, + GtkRadioAction *selected, + ModestMsgEditWindow *window) +{ + ModestMsgEditFormatState *format_state = NULL; + GtkJustification value; + + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + + if (modest_msg_edit_window_get_format (MODEST_MSG_EDIT_WINDOW(window)) == MODEST_MSG_EDIT_FORMAT_TEXT) + return; + + value = gtk_radio_action_get_current_value (selected); + + format_state = modest_msg_edit_window_get_format_state (window); + g_return_if_fail (format_state != NULL); + + format_state->justification = value; + modest_msg_edit_window_set_format_state (window, format_state); + g_free (format_state); +} + +void +modest_ui_actions_on_select_editor_color (GtkAction *action, + ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + g_return_if_fail (GTK_IS_ACTION (action)); + + if (modest_msg_edit_window_get_format (MODEST_MSG_EDIT_WINDOW(window)) == MODEST_MSG_EDIT_FORMAT_TEXT) + return; + + modest_msg_edit_window_select_color (window); +} + +void +modest_ui_actions_on_select_editor_background_color (GtkAction *action, + ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + g_return_if_fail (GTK_IS_ACTION (action)); + + if (modest_msg_edit_window_get_format (MODEST_MSG_EDIT_WINDOW(window)) == MODEST_MSG_EDIT_FORMAT_TEXT) + return; + + modest_msg_edit_window_select_background_color (window); +} + +void +modest_ui_actions_on_insert_image (GtkAction *action, + ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); + g_return_if_fail (GTK_IS_ACTION (action)); + + if (modest_msg_edit_window_get_format (MODEST_MSG_EDIT_WINDOW(window)) == MODEST_MSG_EDIT_FORMAT_TEXT) + return; + + modest_msg_edit_window_insert_image (window); +} + /* * 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 @@ -1103,18 +1151,16 @@ modest_ui_actions_on_new_folder (GtkAction *action, ModestMainWindow *main_windo ModestMailOperation *mail_op; mail_op = modest_mail_operation_new (); + modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), + mail_op); + new_folder = modest_mail_operation_create_folder (mail_op, TNY_FOLDER_STORE (parent_folder), (const gchar *) folder_name); - if (new_folder) { + if (new_folder) g_object_unref (new_folder); - } else { - const GError *error; - error = modest_mail_operation_get_error (mail_op); - if (error) - g_warning ("Error adding a subfolder: %s\n", error->message); - } g_object_unref (mail_op); + g_free (folder_name); } g_object_unref (parent_folder); } @@ -1143,19 +1189,17 @@ modest_ui_actions_on_rename_folder (GtkAction *action, if (folder_name != NULL && strlen (folder_name) > 0) { ModestMailOperation *mail_op; - const GError *error; mail_op = modest_mail_operation_new (); + modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), + mail_op); + modest_mail_operation_rename_folder (mail_op, folder, (const gchar *) folder_name); - error = modest_mail_operation_get_error (mail_op); - if (error) - /* TODO: notify error ? */ - g_warning ("Could not rename a folder: %s\n", error->message); - g_object_unref (mail_op); + g_free (folder_name); } g_object_unref (folder); } @@ -1167,7 +1211,6 @@ delete_folder (ModestMainWindow *main_window, gboolean move_to_trash) TnyFolder *folder; ModestMailOperation *mail_op; GtkWidget *folder_view; - const GError *error; g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); @@ -1179,12 +1222,10 @@ delete_folder (ModestMainWindow *main_window, gboolean move_to_trash) folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view)); 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); - error = modest_mail_operation_get_error (mail_op); - if (error) - g_warning ("%s\n", error->message); - g_object_unref (G_OBJECT (mail_op)); g_object_unref (G_OBJECT (folder)); }