コード例 #1
0
ファイル: application.cpp プロジェクト: Aceler/Clementine
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()));
}
コード例 #2
0
  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
        }) {
  }