diff options
author | waker <wakeroid@gmail.com> | 2011-01-02 13:15:51 +0100 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2011-01-02 13:15:51 +0100 |
commit | 74d580c68fbae834dd626e40a60759c5d2d4f59a (patch) | |
tree | 375aebc6d7c5d9ecb8b5feaaff146bf97152eb75 /plugins/gtkui/trkproperties.c | |
parent | 865bb1c6a761c4963ddeab0c5ce3dc1d3ba2ab46 (diff) |
display unrecognized metadata fields in track properties
Diffstat (limited to 'plugins/gtkui/trkproperties.c')
-rw-r--r-- | plugins/gtkui/trkproperties.c | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/plugins/gtkui/trkproperties.c b/plugins/gtkui/trkproperties.c index f60a7b0b..ea3aaae9 100644 --- a/plugins/gtkui/trkproperties.c +++ b/plugins/gtkui/trkproperties.c @@ -148,17 +148,50 @@ trkproperties_fill_metadata (void) { trkproperties_modified = 0; gtk_list_store_clear (store); deadbeef->pl_lock (); + + // add "standard" fields int i = 0; while (types[i]) { - GtkTreeIter iter; - gtk_list_store_append (store, &iter); const char *value = deadbeef->pl_find_meta (track, types[i]); if (!value) { value = ""; } + GtkTreeIter iter; + gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, _(types[i+1]), 1, value, 2, types[i], -1); i += 2; } + + + DB_metaInfo_t *meta = deadbeef->pl_get_metadata (track); + while (meta) { + int i = 0; + while (types[i]) { + if (!strcmp (types[i], meta->key)) { + break; + } + i += 2; + } + if (types[i]) { + meta = meta->next; + continue; + } + + int l = strlen (meta->key); + char title[l+3]; + snprintf (title, sizeof (title), "<%s>", meta->key); + const char *value = meta->value; + const char *key = meta->key; + meta = meta->next; + + if (!value) { + value = ""; + } + + GtkTreeIter iter; + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, _(title), 1, value, 2, key, -1); + } deadbeef->pl_unlock (); // properties |