diff -r 1a6714c53019 -r cce62ebc198e fmradio/fmradiomcpplugin/src/fmradiomcpplugin.cpp --- a/fmradio/fmradiomcpplugin/src/fmradiomcpplugin.cpp Thu Aug 19 09:55:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,767 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation for the FM Radio Content Publisher Plugin. -* -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "fmradioactionhandler.h" -#include "fmradioactionhandler.hrh" -#include "fmradioactionhandlerdefs.h" -#include "fmradioactiveidleengine.h" -#include "fmradioactiveidleenginenotifyhandler.h" -#include "fmradiodefines.h" -#include "debug.h" -#include "fmradiomcpplugin.h" -#include "fmradiomcpplugin.hrh" - -_LIT( KFMRadioMifFileName, "fmradio.mif" ); -_LIT( KFMRadioMifDir, "\\resource\\apps\\" ); - -_LIT( KFMRadioMCPPluginResourceFileName, "fmradiomcpplugin.rsc" ); -_LIT8( KFMRadioPluginUid, "plugin_id" ); -_LIT8( KFMRadioData, "data" ); -_LIT8( KType, "type" ); - -const TUint KFMRadioPrevious = 0x001; //000000000001 -const TUint KFMRadioNext = 0x002; //000000000010 -const TUint KFMRadioMute = 0x004; //000000000100 -const TUint KFMRadioUnmute = 0x008; //000000001000 -const TUint KFMRadioPreviousDimmed = 0x010; //000000010000 -const TUint KFMRadioNextDimmed = 0x020; //000000100000 -const TUint KFMRadioMuteDimmed = 0x040; //000001000000 -const TUint KFMRadioUnmuteDimmed = 0x080; //000010000000 - -CFMRadioMCPPlugin* CFMRadioMCPPlugin::NewL( MMCPPluginObserver* aObserver ) - { - CFMRadioMCPPlugin* self = new ( ELeave ) CFMRadioMCPPlugin( aObserver ); - CleanupStack::PushL( self ); - - self->ConstructL(); - - CleanupStack::Pop( self ); - return self; - } - -CFMRadioMCPPlugin::~CFMRadioMCPPlugin() - { - if ( iResourceOffset > 0 ) - { - CCoeEnv::Static()->DeleteResourceFile( iResourceOffset ); - } - - delete iEngine; - iAntennaNotConnectedText.Close(); - iTuningText.Close(); - iSavedStationFormat.Close(); - iSavedStationFormatNoName.Close(); - iFrequencyFormat.Close(); - - iMifFileName.Close(); - } - -CFMRadioMCPPlugin::CFMRadioMCPPlugin( MMCPPluginObserver* aObserver ) - : iObserver( aObserver ) - { - } - -void CFMRadioMCPPlugin::ConstructL() - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::ConstructL" ))); - InitializeResourceLoadingL(); - - CCoeEnv* coeEnv = CCoeEnv::Static(); - - iAntennaNotConnectedText.Assign( StringLoader::LoadL( R_QTN_FMRADIO_WIDGET_CON_HEADSET, coeEnv ) ); - iTuningText.Assign( StringLoader::LoadL( R_QTN_FMRADIO_WIDGET_TUNING, coeEnv ) ); - iSavedStationFormat.Assign( StringLoader::LoadL( R_QTN_FMRADIO_WIDGET_STATION_SAVED, coeEnv ) ); - iSavedStationFormatNoName.Assign( StringLoader::LoadL( R_QTN_FMRADIO_WIDGET_STATION_SAVED_FREQ, coeEnv ) ); - iFrequencyFormat.Assign( StringLoader::LoadL( R_QTN_FMRADIO_WIDGET_NOTSAVED_FREQUENCY, coeEnv ) ); - - // Release the resource file, because we don't want to keep file handle open. - // That would prevent updating the binary with SIS. - if ( iResourceOffset > 0 ) - { - coeEnv->DeleteResourceFile( iResourceOffset ); - iResourceOffset = 0; - } - - TFindFile finder( coeEnv->FsSession() ); - TInt err = finder.FindByDir( KFMRadioMifFileName, KFMRadioMifDir ); - if ( err == KErrNone ) - { - iMifFileName.CreateL( finder.File() ); - } - - iEngine = CFMRadioActiveIdleEngine::NewL( *this ); - iEngine->ActivateL(); - - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::ConstructL - Exiting." ))); - } - -// --------------------------------------------------------------------------- -// Initialize resource file for loading resources. -// --------------------------------------------------------------------------- -// -void CFMRadioMCPPlugin::InitializeResourceLoadingL() - { - CCoeEnv* coeEnv = CCoeEnv::Static(); - RFs fs( coeEnv->FsSession() ); - TFileName fileName; - TFileName baseResource; - TFindFile finder( fs ); - TLanguage language( ELangNone ); - - TParsePtrC parse( KFMRadioMCPPluginResourceFileName ); - _LIT( resourceFileWildExt, ".r*" ); - - // Make sure to find all resource files, not only .rsc files as it may be so - // that there is only .r01, .r02, etc. files available - fileName.Copy( parse.Name() ); - fileName.Append( resourceFileWildExt ); - - // TFindFile applies search order that is from - // drive Y to A, then Z - CDir* entries = NULL; - TInt err = finder.FindWildByDir( fileName , KDC_RESOURCE_FILES_DIR, entries ); - delete entries; - entries = NULL; - TBool found = EFalse; - while ( !found && err == KErrNone ) - { - // Found file - fileName.Zero(); - TParsePtrC foundPath( finder.File() ); - fileName.Copy( foundPath.DriveAndPath() ); - fileName.Append( KFMRadioMCPPluginResourceFileName ); - BaflUtils::NearestLanguageFile( fs, fileName, language ); - if ( language != ELangNone && BaflUtils::FileExists( fs, fileName ) ) - { - found = ETrue; - iResourceOffset = coeEnv->AddResourceFileL( fileName ); - } - else - { - if ( language == ELangNone && - !baseResource.Compare( KNullDesC ) && - BaflUtils::FileExists( fs, fileName ) ) - { - baseResource.Copy( fileName ); - } - err = finder.FindWild( entries ); - delete entries; - entries = NULL; - } - } - - if ( !found && baseResource.Compare( KNullDesC ) ) - { - // If we found *.rsc then better to use that than nothing - if ( BaflUtils::FileExists( fs, baseResource ) ) - { - iResourceOffset = coeEnv->AddResourceFileL( baseResource ); - found = ETrue; - } - } - - if( !found ) - { - User::Leave( KErrNotFound ); - } - } - -void CFMRadioMCPPlugin::Deactivate() - { - iActive = EFalse; - } - -void CFMRadioMCPPlugin::ActivateL() - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::ActivateL()" ))); - iActive = ETrue; - iObserver->BecameActiveL( this ); - - iObserver->PublishTextL( this, EMusicWidgetDefaultText, KNullDesC ); - - iObserver->PublishImageL( this, EMusicWidgetImage1, - KAknsIIDQgnIndiRadioDefault, - iMifFileName, - EMbmFmradioQgn_indi_radio_default, - EMbmFmradioQgn_indi_radio_default_mask ); - - InstallFMRadioCommandActionL( KFMRadioCommandValueStartNowPlaying, EMusicWidgetTrigger1 ); - HandleChannelChangeL( iEngine->Channel() ); - } - -// --------------------------------------------------------------------------- -// CFMRadioMCPPlugin::UpdatePublishedToolBarL -// --------------------------------------------------------------------------- -// -void CFMRadioMCPPlugin::UpdatePublishedToolBarL( TUint aToolBarState ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - Entering." ))); - if ( iActive ) - { - TAknsItemID iconId; - if ( KFMRadioPrevious & aToolBarState ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 1 Enter" ))); - iconId.Set( EAknsMajorGeneric, EAknsMinorGenericQgnPropImageTbPrev ); - iObserver->PublishImageL( this, - EMusicWidgetToolbarB1, - iconId, - iMifFileName, - EMbmFmradioQgn_prop_image_tb_prev, - EMbmFmradioQgn_prop_image_tb_prev_mask ); - InstallFMRadioCommandActionL( KFMRadioCommandValueStepPrevious, EMusicWidgetTB1Trigger ); - iTbPreviousState = KFMRadioPrevious; - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 1 Exit" ))); - } - - if ( KFMRadioPreviousDimmed & aToolBarState ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 2 Enter" ))); - iconId.Set( EAknsMajorGeneric, EAknsMinorGenericQgnPropImageTbPrevDimmed ); - iObserver->PublishImageL( this, - EMusicWidgetToolbarB1, - iconId, - iMifFileName, - EMbmFmradioQgn_prop_image_tb_prev_dimmed, - EMbmFmradioQgn_prop_image_tb_prev_dimmed_mask ); - InstallEmptyActionL( EMusicWidgetTB1Trigger ); - iTbPreviousState = KFMRadioPreviousDimmed; - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 2 Exit" ))); - } - - if ( KFMRadioNext & aToolBarState ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 3 Enter" ))); - iconId.Set( EAknsMajorGeneric, EAknsMinorGenericQgnPropImageTbNext ); - iObserver->PublishImageL( this, - EMusicWidgetToolbarB3, - iconId, - iMifFileName, - EMbmFmradioQgn_prop_image_tb_next, - EMbmFmradioQgn_prop_image_tb_next_mask ); - InstallFMRadioCommandActionL( KFMRadioCommandValueStepNext, EMusicWidgetTB3Trigger ); - iTbNextState = KFMRadioNext; - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 3 Exit" ))); - } - - if ( KFMRadioNextDimmed & aToolBarState ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 4 Enter" ))); - iconId.Set( EAknsMajorGeneric, EAknsMinorGenericQgnPropImageTbNextDimmed ); - iObserver->PublishImageL( this, - EMusicWidgetToolbarB3, - iconId, - iMifFileName, - EMbmFmradioQgn_prop_image_tb_next_dimmed, - EMbmFmradioQgn_prop_image_tb_next_dimmed_mask ); - InstallEmptyActionL( EMusicWidgetTB3Trigger ); - iTbNextState = KFMRadioNextDimmed; - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 4 Exit" ))); - } - - if ( KFMRadioMute & aToolBarState ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 5 Enter" ))); - iconId.Set( EAknsMajorGeneric, EAknsMinorGenericQgnIndiMusicWidgetTbRadioSound ); - iObserver->PublishImageL( this, - EMusicWidgetToolbarB2, - iconId, - iMifFileName, - EMbmFmradioQgn_indi_music_widget_tb_radio_sound, - EMbmFmradioQgn_indi_music_widget_tb_radio_sound_mask ); - InstallFMRadioCommandActionL( KFMRadioCommandValueUnmute, EMusicWidgetTB2Trigger ); - iTbMuteUnmuteState = KFMRadioMute; - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 5 Exit" ))); - } - - if ( KFMRadioUnmute & aToolBarState ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 6 Enter" ))); - iconId.Set( EAknsMajorGeneric, EAknsMinorGenericQgnIndiMusicWidgetTbRadioSoundMuted ); - iObserver->PublishImageL( this, - EMusicWidgetToolbarB2, - iconId, - iMifFileName, - EMbmFmradioQgn_indi_music_widget_tb_radio_sound_muted, - EMbmFmradioQgn_indi_music_widget_tb_radio_sound_muted_mask ); - InstallFMRadioCommandActionL( KFMRadioCommandValueMute, EMusicWidgetTB2Trigger ); - iTbMuteUnmuteState = KFMRadioUnmute; - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 6 Exit" ))); - } - - if ( KFMRadioMuteDimmed & aToolBarState ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 7 Enter" ))); - iconId.Set( EAknsMajorGeneric, EAknsMinorGenericQgnIndiMusicWidgetTbRadioSoundDimmed ); - iObserver->PublishImageL( this, - EMusicWidgetToolbarB2, - iconId, - iMifFileName, - EMbmFmradioQgn_indi_music_widget_tb_radio_sound_dimmed, - EMbmFmradioQgn_indi_music_widget_tb_radio_sound_dimmed_mask ); - InstallEmptyActionL( EMusicWidgetTB2Trigger ); - iTbMuteUnmuteState = KFMRadioMuteDimmed; - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 7 Exit" ))); - } - - if ( KFMRadioUnmuteDimmed & aToolBarState ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 8 Enter" ))); - iconId.Set( EAknsMajorGeneric, EAknsMinorGenericQgnIndiMusicWidgetTbRadioSoundMutedDimmed ); - iObserver->PublishImageL( this, - EMusicWidgetToolbarB2, - iconId, - iMifFileName, - EMbmFmradioQgn_indi_music_widget_tb_radio_sound_muted_dimmed, - EMbmFmradioQgn_indi_music_widget_tb_radio_sound_muted_dimmed_mask ); - InstallEmptyActionL( EMusicWidgetTB2Trigger ); - iTbMuteUnmuteState = KFMRadioUnmuteDimmed; - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdatePublishedToolBarL - 8 Exit" ))); - } - } - } - -// --------------------------------------------------------------------------- -// CFMRadioMCPPlugin::UpdateToolBarL -// --------------------------------------------------------------------------- -// -void CFMRadioMCPPlugin::UpdateToolBarL( TBool aForceApplicationClosing ) - { - if ( iActive ) - { - TUint muteDimmedState = iEngine->MuteState() == EFMRadioPSMuteStateOn ? - KFMRadioUnmuteDimmed : KFMRadioMuteDimmed; - // Update Next and Previous buttons. - if ( iEngine->AntennaStatus() == EFMRadioPSHeadsetDisconnected ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateToolBarL - 1" ))); - UpdatePublishedToolBarL( KFMRadioPreviousDimmed | muteDimmedState | KFMRadioNextDimmed); - return; - } - else if ( iEngine->ApplicationRunningState() != EFMRadioPSApplicationRunning || aForceApplicationClosing ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateToolBarL - 2" ))); - UpdatePublishedToolBarL( KFMRadioPreviousDimmed | muteDimmedState | KFMRadioNextDimmed); - return; - } - else if ( iEngine->PowerState() != EFMRadioPSRadioPowerOn ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateToolBarL - 3" ))); - UpdatePublishedToolBarL( KFMRadioPreviousDimmed | muteDimmedState | KFMRadioNextDimmed); - return; - } - else if ( iEngine->TuningState() != EFMRadioPSTuningUninitialized ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateToolBarL - 4" ))); - UpdatePublishedToolBarL( KFMRadioPreviousDimmed | KFMRadioNextDimmed ); - } - else if ( iPresetCount > 1 || ( iPresetCount == 1 && iEngine->Channel() == KErrNotFound ) ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateToolBarL - 5" ))); - UpdatePublishedToolBarL( KFMRadioPrevious | KFMRadioNext ); - } - else - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateToolBarL - 6" ))); - UpdatePublishedToolBarL( KFMRadioPreviousDimmed | KFMRadioNextDimmed ); - } - - // Update Mute/Unmute button - if ( iEngine->ApplicationRunningState() != EFMRadioPSApplicationRunning || aForceApplicationClosing ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateToolBarL - 7" ))); - UpdatePublishedToolBarL( muteDimmedState ); - } - else if ( iEngine->TuningState() != EFMRadioPSTuningUninitialized ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateToolBarL - 8" ))); - UpdatePublishedToolBarL( muteDimmedState ); - } - else - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateToolBarL - 9" ))); - HandleMuteStateChangeL( iEngine->MuteState() ); - } - } - } -// --------------------------------------------------------------------------- -// CFMRadioMCPPlugin::UpdateMusicWidgetTextL -// --------------------------------------------------------------------------- -// -void CFMRadioMCPPlugin::UpdateMusicWidgetTextL( TBool aForceApplicationClosing ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateMusicWidgetTextL" ))); - if ( iActive ) - { - TInt rightToLeftCharWidth = AknLayoutUtils::LayoutMirrored() ? sizeof(TText16) : 0; - - // Homescreen publishing - if ( iEngine->AntennaStatus() == EFMRadioPSHeadsetDisconnected && !aForceApplicationClosing ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateMusicWidgetTextL - Publishing HS antenna not connected: \"%S\""), &iAntennaNotConnectedText )); - iObserver->PublishTextL( this, EMusicWidgetText1, iAntennaNotConnectedText ); - } - else if ( iEngine->TuningState() != EFMRadioPSTuningUninitialized && !aForceApplicationClosing ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateMusicWidgetTextL - Publishing HS tuning: \"%S\""), &iTuningText )); - iObserver->PublishTextL( this, EMusicWidgetText1, iTuningText ); - } - else if ( iPresetCount && iEngine->Channel() != KErrNotFound ) - { - if( iEngine->ChannelName().Length() ) - { - // Station saved and name is available - RBuf name; - // For widget - // Preserve space for the channel name, format string and maximum index number - name.CreateL( iEngine->ChannelName().Length() + - iSavedStationFormat.Length() + - KDefaultRealWidth + - rightToLeftCharWidth ); - name.CleanupClosePushL(); - StringLoader::Format( name, iSavedStationFormat, KErrNotFound, iEngine->Channel() + 1 ); - - HBufC* tempName = name.AllocL(); - StringLoader::Format( name, *tempName, KErrNotFound, iEngine->ChannelName() ); - delete tempName; - tempName = NULL; - - if ( rightToLeftCharWidth ) - { - //E.g. 1. Name -> Name .1 - name.Insert( 0, KRightToLeftMark ); - } - - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateMusicWidgetTextL - Publishing Music Widget saved station: \"%S\""), &name )); - iObserver->PublishTextL( this, EMusicWidgetText1, name ); - CleanupStack::PopAndDestroy(); // name - } - else - { - // Station saved, but name for it is not available - HBufC* frequencyString = FrequencyStringLC( iEngine->Frequency() ); - RBuf formattedFrequency; - - // For widget - formattedFrequency.CreateL( iSavedStationFormatNoName.Length() + - frequencyString->Length() + - KDefaultRealWidth + - rightToLeftCharWidth ); - formattedFrequency.CleanupClosePushL(); - StringLoader::Format( formattedFrequency, iSavedStationFormatNoName, KErrNotFound, iEngine->Channel() + 1 ); - - HBufC* tempFrequency = formattedFrequency.AllocL(); - StringLoader::Format( formattedFrequency, *tempFrequency, KErrNotFound, *frequencyString ); - delete tempFrequency; - tempFrequency = NULL; - AknTextUtils::LanguageSpecificNumberConversion( formattedFrequency ); - - if ( rightToLeftCharWidth ) - { - //E.g. 1. Name -> Name .1 - formattedFrequency.Insert( 0, KRightToLeftMark ); - } - - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateMusicWidgetTextL - Publishing Music Widget saved station with frequency: \"%S\""), &formattedFrequency )); - iObserver->PublishTextL( this, EMusicWidgetText1, formattedFrequency ); - CleanupStack::PopAndDestroy( 2 ); // formattedFrequency, frequencyString - } - } - else if ( iEngine->RDSProgramService().Length() > 0 ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateMusicWidgetTextL - Publishing HS PS name: \"%S\""), &iEngine->RDSProgramService() )); - iObserver->PublishTextL( this, EMusicWidgetText1, iEngine->RDSProgramService() ); - } - else - { - TInt currentFrequency = iEngine->Frequency(); - // publish only valid frequency - if ( currentFrequency > 0 ) - { - HBufC* frequencyString = FrequencyStringLC( currentFrequency ); - - RBuf formattedFrequency; - // For widget - // Preserve space for the format string and maximum index number - formattedFrequency.CreateL( iFrequencyFormat.Length() + - frequencyString->Length() + - rightToLeftCharWidth ); - formattedFrequency.CleanupClosePushL(); - StringLoader::Format( formattedFrequency, iFrequencyFormat, KErrNotFound, *frequencyString ); - AknTextUtils::LanguageSpecificNumberConversion( formattedFrequency ); - - if ( rightToLeftCharWidth ) - { - //E.g. 1. Name -> Name .1 - formattedFrequency.Insert( 0, KRightToLeftMark ); - } - - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::UpdateMusicWidgetTextL - Publishing Music Widget frequency: \"%S\""), &formattedFrequency )); - iObserver->PublishTextL( this, EMusicWidgetText1, formattedFrequency ); - CleanupStack::PopAndDestroy( 2 ); // formattedFrequency,frequencyString - } - else - { - // Publish empty text instead of 0.00 MHz - iObserver->PublishTextL( this, EMusicWidgetText1, KNullDesC ); - } - } - } - } - -// --------------------------------------------------------------------------- -// CFMRadioMCPPlugin::FrequencyStringLC -// --------------------------------------------------------------------------- -// -HBufC* CFMRadioMCPPlugin::FrequencyStringLC( TInt aFrequency ) - { - TReal frequency = static_cast( aFrequency / static_cast( KHzConversionFactor )); - TRealFormat format( KFrequencyMaxLength, iEngine->FrequencyDecimalCount() ); - TBuf frequencyString; - frequencyString.Num( frequency, format ); - - return frequencyString.AllocLC(); - } - -void CFMRadioMCPPlugin::HandleRadioVolumeChangeL( TInt /* aVolume */ ) - { - } - -void CFMRadioMCPPlugin::HandleTuningStateChangeL( TFMRadioPSTuningState FDEBUGVAR( aTuningState ) ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleTuningStateChangeL: aTuningState=[%d]"), aTuningState)); - - if ( iActive ) - { - UpdateMusicWidgetTextL(); - UpdateToolBarL(); - } - - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleTuningStateChangeL - Exiting." ))); - } - -void CFMRadioMCPPlugin::HandleFrequencyChangeL( TInt FDEBUGVAR( aFrequency ) ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleFrequencyChangeL: aFrequency=%d"), aFrequency)); - } - -void CFMRadioMCPPlugin::HandleChannelChangeL( TInt FDEBUGVAR( aId ) ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleChannelChangeL: aId=[%d]"), aId )); - if ( iActive ) - { - UpdateMusicWidgetTextL(); - UpdateToolBarL(); - } - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleChannelChangeL - Exiting." ))); - } - -void CFMRadioMCPPlugin::HandleChannelModifyL( TInt aId ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleChannelModifyL: aId=[%d]"), aId )); - if ( iActive && aId == iEngine->Channel() ) - { - UpdateMusicWidgetTextL(); - } - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleChannelModifyL - Exiting." ))); - } - -void CFMRadioMCPPlugin::HandleMuteStateChangeL( TFMRadioPSRadioMuteState aMuteState ) - { - if ( iActive ) - { - switch( aMuteState ) - { - case EFMRadioPSMuteStateOn: - if ( iEngine->ApplicationRunningState() != EFMRadioPSApplicationRunning || - iEngine->AntennaStatus() == EFMRadioPSHeadsetDisconnected ) - { - UpdatePublishedToolBarL( KFMRadioUnmuteDimmed ); - } - else - { - UpdatePublishedToolBarL( KFMRadioUnmute ); - } - break; - case EFMRadioPSMuteStateOff: - case EFMRadioPSMuteStateUninitialized: - if ( iEngine->ApplicationRunningState() != EFMRadioPSApplicationRunning || - iEngine->AntennaStatus() == EFMRadioPSHeadsetDisconnected ) - { - UpdatePublishedToolBarL( KFMRadioMuteDimmed ); - } - else - { - UpdatePublishedToolBarL( KFMRadioMute ); - } - break; - default:break; - } - } - } - -void CFMRadioMCPPlugin::HandleApplicationRunningStateChangeL( TFMRadioPSApplicationRunningState aRunningState ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleApplicationRunningStateChangeL - aRunningState=%d"), aRunningState )); - - switch ( aRunningState ) - { - case EFMRadioPSApplicationRunning: - break; - case EFMRadioPSApplicationClosing: - UpdateMusicWidgetTextL( ETrue ); - UpdateToolBarL( ETrue ); - Deactivate(); - break; - default: - break; - } - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleApplicationRunningStateChangeL - Exiting." ))); - } - -void CFMRadioMCPPlugin::HandleFrequencyDecimalCountChangeL( TFMRadioPSFrequencyDecimalCount /* aDecimalCount */ ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleFrequencyDecimalCountChangeL." ))); - if ( iActive ) - { - UpdateMusicWidgetTextL(); - } - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleFrequencyDecimalCountChangeL - Exiting." ))); - } - -void CFMRadioMCPPlugin::HandleAntennaStatusChangeL( TFMRadioPSHeadsetStatus /*aAntennaStatus*/ ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleAntennaStatusChangeL - Enter"))); - if ( iActive ) - { - UpdateMusicWidgetTextL(); - UpdateToolBarL(); - } - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleAntennaStatusChangeL - Exiting."))); - } - -void CFMRadioMCPPlugin::HandlePresetListCountChangeL( TInt aPresetCount ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandlePresetListCountChangeL(%d) - Enter"), aPresetCount)); - iPresetCount = aPresetCount; - if ( iActive ) - { - if( !aPresetCount ) - { - UpdateMusicWidgetTextL(); - } - UpdateToolBarL(); - } - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandlePresetListCountChangeL - Exiting."))); - } - -void CFMRadioMCPPlugin::HandlePresetListFocusChangeL( TInt FDEBUGVAR( aPresetFocus ) ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandlePresetListFocusChangeL - %d"), aPresetFocus )); - } - -void CFMRadioMCPPlugin::HandleRDSProgramServiceChangeL( const TDesC& /*aProgramService*/ ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleRDSProgramServiceChangeL." ))); - if ( iActive ) - { - UpdateMusicWidgetTextL(); - } - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleRDSProgramServiceChangeL - Exiting." ))); - } - -void CFMRadioMCPPlugin::HandleRDSRadioTextChangeL( const TDesC& /*aRdsText*/ ) - { - } - -void CFMRadioMCPPlugin::HandleChannelNameChangeL( const TDesC& /*aName*/ ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandleChannelNameChangeL." ))); - } - -void CFMRadioMCPPlugin::HandlePowerStateChangeL( TFMRadioPSRadioPowerState aPowerState ) - { - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandlePowerStateChangeL(%d)."), aPowerState )); - if( aPowerState == EFMRadioPSRadioPowerOn ) - { - ActivateL(); - } - if ( iActive ) - { - UpdateMusicWidgetTextL(); - UpdateToolBarL(); - } - FTRACE(FPrint(_L(" *** S60 FMRadio -- CFMRadioMCPPlugin::HandlePowerStateChangeL - Exiting." ))); - } - -void CFMRadioMCPPlugin::InstallEmptyActionL( TMCPTriggerDestination aDestination ) - { - CLiwDefaultMap* mapTrigger = CLiwDefaultMap::NewLC(); - iObserver->PublishActionL( this, aDestination, mapTrigger ); - CleanupStack::PopAndDestroy( mapTrigger ); - } - -void CFMRadioMCPPlugin::InstallFMRadioCommandActionL( const TDesC& aCommand, TMCPTriggerDestination aDestination ) - { - CLiwDefaultMap* mapTrigger = CLiwDefaultMap::NewLC(); - CLiwDefaultMap* mapData = CLiwDefaultMap::NewLC(); - - mapTrigger->InsertL( KFMRadioPluginUid, TLiwVariant( TUid::Uid( KFMRadioActionHandlerImplementationUid ) ) ); - mapData->InsertL( KType, TLiwVariant( aCommand ) ); - mapData->InsertL( KFMRadioCommand , TLiwVariant( aCommand ) ); - mapTrigger->InsertL( KFMRadioData, TLiwVariant( mapData ) ); - - if ( iActive ) - { - iObserver->PublishActionL( this, aDestination, mapTrigger ); - } - - CleanupStack::PopAndDestroy( mapData ); - CleanupStack::PopAndDestroy( mapTrigger ); - } - -/** Provides a key-value pair table, that is used to identify the correct construction function for the requested interface. */ -const TImplementationProxy KFMRadioMCPPluginImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY( KFMRadioMCPPluginImplementationUid, CFMRadioMCPPlugin::NewL ) - }; - -const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ); - -// --------------------------------------------------------------------------- -// Returns the implementations provided by this ECOM plugin DLL. -// --------------------------------------------------------------------------- -// -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof( KFMRadioMCPPluginImplementationTable ) / sizeof( TImplementationProxy ); - return KFMRadioMCPPluginImplementationTable; - }