[nautilus] dbus: Implement move operation



commit 9e9ca30c1355555630f561251acafbbaed3a5afa
Author: Carlos Soriano <csoriano gnome org>
Date:   Wed Aug 8 14:07:48 2018 +0200

    dbus: Implement move operation
    
    Analog to the copy operation.

 data/dbus-interfaces.xml    |  4 ++++
 src/nautilus-dbus-manager.c | 35 +++++++++++++++++++++++++++++++----
 2 files changed, 35 insertions(+), 4 deletions(-)
---
diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
index 20ffadde1..64176225c 100644
--- a/data/dbus-interfaces.xml
+++ b/data/dbus-interfaces.xml
@@ -27,6 +27,10 @@
       <arg type='as' name='SourceFilesURIList' direction='in'/>
       <arg type='s' name='DestinationDirectoryURI' direction='in'/>
     </method>
+    <method name='MoveURIs'>
+      <arg type='as' name='SourceFilesURIList' direction='in'/>
+      <arg type='s' name='DestinationDirectoryURI' direction='in'/>
+    </method>
     <method name='EmptyTrash'>
     </method>"
     <method name='TrashFiles'>
diff --git a/src/nautilus-dbus-manager.c b/src/nautilus-dbus-manager.c
index 8d72ecfb9..544c8c0bd 100644
--- a/src/nautilus-dbus-manager.c
+++ b/src/nautilus-dbus-manager.c
@@ -132,9 +132,9 @@ handle_create_folder (NautilusDBusFileOperations *object,
 }
 
 static void
-copy_on_finished (GHashTable *debutting_uris,
-                  gboolean    success,
-                  gpointer    callback_data)
+copy_move_on_finished (GHashTable *debutting_uris,
+                       gboolean    success,
+                       gpointer    callback_data)
 {
     g_application_release (g_application_get_default ());
 }
@@ -155,7 +155,30 @@ handle_copy_uris (NautilusDBusFileOperations  *object,
 
     g_application_hold (g_application_get_default ());
     nautilus_file_operations_copy_move (source_files, destination,
-                                        GDK_ACTION_COPY, NULL, copy_on_finished, NULL);
+                                        GDK_ACTION_COPY, NULL, copy_move_on_finished, NULL);
+
+    g_list_free_full (source_files, g_free);
+    nautilus_dbus_file_operations_complete_copy_uris (object, invocation);
+    return TRUE; /* invocation was handled */
+}
+
+static gboolean
+handle_move_uris (NautilusDBusFileOperations  *object,
+                  GDBusMethodInvocation       *invocation,
+                  const gchar                **sources,
+                  const gchar                 *destination)
+{
+    GList *source_files = NULL;
+    gint idx;
+
+    for (idx = 0; sources[idx] != NULL; idx++)
+    {
+        source_files = g_list_prepend (source_files, g_strdup (sources[idx]));
+    }
+
+    g_application_hold (g_application_get_default ());
+    nautilus_file_operations_copy_move (source_files, destination,
+                                        GDK_ACTION_MOVE, NULL, copy_move_on_finished, NULL);
 
     g_list_free_full (source_files, g_free);
     nautilus_dbus_file_operations_complete_copy_uris (object, invocation);
@@ -212,6 +235,10 @@ nautilus_dbus_manager_init (NautilusDBusManager *self)
                       "handle-copy-uris",
                       G_CALLBACK (handle_copy_uris),
                       self);
+    g_signal_connect (self->file_operations,
+                      "handle-move-uris",
+                      G_CALLBACK (handle_move_uris),
+                      self);
     g_signal_connect (self->file_operations,
                       "handle-empty-trash",
                       G_CALLBACK (handle_empty_trash),


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]