diff --git a/include/tomahawk/tomahawkapp.h b/include/tomahawk/tomahawkapp.h index 7775a6528..fe8648ad5 100644 --- a/include/tomahawk/tomahawkapp.h +++ b/include/tomahawk/tomahawkapp.h @@ -1,5 +1,5 @@ /* === This file is part of Tomahawk Player - === - * + * * Copyright 2010-2011, Christian Muehlhaeuser * * Tomahawk is free software: you can redistribute it and/or modify @@ -78,6 +78,7 @@ public: TomahawkApp( int& argc, char *argv[] ); virtual ~TomahawkApp(); + void init(); static TomahawkApp* instance(); SipHandler* sipHandler() { return m_sipHandler; } @@ -98,10 +99,10 @@ public: // because QApplication::arguments() is expensive bool scrubFriendlyName() const { return m_scrubFriendlyName; } - + public slots: void instanceStarted( KDSingleApplicationGuard::Instance ); - + private slots: void setupSIP(); @@ -124,14 +125,14 @@ private: XMPPBot* m_xmppBot; Tomahawk::ShortcutHandler* m_shortcutHandler; bool m_scrubFriendlyName; - + #ifdef LIBLASTFM_FOUND Scrobbler* m_scrobbler; #endif #ifndef TOMAHAWK_HEADLESS TomahawkWindow* m_mainwindow; -#endif +#endif bool m_headless; diff --git a/src/main.cpp b/src/main.cpp index 3a6d6936e..f213d74de 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,5 @@ /* === This file is part of Tomahawk Player - === - * + * * Copyright 2010-2011, Christian Muehlhaeuser * * Tomahawk is free software: you can redistribute it and/or modify @@ -18,15 +18,15 @@ #include "tomahawk/tomahawkapp.h" +#include "kdsingleapplicationguard/kdsingleapplicationguard.h" + #ifdef Q_WS_MAC #include "tomahawkapp_mac.h" #include static pascal OSErr appleEventHandler( const AppleEvent*, AppleEvent*, long ); #endif -#include - -#include "kdsingleapplicationguard/kdsingleapplicationguard.h" + int main( int argc, char *argv[] ) { @@ -42,11 +42,15 @@ main( int argc, char *argv[] ) TomahawkApp a( argc, argv ); KDSingleApplicationGuard guard( &a, KDSingleApplicationGuard::AutoKillOtherInstances ); - QObject::connect( &guard, SIGNAL( instanceStarted( KDSingleApplicationGuard::Instance ) ), &a, SLOT( instanceStarted( KDSingleApplicationGuard::Instance ) ) ); - + QObject::connect( &guard, SIGNAL( instanceStarted( KDSingleApplicationGuard::Instance ) ), &a, SLOT( instanceStarted( KDSingleApplicationGuard::Instance ) ) ); + + if ( guard.isPrimaryInstance() ) + a.init(); + return a.exec(); } + #ifdef Q_WS_MAC static pascal OSErr appleEventHandler( const AppleEvent* e, AppleEvent*, long ) diff --git a/src/tomahawkapp.cpp b/src/tomahawkapp.cpp index e4198383f..826887587 100644 --- a/src/tomahawkapp.cpp +++ b/src/tomahawkapp.cpp @@ -152,31 +152,53 @@ TomahawkApp::TomahawkApp( int& argc, char *argv[] ) , m_mainwindow( 0 ) , m_infoSystem( 0 ) { - qsrand( QTime( 0, 0, 0 ).secsTo( QTime::currentTime() ) ); - -#ifdef TOMAHAWK_HEADLESS - m_headless = true; -#else - m_mainwindow = 0; - m_headless = arguments().contains( "--headless" ); - setWindowIcon( QIcon( RESPATH "icons/tomahawk-icon-128x128.png" ) ); -#endif - qDebug() << "TomahawkApp thread:" << this->thread(); setOrganizationName( QLatin1String( ORGANIZATION_NAME ) ); setOrganizationDomain( QLatin1String( ORGANIZATION_DOMAIN ) ); setApplicationName( QLatin1String( APPLICATION_NAME ) ); setApplicationVersion( QLatin1String( VERSION ) ); - registerMetaTypes(); setupLogfile(); - +} + + +TomahawkApp::~TomahawkApp() +{ + qDebug() << Q_FUNC_INFO; + + delete m_sipHandler; + delete m_servent; + +#ifndef TOMAHAWK_HEADLESS + delete m_mainwindow; + delete m_audioEngine; +#endif + + delete m_database; +} + + +void +TomahawkApp::init() +{ + qsrand( QTime( 0, 0, 0 ).secsTo( QTime::currentTime() ) ); + + #ifdef TOMAHAWK_HEADLESS + m_headless = true; + #else + m_mainwindow = 0; + m_headless = arguments().contains( "--headless" ); + setWindowIcon( QIcon( RESPATH "icons/tomahawk-icon-128x128.png" ) ); + #endif + + registerMetaTypes(); + Echonest::Config::instance()->setAPIKey( "JRIHWEP6GPOER2QQ6" ); - + new TomahawkSettings( this ); m_audioEngine = new AudioEngine; new ScanManager( this ); new Pipeline( this ); - + m_servent = new Servent( this ); connect( m_servent, SIGNAL( ready() ), SLOT( setupSIP() ) ); @@ -185,15 +207,15 @@ TomahawkApp::TomahawkApp( int& argc, char *argv[] ) qDebug() << "Init Echonest Factory."; GeneratorFactory::registerFactory( "echonest", new EchonestFactory ); - + m_scrubFriendlyName = arguments().contains( "--demo" ); // Register shortcut handler for this platform -#ifdef Q_WS_MAC + #ifdef Q_WS_MAC m_shortcutHandler = new MacShortcutHandler( this ); Tomahawk::setShortcutHandler( static_cast( m_shortcutHandler) ); Tomahawk::setApplicationHandler( this ); -#endif + #endif // Connect up shortcuts if ( m_shortcutHandler ) @@ -208,7 +230,7 @@ TomahawkApp::TomahawkApp( int& argc, char *argv[] ) connect( m_shortcutHandler, SIGNAL( mute() ), m_audioEngine, SLOT( mute() ) ); } -#ifdef LIBLASTFM_FOUND + #ifdef LIBLASTFM_FOUND qDebug() << "Init Scrobbler."; m_scrobbler = new Scrobbler( this ); qDebug() << "Setting NAM."; @@ -225,10 +247,10 @@ TomahawkApp::TomahawkApp( int& argc, char *argv[] ) connect( m_audioEngine, SIGNAL( stopped() ), m_scrobbler, SLOT( trackStopped() ), Qt::QueuedConnection ); -#else + #else qDebug() << "Setting NAM."; TomahawkUtils::setNam( new QNetworkAccessManager ); -#endif + #endif // Set up proxy if( TomahawkSettings::instance()->proxyType() != QNetworkProxy::NoProxy && @@ -258,7 +280,7 @@ TomahawkApp::TomahawkApp( int& argc, char *argv[] ) m_mainwindow->setWindowTitle( "Tomahawk" ); m_mainwindow->show(); } -#endif + #endif qDebug() << "Init Local Collection."; initLocalCollection(); @@ -273,28 +295,12 @@ TomahawkApp::TomahawkApp( int& argc, char *argv[] ) startHTTP(); } -#ifndef TOMAHAWK_HEADLESS + #ifndef TOMAHAWK_HEADLESS if ( !TomahawkSettings::instance()->hasScannerPath() ) { m_mainwindow->showSettingsDialog(); } -#endif -} - - -TomahawkApp::~TomahawkApp() -{ - qDebug() << Q_FUNC_INFO; - - delete m_sipHandler; - delete m_servent; - -#ifndef TOMAHAWK_HEADLESS - delete m_mainwindow; - delete m_audioEngine; -#endif - - delete m_database; + #endif } @@ -332,7 +338,7 @@ TomahawkApp::registerMetaTypes() qRegisterMetaType< QMap >("QMap"); qRegisterMetaType< QMap< QString, plentry_ptr > >("QMap< QString, plentry_ptr >"); qRegisterMetaType< QHash< QString, QMap > >("QHash< QString, QMap >"); - + qRegisterMetaType< GeneratorMode>("GeneratorMode"); qRegisterMetaType("Tomahawk::GeneratorMode"); // Extra definition for namespaced-versions of signals/slots required @@ -525,16 +531,16 @@ TomahawkApp::loadUrl( const QString& url ) } -void +void TomahawkApp::instanceStarted( KDSingleApplicationGuard::Instance instance ) { qDebug() << "INSTANCE STARTED!" << instance.pid << instance.arguments; - - if( instance.arguments.size() < 2 ) + + if( instance.arguments.size() < 2 ) { return; } - + loadUrl( instance.arguments.at( 1 ) ); }