settings: make progressbar more customizable (elapsed time part color, boldness)

This commit is contained in:
Andrzej Rybczak
2012-07-16 00:00:20 +02:00
parent 27a0dc958f
commit 4475902eb9
6 changed files with 36 additions and 8 deletions

View File

@@ -1304,7 +1304,6 @@ int main(int argc, char **argv)
wFooter->SetTimeout(ncmpcpp_window_timeout);
SeekingInProgress = 1;
*wFooter << fmtBold;
while (Keypressed(input, Key.SeekForward) || Keypressed(input, Key.SeekBackward))
{
TraceMpdStatus();
@@ -1326,6 +1325,7 @@ int main(int argc, char **argv)
songpos = 0;
}
*wFooter << fmtBold;
std::string tracklength;
if (Config.new_design)
{
@@ -1356,10 +1356,10 @@ int main(int argc, char **argv)
tracklength += "]";
*wFooter << XY(wFooter->GetWidth()-tracklength.length(), 1) << tracklength;
}
*wFooter << fmtBoldEnd;
DrawProgressbar(songpos, Mpd.GetTotalTime());
wFooter->Refresh();
}
*wFooter << fmtBoldEnd;
SeekingInProgress = 0;
Mpd.Seek(songpos);
UpdateStatusImmediately = 1;

View File

@@ -394,6 +394,7 @@ void NcmpcppConfig::SetDefaults()
main_color = clYellow;
main_highlight_color = main_color;
progressbar_color = clDefault;
progressbar_elapsed_color = clDefault;
statusbar_color = clDefault;
alternative_ui_separator_color = clBlack;
active_column_color = clRed;
@@ -452,6 +453,7 @@ void NcmpcppConfig::SetDefaults()
discard_colors_if_item_is_selected = true;
store_lyrics_in_song_dir = false;
ask_for_locked_screen_width_part = true;
progressbar_boldness = true;
set_window_title = true;
mpd_port = 6600;
mpd_connection_timeout = 15;
@@ -1262,6 +1264,11 @@ void NcmpcppConfig::Read()
if (!v.empty())
ask_for_locked_screen_width_part = v == "yes";
}
else if (name == "progressbar_boldness")
{
if (!v.empty())
progressbar_boldness = v == "yes";
}
else if (name == "song_window_title_format")
{
if (!v.empty() && MPD::Song::isFormatOk("song_window_title_format", v))
@@ -1315,6 +1322,11 @@ void NcmpcppConfig::Read()
if (!v.empty())
progressbar_color = IntoColor(v);
}
else if (name == "progressbar_elapsed_color")
{
if (!v.empty())
progressbar_elapsed_color = IntoColor(v);
}
else if (name == "statusbar_color")
{
if (!v.empty())

View File

@@ -200,6 +200,7 @@ struct NcmpcppConfig
Color main_color;
Color main_highlight_color;
Color progressbar_color;
Color progressbar_elapsed_color;
Color statusbar_color;
Color alternative_ui_separator_color;
Color active_column_color;
@@ -262,6 +263,7 @@ struct NcmpcppConfig
bool discard_colors_if_item_is_selected;
bool store_lyrics_in_song_dir;
bool ask_for_locked_screen_width_part;
bool progressbar_boldness;
int mpd_port;
int mpd_connection_timeout;

View File

@@ -225,7 +225,6 @@ void NcmpcppStatusChanged(MPD::Connection *, MPD::StatusChanges changed, void *)
static MPD::Song np;
int sx, sy;
*wFooter << fmtBold;
wFooter->GetXY(sx, sy);
if (!Playlist::BlockNowPlayingUpdate)
@@ -505,9 +504,9 @@ void NcmpcppStatusChanged(MPD::Connection *, MPD::StatusChanges changed, void *)
}
basic_buffer<my_char_t> np_song;
String2Buffer(TO_WSTRING(utf_to_locale_cpy(np.toString(Config.song_status_format, "$"))), np_song);
*wFooter << XY(0, 1) << wclrtoeol << player_state << fmtBoldEnd;
*wFooter << XY(0, 1) << wclrtoeol << fmtBold << player_state << fmtBoldEnd;
np_song.Write(*wFooter, playing_song_scroll_begin, wFooter->GetWidth()-player_state.length()-tracklength.length(), U(" ** "));
*wFooter << fmtBold << XY(wFooter->GetWidth()-tracklength.length(), 1) << tracklength;
*wFooter << fmtBold << XY(wFooter->GetWidth()-tracklength.length(), 1) << tracklength << fmtBoldEnd;
}
if (!block_progressbar_update)
DrawProgressbar(Mpd.GetElapsedTime(), Mpd.GetTotalTime());
@@ -644,7 +643,6 @@ void NcmpcppStatusChanged(MPD::Connection *, MPD::StatusChanges changed, void *)
myOutputs->FetchList();
# endif // ENABLE_OUTPUTS
}
*wFooter << fmtBoldEnd;
wFooter->GotoXY(sx, sy);
if (changed.PlayerState || (changed.ElapsedTime && (!Config.new_design || Mpd.GetState() == MPD::psPlay)))
wFooter->Refresh();
@@ -662,7 +660,9 @@ void DrawProgressbar(unsigned elapsed, unsigned time)
{
unsigned pb_width = wFooter->GetWidth();
unsigned howlong = time ? pb_width*elapsed/time : 0;
*wFooter << fmtBold << Config.progressbar_color;
if (Config.progressbar_boldness)
*wFooter << fmtBold;
*wFooter << Config.progressbar_color;
if (Config.progressbar[2] != '\0')
{
wFooter->GotoXY(0, 0);
@@ -674,13 +674,17 @@ void DrawProgressbar(unsigned elapsed, unsigned time)
mvwhline(wFooter->Raw(), 0, 0, 0, pb_width);
if (time)
{
*wFooter << Config.progressbar_elapsed_color;
pb_width = std::min(size_t(howlong), wFooter->GetWidth());
for (unsigned i = 0; i < pb_width; ++i)
*wFooter << Config.progressbar[0];
if (howlong < wFooter->GetWidth())
*wFooter << Config.progressbar[1];
*wFooter << clEnd;
}
*wFooter << clEnd << fmtBoldEnd;
*wFooter << clEnd;
if (Config.progressbar_boldness)
*wFooter << fmtBoldEnd;
}
void ShowMessage(const char *format, ...)