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;
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");
if (compilation) {
@ -626,6 +627,7 @@ LibraryBackend::AlbumList LibraryBackend::GetAlbums(const QString& artist,
info.album_name = query.Value(0).toString();
info.art_automatic = query.Value(4).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)
continue;
@ -645,16 +647,17 @@ LibraryBackend::Album LibraryBackend::GetAlbumArt(const QString& artist, const Q
ret.artist = artist;
LibraryQuery query = LibraryQuery(QueryOptions());
query.SetColumnSpec("art_automatic, art_manual");
query.SetColumnSpec("art_automatic, art_manual, filename");
query.AddWhere("artist", artist);
query.AddWhere("album", album);
QMutexLocker l(db_->Mutex());
if (!ExecQuery(&query)) return ret;
if (!ExecQuery(&query)) return ret;
if (query.Next()) {
ret.art_automatic = query.Value(0).toString();
ret.art_manual = query.Value(1).toString();
ret.first_filename = query.Value(2).toString();
}
return ret;

View File

@ -42,15 +42,18 @@ class LibraryBackend : public QObject {
struct Album {
Album() {}
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),
art_automatic(_art_automatic), art_manual(_art_manual) {}
art_automatic(_art_automatic), art_manual(_art_manual),
first_filename(_first_filename) {}
QString artist;
QString album_name;
QString art_automatic;
QString art_manual;
QString first_filename;
};
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);
item->setData(Role_ArtistName, info.artist);
item->setData(Role_AlbumName, info.album_name);
item->setData(Role_FirstFilename, info.first_filename);
item->setData(Qt::TextAlignmentRole, QVariant(Qt::AlignTop | Qt::AlignHCenter));
item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled);
if (!info.art_automatic.isEmpty() || !info.art_manual.isEmpty()) {
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_PathManual, info.art_manual);
cover_loading_tasks_[id] = item;

View File

@ -100,6 +100,7 @@ class AlbumCoverManager : public QMainWindow {
Role_AlbumName,
Role_PathAutomatic,
Role_PathManual,
Role_FirstFilename,
};
enum HideCovers {