Implement basics of voting ui. Change vote selection code to also inject cover before putting in list. Make sure player sends winning track to highlight on client.
This commit is contained in:
@@ -105,7 +105,9 @@ std::list<AudioTrack> GroovePlayerMgr::getNextVoteBatch(Wt::Dbo::Session* sessio
|
||||
eligibleTrack = session->find<AudioTrack>().where("album = ?").limit(1).offset(rand() % trackAlbumCount).bind(currentTrack.trackAlbumName);
|
||||
}
|
||||
}
|
||||
selectedTracks.push_back(*eligibleTrack);
|
||||
AudioTrack selected = *eligibleTrack;
|
||||
getPictureFromTrack(&selected);
|
||||
selectedTracks.push_back(selected);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -119,7 +121,9 @@ std::list<AudioTrack> GroovePlayerMgr::getNextVoteBatch(Wt::Dbo::Session* sessio
|
||||
eligibleTrack = session->find<AudioTrack>().where("artist = ?").limit(1).offset(rand() % trackArtistCount).bind(currentTrack.trackArtistName);
|
||||
}
|
||||
}
|
||||
selectedTracks.push_back(*eligibleTrack);
|
||||
AudioTrack selected = *eligibleTrack;
|
||||
getPictureFromTrack(&selected);
|
||||
selectedTracks.push_back(selected);
|
||||
}
|
||||
|
||||
//Determine second track
|
||||
@@ -136,7 +140,9 @@ std::list<AudioTrack> GroovePlayerMgr::getNextVoteBatch(Wt::Dbo::Session* sessio
|
||||
eligibleTrack = session->find<AudioTrack>().where("genre = ?").limit(1).offset(rand() % trackGenreCount).bind(currentTrack.trackGenre);
|
||||
}
|
||||
}
|
||||
selectedTracks.push_back(*eligibleTrack);
|
||||
AudioTrack selected = *eligibleTrack;
|
||||
getPictureFromTrack(&selected);
|
||||
selectedTracks.push_back(selected);
|
||||
}
|
||||
|
||||
//Determine third track
|
||||
@@ -144,19 +150,25 @@ std::list<AudioTrack> GroovePlayerMgr::getNextVoteBatch(Wt::Dbo::Session* sessio
|
||||
if(requestQueue.size() > 0)
|
||||
{
|
||||
//There's a request. Pick one up front and put as third item.
|
||||
selectedTracks.push_back(requestQueue.front());
|
||||
AudioTrack selected = requestQueue.front();
|
||||
getPictureFromTrack(&selected);
|
||||
selectedTracks.push_back(selected);
|
||||
}
|
||||
else if(trackNotGenreCount > 0)
|
||||
{
|
||||
//Pick from other genre
|
||||
Wt::Dbo::ptr<AudioTrack> eligibleTrack = session->find<AudioTrack>().where("genre != ?").limit(1).offset(rand() % trackNotGenreCount).bind(currentTrack.trackGenre);
|
||||
selectedTracks.push_back(*eligibleTrack);
|
||||
AudioTrack selected = *eligibleTrack;
|
||||
getPictureFromTrack(&selected);
|
||||
selectedTracks.push_back(selected);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Pick randomly
|
||||
Wt::Dbo::ptr<AudioTrack> eligibleTrack = session->find<AudioTrack>().limit(1).offset(rand() % trackCount);
|
||||
selectedTracks.push_back(*eligibleTrack);
|
||||
AudioTrack selected = *eligibleTrack;
|
||||
getPictureFromTrack(&selected);
|
||||
selectedTracks.push_back(selected);
|
||||
}
|
||||
transaction.commit();
|
||||
Wt::log("info") << "Next set of tracks to vote picked: 1=>[" << (*selectedTracks.begin()).trackName << "] 2=>[" << (*std::next(selectedTracks.begin(),1)).trackName << "] 3=>[" << (*std::next(selectedTracks.begin(),2)).trackName << "]";
|
||||
@@ -337,11 +349,11 @@ void GroovePlayerMgr::grooveEventLoop()
|
||||
}
|
||||
}
|
||||
groove_playlist_insert(currentPlaylist,groove_file_open(winner.trackPath.c_str()),1.0,1.0,nullptr);
|
||||
Wt::WServer::instance()->postAll([]() {
|
||||
Wt::WServer::instance()->postAll([winner]() {
|
||||
Wt::WApplication* app = Wt::WApplication::instance();
|
||||
if(app != nullptr)
|
||||
{
|
||||
static_cast<WebInterface*>(app)->voteNextPollClosedFromServer();
|
||||
static_cast<WebInterface*>(app)->voteNextPollClosedFromServer(winner);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user