coreapplicationuis/SysAp/Src/SysApFeatureManager.cpp
changeset 0 2e3d3ce01487
child 1 0fdb7f6b0309
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/coreapplicationuis/SysAp/Src/SysApFeatureManager.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,421 @@
+/*
+* Copyright (c) 2003-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:  CSysApFeatureManager implementation.
+*
+*/
+
+
+// INCLUDES
+
+#include <e32svr.h> // RDebug
+#include <featmgr.h>
+#include "SysApFeatureManager.h"
+#include "SysAp.hrh"
+#include <centralrepository.h>
+#include "CoreApplicationUIsPrivateCRKeys.h"
+#include <hwrmlight.h>
+#include <AknUtils.h>
+
+
+// ============================ MEMBER FUNCTIONS ==============================
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::NewL() 
+// ----------------------------------------------------------------------------
+CSysApFeatureManager* CSysApFeatureManager::NewL()
+    {
+    CSysApFeatureManager* self = new(ELeave) CSysApFeatureManager;
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::ConstructL() 
+// ----------------------------------------------------------------------------
+void CSysApFeatureManager::ConstructL()
+    {
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL()") ) );
+    FeatureManager::InitializeLibL();
+    iFeatMgrActive = ETrue;
+    
+    iSimSupported = FeatureManager::FeatureSupported( KFeatureIdSimCard );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: SIM card supported=%d"), iSimSupported ) );
+
+    iOfflineModeSupported = FeatureManager::FeatureSupported( KFeatureIdOfflineMode );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: Offline mode supported=%d"), iOfflineModeSupported ) );
+    
+    iCoverDisplaySupported = FeatureManager::FeatureSupported( KFeatureIdCoverDisplay );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: Cover display supported=%d"), iCoverDisplaySupported ) );
+    
+    iGripNotSupported = FeatureManager::FeatureSupported( KFeatureIdKeypadNoSlider );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: iGripNotSupported=%d"), iGripNotSupported ) );
+    
+    iLocationPrivacySupported = FeatureManager::FeatureSupported( KFeatureIdPrivacyFramework );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: Location Privacy supported=%d"), iLocationPrivacySupported ) );
+
+    iMMCSupported = FeatureManager::FeatureSupported( KFeatureIdMmc );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: MMC supported=%d"), iMMCSupported ) );
+        
+    iMMCHotSwapSupported = FeatureManager::FeatureSupported( KFeatureIdMmcHotswap );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: MMC HotSwap supported=%d"), iMMCHotSwapSupported ) );
+    
+    iStarterExtensionsSupported = FeatureManager::FeatureSupported( KFeatureIdExtendedStartup );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: Starter Extensions supported=%d"), iStarterExtensionsSupported ) );
+
+    iCameraSupported = FeatureManager::FeatureSupported( KFeatureIdCamera );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: Camera supported=%d"), iCameraSupported ) );
+
+    iBtSupported = FeatureManager::FeatureSupported( KFeatureIdBt );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: Bluetooth supported=%d"), iBtSupported ) );
+
+    iLockSupported = FeatureManager::FeatureSupported( KFeatureIdMmcLock );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: Memory card lock supported=%d"), iLockSupported ) );
+    
+    iEject = FeatureManager::FeatureSupported( KFeatureIdMmcEject );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: Memory card sw eject supported=%d"), iEject ) );
+    
+    iPowerSaveSupported = FeatureManager::FeatureSupported( KFeatureIdPowerSave );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: Power save supported=%d"), iPowerSaveSupported ) );
+
+    iNoPowerKeySupported = FeatureManager::FeatureSupported( KFeatureIdNoPowerkey );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: No power key supported=%d"), iNoPowerKeySupported ) );
+    
+    iFmTxSupported = FeatureManager::FeatureSupported( KFeatureIdFmtx );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: FM TX supported=%d"), iFmTxSupported ) );
+
+    iPenEnabled = AknLayoutUtils::PenEnabled();
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: Pen enabled=%d"), iPenEnabled ) );
+    
+    iVmbxCallDivertIconSupported = FeatureManager::FeatureSupported( KFeatureIdVmbxCallDivertIcon );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: VMBX call divert icon supported=%d"), iVmbxCallDivertIconSupported ) );
+    
+    iTouchUnlockStrokeSupported = FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: Touch unlock stroke supported=%d"), iTouchUnlockStrokeSupported ) );
+    
+    iFmTxRdsTextSupported = FeatureManager::FeatureSupported( KFeatureIdFfFmtxRdsText );
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: FM TX RDS-TEXT supported=%d"), iFmTxRdsTextSupported ) );
+    
+    CRepository* repository = NULL;
+    
+    TRAPD( err, repository = CRepository::NewL( KCRUidCoreApplicationUIsConf ) );
+    
+    if ( err == KErrNone )
+        {
+        err = repository->Get( KCoreAppUIsSysAp, iSysApFeatures );
+        if ( err != KErrNone || iSysApFeatures < 0 ) // ERROR
+            {
+            TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: ERROR: %d, KCoreAppUIsSysAp=%d"), err, iSysApFeatures ) );
+            iSysApFeatures = 0;
+            }
+
+        TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: KCoreAppUIsSysAp=%d"), iSysApFeatures ) );
+
+        err = repository->Get( KCoreAppUIsHotSwapMemoryCardHatch, iHatchSupported );
+        if ( err != KErrNone || iHatchSupported < 0 ) // ERROR
+            {
+            TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: ERROR: %d, KCoreAppUIsHotSwapMemoryCardHatch=%d"), err, iHatchSupported ) );
+            iHatchSupported = EFalse;
+            }
+            
+        err = repository->Get( KCoreAppUIsLockedStateLights, iLockedStateLightsSupported );
+        
+        if ( err != KErrNone || iLockedStateLightsSupported < 0 ) // ERROR
+            {
+            TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: ERROR: %d, KCoreAppUIsLightsLocked=%d"), err, iLockedStateLightsSupported ) );
+            iLockedStateLightsSupported = EFalse;
+            iLockedStateLightsIntensity = KHWRMDefaultIntensity;
+            }
+        
+        if ( iLockedStateLightsSupported ) // get intensity only if configuration is supported
+            {
+            err = repository->Get( KCoreAppUIsLockedStateLightsIntensity, iLockedStateLightsIntensity );
+            
+            if ( err != KErrNone || iLockedStateLightsIntensity < KHWRMLightMinIntensity || iLockedStateLightsIntensity > KHWRMLightMaxIntensity )
+                {
+                TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: ERROR: %d, KCoreAppUIsLightsLockedIntensity=%d"), err, iLockedStateLightsIntensity ) );
+                iLockedStateLightsIntensity = KHWRMDefaultIntensity;
+                }
+            }        
+        }
+    else
+        {
+        TRACES( RDebug::Print( _L("CSysApFeatureManager::ConstructL: open KCRUidCoreApplicatinUIsConf failed, err=%d"), err ) );
+        }        
+    
+    delete repository;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::CSysApFeatureManager()
+// ----------------------------------------------------------------------------
+
+CSysApFeatureManager::CSysApFeatureManager() : iFeatMgrActive( EFalse ),
+                                               iSysApFeatures( 0 ),
+                                               iEject( EFalse ),
+                                               iLockSupported( EFalse ),
+                                               iHatchSupported( EFalse ),
+                                               iLockedStateLightsSupported( EFalse ),
+                                               iLockedStateLightsIntensity( KHWRMDefaultIntensity ),
+                                               iMMCSupported( EFalse ),
+                                               iMMCHotSwapSupported( EFalse ),
+                                               iOfflineModeSupported( EFalse ),
+                                               iStarterExtensionsSupported( EFalse ),
+                                               iLocationPrivacySupported( EFalse ),
+                                               iCameraSupported( EFalse ),
+                                               iBtSupported( EFalse ),
+                                               iSimSupported( ETrue ),
+                                               iGripNotSupported( ETrue ),
+                                               iPowerSaveSupported( EFalse ),
+                                               iNoPowerKeySupported( EFalse ),
+                                               iFmTxSupported( EFalse ),
+                                               iPenEnabled( EFalse ),
+                                               iVmbxCallDivertIconSupported( EFalse ),
+                                               iTouchUnlockStrokeSupported( EFalse ),
+                                               iFmTxRdsTextSupported( EFalse )
+
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::~CSysApFeatureManager() 
+// ----------------------------------------------------------------------------
+
+CSysApFeatureManager::~CSysApFeatureManager() 
+    {
+    if ( iFeatMgrActive )
+        {
+        FeatureManager::UnInitializeLib();    
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::FeatureVariationCheckDone() 
+// ----------------------------------------------------------------------------
+//
+void CSysApFeatureManager::FeatureVariationCheckDone()
+    {
+    TRACES( RDebug::Print( _L("CSysApFeatureManager::FeatureVariationCheckDone()") ) );
+    FeatureManager::UnInitializeLib();
+    iFeatMgrActive = EFalse;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::Supported() 
+// ----------------------------------------------------------------------------
+
+TInt CSysApFeatureManager::Supported( TInt aSysApFeatureId )
+    {
+    return aSysApFeatureId & iSysApFeatures;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::EjectRequiredInPowerMenu()
+// ----------------------------------------------------------------------------
+TBool CSysApFeatureManager::EjectRequiredInPowerMenu()
+    {
+    return iEject;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::MemoryCardLockSupported()
+// ----------------------------------------------------------------------------
+TBool CSysApFeatureManager::MemoryCardLockSupported()
+    {
+    return iLockSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::MemoryCardHatchSupported()
+// ----------------------------------------------------------------------------
+TBool CSysApFeatureManager::MemoryCardHatchSupported()
+    {
+    return iHatchSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::LockedStateLightsSupported()
+// ----------------------------------------------------------------------------
+TBool CSysApFeatureManager::LockedStateLightsSupported()
+    {
+    return iLockedStateLightsSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::LockedStateLightsIntensity()
+// ----------------------------------------------------------------------------
+TInt CSysApFeatureManager::LockedStateLightsIntensity()
+    {
+    return iLockedStateLightsIntensity;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::LockedStateLightsIntensity()
+// ----------------------------------------------------------------------------
+//  
+TBool CSysApFeatureManager::MmcSupported() const
+    {
+    return iMMCSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::LockedStateLightsIntensity()
+// ----------------------------------------------------------------------------
+//
+TBool CSysApFeatureManager::MmcHotSwapSupported() const
+    {
+    return iMMCHotSwapSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::OfflineModeSupported()
+// ----------------------------------------------------------------------------
+//
+TBool CSysApFeatureManager::OfflineModeSupported() const
+    {
+    return iOfflineModeSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::StarterExtensionsSupported()
+// ----------------------------------------------------------------------------
+//
+TBool CSysApFeatureManager::StarterExtensionsSupported() const
+    {
+    return iStarterExtensionsSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::LocationPrivacySupported()
+// ----------------------------------------------------------------------------
+//
+TBool CSysApFeatureManager::LocationPrivacySupported() const
+    {
+    return iLocationPrivacySupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::CameraSupported()
+// ----------------------------------------------------------------------------
+//
+TBool CSysApFeatureManager::CameraSupported() const
+    {
+    return iCameraSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::BtSupported()
+// ----------------------------------------------------------------------------
+//
+TBool CSysApFeatureManager::BtSupported() const
+    {
+    return iBtSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::SimSupported()
+// ----------------------------------------------------------------------------
+//
+TBool CSysApFeatureManager::SimSupported() const
+    {
+    return iSimSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::GripNotSupported()
+// ----------------------------------------------------------------------------
+//
+TBool CSysApFeatureManager::GripNotSupported() const
+    {
+    return iGripNotSupported;
+    }
+    
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::CoverDisplaySupported()
+// ----------------------------------------------------------------------------
+//
+TBool CSysApFeatureManager::CoverDisplaySupported() const
+    {
+    return iCoverDisplaySupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::PowerSaveSupported()
+// ----------------------------------------------------------------------------
+//
+TBool CSysApFeatureManager::PowerSaveSupported() const
+    {
+    return iPowerSaveSupported;
+    }
+    
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::NoPowerKeySupported()
+// ----------------------------------------------------------------------------
+//  
+TBool CSysApFeatureManager::NoPowerKeySupported() const
+    {
+    return iNoPowerKeySupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::FmTxSupported()
+// ----------------------------------------------------------------------------
+//    
+TBool CSysApFeatureManager::FmTxSupported() const
+    {
+    return iFmTxSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::PenEnabled()
+// ----------------------------------------------------------------------------
+//
+TBool CSysApFeatureManager::PenEnabled() const
+    {
+    return iPenEnabled;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::VmbxCallDivertIconSupported()
+// ----------------------------------------------------------------------------
+//     
+TBool CSysApFeatureManager::VmbxCallDivertIconSupported() const
+    {
+    return iVmbxCallDivertIconSupported;
+    }        
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::TouchUnlockStrokeSupported()
+// ----------------------------------------------------------------------------
+//     
+TBool CSysApFeatureManager::TouchUnlockStrokeSupported() const
+    {
+    return iTouchUnlockStrokeSupported;
+    }
+
+// ----------------------------------------------------------------------------
+// CSysApFeatureManager::FmTxRdsTextSupported()
+// ----------------------------------------------------------------------------
+//     
+TBool CSysApFeatureManager::FmTxRdsTextSupported() const
+    {
+    return iFmTxRdsTextSupported;
+    }
+
+// End of File
+
+
+