AlbumCoverLoader: Fix loading existing album covers from disk
This commit is contained in:
parent
b9c7510946
commit
5f4d6dffef
@ -227,7 +227,7 @@ void AlbumCoverLoader::FinishTask(TaskPtr task, const AlbumCoverLoaderResult::Ty
|
||||
}
|
||||
}
|
||||
|
||||
emit AlbumCoverLoaded(task->id, AlbumCoverLoaderResult(task->success, task->result_type, task->album_cover, image_scaled, task->art_updated));
|
||||
emit AlbumCoverLoaded(task->id, AlbumCoverLoaderResult(task->success, task->result_type, task->album_cover, image_scaled, task->art_manual_updated, task->art_automatic_updated));
|
||||
|
||||
}
|
||||
|
||||
@ -237,13 +237,13 @@ void AlbumCoverLoader::InitArt(TaskPtr task) {
|
||||
if (task->song.is_valid() && (task->song.source() == Song::Source::LocalFile || task->song.is_radio()) && !task->song.art_manual_is_valid() && !task->song.art_automatic_is_valid()) {
|
||||
task->song.InitArtManual();
|
||||
if (task->song.art_manual_is_valid()) {
|
||||
task->art_updated = true;
|
||||
task->art_manual_updated = task->song.art_manual();
|
||||
task->art_manual = task->song.art_manual();
|
||||
}
|
||||
if (task->song.url().isLocalFile()) {
|
||||
task->song.InitArtAutomatic();
|
||||
if (task->song.art_automatic_is_valid()) {
|
||||
task->art_updated = true;
|
||||
task->art_automatic_updated = task->song.art_automatic();
|
||||
task->art_automatic = task->song.art_automatic();
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ class AlbumCoverLoader : public QObject {
|
||||
private:
|
||||
class Task {
|
||||
public:
|
||||
explicit Task() : id(0), success(false), art_embedded(false), art_unset(false), result_type(AlbumCoverLoaderResult::Type::None), art_updated(false), redirects(0) {}
|
||||
explicit Task() : id(0), success(false), art_embedded(false), art_unset(false), song_source(Song::Source::Unknown), result_type(AlbumCoverLoaderResult::Type::None), redirects(0) {}
|
||||
|
||||
quint64 id;
|
||||
bool success;
|
||||
@ -90,7 +90,8 @@ class AlbumCoverLoader : public QObject {
|
||||
Song song;
|
||||
AlbumCoverImageResult album_cover;
|
||||
AlbumCoverLoaderResult::Type result_type;
|
||||
bool art_updated;
|
||||
QUrl art_manual_updated;
|
||||
QUrl art_automatic_updated;
|
||||
int redirects;
|
||||
};
|
||||
using TaskPtr = shared_ptr<Task>;
|
||||
@ -110,7 +111,6 @@ class AlbumCoverLoader : public QObject {
|
||||
private:
|
||||
quint64 EnqueueTask(TaskPtr task);
|
||||
void ProcessTask(TaskPtr task);
|
||||
void NextState(TaskPtr task);
|
||||
void InitArt(TaskPtr task);
|
||||
LoadImageResult LoadImage(TaskPtr task, const AlbumCoverLoaderOptions::Type &type);
|
||||
LoadImageResult LoadEmbeddedImage(TaskPtr task);
|
||||
|
@ -42,21 +42,21 @@ class AlbumCoverLoaderResult {
|
||||
const Type _type = Type::None,
|
||||
AlbumCoverImageResult _album_cover = AlbumCoverImageResult(),
|
||||
const QImage &_image_scaled = QImage(),
|
||||
const bool _remote_cover = false,
|
||||
const bool _updated = false) :
|
||||
const QUrl _art_manual_updated = QUrl(),
|
||||
const QUrl _art_automatic_updated = QUrl()) :
|
||||
success(_success),
|
||||
type(_type),
|
||||
album_cover(_album_cover),
|
||||
image_scaled(_image_scaled),
|
||||
remote_cover(_remote_cover),
|
||||
updated(_updated) {}
|
||||
art_manual_updated(_art_manual_updated),
|
||||
art_automatic_updated(_art_automatic_updated) {}
|
||||
|
||||
bool success;
|
||||
Type type;
|
||||
AlbumCoverImageResult album_cover;
|
||||
QImage image_scaled;
|
||||
bool remote_cover;
|
||||
bool updated;
|
||||
QUrl art_manual_updated;
|
||||
QUrl art_automatic_updated;
|
||||
|
||||
QUrl temp_cover_url;
|
||||
};
|
||||
|
@ -46,8 +46,8 @@ CurrentAlbumCoverLoader::CurrentAlbumCoverLoader(Application *app, QObject *pare
|
||||
options_.desired_scaled_size = QSize(120, 120);
|
||||
options_.default_cover = ":/pictures/cdcase.png";
|
||||
|
||||
QObject::connect(app_->album_cover_loader(), &AlbumCoverLoader::AlbumCoverLoaded, this, &CurrentAlbumCoverLoader::TempAlbumCoverLoaded);
|
||||
QObject::connect(app_->playlist_manager(), &PlaylistManager::CurrentSongChanged, this, &CurrentAlbumCoverLoader::LoadAlbumCover);
|
||||
QObject::connect(app_->album_cover_loader(), &AlbumCoverLoader::AlbumCoverLoaded, this, &CurrentAlbumCoverLoader::AlbumCoverReady);
|
||||
|
||||
ReloadSettingsAsync();
|
||||
|
||||
@ -79,7 +79,7 @@ void CurrentAlbumCoverLoader::LoadAlbumCover(const Song &song) {
|
||||
|
||||
}
|
||||
|
||||
void CurrentAlbumCoverLoader::TempAlbumCoverLoaded(const quint64 id, AlbumCoverLoaderResult result) {
|
||||
void CurrentAlbumCoverLoader::AlbumCoverReady(const quint64 id, AlbumCoverLoaderResult result) {
|
||||
|
||||
if (id != id_) return;
|
||||
id_ = 0;
|
||||
@ -117,8 +117,11 @@ void CurrentAlbumCoverLoader::TempAlbumCoverLoaded(const quint64 id, AlbumCoverL
|
||||
}
|
||||
}
|
||||
|
||||
if (result.updated) {
|
||||
last_song_.set_art_manual(result.album_cover.cover_url);
|
||||
if (result.art_manual_updated.isValid()) {
|
||||
last_song_.set_art_manual(result.art_manual_updated);
|
||||
}
|
||||
if (result.art_automatic_updated.isValid()) {
|
||||
last_song_.set_art_automatic(result.art_automatic_updated);
|
||||
}
|
||||
|
||||
emit AlbumCoverLoaded(last_song_, result);
|
||||
|
@ -59,7 +59,7 @@ class CurrentAlbumCoverLoader : public QObject {
|
||||
void ThumbnailLoaded(const Song &song, const QUrl &thumbnail_uri, const QImage &image);
|
||||
|
||||
private slots:
|
||||
void TempAlbumCoverLoaded(const quint64 id, AlbumCoverLoaderResult result);
|
||||
void AlbumCoverReady(const quint64 id, AlbumCoverLoaderResult result);
|
||||
|
||||
private:
|
||||
Application *app_;
|
||||
|
Loading…
x
Reference in New Issue
Block a user