diff --git a/src/GroovePlayer.cpp b/src/GroovePlayer.cpp index 82988fca531c8d06a9d145559e73d7baab4f8e7a..02c6a675b1b4cfe78c1ebf7da73946283b65c7d6 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 6a62a0e04a4724923a682f283ed09ed25e042529..67a83db02cce6089bbbaef6505e439ccd10a6d7d 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 cec781898a6f87841021c03495c62624e05876c1..2d908536cd7cdd7e1fd8d0f9b8dc84052a33caea 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);