# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1276065730 -10800 # Node ID 4f2584af5a292f2e9b90caa23c47b3eddd59684a # Parent 9f3ff466f56bfc42e241a452e60e09220c61d1d2 Revision: 201021 Kit: 2010123 diff -r 9f3ff466f56b -r 4f2584af5a29 fmradio/fmradio/inc/fmradioappui.h --- a/fmradio/fmradio/inc/fmradioappui.h Tue May 25 12:42:49 2010 +0300 +++ b/fmradio/fmradio/inc/fmradioappui.h Wed Jun 09 09:42:10 2010 +0300 @@ -550,11 +550,6 @@ TFMRadioRegionSetting HandleRegionsAtStartUpL(); /** - * Request tuner control from engine - */ - void RequestTunerControl() const; - - /** * Is offline profile activated when radio audio was disabled. * @return ETrue, if offline profile activated when radio * audio was disabled. EFalse otherwise. diff -r 9f3ff466f56b -r 4f2584af5a29 fmradio/fmradio/inc/fmradiochannellistview.h --- a/fmradio/fmradio/inc/fmradiochannellistview.h Tue May 25 12:42:49 2010 +0300 +++ b/fmradio/fmradio/inc/fmradiochannellistview.h Wed Jun 09 09:42:10 2010 +0300 @@ -204,6 +204,15 @@ */ void StopSeekL(); + /** + * Interprets view's menu,softkey and other commands and acts + * accordingly by calling the appropriate command handler + * function for further action. + * @since 2.6 + * @param aCommand the command to process + */ + void HandleCommandL( TInt aCommand ); + private: // Functions from base classes /** * Activate the channel list view @@ -216,14 +225,6 @@ */ void DoDeactivate(); /** - * Interprets view's menu,softkey and other commands and acts - * accordingly by calling the appropriate command handler - * function for further action. - * @since 2.6 - * @param aCommand the command to process - */ - void HandleCommandL( TInt aCommand ); - /** * From MCoeControlObserver, control event observing. In this case, * the user selection from the list is reported by container class * and observed here. diff -r 9f3ff466f56b -r 4f2584af5a29 fmradio/fmradio/src/fmradioalfvisualizer.cpp --- a/fmradio/fmradio/src/fmradioalfvisualizer.cpp Tue May 25 12:42:49 2010 +0300 +++ b/fmradio/fmradio/src/fmradioalfvisualizer.cpp Wed Jun 09 09:42:10 2010 +0300 @@ -696,42 +696,60 @@ // ---------------------------------------------------------------------------- // TBool CFMRadioAlfVisualizer::OfferEventL( const TAlfEvent& aEvent ) - { + { + TBool keyHandled = EFalse; + if ( aEvent.IsKeyEvent() && AknLayoutUtils::PenEnabled() ) { const TKeyEvent& kEvent = aEvent.KeyEvent(); - if ( kEvent.iScanCode == EStdKeyRightArrow || - kEvent.iScanCode == EStdKeyLeftArrow || - kEvent.iScanCode == EStdKeyUpArrow || - kEvent.iScanCode == EStdKeyDownArrow ) + + if ( kEvent.iCode == EKeyEnter || kEvent.iCode == EKeyOK ) + { + iAppUi->ActivateLocalViewL( KFMRadioChannelListViewId ); + keyHandled = ETrue; + } + + switch ( kEvent.iScanCode ) { - iKeyScanCode = kEvent.iScanCode; - - if ( aEvent.Code() == EEventKeyUp ) + case EStdKeyRightArrow: // check arrow keys + case EStdKeyLeftArrow: + case EStdKeyUpArrow: + case EStdKeyDownArrow: { - iLongPressTimer->Cancel(); - if ( !iLongKeyTriggered ) + iKeyScanCode = kEvent.iScanCode; + + if ( aEvent.Code() == EEventKeyUp ) { - TriggerCommandL(); + iLongPressTimer->Cancel(); + if ( !iLongKeyTriggered ) + { + TriggerCommandL(); + } } + else if ( aEvent.Code() == EEventKeyDown ) + { + iLongKeyTriggered = EFalse; + // Start the long key press timer + iLongPressTimer->Cancel(); + iLongPressTimer->Start( KFMRadioRockerLongPressDelay, + 0, + TCallBack( CFMRadioAlfVisualizer::StaticLongPressCallBack, this ) ); + + } + keyHandled = ETrue; + break; } - else if ( aEvent.Code() == EEventKeyDown ) + default: { - iLongKeyTriggered = EFalse; - // Start the long key press timer - iLongPressTimer->Cancel(); - iLongPressTimer->Start( KFMRadioRockerLongPressDelay, - 0, - TCallBack( CFMRadioAlfVisualizer::StaticLongPressCallBack, this ) ); + break; } - return ETrue; } } if ( aEvent.IsPointerEvent() ) { return CGestureControl::OfferEventL( aEvent ); } - return EFalse; + return keyHandled; } // --------------------------------------------------------------------------- @@ -1070,14 +1088,13 @@ void CFMRadioAlfVisualizer::TriggerCommandL() { TVwsViewId viewId( KNullUid, KNullUid ); - CAknViewAppUi* appUi = static_cast( CCoeEnv::Static()->AppUi() ); - TInt err = appUi->GetActiveViewId( viewId ); + TInt err = iAppUi->GetActiveViewId( viewId ); RProcess process; TSecureId id = process.SecureId(); if ( !err && viewId.iAppUid.iUid == id.iId ) { - CAknView* view = appUi->View( viewId.iViewUid ); + CAknView* view = iAppUi->View( viewId.iViewUid ); if ( view ) { // command to be generated diff -r 9f3ff466f56b -r 4f2584af5a29 fmradio/fmradio/src/fmradioappui.cpp --- a/fmradio/fmradio/src/fmradioappui.cpp Tue May 25 12:42:49 2010 +0300 +++ b/fmradio/fmradio/src/fmradioappui.cpp Wed Jun 09 09:42:10 2010 +0300 @@ -1927,6 +1927,11 @@ { TRAP_IGNORE( iLocalContinueOfflineQuery->DismissQueryL() ); } + // Close activate offline query + if ( iLocalActivateOfflineQuery && iLocalActivateOfflineQuery->IsVisible() ) + { + TRAP_IGNORE( iLocalActivateOfflineQuery->DismissQueryL() ); + } } // --------------------------------------------------------------------------- @@ -1969,7 +1974,7 @@ TFMRadioRegionSetting region = HandleRegionsAtStartUpL(); iRadioEngine->SetRegionIdL( region ); HandlePendingViewActivationL(); - RequestTunerControl(); + iRadioEngine->RequestTunerControl(); } // --------------------------------------------------------------------------- @@ -2223,17 +2228,6 @@ } // --------------------------------------------------------------------------- -// CFMRadioAppUi::RequestTunerControl -// request tuner control from engine -// --------------------------------------------------------------------------- -// -void CFMRadioAppUi::RequestTunerControl() const - { - FTRACE( FPrint( _L("CFMRadioAppUi::RequestTunerControl()")) ); - iRadioEngine->RequestTunerControl(); - } - -// --------------------------------------------------------------------------- // CFMRadioAppUi::NumberOfChannelsStored // return number of channels saved to the presets // --------------------------------------------------------------------------- @@ -2354,11 +2348,11 @@ TInt ret = iConnectHeadsetQuery->ExecuteLD( R_FMRADIO_CONNECT_HEADSET_NOTE, *noteTxt ); CleanupStack::PopAndDestroy( noteTxt ); - + FTRACE( FPrint( _L("CFMRadioAppUi::ShowConnectHeadsetDialogL() return value from dialog: %d"), ret ) ); if ( iConnectHeadsetQuery ) { iConnectHeadsetQuery = NULL; - if ( ret == EAknSoftkeyExit ) + if ( ret == EAknSoftkeyExit || ret == EAknSoftkeyOk ) { TApaTask task( iCoeEnv->WsSession() ); task.SetWgId( iCoeEnv->RootWin().Identifier() ); diff -r 9f3ff466f56b -r 4f2584af5a29 fmradio/fmradio/src/fmradiochannellistcontainer.cpp --- a/fmradio/fmradio/src/fmradiochannellistcontainer.cpp Tue May 25 12:42:49 2010 +0300 +++ b/fmradio/fmradio/src/fmradiochannellistcontainer.cpp Wed Jun 09 09:42:10 2010 +0300 @@ -281,44 +281,45 @@ // ---------------------------------------------------- // void CFMRadioChannelListContainer::RemoveChannelL( TInt aIndex ) - { - if ( iChannelItemArray->Count() > 0 ) - { - TInt presetIndex = iRadioEngine.GetPresetIndex(); - - iChannelItemArray->Delete( aIndex ); - iChannelList->HandleItemRemovalL(); - iChannelList->UpdateScrollBarsL(); - iChannelList->DrawDeferred(); - - if ( iChannelItemArray->Count() > 0 ) - { - ReIndexAllL(); - - if ( presetIndex > aIndex ) - { - // update engine settings also - iRadioEngine.SetCurrentPresetIndex( presetIndex - 1 ); + { + if ( iChannelItemArray->Count() > 0 ) + { + TInt presetIndex = iRadioEngine.GetPresetIndex(); + + iChannelItemArray->Delete( aIndex ); + iChannelList->HandleItemRemovalL(); + iChannelList->UpdateScrollBarsL(); + + if ( iChannelItemArray->Count() > 0 ) + { + ReIndexAllL(); + + if ( presetIndex > aIndex ) + { + // update engine settings also + iRadioEngine.SetCurrentPresetIndex( presetIndex - 1 ); UpdateItemIconL( presetIndex - 1, KNowPlayingIconIndexChList ); } - else if ( presetIndex == aIndex ) + else if ( presetIndex == aIndex ) { iRadioEngine.TunePresetL( 0 ); UpdateItemIconL( 0, KNowPlayingIconIndexChList ); } - else - { - // NOP - } + else + { + // NOP + } iChannelList->SetCurrentItemIndex( 0 ); - } - else - { - // The last item was deleted, tune to current frequency, out of preset mode - iRadioEngine.Tune( iRadioEngine.GetTunedFrequency(), CRadioEngine::ERadioTunerMode ); - } - } - } + + } + else + { + // The last item was deleted, tune to current frequency, out of preset mode + iRadioEngine.Tune( iRadioEngine.GetTunedFrequency(), CRadioEngine::ERadioTunerMode ); + } + iChannelList->DrawDeferred(); + } + } // ---------------------------------------------------- // CFMRadioChannelListContainer::AddChannel @@ -578,60 +579,82 @@ // --------------------------------------------------------- // TKeyResponse CFMRadioChannelListContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - TKeyResponse response = EKeyWasNotConsumed; + TEventCode aType ) + { + TKeyResponse response = EKeyWasNotConsumed; switch ( aKeyEvent.iCode ) { - case EKeyOK: + case EKeyBackspace: { - // msk, used to accept move action + if ( iChannelList->IsHighlightEnabled() && !iMoveAction ) + { + iChannelView->HandleCommandL( EFMRadioCmdErase ); + return EKeyWasConsumed; + } + break; + } + case EKeyOK: // accept both + case EKeyEnter: + { + // used to accept move action if ( iMoveAction ) { iChannelView->MoveActionDoneL(); return EKeyWasConsumed; } + else if ( iChannelList->IsHighlightEnabled() ) // change to main view + { + if ( iChannelView->CurrentlyPlayingChannel() == + CurrentlySelectedChannel() ) + { + CFMRadioAppUi* appUi = static_cast( iCoeEnv->AppUi() ); + appUi->ActivateLocalViewL( KFMRadioMainViewId ); + return EKeyWasConsumed; + } + } break; } case EKeyLeftArrow: case EKeyRightArrow: - { + { return EKeyWasNotConsumed; - } + } case EKeyUpArrow: - if ( iMoveAction ) - { + if ( iMoveAction ) + { iKeyMoveActivated = ETrue; - MoveUpL(); - } - else - { - response = iChannelList->OfferKeyEventL(aKeyEvent, aType); - if (response == EKeyWasConsumed) - { - ReportEventL( MCoeControlObserver::EEventRequestFocus ); - } - } - return response; + MoveUpL(); + response = EKeyWasConsumed; + } + else + { + response = iChannelList->OfferKeyEventL(aKeyEvent, aType); + if (response == EKeyWasConsumed) + { + ReportEventL( MCoeControlObserver::EEventRequestFocus ); + } + } + return response; case EKeyDownArrow: - if ( iMoveAction ) - { + if ( iMoveAction ) + { iKeyMoveActivated = ETrue; - MoveDownL(); - } - else - { - response = iChannelList->OfferKeyEventL(aKeyEvent, aType); - if (response == EKeyWasConsumed) - { - ReportEventL( MCoeControlObserver::EEventRequestFocus ); - } - } + MoveDownL(); + response = EKeyWasConsumed; + } + else + { + response = iChannelList->OfferKeyEventL(aKeyEvent, aType); + if (response == EKeyWasConsumed) + { + ReportEventL( MCoeControlObserver::EEventRequestFocus ); + } + } return response; default: - switch ( aKeyEvent.iScanCode ) //we need to use the scan code, because we need to process the event wrt the keyUp and keyDown action - { + switch ( aKeyEvent.iScanCode ) //we need to use the scan code, because we need to process the event wrt the keyUp and keyDown action + { case EKeyboardKey1: // Timed key case EKeyboardKey2: // Normal keys case EKeyboardKey3: @@ -642,12 +665,12 @@ case EKeyboardKey8: case EKeyboardKey9: case EKeyboardKey0: - return EKeyWasNotConsumed; - default: - break; - } + return EKeyWasNotConsumed; + default: + break; + } break; - } + } return iChannelList->OfferKeyEventL(aKeyEvent, aType); } diff -r 9f3ff466f56b -r 4f2584af5a29 fmradio/fmradioengine/data/fmradioengine.rss --- a/fmradio/fmradioengine/data/fmradioengine.rss Tue May 25 12:42:49 2010 +0300 +++ b/fmradio/fmradioengine/data/fmradioengine.rss Wed Jun 09 09:42:10 2010 +0300 @@ -39,21 +39,21 @@ STRUCT RADIO_REGION - { - WORD id; - WORD stepsize; - LONG minfrequency; - LONG maxfrequency; - WORD decimalcount; - LTEXT countrycodes[] = {""}; - LTEXT regionname; - LTEXT regionsettingname; - } + { + WORD id; + WORD stepsize; + LONG minfrequency; + LONG maxfrequency; + WORD decimalcount; + LTEXT countrycodes[] = {""}; + LTEXT regionname; + LTEXT regionsettingname; + } STRUCT RADIO_REGION_ARRAY - { - LLINK regions[]; - } + { + LLINK regions[]; + } // --------------------------------------------------------- // @@ -63,14 +63,14 @@ // --------------------------------------------------------- // RESOURCE RADIO_REGION_ARRAY r_radio_regions_all - { - regions = - { - r_radio_region_japan, - r_radio_region_america, - r_radio_region_default - }; - } + { + regions = + { + r_radio_region_america, + r_radio_region_japan, + r_radio_region_default + }; + } // --------------------------------------------------------- // @@ -80,14 +80,14 @@ // --------------------------------------------------------- // RESOURCE RADIO_REGION_ARRAY r_radio_regions_without_japan - { - regions = - { - r_radio_region_america, - r_radio_region_default - }; - } - + { + regions = + { + r_radio_region_america, + r_radio_region_default + }; + } + // --------------------------------------------------------- // // r_radio_region_japan @@ -97,19 +97,19 @@ // --------------------------------------------------------- // RESOURCE RADIO_REGION r_radio_region_japan - { - id = EFMRadioRegionJapan; - stepsize = 100; - minfrequency = 76000; - maxfrequency = 90000; - decimalcount = 1; - countrycodes = - { - "440", - "441" - }; - regionname = qtn_fmradio_reg_japan; - } + { + id = EFMRadioRegionJapan; + stepsize = 100; + minfrequency = 76000; + maxfrequency = 90000; + decimalcount = 1; + countrycodes = + { + "440", + "441" + }; + regionname = qtn_fmradio_reg_japan; + } // --------------------------------------------------------- // @@ -120,56 +120,56 @@ // --------------------------------------------------------- // RESOURCE RADIO_REGION r_radio_region_america - { - id = EFMRadioRegionAmerica; - stepsize = 200; - minfrequency = 88100; - maxfrequency = 107900; - decimalcount = 1; - countrycodes = - { - "302", // Canada - "310", // USA - "311", // USA - "312", // USA - "313", // USA - "314", // USA - "315", // USA - "316", // USA - "332", // USA - "334", // Mexico - "338", // Jamaica - "342", // Barbados - "344", // Antigua and Barbuda - "352", // Grenada - "360", // Saint Vincent and the Grenadines - "364", // Bahamas - "366", // Common Wealth of Dominica - "370", // Dominican Republic - "372", // Haiti - "374", // Trinidad and Tobago - "368", // Cuba - "702", // Belize - "704", // Guatemala - "706", // El Salvador - "708", // Honduras - "710", // Nicaragua - "712", // Costa Rica - "714", // Panama - "716", // Peru - "724", // Brazil - "730", // Chile - "732", // Colombia - "734", // Venezuela - "736", // Bolivia - "738", // Guyana - "740", // Ecuador - "744", // Paraguay - "746", // Suriname - "748" // Uruguay - }; - regionname = qtn_fmradio_reg_america; - } + { + id = EFMRadioRegionAmerica; + stepsize = 200; + minfrequency = 88100; + maxfrequency = 107900; + decimalcount = 1; + countrycodes = + { + "302", // Canada + "310", // USA + "311", // USA + "312", // USA + "313", // USA + "314", // USA + "315", // USA + "316", // USA + "332", // USA + "334", // Mexico + "338", // Jamaica + "342", // Barbados + "344", // Antigua and Barbuda + "352", // Grenada + "360", // Saint Vincent and the Grenadines + "364", // Bahamas + "366", // Common Wealth of Dominica + "370", // Dominican Republic + "372", // Haiti + "374", // Trinidad and Tobago + "368", // Cuba + "702", // Belize + "704", // Guatemala + "706", // El Salvador + "708", // Honduras + "710", // Nicaragua + "712", // Costa Rica + "714", // Panama + "716", // Peru + "724", // Brazil + "730", // Chile + "732", // Colombia + "734", // Venezuela + "736", // Bolivia + "738", // Guyana + "740", // Ecuador + "744", // Paraguay + "746", // Suriname + "748" // Uruguay + }; + regionname = qtn_fmradio_reg_america; + } // --------------------------------------------------------- // @@ -179,11 +179,11 @@ // --------------------------------------------------------- // RESOURCE RADIO_REGION r_radio_region_default - { - id = EFMRadioRegionDefault; - stepsize = 50; - minfrequency = 87500; - maxfrequency = 108000; - decimalcount = 2; - regionname = qtn_fmradio_reg_other; - } + { + id = EFMRadioRegionDefault; + stepsize = 50; + minfrequency = 87500; + maxfrequency = 108000; + decimalcount = 2; + regionname = qtn_fmradio_reg_other; + } diff -r 9f3ff466f56b -r 4f2584af5a29 fmradio/fmradioengine/inc/fmradioengine.h --- a/fmradio/fmradioengine/inc/fmradioengine.h Tue May 25 12:42:49 2010 +0300 +++ b/fmradio/fmradioengine/inc/fmradioengine.h Wed Jun 09 09:42:10 2010 +0300 @@ -27,7 +27,6 @@ #include #include #include -#include #include "fmradiosystemeventdetectorobserver.h" #include "fmradionetworkchangeobserver.h" @@ -757,26 +756,29 @@ void ConstructL(); /** - * ConnectLineL - */ - void ConnectLineL(); - - /** * Updates the frequency into settings and P&S * * @param aFrequency The frequency to be set */ void StoreAndPublishFrequency( TInt aFrequency ); -private: - - //the internal radio engine states - enum TRadioEngineState - { + // internal radio engine states + enum TRadioEngineState + { EStateRadioOff, EStateRadioOn, }; - + + // internal state of the tuner control + enum TRadioTunerControlState + { + EStateRadioTunerControlUninitialized, + EStateRadioTunerControlOn, + EStateRadioTunerControlOff + }; + +private: + // The Radio Utility CRadioUtility* iRadioUtility; // own // The Tuner Utility @@ -801,8 +803,6 @@ CCentralRepositoryHandler* iCentralRepositoryHandler; // own // Used to provide async behavior in some callbacks CRadioStateHandler *iStateHandler; - // flag to indicate if auto resume is supported - TBool iAutoResume; // flag to indicate if a call is in progress TBool iInCall; // pointer to TRadioSettings @@ -818,7 +818,7 @@ // Indicates a request to initialized the radio is pending TBool iInitializeRadioRequestExists; // Indicates if the tuner control has been granted. - TBool iTunerControl; + TRadioTunerControlState iTunerControl; // High and low frequency of the current band. TInt iBottomFrequency; TInt iTopFrequency; @@ -826,30 +826,18 @@ TBool iFrequencySetByRdsAf; //Listens changes in network availability CFMRadioSystemEventDetector* iSystemEventDetector; - // for fmradio engine resource file + // for fmradio engine resource file TInt iFMRadioEngineResourceOffset; //Listens changes in network ID and country code CFMRadioMobileNetworkInfoListener* iNetworkInfoListener; //P&S interaction interface for FMRadio actions. - CFMRadioPubSub* iPubSub; + CFMRadioPubSub* iPubSub; // accessory observer CFMRadioAccessoryConnection* iHeadsetObserver; - // tel server session - RTelServer iTelServer; - // phone - RMobilePhone iPhone; - // line - RMobileLine iLine; - // tsy name - TFileName iTsyName; - // conrrectly constructer - TBool ilineConstructed; // for storing station name for method GetPresetNameL - TStationName iStationName; + TStationName iStationName; // Local cache for tuning state so that it doesn't get published before should - TFMRadioPSTuningState iTuningState; - // If last time audio is set to IHF with no headset connected. - TBool iHFOptionActivated; + TFMRadioPSTuningState iTuningState; }; #endif //FMRADIOENGINE_H diff -r 9f3ff466f56b -r 4f2584af5a29 fmradio/fmradioengine/src/fmradioengine.cpp --- a/fmradio/fmradioengine/src/fmradioengine.cpp Tue May 25 12:42:49 2010 +0300 +++ b/fmradio/fmradioengine/src/fmradioengine.cpp Wed Jun 09 09:42:10 2010 +0300 @@ -21,9 +21,7 @@ #include #include #include -#include #include -#include #include "fmradioengine.h" #include "fmradioenginestatechangecallback.h" @@ -56,14 +54,12 @@ CRadioEngine::CRadioEngine( MRadioEngineStateChangeCallback& aCallback) : - iAutoResume(EFalse), - iCurrentRadioState(EStateRadioOff), - iCallback(aCallback), - iTempFrequency(KDefaultRadioFrequency), - iTunePresetRequested(EFalse), - iInitializeRadioRequestExists(EFalse), - ilineConstructed( EFalse ), - iHFOptionActivated ( EFalse ) + iCurrentRadioState( EStateRadioOff ), + iCallback( aCallback ), + iTempFrequency( KDefaultRadioFrequency ), + iTunePresetRequested( EFalse ), + iInitializeRadioRequestExists( EFalse ), + iTunerControl( EStateRadioTunerControlUninitialized ) { } @@ -75,9 +71,7 @@ void CRadioEngine::ConstructL() { FTRACE(FPrint(_L("CRadioEngine::ConstructL()"))); - - TRAP_IGNORE( ConnectLineL() ); - + InitializeResourceLoadingL(); iRadioSettings = new ( ELeave ) TRadioSettings; @@ -98,6 +92,7 @@ // Get a tuner utility iFmTunerUtility = &iRadioUtility->RadioFmTunerUtilityL( *this ); + iFmTunerUtility->EnableTunerInOfflineMode( ETrue ); // Get a player utility iPlayerUtility = &iRadioUtility->RadioPlayerUtilityL( *this ); @@ -134,16 +129,9 @@ iTopFrequency = 0; iBottomFrequency = 0; - TInt callState = KErrUnknown; - RMobileCall::TMobileCallStatus linestatus; - iLine.GetMobileLineStatus( linestatus ); - RProperty::Get(KPSUidCtsyCallInformation, KCTsyCallState, callState); - - // check status from line - if ( linestatus != RMobileCall::EStatusIdle && - linestatus != RMobileCall::EStatusUnknown ) + if ( iSystemEventDetector->IsCallActive() ) { - // Pre-empted due to phone call, start Call State Observer + // Pre-empted due to phone call iInCall = ETrue; } // accessory observer @@ -173,39 +161,6 @@ FTRACE(FPrint(_L("CRadioEngine::ConstructL() End "))); } - -// ---------------------------------------------------- -// CRadioEngine::ConnectLineL -// Connects etel server -// ---------------------------------------------------- -// -void CRadioEngine::ConnectLineL() - { - User::LeaveIfError( iTelServer.Connect() ); - - iTelServer.GetTsyName( 0, iTsyName ); - - User::LeaveIfError( iTelServer.LoadPhoneModule( iTsyName ) ); - TInt numberOfPhones( 0 ); - User::LeaveIfError( iTelServer.EnumeratePhones( numberOfPhones ) ); - - RTelServer::TPhoneInfo phoneInfo; - - // Only possible thing to do is leave. We definately need phone. - User::LeaveIfError( iTelServer.GetPhoneInfo( 0, phoneInfo ) ); - - // Only possible thing to do is leave. We definately need phone. - User::LeaveIfError( iPhone.Open( iTelServer, phoneInfo.iName )); - - - RPhone::TLineInfo lineInfo; - - User::LeaveIfError( iPhone.GetLineInfo( 0, lineInfo ) ); - - User::LeaveIfError( iLine.Open( iPhone, lineInfo.iName ) ); - - ilineConstructed = ETrue; - } // ---------------------------------------------------- // CRadioEngine::NewL @@ -284,14 +239,6 @@ { CCoeEnv::Static()->DeleteResourceFile( iFMRadioEngineResourceOffset ); } - - if ( ilineConstructed ) - { - iLine.Close(); - iPhone.Close(); - iTelServer.UnloadPhoneModule( iTsyName ); - iTelServer.Close(); - } } // ---------------------------------------------------- @@ -398,7 +345,7 @@ iTempFrequency = aFrequency; iRadioSettings->SetRadioMode( aRadioMode ); - if ( iTunerControl && iRadioSettings->IsHeadsetConnected() ) + if ( iTunerControl == EStateRadioTunerControlOn && iRadioSettings->IsHeadsetConnected() ) { iFmTunerUtility->SetFrequency( aFrequency ); } @@ -1023,45 +970,44 @@ // CRadioEngine::MrftoRequestTunerControlComplete // ---------------------------------------------------- // -void CRadioEngine::MrftoRequestTunerControlComplete( - TInt aError ) +void CRadioEngine::MrftoRequestTunerControlComplete( TInt aError ) { FTRACE(FPrint(_L("CRadioEngine::MrftoRequestTunerControlComplete() - Error = %d"), aError)); if ( aError == KErrNone ) { - iTunerControl = ETrue; + iTunerControl = EStateRadioTunerControlOn; // Headset must be connected iRadioSettings->SetHeadsetConnected(); iFmTunerUtility->GetCapabilities( iTunerCaps ); - if( iTunerCaps.iTunerFunctions & TFmTunerCapabilities::ETunerRdsSupport ) - { - TRAP_IGNORE( iRdsReceiver->InitL( *iRadioUtility, iPubSub ) ) - } + { + TRAP_IGNORE( iRdsReceiver->InitL( *iRadioUtility, iPubSub ) ) + } - TFmRadioFrequencyRange japanFreqRange = EFmRangeJapan; - - if ( TunerFrequencyRangeForRegionId( RegionId() ) == japanFreqRange ) - { - // region is Japan so we need to change the freq range from the default - iFmTunerUtility->SetFrequencyRange( japanFreqRange ); - } - else - { - // allready on correct freq range - HandleCallback(MRadioEngineStateChangeCallback::EFMRadioEventTunerReady, KErrNone ); - } + TFmRadioFrequencyRange japanFreqRange = EFmRangeJapan; + if ( TunerFrequencyRangeForRegionId( RegionId() ) == japanFreqRange ) + { + // region is Japan so we need to change the freq range from the default + iFmTunerUtility->SetFrequencyRange( japanFreqRange ); + } + else + { + // allready on correct freq range + HandleCallback( MRadioEngineStateChangeCallback::EFMRadioEventTunerReady, KErrNone ); + } + } else if ( aError == KFmRadioErrAntennaNotConnected ) { FTRACE(FPrint(_L("CRadioEngine::MrftoRequestTunerControlComplete() - KFmRadioErrAntennaNotConnected"))); + iTunerControl = EStateRadioTunerControlOff; iRadioSettings->SetHeadsetDisconnected(); HandleCallback(MRadioEngineStateChangeCallback::EFMRadioEventHeadsetDisconnected, KErrNone ); } else if ( aError == KErrAlreadyExists ) { - iTunerControl = ETrue; + iTunerControl = EStateRadioTunerControlOn; // Headset must be connected iRadioSettings->SetHeadsetConnected(); iFmTunerUtility->GetCapabilities( iTunerCaps ); @@ -1072,17 +1018,17 @@ } else if ( aError == KFmRadioErrFmTransmitterActive ) { - iTunerControl = EFalse; + iTunerControl = EStateRadioTunerControlOff; HandleCallback( MRadioEngineStateChangeCallback::EFMRadioEventFMTransmitterOn, KErrNone ); } else if ( aError == KFmRadioErrOfflineMode ) { - iTunerControl = EFalse; + iTunerControl = EStateRadioTunerControlOff; HandleCallback( MRadioEngineStateChangeCallback::EFMRadioEventFlightModeEnabled, KErrNone ); } else { - //pass + iTunerControl = EStateRadioTunerControlOff; } } @@ -1091,14 +1037,13 @@ // // ---------------------------------------------------- // -void CRadioEngine::MrftoSetFrequencyRangeComplete( - TInt aError ) +void CRadioEngine::MrftoSetFrequencyRangeComplete( TInt aError ) { if ( aError == KErrNone ) - { - HandleCallback( MRadioEngineStateChangeCallback::EFMRadioEventTunerReady, KErrNone ); - } - + { + HandleCallback( MRadioEngineStateChangeCallback::EFMRadioEventTunerReady, KErrNone ); + } + FTRACE(FPrint(_L("CRadioEngine::MrftoSetFrequencyRangeComplete() - error = %d"), aError)); } @@ -1106,12 +1051,10 @@ // CRadioEngine::MrftoSetFrequencyComplete // ---------------------------------------------------- // -void CRadioEngine::MrftoSetFrequencyComplete( - TInt aError ) +void CRadioEngine::MrftoSetFrequencyComplete( TInt aError ) { FTRACE(FPrint(_L("CRadioEngine::MrftoSetFrequencyComplete() - aError = %d"), aError)); - if ( !aError ) { iRdsReceiver->ClearRdsInformation(); @@ -1136,7 +1079,6 @@ FTRACE(FPrint(_L("CRadioEngine::MrftoSetFrequencyComplete() - Sending event to UI"))); HandleCallback( MRadioEngineStateChangeCallback::EFMRadioEventTune, aError ); } - } // ---------------------------------------------------- @@ -1200,7 +1142,7 @@ if ( aActive ) { // loses tuner control - iTunerControl = EFalse; + iTunerControl = EStateRadioTunerControlOff; } } @@ -1216,7 +1158,7 @@ FTRACE(FPrint(_L("CRadioEngine::MrftoAntennaStatusChange() - Antenna Status = %d"), aAttached)); if ( aAttached ) { - if ( !iTunerControl ) + if ( iTunerControl == EStateRadioTunerControlOff ) { iFmTunerUtility->RequestTunerControl(); } @@ -1238,18 +1180,17 @@ // Called when offline mode status changes // ---------------------------------------------------- // -void CRadioEngine::MrftoOfflineModeStatusChange( - TBool aOfflineMode ) +void CRadioEngine::MrftoOfflineModeStatusChange( TBool aOfflineMode ) { FTRACE(FPrint(_L("CRadioEngine::MrftoOfflineModeStatusChange() - Offline Mode = %d"), aOfflineMode)); - if( aOfflineMode ) + if ( aOfflineMode ) { HandleFlightModeEnabled(); } else { - if ( !iTunerControl ) + if ( iTunerControl == EStateRadioTunerControlOff ) { iFmTunerUtility->RequestTunerControl(); } @@ -1361,25 +1302,10 @@ ( aError == KErrNotReady ) || ( aError == KErrInUse ) ) { - TInt callState = KErrUnknown; - - RMobileCall::TMobileCallStatus linestatus; - - if ( ilineConstructed ) - { - iLine.GetMobileLineStatus( linestatus ); - } - FTRACE(FPrint(_L("CRadioEngine::MrpoStateChange() linestatus = %d"), linestatus)); - - TInt err = RProperty::Get(KPSUidCtsyCallInformation, KCTsyCallState, callState); - FTRACE(FPrint(_L("CRadioEngine::MrpoStateChange() callState = %d"), callState)); - - // check status from line - if ( linestatus != RMobileCall::EStatusIdle && - linestatus != RMobileCall::EStatusUnknown || - iSystemEventDetector->IsCallActive() ) + // check call status + if ( iSystemEventDetector->IsCallActive() ) { - FTRACE(FPrint(_L("CRadioEngine::MrpoStateChange() EFMRadioEventCallStarted") ) ); + FTRACE(FPrint(_L("CRadioEngine::MrpoStateChange() EFMRadioEventCallStarted") ) ); iInCall = ETrue; ret = MRadioEngineStateChangeCallback::EFMRadioEventCallStarted; } @@ -1504,13 +1430,14 @@ // ----------------------------------------------------------------------------- // void CRadioEngine::AudioResourcesAvailableL() - { - FTRACE( FPrint( _L("CRadioEngine::AudioResourcesAvailableL()" ) ) ); - if ( iPubSub && !iInCall && iTunerControl ) // if iPubSub exists, then the ConstructL has been successfully completed - { - HandleCallback(MRadioEngineStateChangeCallback::EFMRadioEventAudioResourceAvailable, KErrNone ); - } - } + { + FTRACE( FPrint( _L("CRadioEngine::AudioResourcesAvailableL()" ) ) ); + // if iPubSub exists, then the ConstructL has been successfully completed + if ( iPubSub && !iInCall && iTunerControl == EStateRadioTunerControlOn ) + { + HandleCallback(MRadioEngineStateChangeCallback::EFMRadioEventAudioResourceAvailable, KErrNone ); + } + } // ----------------------------------------------------------------------------- // CRadioEngine::AudioAutoResumeForbiddenL @@ -1532,11 +1459,11 @@ // ----------------------------------------------------------------------------- // void CRadioEngine::CallActivatedCallbackL() - { - FTRACE( FPrint( _L("CRadioEngine::CallActivatedCallbackL()" ) ) ); - // no implementation needed, CRadioEngine::MrpoStateChange handles call startup - } - + { + FTRACE( FPrint( _L("CRadioEngine::CallActivatedCallbackL()" ) ) ); + iInCall = ETrue; + } + // ----------------------------------------------------------------------------- // CRadioEngine::CallDeactivatedCallbackL // This callback notifies when call becomes deactive. @@ -1827,11 +1754,14 @@ // ---------------------------------------------------- // EXPORT_C void CRadioEngine::RequestTunerControl() const - { - // Before first RequestTunerControl() call it is ok to enable offline mode without checking capabilities - iFmTunerUtility->EnableTunerInOfflineMode( ETrue ); - iFmTunerUtility->RequestTunerControl(); - } + { + FTRACE( FPrint( _L("CRadioEngine::RequestTunerControl()")) ); + if ( iTunerControl == EStateRadioTunerControlUninitialized ) + { + // first request for tuner control. + iFmTunerUtility->RequestTunerControl(); + } + } // ---------------------------------------------------- // CRadioEngine::DecimalCount diff -r 9f3ff466f56b -r 4f2584af5a29 fmradio/loc/fmradio.loc --- a/fmradio/loc/fmradio.loc Tue May 25 12:42:49 2010 +0300 +++ b/fmradio/loc/fmradio.loc Wed Jun 09 09:42:10 2010 +0300 @@ -375,9 +375,10 @@ // d: %N is the station memory location and %U is the frequency. // d: Memory location number max value is 100. // d: Frequency is shown with one or two decimals, max length 6 characters. +// d: there should be two spaces between %N. and %U. "%N. %U MHz" // l: area_fmrd2_info_pane_t1 // -#define qtn_fmradio_mem_location_freq "%N. %U MHz" +#define qtn_fmradio_mem_location_freq "%N. %U MHz" // d: String shown on the main pane. // d: %N is the station memory location and %U is station name.