From 61a8a3a84a6c14c4d77ffaa994bc94dee055d111 Mon Sep 17 00:00:00 2001 From: Mark Date: Mon, 28 Jul 2025 12:57:03 +0200 Subject: [PATCH] SmartPlaylists: Add sort fields --- .../smartplaylistsearchterm.cpp | 24 +++++++++++++++++++ src/smartplaylists/smartplaylistsearchterm.h | 6 +++++ .../smartplaylistsearchtermwidget.cpp | 23 ++++++++++++++++-- 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/smartplaylists/smartplaylistsearchterm.cpp b/src/smartplaylists/smartplaylistsearchterm.cpp index 12dd16f56..17aa29361 100644 --- a/src/smartplaylists/smartplaylistsearchterm.cpp +++ b/src/smartplaylists/smartplaylistsearchterm.cpp @@ -353,6 +353,18 @@ QString SmartPlaylistSearchTerm::FieldColumnName(const Field field) { return u"bitdepth"_s; case Field::Bitrate: return u"bitrate"_s; + case Field::ArtistSort: + return u"artistsort"_s; + case Field::AlbumArtistSort: + return u"albumartistsort"_s; + case Field::AlbumSort: + return u"albumsort"_s; + case Field::ComposerSort: + return u"composersort"_s; + case Field::PerformerSort: + return u"performersort"_s; + case Field::TitleSort: + return u"titlesort"_s; case Field::FieldCount: Q_ASSERT(0); } @@ -415,6 +427,18 @@ QString SmartPlaylistSearchTerm::FieldName(const Field field) { return Playlist::column_name(Playlist::Column::Bitdepth); case Field::Bitrate: return Playlist::column_name(Playlist::Column::Bitrate); + case Field::ArtistSort: + return Playlist::column_name(Playlist::Column::ArtistSort); + case Field::AlbumArtistSort: + return Playlist::column_name(Playlist::Column::AlbumArtistSort); + case Field::AlbumSort: + return Playlist::column_name(Playlist::Column::AlbumSort); + case Field::ComposerSort: + return Playlist::column_name(Playlist::Column::ComposerSort); + case Field::PerformerSort: + return Playlist::column_name(Playlist::Column::PerformerSort); + case Field::TitleSort: + return Playlist::column_name(Playlist::Column::TitleSort); case Field::FieldCount: Q_ASSERT(0); } diff --git a/src/smartplaylists/smartplaylistsearchterm.h b/src/smartplaylists/smartplaylistsearchterm.h index 48d9c00b2..09cee2367 100644 --- a/src/smartplaylists/smartplaylistsearchterm.h +++ b/src/smartplaylists/smartplaylistsearchterm.h @@ -59,6 +59,12 @@ class SmartPlaylistSearchTerm { Samplerate, Bitdepth, Bitrate, + ArtistSort, + AlbumArtistSort, + AlbumSort, + ComposerSort, + PerformerSort, + TitleSort, FieldCount }; diff --git a/src/smartplaylists/smartplaylistsearchtermwidget.cpp b/src/smartplaylists/smartplaylistsearchtermwidget.cpp index 065dba963..cae270897 100644 --- a/src/smartplaylists/smartplaylistsearchtermwidget.cpp +++ b/src/smartplaylists/smartplaylistsearchtermwidget.cpp @@ -162,11 +162,30 @@ void SmartPlaylistSearchTermWidget::FieldChanged(int index) { case SmartPlaylistSearchTerm::Field::Artist: new TagCompleter(collection_backend_, Playlist::Column::Artist, ui_->value_text); break; - + case SmartPlaylistSearchTerm::Field::ArtistSort: + new TagCompleter(collection_backend_, Playlist::Column::ArtistSort, ui_->value_text); + break; case SmartPlaylistSearchTerm::Field::Album: new TagCompleter(collection_backend_, Playlist::Column::Album, ui_->value_text); break; - + case SmartPlaylistSearchTerm::Field::AlbumSort: + new TagCompleter(collection_backend_, Playlist::Column::AlbumSort, ui_->value_text); + break; + case SmartPlaylistSearchTerm::Field::AlbumArtist: + new TagCompleter(collection_backend_, Playlist::Column::AlbumArtist, ui_->value_text); + break; + case SmartPlaylistSearchTerm::Field::AlbumArtistSort: + new TagCompleter(collection_backend_, Playlist::Column::AlbumArtistSort, ui_->value_text); + break; + case SmartPlaylistSearchTerm::Field::ComposerSort: + new TagCompleter(collection_backend_, Playlist::Column::ComposerSort, ui_->value_text); + break; + case SmartPlaylistSearchTerm::Field::PerformerSort: + new TagCompleter(collection_backend_, Playlist::Column::PerformerSort, ui_->value_text); + break; + case SmartPlaylistSearchTerm::Field::TitleSort: + new TagCompleter(collection_backend_, Playlist::Column::TitleSort, ui_->value_text); + break; default: ui_->value_text->setCompleter(nullptr); }