radioengine/settings/inc/cradioenginesettings.h
changeset 24 6df133bd92e1
child 28 075425b8d9a4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/settings/inc/cradioenginesettings.h	Fri Jun 04 10:21:36 2010 +0100
@@ -0,0 +1,150 @@
+/*
+* 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"
+#include "mradiorepositoryentityobserver.h"
+#include "cradiosettingsbase.h"
+
+// Forward declarations
+class MRadioSettingsObserver;
+
+/**
+ * Concrete implementation of radio settings.
+ */
+NONSHARABLE_CLASS( CRadioEngineSettings ) : public CRadioSettingsBase
+                                          , public MRadioSettingsSetter
+                                          , public MRadioRepositoryEntityObserver
+    {
+
+public:
+
+    static CRadioEngineSettings* NewL( CRadioRepositoryManager& aRepositoryManager, CCoeEnv& aCoeEnv );
+
+    ~CRadioEngineSettings();
+
+    /**
+     * Determines if region is allowed.
+     */
+    TBool IsRegionAllowed( TRadioRegion aRegionId ) const;
+
+private:
+
+    CRadioEngineSettings( CRadioRepositoryManager& aRepositoryManager, CCoeEnv& aCoeEnv );
+
+    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;
+    TBool RdsAfSearchEnabled() const;
+    TRadioRegion DefaultRegion() const;
+    TPtrC NetworkId() const;
+    TPtrC SubscriberId() 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 SetRdsAfSearch( TBool aEnabled );
+    TInt SetNetworkId( const TDesC& aNetworkId );
+    TInt SetSubscriberId( const TDesC& aSubscriberId );
+    TInt SetCountryCode( const TDesC& aCountryCode );
+
+// from base class MRadioRepositoryEntityObserver
+
+    void HandleRepositoryValueChangeL( const TUid& aUid, TUint32 aKey, TInt aValue, TInt aError );
+    void HandleRepositoryValueChangeL( const TUid& /*aUid*/, TUint32 /*aKey*/, const TReal& /*aValue*/, TInt /*aError*/ ) {}
+    void HandleRepositoryValueChangeL( const TUid& /*aUid*/, TUint32 /*aKey*/, const TDesC8& /*aValue*/, TInt /*aError*/ ) {}
+    void HandleRepositoryValueChangeL( const TUid& /*aUid*/, TUint32 /*aKey*/, const TDesC16& /*aValue*/, TInt /*aError*/ ) {}
+
+// New functions
+
+    /**
+     * 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;
+
+    };
+
+#endif // C_RADIOENGINESETTINGS_H