remove $? formatting from song format while converting to string
this fixes wrong results while searching for phrase that contains dollar or one of dollar formatting.
This commit is contained in:
@@ -581,7 +581,7 @@ std::string Browser::ItemToString(const MPD::Item &item, void *)
|
||||
case MPD::itSong:
|
||||
{
|
||||
if (!Config.columns_in_browser)
|
||||
return item.song->toString(Config.song_list_format);
|
||||
return item.song->toString(Config.song_list_format_dollar_free);
|
||||
else
|
||||
return Playlist::SongInColumnsToString(*item.song, 0);
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ void Playlist::Init()
|
||||
Items->SetItemDisplayer(Config.columns_in_playlist ? Display::SongsInColumns : Display::Songs);
|
||||
Items->SetItemDisplayerUserData(&sf);
|
||||
Items->SetGetStringFunction(Config.columns_in_playlist ? SongInColumnsToString : SongToString);
|
||||
Items->SetGetStringFunctionUserData(&Config.song_list_format);
|
||||
Items->SetGetStringFunctionUserData(&Config.song_list_format_dollar_free);
|
||||
|
||||
if (!SortDialog)
|
||||
{
|
||||
|
||||
@@ -62,7 +62,7 @@ void PlaylistEditor::Init()
|
||||
Content->SetItemDisplayer(Display::Songs);
|
||||
Content->SetItemDisplayerUserData(&sf);
|
||||
Content->SetGetStringFunction(Playlist::SongToString);
|
||||
Content->SetGetStringFunctionUserData(&Config.song_list_format);
|
||||
Content->SetGetStringFunctionUserData(&Config.song_list_format_dollar_free);
|
||||
|
||||
w = Playlists;
|
||||
isInitialized = 1;
|
||||
|
||||
@@ -603,7 +603,7 @@ void SearchEngine::Search()
|
||||
std::string SearchEngine::SearchEngineOptionToString(const std::pair<Buffer *, MPD::Song *> &pair, void *)
|
||||
{
|
||||
if (!Config.columns_in_search_engine)
|
||||
return pair.second->toString(Config.song_list_format);
|
||||
return pair.second->toString(Config.song_list_format_dollar_free);
|
||||
else
|
||||
return Playlist::SongInColumnsToString(*pair.second, 0);
|
||||
}
|
||||
|
||||
@@ -123,6 +123,19 @@ namespace
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
std::string RemoveDollarFormatting(const std::string &s)
|
||||
{
|
||||
std::string result;
|
||||
for (size_t i = 0; i < s.size(); ++i)
|
||||
{
|
||||
if (s[i] != '$')
|
||||
result += s[i];
|
||||
else
|
||||
++i;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
void CreateConfigDir()
|
||||
@@ -335,6 +348,7 @@ void NcmpcppConfig::SetDefaults()
|
||||
empty_tag = "<empty>";
|
||||
song_list_columns_format = "(7f)[green]{l} (25)[cyan]{a} (40)[]{t|f} (30)[red]{b}";
|
||||
song_list_format = "{{%a - }{%t}|{$8%f$9}$R{$3(%l)$9}}";
|
||||
song_list_format_dollar_free = RemoveDollarFormatting(song_list_format);
|
||||
song_status_format = "{{{%a{ \"%b\"{ (%y)}} - }{%t}}|{%f}}";
|
||||
song_status_format_no_colors = song_status_format;
|
||||
song_window_title_format = "{{%a - }{%t}|{%f}}";
|
||||
@@ -698,6 +712,7 @@ void NcmpcppConfig::Read()
|
||||
song_list_format = '{';
|
||||
song_list_format += v;
|
||||
song_list_format += '}';
|
||||
song_list_format_dollar_free = RemoveDollarFormatting(song_list_format);
|
||||
}
|
||||
}
|
||||
else if (cl.find("song_columns_list_format") != std::string::npos)
|
||||
|
||||
@@ -158,6 +158,7 @@ struct NcmpcppConfig
|
||||
std::string empty_tag;
|
||||
std::string song_list_columns_format;
|
||||
std::string song_list_format;
|
||||
std::string song_list_format_dollar_free;
|
||||
std::string song_status_format;
|
||||
std::string song_status_format_no_colors;
|
||||
std::string song_window_title_format;
|
||||
|
||||
Reference in New Issue
Block a user