diff -r 000000000000 -r 79c6a41cd166 idlefw/plugins/wsplugin/src/keypadsettings.cpp --- /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 +#include +#include + +#include + +#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