From 41fa567f82f9c8f1873efe238516be8a1d9b03f1 Mon Sep 17 00:00:00 2001 From: Kevin Whitaker Date: Wed, 8 Feb 2017 23:22:34 -0500 Subject: [PATCH] Add untested play/pause event code and change web interface to know which happened. --- src/GroovePlayer.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++-- src/WebInterface.cpp | 2 +- src/WebInterface.h | 2 +- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/GroovePlayer.cpp b/src/GroovePlayer.cpp index 82988fc..02c6a67 100644 --- a/src/GroovePlayer.cpp +++ b/src/GroovePlayer.cpp @@ -389,11 +389,51 @@ void GroovePlayerMgr::grooveEventLoop() } else if(event.eventType == PLAYING_PAUSED) { - //TODO + //Add action to DB + Wt::Dbo::Transaction pauseTransaction(sqlSession); + UserAction* action = new UserAction(); + action->action = UserAction::UAction::PlayPause; + action->user = Wt::Dbo::ptr(&event.userInvolved); + action->trackInvolved = Wt::Dbo::ptr(&event.tracksInvolved.front()); + action->datetime = Wt::WDateTime::currentDateTime(); + sqlSession.add(action); + pauseTransaction.commit(); + + groove_playlist_pause(currentPlaylist); + + //Update vote display on all clients. + Wt::WServer::instance()->postAll([event]() { + Wt::WApplication* app = Wt::WApplication::instance(); + if(app != nullptr) + { + static_cast(app)->playPauseActionFromServer(event.userInvolved, true); + } + } + ); } else if(event.eventType == PLAYING_RESUMED) { - //TODO + //Add action to DB + Wt::Dbo::Transaction playTransaction(sqlSession); + UserAction* action = new UserAction(); + action->action = UserAction::UAction::PlayPause; + action->user = Wt::Dbo::ptr(&event.userInvolved); + action->trackInvolved = Wt::Dbo::ptr(&event.tracksInvolved.front()); + action->datetime = Wt::WDateTime::currentDateTime(); + sqlSession.add(action); + playTransaction.commit(); + + groove_playlist_play(currentPlaylist); + + //Update vote display on all clients. + Wt::WServer::instance()->postAll([event]() { + Wt::WApplication* app = Wt::WApplication::instance(); + if(app != nullptr) + { + static_cast(app)->playPauseActionFromServer(event.userInvolved, false); + } + } + ); } else if(event.eventType == SKIP_REQUESTED) { diff --git a/src/WebInterface.cpp b/src/WebInterface.cpp index 6a62a0e..67a83db 100644 --- a/src/WebInterface.cpp +++ b/src/WebInterface.cpp @@ -57,7 +57,7 @@ void WebInterface::loginCompleted() //TODO: request current player state. } -void WebInterface::playPauseActionFromServer(User userPausing) +void WebInterface::playPauseActionFromServer(User userPausing, bool pause) { priv_int->playerUI->tempText->setText(priv_int->playerUI->tempText->text()+"play"); triggerUpdate(); diff --git a/src/WebInterface.h b/src/WebInterface.h index cec7818..2d90853 100644 --- a/src/WebInterface.h +++ b/src/WebInterface.h @@ -31,7 +31,7 @@ public: WebInterface(const Wt::WEnvironment& env); ~WebInterface(); void loginCompleted(); - void playPauseActionFromServer(User userPausing); + void playPauseActionFromServer(User userPausing, bool pause); void songChangedFromServer(AudioTrack nextTrack); void voteTracksUpdatedFromServer(std::list voteableTracks); void skipVotedFromServer(User userRequestingToSkipCurrentTrack); -- GitLab