Show embedded cover art in the album cover manager too, but only for the first file in an album

This commit is contained in:
David Sansome 2010-07-19 18:08:25 +00:00
parent f64cdb23e9
commit 0d0f1521f2
4 changed files with 14 additions and 6 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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 {