radioengine/settings/inc/cradioenginesettings.h
branchRCL_3
changeset 19 cce62ebc198e
--- /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<KNetworkIdentitySize>      iNetworkId;
+    TBuf<KNetworkCountryCodeSize>   iCountryCode;
+    TInt                            iHeadsetVolume;
+    TInt                            iSpeakerVolume;
+    TUint32                         iFrequency;
+    TInt                            iDefaultMinVolume;
+    TRadioRegion                    iDefaultRegion;
+    TRadioRegion                    iRegionId;
+
+    };
+
+#endif // C_RADIOENGINESETTINGS_H