summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2016-09-15 18:11:33 +0200
committerCarlos Soriano <csoriano@gnome.org>2016-09-20 16:44:35 +0200
commitb5a906a1d86137a78a03b680c0f373c6acdac886 (patch)
tree21da94b7f29e00cce50ef8da87bc36eff58b695c
parenta73a7126a5c58988b35dcc6ae63fce81de63d110 (diff)
downloadnautilus-b5a906a1d86137a78a03b680c0f373c6acdac886.tar.gz
batch-rename: use nautilus files for cleaner code
We were using gchar* for uris, instead of actual files, and converting back and forward. Instead use directly nautilus files.
-rw-r--r--src/nautilus-batch-rename-dialog.c6
-rw-r--r--src/nautilus-batch-rename-utilities.c41
2 files changed, 21 insertions, 26 deletions
diff --git a/src/nautilus-batch-rename-dialog.c b/src/nautilus-batch-rename-dialog.c
index 8e3008f82..0f259b249 100644
--- a/src/nautilus-batch-rename-dialog.c
+++ b/src/nautilus-batch-rename-dialog.c
@@ -1288,10 +1288,8 @@ file_names_list_has_duplicates_async_thread (GTask *task,
g_mutex_lock (&task_data->wait_ready_mutex);
task_data->directory_conflicts_ready = FALSE;
- directory_conflict_uri = l->data;
- conflict_directory = nautilus_directory_get_by_uri (directory_conflict_uri);
- nautilus_directory_call_when_ready (conflict_directory,
+ nautilus_directory_call_when_ready (l->data,
NAUTILUS_FILE_ATTRIBUTE_INFO,
TRUE,
on_directory_conflicts_ready,
@@ -1307,10 +1305,10 @@ file_names_list_has_duplicates_async_thread (GTask *task,
g_mutex_unlock (&task_data->wait_ready_mutex);
- nautilus_directory_unref (conflict_directory);
}
g_task_return_boolean (task, TRUE);
+ nautilus_directory_list_free (directories);
}
static void
diff --git a/src/nautilus-batch-rename-utilities.c b/src/nautilus-batch-rename-utilities.c
index 3a855ac03..1b09ef178 100644
--- a/src/nautilus-batch-rename-utilities.c
+++ b/src/nautilus-batch-rename-utilities.c
@@ -995,42 +995,39 @@ check_metadata_for_selection (NautilusBatchRenameDialog *dialog,
g_string_free (query, TRUE);
}
+static gint
+compare_files (gpointer a,
+ gpointer b)
+{
+ NautilusFile *file1 = NAUTILUS_FILE (a);
+ NautilusFile *file2 = NAUTILUS_FILE (b);
+ g_autoptr (GFile) location1 = nautilus_file_get_location (file1);
+ g_autoptr (GFile) location2 = nautilus_file_get_location (file2);
+
+ return g_file_equal (location1, location2) ? 0 : 1;
+}
+
GList *
batch_rename_files_get_distinct_parents (GList *selection)
{
GList *result;
GList *l1;
- GList *l2;
NautilusFile *file;
- gboolean exists;
- gchar *parent_uri;
+ NautilusFile *directory;
+ GFile *parent;
result = NULL;
-
for (l1 = selection; l1 != NULL; l1 = l1->next)
{
- exists = FALSE;
-
file = NAUTILUS_FILE (l1->data);
- parent_uri = nautilus_file_get_parent_uri (file);
-
- for (l2 = result; l2 != NULL; l2 = l2->next)
+ parent = nautilus_file_get_parent (file);
+ directory = nautilus_directory_get_for_file (parent);
+ if (!g_list_find (result, directory))
{
- if (g_strcmp0 (parent_uri, l2->data) == 0)
- {
- exists = TRUE;
- break;
- }
+ result = g_list_prepend (result, directory);
}
- if (!exists)
- {
- result = g_list_prepend (result, parent_uri);
- }
- else
- {
- g_free (parent_uri);
- }
+ nautilus_file_unref (parent);
}
return result;