check if song is in playlist in O(nlogn) instead of O(n^2)

This commit is contained in:
Andrzej Rybczak
2012-09-04 03:12:37 +02:00
parent 8ab8da2a30
commit 60ca9de919
7 changed files with 50 additions and 51 deletions

View File

@@ -148,9 +148,7 @@ void Browser::EnterPressed()
}
case itSong:
{
size_t i = w->choice();
bool res = myPlaylist->Add(*item.song, w->at(i).isBold(), 1);
w->at(i).setBold(res);
myPlaylist->Add(*item.song, 1);
break;
}
case itPlaylist:
@@ -209,9 +207,7 @@ void Browser::SpacePressed()
}
case itSong:
{
i = w->choice();
bool res = myPlaylist->Add(*item.song, w->at(i).isBold(), 0);
w->at(i).setBold(res);
myPlaylist->Add(*item.song, 0);
break;
}
case itPlaylist:
@@ -618,10 +614,9 @@ bool Browser::deleteItem(const MPD::Item &item)
void Browser::UpdateItemList()
{
for (size_t i = 0; i < w->size(); ++i)
if ((*w)[i].value().type == itSong)
w->at(i).setBold(myPlaylist->checkForSong(*(*w)[i].value().song));
w->refresh();
for (auto it = w->begin(); it != w->end(); ++it)
if (it->value().type == itSong)
it->setBold(myPlaylist->checkForSong(*it->value().song));
}
namespace {//