From 8c3760111d00aa6ea8a03bf466cc005d793a6759 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Wed, 26 Aug 2009 03:06:27 +0200 Subject: [PATCH] new feature: display remaining time of song instead of elapsed time --- doc/config | 2 ++ doc/ncmpcpp.1 | 3 +++ src/ncmpcpp.cpp | 20 ++++++++++++++++++-- src/settings.cpp | 5 +++++ src/settings.h | 1 + src/status.cpp | 16 ++++++++++++++-- 6 files changed, 43 insertions(+), 4 deletions(-) diff --git a/doc/config b/doc/config index ecfda58c..7c0f7769 100644 --- a/doc/config +++ b/doc/config @@ -209,6 +209,8 @@ # #display_bitrate = "no" # +#display_remaining_time = "no" +# #regular_expressions = "basic" (basic/extended) # ## diff --git a/doc/ncmpcpp.1 b/doc/ncmpcpp.1 index 77417606..fb2da1e8 100644 --- a/doc/ncmpcpp.1 +++ b/doc/ncmpcpp.1 @@ -198,6 +198,9 @@ If enabled, clock will display time in format hh:mm:ss, otherwise hh:mm. .B display_bitrate = yes/no If enabled, bitrate of currently playing song will be displayed in statusbar. .TP +.B display_remaining_time = yes/no +If enabled, remaining time of currently playing song will be be displayed in statusbar instead of elapsed time. +.TP .B ignore_leading_the = yes/no If enabled, word "the" at the beginning of tags/filenames will be ignored while sorting items. .TP diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index ae30c544..df854d32 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -1115,7 +1115,13 @@ int main(int argc, char *argv[]) *wFooter << fmtBold; if (Config.new_design) { - tracklength = Song::ShowTime(songpos); + if (Config.display_remaining_time) + { + tracklength = "-"; + tracklength += Song::ShowTime(s->GetTotalLength()-songpos); + } + else + tracklength = Song::ShowTime(songpos); tracklength += "/"; tracklength += s->GetLength(); *wHeader << XY(0, 0) << tracklength << " "; @@ -1123,7 +1129,17 @@ int main(int argc, char *argv[]) } else { - tracklength = "[" + Song::ShowTime(songpos) + "/" + s->GetLength() + "]"; + tracklength = "["; + if (Config.display_remaining_time) + { + tracklength += "-"; + tracklength += Song::ShowTime(s->GetTotalLength()-songpos); + } + else + tracklength = Song::ShowTime(songpos); + tracklength += "/"; + tracklength += s->GetLength(); + tracklength += "]"; *wFooter << XY(wFooter->GetWidth()-tracklength.length(), 1) << tracklength; } double progressbar_size = songpos/double(s->GetTotalLength()); diff --git a/src/settings.cpp b/src/settings.cpp index e34916d8..7fc36007 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -292,6 +292,7 @@ void DefaultConfiguration(ncmpcpp_config &conf) conf.jump_to_now_playing_song_at_start = true; conf.clock_display_seconds = false; conf.display_bitrate = false; + conf.display_remaining_time = false; conf.ignore_leading_the = false; conf.block_search_constraints_change = true; conf.use_console_editor = false; @@ -743,6 +744,10 @@ void ReadConfiguration(ncmpcpp_config &conf) { conf.display_bitrate = v == "yes"; } + else if (cl.find("display_remaining_time") != std::string::npos) + { + conf.display_remaining_time = v == "yes"; + } else if (cl.find("ignore_leading_the") != std::string::npos) { conf.ignore_leading_the = v == "yes"; diff --git a/src/settings.h b/src/settings.h index 3b6886d6..bbae8764 100644 --- a/src/settings.h +++ b/src/settings.h @@ -190,6 +190,7 @@ struct ncmpcpp_config bool jump_to_now_playing_song_at_start; bool clock_display_seconds; bool display_bitrate; + bool display_remaining_time; bool ignore_leading_the; bool block_search_constraints_change; bool use_console_editor; diff --git a/src/status.cpp b/src/status.cpp index 91149605..41b53cfd 100644 --- a/src/status.cpp +++ b/src/status.cpp @@ -415,7 +415,13 @@ void NcmpcppStatusChanged(Connection *, StatusChanges changed, void *) std::string tracklength; if (Config.new_design) { - tracklength = Song::ShowTime(elapsed); + if (Config.display_remaining_time) + { + tracklength = "-"; + tracklength += Song::ShowTime(np.GetTotalLength()-elapsed); + } + else + tracklength = Song::ShowTime(elapsed); if (np.GetTotalLength()) { tracklength += "/"; @@ -466,7 +472,13 @@ void NcmpcppStatusChanged(Connection *, StatusChanges changed, void *) tracklength += " ["; if (np.GetTotalLength()) { - tracklength += Song::ShowTime(elapsed); + if (Config.display_remaining_time) + { + tracklength += "-"; + tracklength += Song::ShowTime(np.GetTotalLength()-elapsed); + } + else + tracklength += Song::ShowTime(elapsed); tracklength += "/"; tracklength += np.GetLength(); tracklength += "]";