Show embedded cover art in the album cover manager too, but only for the first file in an album
This commit is contained in:
parent
f64cdb23e9
commit
0d0f1521f2
@ -603,7 +603,8 @@ LibraryBackend::AlbumList LibraryBackend::GetAlbums(const QString& artist,
|
|||||||
AlbumList ret;
|
AlbumList ret;
|
||||||
|
|
||||||
LibraryQuery query(opt);
|
LibraryQuery query(opt);
|
||||||
query.SetColumnSpec("album, artist, compilation, sampler, art_automatic, art_manual");
|
query.SetColumnSpec("album, artist, compilation, sampler, art_automatic, "
|
||||||
|
"art_manual, filename");
|
||||||
query.SetOrderBy("album");
|
query.SetOrderBy("album");
|
||||||
|
|
||||||
if (compilation) {
|
if (compilation) {
|
||||||
@ -626,6 +627,7 @@ LibraryBackend::AlbumList LibraryBackend::GetAlbums(const QString& artist,
|
|||||||
info.album_name = query.Value(0).toString();
|
info.album_name = query.Value(0).toString();
|
||||||
info.art_automatic = query.Value(4).toString();
|
info.art_automatic = query.Value(4).toString();
|
||||||
info.art_manual = query.Value(5).toString();
|
info.art_manual = query.Value(5).toString();
|
||||||
|
info.first_filename = query.Value(6).toString();
|
||||||
|
|
||||||
if (info.artist == last_artist && info.album_name == last_album)
|
if (info.artist == last_artist && info.album_name == last_album)
|
||||||
continue;
|
continue;
|
||||||
@ -645,16 +647,17 @@ LibraryBackend::Album LibraryBackend::GetAlbumArt(const QString& artist, const Q
|
|||||||
ret.artist = artist;
|
ret.artist = artist;
|
||||||
|
|
||||||
LibraryQuery query = LibraryQuery(QueryOptions());
|
LibraryQuery query = LibraryQuery(QueryOptions());
|
||||||
query.SetColumnSpec("art_automatic, art_manual");
|
query.SetColumnSpec("art_automatic, art_manual, filename");
|
||||||
query.AddWhere("artist", artist);
|
query.AddWhere("artist", artist);
|
||||||
query.AddWhere("album", album);
|
query.AddWhere("album", album);
|
||||||
|
|
||||||
QMutexLocker l(db_->Mutex());
|
QMutexLocker l(db_->Mutex());
|
||||||
if (!ExecQuery(&query)) return ret;
|
if (!ExecQuery(&query)) return ret;
|
||||||
|
|
||||||
if (query.Next()) {
|
if (query.Next()) {
|
||||||
ret.art_automatic = query.Value(0).toString();
|
ret.art_automatic = query.Value(0).toString();
|
||||||
ret.art_manual = query.Value(1).toString();
|
ret.art_manual = query.Value(1).toString();
|
||||||
|
ret.first_filename = query.Value(2).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -42,15 +42,18 @@ class LibraryBackend : public QObject {
|
|||||||
struct Album {
|
struct Album {
|
||||||
Album() {}
|
Album() {}
|
||||||
Album(const QString& _artist, const QString& _album_name,
|
Album(const QString& _artist, const QString& _album_name,
|
||||||
const QString& _art_automatic, const QString& _art_manual)
|
const QString& _art_automatic, const QString& _art_manual,
|
||||||
|
const QString& _first_filename)
|
||||||
: artist(_artist), album_name(_album_name),
|
: artist(_artist), album_name(_album_name),
|
||||||
art_automatic(_art_automatic), art_manual(_art_manual) {}
|
art_automatic(_art_automatic), art_manual(_art_manual),
|
||||||
|
first_filename(_first_filename) {}
|
||||||
|
|
||||||
QString artist;
|
QString artist;
|
||||||
QString album_name;
|
QString album_name;
|
||||||
|
|
||||||
QString art_automatic;
|
QString art_automatic;
|
||||||
QString art_manual;
|
QString art_manual;
|
||||||
|
QString first_filename;
|
||||||
};
|
};
|
||||||
typedef QList<Album> AlbumList;
|
typedef QList<Album> AlbumList;
|
||||||
|
|
||||||
|
@ -255,12 +255,13 @@ void AlbumCoverManager::ArtistChanged(QListWidgetItem* current) {
|
|||||||
QListWidgetItem* item = new QListWidgetItem(no_cover_icon_, info.album_name, ui_->albums);
|
QListWidgetItem* item = new QListWidgetItem(no_cover_icon_, info.album_name, ui_->albums);
|
||||||
item->setData(Role_ArtistName, info.artist);
|
item->setData(Role_ArtistName, info.artist);
|
||||||
item->setData(Role_AlbumName, info.album_name);
|
item->setData(Role_AlbumName, info.album_name);
|
||||||
|
item->setData(Role_FirstFilename, info.first_filename);
|
||||||
item->setData(Qt::TextAlignmentRole, QVariant(Qt::AlignTop | Qt::AlignHCenter));
|
item->setData(Qt::TextAlignmentRole, QVariant(Qt::AlignTop | Qt::AlignHCenter));
|
||||||
item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled);
|
item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled);
|
||||||
|
|
||||||
if (!info.art_automatic.isEmpty() || !info.art_manual.isEmpty()) {
|
if (!info.art_automatic.isEmpty() || !info.art_manual.isEmpty()) {
|
||||||
quint64 id = cover_loader_->Worker()->LoadImageAsync(
|
quint64 id = cover_loader_->Worker()->LoadImageAsync(
|
||||||
info.art_automatic, info.art_manual);
|
info.art_automatic, info.art_manual, info.first_filename);
|
||||||
item->setData(Role_PathAutomatic, info.art_automatic);
|
item->setData(Role_PathAutomatic, info.art_automatic);
|
||||||
item->setData(Role_PathManual, info.art_manual);
|
item->setData(Role_PathManual, info.art_manual);
|
||||||
cover_loading_tasks_[id] = item;
|
cover_loading_tasks_[id] = item;
|
||||||
|
@ -100,6 +100,7 @@ class AlbumCoverManager : public QMainWindow {
|
|||||||
Role_AlbumName,
|
Role_AlbumName,
|
||||||
Role_PathAutomatic,
|
Role_PathAutomatic,
|
||||||
Role_PathManual,
|
Role_PathManual,
|
||||||
|
Role_FirstFilename,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum HideCovers {
|
enum HideCovers {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user