diff options
Diffstat (limited to 'src/plugins/fs/search_namespace.c')
-rw-r--r-- | src/plugins/fs/search_namespace.c | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/src/plugins/fs/search_namespace.c b/src/plugins/fs/search_namespace.c new file mode 100644 index 00000000..22da212d --- /dev/null +++ b/src/plugins/fs/search_namespace.c | |||
@@ -0,0 +1,106 @@ | |||
1 | static int addNamespace(void * arg, | ||
2 | const char * namespaceName, | ||
3 | const HashCode512 * namespaceId, | ||
4 | const struct ECRS_MetaData * md, | ||
5 | int rating) { | ||
6 | GtkListStore * model = arg; | ||
7 | GtkTreeIter iter; | ||
8 | EncName enc; | ||
9 | char * name; | ||
10 | struct ECRS_MetaData * dmd; | ||
11 | char * desc; | ||
12 | size_t n; | ||
13 | |||
14 | DEBUG_BEGIN(); | ||
15 | hash2enc(namespaceId, | ||
16 | &enc); | ||
17 | if (md == NULL) { | ||
18 | dmd = NULL; | ||
19 | desc = STRDUP(""); | ||
20 | } else { | ||
21 | dmd = ECRS_dupMetaData(md); | ||
22 | desc = ECRS_getFirstFromMetaData(md, | ||
23 | EXTRACTOR_DESCRIPTION, | ||
24 | EXTRACTOR_TITLE, | ||
25 | EXTRACTOR_AUTHOR, | ||
26 | EXTRACTOR_GENRE, | ||
27 | EXTRACTOR_SUBJECT, | ||
28 | EXTRACTOR_CREATOR, | ||
29 | EXTRACTOR_PRODUCER, | ||
30 | EXTRACTOR_GROUP, | ||
31 | EXTRACTOR_CREATED_FOR, | ||
32 | EXTRACTOR_SUMMARY, | ||
33 | EXTRACTOR_OWNER, | ||
34 | -1); | ||
35 | if (desc == NULL) | ||
36 | desc = STRDUP(""); | ||
37 | } | ||
38 | |||
39 | n = strlen(desc) + 64; | ||
40 | name = MALLOC(n); | ||
41 | SNPRINTF(name, | ||
42 | n, | ||
43 | "%s: %*.s", | ||
44 | desc, | ||
45 | 20, | ||
46 | &enc); | ||
47 | gtk_list_store_append(model, | ||
48 | &iter); | ||
49 | gtk_list_store_set(model, | ||
50 | &iter, | ||
51 | NS_SEARCH_DESCRIPTION, name, | ||
52 | NS_SEARCH_ENCNAME, &enc, | ||
53 | NS_SEARCH_METADATA, dmd, | ||
54 | NS_SEARCH_RATING, rating, | ||
55 | -1); | ||
56 | FREE(name); | ||
57 | DEBUG_END(); | ||
58 | return OK; | ||
59 | } | ||
60 | |||
61 | #if 0 | ||
62 | /** | ||
63 | * cron job that periodically updates the model for the | ||
64 | * namespace selection in the search vbox. | ||
65 | */ | ||
66 | static void updateNCBModelSafe(void * unused) { | ||
67 | GtkWidget * searchNamespaceCB; | ||
68 | GtkListStore * model; | ||
69 | GtkTreeIter iter; | ||
70 | |||
71 | model = gtk_list_store_new(NS_SEARCH_NUM, | ||
72 | G_TYPE_STRING, /* what we show */ | ||
73 | G_TYPE_STRING, /* EncName of namespace */ | ||
74 | G_TYPE_POINTER, | ||
75 | G_TYPE_INT); /* Meta-data about namespace */ | ||
76 | gtk_list_store_append(model, | ||
77 | &iter); | ||
78 | gtk_list_store_set(model, | ||
79 | &iter, | ||
80 | NS_SEARCH_DESCRIPTION, _("globally"), | ||
81 | NS_SEARCH_ENCNAME, NULL, | ||
82 | NS_SEARCH_METADATA, NULL, | ||
83 | NS_SEARCH_RATING, 0, | ||
84 | -1); | ||
85 | NS_listNamespaces(ectx, | ||
86 | cfg, | ||
87 | NO, | ||
88 | &addNamespace, | ||
89 | model); | ||
90 | searchNamespaceCB | ||
91 | = glade_xml_get_widget(getMainXML(), | ||
92 | "searchNamespaceComboBoxEntry"); | ||
93 | gtk_combo_box_set_model(GTK_COMBO_BOX(searchNamespaceCB), | ||
94 | GTK_TREE_MODEL(model)); | ||
95 | if (gtk_combo_box_entry_get_text_column(GTK_COMBO_BOX_ENTRY(searchNamespaceCB)) == -1) | ||
96 | gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(searchNamespaceCB), | ||
97 | 0); | ||
98 | if (-1 == gtk_combo_box_get_active(GTK_COMBO_BOX(searchNamespaceCB))) | ||
99 | gtk_combo_box_set_active(GTK_COMBO_BOX(searchNamespaceCB), | ||
100 | 0); | ||
101 | } | ||
102 | |||
103 | static void updateNCBModel(void * dummy) { | ||
104 | gtkSaveCall(&updateNCBModelSafe, NULL); | ||
105 | } | ||
106 | #endif | ||