From b1016576699d8e1151d6db77e85136ed59d07cf3 Mon Sep 17 00:00:00 2001 From: Kevin Whitaker Date: Thu, 16 Feb 2017 20:30:05 -0500 Subject: [PATCH] Have timer run and update progressbar to show playing track state. --- src/WebInterface.cpp | 4 ++-- src/ui/PlayerInterface.cpp | 33 +++++++++++++++++++++++++++++++++ src/ui/PlayerInterface.h | 2 ++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/WebInterface.cpp b/src/WebInterface.cpp index 6a2ec9e..a01539b 100644 --- a/src/WebInterface.cpp +++ b/src/WebInterface.cpp @@ -54,7 +54,7 @@ void WebInterface::loginCompleted() //Login completed, now bring up main inteface. priv_int->loginUI->animateHide(Wt::WAnimation(Wt::WAnimation::AnimationEffect::Fade)); priv_int->playerUI->animateShow(Wt::WAnimation(Wt::WAnimation::AnimationEffect::Fade, Wt::WAnimation::TimingFunction::EaseIn, 500)); - //TODO: request current player state. + priv_int->playerUI->updateDetailsFromServer(GroovePlayerMgr::getInstance()->currentTrack); } void WebInterface::playPauseActionFromServer(User userPausing, bool pause) @@ -66,7 +66,7 @@ void WebInterface::playPauseActionFromServer(User userPausing, bool pause) void WebInterface::songChangedFromServer(AudioTrack nextTrack) { - //priv_int->playerUI->tempText->setText(priv_int->playerUI->tempText->text()+"change"); + priv_int->playerUI->updateDetailsFromServer(nextTrack); triggerUpdate(); } diff --git a/src/ui/PlayerInterface.cpp b/src/ui/PlayerInterface.cpp index 6d1015a..21a6559 100644 --- a/src/ui/PlayerInterface.cpp +++ b/src/ui/PlayerInterface.cpp @@ -20,6 +20,7 @@ #include "PlayerInterface.h" #include #include "../GroovePlayer.h" +#include PlayerInterface::PlayerInterface(WebInterface* app) { @@ -37,6 +38,7 @@ PlayerInterface::PlayerInterface(WebInterface* app) currentTrackProgress->setFormat(""); trackProgress = new Wt::WTimer(); trackProgress->setInterval(1000); + trackProgress->timeout().connect(this,&PlayerInterface::updateProgressFromTimer); //TODO:track details playpause = new Wt::WPushButton(); playpause->setText(groove_playlist_playing(GroovePlayerMgr::getInstance()->currentPlaylist)==1?"Pause":"Resume"); @@ -73,3 +75,34 @@ void PlayerInterface::playpauseUpdated() playpause->setText("Pause"); } } + +void PlayerInterface::updateProgressFromTimer() +{ + if(currentTrackProgress->maximum() >= currentTrackProgress->value()+1) + { + double secondsIn; + groove_player_position(GroovePlayerMgr::getInstance()->currentPlayer,nullptr, &secondsIn); + currentTrackProgress->setValue(secondsIn); + } + else if(currentTrackProgress->maximum() < currentTrackProgress->value()+1) + { + currentTrackProgress->setValue(currentTrackProgress->maximum()); + trackProgress->stop(); + } +} + +void PlayerInterface::updateDetailsFromServer(AudioTrack track) +{ + //TODO: request current player state. + //Find current song playing and set progress state. + double secondsIn; + groove_player_position(GroovePlayerMgr::getInstance()->currentPlayer,nullptr, &secondsIn); + currentTrackProgress->setMaximum(track.trackLengthSeconds); + currentTrackProgress->setValue(secondsIn); + isPaused = groove_playlist_playing(GroovePlayerMgr::getInstance()->currentPlaylist) == 0; + if(!isPaused) + { + trackProgress->start(); + } + playpauseUpdated(); +} diff --git a/src/ui/PlayerInterface.h b/src/ui/PlayerInterface.h index 1c57315..0c64d47 100644 --- a/src/ui/PlayerInterface.h +++ b/src/ui/PlayerInterface.h @@ -59,6 +59,8 @@ public: void playpauseClicked(); void playpauseUpdated(); + void updateDetailsFromServer(AudioTrack track); + void updateProgressFromTimer(); }; #endif // PLAYERINTERFACE_H -- GitLab