[nautilus/gnome-2-32: 128/283] Add methods to get per-file default sort type/attribute.
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/gnome-2-32: 128/283] Add methods to get per-file default sort type/attribute.
- Date: Thu, 12 Aug 2010 11:14:47 +0000 (UTC)
commit 041821d55fe0dda71a7bad80cd6b0d6253456245
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Mon Jun 7 14:56:26 2010 +0200
Add methods to get per-file default sort type/attribute.
libnautilus-private/nautilus-file.c | 84 +++++++++++++++++++++++++++++++++++
libnautilus-private/nautilus-file.h | 5 ++
2 files changed, 89 insertions(+), 0 deletions(-)
---
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 39f8a09..89bbb98 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -7690,6 +7690,90 @@ nautilus_file_list_from_uris (GList *uri_list)
return g_list_reverse (file_list);
}
+static gboolean
+get_attributes_for_default_sort_type (NautilusFile *file,
+ gboolean *is_download,
+ gboolean *is_trash)
+{
+ gboolean is_download_dir, is_desktop_dir, is_trash_dir, retval;
+
+ *is_download = FALSE;
+ *is_trash = FALSE;
+ retval = FALSE;
+
+ /* special handling for certain directories */
+ if (file && nautilus_file_is_directory (file)) {
+ is_download_dir =
+ nautilus_file_is_user_special_directory (file, G_USER_DIRECTORY_DOWNLOAD);
+ is_desktop_dir =
+ nautilus_file_is_user_special_directory (file, G_USER_DIRECTORY_DESKTOP);
+ is_trash_dir =
+ nautilus_file_is_in_trash (file);
+
+ if (is_download_dir && !is_desktop_dir) {
+ *is_download = TRUE;
+ retval = TRUE;
+ } else if (is_trash_dir) {
+ *is_trash = TRUE;
+ retval = TRUE;
+ }
+ }
+
+ return retval;
+}
+
+NautilusFileSortType
+nautilus_file_get_default_sort_type (NautilusFile *file,
+ gboolean *reversed)
+{
+ NautilusFileSortType retval;
+ gboolean is_download, is_trash, res;
+
+ retval = NAUTILUS_FILE_SORT_NONE;
+ is_download = is_trash = FALSE;
+ res = get_attributes_for_default_sort_type (file, &is_download, &is_trash);
+
+ if (res) {
+ if (is_download) {
+ retval = NAUTILUS_FILE_SORT_BY_MTIME;
+ } else if (is_trash) {
+ retval = NAUTILUS_FILE_SORT_BY_TRASHED_TIME;
+ }
+
+ if (reversed != NULL) {
+ *reversed = res;
+ }
+ }
+
+ return retval;
+}
+
+const gchar *
+nautilus_file_get_default_sort_attribute (NautilusFile *file,
+ gboolean *reversed)
+{
+ const gchar *retval;
+ gboolean is_download, is_trash, res;
+
+ retval = NULL;
+ is_download = is_trash = FALSE;
+ res = get_attributes_for_default_sort_type (file, &is_download, &is_trash);
+
+ if (res) {
+ if (is_download) {
+ retval = g_quark_to_string (attribute_date_modified_q);
+ } else if (is_trash) {
+ retval = g_quark_to_string (attribute_trashed_on_q);
+ }
+
+ if (reversed != NULL) {
+ *reversed = res;
+ }
+ }
+
+ return retval;
+}
+
static int
compare_by_display_name_cover (gconstpointer a, gconstpointer b)
{
diff --git a/libnautilus-private/nautilus-file.h b/libnautilus-private/nautilus-file.h
index 098df2f..011f215 100644
--- a/libnautilus-private/nautilus-file.h
+++ b/libnautilus-private/nautilus-file.h
@@ -392,6 +392,11 @@ gboolean nautilus_file_matches_uri (Nautilu
gboolean nautilus_file_is_local (NautilusFile *file);
/* Comparing two file objects for sorting */
+NautilusFileSortType nautilus_file_get_default_sort_type (NautilusFile *file,
+ gboolean *reversed);
+const gchar * nautilus_file_get_default_sort_attribute (NautilusFile *file,
+ gboolean *reversed);
+
int nautilus_file_compare_for_sort (NautilusFile *file_1,
NautilusFile *file_2,
NautilusFileSortType sort_type,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]