implement ProxySongList for handling general operations on lists

This commit is contained in:
Andrzej Rybczak
2012-09-02 20:51:20 +02:00
parent 0cfe5d8f01
commit 5e8d1673e0
22 changed files with 297 additions and 220 deletions

View File

@@ -531,37 +531,21 @@ void MediaLibrary::prevFound(bool wrap)
/***********************************************************************/
MPD::Song *MediaLibrary::getSong(size_t pos)
std::shared_ptr<ProxySongList> MediaLibrary::getProxySongList()
{
MPD::Song *ptr = 0;
auto ptr = nullProxySongList();
if (w == Songs)
ptr = &(*Songs)[pos].value();
ptr = mkProxySongList(*Songs, [](NC::Menu<MPD::Song>::Item &item) {
return &item.value();
});
return ptr;
}
MPD::Song *MediaLibrary::currentSong()
{
if (w == Songs && !Songs->Empty())
return getSong(Songs->Choice());
else
return 0;
}
bool MediaLibrary::allowsSelection()
{
return true;
}
void MediaLibrary::removeSelection()
{
if (w == Tags)
removeSelectionHelper(Tags->Begin(), Tags->End());
else if (w == Albums)
removeSelectionHelper(Albums->Begin(), Albums->End());
else if (w == Songs)
removeSelectionHelper(Songs->Begin(), Songs->End());
}
void MediaLibrary::reverseSelection()
{
if (w == Tags)