From d407bc679bcef4b318a8b53bca598eda32bd2520 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sun, 6 Sep 2009 10:27:11 +0200 Subject: [PATCH] add N marker for displaying full track info and make n show only a number generated filename was ugly if track tag was in format xx/xx, so %n should display only current track number. --- doc/config | 3 ++- doc/ncmpcpp.1 | 3 ++- src/display.cpp | 4 ++++ src/song.cpp | 17 +++++++++++++++++ src/song.h | 1 + 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/doc/config b/doc/config index 5865ab42..38e45023 100644 --- a/doc/config +++ b/doc/config @@ -70,7 +70,8 @@ ## %t - title ## %b - album ## %y - year -## %n - track number +## %n - track number (01/12 -> 01) +## %N - full track info (01/12 -> 01/12) ## %g - genre ## %c - composer ## %p - performer diff --git a/doc/ncmpcpp.1 b/doc/ncmpcpp.1 index e9f3f078..dff17582 100644 --- a/doc/ncmpcpp.1 +++ b/doc/ncmpcpp.1 @@ -295,7 +295,8 @@ For song format you can use: %t - title %b - album %y - year - %n - track number + %n - track number (01/12 -> 01) + %N - full track info (01/12 -> 01/12) %g - genre %c - composer %p - performer diff --git a/src/display.cpp b/src/display.cpp index a8d262e5..612313c7 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -65,6 +65,7 @@ std::string Display::Columns() tag = "Year"; break; case 'n': + case 'N': tag = "Track"; break; case 'g': @@ -149,6 +150,9 @@ void Display::SongsInColumns(const MPD::Song &s, void *, Menu *menu) get = &MPD::Song::GetDate; break; case 'n': + get = &MPD::Song::GetTrackNumber; + break; + case 'N': get = &MPD::Song::GetTrack; break; case 'g': diff --git a/src/song.cpp b/src/song.cpp index c9bda087..853a738b 100644 --- a/src/song.cpp +++ b/src/song.cpp @@ -163,6 +163,20 @@ std::string MPD::Song::GetTrack() const return itsSong->track; } +std::string MPD::Song::GetTrackNumber() const +{ + if (!itsSong->track) + return ""; + const char *slash = strrchr(itsSong->track, '/'); + if (slash) + { + std::string result(itsSong->track, slash-itsSong->track); + return result[0] != '0' && result.length() == 1 ? "0"+result : result; + } + else + return GetTrack(); +} + std::string MPD::Song::GetDate() const { return !itsSong->date ? "" : itsSong->date; @@ -332,6 +346,9 @@ std::string MPD::Song::ParseFormat(std::string::const_iterator &it) const get = &MPD::Song::GetDate; break; case 'n': + get = &MPD::Song::GetTrackNumber; + break; + case 'N': get = &MPD::Song::GetTrack; break; case 'g': diff --git a/src/song.h b/src/song.h index e1c74603..0f81e298 100644 --- a/src/song.h +++ b/src/song.h @@ -46,6 +46,7 @@ namespace MPD std::string GetTitle() const; std::string GetAlbum() const; std::string GetTrack() const; + std::string GetTrackNumber() const; std::string GetDate() const; std::string GetGenre() const; std::string GetComposer() const;