[nautilus/autorun-cleanup: 11/12] autorun: move get_x_content_types_for_mount () to file-utilities
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/autorun-cleanup: 11/12] autorun: move get_x_content_types_for_mount () to file-utilities
- Date: Thu, 25 Nov 2010 11:48:20 +0000 (UTC)
commit 912320008beae418d71a74361c1a0d9bcdae6f60
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Thu Nov 25 12:43:13 2010 +0100
autorun: move get_x_content_types_for_mount () to file-utilities
So that we can remove nautilus-autorun.[ch]
libnautilus-private/nautilus-file-utilities.c | 80 +++++++++++++++++++++++++
libnautilus-private/nautilus-file-utilities.h | 8 +++
src/file-manager/fm-directory-view.c | 13 ++--
src/nautilus-window-manage-views.c | 13 ++--
4 files changed, 101 insertions(+), 13 deletions(-)
---
diff --git a/libnautilus-private/nautilus-file-utilities.c b/libnautilus-private/nautilus-file-utilities.c
index 60756a2..ebaf34c 100644
--- a/libnautilus-private/nautilus-file-utilities.c
+++ b/libnautilus-private/nautilus-file-utilities.c
@@ -1292,6 +1292,86 @@ nautilus_restore_files_from_trash (GList *files,
nautilus_file_list_unref (unhandled_files);
}
+typedef struct {
+ NautilusMountGetContent callback;
+ gpointer user_data;
+} GetContentTypesData;
+
+static void
+get_types_cb (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ GetContentTypesData *data;
+ char **types;
+
+ data = user_data;
+ types = g_mount_guess_content_type_finish (G_MOUNT (source_object), res, NULL);
+
+ g_object_set_data_full (source_object,
+ "nautilus-content-type-cache",
+ g_strdupv (types),
+ (GDestroyNotify)g_strfreev);
+
+ if (data->callback) {
+ data->callback ((const char **) types, data->user_data);
+ }
+ g_strfreev (types);
+ g_slice_free (GetContentTypesData, data);
+}
+
+void
+nautilus_get_x_content_types_for_mount_async (GMount *mount,
+ NautilusMountGetContent callback,
+ GCancellable *cancellable,
+ gpointer user_data)
+{
+ char **cached;
+ GetContentTypesData *data;
+
+ if (mount == NULL) {
+ if (callback) {
+ callback (NULL, user_data);
+ }
+ return;
+ }
+
+ cached = g_object_get_data (G_OBJECT (mount), "nautilus-content-type-cache");
+ if (cached != NULL) {
+ if (callback) {
+ callback ((const char **) cached, user_data);
+ }
+ return;
+ }
+
+ data = g_slice_new0 (GetContentTypesData);
+ data->callback = callback;
+ data->user_data = user_data;
+
+ g_mount_guess_content_type (mount,
+ FALSE,
+ cancellable,
+ get_types_cb,
+ data);
+}
+
+char **
+nautilus_get_cached_x_content_types_for_mount (GMount *mount)
+{
+ char **cached;
+
+ if (mount == NULL) {
+ return NULL;
+ }
+
+ cached = g_object_get_data (G_OBJECT (mount), "nautilus-content-type-cache");
+ if (cached != NULL) {
+ return g_strdupv (cached);
+ }
+
+ return NULL;
+}
+
#if !defined (NAUTILUS_OMIT_SELF_CHECK)
void
diff --git a/libnautilus-private/nautilus-file-utilities.h b/libnautilus-private/nautilus-file-utilities.h
index 07ef197..e1c68cd 100644
--- a/libnautilus-private/nautilus-file-utilities.h
+++ b/libnautilus-private/nautilus-file-utilities.h
@@ -104,4 +104,12 @@ GHashTable * nautilus_trashed_files_get_original_directories (GList *files,
void nautilus_restore_files_from_trash (GList *files,
GtkWindow *parent_window);
+typedef void (*NautilusMountGetContent) (const char **content, gpointer user_data);
+
+char ** nautilus_get_cached_x_content_types_for_mount (GMount *mount);
+void nautilus_get_x_content_types_for_mount_async (GMount *mount,
+ NautilusMountGetContent callback,
+ GCancellable *cancellable,
+ gpointer user_data);
+
#endif /* NAUTILUS_FILE_UTILITIES_H */
diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c
index f09f03b..8f497c8 100644
--- a/src/file-manager/fm-directory-view.c
+++ b/src/file-manager/fm-directory-view.c
@@ -76,7 +76,6 @@
#include <libnautilus-private/nautilus-trash-monitor.h>
#include <libnautilus-private/nautilus-ui-utilities.h>
#include <libnautilus-private/nautilus-signaller.h>
-#include <libnautilus-private/nautilus-autorun.h>
#include <libnautilus-private/nautilus-icon-names.h>
/* Minimum starting update inverval */
@@ -4409,7 +4408,7 @@ add_application_to_open_with_menu (FMDirectoryView *view,
}
static void
-get_x_content_async_callback (char **content,
+get_x_content_async_callback (const char **content,
gpointer user_data)
{
FMDirectoryView *view;
@@ -4437,7 +4436,7 @@ add_x_content_apps (FMDirectoryView *view, NautilusFile *file, GList **applicati
return;
}
- x_content_types = nautilus_autorun_get_cached_x_content_types_for_mount (mount);
+ x_content_types = nautilus_get_cached_x_content_types_for_mount (mount);
if (x_content_types != NULL) {
for (n = 0; x_content_types[n] != NULL; n++) {
char *x_content_type = x_content_types[n];
@@ -4448,10 +4447,10 @@ add_x_content_apps (FMDirectoryView *view, NautilusFile *file, GList **applicati
}
g_strfreev (x_content_types);
} else {
- nautilus_autorun_get_x_content_types_for_mount_async (mount,
- get_x_content_async_callback,
- NULL,
- g_object_ref (view));
+ nautilus_get_x_content_types_for_mount_async (mount,
+ get_x_content_async_callback,
+ NULL,
+ g_object_ref (view));
}
diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c
index af0e75a..4baa7d2 100644
--- a/src/nautilus-window-manage-views.c
+++ b/src/nautilus-window-manage-views.c
@@ -65,7 +65,6 @@
#include <libnautilus-private/nautilus-view-factory.h>
#include <libnautilus-private/nautilus-window-info.h>
#include <libnautilus-private/nautilus-window-slot-info.h>
-#include <libnautilus-private/nautilus-autorun.h>
/* FIXME bugzilla.gnome.org 41243:
* We should use inheritance instead of these special cases
@@ -1552,9 +1551,11 @@ typedef struct {
} FindMountData;
static void
-found_content_type_cb (const char **x_content_types, FindMountData *data)
+found_content_type_cb (const char **x_content_types,
+ gpointer user_data)
{
NautilusWindowSlot *slot;
+ FindMountData *data = user_data;
if (g_cancellable_is_cancelled (data->cancellable)) {
goto out;
@@ -1594,10 +1595,10 @@ found_mount_cb (GObject *source_object,
NULL);
if (mount != NULL) {
data->mount = mount;
- nautilus_autorun_get_x_content_types_for_mount_async (mount,
- (NautilusAutorunGetContent)found_content_type_cb,
- data->cancellable,
- data);
+ nautilus_get_x_content_types_for_mount_async (mount,
+ found_content_type_cb,
+ data->cancellable,
+ data);
return;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]