Prevent autoplay when connecting to LMS

This commit is contained in:
emeric
2018-09-12 20:24:46 +02:00
parent ce7cb193a4
commit 5e3cfffa92
5 changed files with 25 additions and 17 deletions
+11 -3
View File
@@ -447,9 +447,17 @@ LmsApplication::createHome()
}); });
// Events from the PlayQueue // Events from the PlayQueue
playqueue->playTrack.connect(playhistory, &PlayHistory::addTrack); playqueue->loadTrack.connect([=](Database::IdType trackId, bool play)
playqueue->playTrack.connect(explore, &Explore::handleTrackPlayed); {
playqueue->playTrack.connect(player, &MediaPlayer::playTrack); playhistory->addTrack(trackId);
});
playqueue->loadTrack.connect([=](Database::IdType trackId, bool play)
{
explore->handleTrackPlayed(trackId);
});
playqueue->loadTrack.connect(player, &MediaPlayer::loadTrack);
playqueue->playbackStop.connect(player, &MediaPlayer::stop); playqueue->playbackStop.connect(player, &MediaPlayer::stop);
+2 -2
View File
@@ -51,7 +51,7 @@ MediaPlayer::MediaPlayer()
} }
void void
MediaPlayer::playTrack(Database::IdType trackId) MediaPlayer::loadTrack(Database::IdType trackId, bool play)
{ {
LMS_LOG(UI, DEBUG) << "Playing track ID = " << trackId; LMS_LOG(UI, DEBUG) << "Playing track ID = " << trackId;
@@ -72,7 +72,7 @@ MediaPlayer::playTrack(Database::IdType trackId)
<< " duration: " << std::chrono::duration_cast<std::chrono::seconds>(track->getDuration()).count() << "," << " duration: " << std::chrono::duration_cast<std::chrono::seconds>(track->getDuration()).count() << ","
<< " imgResource: \"" << imgResource << "\"," << " imgResource: \"" << imgResource << "\","
<< "};"; << "};";
oss << "LMS.mediaplayer.loadTrack(params, true)"; // true to autoplay oss << "LMS.mediaplayer.loadTrack(params, " << (play ? "true" : "false") << ")"; // true to autoplay
LMS_LOG(UI, DEBUG) << "Runing js = '" << oss.str() << "'"; LMS_LOG(UI, DEBUG) << "Runing js = '" << oss.str() << "'";
+1 -1
View File
@@ -34,7 +34,7 @@ class MediaPlayer : public Wt::WTemplate
MediaPlayer(); MediaPlayer();
void stop(); void stop();
void playTrack(Database::IdType trackId); void loadTrack(Database::IdType trackId, bool play);
// Signals // Signals
Wt::JSignal<> playbackEnded; Wt::JSignal<> playbackEnded;
+8 -8
View File
@@ -92,7 +92,7 @@ PlayQueue::PlayQueue()
{ {
LmsApp->post([=] LmsApp->post([=]
{ {
play(LmsApp->getUser()->getCurPlayingTrackPos()); load(LmsApp->getUser()->getCurPlayingTrackPos(), false);
}); });
} }
} }
@@ -139,7 +139,7 @@ PlayQueue::stop()
} }
void void
PlayQueue::play(std::size_t pos) PlayQueue::load(std::size_t pos, bool play)
{ {
updateCurrentTrack(false); updateCurrentTrack(false);
@@ -171,7 +171,7 @@ PlayQueue::play(std::size_t pos)
LmsApp->getUser().modify()->setCurPlayingTrackPos(pos); LmsApp->getUser().modify()->setCurPlayingTrackPos(pos);
} }
playTrack.emit(trackId); loadTrack.emit(trackId, play);
} }
void void
@@ -183,7 +183,7 @@ PlayQueue::playPrevious()
if (*_trackPos == 0) if (*_trackPos == 0)
stop(); stop();
else else
play(*_trackPos - 1); load(*_trackPos - 1, true);
} }
void void
@@ -191,11 +191,11 @@ PlayQueue::playNext()
{ {
if (!_trackPos) if (!_trackPos)
{ {
play(0); load(0, true);
return; return;
} }
play(*_trackPos + 1); load(*_trackPos + 1, true);
} }
void void
@@ -257,7 +257,7 @@ PlayQueue::playTracks(const std::vector<Database::Track::pointer>& tracks)
clearTracks(); clearTracks();
enqueueTracks(tracks); enqueueTracks(tracks);
play(0); load(0, true);
LmsApp->notifyMsg(MsgType::Info, Wt::WString::tr("Lms.PlayQueue.nb-tracks-playing").arg(tracks.size()), std::chrono::milliseconds(2000)); LmsApp->notifyMsg(MsgType::Info, Wt::WString::tr("Lms.PlayQueue.nb-tracks-playing").arg(tracks.size()), std::chrono::milliseconds(2000));
} }
@@ -298,7 +298,7 @@ PlayQueue::addSome()
{ {
auto pos = _entriesContainer->indexOf(entry); auto pos = _entriesContainer->indexOf(entry);
if (pos >= 0) if (pos >= 0)
play(pos); load(pos, true);
})); }));
Wt::WText* delBtn = entry->bindNew<Wt::WText>("del-btn", Wt::WString::tr("Lms.PlayQueue.delete"), Wt::TextFormat::XHTML); Wt::WText* delBtn = entry->bindNew<Wt::WText>("del-btn", Wt::WString::tr("Lms.PlayQueue.delete"), Wt::TextFormat::XHTML);
+3 -3
View File
@@ -47,8 +47,8 @@ class PlayQueue : public Wt::WTemplate
// play the previous track in the queue // play the previous track in the queue
void playPrevious(); void playPrevious();
// Signal emitted when a track is to be played // Signal emitted when a track is to be load(and optionally played)
Wt::Signal<Database::IdType> playTrack; Wt::Signal<Database::IdType /*trackId*/, bool /*play*/> loadTrack;
// Signal emitted when play has to be stopped // Signal emitted when play has to be stopped
Wt::Signal<> playbackStop; Wt::Signal<> playbackStop;
@@ -64,7 +64,7 @@ class PlayQueue : public Wt::WTemplate
void updateInfo(); void updateInfo();
void updateCurrentTrack(bool selected); void updateCurrentTrack(bool selected);
void play(std::size_t pos); void load(std::size_t pos, bool play);
void stop(); void stop();
boost::optional<Database::IdType> _tracklistId; boost::optional<Database::IdType> _tracklistId;