diff --git a/approot/playqueue.xml b/approot/playqueue.xml index b9249126..c372f8df 100644 --- a/approot/playqueue.xml +++ b/approot/playqueue.xml @@ -40,23 +40,34 @@
${cover}
-
-
${name}
- ${}${release class="text-decoration-none link-success text-truncate"}${} +
+
+
+
${name}
+ ${}${artists class="d-block d-md-none text-truncate"}${} +
+
+
+ ${}${artists-md class="d-none d-md-block text-truncate"}${} +
+
+ ${}${release class="d-none d-lg-inline text-truncate text-decoration-none link-success"}${} +
-
+
${duration}
- ${play-btn class="btn btn-sm btn-outline-secondary border-0"} -
diff --git a/src/lms/ui/PlayQueue.cpp b/src/lms/ui/PlayQueue.cpp index c4b6c0f7..fdef523a 100644 --- a/src/lms/ui/PlayQueue.cpp +++ b/src/lms/ui/PlayQueue.cpp @@ -28,6 +28,7 @@ #include #include +#include "services/database/Artist.hpp" #include "services/database/Release.hpp" #include "services/database/Session.hpp" #include "services/database/Track.hpp" @@ -489,6 +490,15 @@ PlayQueue::addEntry(const Database::TrackListEntry::pointer& tracklistEntry) entry->bindString("name", Wt::WString::fromUTF8(track->getName()), Wt::TextFormat::Plain); + const auto artists {track->getArtistIds({Database::TrackArtistLinkType::Artist})}; + LMS_LOG(UI, DEBUG) << "Found " << artists.size() << " artists!"; + if (!artists.empty()) + { + entry->setCondition("if-has-artists", true); + entry->bindWidget("artists", Utils::createArtistContainer(artists)); + entry->bindWidget("artists-md", Utils::createArtistContainer(artists)); + } + const auto release {track->getRelease()}; if (release) { @@ -542,6 +552,13 @@ PlayQueue::addEntry(const Database::TrackListEntry::pointer& tracklistEntry) }); entry->bindNew("more-btn", Wt::WString::tr("Lms.template.more-btn"), Wt::TextFormat::XHTML); + entry->bindNew("play", Wt::WString::tr("Lms.Explore.play")) + ->clicked().connect([=] + { + const std::optional pos {_entriesContainer->getIndexOf(*entry)}; + if (pos) + loadTrack(*pos, true); + }); auto isStarred {[=] { return Service::get()->isStarred(LmsApp->getUserId(), trackId); }};