[nautilus] Use gvfs based metadata
- From: Alexander Larsson <alexl src gnome org>
- To: svn-commits-list gnome org
- Subject: [nautilus] Use gvfs based metadata
- Date: Tue, 23 Jun 2009 15:47:02 -0400 (EDT)
commit fc4e74e6763000bac2a459e83811cf01e6cb7720
Author: Alexander Larsson <alexl redhat com>
Date: Tue Jun 23 21:12:58 2009 +0200
Use gvfs based metadata
libnautilus-private/Makefile.am | 1 +
libnautilus-private/nautilus-file-private.h | 4 +-
libnautilus-private/nautilus-file.c | 431 ++++++++++++++++++++++-----
libnautilus-private/nautilus-file.h | 6 +-
libnautilus-private/nautilus-metadata.c | 79 +++++
libnautilus-private/nautilus-metadata.h | 12 +-
src/file-manager/fm-list-view.c | 16 +-
7 files changed, 450 insertions(+), 99 deletions(-)
---
diff --git a/libnautilus-private/Makefile.am b/libnautilus-private/Makefile.am
index 186a4a5..51bb759 100644
--- a/libnautilus-private/Makefile.am
+++ b/libnautilus-private/Makefile.am
@@ -129,6 +129,7 @@ libnautilus_private_la_SOURCES = \
nautilus-merged-directory.c \
nautilus-merged-directory.h \
nautilus-metadata.h \
+ nautilus-metadata.c \
nautilus-metafile.c \
nautilus-metafile.h \
nautilus-mime-actions.c \
diff --git a/libnautilus-private/nautilus-file-private.h b/libnautilus-private/nautilus-file-private.h
index a2fe8ab..aa752ad 100644
--- a/libnautilus-private/nautilus-file-private.h
+++ b/libnautilus-private/nautilus-file-private.h
@@ -40,7 +40,7 @@
#define NAUTILUS_FILE_TOP_LEFT_TEXT_MAXIMUM_BYTES 1024
#define NAUTILUS_FILE_DEFAULT_ATTRIBUTES \
- "standard::*,access::*,mountable::*,time::*,unix::*,owner::*,selinux::*,thumbnail::*,id::filesystem,trash::orig-path"
+ "standard::*,access::*,mountable::*,time::*,unix::*,owner::*,selinux::*,thumbnail::*,id::filesystem,trash::orig-path,metadata::*"
/* These are in the typical sort order. Known things come first, then
* things where we can't know, finally things where we don't yet know.
@@ -142,6 +142,8 @@ struct NautilusFileDetails
GHashTable *extension_attributes;
GHashTable *pending_extension_attributes;
+ GHashTable *metadata;
+
/* Mount for mountpoint or the references GMount for a "mountable" */
GMount *mount;
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 0222867..a703b68 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -97,6 +97,8 @@
/* Name of Nautilus trash directories */
#define TRASH_DIRECTORY_NAME ".Trash"
+#define METADATA_ID_IS_LIST_MASK (1<<31)
+
typedef enum {
SHOW_HIDDEN = 1 << 0,
SHOW_BACKUP = 1 << 1
@@ -262,6 +264,123 @@ nautilus_file_clear_display_name (NautilusFile *file)
file->details->edit_name = NULL;
}
+static gboolean
+foreach_metadata_free (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ guint id;
+
+ id = GPOINTER_TO_UINT (key);
+
+ if (id & METADATA_ID_IS_LIST_MASK) {
+ g_strfreev ((char **)value);
+ } else {
+ g_free ((char *)value);
+ }
+ return TRUE;
+}
+
+
+static void
+metadata_hash_free (GHashTable *hash)
+{
+ g_hash_table_foreach_remove (hash,
+ foreach_metadata_free,
+ NULL);
+ g_hash_table_destroy (hash);
+}
+
+static gboolean
+metadata_hash_equal (GHashTable *hash1,
+ GHashTable *hash2)
+{
+ GHashTableIter iter;
+ gpointer key1, value1, value2;
+ guint id;
+
+ if (hash1 == NULL && hash2 == NULL) {
+ return TRUE;
+ }
+
+ if (hash1 == NULL || hash2 == NULL) {
+ return FALSE;
+ }
+
+ if (g_hash_table_size (hash1) !=
+ g_hash_table_size (hash2)) {
+ return FALSE;
+ }
+
+ g_hash_table_iter_init (&iter, hash1);
+ while (g_hash_table_iter_next (&iter, &key1, &value1)) {
+ value2 = g_hash_table_lookup (hash2, key1);
+ if (value2 == NULL) {
+ return FALSE;
+ }
+ id = GPOINTER_TO_UINT (key1);
+ if (id & METADATA_ID_IS_LIST_MASK) {
+ if (!eel_g_strv_equal ((char **)value1, (char **)value2)) {
+ return FALSE;
+ }
+ } else {
+ if (strcmp ((char *)value1, (char *)value2) != 0) {
+ return FALSE;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+static void
+clear_metadata (NautilusFile *file)
+{
+ if (file->details->metadata) {
+ metadata_hash_free (file->details->metadata);
+ file->details->metadata = NULL;
+ }
+}
+
+static GHashTable *
+get_metadata_from_info (GFileInfo *info)
+{
+ GHashTable *metadata;
+ char **attrs;
+ guint id;
+ int i;
+ GFileAttributeType type;
+ gpointer value;
+
+ attrs = g_file_info_list_attributes (info, "metadata");
+
+ metadata = g_hash_table_new (NULL, NULL);
+
+ for (i = 0; attrs[i] != NULL; i++) {
+ id = nautilus_metadata_get_id (attrs[i] + strlen ("metadata::"));
+ if (id == 0) {
+ continue;
+ }
+
+ if (!g_file_info_get_attribute_data (info, attrs[i],
+ &type, &value, NULL)) {
+ continue;
+ }
+
+ if (type == G_FILE_ATTRIBUTE_TYPE_STRING) {
+ g_hash_table_insert (metadata, GUINT_TO_POINTER (id),
+ g_strdup ((char *)value));
+ } else if (type == G_FILE_ATTRIBUTE_TYPE_STRINGV) {
+ id |= METADATA_ID_IS_LIST_MASK;
+ g_hash_table_insert (metadata, GUINT_TO_POINTER (id),
+ g_strdupv ((char **)value));
+ }
+ }
+
+ g_strfreev (attrs);
+
+ return metadata;
+}
void
nautilus_file_clear_info (NautilusFile *file)
@@ -339,6 +458,8 @@ nautilus_file_clear_info (NautilusFile *file)
eel_ref_str_unref (file->details->filesystem_id);
file->details->filesystem_id = NULL;
+
+ clear_metadata (file);
}
static NautilusFile *
@@ -2023,7 +2144,24 @@ update_info_internal (NautilusFile *file,
g_free (file->details->trash_orig_path);
file->details->trash_orig_path = g_strdup (trash_orig_path);
}
-
+
+ if (g_file_info_has_namespace (info, "metadata")) {
+ GHashTable *metadata;
+
+ metadata = get_metadata_from_info (info);
+ if (!metadata_hash_equal (metadata,
+ file->details->metadata)) {
+ changed = TRUE;
+ clear_metadata (file);
+ file->details->metadata = metadata;
+ } else {
+ metadata_hash_free (metadata);
+ }
+ } else if (file->details->metadata) {
+ changed = TRUE;
+ clear_metadata (file);
+ }
+
if (update_name) {
name = g_file_info_get_name (info);
if (file->details->name == NULL ||
@@ -3027,60 +3165,119 @@ nautilus_file_list_filter_hidden_and_backup (GList *files,
return filtered_files;
}
-
-
-
-/* We use the file's URI for the metadata for files in a directory,
- * but we use a hard-coded string for the metadata for the directory
- * itself.
- */
-static const char *
-get_metadata_name (NautilusFile *file)
-{
- if (nautilus_file_is_self_owned (file)) {
- return FILE_NAME_FOR_DIRECTORY_METADATA;
- }
- return eel_ref_str_peek (file->details->name);
-}
-
char *
nautilus_file_get_metadata (NautilusFile *file,
const char *key,
const char *default_metadata)
{
+ guint id;
+ char *value;
+
g_return_val_if_fail (key != NULL, g_strdup (default_metadata));
g_return_val_if_fail (key[0] != '\0', g_strdup (default_metadata));
- if (file == NULL) {
+
+ if (file == NULL ||
+ file->details->metadata == NULL) {
return g_strdup (default_metadata);
}
+
g_return_val_if_fail (NAUTILUS_IS_FILE (file), g_strdup (default_metadata));
- return nautilus_directory_get_file_metadata
- (file->details->directory,
- get_metadata_name (file),
- key,
- default_metadata);
+ id = nautilus_metadata_get_id (key);
+ value = g_hash_table_lookup (file->details->metadata, GUINT_TO_POINTER (id));
+
+ if (value) {
+ return g_strdup (value);
+ }
+ return g_strdup (default_metadata);
}
GList *
nautilus_file_get_metadata_list (NautilusFile *file,
- const char *list_key,
- const char *list_subkey)
+ const char *key)
{
- g_return_val_if_fail (list_key != NULL, NULL);
- g_return_val_if_fail (list_key[0] != '\0', NULL);
- g_return_val_if_fail (list_subkey != NULL, NULL);
- g_return_val_if_fail (list_subkey[0] != '\0', NULL);
- if (file == NULL) {
+ GList *res;
+ guint id;
+ char **value;
+ int i;
+
+ g_return_val_if_fail (key != NULL, NULL);
+ g_return_val_if_fail (key[0] != '\0', NULL);
+
+ if (file == NULL ||
+ file->details->metadata == NULL) {
return NULL;
}
+
g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
- return nautilus_directory_get_file_metadata_list
- (file->details->directory,
- get_metadata_name (file),
- list_key,
- list_subkey);
+ id = nautilus_metadata_get_id (key);
+ id |= METADATA_ID_IS_LIST_MASK;
+
+ value = g_hash_table_lookup (file->details->metadata, GUINT_TO_POINTER (id));
+
+ if (value) {
+ res = NULL;
+ for (i = 0; value[i] != NULL; i++) {
+ res = g_list_prepend (res, g_strdup (value[i]));
+ }
+ return g_list_reverse (res);
+ }
+
+ return NULL;
+}
+
+static void
+set_metadata_get_info_callback (GObject *source_object,
+ GAsyncResult *res,
+ gpointer callback_data)
+{
+ NautilusFile *file;
+ GFileInfo *new_info;
+ GError *error;
+
+ file = callback_data;
+
+ error = NULL;
+ new_info = g_file_query_info_finish (G_FILE (source_object), res, &error);
+ if (new_info != NULL) {
+ nautilus_file_update_info (file, new_info);
+ g_object_unref (new_info);
+ }
+ nautilus_file_unref (file);
+ if (error) {
+ g_error_free (error);
+ }
+}
+
+static void
+set_metadata_callback (GObject *source_object,
+ GAsyncResult *result,
+ gpointer callback_data)
+{
+ NautilusFile *file;
+ GError *error;
+ gboolean res;
+
+ file = callback_data;
+
+ error = NULL;
+ res = g_file_set_attributes_finish (G_FILE (source_object),
+ result,
+ NULL,
+ &error);
+
+ if (res) {
+ g_file_query_info_async (G_FILE (source_object),
+ NAUTILUS_FILE_DEFAULT_ATTRIBUTES,
+ 0,
+ G_PRIORITY_DEFAULT,
+ NULL,
+ set_metadata_get_info_callback, file);
+ } else {
+ nautilus_file_unref (file);
+ g_error_free (error);
+ }
}
void
@@ -3089,36 +3286,84 @@ nautilus_file_set_metadata (NautilusFile *file,
const char *default_metadata,
const char *metadata)
{
+ GFile *location;
+ GFileInfo *info;
+ const char *val;
+ char *gio_key;
+
g_return_if_fail (NAUTILUS_IS_FILE (file));
g_return_if_fail (key != NULL);
g_return_if_fail (key[0] != '\0');
- nautilus_directory_set_file_metadata
- (file->details->directory,
- get_metadata_name (file),
- key,
- default_metadata,
- metadata);
+ info = g_file_info_new ();
+
+ val = metadata;
+ if (val == NULL) {
+ val = default_metadata;
+ }
+
+ if (val == NULL) {
+ g_print ("TODO: setting NULL string metadata");
+ val = "<null>";
+ }
+
+ g_print ("setting key %s to %s\n", key, val);
+ gio_key = g_strconcat ("metadata::", key, NULL);
+ g_file_info_set_attribute_string (info, gio_key, val);
+ g_free (gio_key);
+
+ location = nautilus_file_get_location (file);
+ g_file_set_attributes_async (location,
+ info,
+ 0,
+ G_PRIORITY_DEFAULT,
+ NULL,
+ set_metadata_callback,
+ nautilus_file_ref (file));
+ g_object_unref (location);
+ g_object_unref (info);
}
void
nautilus_file_set_metadata_list (NautilusFile *file,
- const char *list_key,
- const char *list_subkey,
+ const char *key,
GList *list)
{
+ GFile *location;
+ GFileInfo *info;
+ char **val;
+ int len, i;
+ GList *l;
+ char *gio_key;
+
g_return_if_fail (NAUTILUS_IS_FILE (file));
- g_return_if_fail (list_key != NULL);
- g_return_if_fail (list_key[0] != '\0');
- g_return_if_fail (list_subkey != NULL);
- g_return_if_fail (list_subkey[0] != '\0');
+ g_return_if_fail (key != NULL);
+ g_return_if_fail (key[0] != '\0');
+
+ info = g_file_info_new ();
+
+ len = g_list_length (list);
+ val = g_new (char *, len + 1);
+ for (l = list, i = 0; l != NULL; l = l->next, i++) {
+ val[i] = l->data;
+ }
+ val[i] = NULL;
+
+ g_print ("setting list key %s to %d items\n", key, len);
+ gio_key = g_strconcat ("metadata::", key, NULL);
+ g_file_info_set_attribute_stringv (info, gio_key, val);
+ g_free (gio_key);
- nautilus_directory_set_file_metadata_list
- (file->details->directory,
- get_metadata_name (file),
- list_key,
- list_subkey,
- list);
+ location = nautilus_file_get_location (file);
+ g_file_set_attributes_async (location,
+ info,
+ 0,
+ G_PRIORITY_DEFAULT,
+ NULL,
+ set_metadata_callback,
+ nautilus_file_ref (file));
+ g_object_unref (info);
+ g_object_unref (location);
}
@@ -3127,18 +3372,33 @@ nautilus_file_get_boolean_metadata (NautilusFile *file,
const char *key,
gboolean default_metadata)
{
+ char *result_as_string;
+ gboolean result;
+
g_return_val_if_fail (key != NULL, default_metadata);
g_return_val_if_fail (key[0] != '\0', default_metadata);
+
if (file == NULL) {
return default_metadata;
}
+
g_return_val_if_fail (NAUTILUS_IS_FILE (file), default_metadata);
- return nautilus_directory_get_boolean_file_metadata
- (file->details->directory,
- get_metadata_name (file),
- key,
- default_metadata);
+ result_as_string = nautilus_file_get_metadata
+ (file, key, default_metadata ? "true" : "false");
+ g_assert (result_as_string != NULL);
+
+ if (g_ascii_strcasecmp (result_as_string, "true") == 0) {
+ result = TRUE;
+ } else if (g_ascii_strcasecmp (result_as_string, "false") == 0) {
+ result = FALSE;
+ } else {
+ g_error ("boolean metadata with value other than true or false");
+ result = default_metadata;
+ }
+
+ g_free (result_as_string);
+ return result;
}
int
@@ -3146,18 +3406,36 @@ nautilus_file_get_integer_metadata (NautilusFile *file,
const char *key,
int default_metadata)
{
+ char *result_as_string;
+ char default_as_string[32];
+ int result;
+ char c;
+
g_return_val_if_fail (key != NULL, default_metadata);
g_return_val_if_fail (key[0] != '\0', default_metadata);
+
if (file == NULL) {
return default_metadata;
}
g_return_val_if_fail (NAUTILUS_IS_FILE (file), default_metadata);
- return nautilus_directory_get_integer_file_metadata
- (file->details->directory,
- get_metadata_name (file),
- key,
- default_metadata);
+ g_snprintf (default_as_string, sizeof (default_as_string), "%d", default_metadata);
+ result_as_string = nautilus_file_get_metadata
+ (file, key, default_as_string);
+
+ /* Normally we can't get a a NULL, but we check for it here to
+ * handle the oddball case of a non-existent directory.
+ */
+ if (result_as_string == NULL) {
+ result = default_metadata;
+ } else {
+ if (sscanf (result_as_string, " %d %c", &result, &c) != 1) {
+ result = default_metadata;
+ }
+ g_free (result_as_string);
+ }
+
+ return result;
}
static gboolean
@@ -3227,12 +3505,9 @@ nautilus_file_set_boolean_metadata (NautilusFile *file,
g_return_if_fail (key != NULL);
g_return_if_fail (key[0] != '\0');
- nautilus_directory_set_boolean_file_metadata
- (file->details->directory,
- get_metadata_name (file),
- key,
- default_metadata,
- metadata);
+ nautilus_file_set_metadata (file, key,
+ default_metadata ? "true" : "false",
+ metadata ? "true" : "false");
}
void
@@ -3241,16 +3516,18 @@ nautilus_file_set_integer_metadata (NautilusFile *file,
int default_metadata,
int metadata)
{
+ char value_as_string[32];
+ char default_as_string[32];
+
g_return_if_fail (NAUTILUS_IS_FILE (file));
g_return_if_fail (key != NULL);
g_return_if_fail (key[0] != '\0');
- nautilus_directory_set_integer_file_metadata
- (file->details->directory,
- get_metadata_name (file),
- key,
- default_metadata,
- metadata);
+ g_snprintf (value_as_string, sizeof (value_as_string), "%d", metadata);
+ g_snprintf (default_as_string, sizeof (default_as_string), "%d", default_metadata);
+
+ nautilus_file_set_metadata (file, key,
+ default_as_string, value_as_string);
}
static const char *
@@ -6027,7 +6304,7 @@ nautilus_file_get_keywords (NautilusFile *file)
/* Put all the keywords into a list. */
keywords = nautilus_file_get_metadata_list
- (file, "keyword", "name");
+ (file, NAUTILUS_METADATA_KEY_KEYWORD);
keywords = g_list_concat (keywords, eel_g_str_list_copy (file->details->extension_emblems));
keywords = g_list_concat (keywords, eel_g_str_list_copy (file->details->pending_extension_emblems));
@@ -6057,7 +6334,7 @@ nautilus_file_set_keywords (NautilusFile *file, GList *keywords)
canonical_keywords = sort_keyword_list_and_remove_duplicates
(g_list_copy (keywords));
nautilus_file_set_metadata_list
- (file, "keyword", "name", canonical_keywords);
+ (file, NAUTILUS_METADATA_KEY_KEYWORD, canonical_keywords);
g_list_free (canonical_keywords);
}
diff --git a/libnautilus-private/nautilus-file.h b/libnautilus-private/nautilus-file.h
index 0544308..f984017 100644
--- a/libnautilus-private/nautilus-file.h
+++ b/libnautilus-private/nautilus-file.h
@@ -312,15 +312,13 @@ char * nautilus_file_get_metadata (Nautilu
const char *key,
const char *default_metadata);
GList * nautilus_file_get_metadata_list (NautilusFile *file,
- const char *list_key,
- const char *list_subkey);
+ const char *key);
void nautilus_file_set_metadata (NautilusFile *file,
const char *key,
const char *default_metadata,
const char *metadata);
void nautilus_file_set_metadata_list (NautilusFile *file,
- const char *list_key,
- const char *list_subkey,
+ const char *key,
GList *list);
/* Covers for common data types. */
diff --git a/libnautilus-private/nautilus-metadata.c b/libnautilus-private/nautilus-metadata.c
new file mode 100644
index 0000000..c569aca
--- /dev/null
+++ b/libnautilus-private/nautilus-metadata.c
@@ -0,0 +1,79 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*-*/
+
+/* nautilus-metadata.c - metadata utils
+ *
+ * Copyright (C) 2009 Red Hatl, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+#include "nautilus-metadata.h"
+#include <glib.h>
+
+static char *used_metadata_names[] = {
+ NAUTILUS_METADATA_KEY_DEFAULT_COMPONENT,
+ NAUTILUS_METADATA_KEY_LOCATION_BACKGROUND_COLOR,
+ NAUTILUS_METADATA_KEY_LOCATION_BACKGROUND_IMAGE,
+ NAUTILUS_METADATA_KEY_ICON_VIEW_ZOOM_LEVEL,
+ NAUTILUS_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT,
+ NAUTILUS_METADATA_KEY_ICON_VIEW_TIGHTER_LAYOUT,
+ NAUTILUS_METADATA_KEY_ICON_VIEW_SORT_BY,
+ NAUTILUS_METADATA_KEY_ICON_VIEW_SORT_REVERSED,
+ NAUTILUS_METADATA_KEY_ICON_VIEW_KEEP_ALIGNED,
+ NAUTILUS_METADATA_KEY_ICON_VIEW_LAYOUT_TIMESTAMP,
+ NAUTILUS_METADATA_KEY_LIST_VIEW_ZOOM_LEVEL,
+ NAUTILUS_METADATA_KEY_LIST_VIEW_SORT_COLUMN,
+ NAUTILUS_METADATA_KEY_LIST_VIEW_SORT_REVERSED,
+ NAUTILUS_METADATA_KEY_LIST_VIEW_VISIBLE_COLUMNS,
+ NAUTILUS_METADATA_KEY_LIST_VIEW_COLUMN_ORDER,
+ NAUTILUS_METADATA_KEY_COMPACT_VIEW_ZOOM_LEVEL,
+ NAUTILUS_METADATA_KEY_WINDOW_GEOMETRY,
+ NAUTILUS_METADATA_KEY_WINDOW_SCROLL_POSITION,
+ NAUTILUS_METADATA_KEY_WINDOW_SHOW_HIDDEN_FILES,
+ NAUTILUS_METADATA_KEY_WINDOW_MAXIMIZED,
+ NAUTILUS_METADATA_KEY_WINDOW_STICKY,
+ NAUTILUS_METADATA_KEY_WINDOW_KEEP_ABOVE,
+ NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR,
+ NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE,
+ NAUTILUS_METADATA_KEY_SIDEBAR_BUTTONS,
+ NAUTILUS_METADATA_KEY_ANNOTATION,
+ NAUTILUS_METADATA_KEY_ICON_POSITION,
+ NAUTILUS_METADATA_KEY_ICON_POSITION_TIMESTAMP,
+ NAUTILUS_METADATA_KEY_ICON_SCALE,
+ NAUTILUS_METADATA_KEY_CUSTOM_ICON,
+ NAUTILUS_METADATA_KEY_SCREEN,
+ NAUTILUS_METADATA_KEY_KEYWORD,
+ NULL
+};
+
+guint
+nautilus_metadata_get_id (const char *metadata)
+{
+ static GHashTable *hash;
+ int i;
+
+ if (hash == NULL)
+ {
+ hash = g_hash_table_new (g_str_hash, g_str_equal);
+ for (i = 0; used_metadata_names[i] != NULL; i++)
+ g_hash_table_insert (hash,
+ used_metadata_names[i],
+ GINT_TO_POINTER (i + 1));
+ }
+
+ return GPOINTER_TO_INT (g_hash_table_lookup (hash, metadata));
+}
diff --git a/libnautilus-private/nautilus-metadata.h b/libnautilus-private/nautilus-metadata.h
index be19f7c..ffebddb 100644
--- a/libnautilus-private/nautilus-metadata.h
+++ b/libnautilus-private/nautilus-metadata.h
@@ -27,11 +27,12 @@
/* Keys for getting/setting Nautilus metadata. All metadata used in Nautilus
* should define its key here, so we can keep track of the whole set easily.
+ * Any updates here needs to be added in nautilus-metadata.c too.
*/
-/* Per-file */
+#include <glib.h>
-#define NAUTILUS_METADATA_KEY_CONTENT_VIEWS "content_views"
+/* Per-file */
#define NAUTILUS_METADATA_KEY_DEFAULT_COMPONENT "default_component"
@@ -51,7 +52,6 @@
#define NAUTILUS_METADATA_KEY_LIST_VIEW_SORT_REVERSED "list_view_sort_reversed"
#define NAUTILUS_METADATA_KEY_LIST_VIEW_VISIBLE_COLUMNS "list_view_visible_columns"
#define NAUTILUS_METADATA_KEY_LIST_VIEW_COLUMN_ORDER "list_view_column_order"
-#define NAUTILUS_METADATA_SUBKEY_COLUMNS "columns"
#define NAUTILUS_METADATA_KEY_COMPACT_VIEW_ZOOM_LEVEL "compact_view_zoom_level"
@@ -65,8 +65,6 @@
#define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_COLOR "sidebar_background_color"
#define NAUTILUS_METADATA_KEY_SIDEBAR_BACKGROUND_IMAGE "sidebar_background_tile_image"
#define NAUTILUS_METADATA_KEY_SIDEBAR_BUTTONS "sidebar_buttons"
-#define NAUTILUS_METADATA_KEY_SIDEBAR_TAB_COLOR "sidebar_tab_color"
-#define NAUTILUS_METADATA_KEY_SIDEBAR_TITLE_TAB_COLOR "sidebar_title_tab_color"
#define NAUTILUS_METADATA_KEY_ANNOTATION "annotation"
#define NAUTILUS_METADATA_KEY_ICON_POSITION "icon_position"
@@ -74,9 +72,9 @@
#define NAUTILUS_METADATA_KEY_ICON_SCALE "icon_scale"
#define NAUTILUS_METADATA_KEY_CUSTOM_ICON "custom_icon"
#define NAUTILUS_METADATA_KEY_SCREEN "screen"
+#define NAUTILUS_METADATA_KEY_KEYWORD "keyword"
-/* per link file */
-#define NAUTILUS_METADATA_KEY_EXTRA_TEXT "extra_text"
+guint nautilus_metadata_get_id (const char *metadata);
#endif /* NAUTILUS_METADATA_H */
diff --git a/src/file-manager/fm-list-view.c b/src/file-manager/fm-list-view.c
index 86f6ebd..c82de19 100644
--- a/src/file-manager/fm-list-view.c
+++ b/src/file-manager/fm-list-view.c
@@ -1533,8 +1533,7 @@ get_visible_columns (FMListView *list_view)
visible_columns = nautilus_file_get_metadata_list
(file,
- NAUTILUS_METADATA_KEY_LIST_VIEW_VISIBLE_COLUMNS,
- NAUTILUS_METADATA_SUBKEY_COLUMNS);
+ NAUTILUS_METADATA_KEY_LIST_VIEW_VISIBLE_COLUMNS);
if (visible_columns) {
GPtrArray *res;
@@ -1565,8 +1564,7 @@ get_column_order (FMListView *list_view)
column_order = nautilus_file_get_metadata_list
(file,
- NAUTILUS_METADATA_KEY_LIST_VIEW_COLUMN_ORDER,
- NAUTILUS_METADATA_SUBKEY_COLUMNS);
+ NAUTILUS_METADATA_KEY_LIST_VIEW_COLUMN_ORDER);
if (column_order) {
GPtrArray *res;
@@ -2051,7 +2049,6 @@ column_chooser_changed_callback (NautilusColumnChooser *chooser,
list = g_list_reverse (list);
nautilus_file_set_metadata_list (file,
NAUTILUS_METADATA_KEY_LIST_VIEW_VISIBLE_COLUMNS,
- NAUTILUS_METADATA_SUBKEY_COLUMNS,
list);
g_list_free (list);
@@ -2062,7 +2059,6 @@ column_chooser_changed_callback (NautilusColumnChooser *chooser,
list = g_list_reverse (list);
nautilus_file_set_metadata_list (file,
NAUTILUS_METADATA_KEY_LIST_VIEW_COLUMN_ORDER,
- NAUTILUS_METADATA_SUBKEY_COLUMNS,
list);
g_list_free (list);
@@ -2105,8 +2101,8 @@ column_chooser_use_default_callback (NautilusColumnChooser *chooser,
file = fm_directory_view_get_directory_as_file
(FM_DIRECTORY_VIEW (view));
- nautilus_file_set_metadata_list (file, NAUTILUS_METADATA_KEY_LIST_VIEW_COLUMN_ORDER, NAUTILUS_METADATA_SUBKEY_COLUMNS, NULL);
- nautilus_file_set_metadata_list (file, NAUTILUS_METADATA_KEY_LIST_VIEW_VISIBLE_COLUMNS, NAUTILUS_METADATA_SUBKEY_COLUMNS, NULL);
+ nautilus_file_set_metadata_list (file, NAUTILUS_METADATA_KEY_LIST_VIEW_COLUMN_ORDER, NULL);
+ nautilus_file_set_metadata_list (file, NAUTILUS_METADATA_KEY_LIST_VIEW_VISIBLE_COLUMNS, NULL);
set_columns_settings_from_metadata_and_preferences (FM_LIST_VIEW (view));
column_chooser_set_from_settings (chooser, view);
@@ -2279,8 +2275,8 @@ fm_list_view_reset_to_defaults (FMDirectoryView *view)
nautilus_file_set_metadata (file, NAUTILUS_METADATA_KEY_LIST_VIEW_SORT_COLUMN, NULL, NULL);
nautilus_file_set_metadata (file, NAUTILUS_METADATA_KEY_LIST_VIEW_SORT_REVERSED, NULL, NULL);
nautilus_file_set_metadata (file, NAUTILUS_METADATA_KEY_LIST_VIEW_ZOOM_LEVEL, NULL, NULL);
- nautilus_file_set_metadata_list (file, NAUTILUS_METADATA_KEY_LIST_VIEW_COLUMN_ORDER, NAUTILUS_METADATA_SUBKEY_COLUMNS, NULL);
- nautilus_file_set_metadata_list (file, NAUTILUS_METADATA_KEY_LIST_VIEW_VISIBLE_COLUMNS, NAUTILUS_METADATA_SUBKEY_COLUMNS, NULL);
+ nautilus_file_set_metadata_list (file, NAUTILUS_METADATA_KEY_LIST_VIEW_COLUMN_ORDER, NULL);
+ nautilus_file_set_metadata_list (file, NAUTILUS_METADATA_KEY_LIST_VIEW_VISIBLE_COLUMNS, NULL);
gtk_tree_sortable_set_sort_column_id
(GTK_TREE_SORTABLE (FM_LIST_VIEW (view)->details->model),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]