From dff58b1c164f30adc6be15fe858f609e8f88a89d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Wed, 5 Oct 2016 02:54:43 +0200 Subject: Fill the Info tab with actual information --- nncmpp.c | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/nncmpp.c b/nncmpp.c index 613d902..42e6d26 100644 --- a/nncmpp.c +++ b/nncmpp.c @@ -1473,10 +1473,11 @@ app_process_termo_event (termo_key_t *event) // --- Info tab ---------------------------------------------------------------- -// TODO: either find something else to put in here or remove the wrapper struct static struct { struct tab super; ///< Parent class + struct str_vector keys; ///< Data keys + struct str_vector values; ///< Data values } g_info_tab; @@ -1487,18 +1488,54 @@ info_tab_on_item_draw (struct tab *self, unsigned item_index, (void) self; (void) width; - // TODO + // It looks like we could do with a generic list structure that just + // stores formatted row_buffers. Let's see for other tabs: + // - Current -- unusable, has dynamic column alignment + // - Library -- could work for the "icons" + // - Streams -- useless + // - Debug -- it'd take up considerably more space + // However so far we're only showing show key-value pairs. + + row_buffer_addv (buffer, + g_info_tab.keys.vector[item_index], A_BOLD, ":", A_BOLD, NULL); + while (buffer->total_width < 8) + row_buffer_append (buffer, " ", 0); + row_buffer_append (buffer, g_info_tab.values.vector[item_index], 0); +} + +static void +info_tab_add (struct str_map *map, const char *field) +{ + const char *value = str_map_find (map, field); + if (!value) value = ""; + + str_vector_add (&g_info_tab.keys, field); + str_vector_add (&g_info_tab.values, value); + g_info_tab.super.item_count++; } static void info_tab_update (void) { - // TODO: add some entries from "playback_info" to the listview + str_vector_reset (&g_info_tab.keys); + str_vector_reset (&g_info_tab.values); + g_info_tab.super.item_count = 0; + + struct str_map *map = &g_ctx.playback_info; + info_tab_add (map, "Title"); + info_tab_add (map, "Artist"); + info_tab_add (map, "Album"); + info_tab_add (map, "Track"); + info_tab_add (map, "Genre"); + info_tab_add (map, "File"); } static struct tab * info_tab_init (void) { + str_vector_init (&g_info_tab.keys); + str_vector_init (&g_info_tab.values); + struct tab *super = &g_info_tab.super; tab_init (super, "Info"); super->on_item_draw = info_tab_on_item_draw; -- cgit v1.2.3