CollectionModel: Only use song sort text if album is the parent group by

This commit is contained in:
Jonas Kvinge
2024-09-30 17:14:43 +02:00
parent 85af736bfd
commit d72694ce06
2 changed files with 7 additions and 17 deletions

View File

@@ -725,7 +725,7 @@ CollectionItem *CollectionModel::CreateContainerItem(const GroupBy group_by, con
QString divider_key; QString divider_key;
if (options_active_.show_dividers && container_level == 0) { if (options_active_.show_dividers && container_level == 0) {
divider_key = DividerKey(group_by, song, SortText(group_by, container_level, song, options_active_.sort_skips_articles)); divider_key = DividerKey(group_by, song, SortText(group_by, song, options_active_.sort_skips_articles));
if (!divider_key.isEmpty()) { if (!divider_key.isEmpty()) {
if (!divider_nodes_.contains(divider_key)) { if (!divider_nodes_.contains(divider_key)) {
CreateDividerItem(divider_key, DividerDisplayText(group_by, divider_key), parent); CreateDividerItem(divider_key, DividerDisplayText(group_by, divider_key), parent);
@@ -739,7 +739,7 @@ CollectionItem *CollectionModel::CreateContainerItem(const GroupBy group_by, con
item->container_level = container_level; item->container_level = container_level;
item->container_key = container_key; item->container_key = container_key;
item->display_text = DisplayText(group_by, song); item->display_text = DisplayText(group_by, song);
item->sort_text = SortText(group_by, container_level, song, options_active_.sort_skips_articles); item->sort_text = SortText(group_by, song, options_active_.sort_skips_articles);
if (!divider_key.isEmpty()) { if (!divider_key.isEmpty()) {
item->sort_text.prepend(divider_key + QLatin1Char(' ')); item->sort_text.prepend(divider_key + QLatin1Char(' '));
} }
@@ -781,13 +781,7 @@ void CollectionModel::CreateSongItem(const Song &song, CollectionItem *parent) {
void CollectionModel::SetSongItemData(CollectionItem *item, const Song &song) { void CollectionModel::SetSongItemData(CollectionItem *item, const Song &song) {
item->display_text = song.TitleWithCompilationArtist(); item->display_text = song.TitleWithCompilationArtist();
if (item->container_level == 1 && !IsAlbumGroupBy(options_active_.group_by[0])) { item->sort_text = IsAlbumGroupBy(options_active_.group_by[item->parent->container_level]) ? SortTextForSong(song) : SortText(song.title());
item->sort_text = SortText(song.title());
}
else {
item->sort_text = SortTextForSong(song);
}
item->metadata = song; item->metadata = song;
} }
@@ -1101,7 +1095,7 @@ QString CollectionModel::PrettyFormat(const Song &song) {
} }
QString CollectionModel::SortText(const GroupBy group_by, const int container_level, const Song &song, const bool sort_skips_articles) { QString CollectionModel::SortText(const GroupBy group_by, const Song &song, const bool sort_skips_articles) {
switch (group_by) { switch (group_by) {
case GroupBy::AlbumArtist: case GroupBy::AlbumArtist:
@@ -1145,12 +1139,8 @@ QString CollectionModel::SortText(const GroupBy group_by, const int container_le
case GroupBy::Bitrate: case GroupBy::Bitrate:
return SortTextForNumber(std::max(0, song.bitrate())) + QLatin1Char(' '); return SortTextForNumber(std::max(0, song.bitrate())) + QLatin1Char(' ');
case GroupBy::None: case GroupBy::None:
case GroupBy::GroupByCount:{ case GroupBy::GroupByCount:
if (container_level == 1 && !IsAlbumGroupBy(options_active_.group_by[0])) { break;
return SortText(song.title());
}
return SortTextForSong(song);
}
} }
return QString(); return QString();

View File

@@ -184,7 +184,7 @@ class CollectionModel : public SimpleTreeModel<CollectionItem> {
static QString PrettyYearAlbumDisc(const int year, const QString &album, const int disc); static QString PrettyYearAlbumDisc(const int year, const QString &album, const int disc);
static QString PrettyDisc(const int disc); static QString PrettyDisc(const int disc);
static QString PrettyFormat(const Song &song); static QString PrettyFormat(const Song &song);
QString SortText(const GroupBy group_by, const int container_level, const Song &song, const bool sort_skips_articles); QString SortText(const GroupBy group_by, const Song &song, const bool sort_skips_articles);
static QString SortText(QString text); static QString SortText(QString text);
static QString SortTextForNumber(const int number); static QString SortTextForNumber(const int number);
static QString SortTextForArtist(QString artist, const bool skip_articles); static QString SortTextForArtist(QString artist, const bool skip_articles);