diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2017-09-25 19:26:37 +0200 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2017-09-30 16:32:16 +0200 |
commit | d9cdc86e4b84be863099f8cadfc54a176aaf5c90 (patch) | |
tree | 2f74810447c254d557900b33119d2f5f10ab29ef | |
parent | 5b6a63dc233948f9e2434835d93ec379adf4c7a9 (diff) | |
download | pianobar-d9cdc86e4b84be863099f8cadfc54a176aaf5c90.tar.gz pianobar-d9cdc86e4b84be863099f8cadfc54a176aaf5c90.tar.bz2 pianobar-d9cdc86e4b84be863099f8cadfc54a176aaf5c90.zip |
Add (optional) song duration to song list format string
Closes #636.
-rw-r--r-- | contrib/pianobar.1 | 3 | ||||
-rw-r--r-- | src/ui.c | 15 |
2 files changed, 14 insertions, 4 deletions
diff --git a/contrib/pianobar.1 b/contrib/pianobar.1 index 9628be1..6aee0b6 100644 --- a/contrib/pianobar.1 +++ b/contrib/pianobar.1 @@ -253,6 +253,9 @@ Song title .B %r Rating icon +.B %d +Song duration + .TP .B format_msg_none = %s .TQ @@ -743,20 +743,27 @@ void BarUiPrintSong (const BarSettings_t *settings, size_t BarUiListSongs (const BarSettings_t *settings, const PianoSong_t *song, const char *filter) { size_t i = 0; - char digits[8]; PianoListForeachP (song) { if (filter == NULL || (filter != NULL && (BarStrCaseStr (song->artist, filter) != NULL || BarStrCaseStr (song->title, filter) != NULL))) { - char outstr[512]; + char outstr[512], digits[8], duration[8] = "??:??"; const char *vals[] = {digits, song->artist, song->title, (song->rating == PIANO_RATE_LOVE) ? settings->loveIcon : - ((song->rating == PIANO_RATE_BAN) ? settings->banIcon : "")}; + ((song->rating == PIANO_RATE_BAN) ? settings->banIcon : ""), + duration}; + /* pre-format a few strings */ snprintf (digits, sizeof (digits) / sizeof (*digits), "%2zu", i); + const unsigned int length = song->length; + if (length > 0) { + snprintf (duration, sizeof (duration), "%02u:%02u", + length / 60, length % 60); + } + BarUiCustomFormat (outstr, sizeof (outstr), settings->listSongFormat, - "iatr", vals); + "iatrd", vals); BarUiAppendNewline (outstr, sizeof (outstr)); BarUiMsg (settings, MSG_LIST, "%s", outstr); } |