fix searching with / and ? keys

This commit is contained in:
Andrzej Rybczak
2008-12-12 19:01:35 +01:00
parent 6596d25c26
commit 2e291885f9

View File

@@ -2974,9 +2974,14 @@ int main(int argc, char *argv[])
}
else if (Keypressed(input, Key.FindForward) || Keypressed(input, Key.FindBackward))
{
if ((current_screen != csHelp && current_screen != csSearcher)
|| (current_screen == csSearcher && !mSearcher->Current().first))
{
if ((current_screen == csHelp
|| current_screen == csSearcher
|| current_screen == csTinyTagEditor
|| wCurrent == mEditorTagTypes)
&& (current_screen != csSearcher
|| mSearcher->Current().first))
continue;
string how = Keypressed(input, Key.FindForward) ? "forward" : "backward";
found_pos = -1;
vFoundPositions.clear();
@@ -2991,13 +2996,98 @@ int main(int argc, char *argv[])
ShowMessage("Searching...");
List *mList = reinterpret_cast<Menu<Song> *>(wCurrent);
for (size_t i = (wCurrent == mSearcher ? search_engine_static_options-1 : 0); i < mList->Size(); i++)
for (size_t i = (wCurrent == mSearcher ? search_engine_static_options : 0); i < mList->Size(); i++)
{
string name;
switch (current_screen)
{
case csPlaylist:
name = mPlaylist->at(i).toString(Config.columns_in_playlist ? Config.song_columns_list_format : Config.song_list_format);
name = mPlaylist->at(i).toString(Config.song_list_format);
break;
case csBrowser:
switch (mBrowser->at(i).type)
{
case itDirectory:
name = mBrowser->at(i).name;
break;
case itSong:
name = mBrowser->at(i).song->toString(Config.song_list_format);
break;
case itPlaylist:
name = Config.browser_playlist_prefix.Str();
name += mBrowser->at(i).name;
break;
}
break;
case csSearcher:
name = mSearcher->at(i).second->toString(Config.song_list_format);
break;
case csLibrary:
if (wCurrent == mLibArtists)
name = mLibArtists->at(i);
else if (wCurrent == mLibAlbums)
name = mLibAlbums->at(i).first;
else
name = mLibSongs->at(i).toString(Config.song_library_format);
break;
case csPlaylistEditor:
if (wCurrent == mPlaylistList)
name = mPlaylistList->at(i);
else
name = mPlaylistEditor->at(i).toString(Config.song_list_format);
break;
case csTagEditor:
if (wCurrent == mEditorLeftCol)
name = mEditorLeftCol->at(i).first;
else
{
const Song &s = mEditorTags->at(i);
switch (mEditorTagTypes->Choice())
{
case 0:
name = s.GetTitle();
break;
case 1:
name = s.GetArtist();
break;
case 2:
name = s.GetAlbum();
break;
case 3:
name = s.GetYear();
break;
case 4:
name = s.GetTrack();
break;
case 5:
name = s.GetGenre();
break;
case 6:
name = s.GetComposer();
break;
case 7:
name = s.GetPerformer();
break;
case 8:
name = s.GetDisc();
break;
case 9:
name = s.GetComment();
break;
case 11:
if (s.GetNewName().empty())
name = s.GetName();
else
{
name = s.GetName();
name += " -> ";
name += s.GetNewName();
}
break;
default:
break;
}
}
break;
default:
break;
@@ -3032,7 +3122,6 @@ int main(int argc, char *argv[])
}
}
}
}
else if (Keypressed(input, Key.NextFoundPosition) || Keypressed(input, Key.PrevFoundPosition))
{
if (!vFoundPositions.empty())