bluetoothengine/bthid/common/src/layoututils.cpp
changeset 0 f63038272f30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/bthid/common/src/layoututils.cpp	Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,305 @@
+/*
+* Copyright (c) 2004 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:  
+ *
+*/
+
+
+#include "layoututils.h"
+
+TInt CLayoutUtils::IndexFromStandardLayout(THidKeyboardLayoutId aLayoutId)
+    {
+    TInt returnValue = 0;
+    // Map from layout code to item index position.
+    switch (aLayoutId)
+        {
+        case EUnitedKingdom:
+            returnValue = 0;
+            break;
+        case EUnitedStates:
+            returnValue = 1;
+            break;
+        case EUSInternational:
+            returnValue = 2;
+            break;
+        case EBelgian:
+            returnValue = 3;
+            break;
+        case EDanish:
+            returnValue = 4;
+            break;
+        case EDutch:
+            returnValue = 5;
+            break;
+        case EFinnishSwedish:
+            returnValue = 6;
+            break;
+        case EFrench:
+            returnValue = 7;
+            break;
+        case EGerman:
+            returnValue = 8;
+            break;
+        case EItalian:
+            returnValue = 9;
+            break;
+        case ENorwegian:
+            returnValue = 10;
+            break;
+        case EPortuguese:
+            returnValue = 11;
+            break;
+        case ESpanish:
+            returnValue = 12;
+            break;
+        case EUnitedStatesDvorak:
+            returnValue = 13;
+            break;
+        default:
+            break;
+        }
+
+    return returnValue;
+    }
+
+TInt CLayoutUtils::IndexFromNokiaLayout(THidKeyboardLayoutId aLayoutId)
+    {
+    TInt returnValue = 0;
+    // Map from layout code to item index position.
+    switch (aLayoutId)
+        {
+        case ESu8USEnglish:
+            returnValue = 0;
+            break;
+        case ESu8FinnishSwedish:
+            returnValue = 1;
+            break;
+        case ESu8German:
+            returnValue = 2;
+            break;
+        case ESu8DanishNorwegian:
+            returnValue = 3;
+            break;
+        case ESu8Russian:
+            returnValue = 4;
+            break;
+        default:
+            break;
+        }
+
+    return returnValue;
+    }
+
+THidKeyboardLayoutId CLayoutUtils::StandardLayoutFromIndex(TInt aIndex)
+    {
+    THidKeyboardLayoutId layoutCode = EUnitedKingdom;
+
+    // Map it back from item index position to layout code.
+    switch (aIndex)
+        {
+        case 0:
+            layoutCode = EUnitedKingdom;
+            break;
+        case 1:
+            layoutCode = EUnitedStates;
+            break;
+        case 2:
+            layoutCode = EUSInternational;
+            break;
+        case 3:
+            layoutCode = EBelgian;
+            break;
+        case 4:
+            layoutCode = EDanish;
+            break;
+        case 5:
+            layoutCode = EDutch;
+            break;
+        case 6:
+            layoutCode = EFinnishSwedish;
+            break;
+        case 7:
+            layoutCode = EFrench;
+            break;
+        case 8:
+            layoutCode = EGerman;
+            break;
+        case 9:
+            layoutCode = EItalian;
+            break;
+        case 10:
+            layoutCode = ENorwegian;
+            break;
+        case 11:
+            layoutCode = EPortuguese;
+            break;
+        case 12:
+            layoutCode = ESpanish;
+            break;
+        case 13:
+            layoutCode = EUnitedStatesDvorak;
+            break;
+        default:
+            break;
+        }
+
+    return layoutCode;
+    }
+
+THidKeyboardLayoutId CLayoutUtils::NokiaLayoutFromIndex(TInt aIndex)
+    {
+    THidKeyboardLayoutId layoutCode = ESu8USEnglish;
+
+    // Map it back from item index position to layout code.
+    switch (aIndex)
+        {
+        case 0:
+            layoutCode = ESu8USEnglish;
+            break;
+        case 1:
+            layoutCode = ESu8FinnishSwedish;
+            break;
+        case 2:
+            layoutCode = ESu8German;
+            break;
+        case 3:
+            layoutCode = ESu8DanishNorwegian;
+            break;
+        case 4:
+            layoutCode = ESu8Russian;
+            break;
+        default:
+            break;
+        }
+
+    return layoutCode;
+    }
+
+void CLayoutUtils::ValidateStandardLayout(THidKeyboardLayoutId& aLayoutId)
+    {
+    // If the layout isn't in the range of standard layouts, set it to
+    // UK
+    if (!((aLayoutId >= EUnitedKingdom) && (aLayoutId <= EUnitedStatesDvorak)))
+        {
+        aLayoutId = EUnitedKingdom;
+        }
+    }
+
+void CLayoutUtils::ValidateNokiaSU8Layout(THidKeyboardLayoutId& aLayoutId)
+    {
+    // If the layout isn't in the range of Nokia Su8 layouts, set it to
+    // English Su8
+    if (!((aLayoutId >= ESu8USEnglish) && (aLayoutId <= ESu8Russian)))
+        {
+        aLayoutId = ESu8USEnglish;
+        }
+    }
+
+TInt CLayoutUtils::LayoutConfirmationStringL(THidKeyboardLayoutId aLayoutCode)
+    {
+
+    TInt result = 0;
+    (void) aLayoutCode;
+    // Only Standard layouts are supported.
+    // Identify the layout confirmation string based on the layout code.
+    /*
+     switch ( aLayoutCode )
+     {     
+     case ESu8USEnglish:
+     result = R_STRING_LAYOUT_ENGLISH;
+     break;
+     case ESu8German:
+     result = R_STRING_LAYOUT_GERMAN;
+     break;
+     case ESu8FinnishSwedish:
+     result = R_STRING_LAYOUT_FINNISH_SWEDISH;
+     break;
+     case ESu8DanishNorwegian:
+     result = R_STRING_LAYOUT_NORWEGIAN_DANISH;
+     break;
+     case ESu8Russian:
+     result = R_STRING_LAYOUT_RUSSIAN;
+     break;            
+     case EUnitedKingdom:
+     result = R_STRING_LAYOUT_UK;
+     break;
+     case EUnitedStates:
+     result = R_STRING_LAYOUT_US;
+     break;
+     case EUSInternational:
+     result = R_STRING_LAYOUT_US_INT;
+     break;
+     case EBelgian:
+     result = R_STRING_LAYOUT_BELGIAN;
+     break;
+     case EDanish:
+     result = R_STRING_LAYOUT_DANISH;
+     break;
+     case EDutch:
+     result = R_STRING_LAYOUT_DUTCH;
+     break;
+     case EFinnishSwedish:
+     result = R_STRING_LAYOUT_FINNISH_SWEDISH;
+     break;
+     case EFrench:
+     result = R_STRING_LAYOUT_FRENCH;
+     break;
+     case EGerman:
+     result = R_STRING_LAYOUT_GERMAN;
+     break;
+     case EItalian:
+     result = R_STRING_LAYOUT_ITALIAN;
+     break;
+     case ENorwegian:
+     result = R_STRING_LAYOUT_NORWEGIAN;
+     break;
+     case EPortuguese:
+     result = R_STRING_LAYOUT_PORTUGUESE;
+     break;
+     case ESpanish:
+     result = R_STRING_LAYOUT_SPANISH;
+     break;
+     case EUnitedStatesDvorak:
+     result = R_STRING_LAYOUT_US_DVORAK;
+     break;    
+     default:
+     User::Leave(KErrNotSupported);
+     break;
+     }
+     */
+    return result;
+    }
+
+TBool CLayoutUtils::SameCategory(THidKeyboardLayoutId aInitialLayoutCode,
+        THidKeyboardLayoutId aLayoutId)
+    {
+    // If the layout isn't in the range of Nokia Su8 layouts, set it to
+    // English Su8
+    TBool ret = EFalse;
+    if (((aLayoutId >= ESu8USEnglish) && (aLayoutId <= ESu8Russian))
+            && ((aInitialLayoutCode >= ESu8USEnglish) && (aInitialLayoutCode
+                    <= ESu8Russian)))
+        {
+        ret = ETrue;
+        }
+
+    if (((aLayoutId >= EUnitedKingdom) && (aLayoutId <= EUnitedStatesDvorak))
+            && ((aInitialLayoutCode >= EUnitedKingdom) && (aInitialLayoutCode
+                    <= EUnitedStatesDvorak)))
+        {
+        ret = ETrue;
+        }
+    return ret;
+    }
+