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:
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user