aboutsummaryrefslogtreecommitdiffstats
path: root/shell/evolution-shell-component.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/evolution-shell-component.c')
-rw-r--r--shell/evolution-shell-component.c53
1 files changed, 47 insertions, 6 deletions
diff --git a/shell/evolution-shell-component.c b/shell/evolution-shell-component.c
index 89b4eb0b0f..a426c60375 100644
--- a/shell/evolution-shell-component.c
+++ b/shell/evolution-shell-component.c
@@ -43,6 +43,7 @@ struct _EvolutionShellComponentPrivate {
EvolutionShellComponentCreateViewFn create_view_fn;
EvolutionShellComponentCreateFolderFn create_folder_fn;
EvolutionShellComponentRemoveFolderFn remove_folder_fn;
+ EvolutionShellComponentCopyFolderFn copy_folder_fn;
EvolutionShellComponentPopulateFolderContextMenu populate_folder_context_menu_fn;
EvolutionShellClient *owner_client;
@@ -234,8 +235,8 @@ impl_ShellComponent_async_create_folder (PortableServer_Servant servant,
if (priv->create_folder_fn == NULL) {
GNOME_Evolution_ShellComponentListener_notifyResult (listener,
- GNOME_Evolution_ShellComponentListener_UNSUPPORTED_OPERATION,
- ev);
+ GNOME_Evolution_ShellComponentListener_UNSUPPORTED_OPERATION,
+ ev);
return;
}
@@ -258,8 +259,8 @@ impl_ShellComponent_async_remove_folder (PortableServer_Servant servant,
if (priv->remove_folder_fn == NULL) {
GNOME_Evolution_ShellComponentListener_notifyResult (listener,
- GNOME_Evolution_ShellComponentListener_UNSUPPORTED_OPERATION,
- ev);
+ GNOME_Evolution_ShellComponentListener_UNSUPPORTED_OPERATION,
+ ev);
return;
}
@@ -267,6 +268,37 @@ impl_ShellComponent_async_remove_folder (PortableServer_Servant servant,
}
static void
+impl_ShellComponent_async_copy_folder (PortableServer_Servant servant,
+ const GNOME_Evolution_ShellComponentListener listener,
+ const CORBA_char *source_physical_uri,
+ const CORBA_char *destination_physical_uri,
+ const CORBA_boolean remove_source,
+ CORBA_Environment *ev)
+{
+ BonoboObject *bonobo_object;
+ EvolutionShellComponent *shell_component;
+ EvolutionShellComponentPrivate *priv;
+
+ bonobo_object = bonobo_object_from_servant (servant);
+ shell_component = EVOLUTION_SHELL_COMPONENT (bonobo_object);
+ priv = shell_component->priv;
+
+ if (priv->copy_folder_fn == NULL) {
+ GNOME_Evolution_ShellComponentListener_notifyResult (listener,
+ GNOME_Evolution_ShellComponentListener_UNSUPPORTED_OPERATION,
+ ev);
+ return;
+ }
+
+ (* priv->copy_folder_fn) (shell_component,
+ source_physical_uri,
+ destination_physical_uri,
+ remove_source,
+ listener,
+ priv->closure);
+}
+
+static void
impl_ShellComponent_populate_folder_context_menu (PortableServer_Servant servant,
const Bonobo_UIContainer corba_uih,
const CORBA_char *physical_uri,
@@ -405,6 +437,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->populate_folder_context_menu_fn = NULL;
priv->owner_client = NULL;
@@ -421,6 +454,7 @@ evolution_shell_component_construct (EvolutionShellComponent *shell_component,
EvolutionShellComponentCreateViewFn create_view_fn,
EvolutionShellComponentCreateFolderFn create_folder_fn,
EvolutionShellComponentRemoveFolderFn remove_folder_fn,
+ EvolutionShellComponentCopyFolderFn copy_folder_fn,
EvolutionShellComponentPopulateFolderContextMenu populate_folder_context_menu_fn,
void *closure)
{
@@ -437,6 +471,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->populate_folder_context_menu_fn = populate_folder_context_menu_fn;
priv->closure = closure;
@@ -465,6 +500,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,
EvolutionShellComponentPopulateFolderContextMenu populate_folder_context_menu_fn,
void *closure)
{
@@ -479,8 +515,13 @@ evolution_shell_component_new (const EvolutionShellComponentFolderType folder_ty
new = gtk_type_new (evolution_shell_component_get_type ());
corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (new), servant);
- evolution_shell_component_construct (new, folder_types, corba_object,
- create_view_fn, create_folder_fn, remove_folder_fn,
+ evolution_shell_component_construct (new,
+ folder_types,
+ corba_object,
+ create_view_fn,
+ create_folder_fn,
+ remove_folder_fn,
+ copy_folder_fn,
populate_folder_context_menu_fn,
closure);