fmradio/fmradioengine/src/fmradioenginecentralrepositoryhandler.cpp
branchRCL_3
changeset 19 cce62ebc198e
parent 18 1a6714c53019
child 20 93c594350b9a
--- a/fmradio/fmradioengine/src/fmradioenginecentralrepositoryhandler.cpp	Thu Aug 19 09:55:21 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,494 +0,0 @@
-/*
-* Copyright (c) 2005 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:  Contains implementation of the CCentralRepositoryHandler class.
-*
-*/
-
-
-//  INCLUDE FILES
-#include <centralrepository.h>
-#include <s32mem.h>
-#include <coemain.h> 
-#include <barsread.h>
-#include <ProfileEngineSDKCRKeys.h>
-#include <fmradioengine.rsg>
-
-#include "fmradioenginecentralrepositoryhandler.h"
-#include "fmradioengineradiosettings.h"
-#include "fmradioenginecrkeys.h"
-#include "debug.h"
-
-
-// CONSTANTS
-const TInt KRadioMaxStartupCountToTrack = 5;
-// ============================ MEMBER FUNCTIONS ===============================
-
-// ----------------------------------------------------
-// CCentralRepositoryHandler::CCentralRepositoryHandler
-// Default class constructor.
-// ----------------------------------------------------
-//
-CCentralRepositoryHandler::CCentralRepositoryHandler(
-    TRadioSettings& aRadioSettings)  // a reference to aRadioSettings
-    :iRadioSettings(&aRadioSettings)
-    {
-    FTRACE(FPrint(_L("calling CCentralRepositoryHandler::NewL()")));
-    }
-
-// ----------------------------------------------------
-// CCentralRepositoryHandler::ConstructL
-// Second phase class constructor.
-// ----------------------------------------------------
-//
-void CCentralRepositoryHandler::ConstructL()
-    {
-    iCentralRepository = CRepository::NewL( KCRUidFMRadioEngine );
-    
-    RetrieveInitialSettings();                
-    InitializeRegionsL();
-        
-    #ifdef __WINS__
-    SetInitialSettings();
-    #endif //__WINS__    
-    }
-
-// ----------------------------------------------------
-// CCentralRepositoryHandler::NewL
-// Two-phased class constructor.
-// ----------------------------------------------------
-//
-CCentralRepositoryHandler* CCentralRepositoryHandler::NewL(
-    TRadioSettings& aRadioSettings)  // a reference to aRadioSettings
-    {
-    CCentralRepositoryHandler *self = new(ELeave) CCentralRepositoryHandler(aRadioSettings);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop();
-    return self;
-    }
-
-// ----------------------------------------------------
-// CCentralRepositoryHandler::~CCentralRepositoryHandler
-// Destructor of CCentralRepositoryHandler class.
-// ----------------------------------------------------
-//
-CCentralRepositoryHandler::~CCentralRepositoryHandler()
-    {
-    iRadioSettings = NULL;
-    if ( iCentralRepository )
-         {
-         delete iCentralRepository;
-         }
-	iRegions.ResetAndDestroy();
-	iRegions.Close();                
-    }
-
-
-// ----------------------------------------------------
-// CCentralRepositoryHandler::RetrieveInitialSettings
-// Retrieves persistent settings from shared data.
-// Returns: None
-// ----------------------------------------------------
-//
-void CCentralRepositoryHandler::RetrieveInitialSettings()
-    {
-    FTRACE(FPrint(_L("calling CCentralRepositoryHandler::RetrieveInitialSettings() Start")));
-    TInt tempData;
-    
-    if ( iCentralRepository->Get( KRadioHeadsetVolume, tempData ) == KErrNone )
-          {
-          iRadioSettings->SetHeadsetVolume( tempData );
-          }
-          
-    if ( iCentralRepository->Get( KRadioSpeakerVolume, tempData ) == KErrNone ) 
-            {
-            iRadioSettings->SetSpeakerVolume( tempData );
-            }
-            
-    if ( iCentralRepository->Get( KFmRadioFrequency, tempData ) == KErrNone )
-        {
-        iRadioSettings->SetFrequency( tempData );
-        }
-        
-    if ( iCentralRepository->Get( KFmRadioChannel, tempData ) == KErrNone )
-        {
-        iRadioSettings->SetCurrentPreset( tempData );
-        }
-        
-    if ( iCentralRepository->Get( KFmRadioMode, tempData ) == KErrNone)
-        {
-        iRadioSettings->SetRadioMode( static_cast<CRadioEngine::TRadioMode>( tempData ) );        
-        }
-        	
-	if ( iCentralRepository->Get( KFMCRCurrentRegion, tempData ) != KErrNone )	        
-		{
-		iCentralRepository->Set( KFMCRCurrentRegion, KErrNotFound );			
-		}
-			
-	if ( iCentralRepository->Get( KRadioCRStartupCount, tempData ) == KErrNone )
-		{
-		iRadioSettings->SetStartupCount( tempData );
-		}
-					
-	if ( iCentralRepository->Get( KFMCRRdsAfSearchEnabled, tempData ) == KErrNone )
-        {
-        if ( static_cast<TBool> ( tempData ) )
-        	{
-        	iRadioSettings->SetRdsAfSearchEnabled();
-        	}
-        else
-        	{
-            iRadioSettings->SetRdsAfSearchDisabled();
-        	}
-        }
-	
-	if ( iCentralRepository->Get( KFMCRJapanRegionAllowed, tempData ) == KErrNone )
-		{				
-		iRadioSettings->SetJapanRegionAllowed( static_cast<TBool>( tempData ) );
-		}			       	        
-    }
-
-#ifdef __WINS__
-// ----------------------------------------------------
-// CCentralRepositoryHandler::SetInitialSettings
-// Set network info for emulator testing purposes
-// ----------------------------------------------------
-//
-void CCentralRepositoryHandler::SetInitialSettings()
-	{
-	_LIT(KNetworkInfoForEmulator, "358123");
-	iCentralRepository->Set( KFMRadioCREmulatorNetworkInfo, KNetworkInfoForEmulator );			
-	}
-#endif //__WINS__	
-
-// ----------------------------------------------------
-// CCentralRepositoryHandler::SaveEngineSettings
-// Save all engine related persistent info back to shared data
-// Returns: None
-// ----------------------------------------------------
-//
-void CCentralRepositoryHandler::SaveEngineSettings()
-    {
-    if ( IsFrequencyValid( iRadioSettings->Frequency() / KFMRadioFreqMultiplier ) )
-    	{
-    	iCentralRepository->Set( KFmRadioFrequency, iRadioSettings->Frequency() );
-    	}
-    else
-    	{
-    	TInt freq = MinFrequency() * KFMRadioFreqMultiplier;
-    	iCentralRepository->Set( KFmRadioFrequency, freq  );
-    	}
-            
-    iCentralRepository->Set( KFmRadioChannel, iRadioSettings->CurrentPreset() );
-    iCentralRepository->Set( KFmRadioMode, iRadioSettings->RadioMode() );
-    iCentralRepository->Set( KFMCRRdsAfSearchEnabled, iRadioSettings->IsRdsAfSearchEnabled() );
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::CountRegions
-// Return count of fmradio regions in regions array
-// ---------------------------------------------------------------------------
-//
-TInt CCentralRepositoryHandler::CountRegions() const
-    {
-    return iRegions.Count();
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::Region
-// Returns fmradio region at given index
-// ---------------------------------------------------------------------------
-//
-CFMRadioRegion& CCentralRepositoryHandler::Region( TInt aIndex ) const
-    {    
-    if( aIndex == KErrNotFound )
-        {
-        aIndex = RegionIndexForId( static_cast<TInt>( EFMRadioRegionDefault ) );        
-        }
-
-    return *iRegions[aIndex];
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::RegionId
-// Return current region Id.
-// ---------------------------------------------------------------------------
-//
-TInt CCentralRepositoryHandler::RegionId() const
-    {
-    TInt regionId;
-    iCentralRepository->Get( KFMCRCurrentRegion, regionId );
-    return regionId;
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::SetRegionIdL
-// Change the the current region Id.
-// ---------------------------------------------------------------------------
-//
-void CCentralRepositoryHandler::SetRegionIdL( TInt aRegion )
-    {
-    iCentralRepository->Set( KFMCRCurrentRegion, aRegion );
-    UpdateCurrentRegionIdx( aRegion );    
-    
-    iRadioSettings->SetFrequency( Region( iCurrentRegionIdx ).MinFrequency() * KFMRadioFreqMultiplier ); 
-	iRadioSettings->SetMinFrequency( MinFrequency() );
-	iRadioSettings->SetMaxFrequency( MaxFrequency() );
-	iRadioSettings->SetFrequencyStepSize( FrequencyStepSize() );
-	iRadioSettings->SetDecimalCount( DecimalCount() );
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::FrequencyStepSize
-// Returns frequency step size used for current region
-// ---------------------------------------------------------------------------
-//
-TUint32 CCentralRepositoryHandler::FrequencyStepSize() const
-    {
-    return Region( iCurrentRegionIdx ).StepSize();
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::MaxFrequency
-// Returns highest allowed frequency for current region
-// ---------------------------------------------------------------------------
-//
-TUint32 CCentralRepositoryHandler::MaxFrequency() const
-    {
-    return Region( iCurrentRegionIdx ).MaxFrequency();
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::MinFrequency
-// Returns lowest allowed frequency for current region
-// ---------------------------------------------------------------------------
-//
-TUint32 CCentralRepositoryHandler::MinFrequency() const
-    {
-    return Region( iCurrentRegionIdx ).MinFrequency();
-    }
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::DecimalCount
-// return decimal count for current region Mhz information
-// ---------------------------------------------------------------------------
-//
-TInt CCentralRepositoryHandler::DecimalCount() const
-    {
-    return Region( iCurrentRegionIdx ).DecimalCount();
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::InitializeRegionsL
-// Initializes the regions based on resources.
-// ---------------------------------------------------------------------------
-//
-void CCentralRepositoryHandler::InitializeRegionsL()
-    {
-	iRegions.ResetAndDestroy();
-
-	TResourceReader reader;
-	
-	CCoeEnv* coeEnv = CCoeEnv::Static();
-	
-	if ( iRadioSettings->IsJapanRegionAllowed() )
-		{
-		coeEnv->CreateResourceReaderLC( reader, R_RADIO_REGIONS_ALL );	
-		}
-	else // Japan region is not allowed so read region resources without Japan
-		{
-		coeEnv->CreateResourceReaderLC( reader, R_RADIO_REGIONS_WITHOUT_JAPAN );					
-		}
-			
-	TInt regionCount = reader.ReadInt16();
-
-	for( TInt i = 0 ; i < regionCount; i++ )
-		{
-		TInt resId = reader.ReadInt32(); // The next resource ID to read.
-        TResourceReader regionReader;
-        coeEnv->CreateResourceReaderLC( regionReader, resId );
-		User::LeaveIfError( iRegions.Append( CFMRadioRegion::NewL( regionReader ) ) );
-		CleanupStack::PopAndDestroy();
-		}
-
-	CleanupStack::PopAndDestroy();
-
-    UpdateCurrentRegionIdx( RegionId() );
-        	
-	iRadioSettings->SetMinFrequency( MinFrequency() * KFMRadioFreqMultiplier );
-	iRadioSettings->SetMaxFrequency( MaxFrequency() * KFMRadioFreqMultiplier );
-	iRadioSettings->SetFrequencyStepSize( FrequencyStepSize() );
-	iRadioSettings->SetDecimalCount( DecimalCount() );
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::RegionIndexForId
-// Converts Region ID to index
-// ---------------------------------------------------------------------------
-//
-TInt CCentralRepositoryHandler::RegionIndexForId( TInt aRegionId ) const
-    {
-    TInt idx = KErrNotFound;
-    for( TInt i = 0 ; i < CountRegions(); i++ )
-        {
-        if( Region( i ).Id() == static_cast<TFMRadioRegionSetting>( aRegionId ) )
-            {
-            idx = i;
-            /*lint -save -e960 (Note -- Violates MISRA Required Rule 58, non-switch break used)*/
-            break;
-            /*lint -restore*/
-            }
-        }
-    return idx;
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::UpdateCurrentRegionIdx
-// Updates the current region
-// ---------------------------------------------------------------------------
-//
-void CCentralRepositoryHandler::UpdateCurrentRegionIdx( TInt aRegionId )
-    {
-    iCurrentRegionIdx = RegionIndexForId( aRegionId );
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::IsOfflineProfileActiveL
-// Checks if offine profile is current active profile
-// Returns: true/false 
-// ---------------------------------------------------------------------------
-//    
-TBool CCentralRepositoryHandler::IsOfflineProfileActiveL()
-	{
-	CRepository* repository = CRepository::NewLC( KCRUidProfileEngine );
-	
-	TInt profileId(0);
-	
-	// Get ID of current profile
-	User::LeaveIfError( repository->Get( KProEngActiveProfile, profileId ) );
-	
-	CleanupStack::PopAndDestroy( repository );
-	
-	// Check value to determine the active profile
-	// 5 = Offline profile
-	if ( profileId == 5 )
-		{
-		// Current profile is the offline profile
-		return ETrue;
-		}
-	
-	return EFalse;	
-	}
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::IsFrequencyValid
-// Checks if frequency is in the current region range
-// ---------------------------------------------------------------------------
-//
-TBool CCentralRepositoryHandler::IsFrequencyValid( TUint32 aFrequency ) const
-    {
-    TBool ret( EFalse );
-    if( !aFrequency )
-        {
-        aFrequency = iRadioSettings->Frequency();
-        }
-    if ( aFrequency >= MinFrequency() && aFrequency <= MaxFrequency() )
-        {
-        ret = ETrue;
-        }
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::IncreaseStartupCount
-// Increases startup time by one and sets the value to the repository
-// ---------------------------------------------------------------------------
-//    
-void CCentralRepositoryHandler::IncreaseStartupCount() const
-	{				
-	TInt startCount = iRadioSettings->StartupCount();
-	// Dont update if maximum tracking count is reached
-	if ( startCount < KRadioMaxStartupCountToTrack )
-		{
-		startCount++;
-		iRadioSettings->SetStartupCount( startCount ); 
-		iCentralRepository->Set( KRadioCRStartupCount, startCount );	
-		}	
-	}
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::SaveHeadsetVolumeSetting
-// Save headset volume level to the repository
-// ---------------------------------------------------------------------------
-//	
-void CCentralRepositoryHandler::SaveHeadsetVolumeSetting() const
-	{
-	FTRACE( FPrint(_L("CCentralRepositoryHandler::SaveHeadsetVolumeSetting()") ) );
-	iCentralRepository->Set( KRadioHeadsetVolume, iRadioSettings->HeadsetVolume() );	
-	}
-	
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::SaveSpeakerVolumeSetting
-// Save speaker volume level to the repository
-// ---------------------------------------------------------------------------
-//	
-void CCentralRepositoryHandler::SaveSpeakerVolumeSetting() const
-	{
-	FTRACE( FPrint(_L("CCentralRepositoryHandler::SaveSpeakerVolumeSetting()") ) );
-	iCentralRepository->Set( KRadioSpeakerVolume, iRadioSettings->SpeakerVolume() );		
-	}
-	
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::MusicStoreNoteDisplayed
-// ---------------------------------------------------------------------------
-//
-TBool CCentralRepositoryHandler::MusicStoreNoteDisplayed()
-    {
-    TBool result;
-    TInt err = iCentralRepository->Get( KRadioMusicStoreNoteDisplayed, result );
-    if ( err != KErrNone )
-    	{
-    	result = EFalse;
-    	}    
-    return result;
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::SetMusicStoreNoteDisplayed
-// ---------------------------------------------------------------------------
-//
-void CCentralRepositoryHandler::SetMusicStoreNoteDisplayed()
-    {
-    iCentralRepository->Set( KRadioMusicStoreNoteDisplayed, 1 );
-    }
-
-// ---------------------------------------------------------------------------
-// CCentralRepositoryHandler::GetRTPlusSupportLevel
-// ---------------------------------------------------------------------------
-//
-TInt CCentralRepositoryHandler::GetRTPlusSupportLevel()
-    {
-    //See fmradioengine.hrh:TFMRadioRTPlusLevel for correct values
-    TInt result;
-    TInt err = iCentralRepository->Get( KRadioRTPlusSupportLevel, result );
-    if ( err != KErrNone )
-    	{
-    	result = KErrNotFound;
-    	}
-    
-    return result;
-    }
-
-// end of file
-