diff -r 1a6714c53019 -r cce62ebc198e radioengine/settings/inc/cradioenginesettings.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioengine/settings/inc/cradioenginesettings.h Tue Aug 31 15:15:02 2010 +0300 @@ -0,0 +1,184 @@ +/* +* 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: +* +*/ + +#ifndef C_RADIOENGINESETTINGS_H +#define C_RADIOENGINESETTINGS_H + +// User includes +#include "mradioenginesettings.h" +#include "mradiosettingssetter.h" +#include "cradioregion.h" + +// Forward declarations +class MRadioSettingsObserver; +class CRepository; +class CRadioSettingsImp; + +// Constants + +/** + * Maximum size of the network country code. + * From CTelephony::TNetworkInfoV1 in etel3rdparty.h + */ +enum { KNetworkCountryCodeSize = 4 }; + +/** + * Maximum size of the network identity. + * From CTelephony::TNetworkInfoV1 in etel3rdparty.h + */ +enum { KNetworkIdentitySize = 8 }; + +/** + * Concrete implementation of radio settings. + */ +NONSHARABLE_CLASS( CRadioEngineSettings ) : public CBase + , public MRadioSettingsSetter + { + +public: + + static CRadioEngineSettings* NewL( CRadioSettingsImp& aRadioSettingsImp ); + + ~CRadioEngineSettings(); + + /** + * Determines if region is allowed. + */ + TBool IsRegionAllowed( TRadioRegion aRegionId ) const; + +private: + + CRadioEngineSettings( CRadioSettingsImp& aRadioSettingsImp ); + + void ConstructL(); + +// from base class MRadioEngineSettings + + TInt HeadsetVolume() const; + TInt SpeakerVolume() const; + TInt Volume() const; + TInt OutputMode() const; + TInt AudioRoute() const; + TBool IsHeadsetVolMuted() const; + TBool IsSpeakerVolMuted() const; + TBool IsVolMuted() const; + TBool IsPowerOn() const; + TUint32 TunedFrequency() const; + TInt DefaultMinVolumeLevel() const; + TInt CountRegions() const; + CRadioRegion& Region( TInt aIndex ) const; + TRadioRegion RegionId() const; + TUint32 FrequencyStepSize() const; + TUint32 MaxFrequency() const; + TUint32 MinFrequency() const; + TInt DecimalCount() const; + TRadioRegion DefaultRegion() const; + TPtrC NetworkId() const; + TPtrC CountryCode() const; + +// from base class MRadioSettingsSetter + + void SetObserver( MRadioSettingsObserver* aObserver ); + TInt SetHeadsetVolume( TInt aVolume ); + TInt SetSpeakerVolume( TInt aVolume ); + TInt SetVolume( TInt aVolume ); + TInt SetOutputMode( TInt aOutputMode ); + TInt SetAudioRoute( TInt aAudioRoute ); + TInt SetHeadsetVolMuted( TBool aMuted ); + TInt SetSpeakerVolMuted( TBool aMuted ); + TInt SetVolMuted( TBool aMuted ); + TInt SetPowerOn( TBool aPowerState ); + TInt SetTunedFrequency( TUint32 aFrequency ); + TInt SetRegionId( TInt aRegion ); + TInt SetNetworkId( const TDesC& aNetworkId ); + TInt SetCountryCode( const TDesC& aCountryCode ); + +// New functions + + /** + * Initializes the data holders + */ + void InitializeDataHolders(); + + /** + * Gets a repository value and sets the default value if the key is not found + */ + TBool GetRepositoryValue( int aKey, TInt& aValue, TInt aDefault ); + + /** + * Sets a boolean value to cenrep and data holder + */ + TInt SetFlagValue( int aKey, int aFlagId, TInt aValue ); + + /** + * Initializes the regions as defined in the resource file. + */ + void InitializeRegionsL(); + + /** + * Converts Region ID to index + * + * @param aRegionId The region ID that is wanted to convert + * @return The region index, KErrNotFound if no match found + */ + TInt RegionIndexForId( TInt aRegionId ) const; + + /** + * Updates the current region index + * + * @param aRegionId The new region ID + */ + void UpdateCurrentRegionIdx( TInt aRegionId ); + +private: // data + + /** + * The observer for the setting changes. + * Not own. + */ + MRadioSettingsObserver* iObserver; + + /** + * The available regions. + */ + RRadioRegionArray iRegions; + + /** + * The current region. + */ + TInt iCurrentRegionIdx; + + CRadioSettingsImp& iRadioSettingsImp; + + RResourceFile iResFile; + + CRepository* iRepository; + + // Data holders for quick access + TBitFlags iFlags; + TBuf iNetworkId; + TBuf iCountryCode; + TInt iHeadsetVolume; + TInt iSpeakerVolume; + TUint32 iFrequency; + TInt iDefaultMinVolume; + TRadioRegion iDefaultRegion; + TRadioRegion iRegionId; + + }; + +#endif // C_RADIOENGINESETTINGS_H