When listing albums in context view, if can't find and for artist, try
composer. Issue #1460
This commit is contained in:
committed by
Craig Drummond
parent
0690393854
commit
138589aa0a
@@ -18,6 +18,8 @@
|
||||
15. Add --fullscreen command-line option to start fullscreen.
|
||||
16. For genres listed in "Composer Support" tweak, shown composer instead of
|
||||
artist in context view and toolbar.
|
||||
17. When listing albums in context view, if can't find and for artist, try
|
||||
composer.
|
||||
|
||||
2.3.3
|
||||
-----
|
||||
|
||||
@@ -199,7 +199,7 @@ void ArtistView::update(const Song &s, bool force)
|
||||
const QList<LibraryDb::Album> & ArtistView::getArtistAlbums()
|
||||
{
|
||||
if (artistAlbums.isEmpty() && !currentSong.isEmpty()) {
|
||||
artistAlbums=MpdLibraryModel::self()->getArtistAlbums(currentSong.artist);
|
||||
artistAlbums=MpdLibraryModel::self()->getArtistOrComposerAlbums(currentSong.artist);
|
||||
}
|
||||
return artistAlbums;
|
||||
}
|
||||
|
||||
@@ -978,7 +978,7 @@ QList<Song> LibraryDb::songs(const QStringList &files, bool allowPlaylists) cons
|
||||
return songList;
|
||||
}
|
||||
|
||||
QList<LibraryDb::Album> LibraryDb::getAlbumsWithArtist(const QString &artist)
|
||||
QList<LibraryDb::Album> LibraryDb::getAlbumsWithArtistOrComposer(const QString &artist)
|
||||
{
|
||||
QList<LibraryDb::Album> albums;
|
||||
if (0!=currentVersion && db) {
|
||||
@@ -993,6 +993,19 @@ QList<LibraryDb::Album> LibraryDb::getAlbumsWithArtist(const QString &artist)
|
||||
}
|
||||
}
|
||||
|
||||
if (albums.isEmpty()) {
|
||||
// No artist albums? Try composer...
|
||||
SqlQuery query("distinct album, albumId, albumSort", *db);
|
||||
query.addWhere("composer", artist);
|
||||
query.exec();
|
||||
DBUG << query.executedQuery();
|
||||
while (query.next()) {
|
||||
QString album=query.value(0).toString();
|
||||
QString albumId=query.value(1).toString();
|
||||
albums.append(Album(album.isEmpty() ? albumId : album, albumId, query.value(2).toString(), artist));
|
||||
}
|
||||
}
|
||||
|
||||
qSort(albums.begin(), albums.end(), albumsSortArAlYr);
|
||||
|
||||
return albums;
|
||||
|
||||
@@ -125,7 +125,7 @@ public:
|
||||
QList<Song> getTracks(int rowFrom, int count);
|
||||
int trackCount();
|
||||
QList<Song> songs(const QStringList &files, bool allowPlaylists=false) const;
|
||||
QList<Album> getAlbumsWithArtist(const QString &artist);
|
||||
QList<Album> getAlbumsWithArtistOrComposer(const QString &artist);
|
||||
Album getRandomAlbum(const QString &genre, const QString &artist);
|
||||
Album getRandomAlbum(const QStringList &genres, const QStringList &artists);
|
||||
QSet<QString> get(const QString &type);
|
||||
|
||||
@@ -605,9 +605,9 @@ QList<Song> SqlLibraryModel::songs(const QStringList &files, bool allowPlaylists
|
||||
return db->songs(files, allowPlaylists);
|
||||
}
|
||||
|
||||
QList<LibraryDb::Album> SqlLibraryModel::getArtistAlbums(const QString &artist) const
|
||||
QList<LibraryDb::Album> SqlLibraryModel::getArtistOrComposerAlbums(const QString &artist) const
|
||||
{
|
||||
return db->getAlbumsWithArtist(artist);
|
||||
return db->getAlbumsWithArtistOrComposer(artist);
|
||||
}
|
||||
|
||||
void SqlLibraryModel::getDetails(QSet<QString> &artists, QSet<QString> &albumArtists, QSet<QString> &composers, QSet<QString> &albums, QSet<QString> &genres)
|
||||
|
||||
@@ -165,7 +165,7 @@ public:
|
||||
QList<Song> getAlbumTracks(const QString &artistId, const QString &albumId) const;
|
||||
QList<Song> getAlbumTracks(const Song &song) const { return getAlbumTracks(song.albumArtistOrComposer(), song.albumId()); }
|
||||
QList<Song> songs(const QStringList &files, bool allowPlaylists=false) const;
|
||||
QList<LibraryDb::Album> getArtistAlbums(const QString &artist) const;
|
||||
QList<LibraryDb::Album> getArtistOrComposerAlbums(const QString &artist) const;
|
||||
void getDetails(QSet<QString> &artists, QSet<QString> &albumArtists, QSet<QString> &composers, QSet<QString> &albums, QSet<QString> &genres);
|
||||
bool songExists(const Song &song);
|
||||
LibraryDb::Album getRandomAlbum(const QStringList &genres, const QStringList &artists) const { return db->getRandomAlbum(genres, artists); }
|
||||
|
||||
Reference in New Issue
Block a user