Refactoring
This commit is contained in:
@@ -70,7 +70,6 @@
|
||||
#include <QSettings>
|
||||
#include <QMimeData>
|
||||
|
||||
#include "core/application.h"
|
||||
#include "core/iconloader.h"
|
||||
#include "core/logging.h"
|
||||
#include "core/settings.h"
|
||||
@@ -110,16 +109,28 @@ constexpr int kSmallImageSize = 128;
|
||||
const char EditTagDialog::kTagsDifferentHintText[] = QT_TR_NOOP("(different across multiple songs)");
|
||||
const char EditTagDialog::kArtDifferentHintText[] = QT_TR_NOOP("Different art across multiple songs.");
|
||||
|
||||
EditTagDialog::EditTagDialog(Application *app, QWidget *parent)
|
||||
EditTagDialog::EditTagDialog(const SharedPtr<NetworkAccessManager> network,
|
||||
const SharedPtr<TagReaderClient> tagreader_client,
|
||||
const SharedPtr<CollectionBackend> collection_backend,
|
||||
const SharedPtr<AlbumCoverLoader> albumcover_loader,
|
||||
const SharedPtr<CurrentAlbumCoverLoader> current_albumcover_loader,
|
||||
const SharedPtr<CoverProviders> cover_providers,
|
||||
const SharedPtr<LyricsProviders> lyrics_providers,
|
||||
const SharedPtr<StreamingServices> streaming_services,
|
||||
QWidget *parent)
|
||||
: QDialog(parent),
|
||||
ui_(new Ui_EditTagDialog),
|
||||
app_(app),
|
||||
tagreader_client_(tagreader_client),
|
||||
collection_backend_(collection_backend),
|
||||
albumcover_loader_(albumcover_loader),
|
||||
current_albumcover_loader_(current_albumcover_loader),
|
||||
cover_providers_(cover_providers),
|
||||
album_cover_choice_controller_(new AlbumCoverChoiceController(this)),
|
||||
#ifdef HAVE_MUSICBRAINZ
|
||||
tag_fetcher_(new TagFetcher(app->network(), this)),
|
||||
results_dialog_(new TrackSelectionDialog(this)),
|
||||
tag_fetcher_(new TagFetcher(network, this)),
|
||||
results_dialog_(new TrackSelectionDialog(tagreader_client, this)),
|
||||
#endif
|
||||
lyrics_fetcher_(new LyricsFetcher(app->lyrics_providers(), this)),
|
||||
lyrics_fetcher_(new LyricsFetcher(lyrics_providers, this)),
|
||||
cover_menu_(new QMenu(this)),
|
||||
image_no_cover_thumbnail_(ImageUtils::GenerateNoCoverImage(QSize(128, 128), devicePixelRatioF())),
|
||||
loading_(false),
|
||||
@@ -130,7 +141,7 @@ EditTagDialog::EditTagDialog(Application *app, QWidget *parent)
|
||||
save_tag_pending_(0),
|
||||
lyrics_id_(-1) {
|
||||
|
||||
QObject::connect(&*app_->album_cover_loader(), &AlbumCoverLoader::AlbumCoverLoaded, this, &EditTagDialog::AlbumCoverLoaded);
|
||||
QObject::connect(&*albumcover_loader_, &AlbumCoverLoader::AlbumCoverLoaded, this, &EditTagDialog::AlbumCoverLoaded);
|
||||
|
||||
#ifdef HAVE_MUSICBRAINZ
|
||||
QObject::connect(tag_fetcher_, &TagFetcher::ResultAvailable, results_dialog_, &TrackSelectionDialog::FetchTagFinished, Qt::QueuedConnection);
|
||||
@@ -140,7 +151,7 @@ EditTagDialog::EditTagDialog(Application *app, QWidget *parent)
|
||||
#endif
|
||||
QObject::connect(lyrics_fetcher_, &LyricsFetcher::LyricsFetched, this, &EditTagDialog::UpdateLyrics);
|
||||
|
||||
album_cover_choice_controller_->Init(app_);
|
||||
album_cover_choice_controller_->Init(network, tagreader_client, collection_backend, albumcover_loader, current_albumcover_loader, cover_providers, streaming_services);
|
||||
|
||||
ui_->setupUi(this);
|
||||
ui_->splitter->setSizes(QList<int>() << 200 << width() - 200);
|
||||
@@ -259,13 +270,13 @@ EditTagDialog::EditTagDialog(Application *app, QWidget *parent)
|
||||
QKeySequence(QKeySequence::Forward).toString(QKeySequence::NativeText),
|
||||
QKeySequence(QKeySequence::MoveToNextPage).toString(QKeySequence::NativeText)));
|
||||
|
||||
new TagCompleter(app_->collection_backend(), Playlist::Column::Artist, ui_->artist);
|
||||
new TagCompleter(app_->collection_backend(), Playlist::Column::Album, ui_->album);
|
||||
new TagCompleter(app_->collection_backend(), Playlist::Column::AlbumArtist, ui_->albumartist);
|
||||
new TagCompleter(app_->collection_backend(), Playlist::Column::Genre, ui_->genre);
|
||||
new TagCompleter(app_->collection_backend(), Playlist::Column::Composer, ui_->composer);
|
||||
new TagCompleter(app_->collection_backend(), Playlist::Column::Performer, ui_->performer);
|
||||
new TagCompleter(app_->collection_backend(), Playlist::Column::Grouping, ui_->grouping);
|
||||
new TagCompleter(collection_backend, Playlist::Column::Artist, ui_->artist);
|
||||
new TagCompleter(collection_backend, Playlist::Column::Album, ui_->album);
|
||||
new TagCompleter(collection_backend, Playlist::Column::AlbumArtist, ui_->albumartist);
|
||||
new TagCompleter(collection_backend, Playlist::Column::Genre, ui_->genre);
|
||||
new TagCompleter(collection_backend, Playlist::Column::Composer, ui_->composer);
|
||||
new TagCompleter(collection_backend, Playlist::Column::Performer, ui_->performer);
|
||||
new TagCompleter(collection_backend, Playlist::Column::Grouping, ui_->grouping);
|
||||
|
||||
}
|
||||
|
||||
@@ -393,7 +404,7 @@ bool EditTagDialog::SetLoading(const QString &message) {
|
||||
|
||||
}
|
||||
|
||||
QList<EditTagDialog::Data> EditTagDialog::LoadData(const SongList &songs) {
|
||||
QList<EditTagDialog::Data> EditTagDialog::LoadData(const SongList &songs) const {
|
||||
|
||||
QList<Data> ret;
|
||||
|
||||
@@ -401,7 +412,7 @@ QList<EditTagDialog::Data> EditTagDialog::LoadData(const SongList &songs) {
|
||||
if (song.IsEditable()) {
|
||||
// Try reloading the tags from file
|
||||
Song copy(song);
|
||||
const TagReaderResult result = TagReaderClient::Instance()->ReadFileBlocking(copy.url().toLocalFile(), ©);
|
||||
const TagReaderResult result = tagreader_client_->ReadFileBlocking(copy.url().toLocalFile(), ©);
|
||||
if (result.success() && copy.is_valid()) {
|
||||
copy.MergeUserSetData(song, false, false);
|
||||
ret << Data(copy);
|
||||
@@ -424,7 +435,7 @@ void EditTagDialog::SetSongs(const SongList &s, const PlaylistItemPtrList &items
|
||||
collection_songs_.clear();
|
||||
|
||||
// Reload tags in the background
|
||||
QFuture<QList<Data>> future = QtConcurrent::run(&EditTagDialog::LoadData, s);
|
||||
QFuture<QList<Data>> future = QtConcurrent::run(&EditTagDialog::LoadData, this, s);
|
||||
QFutureWatcher<QList<Data>> *watcher = new QFutureWatcher<QList<Data>>();
|
||||
QObject::connect(watcher, &QFutureWatcher<QList<Data>>::finished, this, &EditTagDialog::SetSongsFinished);
|
||||
watcher->setFuture(future);
|
||||
@@ -725,7 +736,7 @@ void EditTagDialog::SelectionChanged() {
|
||||
album_cover_choice_controller_->cover_to_file_action()->setEnabled(first_song.has_valid_art() && !first_song.art_unset());
|
||||
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_->search_for_cover_action()->setEnabled(cover_providers_->HasAnyProviders() && enable_change_art);
|
||||
album_cover_choice_controller_->unset_cover_action()->setEnabled(enable_change_art && !first_song.art_unset());
|
||||
album_cover_choice_controller_->clear_cover_action()->setEnabled(enable_change_art && (!first_song.art_manual().isEmpty() || first_song.art_unset()));
|
||||
album_cover_choice_controller_->delete_cover_action()->setEnabled(enable_change_art && (first_song.art_embedded() || !first_song.art_automatic().isEmpty() || !first_song.art_manual().isEmpty()));
|
||||
@@ -734,10 +745,10 @@ void EditTagDialog::SelectionChanged() {
|
||||
cover_options.desired_scaled_size = QSize(kSmallImageSize, kSmallImageSize);
|
||||
cover_options.device_pixel_ratio = devicePixelRatioF();
|
||||
if (data_.value(indexes.first().row()).cover_action_ == UpdateCoverAction::None) {
|
||||
tags_cover_art_id_ = app_->album_cover_loader()->LoadImageAsync(cover_options, first_song);
|
||||
tags_cover_art_id_ = albumcover_loader_->LoadImageAsync(cover_options, first_song);
|
||||
}
|
||||
else {
|
||||
tags_cover_art_id_ = app_->album_cover_loader()->LoadImageAsync(cover_options, data_[indexes.first().row()].cover_result_);
|
||||
tags_cover_art_id_ = albumcover_loader_->LoadImageAsync(cover_options, data_[indexes.first().row()].cover_result_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -788,7 +799,7 @@ void EditTagDialog::UpdateSummaryTab(const Song &song) {
|
||||
cover_options.types = cover_types_;
|
||||
cover_options.desired_scaled_size = QSize(kSmallImageSize, kSmallImageSize);
|
||||
cover_options.device_pixel_ratio = devicePixelRatioF();
|
||||
summary_cover_art_id_ = app_->album_cover_loader()->LoadImageAsync(cover_options, song);
|
||||
summary_cover_art_id_ = albumcover_loader_->LoadImageAsync(cover_options, song);
|
||||
|
||||
ui_->summary->setText(u"<p><b>"_s + song.PrettyTitleWithArtist().toHtmlEscaped() + u"</b></p>"_s);
|
||||
|
||||
@@ -1299,7 +1310,7 @@ void EditTagDialog::SaveData() {
|
||||
if (save_embedded_cover) {
|
||||
save_tags_options |= TagReaderClient::SaveOption::Cover;
|
||||
}
|
||||
TagReaderReplyPtr reply = TagReaderClient::Instance()->WriteFileAsync(ref.current_.url().toLocalFile(), ref.current_, save_tags_options, save_tag_cover_data);
|
||||
TagReaderReplyPtr reply = tagreader_client_->WriteFileAsync(ref.current_.url().toLocalFile(), ref.current_, save_tags_options, save_tag_cover_data);
|
||||
QObject::connect(&*reply, &TagReaderReply::Finished, this, [this, reply, ref]() { SongSaveTagsComplete(reply, ref.current_.url().toLocalFile(), ref.current_, ref.cover_action_); }, Qt::QueuedConnection);
|
||||
}
|
||||
// If the cover was changed, but no tags written, make sure to update the collection.
|
||||
@@ -1307,8 +1318,8 @@ void EditTagDialog::SaveData() {
|
||||
if (ref.current_.is_collection_song()) {
|
||||
collection_songs_.insert(ref.current_.id(), ref.current_);
|
||||
}
|
||||
if (ref.current_ == app_->current_albumcover_loader()->last_song()) {
|
||||
app_->current_albumcover_loader()->LoadAlbumCover(ref.current_);
|
||||
if (ref.current_ == current_albumcover_loader_->last_song()) {
|
||||
current_albumcover_loader_->LoadAlbumCover(ref.current_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1321,7 +1332,7 @@ void EditTagDialog::SaveData() {
|
||||
void EditTagDialog::SaveDataFinished() {
|
||||
|
||||
if (!collection_songs_.isEmpty()) {
|
||||
app_->collection_backend()->AddOrUpdateSongsAsync(collection_songs_.values());
|
||||
collection_backend_->AddOrUpdateSongsAsync(collection_songs_.values());
|
||||
collection_songs_.clear();
|
||||
}
|
||||
|
||||
@@ -1483,8 +1494,8 @@ void EditTagDialog::SongSaveTagsComplete(TagReaderReplyPtr reply, const QString
|
||||
}
|
||||
collection_songs_.insert(song.id(), song);
|
||||
}
|
||||
if (cover_action != UpdateCoverAction::None && song == app_->current_albumcover_loader()->last_song()) {
|
||||
app_->current_albumcover_loader()->LoadAlbumCover(song);
|
||||
if (cover_action != UpdateCoverAction::None && song == current_albumcover_loader_->last_song()) {
|
||||
current_albumcover_loader_->LoadAlbumCover(song);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user