Refactoring

This commit is contained in:
Jonas Kvinge
2024-10-22 18:12:33 +02:00
parent dfcf715291
commit 8da2b9cd94
623 changed files with 9071 additions and 5126 deletions

View File

@@ -42,15 +42,13 @@
#include <QSettings>
#include <QMessageBox>
#include "core/shared_ptr.h"
#include "core/application.h"
#include "core/player.h"
#include "includes/shared_ptr.h"
#include "core/settings.h"
#include "utilities/filenameconstants.h"
#include "constants/filenameconstants.h"
#include "utilities/timeutils.h"
#include "collection/collectionbackend.h"
#include "covermanager/currentalbumcoverloader.h"
#include "settings/playlistsettingspage.h"
#include "constants/playlistsettings.h"
#include "playlist.h"
#include "playlistbackend.h"
#include "playlistcontainer.h"
@@ -65,11 +63,20 @@ using namespace Qt::Literals::StringLiterals;
class ParserBase;
PlaylistManager::PlaylistManager(Application *app, QObject *parent)
: PlaylistManagerInterface(app, parent),
app_(app),
playlist_backend_(nullptr),
collection_backend_(nullptr),
PlaylistManager::PlaylistManager(const SharedPtr<TaskManager> task_manager,
const SharedPtr<TagReaderClient> tagreader_client,
const SharedPtr<UrlHandlers> url_handlers,
const SharedPtr<PlaylistBackend> playlist_backend,
const SharedPtr<CollectionBackend> collection_backend,
const SharedPtr<CurrentAlbumCoverLoader> current_albumcover_loader,
QObject *parent)
: PlaylistManagerInterface(parent),
task_manager_(task_manager),
tagreader_client_(tagreader_client),
url_handlers_(url_handlers),
playlist_backend_(playlist_backend),
collection_backend_(collection_backend),
current_albumcover_loader_(current_albumcover_loader),
sequence_(nullptr),
parser_(nullptr),
playlist_container_(nullptr),
@@ -79,10 +86,6 @@ PlaylistManager::PlaylistManager(Application *app, QObject *parent)
setObjectName(QLatin1String(metaObject()->className()));
QObject::connect(&*app_->player(), &Player::Paused, this, &PlaylistManager::SetActivePaused);
QObject::connect(&*app_->player(), &Player::Playing, this, &PlaylistManager::SetActivePlaying);
QObject::connect(&*app_->player(), &Player::Stopped, this, &PlaylistManager::SetActiveStopped);
}
PlaylistManager::~PlaylistManager() {
@@ -92,21 +95,20 @@ PlaylistManager::~PlaylistManager() {
}
void PlaylistManager::Init(SharedPtr<CollectionBackend> collection_backend, SharedPtr<PlaylistBackend> playlist_backend, PlaylistSequence *sequence, PlaylistContainer *playlist_container) {
void PlaylistManager::Init(PlaylistSequence *sequence, PlaylistContainer *playlist_container) {
collection_backend_ = collection_backend;
playlist_backend_ = playlist_backend;
sequence_ = sequence;
parser_ = new PlaylistParser(collection_backend, this);
playlist_container_ = playlist_container;
parser_ = new PlaylistParser(tagreader_client_, collection_backend_, this);
QObject::connect(&*collection_backend_, &CollectionBackend::SongsChanged, this, &PlaylistManager::UpdateCollectionSongs);
QObject::connect(&*collection_backend_, &CollectionBackend::SongsStatisticsChanged, this, &PlaylistManager::UpdateCollectionSongs);
QObject::connect(&*collection_backend_, &CollectionBackend::SongsRatingChanged, this, &PlaylistManager::UpdateCollectionSongs);
QObject::connect(parser_, &PlaylistParser::Error, this, &PlaylistManager::Error);
const PlaylistBackend::PlaylistList playlists = playlist_backend->GetAllOpenPlaylists();
const PlaylistBackend::PlaylistList playlists = playlist_backend_->GetAllOpenPlaylists();
for (const PlaylistBackend::Playlist &p : playlists) {
++playlists_loading_;
Playlist *ret = AddPlaylist(p.id, p.name, p.special_type, p.ui_path, p.favorite);
@@ -153,7 +155,7 @@ QItemSelection PlaylistManager::selection(const int id) const {
Playlist *PlaylistManager::AddPlaylist(const int id, const QString &name, const QString &special_type, const QString &ui_path, const bool favorite) {
Playlist *ret = new Playlist(playlist_backend_, app_->task_manager(), collection_backend_, id, special_type, favorite);
Playlist *ret = new Playlist(task_manager_, url_handlers_, playlist_backend_, collection_backend_, tagreader_client_, id, special_type, favorite);
ret->set_sequence(sequence_);
ret->set_ui_path(ui_path);
@@ -165,7 +167,7 @@ Playlist *PlaylistManager::AddPlaylist(const int id, const QString &name, const
QObject::connect(ret, &Playlist::Error, this, &PlaylistManager::Error);
QObject::connect(ret, &Playlist::PlayRequested, this, &PlaylistManager::PlayRequested);
QObject::connect(playlist_container_->view(), &PlaylistView::ColumnAlignmentChanged, ret, &Playlist::SetColumnAlignment);
QObject::connect(&*app_->current_albumcover_loader(), &CurrentAlbumCoverLoader::AlbumCoverLoaded, ret, &Playlist::AlbumCoverLoaded);
QObject::connect(&*current_albumcover_loader_, &CurrentAlbumCoverLoader::AlbumCoverLoaded, ret, &Playlist::AlbumCoverLoaded);
playlists_[id] = Data(ret, name);
@@ -219,7 +221,7 @@ void PlaylistManager::Load(const QString &filename) {
}
void PlaylistManager::Save(const int id, const QString &filename, const PlaylistSettingsPage::PathType path_type) {
void PlaylistManager::Save(const int id, const QString &filename, const PlaylistSettings::PathType path_type) {
if (playlists_.contains(id)) {
parser_->Save(playlist(id)->GetAllSongs(), filename, path_type);
@@ -237,7 +239,7 @@ void PlaylistManager::Save(const int id, const QString &filename, const Playlist
}
void PlaylistManager::ItemsLoadedForSavePlaylist(const SongList &songs, const QString &filename, const PlaylistSettingsPage::PathType path_type) {
void PlaylistManager::ItemsLoadedForSavePlaylist(const SongList &songs, const QString &filename, const PlaylistSettings::PathType path_type) {
parser_->Save(songs, filename, path_type);
@@ -246,10 +248,10 @@ void PlaylistManager::ItemsLoadedForSavePlaylist(const SongList &songs, const QS
void PlaylistManager::SaveWithUI(const int id, const QString &playlist_name) {
Settings s;
s.beginGroup(Playlist::kSettingsGroup);
QString last_save_filter = s.value("last_save_filter", parser()->default_filter()).toString();
QString last_save_path = s.value("last_save_path", QDir::homePath()).toString();
QString last_save_extension = s.value("last_save_extension", parser()->default_extension()).toString();
s.beginGroup(PlaylistSettings::kSettingsGroup);
QString last_save_filter = s.value(PlaylistSettings::kLastSaveFilter, parser()->default_filter()).toString();
QString last_save_path = s.value(PlaylistSettings::kLastSavePath, QDir::homePath()).toString();
QString last_save_extension = s.value(PlaylistSettings::kLastSaveExtension, parser()->default_extension()).toString();
s.endGroup();
QString suggested_filename = playlist_name;
@@ -265,20 +267,20 @@ void PlaylistManager::SaveWithUI(const int id, const QString &playlist_name) {
QMessageBox::warning(nullptr, tr("Unknown playlist extension"), tr("Unknown file extension for playlist."));
}
s.beginGroup(PlaylistSettingsPage::kSettingsGroup);
PlaylistSettingsPage::PathType path_type = static_cast<PlaylistSettingsPage::PathType>(s.value("path_type", static_cast<int>(PlaylistSettingsPage::PathType::Automatic)).toInt());
s.beginGroup(PlaylistSettings::kSettingsGroup);
PlaylistSettings::PathType path_type = static_cast<PlaylistSettings::PathType>(s.value(PlaylistSettings::kPathType, static_cast<int>(PlaylistSettings::PathType::Automatic)).toInt());
s.endGroup();
if (path_type == PlaylistSettingsPage::PathType::Ask_User) {
if (path_type == PlaylistSettings::PathType::Ask_User) {
PlaylistSaveOptionsDialog optionsdialog;
optionsdialog.setModal(true);
if (optionsdialog.exec() != QDialog::Accepted) return;
path_type = optionsdialog.path_type();
}
s.beginGroup(Playlist::kSettingsGroup);
s.setValue("last_save_filter", last_save_filter);
s.setValue("last_save_path", fileinfo.path());
s.setValue("last_save_extension", fileinfo.suffix());
s.beginGroup(PlaylistSettings::kSettingsGroup);
s.setValue(PlaylistSettings::kLastSaveFilter, last_save_filter);
s.setValue(PlaylistSettings::kLastSavePath, fileinfo.path());
s.setValue(PlaylistSettings::kLastSaveExtension, fileinfo.suffix());
s.endGroup();
Save(id == -1 ? current_id() : id, filename, path_type);
@@ -541,45 +543,6 @@ void PlaylistManager::RemoveDeletedSongs() {
}
QString PlaylistManager::GetNameForNewPlaylist(const SongList &songs) {
if (songs.isEmpty()) {
return tr("Playlist");
}
QSet<QString> artists;
QSet<QString> albums;
artists.reserve(songs.count());
albums.reserve(songs.count());
for (const Song &song : songs) {
artists << (song.effective_albumartist().isEmpty() ? tr("Unknown") : song.effective_albumartist());
albums << (song.album().isEmpty() ? tr("Unknown") : song.album());
if (artists.size() > 1) {
break;
}
}
bool various_artists = artists.size() > 1;
QString result;
if (various_artists) {
result = tr("Various artists");
}
else {
QStringList artist_names = artists.values();
result = artist_names.first();
}
if (!various_artists && albums.size() == 1) {
QStringList album_names = albums.values();
result += " - "_L1 + album_names.first();
}
return result;
}
void PlaylistManager::Open(const int id) {
if (playlists_.contains(id)) {
@@ -642,10 +605,10 @@ void PlaylistManager::SaveAllPlaylists() {
if (extension.isEmpty()) extension = parser()->default_extension();
Settings s;
s.beginGroup(PlaylistSettingsPage::kSettingsGroup);
PlaylistSettingsPage::PathType path_type = static_cast<PlaylistSettingsPage::PathType>(s.value("path_type", static_cast<int>(PlaylistSettingsPage::PathType::Automatic)).toInt());
s.beginGroup(PlaylistSettings::kSettingsGroup);
PlaylistSettings::PathType path_type = static_cast<PlaylistSettings::PathType>(s.value(PlaylistSettings::kPathType, static_cast<int>(PlaylistSettings::PathType::Automatic)).toInt());
s.endGroup();
if (path_type == PlaylistSettingsPage::PathType::Ask_User) {
if (path_type == PlaylistSettings::PathType::Ask_User) {
PlaylistSaveOptionsDialog optionsdialog;
optionsdialog.setModal(true);
if (optionsdialog.exec() != QDialog::Accepted) return;