--- a/internetradio2.0/activeidlesrc/iractiveidle.cpp Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,873 +0,0 @@
-/*
-* Copyright (c) 2006-2007 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: ?Description
-*
-*/
-
-
-#include <aicontentobserver.h>
-#include <aiutility.h>
-#include <aknutils.h>
-#include <apgcli.h>
-#include <bautils.h>
-#include <data_caging_path_literals.hrh>
-#include <e32property.h>
-#include <stringloader.h>
-#include <iractiveidle.rsg>
-#include <features.hrh>
-#include <eikenv.h>
-#include <apgtask.h>
-#include "irmetadata.h"
-#include "irpubsubkeys.h"
-#include "ir.hrh"
-#include "iractiveidle.h"
-#include "iractiveidleeng.h"
-#include "iractiveidlestatedetector.h"
-#include "irdebug.h"
-#include "irplugincontentmodel.h"
-
-
-
-#include <eikenv.h>
-
-const TInt KIRMinVolumeLevel = 0;
-const TInt KIRMaxVolumeLevel = 10;
-const TInt KIRPublishIndex = 1; // Always 1 in this plugin
-const TInt KIRActiveIdleGranularity = 3;
-
-_LIT( KIRActiveIdleResourceFileName, "iractiveidle.rsc" ); /** Filename of the Internet Radio Active Idle resource file. */
-_LIT( KIRPluginName, "iRAPP Plugin");
-_LIT(KSeparatorDot,". ");
-//_LIT(KSeparatorHyphen," - ")
-//_LIT(KSeparatorColon," : ")
-_LIT8( KIRSpace, " " );
-_LIT8( KIRCommandLineActiveIdle, "-a" );
-_LIT8( KIRCommandLineActiveIdleCommandStartNowPlayingView, "startnowplaying" );
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::CIRActiveIdle()
-// Constructor.
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdle::CIRActiveIdle()
- {
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::ConstructL()
-// Second-phase constructor.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::ConstructL()
- {
- IRLOG_DEBUG( "CIRActiveIdle::ConstructL" );
- InitializeResourceLoadingL();
- iInfo.iUid = KUidIRPlugin;
- iInfo.iName.Copy( KIRPluginName );
- iContent = AiUtility::CreateContentItemArrayIteratorL( KAiIRContent );
- iResources = AiUtility::CreateContentItemArrayIteratorL( KAiIRResources );
- iEvents = AiUtility::CreateContentItemArrayIteratorL( KAiIREvents );
- iMetaData = CIRMetaData::NewL();
- iRunningState = EIRPSApplicationUninitialized;
- IRLOG_DEBUG( "CIRActiveIdle::ConstructL - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::NewL()
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdle* CIRActiveIdle::NewL()
- {
- IRLOG_DEBUG( "CIRActiveIdle::NewL" );
- CIRActiveIdle* self = new( ELeave ) CIRActiveIdle;
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- IRLOG_DEBUG( "CIRActiveIdle::NewL - Exiting." );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::~CIRActiveIdle()
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CIRActiveIdle::~CIRActiveIdle()
- {
- IRLOG_DEBUG( "CIRActiveIdle::~CIRActiveIdle" );
- if ( iActiveIdleResourceOffset > 0 )
- {
- CCoeEnv::Static()->DeleteResourceFile( iActiveIdleResourceOffset );
- }
- iObservers.Close();
- Release( iContent );
- Release( iResources );
- Release( iEvents );
-
- delete iMetaData;
- delete iIRTerminationDetector;
- delete iEngine;
- IRLOG_DEBUG( "CIRActiveIdle::~CIRActiveIdle - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::InitializeResourceLoadingL()
-// Initialize resource file for loading resources.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::InitializeResourceLoadingL()
- {
- IRLOG_DEBUG( "CIRActiveIdle::InitializeResourceLoadingL" );
-
- CCoeEnv* coeEnv = CCoeEnv::Static();
- RFs fs( coeEnv->FsSession() );
- TFileName fileName;
- TFileName baseResource;
- TFindFile finder( fs );
- TLanguage language( ELangNone );
-
- TParsePtrC parse( KIRActiveIdleResourceFileName );
- _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( KIRActiveIdleResourceFileName );
- BaflUtils::NearestLanguageFile( fs, fileName, language );
- if ( language != ELangNone && BaflUtils::FileExists( fs, fileName ) )
- {
- found = ETrue;
- iActiveIdleResourceOffset = 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 ) )
- {
- iActiveIdleResourceOffset = coeEnv->AddResourceFileL( baseResource );
- }
- }
-
-
-
- IRLOG_DEBUG( "CIRActiveIdle::InitializeResourceLoadingL - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::LoadResourcesL()
-// Loads the required resources
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::LoadResourcesL()
- {
- IRLOG_DEBUG( "CIRActiveIdle::LoadResourcesL" );
-
- if ( !iIRTerminationDetector )
- {
- iIRTerminationDetector = new (ELeave) CIRActiveIdleStateDetector( *this );
- }
-
- if ( !iEngine )
- {
- iEngine = CIRActiveIdleEng::NewL( *this );
- iEngine->SecondConstructL();
- }
- IRLOG_DEBUG( "CIRActiveIdle::LoadResourcesL - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::Resume()
-// Now it is allowed to actively publish data to observers.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::Resume( TAiTransitionReason /*aReason*/ )
- {
- IRLOG_DEBUG( "CIRActiveIdle::Resume" );
- TRAP_IGNORE( LoadResourcesL() )
- IRLOG_DEBUG( "CIRActiveIdle::Resume - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::Suspend()
-// Not allowed to consume CPU resources, e.g MUST stop each timer,
-// cancel outstanding asynchronous operations, etc.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::Suspend( TAiTransitionReason /*aReason*/ )
- {
- IRLOG_DEBUG( "CIRActiveIdle::Suspend" );
-
- if ( iIRTerminationDetector )
- {
- iIRTerminationDetector->Cancel();
- }
-
- delete iEngine;
- iEngine = NULL;
- IRLOG_DEBUG( "CIRActiveIdle::Suspend - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::Stop
-// Must free all memory and CPU resources and close all open files.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::Stop( TAiTransitionReason /*aReason*/ )
- {
- IRLOG_DEBUG( "CIRActiveIdle::Stop" );
- delete iIRTerminationDetector;
- iIRTerminationDetector = NULL;
- delete iEngine;
- iEngine = NULL;
- IRLOG_DEBUG( "CIRActiveIdle::Stop - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::SubscribeL
-// Adds the content observer / subscriber to plug-in.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::SubscribeL( MAiContentObserver& aObserver )
- {
- IRLOG_DEBUG( "CIRActiveIdle::SubscribeL" );
- iObservers.AppendL( &aObserver );
- IRLOG_DEBUG( "CIRActiveIdle::SubscribeL - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::ConfigureL
-// Configures the plug-in.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::ConfigureL( RAiSettingsItemArray& /*aSettings*/ )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::Extension
-// Returns interface extension. In S60 3.2 only event & property extensions
-// are supported.
-// ---------------------------------------------------------------------------
-//
-TAny* CIRActiveIdle::Extension( TUid aUid )
- {
- IRLOG_DEBUG( "CIRActiveIdle::Extension" );
- TAny* ret = NULL;
- if ( aUid == KExtensionUidProperty )
- {
- ret = static_cast<MAiPropertyExtension*>( this );
- }
- else if ( aUid == KExtensionUidEventHandler )
- {
- ret = static_cast<MAiEventHandlerExtension*>( this );
- }
- else
- {
- ret = NULL;
- }
- IRLOG_DEBUG( "CIRActiveIdle::Extension - Exiting." );
- return ret;
- }
-
-// ----------------------------------------------------------------------------
-// CIRActiveIdle::GetPropertyL
-// Reads a plugin property.
-// ----------------------------------------------------------------------------
-//
-TAny* CIRActiveIdle::GetPropertyL( TInt aProperty )
- {
- IRLOG_DEBUG( "CIRActiveIdle::GetPropertyL" );
- switch ( aProperty )
- {
- case EAiPublisherInfo:
- return &iInfo;
-
- case EAiPublisherContent:
- return static_cast<MAiContentItemIterator*>( iContent );
-
- case EAiPublisherResources:
- return static_cast<MAiContentItemIterator*>( iResources );
-
- case EAiPublisherEvents:
- return static_cast<MAiContentItemIterator*>( iEvents );
-
- default:
- break;
- }
- User::Leave( KErrNotSupported );
- IRLOG_DEBUG( "CIRActiveIdle::GetPropertyL - Exiting." );
- return NULL;
- }
-
-// ----------------------------------------------------------------------------
-// CIRActiveIdle::SetPropertyL
-// Sets a plugin property
-// ----------------------------------------------------------------------------
-//
-void CIRActiveIdle::SetPropertyL( TInt aProperty, TAny* aValue )
- {
- IRLOG_DEBUG( "CIRActiveIdle::SetPropertyL" );
- if ( aValue )
- {
- switch ( aProperty )
- {
- case EAiPublisherInfo:
- {
- const TAiPublisherInfo* info =
- static_cast<const TAiPublisherInfo*>( aValue );
- iInfo.iUid.iUid = info->iUid.iUid;
- iInfo.iName.Copy( info->iName );
- break;
- }
- default:
- break;
- }
- }
- else
- {
- User::Leave(KErrGeneral);
- }
- IRLOG_DEBUG( "CIRActiveIdle::SetPropertyL - Exiting." );
- }
-
-// ----------------------------------------------------------------------------
-// CIRActiveIdle::HandleEvent
-// Invoked by the framework when plug-in must handle an event
-// ----------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandleEvent( TInt aEvent, const TDesC& /*aParam*/ )
- {
- IRLOG_DEBUG( "CIRActiveIdle::HandleEvent" );
- switch ( aEvent )
- {
- case EAiIREventVolInc:
- break;
- case EAiIREventVolDec:
- break;
- case EAiIREventLaunchRadio:
- {
- TRAP_IGNORE( StartApplicationL( KUidActiveInternetRadioApp,
- KNullDesC8 ) )
- break;
- }
- default:
- break;
- }
- IRLOG_DEBUG( "CIRActiveIdle::HandleEvent - Exiting." );
- }
-
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::Clean
-// Cleans all data fields from the plugin
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::Clean()
- {
- IRLOG_DEBUG( "CIRActiveIdle::Clean" );
- for ( TInt i = 0; i < iObservers.Count(); i++ )
- {
- MAiContentObserver* observer = iObservers[i];
- observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
- observer->Clean( *this, EAiIRContentVolume, KIRPublishIndex );
- observer->Clean( *this, EAiIRContentOneLineInfoCaption, KIRPublishIndex );
- observer->Clean( *this, EAiIRContentAppIcon, KIRPublishIndex );
- observer->Clean( *this, EAiIRContentPresetCaption, KIRPublishIndex );
- observer->Clean( *this, EAiIRContentArtistCaption, KIRPublishIndex );
- observer->Clean( *this, EAiIRContentTrackCaption, KIRPublishIndex );
- observer->Commit( reinterpret_cast<TInt32>( this ) );
- }
- IRLOG_DEBUG( "CIRActiveIdle::Clean - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::StartApplicationL
-// Launches an application.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::StartApplicationL( const TUid& aUid, const TDesC8& aCommandLine )
- {
- IRLOG_DEBUG( "CIRActiveIdle::StartApplicationL" );
-
- TApaTaskList taskList( CCoeEnv::Static()->WsSession() );
- TApaTask task = taskList.FindApp( KUidActiveInternetRadioApp );
-
-// _LIT8(KNull,"")
- if ( task.Exists() )
- {
-
- TPtrC8 activeIdleCmdId( KIRCommandLineActiveIdle );
- TPtrC8 spacePtr( KIRSpace );
-
- TPtrC8 startNowPlayingCmdvalue(
- KIRCommandLineActiveIdleCommandStartNowPlayingView );
-
- HBufC8* buf = HBufC8::NewLC(activeIdleCmdId.Length()
- + spacePtr.Length() + startNowPlayingCmdvalue.Length());
- TPtr8 tail( buf->Des() );
-
-
- tail.Append( activeIdleCmdId );
- tail.Append( spacePtr );
- tail.Append( startNowPlayingCmdvalue );
- task.SendMessage(KUidActiveInternetRadioApp,tail);
- task.BringToForeground();
-
- CleanupStack::PopAndDestroy( buf );
-
- }
- else
- {
- RApaLsSession apaSession;
- CleanupClosePushL( apaSession );
-
- User::LeaveIfError( apaSession.Connect() );
- User::LeaveIfError( apaSession.GetAllApps() );
-
- TApaAppInfo appInfo;
- User::LeaveIfError( apaSession.GetAppInfo( appInfo, aUid ) );
-
- CApaCommandLine* startParams = CApaCommandLine::NewLC();
- startParams->SetExecutableNameL( appInfo.iFullName );
- startParams->SetCommandL( EApaCommandRun );
- startParams->SetTailEndL( aCommandLine );
- User::LeaveIfError( apaSession.StartApp( *startParams ) );
- CleanupStack::PopAndDestroy( 2, &apaSession );
- }
- IRLOG_DEBUG( "CIRActiveIdle::StartApplicationL - Exiting." );
- }
-
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleChannelChangeL
-// Handles channel change
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandleChannelChangeL()
- {
- IRLOG_DEBUG( "CIRActiveIdle::HandleChannelChangeL" );
- RProperty::Get ( KUidActiveInternetRadioApp, KIRPSDataChannel,
- iChannelName );
- RProperty::Get ( KUidActiveInternetRadioApp, KIRPSPresetIndex,
- iPresetIndex);
-
- IRLOG_DEBUG3( "CIRActiveIdle::HandleChannelChangeL - iChannelName=%S, iPresetIndex=%d", &iChannelName, iPresetIndex );
-
- HBufC* stringholder = NULL;
-
-
- CDesCArray* array = new (ELeave) CDesCArrayFlat(KIRActiveIdleGranularity);
- CleanupStack::PushL( array );
-
- MDesCArray* list = STATIC_CAST(MDesCArray*,array);
-
- CArrayFix<TInt>* presetCounts = new (ELeave) CArrayFixFlat<TInt>( 2 );
- CleanupStack::PushL( presetCounts );
- CEikonEnv* env = CEikonEnv::Static();
- if(iPresetIndex != 0)
- {
- if(iMetaData->Artist() == KNullDesC && iMetaData->Song() == KNullDesC)
- {
- array->AppendL( iChannelName );
- presetCounts->AppendL( iPresetIndex );
- stringholder = StringLoader::LoadLC( R_IRAPP_ACTIVEIDLE_NOSTATIONDATA,*list,
- *presetCounts ,env );
- }
- else
- {
- array->AppendL( iMetaData->Artist() ); //First string
- array->AppendL( iMetaData->Song() );
- array->AppendL( iChannelName );
- presetCounts->AppendL( iPresetIndex );
- stringholder = StringLoader::LoadLC( R_IRAPP_ACTIVEIDLE_STATIONDATA,*list,
- *presetCounts ,env );
- }
-
- }
- else
- {
- array->AppendL( iMetaData->Artist() ); //First string
- array->AppendL( iMetaData->Song() );
- array->AppendL( iChannelName );
- stringholder = StringLoader::LoadLC( R_IRAPP_AI_NOINDEX_STATIONDATA,*list);
- }
-
-
- for ( TInt i = 0; i < iObservers.Count(); i++ )
- {
- MAiContentObserver* observer = iObservers[i];
-
- observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
-
- observer->Publish( *this, EAiIRContentOneLineInfoCaption, *stringholder,
- KIRPublishIndex );
- observer->Commit( reinterpret_cast<TInt32>( this ) );
- }
-
- CleanupStack::PopAndDestroy(stringholder);
- CleanupStack::PopAndDestroy( presetCounts );
-
- // Pop and delete strings array
- CleanupStack::PopAndDestroy();
- IRLOG_DEBUG( "CIRActiveIdle::HandleChannelChangeL - Exiting." ); IRLOG_DEBUG( "CIRActiveIdle::HandleChannelChangeL - Exiting." );
- }
-
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleMetaDataReceivedL
-// Handles meta data changes
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandleMetaDataReceivedL( const CIRMetaData& aMetaData )
- {
- IRLOG_DEBUG( "CIRActiveIdle::HandleMetaDataReceivedL" );
- iMetaData->SetL( aMetaData );
- RProperty::Get ( KUidActiveInternetRadioApp, KIRPSDataChannel,
- iChannelName );
- RProperty::Get ( KUidActiveInternetRadioApp, KIRPSPresetIndex,
- iPresetIndex);
-
- IRLOG_DEBUG3( "CIRActiveIdle::HandleChannelChangeL - iChannelName=%S, iPresetIndex=%d", &iChannelName, iPresetIndex );
-
- HBufC* stringholder = NULL;
-
- CDesCArray* array = new (ELeave) CDesCArrayFlat(KIRActiveIdleGranularity);
- CleanupStack::PushL( array );
-
- MDesCArray* list = STATIC_CAST(MDesCArray*,array);
-
- CArrayFix<TInt>* presetCounts = new (ELeave) CArrayFixFlat<TInt>( 2 );
- CleanupStack::PushL( presetCounts );
- CEikonEnv* env = CEikonEnv::Static();
- if(iPresetIndex != 0)
- {
- if(iMetaData->Artist() == KNullDesC && iMetaData->Song() == KNullDesC)
- {
- array->AppendL( iChannelName );
- presetCounts->AppendL( iPresetIndex );
- stringholder = StringLoader::LoadLC( R_IRAPP_ACTIVEIDLE_NOSTATIONDATA,*list,
- *presetCounts ,env );
- }
- else
- {
- array->AppendL( iMetaData->Artist() ); //First string
- array->AppendL( iMetaData->Song() );
- array->AppendL( iChannelName );
- presetCounts->AppendL( iPresetIndex );
- stringholder = StringLoader::LoadLC( R_IRAPP_ACTIVEIDLE_STATIONDATA,*list,
- *presetCounts ,env );
- }
-
- }
- else
- {
- array->AppendL( iMetaData->Artist() ); //First string
- array->AppendL( iMetaData->Song() );
- array->AppendL( iChannelName );
- stringholder = StringLoader::LoadLC( R_IRAPP_AI_NOINDEX_STATIONDATA,*list);
- }
-
-
- for ( TInt i = 0; i < iObservers.Count(); i++ )
- {
- MAiContentObserver* observer = iObservers[i];
-
- observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
-
- observer->Publish( *this, EAiIRContentOneLineInfoCaption, *stringholder,
- KIRPublishIndex );
-
- observer->Commit( reinterpret_cast<TInt32>( this ) );
- }
-
- CleanupStack::PopAndDestroy(stringholder);
- CleanupStack::PopAndDestroy( presetCounts );
-
- // Pop and delete strings array
- CleanupStack::PopAndDestroy();
-
- IRLOG_DEBUG( "CIRActiveIdle::HandleMetaDataReceivedL - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandlePlayStopL
-// Handles data change in Stop State
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandlePlayStopL( TIRStopPlayState aState )
- {
- IRLOG_DEBUG( "CIRActiveIdle::HandlePlayStopL" );
- RProperty::Get( KUidActiveInternetRadioApp, KIRPSDataChannel, iChannelName );
- RProperty::Get(KUidActiveInternetRadioApp, KIRPSPresetIndex, iPresetIndex);
- HBufC* oneLineInfoCaption = NULL;
- HBufC* presetCaption = NULL;
-
- // Checks if the channel is in favourites and if it is displays
- // the channel name with the preset index.
- if ( iPresetIndex == 0 )
- {
- oneLineInfoCaption = iChannelName.AllocLC();
- presetCaption = iChannelName.AllocLC();
- }
- else
- {
- TBuf<KMAXLENGTH> oneLineInfoBuffer;
- oneLineInfoBuffer.AppendNum(iPresetIndex);
- oneLineInfoBuffer.Append(KSeparatorDot);
- oneLineInfoBuffer.Append(iChannelName);
- oneLineInfoBuffer.Trim();
- oneLineInfoCaption = oneLineInfoBuffer.AllocLC();
- TBuf<KMAXLENGTH> presetBuffer;
- presetBuffer.AppendNum(iPresetIndex);
- presetBuffer.Append(KSeparatorDot);
- presetBuffer.Append(iChannelName);
- presetBuffer.Trim();
- presetCaption = presetBuffer.AllocLC();
- }
-
-
-
- if ( aState != EIRStateUninitialized )
- {
- for ( TInt i = 0; i < iObservers.Count(); i++ )
- {
- MAiContentObserver* observer = iObservers[i];
-
- observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
-
- observer->Publish( *this, EAiIRContentPresetCaption, *presetCaption,
- KIRPublishIndex );
-
- if ( aState == EIRStatePlay )
- {
- observer->Publish( *this, EAiIRContentAppIcon, EAiIRResourceIRPlayingIcon,
- KIRPublishIndex );
- }
- else
- {
- observer->Publish( *this, EAiIRContentAppIcon, EAiIRResourceIRStoppedIcon,
- KIRPublishIndex );
- observer->Publish( *this, EAiIRContentOneLineInfoCaption, *oneLineInfoCaption,
- KIRPublishIndex );
- }
-
- observer->Commit( reinterpret_cast<TInt32>( this ) );
- }
- }
-
- CleanupStack::PopAndDestroy( presetCaption );
- CleanupStack::PopAndDestroy( oneLineInfoCaption );
- IRLOG_DEBUG( "CIRActiveIdle::HandlePlayStopL - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleVolumeChangeL
-// Handles volume change
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandleVolumeChangeL( const TInt aVolume )
- {
- IRLOG_DEBUG( "CIRActiveIdle::HandleVolumeChangeL" );
- if ( aVolume >= KIRMinVolumeLevel && aVolume <= KIRMaxVolumeLevel )
- {
- TInt resourceId( EAiIRResourceVol1 );
- switch ( aVolume )
- {
- case EVolumeLevel0:
- {
- resourceId = EAiIRResourceVol0;
- break;
- }
- case EVolumeLevel1:
- {
- resourceId = EAiIRResourceVol1;
- break;
- }
- case EVolumeLevel2:
- {
- resourceId = EAiIRResourceVol2;
- break;
- }
- case EVolumeLevel3:
- {
- resourceId = EAiIRResourceVol3;
- break;
- }
- case EVolumeLevel4:
- {
- resourceId = EAiIRResourceVol4;
- break;
- }
- case EVolumeLevel5:
- {
- resourceId = EAiIRResourceVol5;
- break;
- }
- case EVolumeLevel6:
- {
- resourceId = EAiIRResourceVol6;
- break;
- }
- case EVolumeLevel7:
- {
- resourceId = EAiIRResourceVol7;
- break;
- }
- case EVolumeLevel8:
- {
- resourceId = EAiIRResourceVol8;
- break;
- }
- case EVolumeLevel9:
- {
- resourceId = EAiIRResourceVol9;
- break;
- }
- case EVolumeLevel10:
- {
- resourceId = EAiIRResourceVol10;
- break;
- }
- default:
- break;
- }
- for ( TInt i = 0; i < iObservers.Count(); i++ )
- {
- MAiContentObserver* observer = iObservers[i];
- //Initiates content publishing transaction.
- observer->StartTransaction( reinterpret_cast<TInt32>( this ) );
- //Informs that content identified by reference resourceId must be
- //published to UI control identified by selector
- //EAiIRContentVolume
- observer->Publish( *this, EAiIRContentVolume, resourceId, KIRPublishIndex );
- //Requests framework that content publishing transaction must be
- //finalized and content should be rendered to the screen.
- //Displays the volume level onto the Active Idle content area.
- observer->Commit( reinterpret_cast<TInt32>( this ) );
- }
- }
- else
- {
- User::Leave(KErrGeneral);
- }
- IRLOG_DEBUG( "CIRActiveIdle::HandleVolumeChangeL - Exiting." );
-
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleApplicationRunningStateChangeL
-// Handles changes in Internet Radio application running state.
-// ---------------------------------------------------------------------------
-//
-void CIRActiveIdle::HandleApplicationRunningStateChangeL(
- const TIRPSApplicationRunningState aRunningState )
- {
- IRLOG_DEBUG( "CIRActiveIdle::HandleApplicationRunningStateChangeL" );
- if ( iRunningState != aRunningState )
- {
- switch ( aRunningState )
- {
- case EIRPSApplicationUninitialized:
- {
- break;
- }
- //called when application starts
- case EIRPSApplicationRunning:
- {
- for ( TInt i = 0; i < iObservers.Count(); i++ )
- {
- MAiContentObserver* observer = iObservers[i];
- //Initiates content publishing transaction.
- observer->StartTransaction(reinterpret_cast<TInt32>(
- this ) );
- //Invoked by the plug-in to inform that content identified
- //by reference EAiIRResourceIRStoppedIcon must be published
- //to UI crtl identified by selector EAiIRContentAppIcon.
- // Full Page Idle: shows IR icon.
- // Navigation Bar Idle: updates title text and switches correct layout.
- // App has just started, publish initially to stopped state.
- observer->Publish( *this, EAiIRContentAppIcon, EAiIRResourceIRStoppedIcon,
- KIRPublishIndex );
- observer->Publish( *this, EAiIRContentOneLineInfoCaption,KNullDesC,
- KIRPublishIndex );
-
- observer->Commit( reinterpret_cast<TInt32>( this ) );
- }
-
- if ( iIRTerminationDetector )
- {
- iIRTerminationDetector->StartListeningL();
- }
- break;
- }
- // called when the application exits
- case EIRPSApplicationClosing:
- {
- Clean();
- break;
- }
- default:
- break;
- }
- iRunningState = aRunningState;
- }
- IRLOG_DEBUG( "CIRActiveIdle::HandleApplicationRunningStateChangeL - Exiting." );
- }
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleBufferingStateL
-// Handles changes in Internet Radio buffering state
-// ---------------------------------------------------------------------------
-//
-
-void CIRActiveIdle::HandleBufferingStateL(TIRBufferingState aState )
- {
- if (EIRStateBufferingStart == aState)
- {
- // do nothing, just remove build warning
- }
- }