From 277df96bed1d1e4e57c4e6570f0caed3e9a606b2 Mon Sep 17 00:00:00 2001 From: emeric Date: Wed, 19 May 2021 23:49:55 +0200 Subject: [PATCH] Do not write all the artists in case no album artist is found. ref #154 --- approot/release.xml | 1 + src/lms/ui/explore/ReleaseView.cpp | 49 ++++++++++++++++++------------ src/lms/ui/explore/ReleaseView.hpp | 1 + 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/approot/release.xml b/approot/release.xml index ce72ff94..b440c6c6 100644 --- a/approot/release.xml +++ b/approot/release.xml @@ -15,6 +15,7 @@

${name}

${}${artists}${} + ${}
${tr:Lms.Explore.various-artists}
${
}
${}${year}${}${} (${orig-year})${}
${clusters} ${play-btn class="Lms-explore-btn Lms-btn"}${more-btn class="Lms-explore-btn Lms-btn"} diff --git a/src/lms/ui/explore/ReleaseView.cpp b/src/lms/ui/explore/ReleaseView.cpp index 6ea64c21..35ee0e4d 100644 --- a/src/lms/ui/explore/ReleaseView.cpp +++ b/src/lms/ui/explore/ReleaseView.cpp @@ -107,25 +107,7 @@ Release::refreshView() } } - { - std::vector> artists; - - artists = release->getReleaseArtists(); - if (artists.empty()) - artists = release->getArtists(); - - if (!artists.empty()) - { - setCondition("if-has-release-artists", true); - - Wt::WContainerWidget* artistsContainer {bindNew("artists")}; - for (const auto& artist : artists) - { - Wt::WTemplate* artistTemplate {artistsContainer->addNew(Wt::WString::tr("Lms.Explore.Release.template.entry-release-artist"))}; - artistTemplate->bindWidget("artist", LmsApplication::createArtistAnchor(artist)); - } - } - } + refreshReleaseArtists(release); { Wt::WImage* cover {bindNew("cover", Wt::WLink(LmsApp->getCoverResource()->getReleaseUrl(release.id(), CoverResource::Size::Large)))}; @@ -263,6 +245,35 @@ Release::refreshView() } } +void +Release::refreshReleaseArtists(const Database::Release::pointer& release) +{ + std::vector> artists; + + artists = release->getReleaseArtists(); + if (artists.empty()) + { + artists = release->getArtists(Database::TrackArtistLinkType::Artist); + if (artists.size() > 1) + { + setCondition("if-has-various-release-artists", true); + return; + } + } + + if (!artists.empty()) + { + setCondition("if-has-release-artists", true); + + Wt::WContainerWidget* artistsContainer {bindNew("artists")}; + for (const auto& artist : artists) + { + Wt::WTemplate* artistTemplate {artistsContainer->addNew(Wt::WString::tr("Lms.Explore.Release.template.entry-release-artist"))}; + artistTemplate->bindWidget("artist", LmsApplication::createArtistAnchor(artist)); + } + } +} + void Release::refreshCopyright(const Database::Release::pointer& release) { diff --git a/src/lms/ui/explore/ReleaseView.hpp b/src/lms/ui/explore/ReleaseView.hpp index 64b994f8..037d6d5c 100644 --- a/src/lms/ui/explore/ReleaseView.hpp +++ b/src/lms/ui/explore/ReleaseView.hpp @@ -44,6 +44,7 @@ namespace UserInterface private: void refreshView(); + void refreshReleaseArtists(const Wt::Dbo::ptr& release); void refreshCopyright(const Wt::Dbo::ptr& release); void refreshLinks(const Wt::Dbo::ptr& release); void refreshSimilarReleases(const std::unordered_set& similarReleasesId);