# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1271251114 -10800 # Node ID 4eb1ae11334f4eb2b9d02c0557e18003d4aed21e # Parent 6defe5d1bd392061a7e874af33617469a8f5ff76 Revision: 201013 Kit: 201015 diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingData.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingData.h Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingData.h Wed Apr 14 16:18:34 2010 +0300 @@ -34,6 +34,7 @@ #define __AKN_FEP_PREDICTIVESETTING_DATA_H #include +#include /** * Class: CAknFepPredictiveSettingData @@ -153,6 +154,11 @@ * Returns: Value of iPhysicalKeyboards member */ inline TInt& AWCBitmask() {return iAWCBitmask; } + + TPtiKeyboardType ActiveKeyboardType() const; + + TPtiKeyboardType OwnerKeyboardType() const; + private: /** * Function: CAknFepPredictiveSettingData diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingDialog.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingDialog.h Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingDialog.h Wed Apr 14 16:18:34 2010 +0300 @@ -131,7 +131,7 @@ void AttemptToExitL(); #ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - TInt iOriginalKeyboardLayout; + TPtiKeyboardType iOriginalKeyboardLayout; #endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ // iSettingItemInEditingState is introduced to avoid the crash when we are editing diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingData.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingData.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingData.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -30,6 +30,9 @@ * ============================================================================ */ +#include +#include +#include #include "AknFepPredictiveSettingData.h" CAknFepPredictiveSettingData *CAknFepPredictiveSettingData::NewL() @@ -74,4 +77,71 @@ void CAknFepPredictiveSettingData::SaveL() const { } + +TPtiKeyboardType CAknFepPredictiveSettingData::ActiveKeyboardType() const + { + TInt keyboardType = EPtiKeyboardNone; +#ifdef RD_SCALABLE_UI_V2 + // Get physical keyboard type + RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardType ); + + //1. When active keyboard is virtual keyboard, + // need to get the active virtual keyboard type + // and set keyboardType again. + //2. When the default physical keyboard is 0, + // it means that there is no physical keyboard, + // also need to get the active virtual keyboard type. + TInt isVirtualInputActive = 0; + RProperty::Get( KPSUidAknFep, KAknFepTouchInputActive, + isVirtualInputActive ); + if ( isVirtualInputActive > 0 || keyboardType == 0 ) + { + // Active keyboard is virtual keyboard + RProperty::Get( KPSUidAknFep, KAknFepVirtualKeyboardType, + keyboardType ); + } +#else if + // Get physical keyboard type + RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardType ); +#endif + + if ( keyboardType <= 0 || keyboardType >= EPtiKeyboardMaxLayout ) + { + keyboardType = EPtiKeyboardNone; + } + return (TPtiKeyboardType)keyboardType; + } + +TPtiKeyboardType CAknFepPredictiveSettingData::OwnerKeyboardType() const + { + TInt keyboardType = EPtiKeyboardNone; +#ifdef RD_SCALABLE_UI_V2 + // When dialog state is 2, it means that the setting dialog is opened + // for virtual qwerty keyboard, therefore, + // returning value of virtual qwerty keyboard type is necessary + TInt dialogState = 0; + RProperty::Get( KPSUidAknFep, KAknFepSettingDialogState, dialogState ); + if ( dialogState == 2 ) + { + // The setting dialog is opened by virtual qwerty keyboard, + // then need to get current virtual keyboard type + keyboardType = EPtiKeyboardQwerty4x12; + } + else + { + // Get physical keyboard type + RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardType ); + } +#else if + // Get physical keyboard type + RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardType ); +#endif // RD_SCALABLE_UI_V2 + + if ( keyboardType <= 0 || keyboardType >= EPtiKeyboardMaxLayout ) + { + keyboardType = EPtiKeyboardNone; + } + return (TPtiKeyboardType)keyboardType; + } + //EOF diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingDialog.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingDialog.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingDialog.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -38,6 +38,7 @@ #include #include #include +#include #include #include "AknFepPredictiveSettingDialog.h" #include @@ -81,9 +82,6 @@ iTitlePaneResId(aTitlePaneResId), iSettingItemInEditingState(EFalse) { -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, iOriginalKeyboardLayout); -#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ } CAknFepPredictiveSettingDialog::~CAknFepPredictiveSettingDialog() @@ -106,6 +104,11 @@ // construct the data object the settings list will use iSettingsData = CAknFepPredictiveSettingData::NewL(); + +#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ + iOriginalKeyboardLayout = iSettingsData->OwnerKeyboardType(); +#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ + iAknFepRepository = CRepository::NewL(KCRUidAknFep); ReadSettingsDataL(); @@ -221,9 +224,7 @@ } // Parse keyboard dependent settings for current keyboard from bitmask - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout; + TPtiKeyboardType layout = iSettingsData->OwnerKeyboardType(); TInt autoTmp = autoWordCompl; // This part of code for error fixing: @@ -272,9 +273,7 @@ iAknFepRepository->Get(KAknFepPredTxtFlagExtension, predFlag); // Parse keyboard dependent settings for current keyboard from bitmask - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout; + TPtiKeyboardType layout = iSettingsData->OwnerKeyboardType(); switch(layout) { case EPtiKeyboardNone: @@ -343,9 +342,7 @@ iAknFepRepository->Get(KAknFepPredTxtFlagExtension, predFlag); // Parse keyboard dependent settings for current keyboard from bitmask - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout; + TPtiKeyboardType layout = iSettingsData->OwnerKeyboardType(); switch(layout) { case EPtiKeyboardNone: @@ -439,9 +436,7 @@ { iAknFepRepository->Get(KAknFepPredTxtFlagExtension,iPredictiveTextFlag); } - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout; + TPtiKeyboardType layout = iSettingsData->OwnerKeyboardType(); TBool QueryNeeded = EFalse; if(iSettingsList->DeviceHasMultipleKeyboards()) { @@ -644,11 +639,11 @@ } // Adjust predictive flag after layout switch - TInt keyboardLayout = EPtiKeyboardNone; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); + TPtiKeyboardType keyboardLayout = iSettingsData->ActiveKeyboardType(); //settings page not to be retained on change of keyboard layout for Touch Input. #ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - if (iOriginalKeyboardLayout != keyboardLayout) + + if ( iOriginalKeyboardLayout != keyboardLayout ) { if(iSettingItemInEditingState) { diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingList.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingList.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingList.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -284,8 +284,8 @@ // aIdentifier is used to determine what kind of setting item should be // created CAknSettingItem* settingItem = NULL; - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); + TPtiKeyboardType keyboardLayout = iSettingsData.OwnerKeyboardType(); + switch (aIdentifier) { case EAknFepCmdPredAutoComplSetting: @@ -363,8 +363,7 @@ // If layout is changed, close settings with information note if(aType==KEikDynamicLayoutVariantSwitch) { - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); + TPtiKeyboardType keyboardLayout = iSettingsData.OwnerKeyboardType(); if(keyboardLayout == EPtiKeyboard12Key) { #ifndef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/inc/AknFepManager.h --- a/fep/aknfep/inc/AknFepManager.h Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/inc/AknFepManager.h Wed Apr 14 16:18:34 2010 +0300 @@ -900,6 +900,8 @@ */ TBool EditorHasFreeSpace( TInt aNumberOfCharacter = 0 ) const; TBool IsSpecialNumericEditor(); + + void TryPopExactWordInICFL(); private: @@ -1010,6 +1012,11 @@ */ void HandleShiftQwertyChineseL(TEventCode aEventCode); #endif //RD_INTELLIGENT_TEXT_INPUT + + void GetCandidatesWithIndexL(CDesCArray* aArray, + TInt& aActiveIdx, TInt& aSecondaryIdx); + void TryPopExactWordInOtherPlaceL(); + /** * Launches the insert word query in western predictive text mode */ @@ -1631,6 +1638,8 @@ void CommitInlineEditL(); TBool GetIndicatorImgID(TInt& aIndicatorImgID, TInt& aIndicatorTextID); + + TInt CurrentInputLangCode(); inline TFepSymbolOfHardwareOne SymbolInfoOfHardKey1(); public: diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/inc/AknFepPluginManager.h --- a/fep/aknfep/inc/AknFepPluginManager.h Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/inc/AknFepPluginManager.h Wed Apr 14 16:18:34 2010 +0300 @@ -324,8 +324,7 @@ void SetFingerMatchSelectionState(TBool aMatchStateOn); TBool IsVisible(); - TBool DoNextCandidates(); - void DoPreviousCandidates(); + // send all predictive candidates at once void ShowAllCandidates(); @@ -446,6 +445,7 @@ */ void RemoveLastFocusedWinFromOpenList(); + void SetInSpellModeFlag( TBool aFlag ); public: // inline /** @@ -943,8 +943,7 @@ RPointerArray iCandidateList; TInt iCandidateIndex; - - TFepInputCandidateList iSendList; + TFepInputAllCandidates iSendAllList; TBool iMatchState; @@ -1056,6 +1055,7 @@ TInt iAlignment; CConnectAo* iConnectAo; + TBool iInSpellMode; }; class CConnectAo : public CActive diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/inc/AknFepSharedDataInterface.h --- a/fep/aknfep/inc/AknFepSharedDataInterface.h Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/inc/AknFepSharedDataInterface.h Wed Apr 14 16:18:34 2010 +0300 @@ -30,7 +30,7 @@ #define _AKNFEP_SHARED_DATA_INT_H__ #include - +#include #include #include class CRepository; @@ -592,6 +592,19 @@ * Call back function to handle a change in keyboard layout. */ static TInt HandleKeyboardLayoutChangeNotification(TAny* aObj); + +#ifdef RD_SCALABLE_UI_V2 + /** + Handles the change to virtual keyboard layout. + */ + void HandleVirtualKeyboardLayoutChange(); + + /** + * Call back function to handle a change to virtual keyboard layout. + */ + static TInt HandleVirtualKeyboardLayoutChangeNotification(TAny* aObj); +#endif // RD_SCALABLE_UI_V2 + #endif #ifdef RD_INTELLIGENT_TEXT_INPUT @@ -679,6 +692,7 @@ static TInt HandleRepositoryCallBack(TAny* aPtr); #ifdef RD_INTELLIGENT_TEXT_INPUT static TInt HandleGenericRepositoryChange(TAny* aPtr); + TPtiKeyboardType ActiveKeyboardType() const; #endif static TInt HandleLocaleRepositoryCallBack(TAny* aPtr); @@ -706,6 +720,10 @@ #ifdef RD_INTELLIGENT_TEXT_INPUT CSubscriber* iKeyboardLayoutStatusSubscriber; RProperty iKeyboardLayoutStatusProperty; +#ifdef RD_SCALABLE_UI_V2 + CSubscriber* iVirtualKeyboardLayoutStatusSubscriber; + RProperty iVirtualKeyboardLayoutStatusProperty; +#endif // #ifdef RD_SCALABLE_UI_V2 #endif friend class CSubscriber; diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_EKA2.pkg --- a/fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_EKA2.pkg Wed Mar 31 22:08:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -; -; Copyright (c) 2009 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: -; -; Installation file for PeninputPluginKr dll -; -; This is an auto-generated PKG file by Carbide. -; This file uses variables specific to Carbide builds that will not work -; on command-line builds. If you want to use this generated PKG file from the -; command-line tools you will need to modify the variables with the appropriate -; values: $(EPOCROOT), $(PLATFORM), $(TARGET) - -; -; UID is the dll's UID -; -#{"PeninputPluginKr DLL"},(0xE95A395D),1,0,0 - - -;Localised Vendor name -%{"Vendor-EN"} - -;Unique Vendor name -:"Vendor" - -"\epoc32\release\ARMV5\UDEB\PeninputPluginKr.dll"-"!:\Sys\Bin\PeninputPluginKr.dll" -"\epoc32\data\Z\resource\fep\PeninputPluginKrRes.r01"-"!:\resource\fep\PeninputPluginKrRes.r01" -"\epoc32\data\Z\resource\fep\PeninputPluginKrRes.r65"-"!:\resource\fep\PeninputPluginKrRes.r65" diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_stub.pkg --- a/fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_stub.pkg Wed Mar 31 22:08:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -; -; Copyright (c) 2009 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: -; -; Installation file for PeninputPluginKr dll -; -; This is an auto-generated PKG file by Carbide. -; This file uses variables specific to Carbide builds that will not work -; on command-line builds. If you want to use this generated PKG file from the -; command-line tools you will need to modify the variables with the appropriate -; values: $(EPOCROOT), $(PLATFORM), $(TARGET) - -; -; UID is the dll's UID -; -#{"PeninputPluginKr DLL"},(0xE95A395D),1,0,0, TYPE=SA - - -;Localised Vendor name -%{"Vendor-EN"} - -;Unique Vendor name -:"Vendor" - -"\epoc32\release\ARMV5\UDEB\PeninputPluginKr.dll"-"!:\Sys\Bin\PeninputPluginKr.dll" -"\epoc32\data\Z\resource\fep\PeninputPluginKrRes.r01"-"!:\resource\fep\PeninputPluginKrRes.r01" -"\epoc32\data\Z\resource\fep\PeninputPluginKrRes.r65"-"!:\resource\fep\PeninputPluginKrRes.r65" diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_stub.sis Binary file fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_stub.sis has changed diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/rom/PeninputPluginKr.iby --- a/fep/aknfep/rom/PeninputPluginKr.iby Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/rom/PeninputPluginKr.iby Wed Apr 14 16:18:34 2010 +0300 @@ -22,7 +22,6 @@ ECOM_PLUGIN(PeninputPluginKr.dll,E95A395D.rsc) data=DATAZ_\FEP_RESOURCES_DIR\PeninputPluginKrRes.r01 FEP_RESOURCES_DIR\PeninputPluginKrRes.r01 data=DATAZ_\FEP_RESOURCES_DIR\PeninputPluginKrRes.r65 FEP_RESOURCES_DIR\PeninputPluginKrRes.r65 -data=ZSYSTEM\install\PeninputPluginKr_stub.sis System\Install\PeninputPluginKr_stub.sis #endif // defined(__VIRTUAL_KEYBOARD_INPUT) || defined(FF_VIRTUAL_FULLSCR_QWERTY_INPUT) #endif // __PENINPUTPLUGINKR_IBY__ diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/src/AknFepManager.cpp --- a/fep/aknfep/src/AknFepManager.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/src/AknFepManager.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -3379,7 +3379,7 @@ lang == ELangHongKongChinese || lang == ELangPrcChinese) { - if( iPtiEngine->CurrentLanguage()->LanguageCode()== ELangEnglish + if( CurrentInputLangCode() == ELangEnglish && IsFlagSet(EFlagQwertyShiftMode) && !IsFlagSet(EFlagLongShiftKeyPress)) { @@ -4091,6 +4091,7 @@ iFepPluginManager->SetITUTSpellingStateL(EFalse); iFepPluginManager->HideSpellEditor(); + iFepPluginManager->SetInSpellModeFlag( EFalse ); if (spell) { @@ -4150,6 +4151,7 @@ { TRAP_IGNORE(iFepPluginManager->SetITUTSpellingStateL(EFalse)); iFepPluginManager->HideSpellEditor(); + iFepPluginManager->SetInSpellModeFlag( EFalse ); TRAP_IGNORE(UpdateCbaL(NULL)); if (iFepPluginManager->CaseUpdatesSupressed()) @@ -4654,7 +4656,7 @@ #endif break; case EAknCmdT9PredictiveEditWord: - SetStopProcessFocus(ETrue); + SetStopProcessFocus( ETrue, EFalse ); HandleChangeInFocus(); #ifdef RD_INTELLIGENT_TEXT_INPUT RemoveSuggestedAdvanceCompletionL(); @@ -5355,9 +5357,9 @@ // "Edit word" option is not available under edit menu in ITU-T mode. // "Insert word" Should not be available QWERTY mode. if (IsKoreanInputLanguage() || - iPtiEngine->CurrentLanguage()->LanguageCode() == ELangPrcChinese || - iPtiEngine->CurrentLanguage()->LanguageCode() == ELangTaiwanChinese || - iPtiEngine->CurrentLanguage()->LanguageCode() == ELangHongKongChinese ) + CurrentInputLangCode() == ELangPrcChinese || + CurrentInputLangCode() == ELangTaiwanChinese || + CurrentInputLangCode() == ELangHongKongChinese ) { // No text prediction for korean. aMenuPane->SetItemDimmed(EAknFepCmdPredActivate, ETrue ); @@ -7577,7 +7579,7 @@ isModePermitted = EFalse; } else if (((aMode == EPinyin) || (aMode == EZhuyin) || (aMode == EStroke) || (aMode == ECangJie) - || (aMode == EHiraganaKanji) || (aMode == EKatakana) + || (aMode == EHiraganaKanji) || (aMode == EKatakana) || ( aMode == EHangul ) || (((aMode == ELatin) || (aMode == ENumber) || iMode == ENativeNumber ) && (iCharWidth == EFullWidthChar))) && (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly)) { @@ -8448,104 +8450,151 @@ aTextToUncommit.Length(), EFalse)); } +void CAknFepManager::GetCandidatesWithIndexL(CDesCArray* aArray, + TInt& aActiveIdx, TInt& aSecondaryIdx) + { +#ifndef RD_INTELLIGENT_TEXT_INPUT + return; +#endif + aActiveIdx = -1; + aSecondaryIdx = -1; + iPtiEngine->HandleCommandL( + EPtiCommandUserActionGetCurrentIndexOfCandidates, &aActiveIdx); + + if (iKeyBackSpaceHit) + aSecondaryIdx = aActiveIdx; + else + iPtiEngine->HandleCommandL( + EPtiCommandUserActionGetIndexOfSecondaryCandidate, + &aSecondaryIdx); + + if (aArray == NULL || aActiveIdx == aSecondaryIdx) + return; + + iPtiEngine->GetCandidateListL(*aArray); + iPtiEngine->HandleCommandL( + EPtiCommandUserActionGetCurrentIndexOfCandidates, &aActiveIdx); + iPtiEngine->HandleCommandL( + EPtiCommandUserActionGetIndexOfSecondaryCandidate, &aSecondaryIdx); + } + void CAknFepManager::ShowExactWordPopupIfNecessaryL() { + // Ok, I have to do it here, same logics are in + // TryPopExactWordInICFL and ShowExactWordPopupIfNecessaryL. + // the code follows the old code's logic: this is a + // equivalent of the OLD ShowExactWordPopupIfNecessaryL; but + // now I can call TryPopExactWordInICFL and + // TryPopExactWordInOtherPlaceL directly after extracting them from + // the OLD ShowExactWordPopupIfNecessaryL. iExactWordPopupContent->HidePopUp(); - + SendEventsToPluginManL(EPluginHideTooltip); + if (!iWesternPredictive || !IsFlagSet(EFlagInsideInlineEditingTransaction)) + return; + + if (EPtiKeyboardHalfQwerty == KeyboardLayout()) + { + if (IsFlagSet(CAknFepManager::EFlagNoMatches)) + UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY); + return; + } + + TryPopExactWordInICFL(); + if (iFepPluginManager && !iFepPluginManager->IsTooltipOpenOnFSQ()) + TryPopExactWordInOtherPlaceL(); + } + +void CAknFepManager::TryPopExactWordInICFL() + { +#ifndef RD_INTELLIGENT_TEXT_INPUT + return; +#endif + // Before open tooltip, // also need to check and close tooltip on it. - SendEventsToPluginManL( EPluginHideTooltip ); - - if ( iWesternPredictive && iQwertyInputMode - && IsFlagSet( EFlagInsideInlineEditingTransaction ) - && (EPtiKeyboardHalfQwerty != KeyboardLayout())) - { - // In the proactive mode this popup is used to show the exact input if it differs from the - // default candidate shown inline. - // In the reactive mode it is used to show the best guess candidate if it differs from the - // exact word shown inline. - - TInt activeIdx = KErrNotFound; - TInt secondaryIdx = KErrNotFound; - - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &activeIdx ); - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetIndexOfSecondaryCandidate, - &secondaryIdx ); - - TBool popupBelowInline = EFalse; // ETrue -> popup is above inline editor - - if(iKeyBackSpaceHit) - secondaryIdx = activeIdx; - - if ( activeIdx != secondaryIdx ) - { - popupBelowInline = EFalse; - - CDesCArray* candidates = new (ELeave) CDesCArrayFlat(16); - CleanupStack::PushL(candidates); - GetCandidatesL(*candidates, activeIdx); - - // There is a possibility that the secondary index of the candidate changes - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetIndexOfSecondaryCandidate, - &secondaryIdx ); - // In case the active index and the secondary index is same, then we do not need to display the - // popup - if ( activeIdx == secondaryIdx ) - { - CleanupStack::PopAndDestroy(candidates); - return; - } - - TPtrC secondaryWord = (*candidates)[secondaryIdx]; - iExactWordPopupContent->SetTextL( secondaryWord ); - iExactWordPopupContent->SetArrowDirection( MAknFepUiWordPopupContent::EUpwards ); - CleanupStack::PopAndDestroy(candidates); - - // Open FSQ tooltip if FSQ is opened - SendEventsToPluginManL( EPluginShowTooltip, secondaryIdx ); - - - // For addtion of ITI features on FSQ. - // Showing tooltip on avkon editor and FSQ ICF editor at same time probably - // cause flicker problem. Add this condition to ensure not to show tooltip on - // avkon editor when it is being displayed on FSQ. - if ( iFepPluginManager && !( iFepPluginManager->IsTooltipOpenOnFSQ() ) ) - { - TPoint popupTopRight; - TInt height; - TInt ascent; - TInt documentOffset = iPtiEngine->CurrentWord().Length(); - - GetScreenCoordinatesL(popupTopRight, height, ascent, documentOffset); - - iExactWordPopupContent->UpdateContentSize(); - - TBool rightToLeftLang = IsRightToLeftParagraph( DocPos() ); - if ( !rightToLeftLang ) - { - popupTopRight.iX += iExactWordPopupContent->Size().iWidth; - } - - if ( popupBelowInline ) - { - popupTopRight.iY += ascent / 2; - } - else - { - popupTopRight.iY -= height + iExactWordPopupContent->Size().iHeight; - } - - iExactWordPopupContent->SetPosition( popupTopRight ); - iExactWordPopupContent->ShowPopUp(); - } - } - } - else if(iWesternPredictive - && IsFlagSet( EFlagInsideInlineEditingTransaction ) - && IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY); - } + SendEventsToPluginManL(EPluginHideTooltip); + if (!iWesternPredictive || !IsFlagSet(EFlagInsideInlineEditingTransaction)) + return; + + TInt activeIdx, secondaryIdx; + GetCandidatesWithIndexL(NULL, activeIdx, secondaryIdx); + if (activeIdx == secondaryIdx) + return; + + CDesCArray* candidates = new (ELeave) CDesCArrayFlat(16); + CleanupStack::PushL(candidates); + GetCandidatesWithIndexL(candidates, activeIdx, secondaryIdx); + CleanupStack::PopAndDestroy(candidates); + if (activeIdx == secondaryIdx) + return; + + if (iFepPluginManager) + SendEventsToPluginManL(EPluginShowTooltip, secondaryIdx); + } + +void CAknFepManager::TryPopExactWordInOtherPlaceL() + { +#ifndef RD_INTELLIGENT_TEXT_INPUT + return; +#endif + + iExactWordPopupContent->HidePopUp(); + if (!iWesternPredictive || !IsFlagSet(EFlagInsideInlineEditingTransaction)) + return; + // In the proactive mode this popup is used to show the exact input if it differs from the + // default candidate shown inline. + // In the reactive mode it is used to show the best guess candidate if it differs from the + // exact word shown inline. + + TBool popupBelowInline = EFalse; // ETrue -> popup is above inline editor + TInt activeIdx, secondaryIdx; + GetCandidatesWithIndexL(NULL, activeIdx, secondaryIdx); + if (activeIdx == secondaryIdx) + return; + + CDesCArray* candidates = new (ELeave) CDesCArrayFlat(16); + CleanupStack::PushL(candidates); + GetCandidatesWithIndexL(candidates, activeIdx, secondaryIdx); + + // In case the active index and the secondary index is same, + // then we do not need to display the popup + if (activeIdx == secondaryIdx) + { + CleanupStack::PopAndDestroy(candidates); + return; + } + + TPtrC secondaryWord = (*candidates)[secondaryIdx]; + iExactWordPopupContent->SetTextL(secondaryWord); + iExactWordPopupContent->SetArrowDirection( + MAknFepUiWordPopupContent::EUpwards); + CleanupStack::PopAndDestroy(candidates); + + TPoint popupTopRight; + TInt height; + TInt ascent; + TInt documentOffset = iPtiEngine->CurrentWord().Length(); + + GetScreenCoordinatesL(popupTopRight, height, ascent, documentOffset); + iExactWordPopupContent->UpdateContentSize(); + + TBool rightToLeftLang = IsRightToLeftParagraph(DocPos()); + if (!rightToLeftLang) + { + popupTopRight.iX += iExactWordPopupContent->Size().iWidth; + } + + if (popupBelowInline) + { + popupTopRight.iY += ascent / 2; + } + else + { + popupTopRight.iY -= height + iExactWordPopupContent->Size().iHeight; + } + + iExactWordPopupContent->SetPosition(popupTopRight); + iExactWordPopupContent->ShowPopUp(); } void CAknFepManager::LaunchPredictiveSettingDialogL() @@ -8584,8 +8633,16 @@ } TUid fepUid = CCoeEnv::Static()->FepUid(); ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - - RProperty::Set(KPSUidAknFep,KAknFepSettingDialogState,1); + + if ( iFepPluginManager && iFepPluginManager->IsSupportITIOnFSQ() ) + { + RProperty::Set( KPSUidAknFep, KAknFepSettingDialogState, 2 ); + } + else + { + RProperty::Set( KPSUidAknFep, KAknFepSettingDialogState, 1 ); + } + UiInterface()->LaunchPredictiveSettingDialogL(R_PREDICTIVESETTING_DIALOG, R_PREDICTIVESETTINGDIALOG_MENUBAR, R_PREDICTIVETEXTOFF_CONFIRMATION_QUERY, @@ -13254,6 +13311,17 @@ aNewState = EIndicatorStateMultitapHindi; } } + +TInt CAknFepManager::CurrentInputLangCode() + { + ASSERT(iPtiEngine); + + MPtiLanguage* lang = iPtiEngine->CurrentLanguage(); + ASSERT(lang); + + return lang->LanguageCode(); + } + TBool CAknFepManager::GetIndicatorImgID(TInt& aIndicatorImgID, TInt& aIndicatorTextID) { if (iPreviousEditingState == EStateNone) @@ -13538,10 +13606,9 @@ return EFalse; } - TInt numberModeSctId = NumericModeSCTResourceId(); if (iMode == ENumber || iMode == ENativeNumber) { - if (iPermittedInputModes == EAknEditorNumericInputMode || !numberModeSctId) + if (iPermittedInputModes == EAknEditorNumericInputMode || !NumericModeSCTResourceId()) { // SCT is not launched if the number mode is the only input mode or // if there is not keymap resource for the current numeric keymap mode. @@ -13555,18 +13622,7 @@ // EAknEditorFlagUseSCTNumericCharmap or if also text input modes are // allowed and the keymap is EAknEditorAlphanumericNumberModeKeymap. ableToLaunchSCT = ETrue; - } - - if(R_AKNFEP_SCT_NUMERIC_MODE_CHARS_PLAIN == numberModeSctId) - { - TBool isEmpty = ETrue; - TRAP_IGNORE(isEmpty = GetSctLengthL(numberModeSctId)); - if(isEmpty) - { - ableToLaunchSCT = EFalse; - } - } - + } } if (!(EditorHasFreeSpace() && EditorState() && EditorState()->SpecialCharacterTableResourceId())) @@ -13574,8 +13630,6 @@ ableToLaunchSCT = EFalse; } - - return ableToLaunchSCT; } @@ -13668,6 +13722,11 @@ TBool CAknFepManager::IsAbleToLaunchSmiley() const { + if(iLanguageCapabilities.iRightToLeftLanguage) + { + return EFalse; + } + TBool ableToLaunchSmiley(EFalse); CAknEdwinState* edwinState = EditorState(); @@ -18153,6 +18212,15 @@ { currentEditorSCTResId = charMap; } + if(R_AKNFEP_SCT_NUMERIC_MODE_CHARS_PLAIN == charMap && R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_LATIN_ONLY == currentEditorSCTResId) + { + TBool isEmpty = ETrue; + TRAP_IGNORE(isEmpty = GetSctLengthL(charMap)); + if(isEmpty) + { + return; + } + } if (currentEditorSCTResId) { @@ -18254,7 +18322,7 @@ iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr) { - SetStopProcessFocus(ETrue, ETrue); + SetStopProcessFocus(ETrue, EFalse); iFepPluginManager->SetMenuState(); } else if (!iFepPluginManager->IsGlobleNotes()) @@ -19800,8 +19868,9 @@ void CAknFepManager::GetCandidatesL( CDesCArray& aArray, TInt& aActiveIdx ) { iPtiEngine->GetCandidateListL(aArray); - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &aActiveIdx ); - } + iPtiEngine->HandleCommandL( + EPtiCommandUserActionGetCurrentIndexOfCandidates, &aActiveIdx); + } void CAknFepManager::GetUpdateCandidatePositionL(TRect& aRect) { diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/src/AknFepPluginManager.cpp --- a/fep/aknfep/src/AknFepPluginManager.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/src/AknFepPluginManager.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -59,6 +59,7 @@ #include #include #include +#include // User includes #include "AknFepManagerInterface.h" // MAknFepManagerInterface @@ -246,7 +247,8 @@ CAknFepCaseManager& aCaseMan ) : iFepMan( aFepMan ), iLangMan( aLangMan ), iCaseMan( aCaseMan ), iSharedData( aSharedData ), iPluginPrimaryRange( ERangeInvalid ), iCandidateIndex(1), - iCharStartPostion( KInvalidValue ) + iCharStartPostion( KInvalidValue ), + iInSpellMode( EFalse ) { iIndicatorImgID = 0; iIndicatorTextID = 0; @@ -277,6 +279,8 @@ iAvkonRepository = CRepository::NewL( KCRUidAvkon ); iConnectAo = new (ELeave)CConnectAo(this); + + RProperty::Define( KPSUidAknFep, KAknFepSettingDialogState, RProperty::EInt ); } // ----------------------------------------------------------------------------- @@ -1034,7 +1038,7 @@ return EFalse; } - // add by jiawenjuan to remember the old fep aware editor. + // remember the old fep aware editor. TBool cleanContent = EFalse; if(iOldFepAwareEditor != iFepMan.FepAwareTextEditor()) { @@ -1053,7 +1057,11 @@ if ( iITISettingDialogOpen ) { iITISettingDialogOpen = EFalse; - } + } + + // Set the KAknFepTouchInputActive PS to 1, + // it means that touch input is active now. + RProperty::Set( KPSUidAknFep, KAknFepTouchInputActive, 1 ); // getting a new ui manager object corresponded in aMode. TInt uiLanguage = iSharedData.DisplayLanguage(); @@ -1157,6 +1165,16 @@ iLangMan.SetSplitView(isSplit); TInt inputLang = iFepMan.InputLanguageCapabilities().iInputLanguageCode; + if( ( aSuggestMode == EPluginInputModeFSc || + aSuggestMode == EPluginInputModeHwr || + aSuggestMode == EPluginInputModeFingerHwr ) + && ( iSharedData.PenInputLanguage() == ELangPrcChinese + || iSharedData.PenInputLanguage() == ELangHongKongChinese + || iSharedData.PenInputLanguage() == ELangTaiwanChinese) ) + { + // Solution for HWR can not be in used after switched to latin-only editor. + inputLang = iSharedData.PenInputLanguage(); + } MAknFepManagerInterface* fepUI = iLangMan.GetPluginInputFepUiL( aSuggestMode, inputLang, @@ -1363,6 +1381,10 @@ NotifyAppUiImeTouchWndStateL( EFalse ); iCharStartPostion = KInvalidValue; + + // Set the KAknFepTouchInputActive PS to 0, + // it means that touch input is inactive now. + RProperty::Set( KPSUidAknFep, KAknFepTouchInputActive, 0 ); } // --------------------------------------------------------------------------- @@ -1571,6 +1593,7 @@ break; case EEikCmdEditPaste: {//ctrl + v + ResetMenuState(); TKeyEvent ccpuKey = KAknCcpuPasteEvent; CCoeEnv::Static()->SimulateKeyEventL( ccpuKey, EEventKey ); } // Send copy-event to edwin. @@ -2068,8 +2091,7 @@ if( iInMenu && iCurEditor == iFepMan.FepAwareTextEditor() ) { - ResetMenuState(); - InformMfneUiStatusL( EFalse ); + ResetMenuState(); // If need to open setting app automatically, // do not open Touch window again. TBool langChange = iCurLanguage != iSharedData.InputTextLanguage(); @@ -2340,19 +2362,13 @@ TPtr16 currentEditorContent = currentEditorContentBuf->Des(); edit->GetEditorContentForFep( currentEditorContent, 0, editContentLen ); - TBool send = ETrue; - - if ( !SetSyncIcfDataL( icfData, lastEditorContent, currentEditorContent ) ) + if (SetSyncIcfDataL( icfData, lastEditorContent, currentEditorContent)) { - send = EFalse; + iCurrentPluginInputFepUI->HandleCommandL + (ECmdPenInputSendEditorTextAndCurPos, reinterpret_cast(&icfData)); + iFepMan.TryPopExactWordInICFL(); } - if ( send ) - { - iCurrentPluginInputFepUI->HandleCommandL - (ECmdPenInputSendEditorTextAndCurPos, reinterpret_cast(&icfData)); - } - if ( secretEditor ) { TBool cursorDisabled = IsEditorCursorDisabled(); @@ -2590,6 +2606,10 @@ aIcfData.iStartPos = iCurSelCur.iCursorPos; aIcfData.iMidPos = -1; aIcfData.iText.Set(KNullDesC); + if( iFepMan.IsFlagSet(CAknFepManager::EFlagSupressAutoUpdate) && iFepMan.InputMode() == EHangul ) + { + aIcfData.iCursorSelVisible = EFalse; + } } iInlineStateOn = ( aIcfData.iMidPos == 0 ); @@ -3780,7 +3800,12 @@ } else { - SetITUTSpellingStateL(ETrue); + if ( !iInSpellMode ) + { + SetITUTSpellingStateL(ETrue); + iInSpellMode = ETrue; + } + iIndicatorImgID = 0; iIndicatorTextID = 0; } @@ -4245,72 +4270,6 @@ reinterpret_cast(&iSendAllList))); } -TBool CAknFepPluginManager::DoNextCandidates() - { - if((iCandidateIndex) * 3 >= iCandidateList.Count()) - { - iCandidateIndex = 0; - } - - iCandidateIndex++; - - int nStartIndex = (iCandidateIndex - 1) * 3; - - - for (TInt index = 0; index < 3; index++, nStartIndex ++) - { - if (nStartIndex < iCandidateList.Count()) - { - TPtr16 canDes = iCandidateList[nStartIndex]->Des(); - iSendList.iCandidate[index].Set(canDes); - } - else - { - iSendList.iCandidate[index].Set(KNullDesC); - } - } - - - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchList, - reinterpret_cast(&iSendList))); - - if (iCandidateIndex * 3 >= iCandidateList.Count()) - { - return ETrue; - } - - return EFalse; - } - -void CAknFepPluginManager::DoPreviousCandidates() - { - iCandidateIndex--; - - if(iCandidateIndex < 1) - { - iCandidateIndex = iCandidateList.Count() / 3 + 1; - } - - int nStartIndex = (iCandidateIndex -1) * 3; - - for (TInt index = 0; index < 3; index++, nStartIndex ++) - { - if (nStartIndex < iCandidateList.Count()) - { - TPtr16 canDes = iCandidateList[nStartIndex]->Des(); - iSendList.iCandidate[index].Set(canDes); - } - else - { - iSendList.iCandidate[index].Set(KNullDesC); - } - } - - - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchList, - reinterpret_cast(&iSendList))); - } - TBool CAknFepPluginManager::GetIndicatorImgID(const TInt IndicatorUID,TInt &aImage, TInt &aMask) { TBool ret = EFalse; @@ -4682,6 +4641,11 @@ return resId; } +void CAknFepPluginManager::SetInSpellModeFlag( TBool aFlag ) + { + iInSpellMode = aFlag; + } + void CAknFepPluginManager::SetPromptText( TBool aCleanContent ) { if (IsDimed() && !iResourceChange) @@ -5258,22 +5222,17 @@ return; } - CDesCArray* candidates = new ( ELeave ) CDesCArrayFlat( KDefaultCandidateArraySize ); - CleanupStack::PushL( candidates ); + CDesCArray* candidates = new (ELeave) CDesCArrayFlat(KDefaultCandidateArraySize); + CleanupStack::PushL(candidates); TInt activeIdx = KErrNotFound; - iFepMan.GetCandidatesL( *candidates, activeIdx ); - if ( aSecondaryIdx < candidates->Count() ) + iFepMan.GetCandidatesL(*candidates, activeIdx); + + if (aSecondaryIdx < candidates->Count()) { - TPtrC aText = ( *candidates )[ aSecondaryIdx ]; - - TFepITITooltipText tooltipText; - tooltipText.iDataSize = aText.Size(); - tooltipText.iText.Set( aText ); - TPtrC tooltipTextPtr; - tooltipTextPtr.Set( aText ); - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputPopupTooltip, - reinterpret_cast( &tooltipTextPtr ) ); + TPtrC aText = (*candidates)[aSecondaryIdx]; + iCurrentPluginInputFepUI->HandleCommandL( + ECmdPenInputPopupTooltip, reinterpret_cast(&aText)); iTooltipOpenOnFSQ = ETrue; } else @@ -5631,13 +5590,21 @@ } // Close FSQ then current keyboard type return to the previously-stored one, - // 1. The first step is to restore keyboard type, because the value will - // be used in iFepMan.SetQwertyMode( EFalse ); - ResetItiKeyboardLayoutL(); + // But, if iSharedData.QwertyInputMode() == EFalse, it means that hardware + // is slided, and capserver will be responsible to set the corrected keyboard type + // and qwerty input mode. + // So there is no need to do step 1 and step 2 here, otherwise, + // values set by capserver will be overrided. + if ( !iSharedData.QwertyInputMode() ) + { + // 1. The first step is to restore keyboard type, because the value will + // be used in iFepMan.SetQwertyMode( EFalse ); + ResetItiKeyboardLayoutL(); + + // 2. Change FEP to non qwerty mode. + iFepMan.SetQwertyMode( EFalse ); + } - // 2. Change FEP to non qwerty mode. - iFepMan.SetQwertyMode( EFalse ); - // 3. Notify the deactivation of ITI to peninputserver iCurrentPluginInputFepUI->HandleCommandL( ECmdPeninputITIStatus, EFalse ); @@ -5655,22 +5622,21 @@ { return; } - // 1. Record the previous keyboard type - RProperty keyboardLayoutStatusProperty; - keyboardLayoutStatusProperty.Get( KCRUidAvkon, KAknKeyBoardLayout, - iLastKeyboardLayout ); - + // 1. Record the previous virtual keyboard type + RProperty::Get( KPSUidAknFep, KAknFepVirtualKeyboardType, iLastKeyboardLayout ); + // 2. Utilize right qwerty keyboard type - keyboardLayoutStatusProperty.Set( KCRUidAvkon, KAknKeyBoardLayout, - EPtiKeyboardQwerty4x12 ); + RProperty::Set( KPSUidAknFep, KAknFepVirtualKeyboardType, EPtiKeyboardQwerty4x12 ); + } + // ----------------------------------------------------------------------------- // Restore keyboard layout after closing FSQ. // ----------------------------------------------------------------------------- // void CAknFepPluginManager::ResetItiKeyboardLayoutL() { - if ( !iLastKeyboardLayout || iITISettingDialogOpen ) + if ( !iLastKeyboardLayout ) { return; } @@ -5678,10 +5644,11 @@ // Close FSQ then current keyboard type return to the previously-stored one, //Restore keyboard layout type and qwerty mode of FEP // 1. Store the previous keyboard type, - // except that opening predictive setting dialog cause fsq closed. - RProperty keyboardLayoutStatusProperty; - keyboardLayoutStatusProperty.Set( KCRUidAvkon, KAknKeyBoardLayout, + // except that opening predictive setting dialog cause fsq closed. + RProperty::Set( KPSUidAknFep, KAknFepVirtualKeyboardType, iLastKeyboardLayout ); + + iLastKeyboardLayout = 0; } diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/src/AknFepSharedDataInterface.cpp --- a/fep/aknfep/src/AknFepSharedDataInterface.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/src/AknFepSharedDataInterface.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -84,7 +84,16 @@ iKeyboardLayoutStatusSubscriber->StopSubscribe(); } iKeyboardLayoutStatusProperty.Close(); - delete iKeyboardLayoutStatusSubscriber; + delete iKeyboardLayoutStatusSubscriber; + +#ifdef RD_SCALABLE_UI_V2 + if ( iVirtualKeyboardLayoutStatusSubscriber ) + { + iVirtualKeyboardLayoutStatusSubscriber->StopSubscribe(); + } + delete iVirtualKeyboardLayoutStatusSubscriber; + iVirtualKeyboardLayoutStatusProperty.Close(); +#endif #endif iQwertyModeStatusProperty.Close(); delete iQwertyModeStatusSubscriber; @@ -418,9 +427,7 @@ #ifdef RD_INTELLIGENT_TEXT_INPUT TInt CAknFepSharedDataInterface::KeyboardLayout() //const { - TInt value = 0; - iKeyboardLayoutStatusProperty.Get(value); - return value; + return ActiveKeyboardType(); } #ifdef FF_DUAL_LANGUAGE_SUPPORT @@ -492,6 +499,15 @@ TCallBack(HandleKeyboardLayoutChangeNotification, this), iKeyboardLayoutStatusProperty); iKeyboardLayoutStatusSubscriber->SubscribeL(); + +#ifdef RD_SCALABLE_UI_V2 + User::LeaveIfError( iVirtualKeyboardLayoutStatusProperty.Attach + ( KPSUidAknFep, KAknFepVirtualKeyboardType ) ); + iVirtualKeyboardLayoutStatusSubscriber = new (ELeave) CSubscriber( + TCallBack( HandleVirtualKeyboardLayoutChangeNotification, this ), + iVirtualKeyboardLayoutStatusProperty ); + iVirtualKeyboardLayoutStatusSubscriber->SubscribeL(); +#endif // RD_SCALABLE_UI_V2 #endif iQwertyModeStatusSubscriber = new (ELeave) CSubscriber( TCallBack(QwertyModeChangeNotification, this), @@ -728,7 +744,43 @@ return error; } + +TPtiKeyboardType CAknFepSharedDataInterface::ActiveKeyboardType() const + { + TInt keyboardType = EPtiKeyboardNone; +#ifdef RD_SCALABLE_UI_V2 + // Get physical keyboard type + RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardType ); + + // When active keyboard is virtual keyboard, + // need to get the active virtual keyboard type + // and set keyboardType again. + + // When the default physical keyboard is 0, + // it means that there is no physical keyboard, + // also need to get the active virtual keyboard type. + TInt isVirtualInputActive = 0; + RProperty::Get( KPSUidAknFep, KAknFepTouchInputActive, + isVirtualInputActive ); + if ( isVirtualInputActive > 0 || keyboardType == 0 ) + { + // Active keyboard is virtual keyboard + RProperty::Get( KPSUidAknFep, KAknFepVirtualKeyboardType, + keyboardType ); + } +#else if + // Get physical keyboard type + RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardType ); #endif + + if ( keyboardType <= 0 || keyboardType >= EPtiKeyboardMaxLayout ) + { + keyboardType = EPtiKeyboardNone; + } + return (TPtiKeyboardType)keyboardType; + } +#endif // RD_INTELLIGENT_TEXT_INPUT + TInt CAknFepSharedDataInterface::HandleRepositoryCallBack(TAny* aPtr) { CAknFepSharedDataInterface *self = STATIC_CAST(CAknFepSharedDataInterface*, aPtr); @@ -1153,6 +1205,22 @@ return KErrArgument; } } + +#ifdef RD_SCALABLE_UI_V2 +TInt CAknFepSharedDataInterface::HandleVirtualKeyboardLayoutChangeNotification(TAny* aObj) + { + if (aObj) + { + static_cast(aObj)->HandleVirtualKeyboardLayoutChange(); + return KErrNone; + } + else + { + return KErrArgument; + } + } +#endif // RD_SCALABLE_UI_V2 + #endif @@ -1278,6 +1346,24 @@ iFepManager->StopDisplayingMenuBar(); #endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ } + +#ifdef RD_SCALABLE_UI_V2 +// --------------------------------------------------------------------------- +// Handles the change to virtual keyboard layout. +// +// --------------------------------------------------------------------------- +// +void CAknFepSharedDataInterface::HandleVirtualKeyboardLayoutChange() + { + TInt value = 0; + TPtiKeyboardType keyboardType; + iVirtualKeyboardLayoutStatusProperty.Get(value); + keyboardType = (TPtiKeyboardType)value; + iFepManager->SetKeyboardLayout(keyboardType); + iFepManager->SetFnKeyMappingState(); + } +#endif // RD_SCALABLE_UI_V2 + TInt CAknFepSharedDataInterface::PredictiveTextAutoCompleteOn() { TInt value = 0; diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/src/AknFepUiInputStateInitialKoreanMultitap.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialKoreanMultitap.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/src/AknFepUiInputStateInitialKoreanMultitap.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -133,14 +133,20 @@ if (aKey == EPtiKeyStar) { - /* - ptiengine->DeleteKeyPress(); + + /*ptiengine->DeleteKeyPress(); TPtrC text = ptiengine->PreviousCandidate(); fepMan->UpdateInlineEditL(text, text.Length()); fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord();*/ + ptiengine->ClearCurrentWord(); */ - fepMan->LaunchSelectModeMenuL(); + //fepMan->LaunchSelectModeMenuL(); + + if (fepMan->IsAbleToLaunchSCT()) + { + fepMan->LaunchSpecialCharacterTableL(); + } + } else { diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/src/aknfepuispellcontainer.cpp --- a/fep/aknfep/src/aknfepuispellcontainer.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/src/aknfepuispellcontainer.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -90,7 +90,10 @@ // void CAknFepUiSpellContainer::SetInputWinFocus( TBool aFocus ) { - iInputPane->SetFocus( aFocus ); + if( iInputPane->IsFocused() != aFocus ) + { + iInputPane->SetFocus( aFocus ); + } // When release focus, remove from stack. if( aFocus ) { diff -r 6defe5d1bd39 -r 4eb1ae11334f inputmethods_plat/aknfep_status_api/inc/AknFepInternalPSKeys.h --- a/inputmethods_plat/aknfep_status_api/inc/AknFepInternalPSKeys.h Wed Mar 31 22:08:20 2010 +0300 +++ b/inputmethods_plat/aknfep_status_api/inc/AknFepInternalPSKeys.h Wed Apr 14 16:18:34 2010 +0300 @@ -54,6 +54,30 @@ */ const TUint32 KAknFepSettingDialogState = 0x00000002; +/** + * The virtual keyboard type + * + * Possible values: + * 0: None + * 1: Conventional 12 phone keypad + * 2: 4x12 Qwerty keyboard. + * 3: EPtiKeyboardQwerty4x10 + * 4: EPtiKeyboardQwerty3x11 + * 5: Half qwerty. + * 6: EPtiKeyboardCustomQwerty + */ +const TUint32 KAknFepVirtualKeyboardType = 0x00000003; + +/** + * Touch Input status. This key is updated by touch input according to the + * opening and closing virtual keyboard events. + * + * Possible values: + * 0: virtual keyboard type is not active. + * 1: virtual keyboard type is active. + */ +const TUint32 KAknFepTouchInputActive = 0x00000004; + #endif // End of file diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/GSLangPlugin/src/GSLangModel.cpp --- a/textinput/GSLangPlugin/src/GSLangModel.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/GSLangPlugin/src/GSLangModel.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -56,6 +56,8 @@ //CONSTANTS const TInt KGSDiskSpaceLimitForLanguageChange = 300000; +const TInt KFepChineseInputModeLength = 10; + // ================= MEMBER FUNCTIONS ======================= // ---------------------------------------------------------------------------- @@ -841,9 +843,27 @@ { // fetch the setting value from shared data etc. // return the value - TInt MethodItem; + TUint MethodItem; + _LIT(Kx, "x"); + // This conversion is needed because KAknFepChineseInputMode cenrep key original type was 16bit int. + // now type is changed to string, so that it can accommodate bigger values like EHangul 0x16000. + TBuf conversion; User::LeaveIfError( iAknFepRepository-> - Get( KAknFepChineseInputMode, MethodItem ) ); + Get( KAknFepChineseInputMode, conversion ) ); + TInt len = conversion.Find(Kx); + TLex lex; + + if(len) + { + TPtrC ptr = conversion.Mid(len +1); + lex.Assign(ptr); + } + else + { + lex.Assign(conversion); + } + + lex.Val(MethodItem, EHex); return MethodItem; } else @@ -863,8 +883,11 @@ { if ( FeatureManager::FeatureSupported( KFeatureIdChinese ) ) { + TBuf conversion; + conversion.Num(aMethod, EHex); + User::LeaveIfError( - iAknFepRepository->Set( KAknFepChineseInputMode, aMethod ) ); + iAknFepRepository->Set( KAknFepChineseInputMode, conversion ) ); // See if it cannot do predictive text entry if( !CheckDictionaryFromPtiL( aMethod ) ) diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/GSLangPlugin/src/GSLangPlugin.cpp --- a/textinput/GSLangPlugin/src/GSLangPlugin.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/GSLangPlugin/src/GSLangPlugin.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -41,7 +41,7 @@ #include #include // Display UI language #include -#include +#include #include #ifdef RD_INTELLIGENT_TEXT_INPUT #include "PredictiveSettingDialog.h" diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputarc/bwins/peninputlayoutcontrolU.DEF --- a/textinput/peninputarc/bwins/peninputlayoutcontrolU.DEF Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputarc/bwins/peninputlayoutcontrolU.DEF Wed Apr 14 16:18:34 2010 +0300 @@ -591,4 +591,5 @@ ?CancelPointerDownL@CTransparentHwrWndExt@@UAEXXZ @ 590 NONAME ; void CTransparentHwrWndExt::CancelPointerDownL(void) ?DrawLine@CTransparentHwrWndExt@@EAE?AVTRect@@ABVTPoint@@0H@Z @ 591 NONAME ; class TRect CTransparentHwrWndExt::DrawLine(class TPoint const &, class TPoint const &, int) ?EndStrokeL@CHwrWndBase@@UAEXH@Z @ 592 NONAME ; void CHwrWndBase::EndStrokeL(int) + ?SetStarIcon@CVirtualKeyboard@@QAEXPAVCPenInputColorIcon@@@Z @ 593 NONAME ; void CVirtualKeyboard::SetStarIcon(class CPenInputColorIcon *) diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputarc/eabi/peninputlayoutcontrolU.DEF --- a/textinput/peninputarc/eabi/peninputlayoutcontrolU.DEF Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputarc/eabi/peninputlayoutcontrolU.DEF Wed Apr 14 16:18:34 2010 +0300 @@ -725,4 +725,5 @@ _ZN21CTransparentHwrWndExt18EndStrokeAndClearLEv @ 724 NONAME _ZN21CTransparentHwrWndExt8DrawLineERK6TPointS2_i @ 725 NONAME _ZN21CTransparentHwrWndExt9DrawPointERK6TPointi @ 726 NONAME + _ZN16CVirtualKeyboard11SetStarIconEP18CPenInputColorIcon @ 727 NONAME diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputarc/gsplugin/gspeninputplugin/src/gspeninputmodel.cpp --- a/textinput/peninputarc/gsplugin/gspeninputplugin/src/gspeninputmodel.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputarc/gsplugin/gspeninputplugin/src/gspeninputmodel.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -48,6 +48,8 @@ const TUid KUidtruiApp = { 0x2000B104 }; const TUid KUidPenInputSettingApp = { 0x2001959B }; +const TInt KFepChineseInputModeLength = 10; + _LIT(KLeftBracket, "(" ); _LIT(KRightBracket, ")" ); @@ -1185,7 +1187,9 @@ case ELangHongKongChinese: case ELangTaiwanChinese: { - iAknfepRepository->Set(KAknFepChineseInputMode, aInputMode); + TBuf conversion; + conversion.Num(aInputMode, EHex); + iAknfepRepository->Set( KAknFepChineseInputMode, conversion ); } break; default: @@ -1200,14 +1204,33 @@ // TInt CGSPenInputModel::GetFepInputMode() { - TInt inputMode = 0; + TUint inputMode = 0; switch(iInputLanguage) { case ELangPrcChinese: case ELangHongKongChinese: case ELangTaiwanChinese: { - iAknfepRepository->Get(KAknFepChineseInputMode, inputMode); + _LIT(Kx, "x"); + // This conversion is needed because KAknFepChineseInputMode cenrep key original type was 16bit int. + // now type is changed to string, so that it can accommodate bigger values like EHangul 0x16000. + TBuf conversion; + iAknfepRepository->Get( KAknFepChineseInputMode, conversion ); + + TInt len = conversion.Find(Kx); + TLex lex; + + if(len) + { + TPtrC ptr = conversion.Mid(len +1); + lex.Assign(ptr); + } + else + { + lex.Assign(conversion); + } + + lex.Val(inputMode, EHex); } break; default: @@ -1404,7 +1427,6 @@ supportMode = iPenInputServer.SupportInputMode( iInputLanguage ); } - TBool supportHWR = EFalse; if( supportMode & EPluginInputModeHwr || supportMode & EPluginInputModeFSc || supportMode & EPluginInputModeFingerHwr) diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h --- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.h Wed Apr 14 16:18:34 2010 +0300 @@ -559,7 +559,9 @@ * @param aIcon shift icon */ IMPORT_C void SetShiftIcon( CPenInputColorIcon* aIcon ); + IMPORT_C void SetStarIcon( CPenInputColorIcon* aIcon ); inline CPenInputColorIcon* ShiftIcon(); + inline CPenInputColorIcon* StarIcon(); /** * Install preview bubble renderer @@ -864,6 +866,12 @@ * The shift icon showing on the key */ CPenInputColorIcon* iShiftIcon; + + /** + * The star icon showing on the key + */ + CPenInputColorIcon* iStarIcon; + MPeninputVkbPreviewBubbleRenderer* iPreviewBubbleRenderer; friend class CVirtualKeyCtrl; friend class CVirtualRawKeyCtrl; diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.inl --- a/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.inl Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutvkb.inl Wed Apr 14 16:18:34 2010 +0300 @@ -188,6 +188,11 @@ return iShiftIcon; } +inline CPenInputColorIcon* CVirtualKeyboard::StarIcon() + { + return iStarIcon; + } + //class CVirtualKey diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmicfcustomdraw.cpp --- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmicfcustomdraw.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmicfcustomdraw.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -160,6 +160,12 @@ switch (aCode) { case 0x0020: // unicode for space + case 0x0023: // unicode for # + case 0x005f: // unicode for _ + case 0x002a: // unicode for * + case 0x0040: // unicode for @ + case 0x0026: // unicode for & + case 0x003d: // unicode for = return MTmCustom::EBkLineBreakClass;//ELineBreakClasses; default: break; // carry on diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp --- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutmultilineicfeditor.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -582,6 +582,7 @@ iCursorSel.iAnchorPos = icfdata.iCurSel.iAnchorPos + iPromptTextLen; DrawMfneText(); iSynCursor = EFalse; + iOldMfneText.Close(); iOldMfneText.CreateL(ptr); } @@ -1059,8 +1060,11 @@ iCharFormatMask.ClearAll(); iCharFormatMask.SetAttrib( EAttFontUnderline ); iCharFormat.iFontPresentation.iUnderline = EUnderlineOn ; - iRichText->ApplyCharFormatL(iCharFormat, iCharFormatMask, iPreInlineStartPos, - iPreInlineEndPos - iPreInlineStartPos); + if( iPreInlineStartPos >= 0 && iPreInlineEndPos <= iRichText->DocumentLength() + 1 ) + { + iRichText->ApplyCharFormatL(iCharFormat, iCharFormatMask, iPreInlineStartPos, + iPreInlineEndPos - iPreInlineStartPos); + } } //iRichText->SetInsertCharFormatL(iCharFormat, iCharFormatMask, iRichText->DocumentLength() - iPromptTextLen); @@ -1705,10 +1709,10 @@ iLayout->SetAmountToFormat(CTextLayout::EFFormatAllText); - if ( iFormatChange ) - { - iTextView->HandleGlobalChangeNoRedrawL(); - } +// if ( iFormatChange ) +// { +// iTextView->HandleGlobalChangeNoRedrawL(); +// } TBool ready = Ready(); if( ready ) @@ -1722,13 +1726,18 @@ SetReady( ETrue ); } - if ( iFormatChange ) - { - iTextView->SetSelectionL( iTextView->Selection() ); - RecalcualteTextPositionL(); - SetMsgBubbleRect(); - Draw(); - } +// if ( iFormatChange ) +// { +// iTextView->SetSelectionL( iTextView->Selection() ); +// RecalcualteTextPositionL(); +// SetMsgBubbleRect(); +// Draw(); +// } + iTextView->HandleGlobalChangeNoRedrawL(); + iTextView->SetSelectionL( iTextView->Selection() ); + RecalcualteTextPositionL(); + SetMsgBubbleRect(); + Draw(); } TBool CFepLayoutMultiLineIcfEditor::BelongToPromptText(TInt aPos) @@ -2474,7 +2483,10 @@ iCharFormat.iFontPresentation.iTextColor = iTextColor; // set prompt text as bold - iRichText->ApplyCharFormatL(iCharFormat, iCharFormatMask, 0, aPromptTextLen );//- 1 + if( aPromptTextLen <= iRichText->DocumentLength() + 1) + { + iRichText->ApplyCharFormatL(iCharFormat, iCharFormatMask, 0, aPromptTextLen );//- 1 + } iTextView->HandleRangeFormatChangeL(TCursorSelection(0, aPromptTextLen ), ETrue);//- 1 // set remain text as non-bold @@ -2538,17 +2550,23 @@ } iCharFormatMask.SetAttrib(aAttribute); + TInt aPos = Min( aStartPos, aEndPos ); + TInt aLength = Abs( aEndPos - aStartPos ); if (aNoMatchState) { - iRichText->ApplyCharFormatL(iCharFormat, iCharFormatMask, - Min(aStartPos,aEndPos), Abs( aEndPos - aStartPos ) + 1); - iTextView->HandleRangeFormatChangeL(TCursorSelection(aStartPos, aEndPos + 1), ETrue); + if ( aPos >= 0 && aPos + aLength <= iRichText->DocumentLength()) + { + iRichText->ApplyCharFormatL(iCharFormat, iCharFormatMask, aPos, aLength + 1); + iTextView->HandleRangeFormatChangeL(TCursorSelection(aStartPos, aEndPos + 1), ETrue); + } } else { - iRichText->ApplyCharFormatL(iCharFormat, iCharFormatMask, - Min(aStartPos,aEndPos), Abs( aEndPos - aStartPos ) ); - iTextView->HandleRangeFormatChangeL(TCursorSelection(aStartPos, aEndPos), ETrue); + if ( aPos >= 0 && aPos + aLength <= iRichText->DocumentLength() + 1 ) + { + iRichText->ApplyCharFormatL(iCharFormat, iCharFormatMask, aStartPos, aLength ); + iTextView->HandleRangeFormatChangeL(TCursorSelection(aStartPos, aEndPos), ETrue); + } } aPreStartPos = aStartPos; @@ -2693,7 +2711,7 @@ { if( !iFormatChange ) { - return; + return ; } //apply line space CParaFormat* paraFormat=CParaFormat::NewL(); @@ -2814,13 +2832,13 @@ if ( BelongToPromptText(aCurSel.iCursorPos) ) { - //pls refer to bug: ELWG-7MZ5EZ, why to use iPromptText->Length() instead of iPromptTextLen + //why to use iPromptText->Length() instead of iPromptTextLen //iCursorSel.iCursorPos = iPromptTextLen; iCursorSel.iCursorPos = iPromptText->Length(); } if ( BelongToPromptText(aCurSel.iAnchorPos) ) { - //pls refer to bug: ELWG-7MZ5EZ, why to use iPromptText->Length() instead of iPromptTextLen + //why to use iPromptText->Length() instead of iPromptTextLen //iCursorSel.iAnchorPos = iPromptTextLen; iCursorSel.iAnchorPos = iPromptText->Length(); } diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp --- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkb.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -157,6 +157,7 @@ DestroyIrregularBmps(); delete iShiftIcon; + delete iStarIcon; } // --------------------------------------------------------------------------- @@ -1135,6 +1136,13 @@ delete iShiftIcon; iShiftIcon = aIcon; } + +EXPORT_C void CVirtualKeyboard::SetStarIcon( CPenInputColorIcon* aIcon ) + { + delete iStarIcon; + iStarIcon = aIcon; + } + /* EXPORT_C CFepUiBaseCtrl* CVirtualKeyboard::HandlePointerDownEventL(const TPoint& aPoint) { diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkbkeyctrl.cpp --- a/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkbkeyctrl.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputarc/src/peninputlayoutcontrol/peninputlayoutvkbkeyctrl.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -29,6 +29,7 @@ #include "peninputpluginutils.h" _LIT( KKeyShiftCharacter, "\x2191"); +_LIT( KKeyStarCharacter, "\x002a"); const TInt KDefaultKeyMargin = 10; @@ -143,6 +144,14 @@ *gc, textLayout.TextRect() ); } + else if(iKeyboard->StarIcon() && + iKeyInfo->KeyUnicodes(TVirtualKeyTextPos(i)) == KKeyStarCharacter ) + { + CFbsBitGc* gc = static_cast(BitGc()); + AknPenInputDrawUtils::DrawColorIcon( iKeyboard->StarIcon(), + *gc, + textLayout.TextRect() ); + } else { textLayout.DrawText(*BitGc(), iKeyInfo->KeyUnicodes(TVirtualKeyTextPos(i)), diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputcommonlayout/src/peninputlayoutwindowext.cpp --- a/textinput/peninputcommonlayout/src/peninputlayoutwindowext.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputcommonlayout/src/peninputlayoutwindowext.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -268,6 +268,9 @@ case EPeninputLayoutEventShift: { HandleShiftAndCapslockBtnClicked(); + TInt shiftStatus = CPeninputDataConverter::AnyToInt + ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) ); + ChangeMergedButtonStatus( shiftStatus, 0 ); } break; case EPeninputLayoutEventCapslock: diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputfingerhwr/src/peninputfingerhwrengine.cpp --- a/textinput/peninputfingerhwr/src/peninputfingerhwrengine.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputfingerhwr/src/peninputfingerhwrengine.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -20,7 +20,8 @@ #include #include #include -#include "PtiDefs.h" +#include +#include //USER INCLUDES #include "peninputfingerhwrengine.h" @@ -671,7 +672,7 @@ void CAknFepHwrEngine::ResetKeyboardType() { #ifdef RD_INTELLIGENT_TEXT_INPUT - RProperty::Set(KCRUidAvkon, KAknKeyBoardLayout, iKeyboardType); + RProperty::Set( KPSUidAknFep, KAknFepVirtualKeyboardType, iKeyboardType ); #endif } @@ -682,7 +683,7 @@ void CAknFepHwrEngine::SetKeyboardToQwerty() { #ifdef RD_INTELLIGENT_TEXT_INPUT - RProperty::Set(KCRUidAvkon, KAknKeyBoardLayout, EPtiKeyboardQwerty4x12); + RProperty::Set( KPSUidAknFep, KAknFepVirtualKeyboardType, EPtiKeyboardQwerty4x12 ); #endif } @@ -693,7 +694,7 @@ void CAknFepHwrEngine::GetKeyboardType() { #ifdef RD_INTELLIGENT_TEXT_INPUT - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, iKeyboardType); + RProperty::Get( KPSUidAknFep, KAknFepVirtualKeyboardType, iKeyboardType ); #endif } diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputfingerhwr/src/peninputfingerhwrstatemanager.cpp --- a/textinput/peninputfingerhwr/src/peninputfingerhwrstatemanager.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputfingerhwr/src/peninputfingerhwrstatemanager.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -1154,23 +1154,8 @@ // void CPeninputFingerHwrChineseStatePredictSelecting::OnClickBackSpaceL() { - iDataStore.TriggerStr()->DeleteLast(); - if (iDataStore.TriggerStr()->IsEmpty()) - { - iDataStore.SetChineseSymbolL(); - iDataStore.SetFixChinesePredictiveL(); - iStateManager.SetState( CPeninputFingerHwrStateManagerCn:: - EPeninputFingerHwrStatePredictSelectingCn ); - } - else - { - iDataStore.DoPredictiveL(); - if( iDataStore.PredictiveCount() <= 0 ) - { - iDataStore.TriggerStr()->DeleteAll(); - iDataStore.SetFixChinesePredictiveL(); - } - } + iDataStore.TriggerStr()->DeleteAll(); + iStateManager.SetState(CPeninputFingerHwrStateManagerCn::EPeninputFingerHwrStateStandbyCn); } diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/group/iconlist.txt --- a/textinput/peninputgenericitut/group/iconlist.txt Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/group/iconlist.txt Wed Apr 14 16:18:34 2010 +0300 @@ -47,3 +47,4 @@ -c8,8 qgn_indi_input_backspace.svg -c8,8 qgn_indi_input_shift.svg -c8,8 qgn_indi_itut_backspace1.svg +-c8,8 qgn_indi_feb_asterisk.svg diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/inc/peninputgenericitutdatamgr.h --- a/textinput/peninputgenericitut/inc/peninputgenericitutdatamgr.h Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/inc/peninputgenericitutdatamgr.h Wed Apr 14 16:18:34 2010 +0300 @@ -177,7 +177,14 @@ TInt iIcfTextLineSpaceMarginForPrtWest; TInt iIcfTextHeightForPrtWest; TRect iShiftIconRectForPrtWest; + TRect iStarIconRectForPrtWest; TInt iSpellIcfTextHeightForPrtWest; + + TInt iSpellIcfTextLeftMarginForPrtWest; + TInt iSpellIcfTextRightMarginForPrtWest; + TInt iSpellIcfTextTopMarginForPrtWest; + TInt iSpellIcfTextBottomMarginForPrtWest; + TInt iSpellIcfTextLineSpaceMarginForPrtWest; private: CGenericItutDataMgr(MItutLayoutContext* aLayoutContext, CPtiEngine* aPtiEngine ); @@ -461,7 +468,7 @@ inline TBool CGenericItutDataMgr::IsPortraitWest() { - return !iLandScape && !IsChinese(); + return !iLandScape && !IsChinese() && !IsKorean(); } inline TBool CGenericItutDataMgr::IsValidLanguage(TInt aLanguage) { diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/inc/peninputgenericitutwindow.h --- a/textinput/peninputgenericitut/inc/peninputgenericitutwindow.h Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/inc/peninputgenericitutwindow.h Wed Apr 14 16:18:34 2010 +0300 @@ -125,7 +125,6 @@ void HandleButtonResOnLangDirChange( TInt aControlId ); void HandleButtonResOnLangDirChangeL( TInt aControlId ); - TBool IsPortraitWest(); void IndiBubbleWithText(); void IndiBubbleWithoutText(); void UpdateIndiBubbleL( TUint8* aData ); @@ -136,6 +135,7 @@ void SetIndiWithTextFlag( TBool aFlag ); void MsgBubbleForChinese(); void SetSpellDisplayContentL( TUint8* aData ); + void CreateKoreanSpecificCtrlsIfNeededL(); private: CGenericItutWindow(CGenericItutWindowManager* aWindowMgr, CGenericItutUiLayout* aLayoutOwner, diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/inc/peninputgenericitutwindowmanager.h --- a/textinput/peninputgenericitut/inc/peninputgenericitutwindowmanager.h Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/inc/peninputgenericitutwindowmanager.h Wed Apr 14 16:18:34 2010 +0300 @@ -99,7 +99,15 @@ void HideByteWarningBubble(); void DisplayWarningNote(const TDesC& aInfo); /* Teleca change end, 18.05.2009 ssal */ - TBool IsPortraitWest(); + + TBool IsAllowHandleRawKeyEvent(); + + void SetAllowHandleRawKeyEventFlag( TBool aFlag ); + + void StartPreventSCTTimer(); + + void StopPreventSCTTimer(); + void CreateKoreanSpecificCtrlsIfNeededL(); private: CGenericItutWindowManager(CGenericItutUiLayout* aLayoutOwner, @@ -130,6 +138,9 @@ /* Teleca change begin, 18.05.2009 ssal */ CPeriodic* iInfoTimer; /* Teleca change end, 18.05.2009 ssal */ + + TBool iAllowHandleRawKeyEvent; + CPeriodic* iPreventCSTTimer; }; inline CGenericItutWindow* CGenericItutWindowManager::Window() diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/inc/peninputitutwesternuistatenonpredict.h --- a/textinput/peninputgenericitut/inc/peninputitutwesternuistatenonpredict.h Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/inc/peninputitutwesternuistatenonpredict.h Wed Apr 14 16:18:34 2010 +0300 @@ -43,6 +43,10 @@ CWesternItutUiStateNonPredict(CGenericItutUiMgrBase* aOwner); private: + void AdjustKoreanLayout(); + void AdjustWesternLayout(); + void AdjustChineseLayout(); +private: CFepLayoutMultiLineIcf* iIcf; TBool iConsumeLastKeyDown; }; diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/src/peninputgenericitutdatamgr.cpp --- a/textinput/peninputgenericitut/src/peninputgenericitutdatamgr.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/src/peninputgenericitutdatamgr.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -182,7 +182,7 @@ // Screen TRect rect; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EApplicationWindow, rect); + rect = AknLayoutScalable_Avkon::application_window(0).LayoutLine().Rect(); TAknWindowLineLayout mainWnd, bottomWnd, bottomPane; TAknLayoutRect mainWndRect, bottomwndtrect, bottompanerect; @@ -299,12 +299,23 @@ shiftIconRect.LayoutRect( keyrect, shiftIcon ); iShiftIconRectForPrtWest = shiftIconRect.Rect(); } + + // read star icon rect + if( i == 3 && j == 0 ) + { + TAknWindowLineLayout starIcon = AknLayoutScalable_Avkon:: + cell_ituss_key_pane_g2( 0 ).LayoutLine(); + TAknLayoutRect starIconRect; + starIconRect.LayoutRect( keyrect, starIcon ); + iStarIconRectForPrtWest = starIconRect.Rect(); + } + } } // Num text row - iVkBigNumTextForPrtWest = AknLayoutScalable_Avkon::cell_ituss_key_t1(0).LayoutLine(); + iVkBigNumTextForPrtWest = AknLayoutScalable_Avkon::cell_ituss_key_t1(4).LayoutLine(); iVkNumTextForPrtWest = AknLayoutScalable_Avkon::cell_ituss_key_t1(1).LayoutLine(); // Key text row 1 @@ -383,23 +394,47 @@ iBubbleFontForPrtWest = const_cast(previewWndText.Font()); // LAF for spell mode - TAknWindowLineLayout btnPaneWnd, okBtnWnd, cancelBtnWnd, spellwnd; - TAknLayoutRect btnPaneRect, okBtnRect, cancelBtnRect, spellwndtrect; + TAknWindowLineLayout spellwnd; + TAknLayoutRect okBtnRect, cancelBtnRect, spellwndtrect; iSpellQueryPaneRectForPrtWest = mainWndRect.Rect(); spellwnd = AknLayoutScalable_Avkon::popup_fep_ituss_window(1).LayoutLine(); spellwndtrect.LayoutRect( mainWndRect.Rect(), spellwnd ); - - btnPaneWnd = AknLayoutScalable_Avkon::ituss_sks_pane(0).LayoutLine(); - btnPaneRect.LayoutRect( spellwndtrect.Rect(), btnPaneWnd ); + + TAknWindowLineLayout queryTopPane, queryICFPane, icfSpellIndiPane, + middleInnerBtn, middleBtn, bottomInnerBtn; + TAknLayoutRect queryTopPaneRect, queryICFPaneRect, icfSpellIndiPaneRect, + bottomButton, bottomInnerRect, middleBtnRect; + + queryTopPane = AknLayoutScalable_Avkon::popup_fep_vtchi_icf_pane(1).LayoutLine(); + queryTopPaneRect.LayoutRect( mainWndRect.Rect(), queryTopPane ); + + queryICFPane = AknLayoutScalable_Avkon::vtchi_query_pane(0).LayoutLine(); + queryICFPaneRect.LayoutRect( queryTopPaneRect.Rect(), queryICFPane ); + iSpellICFRectForPrtWest = queryICFPaneRect.Rect(); - okBtnWnd = AknLayoutScalable_Avkon::ituss_sks_pane_g1(0).LayoutLine(); - okBtnRect.LayoutRect( btnPaneRect.Rect(), okBtnWnd ); + // Middle pane + TRect middleButtonPaneRect = spellwndtrect.Rect(); + middleButtonPaneRect.Move( 5, 2 ); + + middleBtn = AknLayoutScalable_Avkon::cell_ituss_key_pane(3).LayoutLine(); + middleBtnRect.LayoutRect( bottompanerect.Rect(), middleBtn ); + middleInnerBtn = AknLayoutScalable_Avkon::bg_cell_ituss_key_g1(5).LayoutLine(); + + TRect cellMiddleRect; + cellMiddleRect.iTl = middleButtonPaneRect.iTl; + cellMiddleRect.SetHeight( middleBtnRect.Rect().Height()); + cellMiddleRect.SetWidth( middleBtnRect.Rect().Width()); + + // OK button + okBtnRect.LayoutRect( cellMiddleRect, middleInnerBtn ); iOKRectForPrtWest = okBtnRect.Rect(); - cancelBtnWnd = AknLayoutScalable_Avkon::ituss_sks_pane_g2(0).LayoutLine(); - cancelBtnRect.LayoutRect( btnPaneRect.Rect(), cancelBtnWnd ); + // Cancel button + cellMiddleRect.Move( middleBtnRect.Rect().Width(), 0 ); + + cancelBtnRect.LayoutRect( cellMiddleRect, middleInnerBtn ); iCancelRectForPrtWest = cancelBtnRect.Rect(); iBtnOKTextForPrtWest = AknLayoutScalable_Avkon::ituss_sks_pane_t1(0).LayoutLine(); @@ -410,66 +445,76 @@ iBtnCancelTextForPrtWest = iBtnOKTextForPrtWest; - TAknWindowLineLayout queryTopPane, queryICFPane, icfSpellIndiPane, middleInnerBtn; - TAknLayoutRect queryTopPaneRect, queryICFPaneRect, icfSpellIndiPaneRect, - middleButton, middleInnerRect; - - queryTopPane = AknLayoutScalable_Avkon::popup_fep_vtchi_icf_pane(1).LayoutLine(); - queryTopPaneRect.LayoutRect( mainWndRect.Rect(), queryTopPane ); - - queryICFPane = AknLayoutScalable_Avkon::vtchi_query_pane(0).LayoutLine(); - queryICFPaneRect.LayoutRect( queryTopPaneRect.Rect(), queryICFPane ); - iSpellICFRectForPrtWest = queryICFPaneRect.Rect(); - - TRect middleButtonPaneRect = spellwndtrect.Rect(); - middleButtonPaneRect.Move( 5, 3 ); - + // Bottom pane TRect cellSpellRect; - cellSpellRect.iTl = middleButtonPaneRect.iTl; + cellSpellRect.iTl.iX = middleButtonPaneRect.iTl.iX; + cellSpellRect.iTl.iY = middleButtonPaneRect.iTl.iY + + itucellrect.Rect().Height() * 5 + 10; cellSpellRect.SetHeight( itucellrect.Rect().Height()); cellSpellRect.SetWidth( itucellrect.Rect().Width()); - + // Left - middleButton.LayoutRect( cellSpellRect, ituinnercell ); - iSpellArrowLeftRectForPrtWest = middleButton.Rect(); + bottomButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellArrowLeftRectForPrtWest = bottomButton.Rect(); - middleInnerBtn = AknLayoutScalable_Avkon::cell_ituss_key_pane_g1(2).LayoutLine(); - middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); - iSpellArrowLeftInnerRectForPrtWest = middleInnerRect.Rect(); + bottomInnerBtn = AknLayoutScalable_Avkon::cell_ituss_key_pane_g1(2).LayoutLine(); + bottomInnerRect.LayoutRect( bottomButton.Rect(), bottomInnerBtn ); + iSpellArrowLeftInnerRectForPrtWest = bottomInnerRect.Rect(); // Right cellSpellRect.Move( itucellrect.Rect().Width(), 0 ); - middleButton.LayoutRect( cellSpellRect, ituinnercell ); - iSpellArrowRightRectForPrtWest = middleButton.Rect(); + bottomButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellArrowRightRectForPrtWest = bottomButton.Rect(); - middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); - iSpellArrowRightInnerRectForPrtWest = middleInnerRect.Rect(); + bottomInnerRect.LayoutRect( bottomButton.Rect(), bottomInnerBtn ); + iSpellArrowRightInnerRectForPrtWest = bottomInnerRect.Rect(); // BackSpace cellSpellRect.Move( itucellrect.Rect().Width(), 0 ); - middleButton.LayoutRect( cellSpellRect, ituinnercell ); - iSpellICFBtnRectForPrtWest = middleButton.Rect(); + bottomButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellICFBtnRectForPrtWest = bottomButton.Rect(); + + bottomInnerRect.LayoutRect( bottomButton.Rect(), bottomInnerBtn ); + iSpellICFBtnInnerRectForPrtWest = bottomInnerRect.Rect(); - middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); - iSpellICFBtnInnerRectForPrtWest = middleInnerRect.Rect(); + //iSpellText1ForPrtWest = AknLayoutScalable_Avkon::vtchi_query_pane_t1(0).LayoutLine(); + iSpellText1ForPrtWest = AknLayoutScalable_Avkon::vtchi_icf_list_pane_t1(0, 0, 0).LayoutLine(); + //iSpellText2ForPrtWest = AknLayoutScalable_Avkon::vtchi_query_pane_t2(0).LayoutLine(); + iSpellText2ForPrtWest = AknLayoutScalable_Avkon::vtchi_icf_list_pane_t1(0, 0, 1).LayoutLine(); + iSpellText3ForPrtWest = AknLayoutScalable_Avkon::vtchi_query_pane_t3(0).LayoutLine(); - iSpellText1ForPrtWest = AknLayoutScalable_Avkon::vtchi_query_pane_t1(0).LayoutLine(); - iSpellText2ForPrtWest = AknLayoutScalable_Avkon::vtchi_query_pane_t2(0).LayoutLine(); - iSpellText3ForPrtWest = AknLayoutScalable_Avkon::vtchi_query_pane_t3(0).LayoutLine(); + iSpellIcfTextLeftMarginForPrtWest = iSpellText1ForPrtWest.il; + iSpellIcfTextRightMarginForPrtWest = iSpellIcfTextLeftMarginForPrtWest; iSpellIcfFontForPrtWest = const_cast( AknLayoutUtils::FontFromId(iSpellText1ForPrtWest.iFont, NULL)); - TAknLayoutText cSpelltxt1; + TAknLayoutText cSpelltxt1, cSpelltxt2; cSpelltxt1.LayoutText( queryICFPaneRect.Rect(), iSpellText1ForPrtWest ); + cSpelltxt2.LayoutText( queryICFPaneRect.Rect(), iSpellText2ForPrtWest ); + + iSpellIcfTextTopMarginForPrtWest = + cSpelltxt1.TextRect().iTl.iY - queryICFPaneRect.Rect().iTl.iY; + + iSpellIcfTextLineSpaceMarginForPrtWest = + cSpelltxt2.TextRect().iTl.iY - cSpelltxt1.TextRect().iBr.iY; + iSpellIcfTextHeightForPrtWest = cSpelltxt1.TextRect().Height(); + TInt maxSpellRow = ( iSpellICFRectForPrtWest.Height() - iSpellIcfTextTopMarginForPrtWest ) + / ( iSpellIcfTextHeightForPrtWest + iSpellIcfTextLineSpaceMarginForPrtWest ); + + iSpellIcfTextBottomMarginForPrtWest = + iSpellICFRectForPrtWest.Height() - + ( iSpellIcfTextHeightForPrtWest + iSpellIcfTextLineSpaceMarginForPrtWest ) + * maxSpellRow - iSpellIcfTextTopMarginForPrtWest; icfSpellIndiPane = AknLayoutScalable_Avkon::icf_edit_indi_pane(0).LayoutLine(); icfSpellIndiPaneRect.LayoutRect(queryICFPaneRect.Rect(), icfSpellIndiPane); iSpellIndiPaneWithoutTextForPrtWest = icfSpellIndiPaneRect.Rect(); iSpellIndiIconWithoutTextForPrtWest = TRect( 0, 0, 50, 17 ); } + void CGenericItutDataMgr::ReadLafInfo() { // Screen @@ -1127,6 +1172,11 @@ { iLayoutContext->UiManager()->CreateChineseSpecificCtrlsIfNeededL(); } + + if( IsKorean()) + { + iLayoutContext->UiManager()->CreateKoreanSpecificCtrlsIfNeededL(); + } NotifyChangeControlLayout(MItutPropertySubscriber::EItutPropertyKeypadResourceId, KeypadResourceId()); diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp --- a/textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/src/peninputgenericitutwindow.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -160,9 +160,12 @@ // read key shift icon res CPenInputColorIcon* shiftIcon = CPenInputColorIcon::NewL( R_ITUT_KEYPAD_SHIFT_ICON ); - if ( IsPortraitWest()) + if ( iDataMgr->IsPortraitWest()) { + CPenInputColorIcon* starIcon = CPenInputColorIcon::NewL( R_ITUT_KEYPAD_STAR_ICON ); shiftIcon->ResizeL( iDataMgr->iShiftIconRectForPrtWest.Size()); + starIcon->ResizeL( iDataMgr->iStarIconRectForPrtWest.Size()); + iStandardItutKp->SetStarIcon( starIcon ); } else { @@ -371,19 +374,6 @@ iBackgroundCtrl->SetRect(TItutDataConverter::AnyToRect( iLayoutOwner->DataMgr()->RequestData(ELayoutRect))); - TCommonBgCtrlSubItem bgSubItem; - TRect spellPaneRect; - - spellPaneRect = TItutDataConverter::AnyToRect( - iDataMgr->RequestData(ESpellQueryPaneRect) ); - - bgSubItem.iRect = spellPaneRect; - bgSubItem.iFrameID = KAknsIIDQsnFrPopupSub; - bgSubItem.iCenterID = KAknsIIDDefault; - bgSubItem.iIsShow = EFalse; - - iBackgroundCtrl->AddSubBgItemL( bgSubItem ); - AddControlL(iBackgroundCtrl); } @@ -847,31 +837,41 @@ { return; } - // create switch - CreateButtonL(ECommonButton, ECtrlIdSwitch, ESwitchRect, - ESwitchInnerRect, R_FINGER_LAYOUT_SWITCH); + + if( !Control( ECtrlIdSwitch )) + { + // create switch + CreateButtonL(ECommonButton, ECtrlIdSwitch, ESwitchRect, + ESwitchInnerRect, R_FINGER_LAYOUT_SWITCH); + } + + if( !Control( ECtrlIdIndicator ) ) + { + // create indicator button + CFepUiBaseCtrl* indicatorBtn = CreateButtonL(ECommonButton, + ECtrlIdIndicator, KUnavailableID, + KUnavailableID,KUnavailableID); + + // create input case type menu + AddEditorMenuL(); + } - // create indicator button - CFepUiBaseCtrl* indicatorBtn = CreateButtonL(ECommonButton, - ECtrlIdIndicator, KUnavailableID, - KUnavailableID,KUnavailableID); - + if( ! iInputModeSwitch ) + { + // create switch input mode menu + iInputModeSwitch = CPeninputLayoutInputmodelChoice::NewL( + iLayoutOwner, + ECtrlIdInputSwitch, + EPluginInputModeItut ); + iInputModeSwitch->SetListSkinID( KAknsIIDQsnFrList, KAknsIIDQsnFrPopupSub ); + AddControlL( iInputModeSwitch ); + } // create spell indicator CAknFepCtrlLabel* spellIndicator = CAknFepCtrlLabel::NewL(iLayoutOwner, ECtrlIdSpellIndicator); AddControlL(spellIndicator); spellIndicator->Hide(ETrue); - // create input case type menu - AddEditorMenuL(); - // create switch input mode menu - iInputModeSwitch = CPeninputLayoutInputmodelChoice::NewL( - iLayoutOwner, - ECtrlIdInputSwitch, - EPluginInputModeItut ); - iInputModeSwitch->SetListSkinID( KAknsIIDQsnFrList, KAknsIIDQsnFrPopupSub ); - AddControlL( iInputModeSwitch ); - CreateDropdownListL(); // create spell control for stroke/zhuyin TRect rect = TItutDataConverter::AnyToRect(iDataMgr->RequestData(ESpellRect)); @@ -1336,33 +1336,32 @@ else { temp = Control(ECtrlIdIndicator); - if ( !temp ) - { - return; - } CFepUiBaseCtrl* indi = Control(ECtrlIdSpellIndicator); - if ( !indi ) - { - return; - } - indi->Hide(ETrue); - SetIndicatorImageL(temp, - indicatorData.iIndicatorImgID, - indicatorData.iIndicatorMaskID, - indicatorData.iIndicatorTextImgID, - indicatorData.iIndicatorTextMaskID); - if( temp->Hiden() ) - { - temp->Hide( EFalse ); - } - else - { - temp->ClearRect( temp->Rect() ); - temp->Draw(); - temp->UpdateArea( temp->Rect() ); - iLayoutOwner->RootControl()->ReDrawRect( temp->Rect() ); - } + if( indi ) + { + indi->Hide(ETrue); + } + + if( temp ) + { + SetIndicatorImageL(temp, + indicatorData.iIndicatorImgID, + indicatorData.iIndicatorMaskID, + indicatorData.iIndicatorTextImgID, + indicatorData.iIndicatorTextMaskID); + if( temp->Hiden() ) + { + temp->Hide( EFalse ); + } + else + { + temp->ClearRect( temp->Rect() ); + temp->Draw(); + temp->UpdateArea( temp->Rect() ); + iLayoutOwner->RootControl()->ReDrawRect( temp->Rect() ); + } + } } } } @@ -1622,8 +1621,6 @@ iBackgroundCtrl->SizeChanged( TItutDataConverter::AnyToRect(iDataMgr->RequestData( ELayoutRect ) ) ); - iBackgroundCtrl->GetSubBgItem(0).iRect = TItutDataConverter::AnyToRect( - iDataMgr->RequestData(ESpellQueryPaneRect) ); TRAP_IGNORE(ApplyVariantLafDataL(ETrue); iLayoutOwner->HandleCommand(EItutExtCmdSizeChanged, NULL)); @@ -1735,7 +1732,7 @@ iICF->Hide(EFalse); - if ( IsPortraitWest() && (!iDataMgr->IsChineseSpellMode())) + if ( iDataMgr->IsPortraitWest() && (!iDataMgr->IsChineseSpellMode())) { iICF->MsgBubbleCtrl()->SetTextL( KEmptyString ); iIndiWithText = EFalse; @@ -1750,7 +1747,7 @@ TBool bSizeChanged = EFalse; ControlSizeChanged(ECtrlIdArrowLeft, EArrowLeftRect, ELeftInnerRect, ETrue); ControlSizeChanged(ECtrlIdArrowRight, EArrowRightRect, ERightInnerRect, ETrue); - if( iDataMgr->IsChinese()) + if( iDataMgr->IsChinese() || iDataMgr->IsKorean() ) { ControlSizeChanged(ECtrlIdSwitch, ESwitchRect, ESwitchInnerRect, ETrue); } @@ -1859,9 +1856,11 @@ // reconstruct shift icon when skin changed TRAP_IGNORE(iStandardItutKp->ShiftIcon()->ReConstructL()); - if ( IsPortraitWest()) + TRAP_IGNORE(iStandardItutKp->StarIcon()->ReConstructL()); + if ( iDataMgr->IsPortraitWest()) { TRAP_IGNORE(iStandardItutKp->ShiftIcon()->ResizeL(iDataMgr->iShiftIconRectForPrtWest.Size())); + TRAP_IGNORE(iStandardItutKp->StarIcon()->ResizeL(iDataMgr->iStarIconRectForPrtWest.Size())); } else { @@ -2141,10 +2140,6 @@ unicodesInt.Close(); } -TBool CGenericItutWindow::IsPortraitWest() - { - return !iDataMgr->IsChinese() && !iDataMgr->IsLandScape(); - } void CGenericItutWindow::IndiBubbleWithText() { @@ -2203,4 +2198,33 @@ { iIndiWithText = aFlag; } +void CGenericItutWindow::CreateKoreanSpecificCtrlsIfNeededL() + { + if( !Control(ECtrlIdIndicator) ) + { + CreateButtonL(ECommonButton, ECtrlIdIndicator, KUnavailableID, + KUnavailableID,KUnavailableID); + // create input case type menu + AddEditorMenuL(); + } + + if( !Control(ECtrlIdSwitch)) + { + CreateButtonL(ECommonButton, ECtrlIdSwitch, ESwitchRect, + ESwitchInnerRect, R_FINGER_LAYOUT_SWITCH); + + } + + + if( !iInputModeSwitch ) + { + // create switch input mode menu + iInputModeSwitch = CPeninputLayoutInputmodelChoice::NewL( + iLayoutOwner, + ECtrlIdInputSwitch, + EPluginInputModeItut ); + iInputModeSwitch->SetListSkinID( KAknsIIDQsnFrList, KAknsIIDQsnFrPopupSub ); + AddControlL( iInputModeSwitch ); + } + } // End Of File diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/src/peninputgenericitutwindowmanager.cpp --- a/textinput/peninputgenericitut/src/peninputgenericitutwindowmanager.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/src/peninputgenericitutwindowmanager.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -48,6 +48,18 @@ _LIT(KEmptyString, ""); const TInt KPeriodicTimerIntervalSec(2500000); /* Teleca change end, 18.05.2009 ssal */ + +const TInt KSCTPreventTime = 1000 * 1000; + +TInt PreventSCTTimerCallback( TAny* aData ) + { + CGenericItutWindowManager* windowMgr = + static_cast( aData ); + windowMgr->SetAllowHandleRawKeyEventFlag( ETrue ); + windowMgr->StopPreventSCTTimer(); + return 0; + } + CGenericItutWindowManager* CGenericItutWindowManager::NewL(CGenericItutUiLayout* aLayoutOwner, CGenericItutDataMgr* aDataMgr) { @@ -63,7 +75,9 @@ CGenericItutDataMgr* aDataMgr) :iLayoutOwner(aLayoutOwner), iDataMgr(aDataMgr), - iLastRawKeyDown(EStdKeyNull) + iLastRawKeyDown(EStdKeyNull), + iAllowHandleRawKeyEvent( ETrue ), + iPreventCSTTimer( NULL ) { iInEditWordQueryDlg = EFalse; @@ -79,6 +93,9 @@ } delete iInfoTimer; /* Teleca change end, 18.05.2009 ssal */ + + iPreventCSTTimer->Cancel(); + delete iPreventCSTTimer; } void CGenericItutWindowManager::SetPropertyL(MItutPropertySubscriber::TItutProperty aPropertyName, @@ -94,6 +111,8 @@ /* Teleca change begin, 18.05.2009 ssal */ iInfoTimer = CPeriodic::NewL(CActive::EPriorityStandard); /* Teleca change end, 18.05.2009 ssal */ + + iPreventCSTTimer = CPeriodic::NewL( CActive::EPriorityStandard ); } void CGenericItutWindowManager::SimulateRawEvent(TInt aScanCode, TRawEvent::TType aType) @@ -125,20 +144,27 @@ { case EEventRawKeyDownEvent: { - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); - SimulateRawEvent(key->iScanCode,TRawEvent::EKeyDown); - SetLastRawKeyDown(key->iScanCode, ETrue, aCtrl); + if ( iAllowHandleRawKeyEvent ) + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + SimulateRawEvent(key->iScanCode,TRawEvent::EKeyDown); + SetLastRawKeyDown(key->iScanCode, ETrue, aCtrl); + } } break; case EEventRawKeyUpEvent: { - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); - SimulateRawEvent(key->iScanCode,TRawEvent::EKeyUp); - SetLastRawKeyDown(key->iScanCode, EFalse, aCtrl); + if ( iAllowHandleRawKeyEvent ) + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + SimulateRawEvent(key->iScanCode,TRawEvent::EKeyUp); + SetLastRawKeyDown(key->iScanCode, EFalse, aCtrl); + } } break; case EItutCmdEnterSpellMode: { + StartPreventSCTTimer(); iLayoutOwner->SignalOwner(ESignalEnterSpellMode); } break; @@ -224,7 +250,10 @@ if (event->iCommand == EItutCmdPredictItemSelected) ReportItemSelected(ESignalSelectMatchSelectionText, event->iIndex, ETrue); else if (event->iCommand == EItutCmdEnterSpellMode) + { + StartPreventSCTTimer(); iLayoutOwner->SignalOwner(ESignalEnterSpellMode); + } } else if (aCtrl->ControlId() == ECtrlIdEditorMenu) { @@ -305,7 +334,7 @@ break; case ECmdPenInputFingerMatchIndicator: { - if ( IsPortraitWest() && ( !iDataMgr->IsChineseSpellMode())) + if ( iDataMgr->IsPortraitWest() && ( !iDataMgr->IsChineseSpellMode())) { iWindow->UpdateIndiBubbleL( aData ); } @@ -438,10 +467,6 @@ return iLayoutOwner; } -TBool CGenericItutWindowManager::IsPortraitWest() - { - return !iDataMgr->IsChinese() && !iDataMgr->IsLandScape(); - } void CGenericItutWindowManager::HandleAppInfoChangeL(const TDesC& aInfo) { CGenericItutUiLayout * itutLayoutOwner; @@ -452,7 +477,7 @@ CGenericItutUiMgrBase::EStateSpelling && !iInEditWordQueryDlg) { - if ( IsPortraitWest() && (!iDataMgr->IsChineseSpellMode())) + if ( iDataMgr->IsPortraitWest() && (!iDataMgr->IsChineseSpellMode())) { iWindow->Icf()->HideBubble(); iWindow->SetIndiWithTextFlag( ETrue ); @@ -479,7 +504,7 @@ } else { - if ((!IsPortraitWest()) || iDataMgr->IsChineseSpellMode()) + if ((!iDataMgr->IsPortraitWest()) || iDataMgr->IsChineseSpellMode()) { iWindow->Icf()->HideBubble(); } @@ -701,7 +726,31 @@ manager->HideByteWarningBubble(); return KErrNone; } - + +TBool CGenericItutWindowManager::IsAllowHandleRawKeyEvent() + { + return iAllowHandleRawKeyEvent; + } + +void CGenericItutWindowManager::SetAllowHandleRawKeyEventFlag( TBool aFlag ) + { + iAllowHandleRawKeyEvent = aFlag; + } + +void CGenericItutWindowManager::StartPreventSCTTimer() + { + iAllowHandleRawKeyEvent = EFalse; + + TTimeIntervalMicroSeconds32 t = KSCTPreventTime; + iPreventCSTTimer->Start( t, t, + TCallBack(PreventSCTTimerCallback, this)); + } + +void CGenericItutWindowManager::StopPreventSCTTimer() + { + iPreventCSTTimer->Cancel(); + } + void CGenericItutWindowManager::HideByteWarningBubble() { if (!iInfoTimer) @@ -715,4 +764,9 @@ iWindow->Icf()->HideInfoBubble(); } } + +void CGenericItutWindowManager::CreateKoreanSpecificCtrlsIfNeededL() + { + iWindow->CreateKoreanSpecificCtrlsIfNeededL(); + } // End Of File diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/src/peninputitutchnuistatepinyincomposition.cpp --- a/textinput/peninputgenericitut/src/peninputitutchnuistatepinyincomposition.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/src/peninputitutchnuistatepinyincomposition.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -26,6 +26,7 @@ #include "peninputgenericitutdatamgr.h" #include "peninputgenericitutlayoutcontext.h" #include "peninputgenericitutconverter.h" +#include "peninputgenericitutwindowmanager.h" CChnItutUiStatePinyinComposition* CChnItutUiStatePinyinComposition::NewL( CGenericItutUiMgrBase* aOwner) @@ -40,6 +41,8 @@ CChnItutUiStatePinyinComposition::~CChnItutUiStatePinyinComposition() { + iSpellCands.ResetAndDestroy(); + iSpellCands.Close(); } CChnItutUiStatePinyinComposition::CChnItutUiStatePinyinComposition( @@ -82,25 +85,17 @@ // hide dropdownlist & reset its status CFepCtrlDropdownList* spelllist = static_cast( iOwner->LayoutContext()->Control(ECtrlIdSpellCandsList)); - spelllist->ResetAndClear(CFepCtrlDropdownList::EListExpandableRollWithIcon); - iSpellCands.ResetAndDestroy(); - iSpellCands.Close(); spelllist->Hide(ETrue); CFepCtrlDropdownList* candlist = static_cast( iOwner->LayoutContext()->Control(ECtrlIdStdCandsList)); - candlist->ResetAndClear(CFepCtrlDropdownList::EListExpandable); iOwner->DataMgr()->ClearChnCandidates(EItutCandidates); candlist->Hide(ETrue); iOwner->DataMgr()->PtiEngine()->ClearCurrentWord(); // Hide ICF, Backspace, Arrow contrls when exit to avoid flick - iOwner->LayoutContext()->Control(ECtrlIdICF)->Hide( ETrue ); - iOwner->LayoutContext()->Control(ECtrlIdBackspace)->Hide(ETrue); - iOwner->LayoutContext()->ShowArrowBtn( 0 ); //show indicator - iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(EFalse); iOwner->DataMgr()->PtiEngine()->ClearCurrentWord(); @@ -289,23 +284,29 @@ // consume star key at pinyin composition state case EEventRawKeyDownEvent: { - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); - - if (key->iScanCode == EStdKeyNkpAsterisk) - { - HandleKeyL(ECmdPenInputFingerKeyPress, EPtiKeyStar); - return ETrue; - } + if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent()) + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + + if (key->iScanCode == EStdKeyNkpAsterisk) + { + HandleKeyL(ECmdPenInputFingerKeyPress, EPtiKeyStar); + return ETrue; + } + } } break; case EEventRawKeyUpEvent: { - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); - - if (key->iScanCode == EStdKeyNkpAsterisk) - { - return ETrue; - } + if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent()) + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + + if (key->iScanCode == EStdKeyNkpAsterisk) + { + return ETrue; + } + } } break; default: diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/src/peninputitutchnuistatepredict.cpp --- a/textinput/peninputgenericitut/src/peninputitutchnuistatepredict.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/src/peninputitutchnuistatepredict.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -120,15 +120,6 @@ MItutPropertySubscriber::EItutPropertyCandidateListResourceId, R_AKN_FEP_NORMAL_CAND_DROP_DOWN_LIST); - - //hide navi button - iOwner->LayoutContext()->ShowArrowBtn(0); - - //hide indicator - iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(ETrue); - // Show ICF, Backspace after position changed to avoid flick - iOwner->LayoutContext()->Control(ECtrlIdICF)->Hide( EFalse ); - iOwner->LayoutContext()->Control(ECtrlIdBackspace)->Hide( EFalse ); } void CChnItutUiStatePredict::OnExit() @@ -317,42 +308,49 @@ break; case EEventRawKeyDownEvent: { - TInt immode = iOwner->DataMgr()->InputMode(); - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); - if ( ( immode == EPinyin && - ( key->iScanCode == EPtiKey0 || key->iScanCode == EPtiKey1 || key->iScanCode == EPtiKeyStar ) ) || - ( immode == EStroke && - ( key->iScanCode == EPtiKeyStar || key->iScanCode == EPtiKey0 || (key->iScanCode >= EPtiKey7 && key->iScanCode <= EPtiKey9 ))) || - ( immode == EZhuyin && key->iScanCode == EPtiKeyStar) || - ( key->iScanCode == EStdKeyBackspace)) - { - // For those special keys, simulate down key immedidately. - // to ensure to simulate down key event before up key event - iOwner->UiManager()->SimulateImmeRawEvent( key->iScanCode, TRawEvent::EKeyDown ); - iOwner->UiManager()->SetLastRawKeyDown( key->iScanCode, ETrue, aCtrl ); - return ETrue; - } + + if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent()) + { + TInt immode = iOwner->DataMgr()->InputMode(); + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + if ( ( immode == EPinyin && + ( key->iScanCode == EPtiKey0 || key->iScanCode == EPtiKey1 || key->iScanCode == EPtiKeyStar ) ) || + ( immode == EStroke && + ( key->iScanCode == EPtiKeyStar || key->iScanCode == EPtiKey0 || (key->iScanCode >= EPtiKey7 && key->iScanCode <= EPtiKey9 ))) || + ( immode == EZhuyin && key->iScanCode == EPtiKeyStar) || + ( key->iScanCode == EStdKeyBackspace)) + { + // For those special keys, simulate down key immedidately. + // to ensure to simulate down key event before up key event + iOwner->UiManager()->SimulateImmeRawEvent( key->iScanCode, TRawEvent::EKeyDown ); + iOwner->UiManager()->SetLastRawKeyDown( key->iScanCode, ETrue, aCtrl ); + return ETrue; + } + } } break; case EEventRawKeyUpEvent: { - TInt immode = iOwner->DataMgr()->InputMode(); - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); - if ( ( immode == EPinyin && - ( key->iScanCode == EPtiKey0 || key->iScanCode == EPtiKey1 || key->iScanCode == EPtiKeyStar ) ) || - ( immode == EStroke && - ( key->iScanCode == EPtiKeyStar || key->iScanCode == EPtiKey0 || (key->iScanCode >= EPtiKey7 && key->iScanCode <= EPtiKey9 ))) || - ( immode == EZhuyin && key->iScanCode == EPtiKeyStar) || - ( key->iScanCode == EStdKeyBackspace)) - { - // For those special keys, simulate up key events immediately before changing state. - // The action can avoid up key event being delayed by running changing state, - // otherwise, short press will be thought as long press by window server. - iOwner->UiManager()->SimulateImmeRawEvent( key->iScanCode, TRawEvent::EKeyUp ); - iOwner->UiManager()->SetLastRawKeyDown( key->iScanCode, EFalse, aCtrl ); - iOwner->SetCurrentStateL( CGenericItutUiMgrBase::EStateStandby ); - return ETrue; - } + if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent()) + { + TInt immode = iOwner->DataMgr()->InputMode(); + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + if ( ( immode == EPinyin && + ( key->iScanCode == EPtiKey0 || key->iScanCode == EPtiKey1 || key->iScanCode == EPtiKeyStar ) ) || + ( immode == EStroke && + ( key->iScanCode == EPtiKeyStar || key->iScanCode == EPtiKey0 || (key->iScanCode >= EPtiKey7 && key->iScanCode <= EPtiKey9 ))) || + ( immode == EZhuyin && key->iScanCode == EPtiKeyStar) || + ( key->iScanCode == EStdKeyBackspace)) + { + // For those special keys, simulate up key events immediately before changing state. + // The action can avoid up key event being delayed by running changing state, + // otherwise, short press will be thought as long press by window server. + iOwner->UiManager()->SimulateImmeRawEvent( key->iScanCode, TRawEvent::EKeyUp ); + iOwner->UiManager()->SetLastRawKeyDown( key->iScanCode, EFalse, aCtrl ); + iOwner->SetCurrentStateL( CGenericItutUiMgrBase::EStateStandby ); + return ETrue; + } + } } break; default: diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/src/peninputitutchnuistatestrokezhuyincomposition.cpp --- a/textinput/peninputgenericitut/src/peninputitutchnuistatestrokezhuyincomposition.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/src/peninputitutchnuistatestrokezhuyincomposition.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -29,6 +29,7 @@ #include "peninputgenericitutdatamgr.h" #include "peninputgenericitutlayoutcontext.h" #include "peninputgenericitutconverter.h" +#include "peninputgenericitutwindowmanager.h" CChnItutUiStateStrokeZhuyinComposition* CChnItutUiStateStrokeZhuyinComposition::NewL( CGenericItutUiMgrBase* aOwner) @@ -116,21 +117,12 @@ // hide dropdownlist & reset its status CFepCtrlDropdownList* candlist = static_cast(iOwner->LayoutContext()->Control(ECtrlIdStdCandsList)); - candlist->ResetAndClear(CFepCtrlDropdownList::EListExpandable); iOwner->DataMgr()->ClearChnCandidates(EItutCandidates); candlist->Hide(ETrue); CFepInputContextField* spellctrl = static_cast(iOwner->LayoutContext()->Control(ECtrlIdSpellICF)); - spellctrl->Hide(ETrue); - - //show indicator - iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(EFalse); - // Hide ICF, Backspace, Arrow contrls when exit to avoid flick - iOwner->LayoutContext()->Control(ECtrlIdICF)->Hide( ETrue ); - iOwner->LayoutContext()->Control(ECtrlIdBackspace)->Hide(ETrue); - iOwner->LayoutContext()->ShowArrowBtn(0); iOwner->DataMgr()->PtiEngine()->ClearCurrentWord(); } @@ -285,23 +277,29 @@ // consume star key at zhuyin composition state case EEventRawKeyDownEvent: { - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); - - if (key->iScanCode == EStdKeyNkpAsterisk && iOwner->DataMgr()->InputMode() == EZhuyin) - { - HandleKeyL(ECmdPenInputFingerKeyPress, EPtiKeyStar); - return ETrue; - } + if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent()) + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + + if (key->iScanCode == EStdKeyNkpAsterisk && iOwner->DataMgr()->InputMode() == EZhuyin) + { + HandleKeyL(ECmdPenInputFingerKeyPress, EPtiKeyStar); + return ETrue; + } + } } break; case EEventRawKeyUpEvent: { - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); - - if (key->iScanCode == EStdKeyNkpAsterisk && iOwner->DataMgr()->InputMode() == EZhuyin) - { - return ETrue; - } + if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent()) + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + + if (key->iScanCode == EStdKeyNkpAsterisk && iOwner->DataMgr()->InputMode() == EZhuyin) + { + return ETrue; + } + } } break; default: diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/src/peninputitutwesternuistatematchselection.cpp --- a/textinput/peninputgenericitut/src/peninputitutwesternuistatematchselection.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/src/peninputitutwesternuistatematchselection.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -30,6 +30,7 @@ #include "peninputgenericitutdatamgr.h" #include "peninputgenericitutlayoutcontext.h" #include "peninputgenericitutconverter.h" +#include "peninputgenericitutwindowmanager.h" CWesternItutUiStateMatchSelection* CWesternItutUiStateMatchSelection::NewL( CGenericItutUiMgrBase* aOwner) @@ -142,11 +143,21 @@ // if press spell, then enter spell mode, otherwise select an item // note that spell do not belong to iCandlist - itemidx == iCandlist.Count() ? - iOwner->LayoutContext()->UiLayout()->SignalOwner(ESignalEnterSpellMode) : - // according to updated ui spec, if select an item, do not commit it - //ReportItemSelected(ESignalSelectMatchSelectionText, itemidx, ETrue); - ReportItemSelected(ESignalSelectMatchSelectionText, itemidx, ETrue); + if ( itemidx == iCandlist.Count()) + { + + iOwner->UiManager()->StartPreventSCTTimer(); + + + iOwner->LayoutContext()->UiLayout()->SignalOwner(ESignalEnterSpellMode); + } + else + { + // according to updated ui spec, if select an item, do not commit it + //ReportItemSelected(ESignalSelectMatchSelectionText, itemidx, ETrue); + ReportItemSelected(ESignalSelectMatchSelectionText, itemidx, ETrue); + } + return ETrue; } case EEventChoiceSelected: diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/src/peninputitutwesternuistatenonpredict.cpp --- a/textinput/peninputgenericitut/src/peninputitutwesternuistatenonpredict.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/src/peninputitutwesternuistatenonpredict.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -85,60 +85,15 @@ { if (iOwner->DataMgr()->IsChinese()) { - iOwner->LayoutContext()->Control(ECtrlIdSwitch)->Hide(EFalse); - iOwner->LayoutContext()->Control(ECtrlIdOptions)->Hide(EFalse); - iOwner->LayoutContext()->Control(ECtrlIdClose)->Hide(EFalse); - iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(EFalse); - - iOwner->LayoutContext()->ShowArrowBtn(EBtnArrowLeft | EBtnArrowRight - | EBtnArrowUp| EBtnArrowDown); - if(iOwner->LayoutContext()->IsSecretEdtior()) - { - CAknFepCtrlRawKeyButton * leftbtn; - CAknFepCtrlRawKeyButton * rightbtn; - CAknFepCtrlRawKeyButton * upbtn; - CAknFepCtrlRawKeyButton * downbtn; - leftbtn = static_cast - (iOwner->LayoutContext()->Control(ECtrlIdArrowLeft)); - rightbtn = static_cast - (iOwner->LayoutContext()->Control(ECtrlIdArrowRight)); - upbtn = static_cast - (iOwner->LayoutContext()->Control(ECtrlIdArrowUp)); - downbtn = static_cast - (iOwner->LayoutContext()->Control(ECtrlIdArrowDown)); - leftbtn->SetDimmed(ETrue); - rightbtn->SetDimmed(ETrue); - upbtn->SetDimmed(ETrue); - downbtn->SetDimmed(ETrue); - } + AdjustChineseLayout(); + } + else if( iOwner->DataMgr()->IsKorean() ) + { + AdjustKoreanLayout(); } else { - iOwner->LayoutContext()->Control(ECtrlIdOptions)->Hide(EFalse); - iOwner->LayoutContext()->Control(ECtrlIdClose)->Hide(EFalse); - if ( iOwner->LayoutContext()->Control(ECtrlIdSwitch) != NULL ) - { - iOwner->LayoutContext()->Control(ECtrlIdSwitch)->Hide(ETrue); - } - if ( iOwner->LayoutContext()->Control(ECtrlIdIndicator) != NULL ) - { - iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(ETrue); - } - - iIcf->MsgBubbleCtrl()->Hide( EFalse ); - - iOwner->LayoutContext()->ShowArrowBtn(EBtnArrowLeft | EBtnArrowRight); - if(iOwner->LayoutContext()->IsSecretEdtior()) - { - CAknFepCtrlRawKeyButton * leftbtn; - CAknFepCtrlRawKeyButton * rightbtn; - leftbtn = static_cast - (iOwner->LayoutContext()->Control(ECtrlIdArrowLeft)); - rightbtn = static_cast - (iOwner->LayoutContext()->Control(ECtrlIdArrowRight)); - leftbtn->SetDimmed(ETrue); - rightbtn->SetDimmed(ETrue); - } + AdjustWesternLayout(); } } } @@ -227,37 +182,47 @@ { case EEventRawKeyDownEvent: { - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); - - iConsumeLastKeyDown = EFalse; - if (key->iScanCode == EStdKeyNkpAsterisk && - iIcf->InlineStateOn() && iIcf->NomatchState()) - { - iConsumeLastKeyDown = ETrue; - iOwner->UiManager()->SetLastRawKeyDown(key->iScanCode, ETrue, aCtrl); - return ETrue; - } + if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent()) + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + + iConsumeLastKeyDown = EFalse; + if (key->iScanCode == EStdKeyNkpAsterisk && + iIcf->InlineStateOn() && iIcf->NomatchState()) + { + iConsumeLastKeyDown = ETrue; + iOwner->UiManager()->SetLastRawKeyDown(key->iScanCode, ETrue, aCtrl); + return ETrue; + } + } return EFalse; } case EEventRawKeyUpEvent: { - const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent()) + { + const TKeyEvent *key = reinterpret_cast(aEventData.Ptr()); + + if (key->iScanCode == EStdKeyNkpAsterisk) + { + if (iConsumeLastKeyDown) + { - if (key->iScanCode == EStdKeyNkpAsterisk) - { - if (iConsumeLastKeyDown) - { - iOwner->LayoutContext()->UiLayout()->SignalOwner(ESignalEnterSpellMode); - iOwner->UiManager()->SetLastRawKeyDown(key->iScanCode, EFalse, aCtrl); - return ETrue; - } - } + iOwner->UiManager()->StartPreventSCTTimer(); + + iOwner->LayoutContext()->UiLayout()->SignalOwner(ESignalEnterSpellMode); + iOwner->UiManager()->SetLastRawKeyDown(key->iScanCode, EFalse, aCtrl); + return ETrue; + } + } + } return EFalse; } case EEventPointerDownOnNomatch: { + iOwner->UiManager()->StartPreventSCTTimer(); iOwner->LayoutContext()->UiLayout()->SignalOwner(ESignalEnterSpellMode); return ETrue; } @@ -273,4 +238,77 @@ return EFalse; } +void CWesternItutUiStateNonPredict::AdjustKoreanLayout() + { + if(iOwner->LayoutContext()->Control(ECtrlIdIndicator)) + { + iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(EFalse); + } + + if( iOwner->LayoutContext()->Control(ECtrlIdSwitch) ) + { + iOwner->LayoutContext()->Control(ECtrlIdSwitch)->Hide(EFalse); + } + } + +void CWesternItutUiStateNonPredict::AdjustWesternLayout() + { + + iOwner->LayoutContext()->Control(ECtrlIdOptions)->Hide(EFalse); + iOwner->LayoutContext()->Control(ECtrlIdClose)->Hide(EFalse); + if ( iOwner->LayoutContext()->Control(ECtrlIdSwitch) != NULL ) + { + iOwner->LayoutContext()->Control(ECtrlIdSwitch)->Hide(ETrue); + } + if ( iOwner->LayoutContext()->Control(ECtrlIdIndicator) != NULL ) + { + iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(ETrue); + } + + iIcf->MsgBubbleCtrl()->Hide( EFalse ); + + iOwner->LayoutContext()->ShowArrowBtn(EBtnArrowLeft | EBtnArrowRight); + if(iOwner->LayoutContext()->IsSecretEdtior()) + { + CAknFepCtrlRawKeyButton * leftbtn; + CAknFepCtrlRawKeyButton * rightbtn; + leftbtn = static_cast + (iOwner->LayoutContext()->Control(ECtrlIdArrowLeft)); + rightbtn = static_cast + (iOwner->LayoutContext()->Control(ECtrlIdArrowRight)); + leftbtn->SetDimmed(ETrue); + rightbtn->SetDimmed(ETrue); + } + } + +void CWesternItutUiStateNonPredict::AdjustChineseLayout() + { + + iOwner->LayoutContext()->Control(ECtrlIdSwitch)->Hide(EFalse); + iOwner->LayoutContext()->Control(ECtrlIdOptions)->Hide(EFalse); + iOwner->LayoutContext()->Control(ECtrlIdClose)->Hide(EFalse); + iOwner->LayoutContext()->Control(ECtrlIdIndicator)->Hide(EFalse); + + iOwner->LayoutContext()->ShowArrowBtn(EBtnArrowLeft | EBtnArrowRight + | EBtnArrowUp| EBtnArrowDown); + if(iOwner->LayoutContext()->IsSecretEdtior()) + { + CAknFepCtrlRawKeyButton * leftbtn; + CAknFepCtrlRawKeyButton * rightbtn; + CAknFepCtrlRawKeyButton * upbtn; + CAknFepCtrlRawKeyButton * downbtn; + leftbtn = static_cast + (iOwner->LayoutContext()->Control(ECtrlIdArrowLeft)); + rightbtn = static_cast + (iOwner->LayoutContext()->Control(ECtrlIdArrowRight)); + upbtn = static_cast + (iOwner->LayoutContext()->Control(ECtrlIdArrowUp)); + downbtn = static_cast + (iOwner->LayoutContext()->Control(ECtrlIdArrowDown)); + leftbtn->SetDimmed(ETrue); + rightbtn->SetDimmed(ETrue); + upbtn->SetDimmed(ETrue); + downbtn->SetDimmed(ETrue); + } + } // End Of File diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/src/peninputitutwesternuistatespelling.cpp --- a/textinput/peninputgenericitut/src/peninputitutwesternuistatespelling.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/src/peninputitutwesternuistatespelling.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -105,13 +105,6 @@ } //hide bubble in the first place. iICF->HideBubble(); - // Show background of the spell popup window - CAknFepCtrlCommonBgCtrl* bgCtrl = static_cast - (iOwner->LayoutContext()->Control(ECtrlIdBackground) ); - if(bgCtrl) - { - bgCtrl->ShowSubBgItem( 0, ETrue ); - } // update resource id of keypad iOwner->DataMgr()->NotifyChangeControlLayout( @@ -197,13 +190,7 @@ iCancel->Hide(ETrue); iOwner->DataMgr()->SetSpellMode(EFalse); iICF->SetLineSeparatorAfterPrompt(EFalse); - // Hide background of the spell popup window - CAknFepCtrlCommonBgCtrl* bgCtrl = static_cast - (iOwner->LayoutContext()->Control(ECtrlIdBackground) ); - if(bgCtrl) - { - bgCtrl->ShowSubBgItem( 0, EFalse ); - } + iOwner->DataMgr()->SetChineseSpellFlag( EFalse ); } @@ -288,13 +275,16 @@ } TRect rect = TItutDataConverter::AnyToRect(iOwner->DataMgr()->RequestData(ESpellICFRect) ); - //rect.iTl.iY -= 50; - iICF->SetTextMargin ( 2, - 2, - 2, - 2); + + iICF->SetTextMargin ( + iOwner->DataMgr()->iSpellIcfTextLeftMarginForPrtWest, + iOwner->DataMgr()->iSpellIcfTextRightMarginForPrtWest, + iOwner->DataMgr()->iSpellIcfTextTopMarginForPrtWest, + iOwner->DataMgr()->iSpellIcfTextBottomMarginForPrtWest ); - iICF->SetLineSpace( 1 ); + iICF->SetLineSpace( iOwner->DataMgr()->iSpellIcfTextLineSpaceMarginForPrtWest ); + + if ( iOwner->DataMgr()->IsPortraitWest() && (!iOwner->DataMgr()->IsChineseSpellMode())) { diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericitut/srcdata/peninputgeneralitutnew.rss --- a/textinput/peninputgenericitut/srcdata/peninputgeneralitutnew.rss Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericitut/srcdata/peninputgeneralitutnew.rss Wed Apr 14 16:18:34 2010 +0300 @@ -527,5 +527,15 @@ iconimage = EMbmPeninputgenericitutQgn_indi_input_shift; iconimagemsk = EMbmPeninputgenericitutQgn_indi_input_shift_mask; iconimageskinid = EAknsMinorGenericQgnIndiInputShift; - } + } + +RESOURCE AKN_FEP_COLOR_ICON_IMAGE r_itut_keypad_star_icon + { + bmpfile = AKN_FEP_ITUT_BMP; + imgmajorskinid = EAknsMajorGeneric; + + iconimage = EMbmPeninputgenericitutQgn_indi_feb_asterisk; + iconimagemsk = EMbmPeninputgenericitutQgn_indi_feb_asterisk_mask; + iconimageskinid = EAknsMinorGenericQgnIndiInputShift; + } // End Of File diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp --- a/textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -1517,7 +1517,7 @@ TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0; for( TInt j = 0; j < KKeypadLayout[0][0]; j++) { - TRect bound = rectXBorder; + TRect bound = rectXPane; bound.Move( j * rectXPane.Width(), i * rectXPane.Height() ); bound.Move( indent, 0 ); @@ -1637,7 +1637,7 @@ TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0; for( TInt j = 0; j < KKeypadLayout[1][0]; j++) { - TRect bound = rectXBorder; + TRect bound = rectXPane; bound.Move( j * rectXPane.Width(), i * rectXPane.Height() ); bound.Move( indent, 0 ); @@ -1741,7 +1741,7 @@ TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0; for( TInt j = 0; j < KKeypadLayout[2][0]; j++) { - TRect bound = rectXBorder; + TRect bound = rectXPane; bound.Move( j * rectXPane.Width(), i * rectXPane.Height() ); bound.Move( indent, 0 ); diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputsplititut/group/iconlist.txt --- a/textinput/peninputsplititut/group/iconlist.txt Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputsplititut/group/iconlist.txt Wed Apr 14 16:18:34 2010 +0300 @@ -47,3 +47,4 @@ -c8,8 qgn_indi_input_backspace.svg -c8,8 qgn_indi_input_shift.svg -c8,8 qgn_indi_input_backspace1.svg +-c8,8 qgn_indi_feb_asterisk.svg diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputsplititut/inc/peninputsplititutdatamgr.h --- a/textinput/peninputsplititut/inc/peninputsplititutdatamgr.h Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputsplititut/inc/peninputsplititutdatamgr.h Wed Apr 14 16:18:34 2010 +0300 @@ -354,6 +354,7 @@ inline TBool IsNumericOnly() const; TRect iShiftIconRect; + TRect iStarIconRect; private: /** @@ -489,6 +490,7 @@ TRgb iCandsTextColor; */ + TAknTextLineLayout iVkBigNumTextForPrtWest; TAknTextLineLayout iVkAlphaText1; TAknTextLineLayout iVkAlphaText2; TAknTextLineLayout iVkAlphaText3; diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputsplititut/src/peninputsplititutdatamgr.cpp --- a/textinput/peninputsplititut/src/peninputsplititutdatamgr.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputsplititut/src/peninputsplititutdatamgr.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -149,12 +149,10 @@ void CSplitItutDataMgr::ReadLafInfo() { // Screen - TRect rect, rectcn; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, rect); + TRect rect; + rect = AknLayoutScalable_Avkon::application_window(0).LayoutLine().Rect(); iScreenSize = rect.Size(); - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EApplicationWindow, rect); - // finger Layout TAknWindowLineLayout splitwnd, splitpane; TAknLayoutRect spliwndtrect, splitpanerect; @@ -212,17 +210,30 @@ TAknLayoutRect shiftIconRect; shiftIconRect.LayoutRect( keyrect, shiftIcon ); iShiftIconRect = shiftIconRect.Rect(); - } + } + + // read star icon rect + if( i == 3 && j == 2 ) + { + TAknWindowLineLayout starIcon = AknLayoutScalable_Avkon:: + cell_ituss_key_pane_g2( 0 ).LayoutLine(); + TAknLayoutRect starIconRect; + starIconRect.LayoutRect( keyrect, starIcon ); + iStarIconRect = starIconRect.Rect(); + } + } } - iVkNumText = AknLayoutScalable_Avkon::cell_ituss_key_t1(0).LayoutLine(); + iVkBigNumTextForPrtWest = AknLayoutScalable_Avkon::cell_ituss_key_t1(4).LayoutLine(); + + iVkNumText = AknLayoutScalable_Avkon::cell_ituss_key_t1(1).LayoutLine(); // Key text row 1 - iVkAlphaText1 = AknLayoutScalable_Avkon::cell_ituss_key_t2(0).LayoutLine(); - iVkAlphaText3 = AknLayoutScalable_Avkon::cell_ituss_key_t4(0).LayoutLine(); + iVkAlphaText1 = AknLayoutScalable_Avkon::cell_ituss_key_t2(1).LayoutLine(); + iVkAlphaText3 = AknLayoutScalable_Avkon::cell_ituss_key_t4(1).LayoutLine(); // Key text row 2 - iVkAlphaText2 = AknLayoutScalable_Avkon::cell_ituss_key_t3(0).LayoutLine(); + iVkAlphaText2 = AknLayoutScalable_Avkon::cell_ituss_key_t3(1).LayoutLine(); // close button TAknWindowLineLayout funcbtn, funcbtnbg, funcbtninner; @@ -294,32 +305,17 @@ iBubbleFont = const_cast(previewWndText.Font()); // for spell window - // OK and Cancel button - TAknWindowLineLayout spellwnd, softkeypane, okkeypane, cancelkeypane ; - TAknLayoutRect spellwndtrect, softkeypanerect, okkeyRect, cancelkeyRect ; + TAknWindowLineLayout spellwnd; + TAknLayoutRect spellwndtrect; spellwnd = AknLayoutScalable_Avkon::popup_fep_ituss_window(1).LayoutLine(); spellwndtrect.LayoutRect(rect, spellwnd); - softkeypane = AknLayoutScalable_Avkon::ituss_sks_pane().LayoutLine(); - softkeypanerect.LayoutRect(spellwndtrect.Rect(), softkeypane); - - okkeypane = AknLayoutScalable_Avkon::ituss_sks_pane_g1().LayoutLine(); - okkeyRect.LayoutRect(softkeypanerect.Rect(), okkeypane); - iOkRect = okkeyRect.Rect(); - - iSpellBtnTextFormat = AknLayoutScalable_Avkon::ituss_sks_pane_t1().LayoutLine(); - iSpellBtnTextFormat.ir = 7; - - cancelkeypane = AknLayoutScalable_Avkon::ituss_sks_pane_g2().LayoutLine(); - cancelkeyRect.LayoutRect(softkeypanerect.Rect(), cancelkeypane); - iCancelRect = cancelkeyRect.Rect(); - // icf in spell mode - TAknWindowLineLayout icfpane, querypane, focuspane, backkeyInnerpane, backkeypane, - middleInnerBtn; - TAknLayoutRect icfpaneRect, querypaneRect, focuspaneRect, backInnerRect, backkeyRect, - middleButton, middleInnerRect; + TAknWindowLineLayout icfpane, querypane, focuspane, + bottomInnerBtn, middleInnerBtn, middleBtn; + TAknLayoutRect icfpaneRect, querypaneRect, focuspaneRect, + bottomButton, bottomInnerRect, middleBtnRect, okBtnRect, cancelBtnRect; icfpane = AknLayoutScalable_Avkon::popup_fep_vtchi_icf_pane(1).LayoutLine(); icfpaneRect.LayoutRect(rect, icfpane); @@ -331,54 +327,73 @@ focuspaneRect.LayoutRect(querypaneRect.Rect(), focuspane); iSpellICFRect = focuspaneRect.Rect(); + // Middle pane TRect middleButtonPaneRect = spellwndtrect.Rect(); - middleButtonPaneRect.Move( 5, 3 ); + middleButtonPaneRect.Move( 5, 2 ); + + middleBtn = AknLayoutScalable_Avkon::cell_ituss_key_pane(3).LayoutLine(); + middleBtnRect.LayoutRect( splitpanerect.Rect(), middleBtn ); + middleInnerBtn = AknLayoutScalable_Avkon::bg_cell_ituss_key_g1(5).LayoutLine(); + + TRect cellMiddleRect; + cellMiddleRect.iTl = middleButtonPaneRect.iTl; + cellMiddleRect.SetHeight( middleBtnRect.Rect().Height()); + cellMiddleRect.SetWidth( middleBtnRect.Rect().Width()); + // OK button + okBtnRect.LayoutRect( cellMiddleRect, middleInnerBtn ); + iOkRect = okBtnRect.Rect(); + + // Cancel button + cellMiddleRect.Move( middleBtnRect.Rect().Width(), 0 ); + + cancelBtnRect.LayoutRect( cellMiddleRect, middleInnerBtn ); + iCancelRect = cancelBtnRect.Rect(); + + iSpellBtnTextFormat = AknLayoutScalable_Avkon::ituss_sks_pane_t1().LayoutLine(); + iSpellBtnTextFormat.ir = 7; + + // Bottom pane TRect cellSpellRect; - cellSpellRect.iTl = middleButtonPaneRect.iTl; + cellSpellRect.iTl.iX = middleButtonPaneRect.iTl.iX; + cellSpellRect.iTl.iY = middleButtonPaneRect.iTl.iY + + itucellrect.Rect().Height() * 5 + 10; cellSpellRect.SetHeight( itucellrect.Rect().Height()); cellSpellRect.SetWidth( itucellrect.Rect().Width()); // Left - middleButton.LayoutRect( cellSpellRect, ituinnercell ); - iSpellArrowLeftRect = middleButton.Rect(); + bottomButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellArrowLeftRect = bottomButton.Rect(); - middleInnerBtn = AknLayoutScalable_Avkon::cell_ituss_key_pane_g1(2).LayoutLine(); - middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); - iSpellArrowLeftRectInner = middleInnerRect.Rect(); + bottomInnerBtn = AknLayoutScalable_Avkon::cell_ituss_key_pane_g1(2).LayoutLine(); + bottomInnerRect.LayoutRect( bottomButton.Rect(), bottomInnerBtn ); + iSpellArrowLeftRectInner = bottomInnerRect.Rect(); // Right cellSpellRect.Move( itucellrect.Rect().Width(), 0 ); - middleButton.LayoutRect( cellSpellRect, ituinnercell ); - iSpellArrowRightRect = middleButton.Rect(); - - middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); - iSpellArrowRightRectInner = middleInnerRect.Rect(); - - - // backspace in spell mode + bottomButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellArrowRightRect = bottomButton.Rect(); + bottomInnerRect.LayoutRect( bottomButton.Rect(), bottomInnerBtn ); + iSpellArrowRightRectInner = bottomInnerRect.Rect(); + + // backspace in spell mode cellSpellRect.Move( itucellrect.Rect().Width(), 0 ); - middleButton.LayoutRect( cellSpellRect, ituinnercell ); - iSpellBackSpcace = middleButton.Rect(); + bottomButton.LayoutRect( cellSpellRect, ituinnercell ); + iSpellBackSpcace = bottomButton.Rect(); - middleInnerRect.LayoutRect( middleButton.Rect(), middleInnerBtn ); - iSpellBackSpcaceInner = middleInnerRect.Rect(); - - + bottomInnerRect.LayoutRect( bottomButton.Rect(), bottomInnerBtn ); + iSpellBackSpcaceInner = bottomInnerRect.Rect(); // icf indicator TAknWindowLineLayout icfIndiPaneWithoutText, indiIcon, indiText; TAknLayoutRect icfIndiPaneRectWithoutText, indiIconRect, indiTextRect; TAknTextLineLayout indiTextLayout; - - icfIndiPaneWithoutText = AknLayoutScalable_Avkon::icf_edit_indi_pane(0).LayoutLine(); icfIndiPaneRectWithoutText.LayoutRect(icfpaneRect.Rect(), icfIndiPaneWithoutText); iIndiPaneRectWithoutTextForPrtWest = icfIndiPaneRectWithoutText.Rect(); - iIndiIconRectWithoutTextForPrtWest = TRect( 0, 0, 60, 20 ); indiTextLayout = AknLayoutScalable_Avkon::icf_edit_indi_pane_t1(0).LayoutLine(); @@ -581,7 +596,14 @@ return &iKeypadCellRects; // return IsChinese() ? &iKeypadCellRectsCn : &iKeypadCellRects; case EKeypadLeftTextLine: - return &iVkNumText; + if ( iInputMode == ENumber || iInputMode == ENativeNumber ) + { + return &iVkBigNumTextForPrtWest; + } + else + { + return &iVkNumText; + } case EKeypadRightTextLine1: return &iVkAlphaText1; case EKeypadRightTextLine2: diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputsplititut/src/peninputsplititutwindow.cpp --- a/textinput/peninputsplititut/src/peninputsplititutwindow.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputsplititut/src/peninputsplititutwindow.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -187,6 +187,11 @@ shiftIcon->ResizeL( iDataMgr->iShiftIconRect.Size() ); iStandardItutKp->SetShiftIcon( shiftIcon ); + // read key star icon res + CPenInputColorIcon* starIcon = CPenInputColorIcon::NewL( R_ITUT_KEYPAD_STAR_ICON ); + starIcon->ResizeL( iDataMgr->iStarIconRect.Size() ); + iStandardItutKp->SetStarIcon( starIcon ); + //set key to be 9 piece graphics iStandardItutKp->SetKeySkinId( EKeyBmpNormal, KAknsIIDQsnFrKeypadButtonFrNormal ); iStandardItutKp->SetKeySkinId( EKeyBmpHighlight, KAknsIIDQsnFrKeypadButtonFrPressed ); @@ -1156,6 +1161,10 @@ TRAP_IGNORE(iStandardItutKp->ShiftIcon()->ReConstructL()); TRAP_IGNORE(iStandardItutKp->ShiftIcon()->ResizeL(iDataMgr->iShiftIconRect.Size())); + // reconstruct star icon when skin changed + TRAP_IGNORE(iStandardItutKp->StarIcon()->ReConstructL()); + TRAP_IGNORE(iStandardItutKp->StarIcon()->ResizeL(iDataMgr->iStarIconRect.Size())); + //Skin change will case the reconstuction of the button graphic. //When language is RToL, it should be mirrored again. if( iDataMgr->IsRtoLLanguage() ) diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputsplititut/srcdata/peninputsplititutnew.rss --- a/textinput/peninputsplititut/srcdata/peninputsplititutnew.rss Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputsplititut/srcdata/peninputsplititutnew.rss Wed Apr 14 16:18:34 2010 +0300 @@ -465,5 +465,15 @@ iconimage = EMbmPeninputgenericitutQgn_indi_input_shift; iconimagemsk = EMbmPeninputgenericitutQgn_indi_input_shift_mask; iconimageskinid = EAknsMinorGenericQgnIndiInputShift; - } + } + +RESOURCE AKN_FEP_COLOR_ICON_IMAGE r_itut_keypad_star_icon + { + bmpfile = AKN_FEP_ITUT_BMP; + imgmajorskinid = EAknsMajorGeneric; + + iconimage = EMbmPeninputgenericitutQgn_indi_feb_asterisk; + iconimagemsk = EMbmPeninputgenericitutQgn_indi_feb_asterisk_mask; + iconimageskinid = EAknsMinorGenericQgnIndiInputShift; + } // End Of File diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputsplitqwerty/inc/peninputsplitqwertywindow.h --- a/textinput/peninputsplitqwerty/inc/peninputsplitqwertywindow.h Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputsplitqwerty/inc/peninputsplitqwertywindow.h Wed Apr 14 16:18:34 2010 +0300 @@ -560,7 +560,7 @@ */ void HandleRangeListSelectedL( CFepUiBaseCtrl* aCtrl, const TDesC& aData ); - //todo new rangelist + /** * Get resource ids of range button icon * @@ -572,7 +572,7 @@ */ void GetRangeIconResource( TInt aLangId, TInt& aAlphaRange, TInt& aOtherRange ); - //todo new rangelist + /** * Prepare range list items * diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputsplitqwerty/src/peninputsplitqwertylafdatamgr.cpp --- a/textinput/peninputsplitqwerty/src/peninputsplitqwertylafdatamgr.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputsplitqwerty/src/peninputsplitqwertylafdatamgr.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -329,7 +329,7 @@ keycellRect.LayoutRect( keypaneRect.Rect(), linelayout ); keyText = AknLayoutScalable_Avkon::cell_vkbss_key_t1(v2).LayoutLine(); - keyText.iB += 3; //todo split-view, temp solution + keyText.iB += 3; linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(v2).LayoutLine(); keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout ); @@ -378,7 +378,7 @@ TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0; for ( TInt j = 0; j < aCols; j++ ) { - TRect bound = rectXBorder; + TRect bound = rectXPane; bound.Move( j * rectXPane.Width(), i * rectXPane.Height() ); bound.Move( indent, 0 ); diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputsplitqwerty/src/peninputsplitqwertylayout.cpp --- a/textinput/peninputsplitqwerty/src/peninputsplitqwertylayout.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputsplitqwerty/src/peninputsplitqwertylayout.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -266,10 +266,8 @@ if ( win ) { - //todo split-view FSQ, UpdateLafData() can be removed for optimization? win->UpdateLafData(); - //todo split-view FSQ, temp codes, when to set layout pos? win->UpdateLayoutPosAndSize(); } @@ -299,7 +297,6 @@ if( win ) { - //todo split-view FSQ, temp codes, when to set layout pos? win->UpdateLayoutPosAndSize(); } } diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp --- a/textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -1794,7 +1794,6 @@ UpdateRangeCtrlsL(); } -//todo new rangelist // --------------------------------------------------------------------------- // Get resource ids of range button icon // --------------------------------------------------------------------------- @@ -1848,7 +1847,6 @@ } } -//todo new rangelist // --------------------------------------------------------------------------- // Prepare range list items // --------------------------------------------------------------------------- diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputsplitqwerty/srcdata/peninputssqwin.rss --- a/textinput/peninputsplitqwerty/srcdata/peninputssqwin.rss Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputsplitqwerty/srcdata/peninputssqwin.rss Wed Apr 14 16:18:34 2010 +0300 @@ -914,7 +914,7 @@ disableskinid=EAknsMinorGenericQgnIndiFepButtonCaseCapital; } -//todo new rangelist + RESOURCE PENINPUT_SPLITQWERTY_RANGELABELS r_peninput_layout_vkb_ranges { nativeChar = qtn_tin_vkb_native_characters_range; @@ -923,7 +923,7 @@ latinNumber = qtn_tin_vkb_numbers_symbols; } -//todo new rangelist + //for Cyrillic RESOURCE AKN_FEP_BUTTON_IMAGE r_peninput_layout_vkb_rangectrl_cyrillic_alpha diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputvkbcn/src/peninputvkbcnlafdatamgr.cpp --- a/textinput/peninputvkbcn/src/peninputvkbcnlafdatamgr.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputvkbcn/src/peninputvkbcnlafdatamgr.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -1341,9 +1341,9 @@ TAknWindowLineLayout keypad, cellpane; // Modify begin - TAknWindowLineLayout cellPaneBK; - TAknLayoutRect cellPaneBKRect; - TRect keyBKRect; + //TAknWindowLineLayout cellPaneBK; + //TAknLayoutRect cellPaneBKRect; + //TRect keyBKRect; // Modify end TAknLayoutRect keypadRect, cellpaneRect; @@ -1362,6 +1362,9 @@ dataInfo->iQwtRect = wndRect.Rect(); // keypad keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(0).LayoutLine(); + + keyText.iB -= 3; + dataInfo->iKeypad.iTextLayout = keyText; dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL); //dataInfo->iKeypad.iTxtRect = keyText.TextRect(); @@ -1371,7 +1374,7 @@ dataInfo->iKeypad.iKaypadRect = keypadRect.Rect(); // Modify begin - cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(0, 0, 0).LayoutLine(); + //cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(0, 0, 0).LayoutLine(); // Modify end //iKeypadRect10x3 = keypadRect.Rect(); @@ -1385,10 +1388,11 @@ keyRect.Move( -keypadRect.Rect().iTl.iX, -keypadRect.Rect().iTl.iY ); // Modify begin - cellPaneBKRect.LayoutRect( keyRect, cellPaneBK ); - keyBKRect = cellPaneBKRect.Rect(); - dataInfo->iKeypad.iRects.AppendL( keyBKRect ); + //cellPaneBKRect.LayoutRect( keyRect, cellPaneBK ); + //keyBKRect = cellPaneBKRect.Rect(); + //dataInfo->iKeypad.iRects.AppendL( keyBKRect ); // Modify end + dataInfo->iKeypad.iRects.AppendL( keyRect ); keyTextLayout.LayoutText(keyRect, keyText); dataInfo->iKeypad.iCharRects.AppendL(keyTextLayout.TextRect()); @@ -1434,7 +1438,7 @@ dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL); // Modify begin - cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(1, 0, 0).LayoutLine(); + //cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(1, 0, 0).LayoutLine(); // Modify end for( TInt i = 0; i < KKeypadLayoutCn[1][1]; i++) @@ -1447,10 +1451,12 @@ keyRect.Move( -keypadRect.Rect().iTl.iX, -keypadRect.Rect().iTl.iY ); // Modify begin - cellPaneBKRect.LayoutRect( keyRect, cellPaneBK ); - keyBKRect = cellPaneBKRect.Rect(); - dataInfo->iKeypad.iRects.AppendL( keyBKRect ); + //cellPaneBKRect.LayoutRect( keyRect, cellPaneBK ); + //keyBKRect = cellPaneBKRect.Rect(); + //dataInfo->iKeypad.iRects.AppendL( keyBKRect ); // Modify end + dataInfo->iKeypad.iRects.AppendL( keyRect ); + keyTextLayout.LayoutText(keyRect, keyText); dataInfo->iKeypad.iCharRects.AppendL(keyTextLayout.TextRect()); } @@ -1479,14 +1485,14 @@ dataInfo->iKeypad.iKaypadRect = keypadRect.Rect(); keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(2).LayoutLine(); - // why, you asked? well, the reason is it's turned out this is the better one. - keyText.iB += 3; + + //keyText.iB += 3; dataInfo->iKeypad.iTextLayout = keyText; dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL); // Modify begin - cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(2, 0, 0).LayoutLine(); + //cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(2, 0, 0).LayoutLine(); // Modify end for( TInt i = 0; i < KKeypadLayoutCn[2][1]; i++) @@ -1499,10 +1505,11 @@ keyRect.Move( -keypadRect.Rect().iTl.iX, -keypadRect.Rect().iTl.iY ); // Modify begin - cellPaneBKRect.LayoutRect( keyRect, cellPaneBK ); - keyBKRect = cellPaneBKRect.Rect(); - dataInfo->iKeypad.iRects.AppendL( keyBKRect ); - // Modify end + //cellPaneBKRect.LayoutRect( keyRect, cellPaneBK ); + //keyBKRect = cellPaneBKRect.Rect(); + //dataInfo->iKeypad.iRects.AppendL( keyBKRect ); + // Modify end + dataInfo->iKeypad.iRects.AppendL( keyRect ); keyTextLayout.LayoutText(keyRect, keyText); dataInfo->iKeypad.iCharRects.AppendL(keyTextLayout.TextRect()); @@ -1527,6 +1534,9 @@ dataInfo->iQwtRect = wndRect.Rect(); keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(0).LayoutLine(); + + keyText.iB -= 3; + dataInfo->iKeypad.iTextLayout = keyText; dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL); @@ -1535,7 +1545,7 @@ dataInfo->iKeypad.iKaypadRect = keypadRect.Rect(); // Modify begin - cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(0, 0, 0).LayoutLine(); + //cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(0, 0, 0).LayoutLine(); // Modify end TInt keyHeight = keypadRect.Rect().Height()/3; @@ -1550,10 +1560,11 @@ keyRect.Move( -keypadRect.Rect().iTl.iX, -keypadRect.Rect().iTl.iY + keyHeight*i); // Modify begin - cellPaneBKRect.LayoutRect( keyRect, cellPaneBK ); - keyBKRect = cellPaneBKRect.Rect(); - dataInfo->iKeypad.iRects.AppendL( keyBKRect ); + //cellPaneBKRect.LayoutRect( keyRect, cellPaneBK ); + //keyBKRect = cellPaneBKRect.Rect(); + //dataInfo->iKeypad.iRects.AppendL( keyBKRect ); // Modify end + dataInfo->iKeypad.iRects.AppendL( keyRect ); keyTextLayout.LayoutText(keyRect, keyText); dataInfo->iKeypad.iCharRects.AppendL(keyTextLayout.TextRect()); @@ -1584,6 +1595,9 @@ // keypad keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(0).LayoutLine(); + + keyText.iB -= 3; + dataInfo->iKeypad.iTextLayout = keyText; dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL); @@ -1592,7 +1606,7 @@ dataInfo->iKeypad.iKaypadRect = keypadRect.Rect(); // Modify begin - cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(0, 0, 0).LayoutLine(); + //cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(0, 0, 0).LayoutLine(); // Modify end keyHeight = keypadRect.Rect().Height()/3; @@ -1607,10 +1621,12 @@ keyRect.Move( -keypadRect.Rect().iTl.iX, -keypadRect.Rect().iTl.iY + keyHeight*i); // Modify begin - cellPaneBKRect.LayoutRect( keyRect, cellPaneBK ); - keyBKRect = cellPaneBKRect.Rect(); - dataInfo->iKeypad.iRects.AppendL( keyBKRect ); + //cellPaneBKRect.LayoutRect( keyRect, cellPaneBK ); + //keyBKRect = cellPaneBKRect.Rect(); + //dataInfo->iKeypad.iRects.AppendL( keyBKRect ); // Modify end + dataInfo->iKeypad.iRects.AppendL( keyRect ); + keyTextLayout.LayoutText(keyRect, keyText); dataInfo->iKeypad.iCharRects.AppendL(keyTextLayout.TextRect()); } diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputvkbkr/rom/PeninputVkbKr.iby --- a/textinput/peninputvkbkr/rom/PeninputVkbKr.iby Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/peninputvkbkr/rom/PeninputVkbKr.iby Wed Apr 14 16:18:34 2010 +0300 @@ -22,6 +22,5 @@ data = DATAZ_\RESOURCE_FILES_DIR\apps\PeninputVkbKr.mif RESOURCE_FILES_DIR\apps\PeninputVkbKr.mif data = DATAZ_\RESOURCE_FILES_DIR\plugins\PeninputVkbKrWindowKr.rsc RESOURCE_FILES_DIR\plugins\PeninputVkbKrWindowKr.rsc data = DATAZ_\RESOURCE_FILES_DIR\plugins\PeninputVkbKrWindowConfigInfo_65.rsc RESOURCE_FILES_DIR\plugins\PeninputVkbKrWindowConfigInfo_65.rsc -data=ZSYSTEM\install\PeninputVkbKr_stub.sis System\Install\PeninputVkbKr_stub.sis #endif // __PENINPUTVKBKR_IBY__ diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputvkbkr/sis/PeninputVkbKr_EKA2.pkg --- a/textinput/peninputvkbkr/sis/PeninputVkbKr_EKA2.pkg Wed Mar 31 22:08:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -; -; Copyright (c) 2009 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: -; -; Installation file for PeninputVkbKr dll -; -; This is an auto-generated PKG file by Carbide. -; This file uses variables specific to Carbide builds that will not work -; on command-line builds. If you want to use this generated PKG file from the -; command-line tools you will need to modify the variables with the appropriate -; values: $(EPOCROOT), $(PLATFORM), $(TARGET) - -; -; UID is the dll's UID -; -#{"PeninputVkbKr DLL"},(0xEB339F5E),1,0,0 - - -;Localised Vendor name -%{"Vendor-EN"} - -;Unique Vendor name -:"Vendor" - -"\epoc32\release\ARMV5\urel\PeninputVkbKr.dll"-"!:\Sys\Bin\PeninputVkbKr.dll" -"\epoc32\data\Z\resource\apps\PeninputVkbKr.mif"-"!:\resource\apps\PeninputVkbKr.mif" -"\epoc32\data\Z\resource\plugins\PeninputVkbKrWindowKr.rsc"-"!:\resource\plugins\PeninputVkbKrWindowKr.rsc" -"\epoc32\data\Z\resource\plugins\PeninputVkbKrWindowConfigInfo_65.rsc"-"!:\resource\plugins\PeninputVkbKrWindowConfigInfo_65.rsc" diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputvkbkr/sis/PeninputVkbKr_stub.pkg --- a/textinput/peninputvkbkr/sis/PeninputVkbKr_stub.pkg Wed Mar 31 22:08:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -; -; Copyright (c) 2009 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: -; -; Installation file for PeninputVkbKr dll -; -; This is an auto-generated PKG file by Carbide. -; This file uses variables specific to Carbide builds that will not work -; on command-line builds. If you want to use this generated PKG file from the -; command-line tools you will need to modify the variables with the appropriate -; values: $(EPOCROOT), $(PLATFORM), $(TARGET) - -; -; UID is the dll's UID -; -#{"PeninputVkbKr DLL"},(0xEB339F5E),1,0,0, TYPE=SA - - -;Localised Vendor name -%{"Vendor-EN"} - -;Unique Vendor name -:"Vendor" - -""-"z:\Sys\Bin\PeninputVkbKr.dll" -""-"z:\resource\apps\PeninputVkbKr.mif" -""-"z:\resource\plugins\PeninputVkbKrWindowKr.rsc" -""-"z:\resource\plugins\PeninputVkbKrWindowConfigInfo_65.rsc" diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/peninputvkbkr/sis/PeninputVkbKr_stub.sis Binary file textinput/peninputvkbkr/sis/PeninputVkbKr_stub.sis has changed diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/ptienginev2/inc/PtiEngineImpl.h --- a/textinput/ptienginev2/inc/PtiEngineImpl.h Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/ptienginev2/inc/PtiEngineImpl.h Wed Apr 14 16:18:34 2010 +0300 @@ -223,7 +223,7 @@ RArray& aResult, TBool aUseExtendedSet, TPtiKeyboardType aKeyboardtype = EPtiKeyboardNone); - TPtiKeyboardType ActiveKeyboardTypeL(); + TPtiKeyboardType ActiveKeyboardType() const; TPtiKeyboardType FindFirstAvailableQwertyKeyboardType(TInt aLang) const; TPtiTextCase CaseForMappedCharacter(TChar aCharacter); void RemoveTrailingPunctuations(); diff -r 6defe5d1bd39 -r 4eb1ae11334f textinput/ptienginev2/src/PtiEngineImpl.cpp --- a/textinput/ptienginev2/src/PtiEngineImpl.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/textinput/ptienginev2/src/PtiEngineImpl.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -38,6 +38,7 @@ #include #include #include +#include #include const TInt KDefaultLanguageGran = 5; @@ -1036,9 +1037,8 @@ case EPtiEngineStrokePhraseHalfQwerty: case EPtiEngineStrokePhraseQwerty: { - TPtiKeyboardType keyboardType = EPtiKeyboardNone; - TBool IsStokeKey = EFalse; - TRAP_IGNORE(keyboardType = ActiveKeyboardTypeL()); + TPtiKeyboardType keyboardType = ActiveKeyboardType(); + TBool IsStokeKey = EFalse; if(EPtiKeyboardQwerty4x10 == keyboardType || EPtiKeyboardQwerty3x11 == keyboardType ) { @@ -3259,7 +3259,7 @@ TPtiKeyboardType keyboardType = aKeyboardType; if (keyboardType == EPtiKeyboardNone) { - keyboardType = ActiveKeyboardTypeL(); + keyboardType = ActiveKeyboardType(); if (keyboardType == EPtiKeyboard12Key || keyboardType == EPtiKeyboardNone) @@ -3724,9 +3724,7 @@ } return EPtiKeyboardNone;*/ - TInt keyboardLayout = 0; - - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); + TInt keyboardLayout = ActiveKeyboardType(); if (keyboardLayout <= 0 || keyboardLayout > EPtiKeyboardMaxLayout - 1) @@ -3882,26 +3880,44 @@ // --------------------------------------------------------------------------- -// CPtiEngineImpl::ActiveKeyboardTypeL +// CPtiEngineImpl::ActiveKeyboardType // // --------------------------------------------------------------------------- // -TPtiKeyboardType CPtiEngineImpl::ActiveKeyboardTypeL() +TPtiKeyboardType CPtiEngineImpl::ActiveKeyboardType() const { - // Qwerty Keyboard layout - TInt keyboardLayout = 0; - - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - - if (keyboardLayout <= 0 || - keyboardLayout > EPtiKeyboardMaxLayout - 1) - { - return EPtiKeyboardNone; - } - - return (TPtiKeyboardType)keyboardLayout; + TInt keyboardType = EPtiKeyboardNone; +#ifdef RD_SCALABLE_UI_V2 + // Get physical keyboard type + RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardType ); + + // When active keyboard is virtual keyboard, + // need to get the active virtual keyboard type + // and set keyboardType again. + + // When the default physical keyboard is 0, + // it means that there is no physical keyboard, + // also need to get the active virtual keyboard type. + TInt isVirtualInputActive = 0; + RProperty::Get( KPSUidAknFep, KAknFepTouchInputActive, + isVirtualInputActive ); + if ( isVirtualInputActive > 0 || keyboardType == 0 ) + { + // Active keyboard is virtual keyboard + RProperty::Get( KPSUidAknFep, KAknFepVirtualKeyboardType, + keyboardType ); + } +#else if + // Get physical keyboard type + RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardType ); +#endif + + if ( keyboardType <= 0 || keyboardType >= EPtiKeyboardMaxLayout ) + { + keyboardType = EPtiKeyboardNone; + } + return (TPtiKeyboardType)keyboardType; } - // --------------------------------------------------------------------------- // CPtiEngineImpl::GetNumericModeKeysForQwertyL