[nautilus/autorun-cleanup: 11/12] autorun: move get_x_content_types_for_mount () to file-utilities



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]