diff -r 189d20c34778 -r 11b6825f0862 radioapp/radiouiengine/src/radiouiengine.cpp --- a/radioapp/radiouiengine/src/radiouiengine.cpp Wed Jun 23 18:12:57 2010 +0300 +++ b/radioapp/radiouiengine/src/radiouiengine.cpp Tue Jul 06 14:16:27 2010 +0300 @@ -42,35 +42,43 @@ #include "radiologger.h" // Constants -const uint DEFAULT_MIN_FREQUENCY = 87500000; const uint RADIO_CENREP_UID = 0x2002FF52; const uint RADIO_CENREP_FREQUENCY_KEY = 0x207; +const uint RADIO_CENREP_HEADSET_VOLUME = 0x200; +const QLatin1String OVI_STORE_URL( "http://www.music.nokia.co.uk/Touch/Search.aspx?artistsearch=#artist#&titlesearch=#title#" ); const QLatin1String OTHER_STORE_URL( "http://www.amazon.com/gp/search/ref=sr_adv_m_digital/?search-alias=digital-music&field-author=#artist#&field-title=#title#" ); const QLatin1String OTHER_STORE_ARTIST_TAG( "#artist#" ); const QLatin1String OTHER_STORE_TITLE_TAG( "#title#" ); const char WHITESPACE = ' '; const char WHITESPACE_REPLACEMENT = '+'; +// Constants used when launching radio server +const QLatin1String RADIO_SERVER_NAME( "radioserver.exe" ); +const QLatin1String RADIO_RANGE_USEURO( "useuro" ); +const QLatin1String RADIO_RANGE_JAPAN( "japan" ); + +// ====== STATIC FUNCTIONS ======== + /*! - * + * Gets the last tuned frequency from central repository */ -uint RadioUiEngine::lastTunedFrequency() +uint RadioUiEngine::lastTunedFrequency( uint defaultFrequency ) { - uint frequency = DEFAULT_MIN_FREQUENCY; + uint frequency = defaultFrequency; #ifdef BUILD_WIN32 QScopedPointer settings( new QSettings( "Nokia", "QtFmRadio" ) ); frequency = settings->value( "CurrentFreq", DEFAULT_MIN_FREQUENCY ).toUInt(); if ( frequency == 0 ) { - frequency = DEFAULT_MIN_FREQUENCY; + frequency = defaultFrequency; } #else QScopedPointer settings( new XQSettingsManager() ); XQSettingsKey key( XQSettingsKey::TargetCentralRepository, RADIO_CENREP_UID, RADIO_CENREP_FREQUENCY_KEY ); frequency = settings->readItemValue( key, XQSettingsManager::TypeInt ).toUInt(); if ( frequency == 0 ) { - frequency = DEFAULT_MIN_FREQUENCY; + frequency = defaultFrequency; } #endif @@ -78,6 +86,42 @@ } /*! + * Gets the last used volume level + */ +int RadioUiEngine::lastVolume() +{ + int volume = DEFAULT_VOLUME_LEVEL; + +#ifndef BUILD_WIN32 + QScopedPointer settings( new XQSettingsManager() ); + XQSettingsKey key( XQSettingsKey::TargetCentralRepository, RADIO_CENREP_UID, RADIO_CENREP_HEADSET_VOLUME ); + volume = settings->readItemValue( key, XQSettingsManager::TypeInt ).toInt(); + if ( volume == 0 ) { + volume = DEFAULT_VOLUME_LEVEL; + } +#endif + + return volume; +} + +/*! + * Launches the radio server process + */ +void RadioUiEngine::launchRadioServer() +{ + QStringList args; + args << RADIO_RANGE_USEURO; //TODO: Determine current region + args << QString::number( lastTunedFrequency( 0 ) ); + args << QString::number( lastVolume() ); + + QProcess serverProcess; + bool success = serverProcess.startDetached( RADIO_SERVER_NAME, args ); + LOG_ASSERT( success, LOG( "Failed to start radio server!" ) ); +} + +// ====== MEMBER FUNCTIONS ======== + +/*! * */ RadioUiEngine::RadioUiEngine( QObject* parent ) : @@ -210,10 +254,14 @@ RadioScannerEnginePtr RadioUiEngine::createScannerEngine() { Q_D( RadioUiEngine ); - if ( !d->mScannerEngine ) { - d->mScannerEngine = RadioScannerEnginePtr( new RadioScannerEngine( *d ) ); - } - return d->mScannerEngine; +#if defined BUILD_WIN32 || defined __WINS__ + Q_ASSERT_X( !d->mScannerEngine, "RadioUiEngine::createScannerEngine", "Previous scanner instance not freed" ); +#endif + + RadioScannerEnginePtr enginePtr( new RadioScannerEngine( *d ) ); + d->mScannerEngine = enginePtr; + + return enginePtr; } /*! @@ -376,20 +424,16 @@ */ void RadioUiEngine::openMusicStore( const RadioHistoryItem& item, MusicStore store ) { - if ( store == OviStore ) { - //TODO: Integrate to music store - } else if ( store == OtherStore ) { - QString artist = item.artist(); - artist.replace( WHITESPACE, WHITESPACE_REPLACEMENT ); - QString title = item.title(); - title.replace( WHITESPACE, WHITESPACE_REPLACEMENT ); + QString artist = item.artist(); + artist.replace( WHITESPACE, WHITESPACE_REPLACEMENT ); + QString title = item.title(); + title.replace( WHITESPACE, WHITESPACE_REPLACEMENT ); - QString url( OTHER_STORE_URL ); - url.replace( OTHER_STORE_ARTIST_TAG, artist ); - url.replace( OTHER_STORE_TITLE_TAG, title ); + QString url = store == OviStore ? OVI_STORE_URL : OTHER_STORE_URL; + url.replace( OTHER_STORE_ARTIST_TAG, artist ); + url.replace( OTHER_STORE_TITLE_TAG, title ); - launchBrowser( url ); - } + launchBrowser( url ); } /*!