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:
Andrzej Rybczak
2011-02-23 20:16:23 +01:00
parent f3e1ba1c26
commit e323025a82
6 changed files with 20 additions and 4 deletions

View File

@@ -581,7 +581,7 @@ std::string Browser::ItemToString(const MPD::Item &item, void *)
case MPD::itSong: case MPD::itSong:
{ {
if (!Config.columns_in_browser) if (!Config.columns_in_browser)
return item.song->toString(Config.song_list_format); return item.song->toString(Config.song_list_format_dollar_free);
else else
return Playlist::SongInColumnsToString(*item.song, 0); return Playlist::SongInColumnsToString(*item.song, 0);
} }

View File

@@ -58,7 +58,7 @@ void Playlist::Init()
Items->SetItemDisplayer(Config.columns_in_playlist ? Display::SongsInColumns : Display::Songs); Items->SetItemDisplayer(Config.columns_in_playlist ? Display::SongsInColumns : Display::Songs);
Items->SetItemDisplayerUserData(&sf); Items->SetItemDisplayerUserData(&sf);
Items->SetGetStringFunction(Config.columns_in_playlist ? SongInColumnsToString : SongToString); Items->SetGetStringFunction(Config.columns_in_playlist ? SongInColumnsToString : SongToString);
Items->SetGetStringFunctionUserData(&Config.song_list_format); Items->SetGetStringFunctionUserData(&Config.song_list_format_dollar_free);
if (!SortDialog) if (!SortDialog)
{ {

View File

@@ -62,7 +62,7 @@ void PlaylistEditor::Init()
Content->SetItemDisplayer(Display::Songs); Content->SetItemDisplayer(Display::Songs);
Content->SetItemDisplayerUserData(&sf); Content->SetItemDisplayerUserData(&sf);
Content->SetGetStringFunction(Playlist::SongToString); Content->SetGetStringFunction(Playlist::SongToString);
Content->SetGetStringFunctionUserData(&Config.song_list_format); Content->SetGetStringFunctionUserData(&Config.song_list_format_dollar_free);
w = Playlists; w = Playlists;
isInitialized = 1; isInitialized = 1;

View File

@@ -603,7 +603,7 @@ void SearchEngine::Search()
std::string SearchEngine::SearchEngineOptionToString(const std::pair<Buffer *, MPD::Song *> &pair, void *) std::string SearchEngine::SearchEngineOptionToString(const std::pair<Buffer *, MPD::Song *> &pair, void *)
{ {
if (!Config.columns_in_search_engine) 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 else
return Playlist::SongInColumnsToString(*pair.second, 0); return Playlist::SongInColumnsToString(*pair.second, 0);
} }

View File

@@ -123,6 +123,19 @@ namespace
return 0; 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() void CreateConfigDir()
@@ -335,6 +348,7 @@ void NcmpcppConfig::SetDefaults()
empty_tag = "<empty>"; empty_tag = "<empty>";
song_list_columns_format = "(7f)[green]{l} (25)[cyan]{a} (40)[]{t|f} (30)[red]{b}"; 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 = "{{%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 = "{{{%a{ \"%b\"{ (%y)}} - }{%t}}|{%f}}";
song_status_format_no_colors = song_status_format; song_status_format_no_colors = song_status_format;
song_window_title_format = "{{%a - }{%t}|{%f}}"; song_window_title_format = "{{%a - }{%t}|{%f}}";
@@ -698,6 +712,7 @@ void NcmpcppConfig::Read()
song_list_format = '{'; song_list_format = '{';
song_list_format += v; song_list_format += v;
song_list_format += '}'; song_list_format += '}';
song_list_format_dollar_free = RemoveDollarFormatting(song_list_format);
} }
} }
else if (cl.find("song_columns_list_format") != std::string::npos) else if (cl.find("song_columns_list_format") != std::string::npos)

View File

@@ -158,6 +158,7 @@ struct NcmpcppConfig
std::string empty_tag; std::string empty_tag;
std::string song_list_columns_format; std::string song_list_columns_format;
std::string song_list_format; std::string song_list_format;
std::string song_list_format_dollar_free;
std::string song_status_format; std::string song_status_format;
std::string song_status_format_no_colors; std::string song_status_format_no_colors;
std::string song_window_title_format; std::string song_window_title_format;