Implement UI for track skipping.
This commit is contained in:
@@ -74,13 +74,14 @@ void WebInterface::songChangedFromServer(AudioTrack nextTrack)
|
|||||||
|
|
||||||
void WebInterface::skipVotedFromServer(User userRequestingToSkipCurrentTrack)
|
void WebInterface::skipVotedFromServer(User userRequestingToSkipCurrentTrack)
|
||||||
{
|
{
|
||||||
//priv_int->playerUI->tempText->setText(priv_int->playerUI->tempText->text()+"skip");
|
priv_int->playerUI->updateSkipRequestedFromServer();
|
||||||
|
//TODO: show notification
|
||||||
triggerUpdate();
|
triggerUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebInterface::skipVoteUpdateFromServer(User userVoting, bool forSkip)
|
void WebInterface::skipVoteUpdateFromServer(User userVoting, bool forSkip)
|
||||||
{
|
{
|
||||||
//priv_int->playerUI->tempText->setText(priv_int->playerUI->tempText->text()+"vote");
|
if(!forSkip) priv_int->playerUI->updateSkipDeniedFromServer();
|
||||||
triggerUpdate();
|
triggerUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +93,7 @@ void WebInterface::voteNextSongFromServer(User userVoting, AudioTrack trackVoted
|
|||||||
|
|
||||||
void WebInterface::voteNextPollClosedFromServer()
|
void WebInterface::voteNextPollClosedFromServer()
|
||||||
{
|
{
|
||||||
//priv_int->playerUI->tempText->setText(priv_int->playerUI->tempText->text()+"voteclosed");
|
priv_int->playerUI->updateVotingEnded();
|
||||||
triggerUpdate();
|
triggerUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,10 +52,18 @@ PlayerInterface::PlayerInterface(WebInterface* app)
|
|||||||
isPaused = groove_playlist_playing(GroovePlayerMgr::getInstance()->currentPlaylist)==0;
|
isPaused = groove_playlist_playing(GroovePlayerMgr::getInstance()->currentPlaylist)==0;
|
||||||
playpause->clicked().connect(this, &PlayerInterface::playpauseClicked);
|
playpause->clicked().connect(this, &PlayerInterface::playpauseClicked);
|
||||||
skipRequest = new Wt::WPushButton();
|
skipRequest = new Wt::WPushButton();
|
||||||
|
skipRequest->clicked().connect(this, &PlayerInterface::skipRequestClicked);
|
||||||
skipRequest->setTextFormat(Wt::XHTMLText);
|
skipRequest->setTextFormat(Wt::XHTMLText);
|
||||||
skipRequest->decorationStyle().font().setFamily(Wt::WFont::Default,"FontAwesome");
|
skipRequest->decorationStyle().font().setFamily(Wt::WFont::Default,"FontAwesome");
|
||||||
skipRequest->setText(""); //cancel skip? 
|
skipRequest->setText("");
|
||||||
|
skipDeny = new Wt::WPushButton();
|
||||||
|
skipDeny->clicked().connect(this, &PlayerInterface::skipDenyClicked);
|
||||||
|
skipDeny->setTextFormat(Wt::XHTMLText);
|
||||||
|
skipDeny->decorationStyle().font().setFamily(Wt::WFont::Default,"FontAwesome");
|
||||||
|
skipDeny->setText("");
|
||||||
|
skipDeny->setHidden(true);
|
||||||
skipControls->addWidget(skipRequest);
|
skipControls->addWidget(skipRequest);
|
||||||
|
skipControls->addWidget(skipDeny);
|
||||||
|
|
||||||
interfaceLayout->addWidget(playControlWidget);
|
interfaceLayout->addWidget(playControlWidget);
|
||||||
interfaceLayout->addWidget(currentTrackProgress);
|
interfaceLayout->addWidget(currentTrackProgress);
|
||||||
@@ -79,14 +87,49 @@ void PlayerInterface::playpauseClicked()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PlayerInterface::skipRequestClicked()
|
||||||
|
{
|
||||||
|
if(!isPaused)
|
||||||
|
{
|
||||||
|
GroovePlayerMgr::getInstance()->lastInternalEvents.push_back(GroovePlayerMgr::PlayerEvent() = {GroovePlayerMgr::PlayerEventType::SKIP_REQUESTED, app->currentUser, std::list<AudioTrack>{GroovePlayerMgr::getInstance()->currentTrack}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerInterface::skipDenyClicked()
|
||||||
|
{
|
||||||
|
if(!isPaused)
|
||||||
|
{
|
||||||
|
GroovePlayerMgr::getInstance()->lastInternalEvents.push_back(GroovePlayerMgr::PlayerEvent() = {GroovePlayerMgr::PlayerEventType::SKIP_VOTE_CAST_AGAINST, app->currentUser, std::list<AudioTrack>{GroovePlayerMgr::getInstance()->currentTrack}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerInterface::updateSkipRequestedFromServer()
|
||||||
|
{
|
||||||
|
skipRequest->setHidden(true);
|
||||||
|
skipDeny->setHidden(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerInterface::updateSkipDeniedFromServer()
|
||||||
|
{
|
||||||
|
skipDeny->setHidden(true);
|
||||||
|
skipRequest->setHidden(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerInterface::updateVotingEnded()
|
||||||
|
{
|
||||||
|
skipRequest->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
void PlayerInterface::playpauseUpdated()
|
void PlayerInterface::playpauseUpdated()
|
||||||
{
|
{
|
||||||
if(isPaused)
|
if(isPaused)
|
||||||
{
|
{
|
||||||
|
skipRequest->setEnabled(false);
|
||||||
playpause->setText(Wt::WString::fromUTF8(""));
|
playpause->setText(Wt::WString::fromUTF8(""));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if(!GroovePlayerMgr::getInstance()->voteEndedButNotNextTrackYet) skipRequest->setEnabled(true);
|
||||||
playpause->setText(Wt::WString::fromUTF8(""));
|
playpause->setText(Wt::WString::fromUTF8(""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -119,5 +162,13 @@ void PlayerInterface::updateDetailsFromServer(AudioTrack track)
|
|||||||
trackProgress->start();
|
trackProgress->start();
|
||||||
}
|
}
|
||||||
playpauseUpdated();
|
playpauseUpdated();
|
||||||
|
if(GroovePlayerMgr::getInstance()->currentSkipRequester.size() > 0)
|
||||||
|
{
|
||||||
|
updateSkipRequestedFromServer();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
updateSkipDeniedFromServer();
|
||||||
|
}
|
||||||
currentTrackDetails->updateWithTrackDetails(track);
|
currentTrackDetails->updateWithTrackDetails(track);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ public:
|
|||||||
Wt::WPushButton* playpause;
|
Wt::WPushButton* playpause;
|
||||||
Wt::WContainerWidget* skipControls;
|
Wt::WContainerWidget* skipControls;
|
||||||
Wt::WPushButton* skipRequest;
|
Wt::WPushButton* skipRequest;
|
||||||
|
Wt::WPushButton* skipDeny;
|
||||||
|
|
||||||
bool isPaused = false;
|
bool isPaused = false;
|
||||||
//TODO:put in controls for requesting/admin skip and adding users as admin.
|
//TODO:put in controls for requesting/admin skip and adding users as admin.
|
||||||
@@ -60,8 +61,13 @@ public:
|
|||||||
|
|
||||||
void playpauseClicked();
|
void playpauseClicked();
|
||||||
void playpauseUpdated();
|
void playpauseUpdated();
|
||||||
|
void skipRequestClicked();
|
||||||
|
void skipDenyClicked();
|
||||||
void updateDetailsFromServer(AudioTrack track);
|
void updateDetailsFromServer(AudioTrack track);
|
||||||
void updateProgressFromTimer();
|
void updateProgressFromTimer();
|
||||||
|
void updateSkipRequestedFromServer();
|
||||||
|
void updateSkipDeniedFromServer();
|
||||||
|
void updateVotingEnded();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PLAYERINTERFACE_H
|
#endif // PLAYERINTERFACE_H
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ TrackDetails::TrackDetails()
|
|||||||
metaLayout = new Wt::WVBoxLayout();
|
metaLayout = new Wt::WVBoxLayout();
|
||||||
coverData = new Wt::WMemoryResource();
|
coverData = new Wt::WMemoryResource();
|
||||||
albumCover = new Wt::WImage();
|
albumCover = new Wt::WImage();
|
||||||
albumCover->setMinimumSize(Wt::WLength(100,Wt::WLength::Pixel),Wt::WLength(100,Wt::WLength::Pixel));
|
albumCover->setMinimumSize(Wt::WLength(75,Wt::WLength::Pixel),Wt::WLength(75,Wt::WLength::Pixel));
|
||||||
albumCover->setMaximumSize(Wt::WLength(200,Wt::WLength::Pixel),Wt::WLength(200,Wt::WLength::Pixel));
|
albumCover->setMaximumSize(Wt::WLength(200,Wt::WLength::Pixel),Wt::WLength(200,Wt::WLength::Pixel));
|
||||||
mainLayout->addWidget(albumCover);
|
mainLayout->addWidget(albumCover);
|
||||||
mainLayout->addSpacing(Wt::WLength(10, Wt::WLength::Pixel));
|
mainLayout->addSpacing(Wt::WLength(10, Wt::WLength::Pixel));
|
||||||
|
|||||||
Reference in New Issue
Block a user