static SortCategory get_sort_category (NautilusFile *file) { NautilusDesktopLink *link; SortCategory category; category = SORT_OTHER; if (NAUTILUS_IS_DESKTOP_ICON_FILE (file)) { link = nautilus_desktop_icon_file_get_link (NAUTILUS_DESKTOP_ICON_FILE (file)); if (link != NULL) { switch (nautilus_desktop_link_get_link_type (link)) { case NAUTILUS_DESKTOP_LINK_HOME: category = SORT_HOME_LINK; break; case NAUTILUS_DESKTOP_LINK_MOUNT: category = SORT_MOUNT_LINK; break; case NAUTILUS_DESKTOP_LINK_TRASH: category = SORT_TRASH_LINK; break; case NAUTILUS_DESKTOP_LINK_NETWORK: category = SORT_NETWORK_LINK; break; default: category = SORT_OTHER; break; } g_object_unref (link); } } return category; }
static gboolean nautilus_drag_can_accept_files (NautilusFile *drop_target_item) { NautilusDirectory *directory; if (nautilus_file_is_directory (drop_target_item)) { gboolean res; /* target is a directory, accept if editable */ directory = nautilus_directory_get_for_file (drop_target_item); res = nautilus_directory_is_editable (directory); nautilus_directory_unref (directory); return res; } if (NAUTILUS_IS_DESKTOP_ICON_FILE (drop_target_item)) { return TRUE; } /* Launchers are an acceptable drop target */ if (nautilus_file_is_launcher (drop_target_item)) { return TRUE; } if (nautilus_is_file_roller_installed () && nautilus_file_is_archive (drop_target_item)) { return TRUE; } return FALSE; }
static char * nautilus_canvas_view_container_get_icon_description (NautilusCanvasContainer *container, NautilusCanvasIconData *data) { NautilusFile *file; char *mime_type; const char *description; file = NAUTILUS_FILE (data); g_assert (NAUTILUS_IS_FILE (file)); if (NAUTILUS_IS_DESKTOP_ICON_FILE (file)) { return NULL; } mime_type = nautilus_file_get_mime_type (file); description = g_content_type_get_description (mime_type); g_free (mime_type); return g_strdup (description); }
static gboolean nautilus_drag_can_accept_files (NautilusFile *drop_target_item) { NautilusDirectory *directory; if (nautilus_file_is_directory (drop_target_item)) { gboolean res; /* target is a directory, accept if editable */ directory = nautilus_directory_get_for_file (drop_target_item); res = nautilus_directory_is_editable (directory); nautilus_directory_unref (directory); return res; } if (NAUTILUS_IS_DESKTOP_ICON_FILE (drop_target_item)) { return TRUE; } /* All Nautilus links are assumed to be links to directories. * Therefore, they all can accept drags, like all other * directories to. As with other directories, there can be * errors when the actual copy is attempted due to * permissions. */ if (nautilus_file_is_nautilus_link (drop_target_item)) { return TRUE; } if (nautilus_is_file_roller_installed () && nautilus_file_is_archive (drop_target_item)) { return TRUE; } return FALSE; }
/* This callback returns the text, both the editable part, and the * part below that is not editable. */ static void nautilus_canvas_view_container_get_icon_text (NautilusCanvasContainer *container, NautilusCanvasIconData *data, char **editable_text, char **additional_text, gboolean include_invisible) { GQuark *attributes; char *text_array[4]; int i, j, num_attributes; NautilusCanvasView *canvas_view; NautilusFile *file; gboolean use_additional; file = NAUTILUS_FILE (data); g_assert (NAUTILUS_IS_FILE (file)); g_assert (editable_text != NULL); canvas_view = get_canvas_view (container); g_return_if_fail (canvas_view != NULL); use_additional = (additional_text != NULL); /* In the smallest zoom mode, no text is drawn. */ if (nautilus_canvas_container_get_zoom_level (container) == NAUTILUS_ZOOM_LEVEL_SMALLEST && !include_invisible) { *editable_text = NULL; } else { /* Strip the suffix for nautilus object xml files. */ *editable_text = nautilus_file_get_display_name (file); } if (!use_additional) { return; } if (NAUTILUS_IS_DESKTOP_ICON_FILE (file) || nautilus_file_is_nautilus_link (file)) { /* Don't show the normal extra information for desktop icons, * or desktop files, it doesn't make sense. */ *additional_text = NULL; return; } /* Find out what attributes go below each icon. */ attributes = nautilus_canvas_view_container_get_icon_text_attribute_names (container, &num_attributes); /* Get the attributes. */ j = 0; for (i = 0; i < num_attributes; ++i) { char *text; if (attributes[i] == attribute_none_q) { continue; } text = nautilus_file_get_string_attribute_q (file, attributes[i]); if (text == NULL) { continue; } text_array[j++] = text; } 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]); } } }