diff --git a/src/libtomahawk/infosystem/InfoSystem.h b/src/libtomahawk/infosystem/InfoSystem.h index 6a9e7f527..48c0547ff 100644 --- a/src/libtomahawk/infosystem/InfoSystem.h +++ b/src/libtomahawk/infosystem/InfoSystem.h @@ -214,6 +214,7 @@ signals: void info( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output ); void finished( QString target ); void finished( QString target, Tomahawk::InfoSystem::InfoType type ); + void ready(); void updatedSupportedGetTypes( Tomahawk::InfoSystem::InfoTypeSet supportedTypes ); void updatedSupportedPushTypes( Tomahawk::InfoSystem::InfoTypeSet supportedTypes ); diff --git a/src/libtomahawk/infosystem/InfoSystemWorker.cpp b/src/libtomahawk/infosystem/InfoSystemWorker.cpp index eaaf64765..57debb271 100644 --- a/src/libtomahawk/infosystem/InfoSystemWorker.cpp +++ b/src/libtomahawk/infosystem/InfoSystemWorker.cpp @@ -43,6 +43,7 @@ namespace InfoSystem InfoSystemWorker::InfoSystemWorker() : QObject() + , m_cache( 0 ) { tDebug() << Q_FUNC_INFO; diff --git a/src/tomahawk/TomahawkApp.cpp b/src/tomahawk/TomahawkApp.cpp index 06f4203bd..caa2374d4 100644 --- a/src/tomahawk/TomahawkApp.cpp +++ b/src/tomahawk/TomahawkApp.cpp @@ -182,7 +182,6 @@ TomahawkApp::init() #endif TomahawkUtils::setHeadless( m_headless ); - TomahawkSettings* s = TomahawkSettings::instance(); new ACLRegistryImpl( this ); tDebug( LOGINFO ) << "Setting NAM."; @@ -248,89 +247,7 @@ TomahawkApp::init() tDebug() << "Init InfoSystem."; m_infoSystem = QPointer( Tomahawk::InfoSystem::InfoSystem::instance() ); - tDebug() << "Init AccountManager."; - m_accountManager = QPointer< Tomahawk::Accounts::AccountManager >( new Tomahawk::Accounts::AccountManager( this ) ); - connect( m_accountManager.data(), SIGNAL( readyForFactories() ), SLOT( initFactoriesForAccountManager() ) ); - connect( m_accountManager.data(), SIGNAL( readyForSip() ), SLOT( initSIP() ) ); - - Echonest::Config::instance()->setNetworkAccessManager( TomahawkUtils::nam() ); -#ifndef ENABLE_HEADLESS - EchonestGenerator::setupCatalogs(); - - if ( !m_headless ) - { - tDebug() << "Init MainWindow."; - m_mainwindow = new TomahawkWindow(); - m_mainwindow->setWindowTitle( "Tomahawk" ); - m_mainwindow->setObjectName( "TH_Main_Window" ); - if ( !arguments().contains( "--hide" ) ) - { - m_mainwindow->show(); - } - } -#endif - - tDebug() << "Init Local Collection."; - initLocalCollection(); - tDebug() << "Init Pipeline."; - initPipeline(); - -#ifndef ENABLE_HEADLESS - // load remote list of resolvers able to be installed - AtticaManager::instance(); -#endif - - if ( arguments().contains( "--http" ) || TomahawkSettings::instance()->value( "network/http", true ).toBool() ) - { - initHTTP(); - } - connect( TomahawkSettings::instance(), SIGNAL( changed() ), SLOT( initHTTP() ) ); - -#ifndef ENABLE_HEADLESS - if ( !s->hasScannerPaths() ) - { - m_mainwindow->showSettingsDialog(); - } -#endif - -#ifdef LIBLASTFM_FOUND - tDebug() << "Init Scrobbler."; - m_scrobbler = new Scrobbler( this ); -#endif - - if ( arguments().contains( "--filescan" ) ) - { - m_scanManager.data()->runFullRescan(); - } - - // Set up echonest catalog synchronizer - Tomahawk::EchonestCatalogSynchronizer::instance(); - - PlaylistUpdaterInterface::registerUpdaterFactory( new XspfUpdaterFactory ); - PlaylistUpdaterInterface::registerUpdaterFactory( new SpotifyUpdaterFactory ); - - // Following work-around/fix taken from Clementine rev. 13e13ccd9a95 and courtesy of David Sansome - // A bug in Qt means the wheel_scroll_lines setting gets ignored and replaced - // with the default value of 3 in QApplicationPrivate::initialize. - { - QSettings qt_settings( QSettings::UserScope, "Trolltech" ); - qt_settings.beginGroup( "Qt" ); - QApplication::setWheelScrollLines( qt_settings.value( "wheelScrollLines", QApplication::wheelScrollLines() ).toInt() ); - } - -#ifndef ENABLE_HEADLESS - // Make sure to init GAM in the gui thread - GlobalActionManager::instance(); - - // check if our spotify playlist api server is up and running, and enable spotify playlist drops if so - QNetworkReply* r = TomahawkUtils::nam()->get( QNetworkRequest( QUrl( SPOTIFY_PLAYLIST_API_URL "/pong" ) ) ); - connect( r, SIGNAL( finished() ), this, SLOT( spotifyApiCheckFinished() ) ); -#endif - -#ifdef Q_OS_MAC - // Make sure to do this after main window is inited - Tomahawk::enableFullscreen( m_mainwindow ); -#endif + connect( m_infoSystem, SIGNAL( ready() ), SLOT( initAccountManager() ) ); } @@ -573,6 +490,97 @@ TomahawkApp::initHTTP() } +void +TomahawkApp::initAccountManager() +{ + tDebug() << "Init AccountManager."; + m_accountManager = QPointer< Tomahawk::Accounts::AccountManager >( new Tomahawk::Accounts::AccountManager( this ) ); + connect( m_accountManager.data(), SIGNAL( readyForFactories() ), SLOT( initFactoriesForAccountManager() ) ); + connect( m_accountManager.data(), SIGNAL( readyForSip() ), SLOT( initSIP() ) ); + + TomahawkSettings* s = TomahawkSettings::instance(); + + Echonest::Config::instance()->setNetworkAccessManager( TomahawkUtils::nam() ); +#ifndef ENABLE_HEADLESS + EchonestGenerator::setupCatalogs(); + + if ( !m_headless ) + { + tDebug() << "Init MainWindow."; + m_mainwindow = new TomahawkWindow(); + m_mainwindow->setWindowTitle( "Tomahawk" ); + m_mainwindow->setObjectName( "TH_Main_Window" ); + if ( !arguments().contains( "--hide" ) ) + { + m_mainwindow->show(); + } + } +#endif + + tDebug() << "Init Local Collection."; + initLocalCollection(); + tDebug() << "Init Pipeline."; + initPipeline(); + +#ifndef ENABLE_HEADLESS + // load remote list of resolvers able to be installed + AtticaManager::instance(); +#endif + + if ( arguments().contains( "--http" ) || TomahawkSettings::instance()->value( "network/http", true ).toBool() ) + { + initHTTP(); + } + connect( TomahawkSettings::instance(), SIGNAL( changed() ), SLOT( initHTTP() ) ); + +#ifndef ENABLE_HEADLESS + if ( !s->hasScannerPaths() ) + { + m_mainwindow->showSettingsDialog(); + } +#endif + +#ifdef LIBLASTFM_FOUND + tDebug() << "Init Scrobbler."; + m_scrobbler = new Scrobbler( this ); +#endif + + if ( arguments().contains( "--filescan" ) ) + { + m_scanManager.data()->runFullRescan(); + } + + // Set up echonest catalog synchronizer + Tomahawk::EchonestCatalogSynchronizer::instance(); + + PlaylistUpdaterInterface::registerUpdaterFactory( new XspfUpdaterFactory ); + PlaylistUpdaterInterface::registerUpdaterFactory( new SpotifyUpdaterFactory ); + + // Following work-around/fix taken from Clementine rev. 13e13ccd9a95 and courtesy of David Sansome + // A bug in Qt means the wheel_scroll_lines setting gets ignored and replaced + // with the default value of 3 in QApplicationPrivate::initialize. + { + QSettings qt_settings( QSettings::UserScope, "Trolltech" ); + qt_settings.beginGroup( "Qt" ); + QApplication::setWheelScrollLines( qt_settings.value( "wheelScrollLines", QApplication::wheelScrollLines() ).toInt() ); + } + +#ifndef ENABLE_HEADLESS + // Make sure to init GAM in the gui thread + GlobalActionManager::instance(); + + // check if our spotify playlist api server is up and running, and enable spotify playlist drops if so + QNetworkReply* r = TomahawkUtils::nam()->get( QNetworkRequest( QUrl( SPOTIFY_PLAYLIST_API_URL "/pong" ) ) ); + connect( r, SIGNAL( finished() ), this, SLOT( spotifyApiCheckFinished() ) ); +#endif + +#ifdef Q_OS_MAC + // Make sure to do this after main window is inited + Tomahawk::enableFullscreen( m_mainwindow ); +#endif +} + + void TomahawkApp::initPipeline() { diff --git a/src/tomahawk/TomahawkApp.h b/src/tomahawk/TomahawkApp.h index 761e63fdb..52c6e97e4 100644 --- a/src/tomahawk/TomahawkApp.h +++ b/src/tomahawk/TomahawkApp.h @@ -112,6 +112,7 @@ private slots: void initSIP(); void initHTTP(); void initFactoriesForAccountManager(); + void initAccountManager(); void spotifyApiCheckFinished();