Added nextCyclePlaylist and prevCyclePlaylist keys.

This commit is contained in:
Pieter Hulshoff 2020-01-21 22:50:48 +01:00
parent 999d9747e9
commit 031d937ec7
5 changed files with 60 additions and 4 deletions

View File

@ -63,6 +63,8 @@ bool UserInput::initialize()
MapKey("nextPlaylist", KeyCodeNextPlaylist, false);
MapKey("prevPlaylist", KeyCodePrevPlaylist, false);
MapKey("cyclePlaylist", KeyCodeCyclePlaylist, false);
MapKey("nextCyclePlaylist", KeyCodeNextCyclePlaylist, false);
MapKey("prevCyclePlaylist", KeyCodePrevCyclePlaylist, false);
MapKey("addPlaylist", KeyCodeAddPlaylist, false);
MapKey("removePlaylist", KeyCodeRemovePlaylist, false);
MapKey("random", KeyCodeRandom, false);

View File

@ -47,6 +47,8 @@ public:
KeyCodeNextPlaylist,
KeyCodePrevPlaylist,
KeyCodeCyclePlaylist,
KeyCodeNextCyclePlaylist,
KeyCodePrevCyclePlaylist,
KeyCodeRandom,
KeyCodeMenu,
KeyCodeAddPlaylist,

View File

@ -1193,7 +1193,7 @@ void Page::selectPlaylist(std::string playlist)
}
void Page::cyclePlaylist(std::vector<std::string> list)
void Page::nextCyclePlaylist(std::vector<std::string> list)
{
// Empty list
@ -1231,6 +1231,44 @@ void Page::cyclePlaylist(std::vector<std::string> list)
}
void Page::prevCyclePlaylist(std::vector<std::string> list)
{
// Empty list
if (list.size() == 0)
return;
// Find the current playlist in the list
std::vector<std::string>::iterator it = list.begin();
while (*it != getPlaylistName() && it != list.end())
++it;
// If current playlist not found, switch to the last found cycle playlist in the playlist list
if (it == list.end())
{
for (std::vector<std::string>::iterator it2 = list.end(); it2 != list.begin(); --it2)
{
selectPlaylist( *it2 );
if (*it2 == getPlaylistName())
break;
}
}
// Current playlist found; switch to the previous found playlist in the list
else
{
for(;;)
{
--it;
if (it == list.begin()) it = list.end(); // wrap
selectPlaylist( *it );
if (*it == getPlaylistName())
break;
}
}
}
void Page::update(float dt)
{
for(MenuVector_T::iterator it = menus_.begin(); it != menus_.end(); it++)

View File

@ -57,7 +57,8 @@ public:
void nextPlaylist();
void prevPlaylist();
void selectPlaylist(std::string playlist);
void cyclePlaylist(std::vector<std::string> list);
void nextCyclePlaylist(std::vector<std::string> list);
void prevCyclePlaylist(std::vector<std::string> list);
void pushMenu(ScrollingList *s, int index = -1);
bool isMenusFull();
void setLoadSound(Sound *chunk);

View File

@ -1346,6 +1346,8 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput( Page *page )
!input_.keystate(UserInput::KeyCodeNextPlaylist) &&
!input_.keystate(UserInput::KeyCodePrevPlaylist) &&
!input_.keystate(UserInput::KeyCodeCyclePlaylist) &&
!input_.keystate(UserInput::KeyCodeNextCyclePlaylist) &&
!input_.keystate(UserInput::KeyCodePrevCyclePlaylist) &&
!input_.keystate(UserInput::KeyCodeAddPlaylist) &&
!input_.keystate(UserInput::KeyCodeRemovePlaylist) &&
!input_.keystate(UserInput::KeyCodeRandom) &&
@ -1413,14 +1415,25 @@ RetroFE::RETROFE_STATE RetroFE::processUserInput( Page *page )
page->prevPlaylist( );
state = RETROFE_PLAYLIST_REQUEST;
}
if ( input_.keystate(UserInput::KeyCodeCyclePlaylist) )
if ( input_.keystate(UserInput::KeyCodeCyclePlaylist) ||
input_.keystate(UserInput::KeyCodeNextCyclePlaylist) )
{
attract_.reset( );
std::string cycleString;
config_.getProperty( "cyclePlaylist", cycleString );
std::vector<std::string> cycleVector;
Utils::listToVector( cycleString, cycleVector, ',' );
page->cyclePlaylist( cycleVector );
page->nextCyclePlaylist( cycleVector );
state = RETROFE_PLAYLIST_REQUEST;
}
if ( input_.keystate(UserInput::KeyCodePrevCyclePlaylist) )
{
attract_.reset( );
std::string cycleString;
config_.getProperty( "cyclePlaylist", cycleString );
std::vector<std::string> cycleVector;
Utils::listToVector( cycleString, cycleVector, ',' );
page->prevCyclePlaylist( cycleVector );
state = RETROFE_PLAYLIST_REQUEST;
}
if ( input_.newKeyPressed(UserInput::KeyCodeRemovePlaylist) )