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