Merge branch 'audio-player' into develop
This commit is contained in:
@@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
#include "common/InputRange.hpp"
|
#include "common/InputRange.hpp"
|
||||||
#include "logger/Logger.hpp"
|
#include "logger/Logger.hpp"
|
||||||
|
#include "utils/Utils.hpp"
|
||||||
|
|
||||||
#include "LmsApplication.hpp"
|
#include "LmsApplication.hpp"
|
||||||
|
|
||||||
@@ -77,7 +78,11 @@ AudioPlayer::loadTrack(Database::Track::id_type trackId)
|
|||||||
bindString("track", Wt::WString::fromUTF8(track->getName()));
|
bindString("track", Wt::WString::fromUTF8(track->getName()));
|
||||||
bindString("artist", Wt::WString::fromUTF8(track->getArtist()->getName()));
|
bindString("artist", Wt::WString::fromUTF8(track->getArtist()->getName()));
|
||||||
_cover->setImageLink(SessionCoverResource()->getTrackUrl(trackId, 64));
|
_cover->setImageLink(SessionCoverResource()->getTrackUrl(trackId, 64));
|
||||||
_trackDuration->setText( boost::posix_time::to_simple_string( track->getDuration() ));
|
|
||||||
|
std::string durationFormat = track->getDuration().total_seconds() < 3600 ? "%M:%S" : "%H:%M:%S";
|
||||||
|
|
||||||
|
_trackDuration->setText(durationToString(track->getDuration(), durationFormat));
|
||||||
|
_trackCurTime->setText(durationToString(boost::posix_time::seconds(0), durationFormat));
|
||||||
|
|
||||||
// Analyse track, select the best media stream
|
// Analyse track, select the best media stream
|
||||||
Av::MediaFile mediaFile(track->getPath());
|
Av::MediaFile mediaFile(track->getPath());
|
||||||
@@ -208,11 +213,11 @@ AudioPlayer::AudioPlayer(Wt::WContainerWidget *parent)
|
|||||||
playPauseBtn->addStyleClass("mediaplayer-btn");
|
playPauseBtn->addStyleClass("mediaplayer-btn");
|
||||||
bindWidget("play-pause", playPauseBtn);
|
bindWidget("play-pause", playPauseBtn);
|
||||||
|
|
||||||
Wt::WText *trackCurrentTime = new Wt::WText("00:00");
|
_trackCurTime = new Wt::WText("--:--");
|
||||||
trackCurrentTime->addStyleClass("hidden-xs badge mediaplayer-badge mediaplayer-current-duration");
|
_trackCurTime->addStyleClass("hidden-xs badge mediaplayer-badge mediaplayer-current-duration");
|
||||||
bindWidget("curtime", trackCurrentTime);
|
bindWidget("curtime", _trackCurTime);
|
||||||
|
|
||||||
_trackDuration = new Wt::WText("00:00");
|
_trackDuration = new Wt::WText("--:--");
|
||||||
_trackDuration->addStyleClass("hidden-xs badge mediaplayer-badge mediaplayer-total-duration");
|
_trackDuration->addStyleClass("hidden-xs badge mediaplayer-badge mediaplayer-total-duration");
|
||||||
bindWidget("duration", _trackDuration);
|
bindWidget("duration", _trackDuration);
|
||||||
|
|
||||||
@@ -223,7 +228,7 @@ AudioPlayer::AudioPlayer(Wt::WContainerWidget *parent)
|
|||||||
document.lms.audio.audio = " + _audio->jsRef() + ";\
|
document.lms.audio.audio = " + _audio->jsRef() + ";\
|
||||||
document.lms.audio.seekbar = " + seekbar->jsRef() +";\
|
document.lms.audio.seekbar = " + seekbar->jsRef() +";\
|
||||||
document.lms.audio.volumeSlider = " + volumeSlider->jsRef() + ";\
|
document.lms.audio.volumeSlider = " + volumeSlider->jsRef() + ";\
|
||||||
document.lms.audio.curTimeText = " + trackCurrentTime->jsRef() + ";\
|
document.lms.audio.curTimeText = " + _trackCurTime->jsRef() + ";\
|
||||||
document.lms.audio.playPause = " + playPauseBtn->jsRef() + ";\
|
document.lms.audio.playPause = " + playPauseBtn->jsRef() + ";\
|
||||||
\
|
\
|
||||||
document.lms.audio.offset = 0;\
|
document.lms.audio.offset = 0;\
|
||||||
@@ -247,9 +252,23 @@ AudioPlayer::AudioPlayer(Wt::WContainerWidget *parent)
|
|||||||
var icon = document.lms.audio.playPause.getElementsByTagName(\"i\")[0]; \
|
var icon = document.lms.audio.playPause.getElementsByTagName(\"i\")[0]; \
|
||||||
icon.className = \"fa fa-play fa-3x fa-fw\"; \
|
icon.className = \"fa fa-play fa-3x fa-fw\"; \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
|
function durationToString(duration, displayHours) { \
|
||||||
|
var hours = parseInt( duration / 3600 ) % 24; \
|
||||||
|
var minutes = parseInt( duration / 60) % 60; \
|
||||||
|
var seconds = duration % 60; \
|
||||||
|
\
|
||||||
|
var res = \"\"; \
|
||||||
|
if (displayHours) \
|
||||||
|
res = (hours < 10 ? \"0\" + hours : hours) + \":\"; \
|
||||||
|
\
|
||||||
|
res += (minutes < 10 ? \"0\" + minutes : minutes) + \":\"; \
|
||||||
|
res += (seconds < 10 ? \"0\" + seconds : seconds); \
|
||||||
|
return res; \
|
||||||
|
} \
|
||||||
\
|
\
|
||||||
function updateUI() {\
|
function updateUI() {\
|
||||||
document.lms.audio.curTimeText.innerHTML = document.lms.audio.curTime;\
|
document.lms.audio.curTimeText.innerHTML = durationToString(document.lms.audio.curTime, document.lms.audio.seekbar.max > 3600); \
|
||||||
document.lms.audio.seekbar.value = document.lms.audio.curTime;\
|
document.lms.audio.seekbar.value = document.lms.audio.curTime;\
|
||||||
}\
|
}\
|
||||||
\
|
\
|
||||||
@@ -265,7 +284,7 @@ AudioPlayer::AudioPlayer(Wt::WContainerWidget *parent)
|
|||||||
if (document.lms.audio.state == \"init\")\
|
if (document.lms.audio.state == \"init\")\
|
||||||
return;\
|
return;\
|
||||||
\
|
\
|
||||||
document.lms.audio.curTimeText.innerHTML = document.lms.audio.seekbar.value;\
|
document.lms.audio.curTimeText.innerHTML = durationToString(document.lms.audio.seekbar.value, document.lms.audio.seekbar.max > 3600); \
|
||||||
}\
|
}\
|
||||||
\
|
\
|
||||||
function seek(e) {\
|
function seek(e) {\
|
||||||
@@ -281,7 +300,7 @@ AudioPlayer::AudioPlayer(Wt::WContainerWidget *parent)
|
|||||||
audioSource.src = src + document.lms.audio.seekbar.value;\
|
audioSource.src = src + document.lms.audio.seekbar.value;\
|
||||||
document.lms.audio.audio.load(); \
|
document.lms.audio.audio.load(); \
|
||||||
document.lms.audio.audio.play(); \
|
document.lms.audio.audio.play(); \
|
||||||
document.lms.audio.curTimeText.innerHTML = ~~document.lms.audio.curTime + \" \";\
|
document.lms.audio.curTimeText.innerHTML = durationToString(document.lms.audio.curTime, document.lms.audio.seekbar.max > 3600); \
|
||||||
}\
|
}\
|
||||||
\
|
\
|
||||||
function volumeChanged() {\
|
function volumeChanged() {\
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ class AudioPlayer : public Wt::WTemplate
|
|||||||
Wt::Signal<bool> _loop;
|
Wt::Signal<bool> _loop;
|
||||||
|
|
||||||
Wt::WAudio* _audio;
|
Wt::WAudio* _audio;
|
||||||
|
Wt::WText* _trackCurTime;
|
||||||
Wt::WText* _trackDuration;
|
Wt::WText* _trackDuration;
|
||||||
Wt::WText* _trackName;
|
Wt::WText* _trackName;
|
||||||
Wt::WImage* _cover;
|
Wt::WImage* _cover;
|
||||||
|
|||||||
Reference in New Issue
Block a user