diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index fbd069249..6bd284d70 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -1314,13 +1314,15 @@ void MainWindow::SongChanged(const Song &song) { SendNowPlaying(); - const bool enable_cover_options = song.is_collection_song() && !song.effective_albumartist().isEmpty() && !song.album().isEmpty(); - album_cover_choice_controller_->cover_from_file_action()->setEnabled(enable_cover_options); - album_cover_choice_controller_->cover_from_url_action()->setEnabled(enable_cover_options); - album_cover_choice_controller_->search_for_cover_action()->setEnabled(enable_cover_options); - album_cover_choice_controller_->unset_cover_action()->setEnabled(enable_cover_options); - album_cover_choice_controller_->delete_cover_action()->setEnabled(enable_cover_options); - album_cover_choice_controller_->clear_cover_action()->setEnabled(enable_cover_options); + const bool enable_change_art = song.is_collection_song() && !song.effective_albumartist().isEmpty() && !song.album().isEmpty(); + album_cover_choice_controller_->show_cover_action()->setEnabled(song.has_valid_art() && !song.has_manually_unset_cover()); + album_cover_choice_controller_->cover_to_file_action()->setEnabled(song.has_valid_art() && !song.has_manually_unset_cover()); + album_cover_choice_controller_->cover_from_file_action()->setEnabled(enable_change_art); + album_cover_choice_controller_->cover_from_url_action()->setEnabled(enable_change_art); + album_cover_choice_controller_->search_for_cover_action()->setEnabled(app_->cover_providers()->HasAnyProviders() && enable_change_art); + album_cover_choice_controller_->unset_cover_action()->setEnabled(enable_change_art && !song.has_manually_unset_cover()); + album_cover_choice_controller_->clear_cover_action()->setEnabled(enable_change_art && !song.art_manual().isEmpty()); + album_cover_choice_controller_->delete_cover_action()->setEnabled(enable_change_art && song.has_valid_art() && !song.has_manually_unset_cover()); } @@ -2958,6 +2960,16 @@ void MainWindow::AlbumCoverLoaded(const Song &song, const AlbumCoverLoaderResult emit AlbumCoverReady(song, result.album_cover.image); + const bool enable_change_art = song.is_collection_song() && !song.effective_albumartist().isEmpty() && !song.album().isEmpty(); + album_cover_choice_controller_->show_cover_action()->setEnabled(result.success && result.type != AlbumCoverLoaderResult::Type_ManuallyUnset); + album_cover_choice_controller_->cover_to_file_action()->setEnabled(result.success && result.type != AlbumCoverLoaderResult::Type_ManuallyUnset); + album_cover_choice_controller_->cover_from_file_action()->setEnabled(enable_change_art); + album_cover_choice_controller_->cover_from_url_action()->setEnabled(enable_change_art); + album_cover_choice_controller_->search_for_cover_action()->setEnabled(app_->cover_providers()->HasAnyProviders() && enable_change_art); + album_cover_choice_controller_->unset_cover_action()->setEnabled(enable_change_art && !song.has_manually_unset_cover()); + album_cover_choice_controller_->clear_cover_action()->setEnabled(enable_change_art && !song.art_manual().isEmpty()); + album_cover_choice_controller_->delete_cover_action()->setEnabled(enable_change_art && result.success && result.type != AlbumCoverLoaderResult::Type_ManuallyUnset); + GetCoverAutomatically(); }