Application::Application(QObject* parent) : QObject(parent), tag_reader_client_(nullptr), database_(nullptr), album_cover_loader_(nullptr), playlist_backend_(nullptr), podcast_backend_(nullptr), appearance_(nullptr), cover_providers_(nullptr), task_manager_(nullptr), player_(nullptr), playlist_manager_(nullptr), current_art_loader_(nullptr), global_search_(nullptr), internet_model_(nullptr), library_(nullptr), device_manager_(nullptr), podcast_updater_(nullptr), podcast_deleter_(nullptr), podcast_downloader_(nullptr), gpodder_sync_(nullptr), moodbar_loader_(nullptr), moodbar_controller_(nullptr), network_remote_(nullptr), network_remote_helper_(nullptr), scrobbler_(nullptr) { tag_reader_client_ = new TagReaderClient(this); MoveToNewThread(tag_reader_client_); tag_reader_client_->Start(); database_ = new Database(this, this); MoveToNewThread(database_); album_cover_loader_ = new AlbumCoverLoader(this); MoveToNewThread(album_cover_loader_); playlist_backend_ = new PlaylistBackend(this, this); MoveToThread(playlist_backend_, database_->thread()); podcast_backend_ = new PodcastBackend(this, this); MoveToThread(podcast_backend_, database_->thread()); appearance_ = new Appearance(this); cover_providers_ = new CoverProviders(this); task_manager_ = new TaskManager(this); player_ = new Player(this, this); playlist_manager_ = new PlaylistManager(this, this); current_art_loader_ = new CurrentArtLoader(this, this); global_search_ = new GlobalSearch(this, this); internet_model_ = new InternetModel(this, this); library_ = new Library(this, this); device_manager_ = new DeviceManager(this, this); podcast_updater_ = new PodcastUpdater(this, this); podcast_deleter_ = new PodcastDeleter(this, this); MoveToNewThread(podcast_deleter_); podcast_downloader_ = new PodcastDownloader(this, this); gpodder_sync_ = new GPodderSync(this, this); #ifdef HAVE_MOODBAR moodbar_loader_ = new MoodbarLoader(this, this); moodbar_controller_ = new MoodbarController(this, this); #endif // Network Remote network_remote_ = new NetworkRemote(this); MoveToNewThread(network_remote_); // This must be before libraray_->Init(); // In the constructor the helper waits for the signal // PlaylistManagerInitialized // to start the remote. Without the playlist manager clementine can // crash when a client connects before the manager is initialized! network_remote_helper_ = new NetworkRemoteHelper(this); #ifdef HAVE_LIBLASTFM scrobbler_ = new LastFMService(this, this); #endif // HAVE_LIBLASTFM library_->Init(); DoInAMinuteOrSo(database_, SLOT(DoBackup())); }
ApplicationImpl(Application* app) : tag_reader_client_([=]() { TagReaderClient* client = new TagReaderClient(app); app->MoveToNewThread(client); client->Start(); return client; }), database_([=]() { Database* db = new Database(app, app); app->MoveToNewThread(db); DoInAMinuteOrSo(db, SLOT(DoBackup())); return db; }), album_cover_loader_([=]() { AlbumCoverLoader* loader = new AlbumCoverLoader(app); app->MoveToNewThread(loader); return loader; }), playlist_backend_([=]() { PlaylistBackend* backend = new PlaylistBackend(app, app); app->MoveToThread(backend, database_->thread()); return backend; }), podcast_backend_([=]() { PodcastBackend* backend = new PodcastBackend(app, app); app->MoveToThread(backend, database_->thread()); return backend; }), appearance_([=]() { return new Appearance(app); }), cover_providers_([=]() { CoverProviders* cover_providers = new CoverProviders(app); // Initialize the repository of cover providers. cover_providers->AddProvider(new MusicbrainzCoverProvider); #ifdef HAVE_LIBLASTFM cover_providers->AddProvider(new LastFmCoverProvider(app)); #endif return cover_providers; }), task_manager_([=]() { return new TaskManager(app); }), player_([=]() { return new Player(app, app); }), playlist_manager_([=]() { return new PlaylistManager(app); }), current_art_loader_([=]() { return new CurrentArtLoader(app, app); }), global_search_([=]() { return new GlobalSearch(app, app); }), internet_model_([=]() { return new InternetModel(app, app); }), library_([=]() { return new Library(app, app); }), device_manager_([=]() { return new DeviceManager(app, app); }), podcast_updater_([=]() { return new PodcastUpdater(app, app); }), podcast_deleter_([=]() { PodcastDeleter* deleter = new PodcastDeleter(app, app); app->MoveToNewThread(deleter); return deleter; }), podcast_downloader_([=]() { return new PodcastDownloader(app, app); }), gpodder_sync_([=]() { return new GPodderSync(app, app); }), moodbar_loader_([=]() { #ifdef HAVE_MOODBAR return new MoodbarLoader(app, app); #else return nullptr; #endif }), moodbar_controller_([=]() { #ifdef HAVE_MOODBAR return new MoodbarController(app, app); #else return nullptr; #endif }), network_remote_([=]() { NetworkRemote* remote = new NetworkRemote(app); app->MoveToNewThread(remote); return remote; }), network_remote_helper_([=]() { return new NetworkRemoteHelper(app); }), scrobbler_([=]() { #ifdef HAVE_LIBLASTFM return new LastFMService(app, app); #else return nullptr; #endif }) { }