Use one instance of NetworkAccessManager

This commit is contained in:
Jonas Kvinge
2023-04-21 20:20:53 +02:00
parent bee6b7f946
commit 7fc5aef553
53 changed files with 270 additions and 311 deletions

View File

@@ -38,6 +38,7 @@
#include "database.h"
#include "taskmanager.h"
#include "player.h"
#include "networkaccessmanager.h"
#include "engine/devicefinders.h"
#ifndef Q_OS_WIN
@@ -66,7 +67,13 @@
#include "lyrics/lyricscomlyricsprovider.h"
#include "scrobbler/audioscrobbler.h"
#include "scrobbler/lastfmscrobbler.h"
#include "scrobbler/librefmscrobbler.h"
#include "scrobbler/listenbrainzscrobbler.h"
#include "scrobbler/lastfmimport.h"
#ifdef HAVE_SUBSONIC
# include "scrobbler/subsonicscrobbler.h"
#endif
#include "internet/internetservices.h"
@@ -111,6 +118,7 @@ class ApplicationImpl {
}),
task_manager_([app]() { return new TaskManager(app); }),
player_([app]() { return new Player(app, app); }),
network_([app]() { return new NetworkAccessManager(app); }),
device_finders_([app]() { return new DeviceFinders(app); }),
#ifndef Q_OS_WIN
device_manager_([app]() { return new DeviceManager(app, app); }),
@@ -125,23 +133,23 @@ class ApplicationImpl {
cover_providers_([app]() {
CoverProviders *cover_providers = new CoverProviders(app);
// Initialize the repository of cover providers.
cover_providers->AddProvider(new LastFmCoverProvider(app, cover_providers->network(), app));
cover_providers->AddProvider(new MusicbrainzCoverProvider(app, cover_providers->network(), app));
cover_providers->AddProvider(new DiscogsCoverProvider(app, cover_providers->network(), app));
cover_providers->AddProvider(new DeezerCoverProvider(app, cover_providers->network(), app));
cover_providers->AddProvider(new MusixmatchCoverProvider(app, cover_providers->network(), app));
cover_providers->AddProvider(new SpotifyCoverProvider(app, cover_providers->network(), app));
cover_providers->AddProvider(new LastFmCoverProvider(app, app->network(), app));
cover_providers->AddProvider(new MusicbrainzCoverProvider(app, app->network(), app));
cover_providers->AddProvider(new DiscogsCoverProvider(app, app->network(), app));
cover_providers->AddProvider(new DeezerCoverProvider(app, app->network(), app));
cover_providers->AddProvider(new MusixmatchCoverProvider(app, app->network(), app));
cover_providers->AddProvider(new SpotifyCoverProvider(app, app->network(), app));
#ifdef HAVE_TIDAL
cover_providers->AddProvider(new TidalCoverProvider(app, cover_providers->network(), app));
cover_providers->AddProvider(new TidalCoverProvider(app, app->network(), app));
#endif
#ifdef HAVE_QOBUZ
cover_providers->AddProvider(new QobuzCoverProvider(app, cover_providers->network(), app));
cover_providers->AddProvider(new QobuzCoverProvider(app, app->network(), app));
#endif
cover_providers->ReloadSettings();
return cover_providers;
}),
album_cover_loader_([app]() {
AlbumCoverLoader *loader = new AlbumCoverLoader(app);
AlbumCoverLoader *loader = new AlbumCoverLoader(app->network(), app);
app->MoveToNewThread(loader);
return loader;
}),
@@ -149,13 +157,13 @@ class ApplicationImpl {
lyrics_providers_([app]() {
LyricsProviders *lyrics_providers = new LyricsProviders(app);
// Initialize the repository of lyrics providers.
lyrics_providers->AddProvider(new AuddLyricsProvider(lyrics_providers->network(), app));
lyrics_providers->AddProvider(new GeniusLyricsProvider(lyrics_providers->network(), app));
lyrics_providers->AddProvider(new OVHLyricsProvider(lyrics_providers->network(), app));
lyrics_providers->AddProvider(new LoloLyricsProvider(lyrics_providers->network(), app));
lyrics_providers->AddProvider(new MusixmatchLyricsProvider(lyrics_providers->network(), app));
lyrics_providers->AddProvider(new ChartLyricsProvider(lyrics_providers->network(), app));
lyrics_providers->AddProvider(new LyricsComLyricsProvider(lyrics_providers->network(), app));
lyrics_providers->AddProvider(new AuddLyricsProvider(app->network(), app));
lyrics_providers->AddProvider(new GeniusLyricsProvider(app->network(), app));
lyrics_providers->AddProvider(new OVHLyricsProvider(app->network(), app));
lyrics_providers->AddProvider(new LoloLyricsProvider(app->network(), app));
lyrics_providers->AddProvider(new MusixmatchLyricsProvider(app->network(), app));
lyrics_providers->AddProvider(new ChartLyricsProvider(app->network(), app));
lyrics_providers->AddProvider(new LyricsComLyricsProvider(app->network(), app));
lyrics_providers->ReloadSettings();
return lyrics_providers;
}),
@@ -173,18 +181,25 @@ class ApplicationImpl {
return internet_services;
}),
radio_services_([app]() { return new RadioServices(app, app); }),
scrobbler_([app]() { return new AudioScrobbler(app, app); }),
scrobbler_([app]() {
AudioScrobbler *scrobbler = new AudioScrobbler(app);
scrobbler->AddService(new LastFMScrobbler(scrobbler, app->network(), app));
scrobbler->AddService(new LibreFMScrobbler(scrobbler, app->network(), app));
scrobbler->AddService(new ListenBrainzScrobbler(scrobbler, app->network(), app));
return scrobbler;
}),
#ifdef HAVE_MOODBAR
moodbar_loader_([app]() { return new MoodbarLoader(app, app); }),
moodbar_controller_([app]() { return new MoodbarController(app, app); }),
#endif
lastfm_import_([app]() { return new LastFMImport(app); })
lastfm_import_([app]() { return new LastFMImport(app->network(), app); })
{}
Lazy<TagReaderClient> tag_reader_client_;
Lazy<Database> database_;
Lazy<TaskManager> task_manager_;
Lazy<Player> player_;
Lazy<NetworkAccessManager> network_;
Lazy<DeviceFinders> device_finders_;
#ifndef Q_OS_WIN
Lazy<DeviceManager> device_manager_;
@@ -317,6 +332,7 @@ TagReaderClient *Application::tag_reader_client() const { return p_->tag_reader_
Database *Application::database() const { return p_->database_.get(); }
TaskManager *Application::task_manager() const { return p_->task_manager_.get(); }
Player *Application::player() const { return p_->player_.get(); }
NetworkAccessManager *Application::network() const { return p_->network_.get(); }
DeviceFinders *Application::device_finders() const { return p_->device_finders_.get(); }
#ifndef Q_OS_WIN
DeviceManager *Application::device_manager() const { return p_->device_manager_.get(); }

View File

@@ -41,6 +41,7 @@ class TagReaderClient;
class Database;
class DeviceFinders;
class Player;
class NetworkAccessManager;
class SCollection;
class CollectionBackend;
class CollectionModel;
@@ -74,6 +75,7 @@ class Application : public QObject {
Database *database() const;
TaskManager *task_manager() const;
Player *player() const;
NetworkAccessManager *network() const;
DeviceFinders *device_finders() const;
#ifndef Q_OS_WIN
DeviceManager *device_manager() const;

View File

@@ -1024,7 +1024,7 @@ MainWindow::MainWindow(Application *app, std::shared_ptr<SystemTrayIcon> tray_ic
if (!sparkle_url.isEmpty()) {
qLog(Debug) << "Creating Qt Sparkle updater";
qtsparkle::Updater *updater = new qtsparkle::Updater(sparkle_url, this);
updater->SetNetworkAccessManager(new NetworkAccessManager(this));
updater->SetNetworkAccessManager(app->network());
updater->SetVersion(STRAWBERRY_VERSION_PACKAGE);
QObject::connect(check_updates, &QAction::triggered, updater, &qtsparkle::Updater::CheckNow);
}
@@ -2933,7 +2933,7 @@ void MainWindow::AutoCompleteTags() {
// Create the tag fetching stuff if it hasn't been already
if (!tag_fetcher_) {
tag_fetcher_ = std::make_unique<TagFetcher>();
tag_fetcher_ = std::make_unique<TagFetcher>(app_->network());
track_selection_dialog_ = std::make_unique<TrackSelectionDialog>();
track_selection_dialog_->set_save_on_close(true);

View File

@@ -46,6 +46,7 @@
#include "signalchecker.h"
#include "player.h"
#include "networkaccessmanager.h"
#include "song.h"
#include "songloader.h"
#include "tagreaderclient.h"
@@ -66,9 +67,10 @@
QSet<QString> SongLoader::sRawUriSchemes;
const int SongLoader::kDefaultTimeout = 5000;
SongLoader::SongLoader(CollectionBackendInterface *collection, const Player *player, QObject *parent)
SongLoader::SongLoader(CollectionBackendInterface *collection, const Player *player, NetworkAccessManager *network, QObject *parent)
: QObject(parent),
player_(player),
network_(network),
collection_(collection),
timeout_timer_(new QTimer(this)),
playlist_parser_(new PlaylistParser(collection, this)),
@@ -191,7 +193,7 @@ SongLoader::Result SongLoader::LoadAudioCD() {
#if defined(HAVE_AUDIOCD) && defined(HAVE_GSTREAMER)
if (player_->engine()->type() == Engine::EngineType::GStreamer) {
CddaSongLoader *cdda_song_loader = new CddaSongLoader(QUrl(), this);
CddaSongLoader *cdda_song_loader = new CddaSongLoader(QUrl(), network_, this);
QObject::connect(cdda_song_loader, &CddaSongLoader::SongsDurationLoaded, this, &SongLoader::AudioCDTracksLoadFinishedSlot);
QObject::connect(cdda_song_loader, &CddaSongLoader::SongsMetadataLoaded, this, &SongLoader::AudioCDTracksTagsLoaded);
cdda_song_loader->LoadSongs();

View File

@@ -45,6 +45,7 @@
class QTimer;
class Player;
class NetworkAccessManager;
class CollectionBackendInterface;
class PlaylistParser;
class ParserBase;
@@ -58,7 +59,7 @@ class SongLoader : public QObject {
Q_OBJECT
public:
explicit SongLoader(CollectionBackendInterface *collection, const Player *player, QObject *parent = nullptr);
explicit SongLoader(CollectionBackendInterface *collection, const Player *player, NetworkAccessManager *network, QObject *parent = nullptr);
~SongLoader() override;
enum class Result {
@@ -144,6 +145,7 @@ class SongLoader : public QObject {
SongList songs_;
const Player *player_;
NetworkAccessManager *network_;
CollectionBackendInterface *collection_;
QTimer *timeout_timer_;
PlaylistParser *playlist_parser_;