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

This commit is contained in:
emeric
2022-12-31 15:26:04 +01:00
parent c6fe63f3b2
commit f72f1b7204
9 changed files with 42 additions and 45 deletions
+5 -1
View File
@@ -44,6 +44,10 @@
</div>
</message>
<message id="Lms.MediaPlayer.template.playqueue-btn"><i class="fa fa-fw fa-th-list"/></message>
<message id="Lms.MediaPlayer.template.playqueue-btn">
<span>
<i class="fa fa-fw fa-th-list d-inline"/><div class="d-none d-sm-inline ms-2 small">{1}</div>
</span>
</message>
</messages>
-4
View File
@@ -209,10 +209,6 @@
<!--Playqueue-->
<message id="Lms.PlayQueue.clear">Clear</message>
<message id="Lms.PlayQueue.create-tracklist">Create new playlist</message>
<message id="Lms.PlayQueue.nb-tracks-added">
<plural case="0">Added {1} track</plural>
<plural case="1">Added {1} tracks</plural>
</message>
<message id="Lms.PlayQueue.playqueue">Play Queue</message>
<message id="Lms.PlayQueue.playqueue-full">Play Queue full!</message>
<message id="Lms.PlayQueue.radio-mode">Radio mode</message>
-4
View File
@@ -209,10 +209,6 @@
<!--Playqueue-->
<message id="Lms.PlayQueue.clear">Effacer</message>
<message id="Lms.PlayQueue.create-tracklist">Créer une nouvelle liste de lecture</message>
<message id="Lms.PlayQueue.nb-tracks-added">
<plural case="0">{1} piste ajoutée</plural>
<plural case="1">{1} pistes ajoutées</plural>
</message>
<message id="Lms.PlayQueue.playqueue">Liste de lecture</message>
<message id="Lms.PlayQueue.playqueue-full">Liste de lecture pleine!</message>
<message id="Lms.PlayQueue.radio-mode">Mode radio</message>
-4
View File
@@ -209,10 +209,6 @@
<!--Playqueue-->
<message id="Lms.PlayQueue.clear">Cancella</message>
<message id="Lms.PlayQueue.nb-tracks-added">
<plural case="0">Aggiunta {1} traccia</plural>
<plural case="1">Aggiunte {1} tracce</plural>
</message>
<message id="Lms.PlayQueue.playqueue">Coda di riproduzione</message>
<message id="Lms.PlayQueue.playqueue-full">Coda di riproduzione piena!</message>
<message id="Lms.PlayQueue.radio-mode">Modalità radio</message>
+5 -2
View File
@@ -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)
+9 -6
View File
@@ -210,12 +210,9 @@ MediaPlayer::MediaPlayer()
_title = bindNew<Wt::WText>("title");
_artist = bindNew<Wt::WAnchor>("artist");
_release = bindNew<Wt::WAnchor>("release");
{
Wt::WPushButton* playQueueBtn {bindNew<Wt::WPushButton>("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<Wt::WPushButton>("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
+7 -4
View File
@@ -101,7 +101,9 @@ class MediaPlayer : public Wt::WTemplate
void stop();
std::optional<Settings> 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<std::string> _settingsLoaded;
Wt::WText* _title {};
Wt::WAnchor* _release {};
Wt::WAnchor* _artist {};
Wt::WText* _title {};
Wt::WAnchor* _release {};
Wt::WAnchor* _artist {};
Wt::WPushButton* _playQueue {};
};
} // namespace UserInterface
+12 -20
View File
@@ -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<Database::TrackId>& trackIds)
clearTracks();
std::vector<Database::TrackId> 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<Database::TrackId>& trackIds)
{
const std::size_t nbAddedTracks {enqueueTracks(trackIds)};
enqueueTracks(trackIds);
if (!_trackPos)
loadTrack(0, true);
notifyAddedTracks(nbAddedTracks);
}
void
PlayQueue::playAtIndex(const std::vector<Database::TrackId>& 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
+4
View File
@@ -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<std::size_t> trackCountChanged;
constexpr std::size_t getCapacity() const { return _capacity; }
std::size_t getCount();
private:
void initTrackLists();