aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEttore Perazzoli <ettore@src.gnome.org>2001-03-27 02:55:41 +0800
committerEttore Perazzoli <ettore@src.gnome.org>2001-03-27 02:55:41 +0800
commitf342817e88f4e598b7962d94d497c408c45a8107 (patch)
tree030887f24eba1ffab1dcaf29792ba154506752c7
parent4cc23476d3f379c519e6b4a08bf83188fc77f900 (diff)
downloadgsoc2013-evolution-f342817e88f4e598b7962d94d497c408c45a8107.tar
gsoc2013-evolution-f342817e88f4e598b7962d94d497c408c45a8107.tar.gz
gsoc2013-evolution-f342817e88f4e598b7962d94d497c408c45a8107.tar.bz2
gsoc2013-evolution-f342817e88f4e598b7962d94d497c408c45a8107.tar.lz
gsoc2013-evolution-f342817e88f4e598b7962d94d497c408c45a8107.tar.xz
gsoc2013-evolution-f342817e88f4e598b7962d94d497c408c45a8107.tar.zst
gsoc2013-evolution-f342817e88f4e598b7962d94d497c408c45a8107.zip
Finish the DnD stuff by implementing move/copy on the shell side as
well. Now we should just need to implement the corresponding bits in the components... svn path=/trunk/; revision=8949
-rw-r--r--shell/ChangeLog41
-rw-r--r--shell/e-local-folder.c7
-rw-r--r--shell/e-local-folder.h5
-rw-r--r--shell/e-local-storage.c289
-rw-r--r--shell/e-storage-set-view.c13
-rw-r--r--shell/e-storage.h1
-rw-r--r--shell/evolution-shell-component-client.c60
-rw-r--r--shell/evolution-shell-component-client.h6
-rw-r--r--shell/evolution-shell-component.c21
-rw-r--r--shell/evolution-shell-component.h6
10 files changed, 423 insertions, 26 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index b30128eaeb..4b1d82a765 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,3 +1,44 @@
+2001-03-26 Ettore Perazzoli <ettore@ximian.com>
+
+ * evolution-shell-component-client.c
+ (evolution_shell_component_client_async_xfer_folder): Handle CORBA
+ exception.
+ (evolution_shell_component_client_async_create_folder): Likewise.
+
+ * e-local-storage.c (create_folder_directory): Create the
+ `subfolders' directory if it doesn't exist.
+
+ * e-storage-set-view.c (tree_drag_data_received): Build the
+ correct target path by appending the basename from the source
+ path.
+
+ * evolution-shell-component.c
+ (impl_ShellComponent_async_xfer_folder): Enabled again.
+ (class_init): Install it.
+
+ * e-local-folder.c (METADATA_FILE_NAME_LEN): Removed #define.
+ (METADATA_FILE_NAME): Removed #define.
+ (save_metadata): Use the public
+ `E_LOCAL_FOLDER_METADATA_FILE_NAME' value instead.
+ (construct_loading_metadata): Likewise.
+
+ * e-local-folder.h (E_LOCAL_FOLDER_METADATA_FILE_NAME_LEN): New
+ #define.
+ (E_LOCAL_FOLDER_METADATA_FILE_NAME): New #define.
+
+ * e-local-storage.c (remove_folder_directory): New helper
+ function.
+ (async_xfer_folder_step): New.
+ (async_xfer_complete): New.
+ (async_xfer_folder_callback): New.
+ (impl_async_xfer_folder): Implement.
+
+ * e-storage.h: Added value `E_STORAGE_NOTEMPTY' to
+ `EStorageResult'.
+
+ * evolution-shell-component-client.c
+ (evolution_shell_component_clinet_async_xfer_folder): New.
+
2001-03-23 Ettore Perazzoli <ettore@ximian.com>
* e-local-storage.c (impl_async_xfer_folder): New, implementation
diff --git a/shell/e-local-folder.c b/shell/e-local-folder.c
index 62dad4f4c2..68bed01764 100644
--- a/shell/e-local-folder.c
+++ b/shell/e-local-folder.c
@@ -53,9 +53,6 @@ static EFolderClass *parent_class = NULL;
#define URI_PREFIX "file://"
#define URI_PREFIX_LEN 7
-#define METADATA_FILE_NAME "folder-metadata.xml"
-#define METADATA_FILE_NAME_LEN 19
-
struct _ELocalFolderPrivate {
int dummy;
};
@@ -98,7 +95,7 @@ construct_loading_metadata (ELocalFolder *local_folder,
folder = E_FOLDER (local_folder);
- metadata_path = g_concat_dir_and_file (path, METADATA_FILE_NAME);
+ metadata_path = g_concat_dir_and_file (path, E_LOCAL_FOLDER_METADATA_FILE_NAME);
doc = xmlParseFile (metadata_path);
if (doc == NULL) {
@@ -155,7 +152,7 @@ save_metadata (ELocalFolder *local_folder)
(xmlChar *) e_folder_get_description (folder));
physical_directory = e_folder_get_physical_uri (folder) + URI_PREFIX_LEN - 1;
- physical_path = g_concat_dir_and_file (physical_directory, METADATA_FILE_NAME);
+ physical_path = g_concat_dir_and_file (physical_directory, E_LOCAL_FOLDER_METADATA_FILE_NAME);
if (xmlSaveFile (physical_path, doc) < 0) {
unlink (physical_path);
diff --git a/shell/e-local-folder.h b/shell/e-local-folder.h
index 4e83af4b40..b57abe8d6f 100644
--- a/shell/e-local-folder.h
+++ b/shell/e-local-folder.h
@@ -1,7 +1,7 @@
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
/* e-local-folder.h
*
- * Copyright (C) 2000 Helix Code, Inc.
+ * Copyright (C) 2000, 2001 Ximian, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -39,6 +39,9 @@ extern "C" {
#define E_IS_LOCAL_FOLDER(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_LOCAL_FOLDER))
#define E_IS_LOCAL_FOLDER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_TYPE_LOCAL_FOLDER))
+#define E_LOCAL_FOLDER_METADATA_FILE_NAME "folder-metadata.xml"
+#define E_LOCAL_FOLDER_METADATA_FILE_NAME_LEN 19
+
typedef struct _ELocalFolder ELocalFolder;
typedef struct _ELocalFolderClass ELocalFolderClass;
diff --git a/shell/e-local-storage.c b/shell/e-local-storage.c
index bbdc5eaef1..d796345a61 100644
--- a/shell/e-local-storage.c
+++ b/shell/e-local-storage.c
@@ -384,7 +384,7 @@ component_async_create_folder_callback (EvolutionShellComponentClient *shell_com
e_folder_set_physical_uri (folder, callback_data->physical_uri);
if (e_local_folder_save (E_LOCAL_FOLDER (folder))) {
- new_folder (E_LOCAL_STORAGE(callback_data->storage),
+ new_folder (E_LOCAL_STORAGE (callback_data->storage),
callback_data->path, folder);
} else {
rmdir (callback_data->physical_path);
@@ -453,6 +453,14 @@ create_folder_directory (ELocalStorage *local_storage,
subfolders_directory_physical_path = g_concat_dir_and_file (parent_physical_path,
SUBFOLDER_DIR_NAME);
+ if (! g_file_exists (subfolders_directory_physical_path)) {
+ if (mkdir (subfolders_directory_physical_path, 0700) == -1) {
+ g_free (subfolders_directory_physical_path);
+ g_free (parent_physical_path);
+ return errno_to_storage_result ();
+ }
+ }
+
physical_path = g_concat_dir_and_file (subfolders_directory_physical_path,
folder_name);
g_free (subfolders_directory_physical_path);
@@ -541,6 +549,37 @@ create_folder (ELocalStorage *local_storage,
callback_data);
}
+static EStorageResult
+remove_folder_directory (ELocalStorage *local_storage,
+ const char *path)
+{
+ char *physical_path;
+ char *file_name;
+
+ physical_path = get_physical_path (local_storage, path);
+
+ /* 1. Delete the subfolder directory. If this fails, it means that we
+ have subfolders. */
+ file_name = g_concat_dir_and_file (physical_path, SUBFOLDER_DIR_NAME);
+ if (g_file_exists (file_name) && rmdir (file_name) == -1)
+ return E_STORAGE_NOTEMPTY; /* FIXME? */
+ g_free (file_name);
+
+ /* 2. Delete the metadata file associated with this folder. */
+ file_name = g_concat_dir_and_file (physical_path, E_LOCAL_FOLDER_METADATA_FILE_NAME);
+ unlink (file_name);
+ g_free (file_name);
+
+ /* 3. Delete the physical directory. */
+ if (rmdir (physical_path) == -1) {
+ g_free (physical_path);
+ return E_STORAGE_GENERICERROR;
+ }
+
+ g_free (physical_path);
+ return E_STORAGE_OK;
+}
+
/* GtkObject methods. */
@@ -580,6 +619,9 @@ impl_get_name (EStorage *storage)
return E_LOCAL_STORAGE_NAME;
}
+
+/* Creating folders. */
+
static void
impl_async_create_folder (EStorage *storage,
const char *path,
@@ -595,6 +637,9 @@ impl_async_create_folder (EStorage *storage,
create_folder (local_storage, NULL, path, type, description, callback, data);
}
+
+/* Removing folders. */
+
static void
impl_async_remove_folder (EStorage *storage,
const char *path,
@@ -606,14 +651,252 @@ impl_async_remove_folder (EStorage *storage,
local_storage = E_LOCAL_STORAGE (storage);
}
+
+
+/* Transferring folders. */
+
+struct _XferItem {
+ char *source_path;
+ char *destination_path;
+};
+typedef struct _XferItem XferItem;
+
+static XferItem *
+xfer_item_new (char *source_path,
+ char *destination_path)
+{
+ XferItem *new;
+
+ new = g_new (XferItem, 1);
+ new->source_path = source_path;
+ new->destination_path = destination_path;
+
+ return new;
+}
+
+static void
+xfer_item_free (XferItem *item)
+{
+ g_free (item->source_path);
+ g_free (item->destination_path);
+ g_free (item);
+}
+
+static void
+append_xfer_item_list (EStorage *storage,
+ char *source_path,
+ char *destination_path,
+ GList **list)
+{
+ GList *subfolders;
+ GList *p;
+
+ *list = g_list_prepend (*list, xfer_item_new (source_path, destination_path));
+
+ subfolders = e_storage_get_subfolder_paths (storage, source_path);
+ for (p = subfolders; p != NULL; p = p->next) {
+ char *source_subpath;
+ char *destination_subpath;
+
+ source_subpath = g_strdup ((const char *) p->data);
+ destination_subpath = g_concat_dir_and_file (destination_path,
+ g_basename (source_subpath));
+
+ append_xfer_item_list (storage, source_subpath, destination_subpath, list);
+ }
+
+ e_free_string_list (subfolders);
+}
+
+struct _XferData {
+ /* The storage on which we are performing the xfer operation. */
+ ELocalStorage *local_storage;
+
+ /* List of source/destination path couples to copy, in the right
+ order. */
+ GList *folder_items;
+
+ /* Pointer into `folder_items'. The folder item pointed by this is the
+ one handled by the previous CORBA invocation. */
+ GList *current_folder_item;
+
+ /* Whether we want to remove the source too. */
+ gboolean remove_source;
+
+ /* The callback, with its data. */
+ EStorageResultCallback callback;
+ void *callback_data;
+};
+typedef struct _XferData XferData;
+
+static void
+async_xfer_folder_step (ELocalStorage *local_storage,
+ const char *source_path,
+ const char *destination_path,
+ gboolean remove_source,
+ EvolutionShellComponentClientCallback component_client_callback,
+ void *component_client_callback_data)
+{
+ ELocalStoragePrivate *priv;
+ EFolder *source_folder;
+ EvolutionShellComponentClient *component_client;
+ char *physical_path;
+ char *physical_uri;
+
+ priv = local_storage->priv;
+
+ g_print ("async_xfer_folder_step %s -> %s\n", source_path, destination_path);
+
+ source_folder = e_storage_get_folder (E_STORAGE (local_storage), source_path);
+ g_assert (source_folder != NULL);
+
+ create_folder_directory (local_storage, destination_path,
+ e_folder_get_type_string (source_folder),
+ e_folder_get_description (source_folder),
+ &physical_path);
+
+ physical_uri = g_strconcat ("file://", physical_path, NULL);
+ g_free (physical_path);
+
+ component_client = e_folder_type_registry_get_handler_for_type (priv->folder_type_registry,
+ e_folder_get_type_string (source_folder));
+ g_assert (component_client != NULL);
+
+ evolution_shell_component_client_async_xfer_folder (component_client,
+ e_folder_get_physical_uri (source_folder),
+ physical_uri,
+ remove_source,
+ component_client_callback,
+ component_client_callback_data);
+
+ g_free (physical_uri);
+}
+
+static void
+async_xfer_folder_complete (XferData *xfer_data)
+{
+ ELocalStorage *local_storage;
+ GList *p;
+
+ local_storage = xfer_data->local_storage;
+
+#if 0
+ if (xfer_data->remove_source) {
+ EStorageResult result;
+
+ /* Remove all the source physical directories, and also the
+ corresponding folders from the folder tree. */
+
+ for (p = g_list_last (xfer_data->folder_items); p != NULL; p = p->prev) {
+ XferItem *item;
+
+ item = (XferItem *) p->data;
+
+ result = remove_folder_directory (local_storage, item->source_path);
+
+ /* FIXME handle failure differently? This should be n
+ unlikely situation. */
+ if (result == E_STORAGE_OK)
+ e_storage_removed_folder (E_STORAGE (local_storage), item->source_path);
+ }
+ }
+#endif
+
+ /* Free the data. */
+
+ for (p = xfer_data->folder_items; p != NULL; p = p->next) {
+ XferItem *item;
+
+ item = (XferItem *) p->data;
+ xfer_item_free (item);
+ }
+ g_list_free (xfer_data->folder_items);
+
+ g_free (xfer_data);
+}
+
+static void
+async_xfer_folder_callback (EvolutionShellComponentClient *shell_component_client,
+ EvolutionShellComponentResult result,
+ void *callback_data)
+{
+ XferData *xfer_data;
+ XferItem *item;
+ EFolder *source_folder;
+ EFolder *destination_folder;
+ char *new_physical_uri;
+
+ /* FIXME handle errors. */
+
+ xfer_data = (XferData *) callback_data;
+
+ item = (XferItem *) xfer_data->current_folder_item->data;
+
+ source_folder = e_storage_get_folder (E_STORAGE (xfer_data->local_storage), item->source_path);
+ destination_folder = e_local_folder_new (e_folder_get_name (source_folder),
+ e_folder_get_type_string (source_folder),
+ e_folder_get_description (source_folder));
+
+ new_physical_uri = g_strconcat ("file:///", item->destination_path, NULL);
+ e_folder_set_physical_uri (destination_folder, new_physical_uri);
+ g_free (new_physical_uri);
+
+ e_local_folder_save (E_LOCAL_FOLDER (new_folder)); /* FIXME check for errors */
+ new_folder (xfer_data->local_storage, item->destination_path, destination_folder);
+
+ xfer_data->current_folder_item = xfer_data->current_folder_item->next;
+ if (xfer_data->current_folder_item == NULL) {
+ async_xfer_folder_complete (xfer_data);
+ return;
+ }
+
+ item = (XferItem *) xfer_data->current_folder_item->data;
+
+ async_xfer_folder_step (xfer_data->local_storage,
+ item->source_path,
+ item->destination_path,
+ xfer_data->remove_source,
+ async_xfer_folder_callback,
+ xfer_data);
+}
+
static void
impl_async_xfer_folder (EStorage *storage,
const char *source_path,
const char *destination_path,
- const gboolean remove_source,
+ gboolean remove_source,
EStorageResultCallback callback,
- void *data)
+ void *callback_data)
{
+ ELocalStorage *local_storage;
+ ELocalStoragePrivate *priv;
+ XferData *xfer_data;
+ GList *folder_items; /* <XferItem> */
+ XferItem *first_item;
+
+ local_storage = E_LOCAL_STORAGE (storage);
+ priv = local_storage->priv;
+
+ folder_items = NULL;
+ append_xfer_item_list (storage, g_strdup (source_path), g_strdup (destination_path), &folder_items);
+ folder_items = g_list_reverse (folder_items); /* lame */
+
+ xfer_data = g_new (XferData, 1);
+ xfer_data->local_storage = local_storage;
+ xfer_data->folder_items = folder_items;
+ xfer_data->current_folder_item = folder_items;
+ xfer_data->remove_source = remove_source;
+ xfer_data->callback = callback;
+ xfer_data->callback_data = callback_data;
+
+ first_item = (XferItem *) xfer_data->folder_items->data;
+
+ async_xfer_folder_step (E_LOCAL_STORAGE (storage),
+ first_item->source_path,
+ first_item->destination_path,
+ remove_source,
+ async_xfer_folder_callback,
+ xfer_data);
}
diff --git a/shell/e-storage-set-view.c b/shell/e-storage-set-view.c
index fcc288b70b..dc084fac35 100644
--- a/shell/e-storage-set-view.c
+++ b/shell/e-storage-set-view.c
@@ -1170,17 +1170,22 @@ tree_drag_data_received (ETree *etree,
if (strcmp (target_type, EVOLUTION_PATH_TARGET_TYPE) == 0) {
const char *source_path;
- const char *destination_path;
+ const char *destination_folder_path;
+ char *destination_path;
source_path = (const char *) selection_data->data;
/* (Basic sanity checks.) */
if (source_path == NULL || source_path[0] != G_DIR_SEPARATOR || source_path[1] == '\0')
return;
- destination_path = e_tree_memory_node_get_data (E_TREE_MEMORY (priv->etree_model), path);
- if (destination_path == NULL)
+ destination_folder_path = e_tree_memory_node_get_data (E_TREE_MEMORY (priv->etree_model), path);
+ if (destination_folder_path == NULL)
return;
+ destination_path = g_concat_dir_and_file (destination_folder_path,
+ g_basename (source_path));
+
+
switch (context->action) {
case GDK_ACTION_MOVE:
g_print ("EStorageSetView: Moving from `%s' to `%s'\n", source_path, destination_path);
@@ -1195,6 +1200,8 @@ tree_drag_data_received (ETree *etree,
default:
g_warning ("EStorageSetView: Don't know action %d\n", context->action);
}
+
+ g_free (destination_path);
}
target_path = e_tree_memory_node_get_data (E_TREE_MEMORY(priv->etree_model), path);
diff --git a/shell/e-storage.h b/shell/e-storage.h
index bd3ef5a61c..c32a054dd3 100644
--- a/shell/e-storage.h
+++ b/shell/e-storage.h
@@ -51,6 +51,7 @@ enum _EStorageResult {
E_STORAGE_INVALIDTYPE,
E_STORAGE_IOERROR,
E_STORAGE_NOSPACE,
+ E_STORAGE_NOTEMPTY,
E_STORAGE_NOTFOUND,
E_STORAGE_NOTIMPLEMENTED,
E_STORAGE_PERMISSIONDENIED,
diff --git a/shell/evolution-shell-component-client.c b/shell/evolution-shell-component-client.c
index a3d1f1ea69..d177cf2577 100644
--- a/shell/evolution-shell-component-client.c
+++ b/shell/evolution-shell-component-client.c
@@ -574,6 +574,14 @@ evolution_shell_component_client_async_create_folder (EvolutionShellComponentCli
physical_uri, type,
&ev);
+ if (ev._major != CORBA_NO_EXCEPTION && priv->callback != NULL) {
+ (* callback) (shell_component_client,
+ shell_component_result_from_corba_exception (ev),
+ data);
+ priv->callback = NULL;
+ priv->callback_data = NULL;
+ }
+
CORBA_exception_free (&ev);
}
@@ -587,6 +595,58 @@ evolution_shell_component_client_async_remove_folder (EvolutionShellComponentCli
}
void
+evolution_shell_component_client_async_xfer_folder (EvolutionShellComponentClient *shell_component_client,
+ const char *source_physical_uri,
+ const char *destination_physical_uri,
+ gboolean remove_source,
+ EvolutionShellComponentClientCallback callback,
+ void *data)
+{
+ EvolutionShellComponentClientPrivate *priv;
+ GNOME_Evolution_ShellComponent corba_shell_component;
+ CORBA_Environment ev;
+
+ g_return_if_fail (shell_component_client != NULL);
+ g_return_if_fail (EVOLUTION_IS_SHELL_COMPONENT_CLIENT (shell_component_client));
+ g_return_if_fail (source_physical_uri != NULL);
+ g_return_if_fail (destination_physical_uri != NULL);
+ g_return_if_fail (data != NULL);
+
+ priv = shell_component_client->priv;
+
+ if (priv->callback != NULL) {
+ (* callback) (shell_component_client, EVOLUTION_SHELL_COMPONENT_BUSY, data);
+ return;
+ }
+
+ create_listener_interface (shell_component_client);
+
+ CORBA_exception_init (&ev);
+
+ corba_shell_component = bonobo_object_corba_objref (BONOBO_OBJECT (shell_component_client));
+
+ priv->callback = callback;
+ priv->callback_data = data;
+
+ GNOME_Evolution_ShellComponent_xferFolderAsync (corba_shell_component,
+ priv->listener_interface,
+ source_physical_uri,
+ destination_physical_uri,
+ remove_source,
+ &ev);
+
+ if (ev._major != CORBA_NO_EXCEPTION && priv->callback != NULL) {
+ (* callback) (shell_component_client,
+ shell_component_result_from_corba_exception (ev),
+ data);
+ priv->callback = NULL;
+ priv->callback_data = NULL;
+ }
+
+ CORBA_exception_free (&ev);
+}
+
+void
evolution_shell_component_client_populate_folder_context_menu (EvolutionShellComponentClient *shell_component_client,
BonoboUIComponent *uih,
const char *physical_uri,
diff --git a/shell/evolution-shell-component-client.h b/shell/evolution-shell-component-client.h
index 59c6f284d5..579d830184 100644
--- a/shell/evolution-shell-component-client.h
+++ b/shell/evolution-shell-component-client.h
@@ -95,6 +95,12 @@ void evolution_shell_component_client_async_remove_folder (EvolutionShellCompo
const char *physical_uri,
EvolutionShellComponentClientCallback callback,
void *data);
+void evolution_shell_component_client_async_xfer_folder (EvolutionShellComponentClient *shell_component_client,
+ const char *source_physical_uri,
+ const char *destination_physical_uri,
+ gboolean remove_source,
+ EvolutionShellComponentClientCallback callback,
+ void *data);
void evolution_shell_component_client_populate_folder_context_menu (EvolutionShellComponentClient *shell_component_client,
BonoboUIComponent *uih,
diff --git a/shell/evolution-shell-component.c b/shell/evolution-shell-component.c
index 70b7423ece..c0ff34e31b 100644
--- a/shell/evolution-shell-component.c
+++ b/shell/evolution-shell-component.c
@@ -44,7 +44,7 @@ struct _EvolutionShellComponentPrivate {
EvolutionShellComponentCreateViewFn create_view_fn;
EvolutionShellComponentCreateFolderFn create_folder_fn;
EvolutionShellComponentRemoveFolderFn remove_folder_fn;
- EvolutionShellComponentCopyFolderFn copy_folder_fn;
+ EvolutionShellComponentXferFolderFn xfer_folder_fn;
EvolutionShellComponentPopulateFolderContextMenuFn populate_folder_context_menu_fn;
EvolutionShellComponentGetDndSelectionFn get_dnd_selection_fn;
@@ -306,9 +306,8 @@ impl_ShellComponent_async_remove_folder (PortableServer_Servant servant,
(* priv->remove_folder_fn) (shell_component, physical_uri, listener, priv->closure);
}
-#if 0
static void
-impl_ShellComponent_async_copy_folder (PortableServer_Servant servant,
+impl_ShellComponent_async_xfer_folder (PortableServer_Servant servant,
const GNOME_Evolution_ShellComponentListener listener,
const CORBA_char *source_physical_uri,
const CORBA_char *destination_physical_uri,
@@ -323,21 +322,20 @@ impl_ShellComponent_async_copy_folder (PortableServer_Servant servant,
shell_component = EVOLUTION_SHELL_COMPONENT (bonobo_object);
priv = shell_component->priv;
- if (priv->copy_folder_fn == NULL) {
+ if (priv->xfer_folder_fn == NULL) {
GNOME_Evolution_ShellComponentListener_notifyResult (listener,
GNOME_Evolution_ShellComponentListener_UNSUPPORTED_OPERATION,
ev);
return;
}
- (* priv->copy_folder_fn) (shell_component,
+ (* priv->xfer_folder_fn) (shell_component,
source_physical_uri,
destination_physical_uri,
remove_source,
listener,
priv->closure);
}
-#endif
static void
impl_ShellComponent_populate_folder_context_menu (PortableServer_Servant servant,
@@ -447,6 +445,7 @@ class_init (EvolutionShellComponentClass *klass)
epv->createView = impl_ShellComponent_create_view;
epv->createFolderAsync = impl_ShellComponent_async_create_folder;
epv->removeFolderAsync = impl_ShellComponent_async_remove_folder;
+ epv->xferFolderAsync = impl_ShellComponent_async_xfer_folder;
epv->populateFolderContextMenu = impl_ShellComponent_populate_folder_context_menu;
}
@@ -461,7 +460,7 @@ init (EvolutionShellComponent *shell_component)
priv->create_view_fn = NULL;
priv->create_folder_fn = NULL;
priv->remove_folder_fn = NULL;
- priv->copy_folder_fn = NULL;
+ priv->xfer_folder_fn = NULL;
priv->populate_folder_context_menu_fn = NULL;
priv->owner_client = NULL;
@@ -477,7 +476,7 @@ evolution_shell_component_construct (EvolutionShellComponent *shell_component,
EvolutionShellComponentCreateViewFn create_view_fn,
EvolutionShellComponentCreateFolderFn create_folder_fn,
EvolutionShellComponentRemoveFolderFn remove_folder_fn,
- EvolutionShellComponentCopyFolderFn copy_folder_fn,
+ EvolutionShellComponentXferFolderFn xfer_folder_fn,
EvolutionShellComponentPopulateFolderContextMenuFn populate_folder_context_menu_fn,
EvolutionShellComponentGetDndSelectionFn get_dnd_selection_fn,
void *closure)
@@ -492,7 +491,7 @@ evolution_shell_component_construct (EvolutionShellComponent *shell_component,
priv->create_view_fn = create_view_fn;
priv->create_folder_fn = create_folder_fn;
priv->remove_folder_fn = remove_folder_fn;
- priv->copy_folder_fn = copy_folder_fn;
+ priv->xfer_folder_fn = xfer_folder_fn;
priv->populate_folder_context_menu_fn = populate_folder_context_menu_fn;
priv->get_dnd_selection_fn = get_dnd_selection_fn;
@@ -524,7 +523,7 @@ evolution_shell_component_new (const EvolutionShellComponentFolderType folder_ty
EvolutionShellComponentCreateViewFn create_view_fn,
EvolutionShellComponentCreateFolderFn create_folder_fn,
EvolutionShellComponentRemoveFolderFn remove_folder_fn,
- EvolutionShellComponentCopyFolderFn copy_folder_fn,
+ EvolutionShellComponentXferFolderFn xfer_folder_fn,
EvolutionShellComponentPopulateFolderContextMenuFn populate_folder_context_menu_fn,
EvolutionShellComponentGetDndSelectionFn get_dnd_selection_fn,
void *closure)
@@ -538,7 +537,7 @@ evolution_shell_component_new (const EvolutionShellComponentFolderType folder_ty
create_view_fn,
create_folder_fn,
remove_folder_fn,
- copy_folder_fn,
+ xfer_folder_fn,
populate_folder_context_menu_fn,
get_dnd_selection_fn,
closure);
diff --git a/shell/evolution-shell-component.h b/shell/evolution-shell-component.h
index 6f7a77a194..3248ca9e36 100644
--- a/shell/evolution-shell-component.h
+++ b/shell/evolution-shell-component.h
@@ -83,7 +83,7 @@ typedef void (* EvolutionShellComponentRemoveFolderFn) (EvolutionShellComponent
const char *physical_uri,
const GNOME_Evolution_ShellComponentListener listener,
void *closure);
-typedef void (* EvolutionShellComponentCopyFolderFn) (EvolutionShellComponent *shell_component,
+typedef void (* EvolutionShellComponentXferFolderFn) (EvolutionShellComponent *shell_component,
const char *source_physical_uri,
const char *destination_physical_uri,
gboolean remove_source,
@@ -138,7 +138,7 @@ void evolution_shell_component_construct (EvolutionShellCom
EvolutionShellComponentCreateViewFn create_view_fn,
EvolutionShellComponentCreateFolderFn create_folder_fn,
EvolutionShellComponentRemoveFolderFn remove_folder_fn,
- EvolutionShellComponentCopyFolderFn copy_folder_fn,
+ EvolutionShellComponentXferFolderFn xfer_folder_fn,
EvolutionShellComponentPopulateFolderContextMenuFn populate_folder_context_menu_fn,
EvolutionShellComponentGetDndSelectionFn get_dnd_selection_fn,
void *closure);
@@ -146,7 +146,7 @@ EvolutionShellComponent *evolution_shell_component_new (const EvolutionSh
EvolutionShellComponentCreateViewFn create_view_fn,
EvolutionShellComponentCreateFolderFn create_folder_fn,
EvolutionShellComponentRemoveFolderFn remove_folder_fn,
- EvolutionShellComponentCopyFolderFn copy_folder_fn,
+ EvolutionShellComponentXferFolderFn xfer_folder_fn,
EvolutionShellComponentPopulateFolderContextMenuFn populate_folder_context_menu_fn,
EvolutionShellComponentGetDndSelectionFn get_dnd_selection_fn,
void *closure);