idlefw/plugins/wsplugin/src/keypadsettings.cpp
changeset 0 79c6a41cd166
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/wsplugin/src/keypadsettings.cpp	Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 2005-2007 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:  Keypad settings implmentation for Active Idle WS Plug-in.
+*
+*/
+
+
+#include "keypadsettings.h"
+
+#include <e32keys.h>
+#include <e32event.h>
+#include <centralrepository.h>
+
+#include <activeidle2domaincrkeys.h>
+
+#include "debug.h"
+
+namespace AiWsPlugin {
+
+
+/**
+ * Maps selected numeric keypad scan codes to character.
+ *
+ * @param aScanCode scan code for which to find a character mapping.
+ * @return character mapping for aScanCode or -1 if no mapping is found.
+ */
+TInt16 TKeypadSettings::MapNkpScanCodeToChar( TInt aScanCode )
+    {
+    TInt16 result;
+    switch( aScanCode )
+        {
+        case EStdKeyHash:        result = '#'; break;
+        case EStdKeyMinus:       result = '-'; break;
+        case EStdKeyNkpAsterisk: result = '*'; break;
+        case EStdKeyNkpMinus:    result = '-'; break;
+        case EStdKeyNkpPlus:     result = '+'; break;
+        case EStdKeyNkp1:        result = '1'; break;
+        case EStdKeyNkp2:        result = '2'; break;
+        case EStdKeyNkp3:        result = '3'; break;
+        case EStdKeyNkp4:        result = '4'; break;
+        case EStdKeyNkp5:        result = '5'; break;
+        case EStdKeyNkp6:        result = '6'; break;
+        case EStdKeyNkp7:        result = '7'; break;
+        case EStdKeyNkp8:        result = '8'; break;
+        case EStdKeyNkp9:        result = '9'; break;
+        case EStdKeyNkp0:        result = '0'; break;
+        default:                 result =  -1; break;
+        }
+    return result;
+    }
+
+void TKeypadSettings::ReadFromRepositoryL()
+    {
+    CRepository* repository = CRepository::NewLC( TUid::Uid( KCRUidActiveIdleLV ) );
+    TInt value;
+    
+    // KAIFirstKeyLockKey
+    User::LeaveIfError( repository->Get( KAIFirstKeyLockKey,  value ) );
+    iFirstLockKeyScanCode = TInt16( value );
+    iFirstLockKeyChar = MapNkpScanCodeToChar( value );
+    __PRINT( 
+        __DBG_FORMAT("AiWsPlugin: KAIFirstKeyLockKey = %d, ch=%d"), 
+        TInt(iFirstLockKeyScanCode), TInt(iFirstLockKeyChar) );
+    
+    // KAISecondKeyLockKey
+	User::LeaveIfError( repository->Get( KAISecondKeyLockKey, value ) );
+	iSecondLockKeyScanCode = TInt16( value );
+	iSecondLockKeyChar = MapNkpScanCodeToChar( value );
+    __PRINT( 
+        __DBG_FORMAT("AiWsPlugin: KAISecondKeyLockKey = %d, ch=%d"), 
+        TInt(iSecondLockKeyScanCode), TInt(iSecondLockKeyChar) );
+    
+    // KAISecondKeyLockKey2
+	User::LeaveIfError( repository->Get( KAISecondKeyLockKey2, value ) );
+	iSecondLockKeyScanCode2 = TInt16( value );
+	iSecondLockKeyChar2 = MapNkpScanCodeToChar( value );
+    __PRINT( 
+        __DBG_FORMAT("AiWsPlugin: KAISecondKeyLockKey2 = %d, ch=%d"), 
+        TInt(iSecondLockKeyScanCode2), TInt(iSecondLockKeyChar2) );
+
+    // KAIKeyLockTimeout    
+	User::LeaveIfError( repository->Get( KAIKeyLockTimeout, value ) );
+    __PRINT( __DBG_FORMAT("AiWsPlugin: KAIKeyLockTimeout=%d ms"), value );
+	// Convert timeout from milliseconds to microseconds
+    const TInt KUsInMs = 1000;
+    iKeylockTimeout = KUsInMs * value;
+    
+    // KAISINDKey
+	User::LeaveIfError( repository->Get( KAIVoiceDialLaunchKey, value ) );
+	iSINDKeyScanCode = TInt16( value );
+	iSINDKeyScanChar = MapNkpScanCodeToChar( value );
+    __PRINT( 
+        __DBG_FORMAT("AiWsPlugin: iSINDKey = %d, ch=%d"), 
+        TInt(iSINDKeyScanCode), TInt(iSINDKeyScanChar) );
+
+    // KAISINDKeyTimeout    
+	User::LeaveIfError( repository->Get( KAIVoiceDialKeyTimeout, value ) );
+    __PRINT( __DBG_FORMAT("AiWsPlugin: KAISINDKeyTimeout=%d ms"), value );
+	// Convert timeout from milliseconds to microseconds
+    iKeySINDTimeout = KUsInMs * value;
+	
+	CleanupStack::PopAndDestroy( repository );
+    }
+
+TBool TKeypadSettings::IsFirstLockKey( TInt aScanCode ) const
+    {
+    return ( aScanCode == iFirstLockKeyScanCode || aScanCode == iFirstLockKeyChar );
+    }
+    
+TBool TKeypadSettings::IsSecondLockKey( TInt aScanCode ) const
+    {
+    return (
+        ( aScanCode == iSecondLockKeyScanCode || aScanCode == iSecondLockKeyChar ) ||
+        ( aScanCode == iSecondLockKeyScanCode2 || aScanCode == iSecondLockKeyChar2 ) );
+    }
+
+TTimeIntervalMicroSeconds32 TKeypadSettings::KeylockTimeout() const
+    {
+    return iKeylockTimeout;
+    }
+
+} // namespace AiWsPlugin