[nautilus/remove-emblems-splitted: 23/23] Readd code to read emblems provided by extensions.



commit 23c1dbcac260018428949bb954dff65dd774ee11
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Mon Jul 26 17:15:56 2010 +0200

    Readd code to read emblems provided by extensions.

 libnautilus-private/nautilus-file.c |   53 ++++++++++++++++++++++++++++++++++-
 libnautilus-private/nautilus-file.h |    1 +
 2 files changed, 53 insertions(+), 1 deletions(-)
---
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 1fe123a..489413e 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -6384,7 +6384,8 @@ nautilus_file_get_emblem_icons (NautilusFile *file,
 	
 	g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
 
-	keywords = prepend_automatic_keywords (file, NULL);
+	keywords = nautilus_file_get_keywords (file);
+	keywords = prepend_automatic_keywords (file, keywords);
 
 	icons = NULL;
 	for (l = keywords; l != NULL; l = l->next) {
@@ -6468,6 +6469,56 @@ nautilus_file_get_emblem_pixbufs (NautilusFile *file,
 	
 }
 
+static GList *
+sort_keyword_list_and_remove_duplicates (GList *keywords)
+{
+	GList *p;
+	GList *duplicate_link;
+	
+	if (keywords != NULL) {
+		keywords = eel_g_str_list_alphabetize (keywords);
+
+		p = keywords;
+		while (p->next != NULL) {
+			if (strcmp ((const char *) p->data, (const char *) p->next->data) == 0) {
+				duplicate_link = p->next;
+				keywords = g_list_remove_link (keywords, duplicate_link);
+				eel_g_list_free_deep (duplicate_link);
+			} else {
+				p = p->next;
+			}
+		}
+	}
+	
+	return keywords;
+}
+
+/**
+ * nautilus_file_get_keywords
+ * 
+ * Return this file's keywords.
+ * @file: NautilusFile representing the file in question.
+ * 
+ * Returns: A list of keywords.
+ * 
+ **/
+GList *
+nautilus_file_get_keywords (NautilusFile *file)
+{
+	GList *keywords;
+
+	if (file == NULL) {
+		return NULL;
+	}
+
+	g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL);
+
+	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));
+
+	return sort_keyword_list_and_remove_duplicates (keywords);
+}
+
 /**
  * nautilus_file_is_symbolic_link
  * 
diff --git a/libnautilus-private/nautilus-file.h b/libnautilus-private/nautilus-file.h
index 147b210..9f170e0 100644
--- a/libnautilus-private/nautilus-file.h
+++ b/libnautilus-private/nautilus-file.h
@@ -208,6 +208,7 @@ NautilusRequestStatus   nautilus_file_get_deep_counts                   (Nautilu
 gboolean                nautilus_file_should_show_thumbnail             (NautilusFile                   *file);
 gboolean                nautilus_file_should_show_directory_item_count  (NautilusFile                   *file);
 gboolean                nautilus_file_should_show_type                  (NautilusFile                   *file);
+GList *                 nautilus_file_get_keywords                      (NautilusFile                   *file);
 GList *                 nautilus_file_get_emblem_icons                  (NautilusFile                   *file,
 									 char                          **exclude);
 GList *                 nautilus_file_get_emblem_pixbufs                (NautilusFile                   *file,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]