fep/aknfep/src/AknFepSharedDataInterface.cpp
changeset 36 a7632c26d895
parent 35 0f326f2e628e
child 42 b3eaa440ab06
equal deleted inserted replaced
35:0f326f2e628e 36:a7632c26d895
     1 /*
       
     2 * Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0""
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:           
       
    15 *       CAknFepSharedDataInterface class
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 
       
    21 
       
    22 
       
    23 
       
    24 
       
    25 
       
    26 
       
    27 
       
    28 
       
    29 
       
    30 #include <w32std.h>
       
    31 #include <eikdef.h>
       
    32 #include <eikenv.h>
       
    33 #include <AknUtils.h>
       
    34 
       
    35 #include "AknFepSharedDataInterface.h"
       
    36 #include "AknFepManager.h"
       
    37 
       
    38 #include <centralrepository.h>
       
    39 #include <AknFepInternalCRKeys.h>
       
    40 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
    41 #include <AknFepInternalPSKeys.h>
       
    42 #include <AknFepGlobalEnums.h>
       
    43 #include <PtiDefs.h>
       
    44 #endif
       
    45 #include <AvkonInternalCRKeys.h>    // KAknQwertyInputModeActive
       
    46 #include <settingsinternalcrkeys.h> //Pen related settings
       
    47 #include <sensorplugindomaincrkeys.h> // KCRUidSensorSettings
       
    48 
       
    49 // TODO: include CommonengineInternalCRKeys.h
       
    50 const TUid KCRUidCommonEngineKeys = {0x1020503B};
       
    51 const TUint32 KGSDisplayTxtLang = 0x00000001;
       
    52 
       
    53 const TInt KJapHwrConversion = 0x0010;
       
    54 
       
    55 #include <AknDef.h>
       
    56 
       
    57 CAknFepSharedDataInterface* CAknFepSharedDataInterface::NewL(CAknFepManager* aFepManager)
       
    58     {
       
    59     CAknFepSharedDataInterface* self = new (ELeave) CAknFepSharedDataInterface(aFepManager);
       
    60     CleanupStack::PushL(self);
       
    61     self->ConstructL();
       
    62     CleanupStack::Pop(); //self
       
    63     return self;
       
    64     }
       
    65 
       
    66 
       
    67 CAknFepSharedDataInterface::~CAknFepSharedDataInterface()
       
    68     {
       
    69     delete iCommonEngineRepository;
       
    70     delete iAknFepRepositoryWatcher;
       
    71     delete iAknFepLocaleRepositoryWatcher;
       
    72     delete iAknFepRepository;
       
    73     delete iGsPenSettings;
       
    74     delete iLocaleRepository;
       
    75     delete iSensorRepository;
       
    76 
       
    77     if (iQwertyModeStatusSubscriber)
       
    78         {
       
    79         iQwertyModeStatusSubscriber->StopSubscribe();
       
    80         }
       
    81 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
    82     if (iKeyboardLayoutStatusSubscriber)
       
    83         {
       
    84         iKeyboardLayoutStatusSubscriber->StopSubscribe();
       
    85         }
       
    86     iKeyboardLayoutStatusProperty.Close();
       
    87     delete iKeyboardLayoutStatusSubscriber;    
       
    88 #endif
       
    89     iQwertyModeStatusProperty.Close();
       
    90     delete iQwertyModeStatusSubscriber;
       
    91     }
       
    92 
       
    93 
       
    94 TInt CAknFepSharedDataInterface::PredictiveTextOn()
       
    95     {
       
    96     TInt value = 0;
       
    97     if (iAknFepRepository)
       
    98         {
       
    99 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   100         TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout();
       
   101         TInt temp = 0;
       
   102         iAknFepRepository->Get(KAknFepPredTxtFlagExtension, temp);
       
   103         switch(layout)
       
   104             {
       
   105             case EPtiKeyboardNone:
       
   106                 break;
       
   107           	case EPtiKeyboard12Key:
       
   108                 temp &= EKeyboardStyle12Key;
       
   109                 break;
       
   110             case EPtiKeyboardHalfQwerty:
       
   111                 temp &= EKeyboardStyleHalfQwerty;
       
   112                 break;                
       
   113           	case EPtiKeyboardQwerty4x12:
       
   114           	case EPtiKeyboardQwerty4x10:
       
   115           	case EPtiKeyboardQwerty3x11:          	
       
   116           	case EPtiKeyboardCustomQwerty:
       
   117                 temp &= EKeyboardStyleQwerty;
       
   118                 break;
       
   119           	default:
       
   120           	    break;
       
   121             }
       
   122         value = ( temp ? 1 : 0);
       
   123 #else
       
   124         iAknFepRepository->Get(KAknFepPredTxtFlag, value);
       
   125 #endif
       
   126         }
       
   127     return value;
       
   128     }
       
   129 
       
   130 TInt CAknFepSharedDataInterface::PredictiveTextJapaneseOn()
       
   131     {
       
   132     TInt value = 0;
       
   133     if (iAknFepRepository)
       
   134         {
       
   135         iAknFepRepository->Get(KAknFepJapanesePredTxtFlag, value);
       
   136         }
       
   137     return value;
       
   138     }
       
   139 
       
   140 TInt CAknFepSharedDataInterface::InputMode()
       
   141     {
       
   142     TUint value = 0;
       
   143     if (iAknFepRepository)
       
   144         {
       
   145    		/* Teleca change begin, 03.07.2008 ssal 
       
   146    			original code:
       
   147 		TPtrC filteredPtr(0,0);
       
   148 		iAknFepRepository->Get(KAknFepChineseInputMode, value);*/
       
   149 		_LIT(Kx, "x");
       
   150 		// This conversion is needed because KAknFepChineseInputMode cenrep key original type was 16bit int.
       
   151 		// now type is changed to string, so that it can accommodate bigger values like EHangul 0x16000. 
       
   152 		TBuf<CAknFepManager::EMaximumFepWordLength> conversion;
       
   153         iAknFepRepository->Get(KAknFepChineseInputMode, conversion);
       
   154        
       
   155        	TInt len = conversion.Find(Kx);
       
   156        	TLex lex;
       
   157        	
       
   158        	if(len)
       
   159        		{
       
   160        		TPtrC ptr = conversion.Mid(len +1);
       
   161        		lex.Assign(ptr);
       
   162        		}
       
   163 		else
       
   164 			{
       
   165 			lex.Assign(conversion);
       
   166 			}
       
   167 		
       
   168 		lex.Val(value, EHex);
       
   169 		/* Teleca change end, 04.06.2008 ssal */
       
   170         }
       
   171     return value;
       
   172     }
       
   173 
       
   174 void CAknFepSharedDataInterface::SetInputMode(TInt aInputMode)
       
   175     {
       
   176     if (iAknFepRepository)
       
   177         {
       
   178         /* Teleca change begin, 03.07.2008 ssal 
       
   179 			original code:
       
   180         iAknFepRepository->Set(KAknFepChineseInputMode, aInputMode);*/
       
   181         
       
   182         // Please see the explanation on CAknFepSharedDataInterface::InputMode() method
       
   183 		TBuf<CAknFepManager::EMaximumFepWordLength> conversion;
       
   184 		conversion.Num(aInputMode, EHex);
       
   185 		
       
   186         iAknFepRepository->Set(KAknFepChineseInputMode, conversion);
       
   187       	/* Teleca change end, 04.06.2008 ssal */
       
   188         }
       
   189     }
       
   190 
       
   191 TInt CAknFepSharedDataInterface::CangJieMode()
       
   192     {
       
   193     TInt value = 0;
       
   194     if (iAknFepRepository)
       
   195         {
       
   196         iAknFepRepository->Get(KAknFepCangJieMode, value);
       
   197         }
       
   198     return value;
       
   199     }
       
   200     
       
   201 void CAknFepSharedDataInterface::SetCangJieMode(TInt aNewCangJieMode)
       
   202     {
       
   203     if (iAknFepRepository)
       
   204         {
       
   205         iAknFepRepository->Set(KAknFepCangJieMode, aNewCangJieMode);
       
   206         }
       
   207     }
       
   208 
       
   209 TInt CAknFepSharedDataInterface::InputTextLanguage()
       
   210     {
       
   211     TInt value = 0;
       
   212     if (iAknFepRepository)
       
   213         {
       
   214         iAknFepRepository->Get(KAknFepInputTxtLang, value);
       
   215         }
       
   216     return TLanguage(value);
       
   217     }
       
   218 
       
   219 void CAknFepSharedDataInterface::SetInputTextLanguage(TInt aValue)
       
   220     {
       
   221     if (iAknFepRepository)
       
   222         {
       
   223         iAknFepRepository->Set(KAknFepInputTxtLang, aValue);
       
   224         }
       
   225 
       
   226     // now inform all open apps of the switch
       
   227     TWsEvent event;
       
   228     event.SetType(KEikInputLanguageChange);
       
   229     CEikonEnv::Static()->WsSession().SendEventToAllWindowGroups(event);
       
   230     }
       
   231 
       
   232 TInt CAknFepSharedDataInterface::DisplayLanguage()
       
   233     {
       
   234     TInt value = 0;
       
   235     if (iCommonEngineRepository)
       
   236         {
       
   237         iCommonEngineRepository->Get(KGSDisplayTxtLang, value);
       
   238         }
       
   239     return TLanguage(value);
       
   240     }
       
   241 
       
   242 void CAknFepSharedDataInterface::SetPredictiveTextOn()
       
   243     {
       
   244     if (iAknFepRepository)
       
   245         {
       
   246 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   247         TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout();
       
   248         TInt value = 0;
       
   249         iAknFepRepository->Get(KAknFepPredTxtFlagExtension, value);
       
   250         switch(layout)
       
   251             {
       
   252             case EPtiKeyboardNone:
       
   253                 // No keyboard active, so don't change anything
       
   254                 break;
       
   255           	case EPtiKeyboard12Key:
       
   256                 value |= EKeyboardStyle12Key;
       
   257                 break;
       
   258             case EPtiKeyboardHalfQwerty:    
       
   259                 value |= EKeyboardStyleHalfQwerty;
       
   260                 break;             
       
   261           	case EPtiKeyboardQwerty4x12:
       
   262           	case EPtiKeyboardQwerty4x10:
       
   263           	case EPtiKeyboardQwerty3x11:
       
   264           	case EPtiKeyboardCustomQwerty:
       
   265                 value |= EKeyboardStyleQwerty;
       
   266                 break;
       
   267           	default:
       
   268           	    break;
       
   269             }
       
   270         iAknFepRepository->Set(KAknFepPredTxtFlagExtension, value);
       
   271         // For backwards compatibility
       
   272         if (value & EKeyboardStyle12Key)
       
   273             {
       
   274             iAknFepRepository->Set(KAknFepPredTxtFlag, 1);
       
   275             }
       
   276 #else
       
   277         iAknFepRepository->Set(KAknFepPredTxtFlag, 1);
       
   278 #endif
       
   279         }
       
   280     }
       
   281 
       
   282 
       
   283 void CAknFepSharedDataInterface::ResetPredictiveTextOn()
       
   284     {
       
   285     if (iAknFepRepository)
       
   286         {
       
   287 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   288         TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout();
       
   289         TInt value = 0;
       
   290         iAknFepRepository->Get(KAknFepPredTxtFlagExtension, value);
       
   291         switch(layout)
       
   292             {
       
   293             case EPtiKeyboardNone:
       
   294                 // No keyboard active, so don't change anything
       
   295                 break;
       
   296           	case EPtiKeyboard12Key:
       
   297                 value &= ~EKeyboardStyle12Key;
       
   298                 break;
       
   299           	case EPtiKeyboardHalfQwerty:
       
   300                 value &= ~EKeyboardStyleHalfQwerty;
       
   301                 break;
       
   302           	case EPtiKeyboardQwerty4x12:
       
   303           	case EPtiKeyboardQwerty4x10:
       
   304           	case EPtiKeyboardQwerty3x11:
       
   305           	case EPtiKeyboardCustomQwerty:
       
   306                 value &= ~EKeyboardStyleQwerty;
       
   307                 break;
       
   308           	default:
       
   309           	    break;
       
   310             }
       
   311         iAknFepRepository->Set(KAknFepPredTxtFlagExtension, value);
       
   312         // For backwards compatibility
       
   313         if (!(value & EKeyboardStyle12Key))
       
   314             {
       
   315             iAknFepRepository->Set(KAknFepPredTxtFlag, 0);
       
   316             }
       
   317 #else
       
   318         iAknFepRepository->Set(KAknFepPredTxtFlag, 0);
       
   319 #endif
       
   320         }
       
   321     }
       
   322 
       
   323 void CAknFepSharedDataInterface::SetJapanesePredictiveTextOn()
       
   324     {
       
   325     if (iAknFepRepository)
       
   326         {
       
   327         iAknFepRepository->Set(KAknFepJapanesePredTxtFlag, 1);
       
   328         }
       
   329     }
       
   330 
       
   331 
       
   332 void CAknFepSharedDataInterface::ResetJapanesePredictiveTextOn()
       
   333     {
       
   334     if (iAknFepRepository)
       
   335         {
       
   336         iAknFepRepository->Set(KAknFepJapanesePredTxtFlag, 0);
       
   337         }
       
   338     }
       
   339 
       
   340 TInt CAknFepSharedDataInterface::PluginInputMode() const
       
   341     {
       
   342     TInt value = 0;
       
   343     if (iAknFepRepository)
       
   344         {
       
   345         iAknFepRepository->Get(KAknFepLastUsedInput, value);
       
   346         }
       
   347     return value;
       
   348     }
       
   349 
       
   350 void CAknFepSharedDataInterface::SetPluginInputMode(TInt aDevice)
       
   351     {
       
   352     if (iAknFepRepository)
       
   353         {
       
   354         iAknFepRepository->Set(KAknFepLastUsedInput, aDevice);
       
   355         }
       
   356     }
       
   357 
       
   358 TInt CAknFepSharedDataInterface::PluginUILanguage() const
       
   359     {
       
   360     TInt value = 0;
       
   361     if (iAknFepRepository)
       
   362         {
       
   363         //iAknFepRepository->Create(KAknFepLastUsedUILanguage, 0); //??
       
   364         iAknFepRepository->Get(KAknFepLastUsedUILanguage, value);
       
   365         }
       
   366     return value;
       
   367     }
       
   368 
       
   369 void CAknFepSharedDataInterface::SetPluginUILanguage(TInt aLanguage)
       
   370     {
       
   371     if (iAknFepRepository)
       
   372         {
       
   373         iAknFepRepository->Set(KAknFepLastUsedUILanguage, aLanguage);
       
   374         }
       
   375     }
       
   376 
       
   377 void CAknFepSharedDataInterface::SetDefaultNumberMode( TInt aMode, TInt aValue )
       
   378     {
       
   379     if (iLocaleRepository)
       
   380         {
       
   381         iLocaleRepository->Set(aMode, aValue);
       
   382         }
       
   383     }
       
   384 
       
   385 
       
   386 TInt CAknFepSharedDataInterface::PenInputLanguage() const
       
   387     {
       
   388     TInt value = 0;
       
   389     if (iAknFepRepository)
       
   390         {
       
   391         iAknFepRepository->Get(KAknFepInputTxtLang, value);
       
   392         }
       
   393     return value;
       
   394     }
       
   395 
       
   396 TInt CAknFepSharedDataInterface::ScrollLatinPredictiveCandidates() const
       
   397     {
       
   398     return iSharedDataScrollLatinPredictive;
       
   399     }
       
   400 
       
   401 TInt CAknFepSharedDataInterface::SpaceWithScrollRight() const
       
   402     {
       
   403     return iSharedDataSpaceWithScrollRight;
       
   404     }
       
   405 
       
   406 TInt CAknFepSharedDataInterface::EntersWithScrollDown() const
       
   407     {
       
   408     return iSharedDataEnterWithScrollDown;
       
   409     }
       
   410 
       
   411 TInt CAknFepSharedDataInterface::QwertyInputMode() //const
       
   412     {
       
   413     TInt value = 0;
       
   414     iQwertyModeStatusProperty.Get(value);
       
   415     return value;
       
   416     }
       
   417 
       
   418 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   419 TInt CAknFepSharedDataInterface::KeyboardLayout() //const
       
   420     {
       
   421     TInt value = 0;
       
   422     iKeyboardLayoutStatusProperty.Get(value);
       
   423     return value;
       
   424     }
       
   425 
       
   426 #ifdef FF_DUAL_LANGUAGE_SUPPORT
       
   427 TInt CAknFepSharedDataInterface::InputTextLanguageSecondary()
       
   428     {
       
   429     TInt value = 0;
       
   430     if (iAknFepRepository)
       
   431         {
       
   432         iAknFepRepository->Get(KAknFepInputTxtLangSecondary, value);
       
   433         }
       
   434     return TLanguage(value);
       
   435     }
       
   436 
       
   437 void CAknFepSharedDataInterface::SetInputTextLanguageSecondary(TInt aValue)
       
   438     {
       
   439     if (iAknFepRepository)
       
   440         {
       
   441         iAknFepRepository->Set(KAknFepInputTxtLangSecondary, aValue);
       
   442         }
       
   443 
       
   444     // now inform all open apps of the switch
       
   445     // same event as primary input language change
       
   446     TWsEvent event;
       
   447     event.SetType(KEikInputLanguageChange);
       
   448     CEikonEnv::Static()->WsSession().SendEventToAllWindowGroups(event);
       
   449     }
       
   450 
       
   451 #endif //FF_DUAL_LANGUAGE_SUPPORT
       
   452 #endif
       
   453 
       
   454 CAknFepSharedDataInterface::CAknFepSharedDataInterface(CAknFepManager* aFepManager)
       
   455     {
       
   456     iFepManager = aFepManager;
       
   457     }
       
   458 
       
   459 
       
   460 void CAknFepSharedDataInterface::ConstructL()
       
   461     {
       
   462     TInt ret = KErrNone;
       
   463 
       
   464     TRAP(ret, iCommonEngineRepository = CRepository::NewL(KCRUidCommonEngineKeys));
       
   465 
       
   466     TRAP(ret, iAknFepRepository = CRepository::NewL(KCRUidAknFep));
       
   467     if (ret == KErrNone)
       
   468         {
       
   469         iAknFepRepositoryWatcher = CAknFepRepositoryWatcher::NewL(
       
   470             KCRUidAknFep,
       
   471             TCallBack(HandleRepositoryCallBack, this),
       
   472             iAknFepRepository);
       
   473         HandleHashKeySelectionChange();//we need read proactively before value changed,and we must sure the iAknFepRepository has been constructed
       
   474         }
       
   475 	
       
   476 	TRAP(ret, iLocaleRepository = CRepository::NewL( KCRUidLocaleSettings ));
       
   477 
       
   478     if (ret == KErrNone)
       
   479         {
       
   480         iAknFepLocaleRepositoryWatcher = CAknFepRepositoryWatcher::NewL(
       
   481             KCRUidLocaleSettings,
       
   482             TCallBack(HandleLocaleRepositoryCallBack, this),
       
   483             iLocaleRepository);
       
   484         }
       
   485 
       
   486     User::LeaveIfError(iQwertyModeStatusProperty.Attach(KCRUidAvkon, KAknQwertyInputModeActive));
       
   487 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   488     //Attach the P&S property to the keyboardlayout and subscribe to the P&S framework
       
   489     // for any keyboard layout change.
       
   490     User::LeaveIfError(iKeyboardLayoutStatusProperty.Attach(KCRUidAvkon, KAknKeyBoardLayout));    
       
   491     iKeyboardLayoutStatusSubscriber = new (ELeave) CSubscriber(
       
   492                                          TCallBack(HandleKeyboardLayoutChangeNotification, this), 
       
   493                                          iKeyboardLayoutStatusProperty);    
       
   494     iKeyboardLayoutStatusSubscriber->SubscribeL();
       
   495 #endif
       
   496     iQwertyModeStatusSubscriber = new (ELeave) CSubscriber(
       
   497     								TCallBack(QwertyModeChangeNotification, this), 
       
   498     								iQwertyModeStatusProperty);
       
   499     iQwertyModeStatusSubscriber->SubscribeL();
       
   500 
       
   501     // Read read-only shared data settings.
       
   502     if (iAknFepRepository)
       
   503         {
       
   504         iAknFepRepository->Get(KAknFepScrollLatinPredictive, iSharedDataScrollLatinPredictive);
       
   505         iAknFepRepository->Get(KAknFepSpaceWithScrollRight,  iSharedDataSpaceWithScrollRight);
       
   506         iAknFepRepository->Get(KAknFepEnterWithScrollDown,   iSharedDataEnterWithScrollDown);
       
   507         }
       
   508         
       
   509     TRAP(ret, iGsPenSettings = CRepository::NewL(KCRUidPersonalizationSettings));
       
   510     
       
   511     TRAP(ret, iSensorRepository = CRepository::NewL( KCRUidSensorSettings ) );
       
   512     }
       
   513 
       
   514 TInt CAknFepSharedDataInterface::HashKeySelectionNotification(TAny* aObj)
       
   515     {
       
   516     if (aObj)
       
   517         {
       
   518         static_cast<CAknFepSharedDataInterface*>(aObj)->HandleHashKeySelectionChange();
       
   519         return KErrNone;
       
   520         }
       
   521     else
       
   522         {
       
   523         return KErrArgument;
       
   524         }
       
   525     }
       
   526     
       
   527 void CAknFepSharedDataInterface::HandleHashKeySelectionChange()
       
   528     {
       
   529     TInt value(0);
       
   530     
       
   531     if (iAknFepRepository)
       
   532         {
       
   533         iAknFepRepository->Get(KAknFepHashKeySelection, value);
       
   534         }
       
   535     
       
   536     iHashKeySelectionInUse = value;
       
   537     }
       
   538 
       
   539 
       
   540 TInt CAknFepSharedDataInterface::InputModeChangeGSNotification(TAny* aObj)
       
   541     {
       
   542     if (aObj)
       
   543         {
       
   544         static_cast<CAknFepSharedDataInterface*>(aObj)->HandleInputModeGSChange();
       
   545         return KErrNone;
       
   546         }
       
   547     else
       
   548         {
       
   549         return KErrArgument;
       
   550         }
       
   551     }
       
   552 
       
   553 void CAknFepSharedDataInterface::HandleInputModeGSChange()
       
   554     {
       
   555     iFepManager->SetFlag(CAknFepManager::EFlagNewSharedDataInputMode);
       
   556     }
       
   557 
       
   558 TInt CAknFepSharedDataInterface::InputTextLangGSNotification(TAny* aObj)
       
   559     {
       
   560     if (aObj)
       
   561         {
       
   562         static_cast<CAknFepSharedDataInterface*>(aObj)->HandleInputTextLanguageGSChange();
       
   563         return KErrNone;
       
   564         }
       
   565     else
       
   566         {
       
   567         return KErrArgument;
       
   568         }
       
   569     }
       
   570 
       
   571 void CAknFepSharedDataInterface::HandleInputTextLanguageGSChange()
       
   572     {
       
   573     iFepManager->SetFlag(CAknFepManager::EFlagNewSharedDataInputLanguage);
       
   574     ESubVariantFlag subVariant = AknLayoutUtils::SubVariant();
       
   575     if((AknLayoutUtils::Variant() == EApacVariant)
       
   576         && ((subVariant == EPrcSubVariant)
       
   577         || (subVariant == EHongKongSubVariant)
       
   578         || (subVariant == ETaiwanSubVariant)))
       
   579         {
       
   580         iFepManager->SetFlag(CAknFepManager::EFlagNewSharedDataInputMode);
       
   581         }
       
   582     }
       
   583 
       
   584 
       
   585 TInt CAknFepSharedDataInterface::PredictiveTextSettingChangeGSNotification(TAny* aObj)
       
   586     {
       
   587     if (aObj)
       
   588         {
       
   589         static_cast<CAknFepSharedDataInterface*>(aObj)->HandlePredictiveTextSettingGSChange();
       
   590         return KErrNone;
       
   591         }
       
   592     else
       
   593         {
       
   594         return KErrArgument;
       
   595         }
       
   596     }
       
   597 
       
   598 TInt CAknFepSharedDataInterface::JapanesePredictiveTextSettingChangeGSNotification(TAny* aObj)
       
   599     {
       
   600     if (aObj)
       
   601         {
       
   602         static_cast<CAknFepSharedDataInterface*>(aObj)->HandleJapanesePredictiveTextSettingGSChange();
       
   603         return KErrNone;
       
   604         }
       
   605     else
       
   606         {
       
   607         return KErrArgument;
       
   608         }
       
   609     }
       
   610 
       
   611 TInt CAknFepSharedDataInterface::QwertyModeChangeNotification(TAny* aObj)
       
   612     {
       
   613     if (aObj)
       
   614         {
       
   615         static_cast<CAknFepSharedDataInterface*>(aObj)->HandleQwertyModeChangeNotification();
       
   616         return KErrNone;
       
   617         }
       
   618     else
       
   619         {
       
   620         return KErrArgument;
       
   621         }
       
   622     }
       
   623 
       
   624 void CAknFepSharedDataInterface::HandlePredictiveTextSettingGSChange()
       
   625     {
       
   626     TInt value = 0;
       
   627 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   628     if (iAknFepRepository)
       
   629         {
       
   630         iAknFepRepository->Get(KAknFepPredTxtFlagExtension, value);
       
   631         }
       
   632     TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout();
       
   633     switch(layout)
       
   634         {
       
   635         case EPtiKeyboardNone:
       
   636             break;
       
   637       	case EPtiKeyboard12Key:
       
   638             value &= EKeyboardStyle12Key;
       
   639             break;
       
   640         case EPtiKeyboardHalfQwerty:
       
   641             value &= EKeyboardStyleHalfQwerty;
       
   642             break;            
       
   643       	case EPtiKeyboardQwerty4x12:
       
   644       	case EPtiKeyboardQwerty4x10:
       
   645       	case EPtiKeyboardQwerty3x11:      	
       
   646       	case EPtiKeyboardCustomQwerty:
       
   647             value &= EKeyboardStyleQwerty;
       
   648             break;
       
   649       	default:
       
   650       	    break;
       
   651         }
       
   652     if (value > 0)
       
   653     	{
       
   654     	value = 1;
       
   655     	}
       
   656 #else
       
   657     if (iAknFepRepository)
       
   658         {
       
   659         iAknFepRepository->Get(KAknFepPredTxtFlag, value);
       
   660         }
       
   661 #endif
       
   662     iFepManager->SetWesternPredictive(value);
       
   663     }
       
   664 
       
   665 void CAknFepSharedDataInterface::HandleJapanesePredictiveTextSettingGSChange()
       
   666     {
       
   667     TInt value = 0;
       
   668     if (iAknFepRepository)
       
   669         {
       
   670         iAknFepRepository->Get(KAknFepJapanesePredTxtFlag, value);
       
   671         }
       
   672     iFepManager->SetJapanesePredictive(value);
       
   673     }
       
   674 
       
   675 void CAknFepSharedDataInterface::HandleQwertyModeChangeNotification()
       
   676     {
       
   677     TInt value = 0;
       
   678     iQwertyModeStatusProperty.Get(value);
       
   679     iFepManager->SetQwertyMode(value);
       
   680     }
       
   681 
       
   682 TInt CAknFepSharedDataInterface::NumberModeChangesGSNotification()
       
   683     {
       
   684     iFepManager->NumberModeChangeGSNotification();
       
   685     return KErrNone;
       
   686     }
       
   687 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   688 
       
   689 //
       
   690 //Intensionally not called methods
       
   691 // JapanesePredictiveTextSettingChangeGSNotification()
       
   692 // MultiTapTimerChangeGSNotification()
       
   693 // JapaneseQwertyFlagsChangeGSNotification()
       
   694 // PredictiveTextAutoCompleteSettingChangeGSNotification() - Autocompletion feature
       
   695 // 
       
   696 TInt CAknFepSharedDataInterface::HandleGenericRepositoryChange(TAny* aPtr)
       
   697     {
       
   698     CAknFepSharedDataInterface *self = STATIC_CAST(CAknFepSharedDataInterface*, aPtr);
       
   699     TInt error = KErrNone;
       
   700     if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepChineseInputMode)
       
   701         {
       
   702         error = InputModeChangeGSNotification(aPtr);
       
   703         }
       
   704     if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepInputTxtLang)
       
   705         {
       
   706         error = InputTextLangGSNotification(aPtr);
       
   707         }
       
   708     if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepPredTxtFlag)
       
   709         {
       
   710         error = PredictiveTextSettingChangeGSNotification(aPtr);
       
   711         }
       
   712     if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepAutoCompleteFlag)
       
   713         {
       
   714         error = PredictiveTextAutoCompleteSettingChangeGSNotification(aPtr);
       
   715         }
       
   716     if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepTypingCorrectionLevel)
       
   717         {
       
   718         error = PredictiveTextTypingCorrectionLevelChangeNotification(aPtr);
       
   719         }
       
   720     if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepNumberCandidateFlag)
       
   721         {
       
   722         error = PredictiveTextNumberCandidateSettingChangeNotification(aPtr);
       
   723         }
       
   724     if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepPrimaryCandidateFlag)
       
   725         {
       
   726         error = PredictiveTextPrimaryCandidateChangeNotification(aPtr);
       
   727         }
       
   728 
       
   729     return error;
       
   730     }
       
   731 #endif
       
   732 TInt CAknFepSharedDataInterface::HandleRepositoryCallBack(TAny* aPtr)
       
   733     {
       
   734     CAknFepSharedDataInterface *self = STATIC_CAST(CAknFepSharedDataInterface*, aPtr);
       
   735 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   736     
       
   737     if( self->iAknFepRepositoryWatcher && 
       
   738         self->iAknFepRepositoryWatcher->IsGenericCenrepChange())
       
   739         {
       
   740         return HandleGenericRepositoryChange(aPtr);
       
   741         }
       
   742     else
       
   743 #endif        
       
   744     if (self->iAknFepRepositoryWatcher)
       
   745         {
       
   746 		 if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepHashKeySelection)
       
   747         	{
       
   748         	return HashKeySelectionNotification(aPtr);
       
   749         	}
       
   750         if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepChineseInputMode)
       
   751             {
       
   752             return InputModeChangeGSNotification(aPtr);
       
   753             }
       
   754         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepInputTxtLang)
       
   755             {
       
   756             return InputTextLangGSNotification(aPtr);
       
   757             }
       
   758 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   759 #ifdef FF_DUAL_LANGUAGE_SUPPORT
       
   760         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepInputTxtLangSecondary)
       
   761             {
       
   762             return InputTextLangGSNotification(aPtr);
       
   763             }
       
   764 #endif //FF_DUAL_LANGUAGE_SUPPORT
       
   765 #endif
       
   766         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepPredTxtFlag)
       
   767             {
       
   768             return PredictiveTextSettingChangeGSNotification(aPtr);
       
   769             }
       
   770         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepJapanesePredTxtFlag)
       
   771             {
       
   772             return JapanesePredictiveTextSettingChangeGSNotification(aPtr);
       
   773             }
       
   774         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepMultiTapTimer)
       
   775             {
       
   776             return MultiTapTimerChangeGSNotification(aPtr);
       
   777             }
       
   778         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepJapaneseSpecialCharFlag)
       
   779             {
       
   780             return JapaneseQwertyFlagsChangeGSNotification(aPtr);
       
   781             }
       
   782 #ifndef RD_INTELLIGENT_TEXT_INPUT
       
   783         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepAutoCompleteFlag)
       
   784             {
       
   785             return PredictiveTextAutoCompleteSettingChangeGSNotification(aPtr);
       
   786             }          
       
   787 #endif	//RD_INTELLIGENT_TEXT_INPUT
       
   788 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   789         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepAutoCompleteFlag)
       
   790             {
       
   791             return PredictiveTextAutoCompleteSettingChangeGSNotification(aPtr);
       
   792             }          
       
   793         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepTypingCorrectionLevel)
       
   794             {
       
   795             return PredictiveTextTypingCorrectionLevelChangeNotification(aPtr);
       
   796             }          
       
   797         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepNumberCandidateFlag)
       
   798             {
       
   799             return PredictiveTextNumberCandidateSettingChangeNotification(aPtr);
       
   800             }
       
   801         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepPrimaryCandidateFlag)
       
   802             {
       
   803             return PredictiveTextPrimaryCandidateChangeNotification(aPtr);
       
   804             }
       
   805         else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepPredTxtFlagExtension)
       
   806             {
       
   807             return PredictiveTextSettingChangeGSNotification(aPtr);
       
   808             }          
       
   809 #endif
       
   810         }
       
   811 
       
   812     return KErrNone;
       
   813     }
       
   814     
       
   815 TInt CAknFepSharedDataInterface::HandleLocaleRepositoryCallBack(TAny* aPtr)    
       
   816 	{
       
   817 	CAknFepSharedDataInterface *self = STATIC_CAST(CAknFepSharedDataInterface*, aPtr);
       
   818 
       
   819 	if(self->iAknFepLocaleRepositoryWatcher)
       
   820 	    {
       
   821         if (self->iAknFepLocaleRepositoryWatcher->ChangedKey() == KSettingsDefaultNumberMode
       
   822         ||  self->iAknFepLocaleRepositoryWatcher->ChangedKey() == KSettingsIndicDefaultNumberMode)
       
   823 		    {
       
   824 		    return self->NumberModeChangesGSNotification();
       
   825 		    }
       
   826 	    }    
       
   827 	return KErrNone;	
       
   828 	}
       
   829 
       
   830 CAknFepSharedDataInterface::CSubscriber::CSubscriber(TCallBack aCallBack, RProperty& aProperty)
       
   831     :
       
   832     CActive(EPriorityNormal), iCallBack(aCallBack), iProperty(aProperty)
       
   833     {
       
   834     CActiveScheduler::Add(this);
       
   835     }
       
   836 
       
   837 CAknFepSharedDataInterface::CSubscriber::~CSubscriber()
       
   838     {
       
   839     Cancel();
       
   840     }
       
   841 
       
   842 void CAknFepSharedDataInterface::CSubscriber::SubscribeL()
       
   843     {
       
   844     if (!IsActive())
       
   845         {
       
   846         iProperty.Subscribe(iStatus);
       
   847         SetActive();
       
   848         }
       
   849     }
       
   850 
       
   851 void CAknFepSharedDataInterface::CSubscriber::StopSubscribe()
       
   852     {
       
   853     Cancel();
       
   854     }
       
   855 
       
   856 void CAknFepSharedDataInterface::CSubscriber::RunL()
       
   857     {
       
   858     if (iStatus.Int() == KErrNone)
       
   859         {
       
   860         iCallBack.CallBack();
       
   861         SubscribeL();
       
   862         }
       
   863     }
       
   864 
       
   865 void CAknFepSharedDataInterface::CSubscriber::DoCancel()
       
   866     {
       
   867     iProperty.Cancel();
       
   868     }
       
   869     
       
   870     
       
   871 TInt CAknFepSharedDataInterface::EditSubmenuInUse() const
       
   872     {
       
   873     TInt value = 0;				
       
   874     if (iAknFepRepository)
       
   875         {
       
   876         iAknFepRepository->Get(KAknFepHashKeySelection, value);
       
   877         }       
       
   878     
       
   879     return value;    
       
   880     }
       
   881     
       
   882     
       
   883     
       
   884 TInt CAknFepSharedDataInterface::HashKeySelectionInUse()
       
   885     {
       
   886     // This is never used in qwerty modes.
       
   887     if (QwertyInputMode())
       
   888     	{
       
   889     	return 0;
       
   890     	}
       
   891     	    	
       
   892     TInt value = 0;     	    		    	
       
   893     if (iAknFepRepository)
       
   894         {
       
   895         iAknFepRepository->Get(KAknFepHashKeySelection, value);
       
   896         }        
       
   897  
       
   898     return iHashKeySelectionInUse;
       
   899     }   
       
   900     
       
   901 
       
   902 CAknFepRepositoryWatcher* CAknFepRepositoryWatcher::NewL(
       
   903     const TUid aUid,
       
   904     const TUint32 aKey,
       
   905     CCenRepNotifyHandler::TCenRepKeyType aKeyType,
       
   906     TCallBack aCallBack,
       
   907     CRepository* aRepository)
       
   908     {
       
   909     CAknFepRepositoryWatcher* self = new(ELeave) CAknFepRepositoryWatcher(aUid, aKey, aCallBack, 
       
   910                                                                           aRepository);
       
   911 
       
   912     CleanupStack::PushL(self);
       
   913     self->ConstructL(aKeyType);
       
   914     CleanupStack::Pop(self);
       
   915 
       
   916     return self;
       
   917     }
       
   918 
       
   919 CAknFepRepositoryWatcher* CAknFepRepositoryWatcher::NewL(
       
   920     const TUid aUid,
       
   921     TCallBack aCallBack,
       
   922     CRepository* aRepository)
       
   923     {
       
   924     CAknFepRepositoryWatcher* self = new(ELeave) CAknFepRepositoryWatcher(aUid, 
       
   925                            NCentralRepositoryConstants::KInvalidNotificationId, 
       
   926                            aCallBack, aRepository);
       
   927 
       
   928     CleanupStack::PushL(self);
       
   929     self->ConstructL();
       
   930     CleanupStack::Pop(self);
       
   931 
       
   932     return self;
       
   933     }
       
   934 
       
   935 CAknFepRepositoryWatcher::~CAknFepRepositoryWatcher()
       
   936     {
       
   937     if( iNotifyHandler )
       
   938         {
       
   939         iNotifyHandler->StopListening();
       
   940         delete iNotifyHandler;
       
   941         iNotifyHandler = NULL;
       
   942         }
       
   943     }
       
   944 
       
   945 CAknFepRepositoryWatcher::CAknFepRepositoryWatcher(
       
   946     const TUid aUid,
       
   947     const TUint32 aKey,
       
   948     TCallBack aCallBack,
       
   949     CRepository* aRepository)
       
   950     :
       
   951     iUid(aUid), iKey(aKey), iCallBack(aCallBack), iRepository(aRepository)
       
   952 #ifdef RD_INTELLIGENT_TEXT_INPUT    
       
   953     , iIsGeneric (EFalse)
       
   954 #endif    
       
   955     {
       
   956     }
       
   957 
       
   958 void CAknFepRepositoryWatcher::ConstructL(CCenRepNotifyHandler::TCenRepKeyType aKeyType)
       
   959     {
       
   960     iNotifyHandler = CCenRepNotifyHandler::NewL(*this, *iRepository, aKeyType, iKey);
       
   961     iNotifyHandler->StartListeningL();
       
   962     }
       
   963 
       
   964 void CAknFepRepositoryWatcher::ConstructL()
       
   965     {
       
   966     iNotifyHandler = CCenRepNotifyHandler::NewL(*this, *iRepository);
       
   967     iNotifyHandler->StartListeningL();
       
   968     }
       
   969 
       
   970 TUint32 CAknFepRepositoryWatcher::ChangedKey()
       
   971     {
       
   972     return iChangedKey;
       
   973     }
       
   974 
       
   975 void CAknFepRepositoryWatcher::HandleNotifyInt(TUint32 aKey, TInt aNewValue)
       
   976     {
       
   977 #ifdef _DEBUG
       
   978     RDebug::Print(_L("AknFep: HandleNotifyInt aKey=%d, aNewValue=%d"), aKey, aNewValue);
       
   979 #endif
       
   980     iChangedKey = aKey;
       
   981 #ifdef RD_INTELLIGENT_TEXT_INPUT    
       
   982     iIsGeneric = EFalse;
       
   983 #endif    
       
   984     iCallBack.CallBack();
       
   985     iChangedKey = NCentralRepositoryConstants::KInvalidNotificationId;
       
   986     }
       
   987 
       
   988 void CAknFepRepositoryWatcher::HandleNotifyError(TUint32 /*aKey*/, TInt /*aError*/, CCenRepNotifyHandler* /*aHandler*/)
       
   989     {
       
   990     }
       
   991 
       
   992 /*
       
   993 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   994 void CAknFepRepositoryWatcher::HandleNotifyGeneric(TUint32 aId)
       
   995     {
       
   996 #ifdef _DEBUG
       
   997     RDebug::Print(_L("AknFep: HandleNotifyGeneric aId=%d"), aId);
       
   998 #endif  
       
   999     iChangedKey = aId;
       
  1000     iIsGeneric = ETrue;
       
  1001     iCallBack.CallBack();      
       
  1002     iChangedKey = NCentralRepositoryConstants::KInvalidNotificationId;
       
  1003     }
       
  1004 #else*/
       
  1005 
       
  1006 void CAknFepRepositoryWatcher::HandleNotifyGeneric(TUint32 aId)
       
  1007     {
       
  1008 #ifdef _DEBUG
       
  1009     RDebug::Print(_L("AknFep: HandleNotifyGeneric aId=%d"), aId);
       
  1010 #endif  
       
  1011     iChangedKey = aId;
       
  1012     iCallBack.CallBack();
       
  1013     iChangedKey = NCentralRepositoryConstants::KInvalidNotificationId;  
       
  1014     }
       
  1015 //#endif
       
  1016 
       
  1017 /**
       
  1018  * Multitap timer value. 
       
  1019  * Replaces the constant KMultiTapTimeoutMS in Japanese variant.
       
  1020  *
       
  1021  * @since 3.0
       
  1022  * @return Value of KAknFepMultiTapTimer setting.
       
  1023  */
       
  1024 TInt CAknFepSharedDataInterface::MultiTapTimer() const
       
  1025     {
       
  1026     TInt value = 1000000;
       
  1027     if (iAknFepRepository)
       
  1028         {
       
  1029         iAknFepRepository->Get(KAknFepMultiTapTimer, value);
       
  1030         }
       
  1031     return value;
       
  1032     }
       
  1033     
       
  1034 /**
       
  1035  * Change notification for Multitap timer. 
       
  1036  *
       
  1037  * @since 3.0
       
  1038  * @return return KErrNone if aObj isn't NULL
       
  1039  *         return KErrArgument if aObj is NULL
       
  1040  */
       
  1041 TInt CAknFepSharedDataInterface::MultiTapTimerChangeGSNotification(TAny* aObj)
       
  1042     {
       
  1043     if (aObj)
       
  1044         {
       
  1045         static_cast<CAknFepSharedDataInterface*>(aObj)->HandleMultiTapTimerChangeGSNotification();
       
  1046         return KErrNone;
       
  1047         }
       
  1048     else
       
  1049         {
       
  1050         return KErrArgument;
       
  1051         }
       
  1052     }
       
  1053 
       
  1054 /**
       
  1055  * Handle change notification for Multitap timer. 
       
  1056  *
       
  1057  * @since 3.0
       
  1058  */
       
  1059 void CAknFepSharedDataInterface::HandleMultiTapTimerChangeGSNotification()
       
  1060     {
       
  1061     TInt value = MultiTapTimer();
       
  1062     iFepManager->SetMultiTapTimer(value);
       
  1063     }
       
  1064 
       
  1065 /**
       
  1066  * Japanese Qwerty Flags value. 
       
  1067  * Replaces the constant KAknFepJapaneseSpecialCharFlag in Japanese variant.
       
  1068  *
       
  1069  * @since 3.0
       
  1070  * @return Value of KAknFepJapaneseSpecialCharFlag setting.
       
  1071  */
       
  1072 TInt CAknFepSharedDataInterface::JapaneseQwertyFlags() const
       
  1073     {
       
  1074     TInt value = 0x000F;
       
  1075     if (iAknFepRepository)
       
  1076         {
       
  1077         iAknFepRepository->Get(KAknFepJapaneseSpecialCharFlag, value);
       
  1078         }
       
  1079     return value;
       
  1080     }
       
  1081     
       
  1082 /**
       
  1083  * Change notification for Japanese Qwerty Flags. 
       
  1084  *
       
  1085  * @since 3.0
       
  1086  * @return return KErrNone if aObj isn't NULL
       
  1087  *         return KErrArgument if aObj is NULL
       
  1088  */
       
  1089 TInt CAknFepSharedDataInterface::JapaneseQwertyFlagsChangeGSNotification(TAny* aObj)
       
  1090     {
       
  1091     if (aObj)
       
  1092         {
       
  1093         static_cast<CAknFepSharedDataInterface*>(aObj)->HandleJapaneseQwertyFlagsChangeGSNotification();
       
  1094         return KErrNone;
       
  1095         }
       
  1096     else
       
  1097         {
       
  1098         return KErrArgument;
       
  1099         }
       
  1100     }
       
  1101 
       
  1102 /**
       
  1103  * Handle change notification for Japanese Qwerty Flags. 
       
  1104  *
       
  1105  * @since 3.0
       
  1106  */
       
  1107 void CAknFepSharedDataInterface::HandleJapaneseQwertyFlagsChangeGSNotification()
       
  1108     {
       
  1109     TInt value = JapaneseQwertyFlags();
       
  1110     iFepManager->SetJapaneseQwertyFlags(value);
       
  1111     }
       
  1112 
       
  1113 /**
       
  1114  * Returns a value of current clear direction.
       
  1115  *
       
  1116  * @since 3.2
       
  1117  * @return Value of KAknFepClearDirection setting.
       
  1118  */
       
  1119 TInt CAknFepSharedDataInterface::ClearDirection() const
       
  1120     {
       
  1121     TInt value = EClearDirectionLeft;
       
  1122     if (iAknFepRepository)
       
  1123         {
       
  1124         iAknFepRepository->Get(KAknFepClearDirection, value);
       
  1125         }
       
  1126     return value;
       
  1127     }
       
  1128 
       
  1129 /**
       
  1130  * Set a value of current clear direction.
       
  1131  *
       
  1132  * @since 3.2
       
  1133  * @param aValue new value set to Clear Direction shared data item which
       
  1134  *               represents the direction currently being used
       
  1135  */
       
  1136 void CAknFepSharedDataInterface::SetClearDirection(TInt aValue)
       
  1137     {
       
  1138     if (iAknFepRepository)
       
  1139         {
       
  1140         iAknFepRepository->Set(KAknFepClearDirection, aValue);
       
  1141         }
       
  1142     }
       
  1143 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1144 TInt CAknFepSharedDataInterface::HandleKeyboardLayoutChangeNotification(TAny* aObj)
       
  1145     {
       
  1146     if (aObj)
       
  1147         {
       
  1148         static_cast<CAknFepSharedDataInterface*>(aObj)->HandleKeyboardLayoutChange();
       
  1149         return KErrNone;
       
  1150         }
       
  1151     else
       
  1152         {
       
  1153         return KErrArgument;
       
  1154         }
       
  1155     }
       
  1156 #endif
       
  1157     
       
  1158     
       
  1159 void CAknFepSharedDataInterface::SetPredictiveTextAutoCompleteOn()
       
  1160     {
       
  1161     if (iAknFepRepository)
       
  1162         {
       
  1163 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1164         //Set autocomplete flag only for the current keyboard layout type. Otherwise,
       
  1165         //by simply setting to "1", we los information on autocompletion settings
       
  1166         //of other keyboard types.
       
  1167         TPtiKeyboardType currentKeyboardLayoutlayout = (TPtiKeyboardType)KeyboardLayout();
       
  1168         TInt autocompletionSetting = 0;
       
  1169         iAknFepRepository->Get(KAknFepAutoCompleteFlag, autocompletionSetting);
       
  1170         switch(currentKeyboardLayoutlayout)
       
  1171             {
       
  1172             case EPtiKeyboardNone:
       
  1173                 break;
       
  1174             case EPtiKeyboard12Key:
       
  1175                 autocompletionSetting |= EKeyboardStyle12Key;
       
  1176                 break;
       
  1177             case EPtiKeyboardQwerty4x12:
       
  1178             case EPtiKeyboardQwerty4x10:
       
  1179             case EPtiKeyboardQwerty3x11:
       
  1180             case EPtiKeyboardHalfQwerty:
       
  1181             case EPtiKeyboardCustomQwerty:
       
  1182                 autocompletionSetting |= EKeyboardStyleQwerty;
       
  1183                 break;
       
  1184             default:
       
  1185                 break;
       
  1186             }
       
  1187         iAknFepRepository->Set(KAknFepAutoCompleteFlag, autocompletionSetting);
       
  1188 #else
       
  1189         iAknFepRepository->Set(KAknFepAutoCompleteFlag, 1);
       
  1190 #endif
       
  1191         }
       
  1192     }    
       
  1193 
       
  1194 
       
  1195 void CAknFepSharedDataInterface::ResetPredictiveTextAutoCompleteOn()
       
  1196     {
       
  1197     if (iAknFepRepository)
       
  1198         {
       
  1199 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1200         //Reset autocomplete flag only for the current keyboard layout type. Otherwise,
       
  1201         //by simply setting to "0", we lose information on autocompletion settings
       
  1202         //of other keyboard types.
       
  1203         TPtiKeyboardType currentKeyboardLayoutlayout = (TPtiKeyboardType)KeyboardLayout();
       
  1204         TInt autocompletionSetting = 0;
       
  1205         iAknFepRepository->Get(KAknFepAutoCompleteFlag, autocompletionSetting);
       
  1206         switch(currentKeyboardLayoutlayout)
       
  1207             {
       
  1208             case EPtiKeyboardNone:
       
  1209                 break;
       
  1210             case EPtiKeyboard12Key:
       
  1211                 autocompletionSetting &= ~EKeyboardStyle12Key;
       
  1212                 break;
       
  1213             case EPtiKeyboardQwerty4x12:
       
  1214             case EPtiKeyboardQwerty4x10:
       
  1215             case EPtiKeyboardQwerty3x11:
       
  1216             case EPtiKeyboardHalfQwerty:
       
  1217             case EPtiKeyboardCustomQwerty:
       
  1218                 autocompletionSetting &= ~EKeyboardStyleQwerty;
       
  1219                 break;
       
  1220             default:
       
  1221                 break;
       
  1222             }
       
  1223         iAknFepRepository->Set(KAknFepAutoCompleteFlag, autocompletionSetting);
       
  1224 #else
       
  1225         iAknFepRepository->Set(KAknFepAutoCompleteFlag, 0);
       
  1226 #endif
       
  1227         }
       
  1228     }
       
  1229     
       
  1230 #ifndef RD_INTELLIGENT_TEXT_INPUT
       
  1231 void CAknFepSharedDataInterface::HandlePredictiveTextAutoCompleteSettingGSChange()
       
  1232     {
       
  1233     TInt value = 0;
       
  1234     if (iAknFepRepository)
       
  1235         {
       
  1236         iAknFepRepository->Get(KAknFepAutoCompleteFlag, value);
       
  1237         }
       
  1238     iFepManager->SetAutoCompletionState(value);
       
  1239     }
       
  1240     
       
  1241     
       
  1242 TInt CAknFepSharedDataInterface::PredictiveTextAutoCompleteSettingChangeGSNotification(TAny* aObj)
       
  1243     {
       
  1244     if (aObj)
       
  1245         {
       
  1246         static_cast<CAknFepSharedDataInterface*>(aObj)->HandlePredictiveTextAutoCompleteSettingGSChange();
       
  1247         return KErrNone;
       
  1248         }
       
  1249     else
       
  1250         {
       
  1251         return KErrArgument;
       
  1252         }
       
  1253     }    
       
  1254 
       
  1255 #endif	//RD_INTELLIGENT_TEXT_INPUT
       
  1256 
       
  1257 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1258 void CAknFepSharedDataInterface::SetFnKeyState(TInt aState)
       
  1259     {
       
  1260     RProperty::Set(KPSUidAknFep,KAknFepFnKeyState, aState);
       
  1261     }
       
  1262     
       
  1263 TInt CAknFepSharedDataInterface::GetFnKeyState()
       
  1264     {
       
  1265     TInt state = 0;
       
  1266     RProperty::Get(KPSUidAknFep,KAknFepFnKeyState, state);
       
  1267     return state;
       
  1268     }
       
  1269 void CAknFepSharedDataInterface::HandleKeyboardLayoutChange()
       
  1270     {
       
  1271     TInt value = 0;
       
  1272     TPtiKeyboardType keyboardType;
       
  1273     iKeyboardLayoutStatusProperty.Get(value);
       
  1274     keyboardType = (TPtiKeyboardType)value;
       
  1275     iFepManager->SetKeyboardLayout(keyboardType);
       
  1276     iFepManager->SetFnKeyMappingState();
       
  1277 #ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
       
  1278     iFepManager->StopDisplayingMenuBar();
       
  1279 #endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
       
  1280     }
       
  1281 TInt CAknFepSharedDataInterface::PredictiveTextAutoCompleteOn()
       
  1282     {
       
  1283     TInt value = 0;
       
  1284     if (iAknFepRepository)
       
  1285         {
       
  1286         TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout();
       
  1287         TInt temp = 0;
       
  1288         iAknFepRepository->Get(KAknFepAutoCompleteFlag, temp);
       
  1289         switch(layout)
       
  1290             {
       
  1291             case EPtiKeyboardNone:
       
  1292                 break;
       
  1293           	case EPtiKeyboard12Key:
       
  1294                 temp &= EKeyboardStyle12Key;
       
  1295                 break;
       
  1296             case EPtiKeyboardHalfQwerty:
       
  1297                 temp &= EKeyboardStyleHalfQwerty;
       
  1298                 break;
       
  1299           	case EPtiKeyboardQwerty4x12:
       
  1300           	case EPtiKeyboardQwerty4x10:
       
  1301           	case EPtiKeyboardQwerty3x11:          	
       
  1302           	case EPtiKeyboardCustomQwerty:
       
  1303                 temp &= EKeyboardStyleQwerty;
       
  1304                 break;
       
  1305           	default:
       
  1306           	    break;
       
  1307             }
       
  1308         value = ( temp ? 1 : 0);
       
  1309         }
       
  1310     return value;
       
  1311     }
       
  1312 
       
  1313 void CAknFepSharedDataInterface::HandlePredictiveTextAutoCompleteSettingGSChange()
       
  1314     {
       
  1315     TInt value = 0;
       
  1316     if (iAknFepRepository)
       
  1317         {
       
  1318         iAknFepRepository->Get(KAknFepAutoCompleteFlag, value);
       
  1319         }
       
  1320     TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout();
       
  1321     switch(layout)
       
  1322         {
       
  1323         case EPtiKeyboardNone:
       
  1324             break;
       
  1325       	case EPtiKeyboard12Key:
       
  1326             value &= EKeyboardStyle12Key;
       
  1327             break;
       
  1328         case EPtiKeyboardHalfQwerty:    
       
  1329             value &= EKeyboardStyleHalfQwerty;
       
  1330             break;
       
  1331       	case EPtiKeyboardQwerty4x12:
       
  1332       	case EPtiKeyboardQwerty4x10:
       
  1333       	case EPtiKeyboardQwerty3x11:      	
       
  1334       	case EPtiKeyboardCustomQwerty:
       
  1335             value &= EKeyboardStyleQwerty;
       
  1336             break;
       
  1337       	default:
       
  1338       	    break;
       
  1339         }
       
  1340     if (value > 0)
       
  1341     	{
       
  1342     	value = 1;
       
  1343     	}
       
  1344     iFepManager->SetAutoCompletionState(value);
       
  1345     }
       
  1346     
       
  1347     
       
  1348 TInt CAknFepSharedDataInterface::PredictiveTextAutoCompleteSettingChangeGSNotification(TAny* aObj)
       
  1349     {
       
  1350     if (aObj) 
       
  1351         {
       
  1352         static_cast<CAknFepSharedDataInterface*>(aObj)->HandlePredictiveTextAutoCompleteSettingGSChange();
       
  1353         return KErrNone;
       
  1354         }
       
  1355     else
       
  1356         {
       
  1357         return KErrArgument;
       
  1358         }
       
  1359     }    
       
  1360 /**
       
  1361  * Queries the value of PredictiveText Typing Correction Level from shared data
       
  1362  *
       
  1363  * @return Typing Correction Level
       
  1364 */
       
  1365 TInt CAknFepSharedDataInterface::PredictiveTextTypingCorrectionLevel()
       
  1366 	{
       
  1367 	TInt value = 0;
       
  1368     if (iAknFepRepository)
       
  1369         {
       
  1370         iAknFepRepository->Get(KAknFepTypingCorrectionLevel, value);
       
  1371         }
       
  1372     return value;
       
  1373 	}
       
  1374 
       
  1375 
       
  1376 /**
       
  1377  * Sets the value of PredictiveText Typing Correction Level state to aCorrectionLevel in shared data 
       
  1378 */    
       
  1379 void CAknFepSharedDataInterface::SetPredictiveTextTypingCorrectionLevel(TInt aCorrectionLevel)
       
  1380 	{
       
  1381 	if (iAknFepRepository)
       
  1382         {
       
  1383         iAknFepRepository->Set(KAknFepTypingCorrectionLevel, aCorrectionLevel);
       
  1384         }
       
  1385 	}
       
  1386 
       
  1387 void CAknFepSharedDataInterface::HandlePredictiveTextTypingCorrectionLevelChange()
       
  1388     {
       
  1389     TInt value = 0;
       
  1390     if (iAknFepRepository)
       
  1391         {
       
  1392         iAknFepRepository->Get(KAknFepTypingCorrectionLevel, value);
       
  1393         }
       
  1394     iFepManager->SetTypingCorrectionLevel(value);
       
  1395     }
       
  1396 
       
  1397  /**
       
  1398  * Handles a change in predictive text Typing Correction Level setting.
       
  1399 */    
       
  1400 TInt CAknFepSharedDataInterface::PredictiveTextTypingCorrectionLevelChangeNotification(TAny* aObj)
       
  1401 	{
       
  1402 	if (aObj) 
       
  1403         {
       
  1404         static_cast<CAknFepSharedDataInterface*>(aObj)->HandlePredictiveTextTypingCorrectionLevelChange();
       
  1405         return KErrNone;
       
  1406         }
       
  1407     else
       
  1408         {
       
  1409         return KErrArgument;
       
  1410         }
       
  1411 	}
       
  1412 
       
  1413 /**
       
  1414  * Queries the value of PredictiveText Number Candidate Shown state to be On from shared data
       
  1415  *
       
  1416  * @return 1 for shown or 0 for not shown
       
  1417 */
       
  1418 TInt CAknFepSharedDataInterface::PredictiveTextNumberCandidateShown()
       
  1419 	{
       
  1420 	TInt value = 0;
       
  1421     if (iAknFepRepository)
       
  1422         {
       
  1423         iAknFepRepository->Get(KAknFepNumberCandidateFlag, value);
       
  1424         }
       
  1425     return value;
       
  1426 	}
       
  1427 
       
  1428 
       
  1429 /**
       
  1430  * Sets the value of PredictiveText Number Candidate Shown state to 1 in shared data - this
       
  1431  * is used to represent predictive text Number Candidate Shown being shown.
       
  1432 */    
       
  1433 void CAknFepSharedDataInterface::SetPredictiveTextNumberCandidateShown()
       
  1434 	{
       
  1435 	if (iAknFepRepository)
       
  1436         {
       
  1437         iAknFepRepository->Set(KAknFepNumberCandidateFlag, 1);
       
  1438         }
       
  1439 	}
       
  1440 
       
  1441 
       
  1442 /**
       
  1443  * Sets the value of PredictiveText Number Candidate Shown state to 0 in shared data - this
       
  1444  * is used to represent predictive text Number Candidate Shown being not shown.
       
  1445 */    
       
  1446 void CAknFepSharedDataInterface::ResetPredictiveTextNumberCandidateShown()
       
  1447 	{
       
  1448 	if (iAknFepRepository)
       
  1449         {
       
  1450         iAknFepRepository->Set(KAknFepNumberCandidateFlag, 0);
       
  1451         }
       
  1452 	}
       
  1453 
       
  1454 void CAknFepSharedDataInterface::HandlePredictiveTextNumberCandidateSettingChange()
       
  1455     {
       
  1456     TInt value = 0;
       
  1457     if (iAknFepRepository)
       
  1458         {
       
  1459         iAknFepRepository->Get(KAknFepNumberCandidateFlag, value);
       
  1460         }
       
  1461     iFepManager->SetNumberCandidateState(value);
       
  1462     }
       
  1463 
       
  1464 /**
       
  1465  * Handles a change in predictive text Number Candidate Shown setting.
       
  1466 */    
       
  1467 TInt CAknFepSharedDataInterface::PredictiveTextNumberCandidateSettingChangeNotification(TAny* aObj)
       
  1468 	{
       
  1469 	if (aObj) 
       
  1470         {
       
  1471         static_cast<CAknFepSharedDataInterface*>(aObj)->HandlePredictiveTextNumberCandidateSettingChange();
       
  1472         return KErrNone;
       
  1473         }
       
  1474     else
       
  1475         {
       
  1476         return KErrArgument;
       
  1477         }
       
  1478 	}
       
  1479 	
       
  1480 /**
       
  1481 * Queries the value of PredictiveText Primary candidate setting from shared data
       
  1482 *
       
  1483 * @return Primary candidate setting(0 for Suggested or 1 for Exact)
       
  1484 */
       
  1485 TInt CAknFepSharedDataInterface::PredictiveTextPrimaryCandidate()
       
  1486 	{
       
  1487 	TInt value = 0;
       
  1488     if (iAknFepRepository)
       
  1489         {
       
  1490         iAknFepRepository->Get(KAknFepPrimaryCandidateFlag, value);
       
  1491         }
       
  1492     return value;
       
  1493 	}
       
  1494 
       
  1495 
       
  1496 /**
       
  1497 * Sets the value of PredictiveText Primary candidate setting state to aPrimaryCandidate in shared data 
       
  1498 */    
       
  1499 void CAknFepSharedDataInterface::SetPredictiveTextPrimaryCandidate(TInt aPrimaryCandidate)
       
  1500 	{
       
  1501 	if (iAknFepRepository)
       
  1502         {
       
  1503         iAknFepRepository->Set(KAknFepPrimaryCandidateFlag, aPrimaryCandidate);
       
  1504         }
       
  1505 	}
       
  1506 /**
       
  1507 * Handles a change in predictive text Primary candidate setting.
       
  1508 */   
       
  1509 void CAknFepSharedDataInterface::HandlePredictiveTextPrimaryCandidateChange()
       
  1510     {
       
  1511     TInt value = 0;
       
  1512     if (iAknFepRepository)
       
  1513         {
       
  1514         iAknFepRepository->Get(KAknFepPrimaryCandidateFlag, value);
       
  1515         }
       
  1516     iFepManager->SetPrimaryCandidate(value);
       
  1517     }
       
  1518 
       
  1519 /**
       
  1520 * Handles a change in predictive text Typing Correction Level setting.
       
  1521 */    
       
  1522 TInt CAknFepSharedDataInterface::PredictiveTextPrimaryCandidateChangeNotification(TAny* aObj)
       
  1523 	{
       
  1524 	if (aObj) 
       
  1525         {
       
  1526         static_cast<CAknFepSharedDataInterface*>(aObj)->HandlePredictiveTextPrimaryCandidateChange();
       
  1527         return KErrNone;
       
  1528         }
       
  1529     else
       
  1530         {
       
  1531         return KErrArgument;
       
  1532         }
       
  1533 	}
       
  1534 #else	// RD_INTELLIGENT_TEXT_INPUT
       
  1535 
       
  1536 TInt CAknFepSharedDataInterface::PredictiveTextAutoCompleteOn()
       
  1537     {
       
  1538     TInt value = 0;
       
  1539     if (iAknFepRepository)
       
  1540         {
       
  1541         iAknFepRepository->Get(KAknFepAutoCompleteFlag, value);
       
  1542         }
       
  1543     return value;
       
  1544     }
       
  1545 #endif    
       
  1546 /**
       
  1547  * Returns a value of HWR conversion on/off.
       
  1548  *
       
  1549  * @since 3.2
       
  1550  * @return Value of KAknFepJapaneseHwrConversion setting.
       
  1551  */
       
  1552 TInt CAknFepSharedDataInterface::JapaneseHwrConversion() const
       
  1553     {
       
  1554     TInt value = 0;
       
  1555     if (iAknFepRepository)
       
  1556         {
       
  1557         iAknFepRepository->Get(KAknFepJapaneseSpecialCharFlag, value);
       
  1558         }
       
  1559     return (value & KJapHwrConversion)?
       
  1560                 EJapaneseConversionOn : EJapaneseConversionOff;
       
  1561     }
       
  1562 
       
  1563 /**
       
  1564  * Set a value of HWR conversion on/off.
       
  1565  *
       
  1566  * @since 3.2
       
  1567  * @param aValue new value set to HWR conversion on/off shared data item
       
  1568  */
       
  1569 void CAknFepSharedDataInterface::SetJapaneseHwrConversion(TInt aValue)
       
  1570     {
       
  1571     if (iAknFepRepository)
       
  1572         {
       
  1573         TInt value;
       
  1574         iAknFepRepository->Get(KAknFepJapaneseSpecialCharFlag, value);
       
  1575         if (aValue == EJapaneseConversionOn)
       
  1576             {
       
  1577             value |= KJapHwrConversion;
       
  1578             }
       
  1579         else
       
  1580             {
       
  1581             value &= ~(KJapHwrConversion);
       
  1582             }
       
  1583         iAknFepRepository->Set(KAknFepJapaneseSpecialCharFlag, value);
       
  1584         }
       
  1585     }
       
  1586     
       
  1587 TInt CAknFepSharedDataInterface::FepShowFsqPreviewStatus()
       
  1588     {
       
  1589     TInt value = 0;
       
  1590     if (iAknFepRepository)
       
  1591         {
       
  1592         iAknFepRepository->Get(KAknFepShowFsqPreview, value);
       
  1593         }
       
  1594     return value;
       
  1595     }
       
  1596     
       
  1597     
       
  1598 void CAknFepSharedDataInterface::SetFepShowFsqPreviewStatus(TInt aValue)
       
  1599     {
       
  1600     if (iAknFepRepository)
       
  1601         {
       
  1602         iAknFepRepository->Set(KAknFepShowFsqPreview, aValue);
       
  1603         }
       
  1604     } 
       
  1605     
       
  1606 TInt CAknFepSharedDataInterface::FepShowVkbPreviewStatus()
       
  1607     {
       
  1608     TInt value = 0;
       
  1609     if (iAknFepRepository)
       
  1610         {
       
  1611         iAknFepRepository->Get(KAknFepShowVkbPreview, value);
       
  1612         }
       
  1613     return value;
       
  1614     }
       
  1615     
       
  1616     
       
  1617 void CAknFepSharedDataInterface::SetFepShowVkbPreviewStatus(TInt aValue)
       
  1618     {
       
  1619     if (iAknFepRepository)
       
  1620         {
       
  1621         iAknFepRepository->Set(KAknFepShowVkbPreview, aValue);
       
  1622         }
       
  1623     } 
       
  1624     
       
  1625 TInt CAknFepSharedDataInterface::FepLastUseVkbModeForLandscape()
       
  1626     {
       
  1627     TInt value = 4;
       
  1628     if (iAknFepRepository)
       
  1629         {
       
  1630         iAknFepRepository->Get(KAknFepLastUseVkbMode, value);
       
  1631         }
       
  1632     return value;
       
  1633     }
       
  1634     
       
  1635     
       
  1636 void CAknFepSharedDataInterface::SetFepLastUseVkbModeForLandscape(TInt aValue)
       
  1637     {
       
  1638     if (iAknFepRepository)
       
  1639         {
       
  1640         iAknFepRepository->Set(KAknFepLastUseVkbMode, aValue);
       
  1641         }
       
  1642     }           
       
  1643 
       
  1644 TBool CAknFepSharedDataInterface::AutoRotateEnabled()
       
  1645 	{
       
  1646 	TInt sensorState( 0 );    
       
  1647 
       
  1648     if (iSensorRepository)
       
  1649         {
       
  1650         iSensorRepository->Get( KSenSettingsSensorsOn, sensorState );
       
  1651         }
       
  1652     if ( sensorState )
       
  1653         {
       
  1654         TInt turnCtrl = 0;
       
  1655         iSensorRepository->Get( KSenSettingsTurnCtrl, turnCtrl );
       
  1656         turnCtrl = turnCtrl >> 2;
       
  1657             
       
  1658         if ( turnCtrl ) 
       
  1659             {
       
  1660             return ETrue;
       
  1661             }
       
  1662         }
       
  1663     
       
  1664     return EFalse;
       
  1665 	}       
       
  1666 
       
  1667 #ifdef	RD_INTELLIGENT_TEXT_INPUT
       
  1668 #ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__
       
  1669 /**
       
  1670 * Queries if numbers (and other characters found behind Fn) can be entered with long key press on QWERTY.
       
  1671 */
       
  1672 TBool CAknFepSharedDataInterface::LongPressNumberEntryOnQwerty() const
       
  1673     {
       
  1674 	TInt value = 0;
       
  1675       if (iAknFepRepository)
       
  1676         {
       
  1677         iAknFepRepository->Get(KAknFepLongPressNumberEntryOnQwerty, value);
       
  1678         }
       
  1679     return value;
       
  1680     }
       
  1681 
       
  1682 /**
       
  1683 * Queries if copy-pasting with shift+softkeys is available also on QWERTY.
       
  1684 */
       
  1685 TBool CAknFepSharedDataInterface::ShiftCopyPastingOnQwerty() const
       
  1686     {
       
  1687 	TInt value = 0;
       
  1688       if (iAknFepRepository)
       
  1689         {
       
  1690         iAknFepRepository->Get(KAknFepShiftCopyPasteOnQwerty, value);
       
  1691         }
       
  1692     return value;
       
  1693     }
       
  1694 #endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__	
       
  1695 #endif	// RD_INTELLIGENT_TEXT_INPUT
       
  1696 
       
  1697 #ifdef  RD_SCALABLE_UI_V2
       
  1698 // ---------------------------------------------------------------------------
       
  1699 // Get a value of current default on screen vkb.
       
  1700 // It depends on input lanage is PRC/HW/TW Chinese.
       
  1701 // ---------------------------------------------------------------------------
       
  1702 //  
       
  1703 TInt CAknFepSharedDataInterface::DefaultOnScreenVKB()
       
  1704     {
       
  1705     TInt value = 0;
       
  1706     switch( PenInputLanguage() )
       
  1707         {
       
  1708         case ELangPrcChinese:
       
  1709             {
       
  1710             iGsPenSettings->Get( KSettingsDefaultVkbPrc, value );
       
  1711             }
       
  1712             break;
       
  1713         case ELangHongKongChinese:
       
  1714             {
       
  1715             iGsPenSettings->Get( KSettingsDefaultVkbHk, value );
       
  1716             }
       
  1717             break;
       
  1718          case ELangTaiwanChinese:
       
  1719             {
       
  1720             iGsPenSettings->Get( KSettingsDefaultVkbTw, value );
       
  1721             }
       
  1722             break;
       
  1723          default:
       
  1724             break;
       
  1725         }
       
  1726     return value;
       
  1727     };
       
  1728 #endif
       
  1729 
       
  1730 // End of File