X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=83f60ff0971ec7263506326c003b37ce9d065f61;hb=61a983e6d1ab2c9ec9caac0346307f8b9a61006a;hp=c4847e4faebdcf32dfe2f6d3abbaa582e129029f;hpb=d63928ac97a5b376374d8bdf1e280954635d33e4;p=modest diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index c4847e4..83f60ff 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" @@ -78,13 +79,12 @@ static void reply_forward_func (gpointer data, gpointer user_data); static void read_msg_func (gpointer data, gpointer user_data); static void get_msg_cb (TnyFolder *folder, TnyMsg *msg, GError **err, gpointer user_data); -static void reply_forward (GtkWidget *widget, ReplyForwardAction action, - ModestWindow *win); +static void reply_forward (ReplyForwardAction action, ModestWindow *win); static gchar* ask_for_folder_name (GtkWindow *parent_window, const gchar *title); void -modest_ui_actions_on_about (GtkWidget *widget, ModestWindow *win) +modest_ui_actions_on_about (GtkAction *action, ModestWindow *win) { GtkWidget *about; const gchar *authors[] = { @@ -140,11 +140,10 @@ get_selected_headers (ModestWindow *win) } void -modest_ui_actions_on_delete (GtkWidget *widget, ModestWindow *win) +modest_ui_actions_on_delete (GtkAction *action, ModestWindow *win) { TnyList *header_list; TnyIterator *iter; -// GtkTreeModel *model; g_return_if_fail (MODEST_IS_WINDOW(win)); @@ -152,9 +151,6 @@ modest_ui_actions_on_delete (GtkWidget *widget, ModestWindow *win) if (header_list) { iter = tny_list_create_iterator (header_list); -/* model = gtk_tree_view_get_model (GTK_TREE_VIEW (header_view)); */ -/* if (GTK_IS_TREE_MODEL_SORT (model)) */ -/* model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (model)); */ do { TnyHeader *header; ModestMailOperation *mail_op; @@ -166,15 +162,11 @@ modest_ui_actions_on_delete (GtkWidget *widget, ModestWindow *win) /* TODO: add confirmation dialog */ - /* Move to trash */ - modest_mail_operation_remove_msg (mail_op, header, TRUE); + /* Move to trash. TODO: Still not supported */ + modest_mail_operation_remove_msg (mail_op, header, FALSE); - /* Remove from tree model */ - if (modest_mail_operation_get_status (mail_op) == + if (modest_mail_operation_get_status (mail_op) != MODEST_MAIL_OPERATION_STATUS_SUCCESS) { -/* tny_list_remove (TNY_LIST (model), G_OBJECT (header)); */ - } else { - /* TODO: error handling management */ const GError *error; error = modest_mail_operation_get_error (mail_op); if (error) @@ -191,7 +183,7 @@ modest_ui_actions_on_delete (GtkWidget *widget, ModestWindow *win) void -modest_ui_actions_on_quit (GtkWidget *widget, ModestWindow *win) +modest_ui_actions_on_quit (GtkAction *action, ModestWindow *win) { /* FIXME: save size of main window */ /* save_sizes (main_window); */ @@ -199,19 +191,54 @@ modest_ui_actions_on_quit (GtkWidget *widget, ModestWindow *win) } void -modest_ui_actions_on_accounts (GtkWidget *widget, ModestWindow *win) +modest_ui_actions_on_add_to_contacts (GtkAction *action, ModestWindow *win) { - GtkWidget *account_win; - account_win = modest_account_view_window_new (); + GtkClipboard *clipboard = NULL; + gchar *selection = NULL; - if (win) - gtk_window_set_transient_for (GTK_WINDOW (account_win), GTK_WINDOW (win)); + 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; */ +/* account_win = GTK_DIALOG(modest_account_view_window_new ()); */ + - gtk_widget_show (account_win); +/* gtk_dialog_run (account_win); */ + //gtk_widget_destroy (GTK_WIDGET(account_win)); + GtkWidget *dialog, *label; + + /* Create the widgets */ + + dialog = gtk_dialog_new_with_buttons ("Message", + GTK_WINDOW(win), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_STOCK_OK, + GTK_RESPONSE_NONE, + NULL); + label = gtk_label_new ("Hello World!"); + + /* Ensure that the dialog box is destroyed when the user responds. */ + + g_signal_connect_swapped (dialog, "response", + G_CALLBACK (gtk_widget_destroy), + dialog); + + /* Add the label, and show everything we've added to the dialog. */ + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), + label); + gtk_widget_show_all (dialog); } void -modest_ui_actions_on_new_msg (GtkWidget *widget, ModestWindow *win) +modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win) { ModestWindow *msg_win; TnyMsg *msg = NULL; @@ -274,15 +301,13 @@ cleanup: void -modest_ui_actions_on_open (GtkWidget *widget, ModestWindow *win) +modest_ui_actions_on_open (GtkAction *action, ModestWindow *win) { - /* FIXME */ - + modest_runtime_not_implemented (GTK_WINDOW(win)); /* FIXME */ } - static void reply_forward_func (gpointer data, gpointer user_data) { @@ -372,7 +397,7 @@ cleanup: * Common code for the reply and forward actions */ static void -reply_forward (GtkWidget *widget, ReplyForwardAction action, ModestWindow *win) +reply_forward (ReplyForwardAction action, ModestWindow *win) { TnyList *header_list; guint reply_forward_type; @@ -402,53 +427,65 @@ reply_forward (GtkWidget *widget, ReplyForwardAction action, ModestWindow *win) rf_helper->account_name = g_strdup (modest_window_get_active_account (win)); if (!rf_helper->account_name) - rf_helper->account_name = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr()); + rf_helper->account_name = + modest_account_mgr_get_default_account (modest_runtime_get_account_mgr()); helper = g_slice_new0 (GetMsgAsyncHelper); helper->window = win; helper->func = reply_forward_func; helper->iter = tny_list_create_iterator (header_list); helper->user_data = rf_helper; - - header = TNY_HEADER (tny_iterator_get_current (helper->iter)); - folder = tny_header_get_folder (header); - if (folder) { - /* The callback will call it per each header */ - tny_folder_get_msg_async (folder, header, get_msg_cb, helper); - g_object_unref (G_OBJECT (folder)); - } else - g_printerr ("modest: no folder for header\n"); - - /* Clean */ - g_object_unref (G_OBJECT (header)); + + if (MODEST_IS_MSG_VIEW_WINDOW(win)) { + TnyMsg *msg; + msg = modest_msg_view_window_get_message(MODEST_MSG_VIEW_WINDOW(win)); + if (!msg) { + g_printerr ("modest: no message found\n"); + return; + } else + reply_forward_func (msg, helper); + } else { + header = TNY_HEADER (tny_iterator_get_current (helper->iter)); + folder = tny_header_get_folder (header); + if (folder) { + /* The callback will call it per each header */ + tny_folder_get_msg_async (folder, header, get_msg_cb, helper); + g_object_unref (G_OBJECT (folder)); + } else + g_printerr ("modest: no folder for header\n"); + + /* Clean */ + g_object_unref (G_OBJECT (header)); + } } + void -modest_ui_actions_on_reply (GtkWidget *widget, ModestWindow *win) +modest_ui_actions_on_reply (GtkAction *action, ModestWindow *win) { g_return_if_fail (MODEST_IS_WINDOW(win)); - reply_forward (widget, ACTION_REPLY, win); + reply_forward (ACTION_REPLY, win); } void -modest_ui_actions_on_forward (GtkWidget *widget, ModestWindow *win) +modest_ui_actions_on_forward (GtkAction *action, ModestWindow *win) { g_return_if_fail (MODEST_IS_WINDOW(win)); - reply_forward (widget, ACTION_FORWARD, win); + reply_forward (ACTION_FORWARD, win); } void -modest_ui_actions_on_reply_all (GtkWidget *widget,ModestWindow *win) +modest_ui_actions_on_reply_all (GtkAction *action, ModestWindow *win) { g_return_if_fail (MODEST_IS_WINDOW(win)); - reply_forward (widget, ACTION_REPLY_TO_ALL, win); + reply_forward (ACTION_REPLY_TO_ALL, win); } void -modest_ui_actions_on_next (GtkWidget *widget, +modest_ui_actions_on_next (GtkAction *action, ModestMainWindow *main_window) { GtkWidget *header_view; @@ -463,7 +500,7 @@ modest_ui_actions_on_next (GtkWidget *widget, } void -modest_ui_actions_on_prev (GtkWidget *widget, +modest_ui_actions_on_prev (GtkAction *action, ModestMainWindow *main_window) { GtkWidget *header_view; @@ -479,11 +516,12 @@ modest_ui_actions_on_prev (GtkWidget *widget, void -modest_ui_actions_on_send_receive (GtkWidget *widget, ModestWindow *win) +modest_ui_actions_on_send_receive (GtkAction *action, ModestWindow *win) { gchar *account_name; TnyAccount *tny_account; ModestTnySendQueue *send_queue; + ModestMailOperation *mail_op; account_name = g_strdup(modest_window_get_active_account(MODEST_WINDOW(win))); @@ -493,27 +531,46 @@ modest_ui_actions_on_send_receive (GtkWidget *widget, ModestWindow *win) g_printerr ("modest: cannot get account\n"); return; } - + tny_account = modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store(), account_name, TNY_ACCOUNT_TYPE_TRANSPORT); if (!tny_account) { - g_printerr ("modest: cannot get tny transport account\n"); + 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)); - modest_tny_send_queue_flush (send_queue); + 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); g_object_unref (G_OBJECT(send_queue)); g_object_unref (G_OBJECT(tny_account)); + + tny_account = + modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store(), + account_name, + TNY_ACCOUNT_TYPE_STORE); + if (!tny_account) { + g_printerr ("modest: cannot get tny store account for %s\n", account_name); + return; + } + + mail_op = modest_mail_operation_new (); + 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... */ } void -modest_ui_actions_toggle_view (GtkWidget *widget, ModestMainWindow *main_window) +modest_ui_actions_toggle_view (GtkAction *action, ModestMainWindow *main_window) { ModestConf *conf; GtkWidget *header_view; @@ -565,7 +622,6 @@ read_msg_func (gpointer data, gpointer user_data) if (!msg_preview) return; - /* mark message as seen; _set_flags crashes, bug in tinymail? */ header = TNY_HEADER (tny_iterator_get_current (helper->iter)); header_flags = tny_header_get_flags (header); tny_header_set_flags (header, header_flags | TNY_HEADER_FLAG_SEEN); @@ -710,30 +766,16 @@ cleanup: g_object_unref (G_OBJECT (msg)); } - - - - void modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view, TnyFolder *folder, gboolean selected, ModestMainWindow *main_window) { -// GtkLabel *folder_info_label; - gchar *txt; + gchar *txt; ModestConf *conf; GtkWidget *header_view; -/* folder_info_label = */ -/* GTK_LABEL (modest_widget_factory_get_folder_info_label */ -/* (modest_runtime_get_widget_factory())); */ - -/* if (!folder) { */ -/* gtk_label_set_label (GTK_LABEL(folder_info_label), ""); */ -/* return; */ -/* } */ - g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); header_view = modest_main_window_get_child_widget(main_window, @@ -816,7 +858,7 @@ statusbar_push (ModestMainWindow *main_window, guint context_id, const gchar *ms if (status_bar) { gtk_widget_show (status_bar); gtk_statusbar_push (GTK_STATUSBAR(status_bar), 0, msg); - g_timeout_add (1500, (GSourceFunc)statusbar_clean, status_bar); + g_timeout_add (2500, (GSourceFunc)statusbar_clean, status_bar); } } @@ -926,6 +968,14 @@ modest_ui_actions_on_msg_attachment_clicked (ModestMsgView *msgview, int index, } void +modest_ui_actions_on_msg_recpt_activated (ModestMsgView *msgview, + const gchar *address, + ModestWindow *win) +{ + g_message ("%s %s", __FUNCTION__, address); +} + +void modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) { TnyTransportAccount *transport_account; @@ -1027,7 +1077,7 @@ ask_for_folder_name (GtkWindow *parent_window, } void -modest_ui_actions_on_new_folder (GtkWidget *widget, ModestMainWindow *main_window) +modest_ui_actions_on_new_folder (GtkAction *action, ModestMainWindow *main_window) { TnyFolder *parent_folder; GtkWidget *folder_view; @@ -1056,13 +1106,12 @@ modest_ui_actions_on_new_folder (GtkWidget *widget, ModestMainWindow *main_windo TNY_FOLDER_STORE (parent_folder), (const gchar *) folder_name); if (new_folder) { - /* TODO: tinymail should do this. - Update view */ - modest_folder_view_add_subfolder (MODEST_FOLDER_VIEW(folder_view), - new_folder); - - /* Free 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); } @@ -1071,7 +1120,7 @@ modest_ui_actions_on_new_folder (GtkWidget *widget, ModestMainWindow *main_windo } void -modest_ui_actions_on_rename_folder (GtkWidget *widget, +modest_ui_actions_on_rename_folder (GtkAction *action, ModestMainWindow *main_window) { TnyFolder *folder; @@ -1101,11 +1150,7 @@ modest_ui_actions_on_rename_folder (GtkWidget *widget, (const gchar *) folder_name); error = modest_mail_operation_get_error (mail_op); - if (!error) - /* TODO: tinymail should do this. - Update view */ - modest_folder_view_rename (MODEST_FOLDER_VIEW(folder_view)); - else + if (error) /* TODO: notify error ? */ g_warning ("Could not rename a folder: %s\n", error->message); @@ -1130,7 +1175,7 @@ delete_folder (ModestMainWindow *main_window, gboolean move_to_trash) if (!folder_view) return; - folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view)); + folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view)); mail_op = modest_mail_operation_new (); modest_mail_operation_remove_folder (mail_op, folder, move_to_trash); @@ -1139,11 +1184,12 @@ delete_folder (ModestMainWindow *main_window, gboolean move_to_trash) if (error) g_warning ("%s\n", error->message); - g_object_unref (mail_op); + g_object_unref (G_OBJECT (mail_op)); + g_object_unref (G_OBJECT (folder)); } void -modest_ui_actions_on_delete_folder (GtkWidget *widget, +modest_ui_actions_on_delete_folder (GtkAction *action, ModestMainWindow *main_window) { g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); @@ -1152,37 +1198,13 @@ modest_ui_actions_on_delete_folder (GtkWidget *widget, } void -modest_ui_actions_on_move_folder_to_trash_folder (GtkWidget *widget, ModestMainWindow *main_window) +modest_ui_actions_on_move_folder_to_trash_folder (GtkAction *action, ModestMainWindow *main_window) { g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); delete_folder (main_window, TRUE); } -void -modest_ui_actions_on_folder_xfer (ModestFolderView *folder_view, - TnyFolder *folder, - TnyFolderStore *parent, - gboolean delete_source, - TnyFolder **new_folder, - gpointer user_data) -{ - ModestMailOperation *mail_op; - const GError *error; - - /* Try to move the folder */ - mail_op = modest_mail_operation_new (); - *new_folder = modest_mail_operation_xfer_folder (mail_op, folder, parent, delete_source); - - error = modest_mail_operation_get_error (mail_op); - if (error) - g_warning ("Error transferring folder: %s\n", error->message); - - g_object_unref (G_OBJECT (mail_op)); -} - - - void modest_ui_actions_on_password_requested (TnyAccountStore *account_store, const gchar* account_name,