Hi,

This patch will re-enable large previews(thumbnails & mimetype icons) in
t-s-t, using the new metadata-tile api.

Regards,

Neil

Bug: http://bugzilla.gnome.org/show_bug.cgi?id=413862
Index: tracker-search-tool-callbacks.c
===================================================================
--- tracker-search-tool-callbacks.c	(revision 508)
+++ tracker-search-tool-callbacks.c	(working copy)
@@ -51,6 +51,8 @@
 #include "../libtracker-gtk/tracker-metadata-tile.h"
 
 #define SILENT_WINDOW_OPEN_LIMIT 5
+#define METADATA_IMAGE_WIDTH	100
+#define METADATA_IMAGE_HEIGHT	100
 
 #ifdef HAVE_GETPGID
 extern pid_t getpgid (pid_t);
@@ -391,6 +393,43 @@ select_changed_cb (GtkTreeSelection *tre
 
 }
 
+GdkPixbuf *
+tracker_get_large_icon (const gchar *local_uri, GdkPixbuf *basic_pixbuf)
+{
+	gchar *icon_name = NULL;
+	gchar *thumb_name = NULL;
+	GdkPixbuf *temp = NULL;
+	gchar *uri = gnome_vfs_get_uri_from_local_path (local_uri);
+	
+	thumb_name = gnome_thumbnail_path_for_uri (uri, GNOME_THUMBNAIL_SIZE_NORMAL);
+	temp = gdk_pixbuf_new_from_file_at_scale (thumb_name, METADATA_IMAGE_WIDTH, METADATA_IMAGE_HEIGHT, TRUE, NULL);
+	if (temp) {
+		g_free (thumb_name);
+		g_free (uri);
+		return temp;
+	}
+	icon_name = gnome_icon_lookup_sync  (gtk_icon_theme_get_default(),
+                                             gnome_thumbnail_factory_new (GNOME_THUMBNAIL_SIZE_NORMAL),
+                                             local_uri,
+                                             NULL,
+                                             GNOME_ICON_LOOKUP_FLAGS_SHOW_SMALL_IMAGES_AS_THEMSELVES | GNOME_ICON_LOOKUP_FLAGS_ALLOW_SVG_AS_THEMSELVES,
+                                             0);                                       
+	temp = gtk_icon_theme_load_icon (gtk_icon_theme_get_default(),
+                                         icon_name,
+                                         METADATA_IMAGE_HEIGHT,
+                                         GTK_ICON_LOOKUP_FORCE_SVG,
+                                         NULL);
+	
+	g_free (icon_name);
+	g_free (thumb_name);
+	g_free (uri);
+	if (temp)
+		return temp;
+	else
+		return basic_pixbuf;	
+}
+
+
 void
 update_metadata_tile (GSearchWindow *gsearch)
 {
@@ -422,7 +461,8 @@ update_metadata_tile (GSearchWindow *gse
 		                    COLUMN_NO_FILES_FOUND, &no_files_found,
 		                    -1);
 
-
+		g_print ("%s\n", uri);
+		pixbuf = tracker_get_large_icon (uri, pixbuf);
 		tracker_metadata_tile_set_uri (TRACKER_METADATA_TILE (gsearch->metatile), uri, mime, pixbuf);
 		
                 g_free (uri);
@@ -1200,6 +1240,39 @@ drag_begin_file_cb (GtkWidget * widget,
 	}
 }
 
+/* Make a desktop file in /tmp witch points to this email*/
+static gchar*
+make_email_desktop_file (const gchar *utf8_uri, const gchar *utf8_name)
+{
+	GnomeDesktopItem *item = NULL;
+	gchar *exec_string = NULL;
+	gchar *save_uri = NULL;
+        time_t seconds;
+
+	item = gnome_desktop_item_new ();
+	
+	exec_string = g_strdup_printf ("evolution \"%s\"",utf8_uri);
+	
+	gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_ENCODING, "UTF-8");
+	gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_NAME, utf8_name);
+	gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_COMMENT, _("Activate to view this email"));
+	gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_EXEC, exec_string);
+	gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_ICON, "email");	
+	gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_TERMINAL, "false");
+	gnome_desktop_item_set_string (item, GNOME_DESKTOP_ITEM_TYPE, "Application");
+	
+	seconds = time (NULL);
+	save_uri = g_strdup_printf ("/tmp/tracker-email-shortcut-file%d.desktop", (int)seconds);
+	gnome_desktop_item_save (item,
+				 save_uri,
+                                 TRUE,
+                                 NULL);
+	
+	g_free (exec_string);
+	
+	return save_uri;
+}
+
 void
 drag_file_cb  (GtkWidget * widget,
                GdkDragContext * context,
@@ -1227,6 +1300,7 @@ drag_file_cb  (GtkWidget * widget,
 		gboolean no_files_found = FALSE;
 		gchar * utf8_name;
 		gchar * utf8_path;
+		gchar * utf8_uri;
 		gchar * file;
 
 		gtk_tree_model_get_iter (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
@@ -1235,25 +1309,40 @@ drag_file_cb  (GtkWidget * widget,
 		gtk_tree_model_get (GTK_TREE_MODEL (gsearch->search_results_list_store), &iter,
 		                    COLUMN_NAME, &utf8_name,
 		                    COLUMN_PATH, &utf8_path,
+		                    COLUMN_URI, &utf8_uri,
 		                    COLUMN_NO_FILES_FOUND, &no_files_found,
 		                    -1);
 
 		file = g_build_filename (utf8_path, utf8_name, NULL);
-
+		
 		if (!no_files_found) {
-			gchar * tmp_uri = g_filename_to_uri (file, NULL, NULL);
+			gchar * tmp_uri = NULL;
+			tmp_uri = g_filename_to_uri (file, NULL, NULL);
 
 			if (uri_list == NULL) {
 				uri_list = g_strdup (tmp_uri);
 			}
 			else {
 				uri_list = g_strconcat (uri_list, "\n", tmp_uri, NULL);
-			}
-			gtk_selection_data_set (selection_data,
+			} 
+			
+			if (gsearch->type < 10) {
+				gtk_selection_data_set (selection_data,
 			                        selection_data->target,
 			                        8,
 			                        (guchar *) uri_list,
 			                        strlen (uri_list));
+				
+			} else {
+				gchar *desktop_uri;
+				desktop_uri = make_email_desktop_file (utf8_uri, utf8_name);
+				gtk_selection_data_set (selection_data,
+			                        selection_data->target,
+			                        8,
+			                        (guchar *) desktop_uri,
+			                        strlen (desktop_uri));
+			        g_free (desktop_uri);
+			}
 			g_free (tmp_uri);
 		}
 		else {
@@ -1261,6 +1350,7 @@ drag_file_cb  (GtkWidget * widget,
 		}
 		g_free (utf8_name);
 		g_free (utf8_path);
+		g_free (utf8_uri);
 		g_free (file);
 	}
 	g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
Index: tracker-search-tool.c
===================================================================
--- tracker-search-tool.c	(revision 508)
+++ tracker-search-tool.c	(working copy)
@@ -2671,7 +2671,7 @@ gsearch_app_create (GSearchWindow * gsea
 
 	/* metadata_tile */
 	gsearch->metatile = tracker_metadata_tile_new ();
-	gtk_widget_show (gsearch->metatile);
+	//gtk_widget_show (gsearch->metatile);
 	gtk_box_pack_start (GTK_BOX (main_container), gsearch->metatile, FALSE, FALSE, 0);
 
 	gtk_window_set_focus (GTK_WINDOW (gsearch->window),
_______________________________________________
tracker-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/tracker-list

Reply via email to