[nautilus/remove-emblems-splitted: 23/23] Readd code to read emblems provided by extensions.
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/remove-emblems-splitted: 23/23] Readd code to read emblems provided by extensions.
- Date: Mon, 26 Jul 2010 15:34:38 +0000 (UTC)
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]