nautilus r13784 - in trunk: . libnautilus-private



Author: cosimoc
Date: Wed Feb 20 15:11:17 2008
New Revision: 13784
URL: http://svn.gnome.org/viewvc/nautilus?rev=13784&view=rev

Log:
2008-02-20  Cosimo Cecchi  <cosimoc gnome org>

	* libnautilus-private/nautilus-mime-application-chooser.c:
	(get_extension_from_file), (set_uri_and_type_for_multiple_files):
	Finish work on open with tab with multiple files selected. (#343930).


Modified:
   trunk/ChangeLog
   trunk/libnautilus-private/nautilus-mime-application-chooser.c

Modified: trunk/libnautilus-private/nautilus-mime-application-chooser.c
==============================================================================
--- trunk/libnautilus-private/nautilus-mime-application-chooser.c	(original)
+++ trunk/libnautilus-private/nautilus-mime-application-chooser.c	Wed Feb 20 15:11:17 2008
@@ -30,8 +30,10 @@
 
 #include "nautilus-open-with-dialog.h"
 #include "nautilus-signaller.h"
+#include "nautilus-file.h"
 #include <eel/eel-stock-dialogs.h>
 #include <eel/eel-glib-extensions.h>
+#include <eel/eel-string.h>
 
 #include <string.h>
 #include <glib/gi18n-lib.h>
@@ -657,37 +659,59 @@
 	return TRUE;
 }
 
+static char *
+get_extension_from_file (NautilusFile *nfile)
+{
+	char *name;
+	char *extension;
+
+	name = nautilus_file_get_name (nfile);
+	extension = get_extension (name);
+	
+	g_free (name);
+	
+	return extension;
+}
+
 static gboolean
 set_uri_and_type_for_multiple_files (NautilusMimeApplicationChooser *chooser,
 				     GList *uris,
 				     const char *mime_type)
 {
 	char *label;
-	char *extension;
-	char *name;
-	GFile *file;
+	char *first_extension;
+	gboolean same_extension;
 	GList *iter;
 	
 	chooser->details->for_multiple_files = TRUE;
 	chooser->details->uri = NULL;
 	chooser->details->orig_mime_type = g_strdup (mime_type);
-	extension = NULL;
-	iter = uris;
-
-	while (extension == NULL && iter != NULL) {
-		g_free (extension);
-
-		file = g_file_new_for_uri ((const char *) uris->data);
-		name = g_file_get_basename (file);
-		extension = get_extension (name);
+	same_extension = TRUE;
+	first_extension = get_extension_from_file (NAUTILUS_FILE (uris->data));
+	iter = uris->next;
+
+	while (iter != NULL) {
+		char *extension_current;
+
+		extension_current = get_extension_from_file (NAUTILUS_FILE (iter->data));
+		if (eel_strcmp (first_extension, extension_current)) {
+			same_extension = FALSE;
+			g_free (extension_current);
+			break;
+		}
 		iter = iter->next;
 
-		g_free (name);
-		g_object_unref (file);
+		g_free (extension_current);
 	}
-	set_extension_and_description (NAUTILUS_MIME_APPLICATION_CHOOSER (chooser),
-				       extension, mime_type);
-	g_free (extension);
+	if (!same_extension) {
+		set_extension_and_description (NAUTILUS_MIME_APPLICATION_CHOOSER (chooser),
+					       NULL, mime_type);
+	} else {
+		set_extension_and_description (NAUTILUS_MIME_APPLICATION_CHOOSER (chooser),
+					       first_extension, mime_type);
+	}
+
+	g_free (first_extension);
 
 	label = g_strdup_printf (_("Open all files of type \"%s\" with:"),
 				 chooser->details->type_description);



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