javauis/lcdui_akn/lcdui/src/CMIDUtils.cpp
branchRCL_3
changeset 60 6c158198356e
parent 34 71c436fe3ce0
equal deleted inserted replaced
59:e5618cc85d74 60:6c158198356e
   701     if (!issticky && aType == EEventKeyUp)
   701     if (!issticky && aType == EEventKeyUp)
   702     {
   702     {
   703         iStickyHandler.Reset();
   703         iStickyHandler.Reset();
   704     }
   704     }
   705 
   705 
   706 
       
   707 #ifdef RD_INTELLIGENT_TEXT_INPUT
   706 #ifdef RD_INTELLIGENT_TEXT_INPUT
   708     TPtiTextCase textCase = EPtiCaseLower;
   707     TPtiTextCase textCase = EPtiCaseLower;
   709 
   708 
   710     if (modifiers & EModifierShift)
   709     if (modifiers & EModifierShift)
   711     {
   710     {
   729         return;
   728         return;
   730     }
   729     }
   731 
   730 
   732     TBuf<KPTIEngineResultSize> mapData;
   731     TBuf<KPTIEngineResultSize> mapData;
   733 
   732 
       
   733 #ifdef RD_JAVA_S60_RELEASE_9_2
       
   734     // Set keyboard type/layout just before mapping the key
       
   735     TRAPD(err, SetPtiKeyboardL());
       
   736     if (err != KErrNone)
       
   737     {
       
   738         DEBUG_INT("CMIDUtils::MappingDataForKey - SetPtiKeyboardL leaved with error = %d", err);
       
   739     }
       
   740 #endif // RD_JAVA_S60_RELEASE_9_2
       
   741 
   734     iPtiEngine->MappingDataForKey(
   742     iPtiEngine->MappingDataForKey(
   735         (TPtiKey)aEvent.iScanCode, mapData, textCase);
   743         (TPtiKey)aEvent.iScanCode, mapData, textCase);
   736 
   744 
   737     if (mapData.Length() > 0)
   745     if (mapData.Length() > 0)
   738     {
   746     {
   739         // set event code to the first mapped
   747         // set event code to the first mapped
   740         aEvent.iCode = mapData[0];
   748         aEvent.iCode = mapData[0];
   741     }
   749     }
   742 #endif // RD_INTELLIGENT_TEXT_INPUT
   750 #endif // RD_INTELLIGENT_TEXT_INPUT
   743 
       
   744 }
   751 }
   745 
   752 
   746 void CMIDUtils::UpdatePTIEngineStatusL()
   753 void CMIDUtils::UpdatePTIEngineStatusL()
   747 {
   754 {
   748 
       
   749 #ifdef RD_INTELLIGENT_TEXT_INPUT
   755 #ifdef RD_INTELLIGENT_TEXT_INPUT
   750 
       
   751     RProperty::Get(KCRUidAvkon, KAknQwertyInputModeActive, iQwertyMode);
   756     RProperty::Get(KCRUidAvkon, KAknQwertyInputModeActive, iQwertyMode);
   752 
   757 
   753     // keyboard layout default value: 0 - No Keyboard
       
   754     TInt keyboardLayout = 0;
       
   755     // Read keyboard layout from central repository
   758     // Read keyboard layout from central repository
   756     RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout);
   759     RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, iPtiKeyboardType);
       
   760     SetPtiKeyboardL();
   757 
   761 
   758     TPtiEngineInputMode mode = EPtiEngineInputModeNone;
   762     TPtiEngineInputMode mode = EPtiEngineInputModeNone;
   759     switch (keyboardLayout)
   763     switch (iPtiKeyboardType)
   760     {
   764     {
   761     case EPtiKeyboard12Key:
   765     case EPtiKeyboard12Key:
   762         mode = EPtiEngineMultitapping;
   766         mode = EPtiEngineMultitapping;
   763 #ifdef RD_JAVA_S60_RELEASE_5_0_IAD
       
   764         CallToJavaPtiVariationL(keyboardLayout);
       
   765 #else
       
   766         iPtiEngine->SetKeyboardType((TPtiKeyboardType)keyboardLayout);
       
   767 #endif
       
   768         break;
   767         break;
   769     case EPtiKeyboardQwerty4x12:
   768     case EPtiKeyboardQwerty4x12:
   770     case EPtiKeyboardQwerty4x10:
   769     case EPtiKeyboardQwerty4x10:
   771     case EPtiKeyboardQwerty3x11:
   770     case EPtiKeyboardQwerty3x11:
   772 #ifdef RD_JAVA_S60_RELEASE_5_0_IAD
       
   773         CallToJavaPtiVariationL(keyboardLayout);
       
   774 #else
       
   775         iPtiEngine->SetKeyboardType((TPtiKeyboardType)keyboardLayout);
       
   776 #endif
       
   777         mode = EPtiEngineQwerty;
   771         mode = EPtiEngineQwerty;
   778         break;
   772         break;
   779     case EPtiKeyboardHalfQwerty:
   773     case EPtiKeyboardHalfQwerty:
   780 #ifdef RD_JAVA_S60_RELEASE_5_0_IAD
       
   781         CallToJavaPtiVariationL(keyboardLayout);
       
   782 #else
       
   783         iPtiEngine->SetKeyboardType((TPtiKeyboardType)keyboardLayout);
       
   784 #endif
       
   785         mode = EPtiEngineHalfQwerty;
   774         mode = EPtiEngineHalfQwerty;
   786         break;
   775         break;
   787     default:
   776     default:
   788         break;
   777         break;
   789     }
   778     }
       
   779 
   790     // input language default value: 0 (automatic)
   780     // input language default value: 0 (automatic)
   791     TInt inputLang = 0;
   781     TInt inputLang = 0;
   792     if (iRepository)
   782     if (iRepository)
   793     {
   783     {
   794         TInt ret = iRepository->Get(KAknFepInputTxtLang, inputLang);
   784         TInt ret = iRepository->Get(KAknFepInputTxtLang, inputLang);
   805                 inputLang == ELangHongKongChinese)
   795                 inputLang == ELangHongKongChinese)
   806         {
   796         {
   807             inputLang = ELangEnglish;
   797             inputLang = ELangEnglish;
   808         }
   798         }
   809     }
   799     }
       
   800 
   810     TRAPD(err, iPtiEngine->ActivateLanguageL(inputLang, mode));
   801     TRAPD(err, iPtiEngine->ActivateLanguageL(inputLang, mode));
   811     if (KErrNone != err)
   802     if (KErrNone != err)
   812     {
   803     {
   813         DEBUG_INT("CMIDUtils::UpdatePTIEngineStatusL - ActivateLanguageL leaved with error = %d", err);
   804         DEBUG_INT("CMIDUtils::UpdatePTIEngineStatusL - ActivateLanguageL leaved with error = %d", err);
   814         return;
   805         return;
   815     }
   806     }
   816 
       
   817 
       
   818 #endif // RD_INTELLIGENT_TEXT_INPUT
   807 #endif // RD_INTELLIGENT_TEXT_INPUT
   819 
   808 }
   820 }
       
   821 
       
   822 
   809 
   823 void CMIDUtils::HandleResourceChangedL()
   810 void CMIDUtils::HandleResourceChangedL()
   824 {
   811 {
   825     UpdatePTIEngineStatusL();
   812     UpdatePTIEngineStatusL();
   826 }
   813 }
   839 //
   826 //
   840 CMIDUtils::CMIDUtils(MMIDEnv& aEnv, CMIDUIManager* aUIManager)
   827 CMIDUtils::CMIDUtils(MMIDEnv& aEnv, CMIDUIManager* aUIManager)
   841         : iEnv(&aEnv)
   828         : iEnv(&aEnv)
   842         , iUIManager(aUIManager)
   829         , iUIManager(aUIManager)
   843         , iScalingData()
   830         , iScalingData()
       
   831 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   832         , iPtiKeyboardType(EPtiKeyboardNone)
       
   833 #endif // RD_INTELLIGENT_TEXT_INPUT
   844         , iQwertyMode(EFalse)
   834         , iQwertyMode(EFalse)
   845         , iStickyKey(0)
   835         , iStickyKey(0)
   846         , iLastScanCode(0)
   836         , iLastScanCode(0)
   847         , iModifier(0)
   837         , iModifier(0)
   848         , iScalingDataInitialized(EFalse)
   838         , iScalingDataInitialized(EFalse)
   863     iPtiEngine = NULL;
   853     iPtiEngine = NULL;
   864 
   854 
   865     delete iRepository;
   855     delete iRepository;
   866     iRepository = NULL;
   856     iRepository = NULL;
   867 #endif //RD_INTELLIGENT_TEXT_INPUT
   857 #endif //RD_INTELLIGENT_TEXT_INPUT
   868 
       
   869 }
   858 }
   870 
   859 
   871 #ifdef RD_INTELLIGENT_TEXT_INPUT
   860 #ifdef RD_INTELLIGENT_TEXT_INPUT
   872 #ifdef RD_JAVA_S60_RELEASE_5_0_IAD
   861 #ifdef RD_JAVA_S60_RELEASE_5_0_IAD
   873 void CMIDUtils::CallToJavaPtiVariationL(TInt aType)
   862 void CMIDUtils::CallToJavaPtiVariationL(TInt aType)
  1220     TRect screenRect;
  1209     TRect screenRect;
  1221     if (current)
  1210     if (current)
  1222     {
  1211     {
  1223         screenRect = current->GetCanvasRectFromLaf();
  1212         screenRect = current->GetCanvasRectFromLaf();
  1224     }
  1213     }
       
  1214     else
       
  1215     {
       
  1216         // No displayable is current. It will be initialized in other time.
       
  1217         iScalingDataInitialized=EFalse;
       
  1218         return;
       
  1219     }
  1225 
  1220 
  1226     // Traslate of rect of screen into size
  1221     // Traslate of rect of screen into size
  1227     data.iScreenSize = screenRect.Size();
  1222     data.iScreenSize = screenRect.Size();
  1228 
  1223 
  1229     // Check if scaling is is on now.
  1224     // Check if scaling is ON now.
  1230     if (iMenuHandler->IsScalingEffectiveInCurrentScreen())
  1225     if (iMenuHandler->IsScalingEnabled())
  1231     {
  1226     {
  1232 
  1227 
  1233         // Get original and target size from JAD attributes
  1228         // Get original and target size from JAD attributes
  1234         data.iOriginalSize = iMenuHandler->GetScalingParameterOrgMIDletScrSize();
  1229         data.iOriginalSize = iMenuHandler->GetScalingParameterOrgMIDletScrSize();
  1235         data.iTargetSize = iMenuHandler->GetScalingParameterTargetMIDletScrSize();
  1230         data.iTargetSize = iMenuHandler->GetScalingParameterTargetMIDletScrSize();
  1624     TSize subtract = iScalingData.iScreenSize - iScalingData.iCanvasSize;
  1619     TSize subtract = iScalingData.iScreenSize - iScalingData.iCanvasSize;
  1625     TPoint canvasOrigin = TPoint(subtract.iWidth / 2, subtract.iHeight / 2);
  1620     TPoint canvasOrigin = TPoint(subtract.iWidth / 2, subtract.iHeight / 2);
  1626     return TRect(canvasOrigin, iScalingData.iCanvasSize);
  1621     return TRect(canvasOrigin, iScalingData.iCanvasSize);
  1627 }
  1622 }
  1628 
  1623 
       
  1624 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1625 void CMIDUtils::SetPtiKeyboardL()
       
  1626 {
       
  1627 #ifdef RD_JAVA_S60_RELEASE_5_0_IAD
       
  1628     CallToJavaPtiVariationL(iPtiKeyboardType);
       
  1629 #else
       
  1630     if (iPtiEngine)
       
  1631     {
       
  1632         iPtiEngine->SetKeyboardType((TPtiKeyboardType)iPtiKeyboardType);
       
  1633     }
       
  1634 #endif // RD_JAVA_S60_RELEASE_5_0_IAD
       
  1635 }
       
  1636 #endif // RD_INTELLIGENT_TEXT_INPUT
       
  1637 
  1629 // End of File
  1638 // End of File