#include <canberra.h>
#include <modest-datetime-formatter.h>
#include "modest-header-window.h"
+#include <modest-folder-window.h>
#ifdef MODEST_HAVE_MCE
#include <mce/dbus-names.h>
TnyList *
modest_platform_get_list_to_move (ModestWindow *window)
{
- ModestHeaderView *header_view;
+ if (MODEST_IS_HEADER_WINDOW (window)) {
+ ModestHeaderView *header_view;
- header_view = modest_header_window_get_header_view (MODEST_HEADER_WINDOW (window));
+ header_view = modest_header_window_get_header_view (MODEST_HEADER_WINDOW (window));
- return modest_header_view_get_selected_headers (header_view);
+ return modest_header_view_get_selected_headers (header_view);
+ } else if (MODEST_IS_FOLDER_WINDOW (window)) {
+ ModestFolderView *folder_view;
+ TnyFolderStore *selected_folder;
+ TnyList *list;
+
+ list = TNY_LIST (tny_simple_list_new ());
+ folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (window));
+ selected_folder = modest_folder_view_get_selected (folder_view);
+ if (selected_folder) {
+ tny_list_prepend (list, G_OBJECT (selected_folder));
+ g_object_unref (selected_folder);
+ }
+ return list;
+ } else {
+ return NULL;
+ }
}
GtkWidget *folder_view,
TnyFolderStore *dst_folder,
ModestMainWindow *win);
+static void modest_ui_actions_on_folder_window_move_to (GtkWidget *folder_view,
+ TnyFolderStore *dst_folder,
+ TnyList *selection,
+ GtkWindow *win);
static void modest_ui_actions_on_window_move_to (GtkAction *action,
TnyList *list_to_move,
folder_view,
dst_folder,
MODEST_MAIN_WINDOW (parent_win));
+#ifdef MODEST_TOOLKIT_HILDON2
+ } else if (MODEST_IS_FOLDER_WINDOW (parent_win)) {
+ modest_ui_actions_on_folder_window_move_to (folder_view,
+ dst_folder,
+ helper->list,
+ GTK_WINDOW (parent_win));
+#endif
} else {
/* Moving from headers window in edit mode */
modest_ui_actions_on_window_move_to (NULL, helper->list,
GObject *object;
object = modest_mail_operation_get_source (mail_op);
- folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(object),
- MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
- g_object_ref (folder_view);
- g_object_unref (object);
- move_to_cb (mail_op, user_data);
- modest_folder_view_select_folder (MODEST_FOLDER_VIEW (folder_view), new_folder, FALSE);
- g_object_unref (folder_view);
+ if (MODEST_IS_MAIN_WINDOW (object)) {
+ folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(object),
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
+ g_object_ref (folder_view);
+ g_object_unref (object);
+ move_to_cb (mail_op, user_data);
+ modest_folder_view_select_folder (MODEST_FOLDER_VIEW (folder_view), new_folder, FALSE);
+ g_object_unref (folder_view);
+ } else {
+ move_to_cb (mail_op, user_data);
+ }
}
static void
GtkTreeSelection *sel;
ModestMailOperation *mail_op = NULL;
- if (canceled || err || !MODEST_IS_MAIN_WINDOW (parent_window)) {
+ if (canceled || err || !MODEST_IS_WINDOW (parent_window)) {
g_object_unref (G_OBJECT (info->src_folder));
g_object_unref (G_OBJECT (info->dst_folder));
g_free (info);
/* modest_folder_view_select_folder (MODEST_FOLDER_VIEW(folder_view), */
/* TNY_FOLDER (src_folder), TRUE); */
- modest_folder_view_select_folder (MODEST_FOLDER_VIEW(info->folder_view),
- TNY_FOLDER (info->dst_folder), TRUE);
+ if (MODEST_IS_MAIN_WINDOW (parent_window)) {
+ modest_folder_view_select_folder (MODEST_FOLDER_VIEW(info->folder_view),
+ TNY_FOLDER (info->dst_folder), TRUE);
+ }
modest_mail_operation_xfer_folder (mail_op,
TNY_FOLDER (info->src_folder),
info->dst_folder,
g_object_unref (src_folder);
}
+#ifdef MODEST_TOOLKIT_HILDON2
+/*
+ * UI handler for the "Move to" action when invoked from the
+ * ModestFolderWindow
+ */
+static void
+modest_ui_actions_on_folder_window_move_to (GtkWidget *folder_view,
+ TnyFolderStore *dst_folder,
+ TnyList *selection,
+ GtkWindow *win)
+{
+ TnyFolderStore *src_folder = NULL;
+ TnyIterator *iterator;
+
+ if (tny_list_get_length (selection) != 1)
+ return;
+
+ iterator = tny_list_create_iterator (selection);
+ src_folder = TNY_FOLDER_STORE (tny_iterator_get_current (iterator));
+ g_object_unref (iterator);
+
+
+ gboolean do_xfer = TRUE;
+
+ /* Allow only to transfer folders to the local root folder */
+ if (TNY_IS_ACCOUNT (dst_folder) &&
+ !MODEST_IS_TNY_LOCAL_FOLDERS_ACCOUNT (dst_folder) &&
+ !modest_tny_account_is_memory_card_account (TNY_ACCOUNT (dst_folder))) {
+ do_xfer = FALSE;
+ } else if (!TNY_IS_FOLDER (src_folder)) {
+ g_warning ("%s: src_folder is not a TnyFolder.\n", __FUNCTION__);
+ do_xfer = FALSE;
+ }
+
+ if (do_xfer) {
+ MoveFolderInfo *info = g_new0 (MoveFolderInfo, 1);
+ DoubleConnectionInfo *connect_info = g_slice_new (DoubleConnectionInfo);
+
+ info->src_folder = g_object_ref (src_folder);
+ info->dst_folder = g_object_ref (dst_folder);
+ info->delete_original = TRUE;
+ info->folder_view = folder_view;
+
+ connect_info->callback = on_move_folder_cb;
+ connect_info->dst_account = get_account_from_folder_store (TNY_FOLDER_STORE (dst_folder));
+ connect_info->data = info;
+
+ modest_platform_double_connect_and_perform(GTK_WINDOW (win), TRUE,
+ TNY_FOLDER_STORE (src_folder),
+ connect_info);
+ }
+ /* Frees */
+ g_object_unref (src_folder);
+}
+#endif
+
void
modest_ui_actions_transfer_messages_helper (GtkWindow *win,
modest_ui_actions_on_move_to (GtkAction *action,
ModestWindow *win)
{
+ modest_ui_actions_on_edit_mode_move_to (win);
+}
+
+gboolean
+modest_ui_actions_on_edit_mode_move_to (ModestWindow *win)
+{
GtkWidget *dialog = NULL, *folder_view = NULL;
ModestMainWindow *main_window;
MoveToInfo *helper = NULL;
- g_return_if_fail (MODEST_IS_WINDOW (win));
+ g_return_val_if_fail (MODEST_IS_WINDOW (win), FALSE);
/* Get the main window if exists */
if (MODEST_IS_MAIN_WINDOW (win))
/* Show the dialog */
gtk_widget_show (dialog);
+
+ return TRUE;
}
/*