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>
|
</div>
|
||||||
</message>
|
</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>
|
</messages>
|
||||||
|
|||||||
@@ -209,10 +209,6 @@
|
|||||||
<!--Playqueue-->
|
<!--Playqueue-->
|
||||||
<message id="Lms.PlayQueue.clear">Clear</message>
|
<message id="Lms.PlayQueue.clear">Clear</message>
|
||||||
<message id="Lms.PlayQueue.create-tracklist">Create new playlist</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">Play Queue</message>
|
||||||
<message id="Lms.PlayQueue.playqueue-full">Play Queue full!</message>
|
<message id="Lms.PlayQueue.playqueue-full">Play Queue full!</message>
|
||||||
<message id="Lms.PlayQueue.radio-mode">Radio mode</message>
|
<message id="Lms.PlayQueue.radio-mode">Radio mode</message>
|
||||||
|
|||||||
@@ -209,10 +209,6 @@
|
|||||||
<!--Playqueue-->
|
<!--Playqueue-->
|
||||||
<message id="Lms.PlayQueue.clear">Effacer</message>
|
<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.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">Liste de lecture</message>
|
||||||
<message id="Lms.PlayQueue.playqueue-full">Liste de lecture pleine!</message>
|
<message id="Lms.PlayQueue.playqueue-full">Liste de lecture pleine!</message>
|
||||||
<message id="Lms.PlayQueue.radio-mode">Mode radio</message>
|
<message id="Lms.PlayQueue.radio-mode">Mode radio</message>
|
||||||
|
|||||||
@@ -209,10 +209,6 @@
|
|||||||
<!--Playqueue-->
|
<!--Playqueue-->
|
||||||
<message id="Lms.PlayQueue.clear">Cancella</message>
|
<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">Coda di riproduzione</message>
|
||||||
<message id="Lms.PlayQueue.playqueue-full">Coda di riproduzione piena!</message>
|
<message id="Lms.PlayQueue.playqueue-full">Coda di riproduzione piena!</message>
|
||||||
<message id="Lms.PlayQueue.radio-mode">Modalità radio</message>
|
<message id="Lms.PlayQueue.radio-mode">Modalità radio</message>
|
||||||
|
|||||||
@@ -224,9 +224,7 @@ LmsApplication::init()
|
|||||||
enableUpdates(true);
|
enableUpdates(true);
|
||||||
|
|
||||||
if (_authenticatedUser)
|
if (_authenticatedUser)
|
||||||
{
|
|
||||||
onUserLoggedIn();
|
onUserLoggedIn();
|
||||||
}
|
|
||||||
else if (Service<::Auth::IPasswordService>::exists())
|
else if (Service<::Auth::IPasswordService>::exists())
|
||||||
processPasswordAuth();
|
processPasswordAuth();
|
||||||
}
|
}
|
||||||
@@ -507,6 +505,11 @@ LmsApplication::createHome()
|
|||||||
{
|
{
|
||||||
_mediaPlayer->stop();
|
_mediaPlayer->stop();
|
||||||
});
|
});
|
||||||
|
_playQueue->trackCountChanged.connect([this] (std::size_t trackCount)
|
||||||
|
{
|
||||||
|
_mediaPlayer->onPlayQueueUpdated(trackCount);
|
||||||
|
});
|
||||||
|
_mediaPlayer->onPlayQueueUpdated(_playQueue->getCount());
|
||||||
|
|
||||||
const bool isAdmin {getUserType() == Database::UserType::ADMIN};
|
const bool isAdmin {getUserType() == Database::UserType::ADMIN};
|
||||||
if (isAdmin)
|
if (isAdmin)
|
||||||
|
|||||||
@@ -210,12 +210,9 @@ MediaPlayer::MediaPlayer()
|
|||||||
_title = bindNew<Wt::WText>("title");
|
_title = bindNew<Wt::WText>("title");
|
||||||
_artist = bindNew<Wt::WAnchor>("artist");
|
_artist = bindNew<Wt::WAnchor>("artist");
|
||||||
_release = bindNew<Wt::WAnchor>("release");
|
_release = bindNew<Wt::WAnchor>("release");
|
||||||
|
_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"});
|
||||||
Wt::WPushButton* playQueueBtn {bindNew<Wt::WPushButton>("playqueue-btn", Wt::WString::tr("Lms.MediaPlayer.template.playqueue-btn"), Wt::TextFormat::XHTML)};
|
_playQueue->setToolTip(tr("Lms.PlayQueue.playqueue"));
|
||||||
playQueueBtn->setLink(Wt::WLink {Wt::LinkType::InternalPath, "/playqueue"});
|
|
||||||
playQueueBtn->setToolTip(tr("Lms.PlayQueue.playqueue"));
|
|
||||||
}
|
|
||||||
|
|
||||||
_settingsLoaded.connect([this](const std::string& settings)
|
_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
|
} // namespace UserInterface
|
||||||
|
|
||||||
|
|||||||
@@ -101,7 +101,9 @@ class MediaPlayer : public Wt::WTemplate
|
|||||||
void stop();
|
void stop();
|
||||||
|
|
||||||
std::optional<Settings> getSettings() const { return _settings; }
|
std::optional<Settings> getSettings() const { return _settings; }
|
||||||
void setSettings(const Settings& settings);
|
void setSettings(const Settings& settings);
|
||||||
|
|
||||||
|
void onPlayQueueUpdated(std::size_t trackCount);
|
||||||
|
|
||||||
// Signals
|
// Signals
|
||||||
Wt::JSignal<> playPrevious;
|
Wt::JSignal<> playPrevious;
|
||||||
@@ -123,9 +125,10 @@ class MediaPlayer : public Wt::WTemplate
|
|||||||
|
|
||||||
Wt::JSignal<std::string> _settingsLoaded;
|
Wt::JSignal<std::string> _settingsLoaded;
|
||||||
|
|
||||||
Wt::WText* _title {};
|
Wt::WText* _title {};
|
||||||
Wt::WAnchor* _release {};
|
Wt::WAnchor* _release {};
|
||||||
Wt::WAnchor* _artist {};
|
Wt::WAnchor* _artist {};
|
||||||
|
Wt::WPushButton* _playQueue {};
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace UserInterface
|
} // namespace UserInterface
|
||||||
|
|||||||
+12
-20
@@ -343,6 +343,13 @@ PlayQueue::playNext()
|
|||||||
loadTrack(*_trackPos + 1, true);
|
loadTrack(*_trackPos + 1, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::size_t
|
||||||
|
PlayQueue::getCount()
|
||||||
|
{
|
||||||
|
auto transaction {LmsApp->getDbSession().createSharedTransaction()};
|
||||||
|
return getQueue()->getCount();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlayQueue::initTrackLists()
|
PlayQueue::initTrackLists()
|
||||||
{
|
{
|
||||||
@@ -373,9 +380,10 @@ PlayQueue::updateInfo()
|
|||||||
auto transaction {LmsApp->getDbSession().createSharedTransaction()};
|
auto transaction {LmsApp->getDbSession().createSharedTransaction()};
|
||||||
|
|
||||||
const Database::TrackList::pointer queue {getQueue()};
|
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));
|
_nbTracks->setText(Wt::WString::trn("Lms.track-count", trackCount).arg(trackCount));
|
||||||
_duration->setText(Utils::durationToString(queue->getDuration()));
|
_duration->setText(Utils::durationToString(queue->getDuration()));
|
||||||
|
trackCountChanged.emit(trackCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -435,40 +443,24 @@ PlayQueue::playShuffled(const std::vector<Database::TrackId>& trackIds)
|
|||||||
clearTracks();
|
clearTracks();
|
||||||
std::vector<Database::TrackId> shuffledTrackIds {trackIds};
|
std::vector<Database::TrackId> shuffledTrackIds {trackIds};
|
||||||
Random::shuffleContainer(shuffledTrackIds);
|
Random::shuffleContainer(shuffledTrackIds);
|
||||||
const std::size_t nbAddedTracks {enqueueTracks(shuffledTrackIds)};
|
enqueueTracks(shuffledTrackIds);
|
||||||
loadTrack(0, true);
|
loadTrack(0, true);
|
||||||
|
|
||||||
notifyAddedTracks(nbAddedTracks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlayQueue::playOrAddLast(const std::vector<Database::TrackId>& trackIds)
|
PlayQueue::playOrAddLast(const std::vector<Database::TrackId>& trackIds)
|
||||||
{
|
{
|
||||||
const std::size_t nbAddedTracks {enqueueTracks(trackIds)};
|
enqueueTracks(trackIds);
|
||||||
if (!_trackPos)
|
if (!_trackPos)
|
||||||
loadTrack(0, true);
|
loadTrack(0, true);
|
||||||
|
|
||||||
notifyAddedTracks(nbAddedTracks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlayQueue::playAtIndex(const std::vector<Database::TrackId>& trackIds, std::size_t index)
|
PlayQueue::playAtIndex(const std::vector<Database::TrackId>& trackIds, std::size_t index)
|
||||||
{
|
{
|
||||||
clearTracks();
|
clearTracks();
|
||||||
const std::size_t nbAddedTracks {enqueueTracks(trackIds)};
|
enqueueTracks(trackIds);
|
||||||
loadTrack(index, true);
|
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
|
void
|
||||||
|
|||||||
@@ -66,7 +66,11 @@ class PlayQueue : public Template
|
|||||||
// Signal emitted when track is unselected (has to be stopped)
|
// Signal emitted when track is unselected (has to be stopped)
|
||||||
Wt::Signal<> trackUnselected;
|
Wt::Signal<> trackUnselected;
|
||||||
|
|
||||||
|
// Signal emitted when track count changed
|
||||||
|
Wt::Signal<std::size_t> trackCountChanged;
|
||||||
|
|
||||||
constexpr std::size_t getCapacity() const { return _capacity; }
|
constexpr std::size_t getCapacity() const { return _capacity; }
|
||||||
|
std::size_t getCount();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void initTrackLists();
|
void initTrackLists();
|
||||||
|
|||||||
Reference in New Issue
Block a user