+#endif
+
+
+void
+modest_ui_actions_transfer_messages_helper (GtkWindow *win,
+ TnyFolder *src_folder,
+ TnyList *headers,
+ TnyFolder *dst_folder)
+{
+ gboolean need_connection = TRUE;
+ gboolean do_xfer = TRUE;
+ XferMsgsHelper *helper;
+
+ g_return_if_fail (TNY_IS_FOLDER (src_folder));
+ g_return_if_fail (TNY_IS_FOLDER (dst_folder));
+ g_return_if_fail (TNY_IS_LIST (headers));
+
+ modest_ui_actions_xfer_messages_check (win, TNY_FOLDER_STORE (src_folder),
+ headers, TNY_FOLDER (dst_folder),
+ TRUE, &need_connection,
+ &do_xfer);
+
+ /* If we don't want to transfer just return */
+ if (!do_xfer)
+ return;
+
+ /* Create the helper */
+ helper = g_slice_new (XferMsgsHelper);
+ helper->dst_folder = g_object_ref (dst_folder);
+ helper->headers = g_object_ref (headers);
+
+ if (need_connection) {
+ DoubleConnectionInfo *connect_info = g_slice_new (DoubleConnectionInfo);
+ connect_info->callback = xfer_messages_performer;
+ connect_info->dst_account = tny_folder_get_account (TNY_FOLDER (dst_folder));
+ connect_info->data = helper;
+
+ modest_platform_double_connect_and_perform(GTK_WINDOW (win), TRUE,
+ TNY_FOLDER_STORE (src_folder),
+ connect_info);
+ } else {
+ TnyAccount *src_account = get_account_from_folder_store (TNY_FOLDER_STORE (src_folder));
+ xfer_messages_performer (FALSE, NULL, GTK_WINDOW (win),
+ src_account, helper);
+ g_object_unref (src_account);
+ }
+}
+
+/*
+ * UI handler for the "Move to" action when invoked from the
+ * ModestMsgViewWindow
+ */
+static void
+modest_ui_actions_on_window_move_to (GtkAction *action,
+ TnyList *headers,
+ TnyFolderStore *dst_folder,
+ ModestWindow *win)
+{
+ TnyFolder *src_folder = NULL;
+
+ g_return_if_fail (TNY_IS_FOLDER (dst_folder));
+
+ if (headers) {
+ TnyHeader *header = NULL;
+ TnyIterator *iter;
+
+ iter = tny_list_create_iterator (headers);
+ header = (TnyHeader *) tny_iterator_get_current (iter);
+ src_folder = tny_header_get_folder (header);
+
+ /* 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);
+ }
+}