diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index 84c52584..c31bd785 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -98,6 +98,8 @@ namespace int main(int argc, char *argv[]) { + setlocale(LC_ALL, ""); + CreateConfigDir(); DefaultConfiguration(Config); DefaultKeys(Key); @@ -1136,8 +1138,9 @@ int main(int argc, char *argv[]) int howlong = wFooter->GetWidth()*progressbar_size; mvwhline(wFooter->Raw(), 0, 0, 0, wFooter->GetWidth()); - mvwhline(wFooter->Raw(), 0, 0, Config.progressbar[0], howlong); - mvwaddch(wFooter->Raw(), 0, howlong, Config.progressbar[1]); + for (int i = 0; i < howlong; ++i) + *wFooter << Config.progressbar[0]; + *wFooter << Config.progressbar[1]; *wFooter << fmtBoldEnd; wFooter->Refresh(); } diff --git a/src/settings.cpp b/src/settings.cpp index 7cceb144..6068efe0 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -24,6 +24,7 @@ # include #endif // WIN32 #include +#include #include "global.h" #include "helpers.h" @@ -251,7 +252,7 @@ void DefaultConfiguration(ncmpcpp_config &conf) conf.new_header_first_line = "{$b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b}"; conf.new_header_second_line = "{{{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}}"; conf.browser_playlist_prefix << clRed << "(playlist)" << clEnd << ' '; - conf.progressbar = "=>"; + conf.progressbar = U("=>"); conf.pattern = "%n - %t"; conf.selected_item_prefix << clMagenta; conf.selected_item_suffix << clEnd; @@ -624,8 +625,9 @@ void ReadConfiguration(ncmpcpp_config &conf) } else if (cl.find("progressbar_look") != std::string::npos) { - if (v.length() == 2) - conf.progressbar = v; + conf.progressbar = TO_WSTRING(v); + if (conf.progressbar.length() != 2) + throw std::runtime_error("the length of progressbar_look is not two characters long!"); } else if (cl.find("default_tag_editor_pattern") != std::string::npos) { diff --git a/src/settings.h b/src/settings.h index 1827bff1..844cb099 100644 --- a/src/settings.h +++ b/src/settings.h @@ -139,7 +139,7 @@ struct ncmpcpp_config std::string execute_on_song_change; std::string new_header_first_line; std::string new_header_second_line; - std::string progressbar; + std::basic_string progressbar; std::string pattern; diff --git a/src/status.cpp b/src/status.cpp index a9855003..be58cb90 100644 --- a/src/status.cpp +++ b/src/status.cpp @@ -502,8 +502,9 @@ void NcmpcppStatusChanged(Connection *, StatusChanges changed, void *) mvwhline(wFooter->Raw(), 0, 0, 0, wFooter->GetWidth()); if (np.GetTotalLength()) { - mvwhline(wFooter->Raw(), 0, 0, Config.progressbar[0], howlong); - mvwaddch(wFooter->Raw(), 0, howlong, Config.progressbar[1]); + for (int i = 0; i < howlong; ++i) + *wFooter << Config.progressbar[0]; + *wFooter << Config.progressbar[1]; } wFooter->SetColor(Config.statusbar_color); } diff --git a/src/window.cpp b/src/window.cpp index 5f0034fb..110a1b2d 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -37,7 +37,6 @@ void NCurses::InitScreen(GNUC_UNUSED const char *window_title, bool enable_color COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_YELLOW, COLOR_BLUE, COLOR_MAGENTA, COLOR_CYAN, COLOR_WHITE }; - setlocale(LC_ALL, ""); # ifdef XCURSES Xinitscr(1, const_cast(&window_title)); # else