static int fm_icon_container_compare_icons_by_name (CajaIconContainer *container, CajaIconData *icon_a, CajaIconData *icon_b) { return caja_file_compare_for_sort (CAJA_FILE (icon_a), CAJA_FILE (icon_b), CAJA_FILE_SORT_BY_DISPLAY_NAME, FALSE, FALSE); }
void caja_restore_files_from_trash (GList *files, GtkWindow *parent_window) { CajaFile *file, *original_dir; GHashTable *original_dirs_hash; GList *original_dirs, *unhandled_files; GFile *original_dir_location; GList *locations, *l; char *message, *file_name; original_dirs_hash = caja_trashed_files_get_original_directories (files, &unhandled_files); for (l = unhandled_files; l != NULL; l = l->next) { file = CAJA_FILE (l->data); file_name = caja_file_get_display_name (file); message = g_strdup_printf (_("Could not determine original location of \"%s\" "), file_name); g_free (file_name); eel_show_warning_dialog (message, _("The item cannot be restored from trash"), parent_window); g_free (message); } if (original_dirs_hash != NULL) { original_dirs = g_hash_table_get_keys (original_dirs_hash); for (l = original_dirs; l != NULL; l = l->next) { original_dir = CAJA_FILE (l->data); original_dir_location = caja_file_get_location (original_dir); files = g_hash_table_lookup (original_dirs_hash, original_dir); locations = locations_from_file_list (files); caja_file_operations_move (locations, NULL, original_dir_location, parent_window, NULL, NULL); g_list_free_full (locations, g_object_unref); g_object_unref (original_dir_location); } g_list_free (original_dirs); g_hash_table_destroy (original_dirs_hash); } caja_file_list_unref (unhandled_files); }
static void caja_search_directory_file_init (CajaSearchDirectoryFile *search_file) { CajaFile *file; file = CAJA_FILE (search_file); file->details->got_file_info = TRUE; file->details->mime_type = g_ref_string_new_intern ("x-directory/normal"); file->details->type = G_FILE_TYPE_DIRECTORY; file->details->size = 0; file->details->file_info_is_up_to_date = TRUE; file->details->custom_icon = NULL; file->details->activation_uri = NULL; file->details->got_link_info = TRUE; file->details->link_info_is_up_to_date = TRUE; file->details->directory_count = 0; file->details->got_directory_count = TRUE; file->details->directory_count_is_up_to_date = TRUE; caja_file_set_display_name (file, _("Search"), NULL, TRUE); }
static void cancel_rename_callback (gpointer callback_data) { GError *error; error = g_error_new (G_IO_ERROR, G_IO_ERROR_CANCELLED, "Cancelled"); finish_rename (CAJA_FILE (callback_data), FALSE, error); g_error_free (error); }
static CajaRequestStatus search_directory_file_get_deep_counts (CajaFile *file, guint *directory_count, guint *file_count, guint *unreadable_directory_count, goffset *total_size, goffset *total_size_on_disk) { GList *file_list, *l; guint dirs, files; GFileType type; CajaFile *dir_file = NULL; file_list = caja_directory_get_file_list (file->details->directory); dirs = files = 0; for (l = file_list; l != NULL; l = l->next) { dir_file = CAJA_FILE (l->data); type = caja_file_get_file_type (dir_file); if (type == G_FILE_TYPE_DIRECTORY) { dirs++; } else { files++; } } if (directory_count != NULL) { *directory_count = dirs; } if (file_count != NULL) { *file_count = files; } if (unreadable_directory_count != NULL) { *unreadable_directory_count = 0; } if (total_size != NULL) { /* FIXME: Maybe we want to calculate this? */ *total_size = 0; } if (total_size_on_disk != NULL) { /* FIXME: Maybe we want to calculate this? */ *total_size_on_disk = 0; } caja_file_list_free (file_list); return CAJA_REQUEST_DONE; }
CajaFile * caja_file_queue_head (CajaFileQueue *queue) { if (queue->head == NULL) { return NULL; } return CAJA_FILE (queue->head->data); }
static GList * locations_from_file_list (GList *file_list) { CajaFile *file; GList *l, *ret; ret = NULL; for (l = file_list; l != NULL; l = l->next) { file = CAJA_FILE (l->data); ret = g_list_prepend (ret, caja_file_get_location (file)); } return g_list_reverse (ret); }
static char * fm_icon_container_get_icon_description (CajaIconContainer *container, CajaIconData *data) { CajaFile *file; char *mime_type; const char *description; file = CAJA_FILE (data); g_assert (CAJA_IS_FILE (file)); if (CAJA_IS_DESKTOP_ICON_FILE (file)) { return NULL; } mime_type = caja_file_get_mime_type (file); description = g_content_type_get_description (mime_type); g_free (mime_type); return g_strdup (description); }
void caja_search_directory_file_update_display_name (CajaSearchDirectoryFile *search_file) { CajaFile *file; char *display_name; gboolean changed; display_name = NULL; file = CAJA_FILE (search_file); if (file->details->directory) { CajaSearchDirectory *search_dir; CajaQuery *query; search_dir = CAJA_SEARCH_DIRECTORY (file->details->directory); query = caja_search_directory_get_query (search_dir); if (query != NULL) { display_name = caja_query_to_readable_string (query); g_object_unref (query); } } if (display_name == NULL) { display_name = g_strdup (_("Search")); } changed = caja_file_set_display_name (file, display_name, NULL, TRUE); if (changed) { caja_file_emit_changed (file); } }
/* This callback returns the text, both the editable part, and the * part below that is not editable. */ static void fm_icon_container_get_icon_text (CajaIconContainer *container, CajaIconData *data, char **editable_text, char **additional_text, gboolean include_invisible) { char *actual_uri; gchar *description; GQuark *attributes; char *text_array[4]; int i, j, num_attributes; FMIconView *icon_view; CajaFile *file; gboolean use_additional; file = CAJA_FILE (data); g_assert (CAJA_IS_FILE (file)); g_assert (editable_text != NULL); icon_view = get_icon_view (container); g_return_if_fail (icon_view != NULL); use_additional = (additional_text != NULL); /* In the smallest zoom mode, no text is drawn. */ if (caja_icon_container_get_zoom_level (container) == CAJA_ZOOM_LEVEL_SMALLEST && !include_invisible) { *editable_text = NULL; } else { /* Strip the suffix for caja object xml files. */ *editable_text = caja_file_get_display_name (file); } if (!use_additional) { return; } if (fm_icon_view_is_compact (icon_view)) { *additional_text = NULL; return; } if (CAJA_IS_DESKTOP_ICON_FILE (file)) { /* Don't show the normal extra information for desktop icons, it doesn't * make sense. */ *additional_text = NULL; return; } /* Handle link files specially. */ if (caja_file_is_caja_link (file)) { /* FIXME bugzilla.gnome.org 42531: Does sync. I/O and works only locally. */ *additional_text = NULL; if (caja_file_is_local (file)) { actual_uri = caja_file_get_uri (file); description = caja_link_local_get_additional_text (actual_uri); if (description) *additional_text = g_strdup_printf (" \n%s\n ", description); g_free (description); g_free (actual_uri); } /* Don't show the normal extra information for desktop files, it doesn't * make sense. */ return; } /* Find out what attributes go below each icon. */ attributes = fm_icon_container_get_icon_text_attribute_names (container, &num_attributes); /* Get the attributes. */ j = 0; for (i = 0; i < num_attributes; ++i) { if (attributes[i] == attribute_none_q) { continue; } text_array[j++] = caja_file_get_string_attribute_with_default_q (file, attributes[i]); } text_array[j] = NULL; /* Return them. */ if (j == 0) { *additional_text = NULL; } else if (j == 1) { /* Only one item, avoid the strdup + free */ *additional_text = text_array[0]; } else { *additional_text = g_strjoinv ("\n", text_array); for (i = 0; i < j; i++) { g_free (text_array[i]); } } }
GHashTable * caja_trashed_files_get_original_directories (GList *files, GList **unhandled_files) { GHashTable *directories; CajaFile *file, *original_file, *original_dir; GList *l, *m; directories = NULL; if (unhandled_files != NULL) { *unhandled_files = NULL; } for (l = files; l != NULL; l = l->next) { file = CAJA_FILE (l->data); original_file = caja_file_get_trash_original_file (file); original_dir = NULL; if (original_file != NULL) { original_dir = caja_file_get_parent (original_file); } if (original_dir != NULL) { if (directories == NULL) { directories = g_hash_table_new_full (g_direct_hash, g_direct_equal, (GDestroyNotify) caja_file_unref, (GDestroyNotify) caja_file_list_unref); } caja_file_ref (original_dir); m = g_hash_table_lookup (directories, original_dir); if (m != NULL) { g_hash_table_steal (directories, original_dir); caja_file_unref (original_dir); } m = g_list_append (m, caja_file_ref (file)); g_hash_table_insert (directories, original_dir, m); } else if (unhandled_files != NULL) { *unhandled_files = g_list_append (*unhandled_files, caja_file_ref (file)); } if (original_file != NULL) { caja_file_unref (original_file); } if (original_dir != NULL) { caja_file_unref (original_dir); } } return directories; }