From f72f1b72042b435101c83028670eed9b6219c2b0 Mon Sep 17 00:00:00 2001 From: emeric Date: Sat, 31 Dec 2022 15:26:04 +0100 Subject: [PATCH] Do not notify added tracks in play queue (misleading, not that useful info) but add a track counter in the play queue button instead. fixes #290 --- approot/mediaplayer.xml | 6 +++++- approot/messages.xml | 4 ---- approot/messages_fr.xml | 4 ---- approot/messages_it.xml | 4 ---- src/lms/ui/LmsApplication.cpp | 7 +++++-- src/lms/ui/MediaPlayer.cpp | 15 +++++++++------ src/lms/ui/MediaPlayer.hpp | 11 +++++++---- src/lms/ui/PlayQueue.cpp | 32 ++++++++++++-------------------- src/lms/ui/PlayQueue.hpp | 4 ++++ 9 files changed, 42 insertions(+), 45 deletions(-) diff --git a/approot/mediaplayer.xml b/approot/mediaplayer.xml index 3494fa2b..f37292f4 100644 --- a/approot/mediaplayer.xml +++ b/approot/mediaplayer.xml @@ -44,6 +44,10 @@ - + + +
{1}
+
+
diff --git a/approot/messages.xml b/approot/messages.xml index 241caf7a..1bbe9621 100644 --- a/approot/messages.xml +++ b/approot/messages.xml @@ -209,10 +209,6 @@ Clear Create new playlist - - Added {1} track - Added {1} tracks - Play Queue Play Queue full! Radio mode diff --git a/approot/messages_fr.xml b/approot/messages_fr.xml index 0439a9e5..48d8c295 100644 --- a/approot/messages_fr.xml +++ b/approot/messages_fr.xml @@ -209,10 +209,6 @@ Effacer Créer une nouvelle liste de lecture - - {1} piste ajoutée - {1} pistes ajoutées - Liste de lecture Liste de lecture pleine! Mode radio diff --git a/approot/messages_it.xml b/approot/messages_it.xml index 57d57209..3ed491c8 100644 --- a/approot/messages_it.xml +++ b/approot/messages_it.xml @@ -209,10 +209,6 @@ Cancella - - Aggiunta {1} traccia - Aggiunte {1} tracce - Coda di riproduzione Coda di riproduzione piena! Modalità radio diff --git a/src/lms/ui/LmsApplication.cpp b/src/lms/ui/LmsApplication.cpp index 0e09f8ea..5437ef94 100644 --- a/src/lms/ui/LmsApplication.cpp +++ b/src/lms/ui/LmsApplication.cpp @@ -224,9 +224,7 @@ LmsApplication::init() enableUpdates(true); if (_authenticatedUser) - { onUserLoggedIn(); - } else if (Service<::Auth::IPasswordService>::exists()) processPasswordAuth(); } @@ -507,6 +505,11 @@ LmsApplication::createHome() { _mediaPlayer->stop(); }); + _playQueue->trackCountChanged.connect([this] (std::size_t trackCount) + { + _mediaPlayer->onPlayQueueUpdated(trackCount); + }); + _mediaPlayer->onPlayQueueUpdated(_playQueue->getCount()); const bool isAdmin {getUserType() == Database::UserType::ADMIN}; if (isAdmin) diff --git a/src/lms/ui/MediaPlayer.cpp b/src/lms/ui/MediaPlayer.cpp index 4bd40a2b..a5a2b21b 100644 --- a/src/lms/ui/MediaPlayer.cpp +++ b/src/lms/ui/MediaPlayer.cpp @@ -210,12 +210,9 @@ MediaPlayer::MediaPlayer() _title = bindNew("title"); _artist = bindNew("artist"); _release = bindNew("release"); - - { - Wt::WPushButton* playQueueBtn {bindNew("playqueue-btn", Wt::WString::tr("Lms.MediaPlayer.template.playqueue-btn"), Wt::TextFormat::XHTML)}; - playQueueBtn->setLink(Wt::WLink {Wt::LinkType::InternalPath, "/playqueue"}); - playQueueBtn->setToolTip(tr("Lms.PlayQueue.playqueue")); - } + _playQueue = bindNew("playqueue-btn", Wt::WString::tr("Lms.MediaPlayer.template.playqueue-btn").arg(0), Wt::TextFormat::XHTML); + _playQueue->setLink(Wt::WLink {Wt::LinkType::InternalPath, "/playqueue"}); + _playQueue->setToolTip(tr("Lms.PlayQueue.playqueue")); _settingsLoaded.connect([this](const std::string& settings) { @@ -330,5 +327,11 @@ MediaPlayer::setSettings(const Settings& settings) } } +void +MediaPlayer::onPlayQueueUpdated(std::size_t trackCount) +{ + _playQueue->setText(Wt::WString::tr("Lms.MediaPlayer.template.playqueue-btn").arg(trackCount)); +} + } // namespace UserInterface diff --git a/src/lms/ui/MediaPlayer.hpp b/src/lms/ui/MediaPlayer.hpp index 40307c4b..512e0270 100644 --- a/src/lms/ui/MediaPlayer.hpp +++ b/src/lms/ui/MediaPlayer.hpp @@ -101,7 +101,9 @@ class MediaPlayer : public Wt::WTemplate void stop(); std::optional getSettings() const { return _settings; } - void setSettings(const Settings& settings); + void setSettings(const Settings& settings); + + void onPlayQueueUpdated(std::size_t trackCount); // Signals Wt::JSignal<> playPrevious; @@ -123,9 +125,10 @@ class MediaPlayer : public Wt::WTemplate Wt::JSignal _settingsLoaded; - Wt::WText* _title {}; - Wt::WAnchor* _release {}; - Wt::WAnchor* _artist {}; + Wt::WText* _title {}; + Wt::WAnchor* _release {}; + Wt::WAnchor* _artist {}; + Wt::WPushButton* _playQueue {}; }; } // namespace UserInterface diff --git a/src/lms/ui/PlayQueue.cpp b/src/lms/ui/PlayQueue.cpp index 6face3a5..b128b563 100644 --- a/src/lms/ui/PlayQueue.cpp +++ b/src/lms/ui/PlayQueue.cpp @@ -343,6 +343,13 @@ PlayQueue::playNext() loadTrack(*_trackPos + 1, true); } +std::size_t +PlayQueue::getCount() +{ + auto transaction {LmsApp->getDbSession().createSharedTransaction()}; + return getQueue()->getCount(); +} + void PlayQueue::initTrackLists() { @@ -373,9 +380,10 @@ PlayQueue::updateInfo() auto transaction {LmsApp->getDbSession().createSharedTransaction()}; const Database::TrackList::pointer queue {getQueue()}; - const auto trackCount {queue->getCount()}; + const std::size_t trackCount {queue->getCount()}; _nbTracks->setText(Wt::WString::trn("Lms.track-count", trackCount).arg(trackCount)); _duration->setText(Utils::durationToString(queue->getDuration())); + trackCountChanged.emit(trackCount); } void @@ -435,40 +443,24 @@ PlayQueue::playShuffled(const std::vector& trackIds) clearTracks(); std::vector shuffledTrackIds {trackIds}; Random::shuffleContainer(shuffledTrackIds); - const std::size_t nbAddedTracks {enqueueTracks(shuffledTrackIds)}; + enqueueTracks(shuffledTrackIds); loadTrack(0, true); - - notifyAddedTracks(nbAddedTracks); } void PlayQueue::playOrAddLast(const std::vector& trackIds) { - const std::size_t nbAddedTracks {enqueueTracks(trackIds)}; + enqueueTracks(trackIds); if (!_trackPos) loadTrack(0, true); - - notifyAddedTracks(nbAddedTracks); } void PlayQueue::playAtIndex(const std::vector& trackIds, std::size_t index) { clearTracks(); - const std::size_t nbAddedTracks {enqueueTracks(trackIds)}; + enqueueTracks(trackIds); loadTrack(index, true); - - notifyAddedTracks(nbAddedTracks); -} - -void -PlayQueue::notifyAddedTracks(std::size_t nbAddedTracks) const -{ - if (nbAddedTracks > 0) - LmsApp->notifyMsg(Notification::Type::Info, Wt::WString::tr("Lms.PlayQueue.playqueue"), Wt::WString::trn("Lms.PlayQueue.nb-tracks-added", nbAddedTracks).arg(nbAddedTracks), std::chrono::seconds {2}); - - if (isFull()) - LmsApp->notifyMsg(Notification::Type::Warning, Wt::WString::tr("Lms.PlayQueue.playqueue"), Wt::WString::tr("Lms.PlayQueue.playqueue-full"), std::chrono::seconds {2}); } void diff --git a/src/lms/ui/PlayQueue.hpp b/src/lms/ui/PlayQueue.hpp index bef41f68..0599eb9e 100644 --- a/src/lms/ui/PlayQueue.hpp +++ b/src/lms/ui/PlayQueue.hpp @@ -66,7 +66,11 @@ class PlayQueue : public Template // Signal emitted when track is unselected (has to be stopped) Wt::Signal<> trackUnselected; + // Signal emitted when track count changed + Wt::Signal trackCountChanged; + constexpr std::size_t getCapacity() const { return _capacity; } + std::size_t getCount(); private: void initTrackLists();