Display disc subtitles if it is set, even for single disc releases, fixes #492

This commit is contained in:
emeric
2024-07-27 18:03:58 +02:00
parent a2a2041f49
commit 9bca05fb51
3 changed files with 11 additions and 2 deletions
+5
View File
@@ -514,6 +514,11 @@ namespace lms::db
return getArtists().size() > 1;
}
bool Release::hasDiscSubtitle() const
{
return utils::fetchQuerySingleResult(session()->query<int>("SELECT EXISTS (SELECT 1 FROM track WHERE disc_subtitle IS NOT NULL AND disc_subtitle <> '' AND release_id = ?)").bind(getId()));
}
std::size_t Release::getTrackCount() const
{
assert(session());
@@ -218,6 +218,7 @@ namespace lms::db
std::vector<ObjectPtr<Artist>> getReleaseArtists() const { return getArtists(TrackArtistLinkType::ReleaseArtist); }
bool hasVariousArtists() const;
std::vector<pointer> getSimilarReleases(std::optional<std::size_t> offset = {}, std::optional<std::size_t> count = {}) const;
bool hasDiscSubtitle() const;
template<class Action>
void persist(Action& a)
+5 -2
View File
@@ -321,7 +321,8 @@ namespace lms::ui
const bool variousArtists{ release->hasVariousArtists() };
const auto totalDisc{ release->getTotalDisc() };
const std::size_t discCount{ release->getDiscCount() };
const bool isReleaseMultiDisc{ (discCount > 1) || (totalDisc && *totalDisc > 1) };
const bool hasDiscSubtitle{ release->hasDiscSubtitle() };
const bool useSubtitleContainers{ (discCount > 1) || (totalDisc && *totalDisc > 1) || hasDiscSubtitle };
// Expect to be called in asc order
std::map<std::size_t, Wt::WContainerWidget*> trackContainers;
@@ -392,8 +393,10 @@ namespace lms::ui
const auto discNumber{ track->getDiscNumber() };
Wt::WContainerWidget* container;
if (isReleaseMultiDisc && discNumber)
if (useSubtitleContainers && discNumber)
container = getOrAddDiscContainer(*discNumber, track->getDiscSubtitle());
else if (hasDiscSubtitle && !discNumber)
container = getOrAddDiscContainer(0, track->getDiscSubtitle());
else
container = getOrAddNoDiscContainer();