gboolean nemo_can_thumbnail_internally (NemoFile *file) { char *mime_type; gboolean res; mime_type = nemo_file_get_mime_type (file); res = pixbuf_can_load_type (mime_type); g_free (mime_type); return res; }
static char * nemo_icon_view_container_get_icon_description (NemoIconContainer *container, NemoIconData *data) { NemoFile *file; char *mime_type; const char *description; file = NEMO_FILE (data); g_assert (NEMO_IS_FILE (file)); if (NEMO_IS_DESKTOP_ICON_FILE (file)) { return NULL; } mime_type = nemo_file_get_mime_type (file); description = g_content_type_get_description (mime_type); g_free (mime_type); return g_strdup (description); }
void nemo_recent_add_file (NemoFile *file, GAppInfo *application) { GtkRecentData recent_data; char *uri; uri = nemo_file_get_uri (file); /* do not add trash:// etc */ if (eel_uri_is_trash (uri) || eel_uri_is_search (uri) || eel_uri_is_recent (uri) || eel_uri_is_desktop (uri)) { g_free (uri); return; } recent_data.display_name = NULL; recent_data.description = NULL; recent_data.mime_type = nemo_file_get_mime_type (file); recent_data.app_name = g_strdup (g_get_application_name ()); if (application != NULL) recent_data.app_exec = g_strdup (g_app_info_get_commandline (application)); else recent_data.app_exec = g_strdup (DEFAULT_APP_EXEC); recent_data.groups = NULL; recent_data.is_private = FALSE; gtk_recent_manager_add_full (nemo_recent_get_manager (), uri, &recent_data); g_free (recent_data.mime_type); g_free (recent_data.app_name); g_free (recent_data.app_exec); g_free (uri); }
gboolean nemo_can_thumbnail (NemoFile *file) { GnomeDesktopThumbnailFactory *factory; gboolean res; char *uri; time_t mtime; char *mime_type; uri = nemo_file_get_uri (file); mime_type = nemo_file_get_mime_type (file); mtime = nemo_file_get_mtime (file); factory = get_thumbnail_factory (); res = gnome_desktop_thumbnail_factory_can_thumbnail (factory, uri, mime_type, mtime); g_free (mime_type); g_free (uri); return res; }
void nemo_create_thumbnail (NemoFile *file) { time_t file_mtime = 0; NemoThumbnailInfo *info; NemoThumbnailInfo *existing_info; GList *existing, *node; nemo_file_set_is_thumbnailing (file, TRUE); info = g_new0 (NemoThumbnailInfo, 1); info->image_uri = nemo_file_get_uri (file); info->mime_type = nemo_file_get_mime_type (file); /* Hopefully the NemoFile will already have the image file mtime, so we can just use that. Otherwise we have to get it ourselves. */ if (file->details->got_file_info && file->details->file_info_is_up_to_date && file->details->mtime != 0) { file_mtime = file->details->mtime; } else { get_file_mtime (info->image_uri, &file_mtime); } info->original_file_mtime = file_mtime; #ifdef DEBUG_THUMBNAILS g_message ("(Main Thread) Locking mutex\n"); #endif pthread_mutex_lock (&thumbnails_mutex); /********************************* * MUTEX LOCKED *********************************/ if (thumbnails_to_make_hash == NULL) { thumbnails_to_make_hash = g_hash_table_new (g_str_hash, g_str_equal); } /* Check if it is already in the list of thumbnails to make. */ existing = g_hash_table_lookup (thumbnails_to_make_hash, info->image_uri); if (existing == NULL) { /* Add the thumbnail to the list. */ #ifdef DEBUG_THUMBNAILS g_message ("(Main Thread) Adding thumbnail: %s\n", info->image_uri); #endif g_queue_push_tail ((GQueue *)&thumbnails_to_make, info); node = g_queue_peek_tail_link ((GQueue *)&thumbnails_to_make); g_hash_table_insert (thumbnails_to_make_hash, info->image_uri, node); /* If the thumbnail thread isn't running, and we haven't scheduled an idle function to start it up, do that now. We don't want to start it until all the other work is done, so the GUI will be updated as quickly as possible.*/ if (thumbnail_thread_is_running == FALSE && thumbnail_thread_starter_id == 0) { thumbnail_thread_starter_id = g_idle_add_full (G_PRIORITY_LOW, thumbnail_thread_starter_cb, NULL, NULL); } } else { #ifdef DEBUG_THUMBNAILS g_message ("(Main Thread) Updating non-current mtime: %s\n", info->image_uri); #endif /* The file in the queue might need a new original mtime */ existing_info = existing->data; existing_info->original_file_mtime = info->original_file_mtime; free_thumbnail_info (info); } /********************************* * MUTEX UNLOCKED *********************************/ #ifdef DEBUG_THUMBNAILS g_message ("(Main Thread) Unlocking mutex\n"); #endif pthread_mutex_unlock (&thumbnails_mutex); }