gtk_window_set_default_size (GTK_WINDOW (dialog), 300, 300);
+ gtk_widget_show (GTK_DIALOG (dialog)->vbox);
+ gtk_widget_show (folder_view_container);
+ gtk_widget_show (*folder_view);
+
return dialog;
}
+
+
+TnyList *
+modest_platform_get_list_to_move (ModestWindow *window)
+{
+ TnyList *list = NULL;
+
+ /* If it's a main window then it could be that we're moving a
+ folder or a set of messages */
+ if (MODEST_IS_MAIN_WINDOW (window)) {
+ ModestHeaderView *header_view = NULL;
+ ModestFolderView *folder_view = NULL;
+
+ folder_view = (ModestFolderView *)
+ modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (window),
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
+ header_view = (ModestHeaderView *)
+ modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (window),
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
+
+ /* Get folder or messages to transfer */
+ if (gtk_widget_is_focus (GTK_WIDGET (folder_view))) {
+ TnyFolderStore *src_folder;
+
+ src_folder = modest_folder_view_get_selected (folder_view);
+ if (src_folder) {
+ list = tny_simple_list_new ();
+ tny_list_prepend (list, G_OBJECT (src_folder));
+ g_object_unref (src_folder);
+ }
+ } else if (gtk_widget_is_focus (GTK_WIDGET(header_view))) {
+ list = modest_header_view_get_selected_headers(header_view);
+ }
+ } else if (MODEST_IS_MSG_VIEW_WINDOW (window)) {
+ TnyHeader *header = NULL;
+
+ /* We simply return the currently viewed message */
+ header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (window));
+ if (header) {
+ list = tny_simple_list_new ();
+ tny_list_prepend (list, G_OBJECT (header));
+ g_object_unref (header);
+ }
+ }
+ return list;
+}
GtkWidget *banner;
} PasteAsAttachmentHelper;
+typedef struct {
+ TnyList *list;
+ ModestWindow *win;
+} MoveToInfo;
/*
* The do_headers_action uses this kind of functions to perform some
TnyFolderStore *dst_folder,
ModestMainWindow *win);
-static void modest_ui_actions_on_msg_view_window_move_to (GtkAction *action,
- TnyFolderStore *dst_folder,
- ModestMsgViewWindow *win);
+static void modest_ui_actions_on_window_move_to (GtkAction *action,
+ TnyList *list_to_move,
+ TnyFolderStore *dst_folder,
+ ModestWindow *win);
/*
* This function checks whether a TnyFolderStore is a pop account
void
modest_ui_actions_on_msg_attachment_clicked (ModestMsgView *msgview, TnyMimePart *mime_part,
ModestWindow *win)
-{
+{
/* we check for low-mem; in that case, show a warning, and don't allow
* viewing attachments
*/
gpointer user_data)
{
GtkWidget *parent_win, *folder_view;
+ MoveToInfo *helper = NULL;
+
+ helper = (MoveToInfo *) user_data;
- parent_win = (GtkWidget *) user_data;
+ parent_win = (GtkWidget *) helper->win;
folder_view = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog),
MODEST_MOVE_TO_DIALOG_FOLDER_VIEW));
case MODEST_GTK_RESPONSE_NEW_FOLDER:
modest_ui_actions_create_folder (GTK_WIDGET (dialog), folder_view);
- break;
+ return;
case GTK_RESPONSE_NONE:
case GTK_RESPONSE_CANCEL:
case GTK_RESPONSE_DELETE_EVENT:
- gtk_widget_destroy (GTK_WIDGET (dialog));
break;
case GTK_RESPONSE_OK:
dst_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
dst_folder,
MODEST_MAIN_WINDOW (parent_win));
} else {
- modest_ui_actions_on_msg_view_window_move_to (NULL,
- dst_folder,
- MODEST_MSG_VIEW_WINDOW (parent_win));
+ /* Moving from headers window in edit mode */
+ modest_ui_actions_on_window_move_to (NULL, helper->list,
+ dst_folder,
+ MODEST_WINDOW (parent_win));
}
+
if (dst_folder)
g_object_unref (dst_folder);
- gtk_widget_destroy (GTK_WIDGET (dialog));
+
break;
default:
g_warning ("%s unexpected response id %d", __FUNCTION__, response);
}
+
+ /* Free the helper and exit */
+ g_object_unref (helper->list);
+ g_slice_free (MoveToInfo, helper);
+ gtk_widget_destroy (GTK_WIDGET (dialog));
}
static GtkWidget*
modest_folder_view_get_account_id_of_visible_server_account (MODEST_FOLDER_VIEW(folder_view));
/* Show the same account than the one that is shown in the main window */
- modest_folder_view_set_account_id_of_visible_server_account (MODEST_FOLDER_VIEW(tree_view),
+ modest_folder_view_set_account_id_of_visible_server_account (MODEST_FOLDER_VIEW(tree_view),
visible_id);
} else {
const gchar *active_account_name = NULL;
modest_folder_view_set_style (MODEST_FOLDER_VIEW (tree_view),
MODEST_FOLDER_VIEW_STYLE_SHOW_ALL);
- modest_folder_view_update_model (MODEST_FOLDER_VIEW (tree_view),
+ modest_folder_view_update_model (MODEST_FOLDER_VIEW (tree_view),
TNY_ACCOUNT_STORE (modest_runtime_get_account_store ()));
active_account_name = modest_window_get_active_account (MODEST_WINDOW (win));
src_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
/* Get header view */
- header_view = MODEST_HEADER_VIEW(modest_main_window_get_child_widget (win, MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW));
+ header_view = (ModestHeaderView *)
+ modest_main_window_get_child_widget (win, MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
/* Get folder or messages to transfer */
if (gtk_widget_is_focus (folder_view)) {
do_xfer = FALSE;
}
- if (do_xfer) {
+ if (do_xfer) {
MoveFolderInfo *info = g_new0 (MoveFolderInfo, 1);
DoubleConnectionInfo *connect_info = g_slice_new (DoubleConnectionInfo);
* UI handler for the "Move to" action when invoked from the
* ModestMsgViewWindow
*/
-static void
-modest_ui_actions_on_msg_view_window_move_to (GtkAction *action,
- TnyFolderStore *dst_folder,
- ModestMsgViewWindow *win)
+static void
+modest_ui_actions_on_window_move_to (GtkAction *action,
+ TnyList *headers,
+ TnyFolderStore *dst_folder,
+ ModestWindow *win)
{
- TnyList *headers = NULL;
- TnyHeader *header = NULL;
TnyFolder *src_folder = NULL;
g_return_if_fail (TNY_IS_FOLDER (dst_folder));
- /* Create header list */
- header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (win));
- src_folder = TNY_FOLDER (tny_header_get_folder(header));
- headers = tny_simple_list_new ();
- tny_list_append (headers, G_OBJECT (header));
+ if (headers) {
+ TnyHeader *header = NULL;
+ TnyIterator *iter;
- /* Transfer the messages */
- modest_ui_actions_transfer_messages_helper (GTK_WINDOW (win), src_folder, headers,
- TNY_FOLDER (dst_folder));
+ iter = tny_list_create_iterator (headers);
+ header = (TnyHeader *) tny_iterator_get_current (iter);
+ src_folder = tny_header_get_folder (header);
- /* Frees */
- g_object_unref (src_folder);
- g_object_unref (header);
- g_object_unref (headers);
+ /* Transfer the messages */
+ modest_ui_actions_transfer_messages_helper (GTK_WINDOW (win), src_folder,
+ headers,
+ TNY_FOLDER (dst_folder));
+
+ /* Frees */
+ g_object_unref (header);
+ g_object_unref (iter);
+ g_object_unref (src_folder);
+ }
}
void
{
GtkWidget *dialog = NULL, *folder_view = NULL;
ModestMainWindow *main_window;
+ MoveToInfo *helper = NULL;
g_return_if_fail (MODEST_IS_WINDOW (win));
GTK_WINDOW (dialog),
(GtkWindow *) win);
+ /* Create helper */
+ helper = g_slice_new0 (MoveToInfo);
+ helper->list = modest_platform_get_list_to_move (MODEST_WINDOW (win));
+ helper->win = win;
+
/* Listen to response signal */
- g_signal_connect (dialog,
- "response",
- G_CALLBACK (on_move_to_dialog_response),
- win);
+ g_signal_connect (dialog, "response", G_CALLBACK (on_move_to_dialog_response), helper);
+ /* Show the dialog */
gtk_widget_show (dialog);
}
static GtkTreePath * get_selected_row (GtkTreeView *self, GtkTreeModel **model);
+#ifndef MODEST_TOOLKIT_HILDON2
static gboolean on_focus_in (GtkWidget *sef,
GdkEventFocus *event,
gpointer user_data);
static gboolean on_focus_out (GtkWidget *self,
GdkEventFocus *event,
gpointer user_data);
+#endif
static void folder_monitor_update (TnyFolderObserver *self,
TnyFolderChange *change);
g_signal_connect (self, "row-activated",
G_CALLBACK (on_header_row_activated), NULL);
+#ifndef MODEST_TOOLKIT_HILDON2
g_signal_connect (self, "focus-in-event",
G_CALLBACK(on_focus_in), NULL);
g_signal_connect (self, "focus-out-event",
G_CALLBACK(on_focus_out), NULL);
+#endif
g_signal_connect (self, "button-press-event",
G_CALLBACK(on_button_press_event), NULL);
return path;
}
+#ifndef MODEST_TOOLKIT_HILDON2
/*
* This function moves the tree view scroll to the current selected
* row when the widget grabs the focus
GdkEventFocus *event,
gpointer user_data)
{
-#ifndef MODEST_TOOLKIT_HILDON2
GtkTreeSelection *selection;
GtkTreeModel *model;
GList *selected = NULL;
/* Frees */
g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL);
g_list_free (selected);
-#endif
return FALSE;
}
}
return FALSE;
}
+#endif
static gboolean
on_button_release_event(GtkWidget * self, GdkEventButton * event, gpointer userdata)