--- 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 <AknUtils.h>
-#include <bautils.h>
-#include <coemain.h>
-#include <data_caging_path_literals.hrh>
-#include <data_caging_paths_strings.hrh>
-#include <e32cmn.h>
-#include <ecom/implementationproxy.h>
-#include <liwvariant.h>
-#include <StringLoader.h>
-#include <AknsConstants.h>
-#include <AknsItemID.h>
-#include <fmradiomcpplugin.rsg>
-#include <fmradio.mbg>
-
-#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<TReal>( aFrequency / static_cast<TReal>( KHzConversionFactor ));
- TRealFormat format( KFrequencyMaxLength, iEngine->FrequencyDecimalCount() );
- TBuf<KDefaultRealWidth> 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;
- }