--- 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 <e32base.h>
+#include <ptidefs.h>
/**
* 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
--- 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
--- 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 <e32property.h>
+#include <AvkonInternalCRKeys.h>
+#include <AknFepInternalPSKeys.h>
#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
--- 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 <PtiDefs.h>
#include <e32property.h>
#include <AvkonInternalCRKeys.h>
+#include <AknFepInternalPSKeys.h>
#include <AknFepGlobalEnums.h>
#include "AknFepPredictiveSettingDialog.h"
#include <aknnotewrappers.h>
@@ -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)
{
--- 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__
--- 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:
--- 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<HBufC> iCandidateList;
TInt iCandidateIndex;
-
- TFepInputCandidateList iSendList;
+
TFepInputAllCandidates iSendAllList;
TBool iMatchState;
@@ -1056,6 +1055,7 @@
TInt iAlignment;
CConnectAo* iConnectAo;
+ TBool iInSpellMode;
};
class CConnectAo : public CActive
--- 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 <e32base.h>
-
+#include <ptidefs.h>
#include <e32property.h>
#include <cenrepnotifyhandler.h>
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;
--- 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"
--- 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"
Binary file fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_stub.sis has changed
--- 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__
--- 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)
{
--- 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 <eikapp.h>
#include <AknFepGlobalEnums.h>
#include <AknFepInternalCRKeys.h>
+#include <AknFepInternalPSKeys.h>
// 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<TInt>(&icfData));
+ iFepMan.TryPopExactWordInICFL();
}
- if ( send )
- {
- iCurrentPluginInputFepUI->HandleCommandL
- (ECmdPenInputSendEditorTextAndCurPos, reinterpret_cast<TInt>(&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<TInt>(&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<TInt>(&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<TInt>(&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<TInt>( &tooltipTextPtr ) );
+ TPtrC aText = (*candidates)[aSecondaryIdx];
+ iCurrentPluginInputFepUI->HandleCommandL(
+ ECmdPenInputPopupTooltip, reinterpret_cast<TInt>(&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;
}
--- 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<CAknFepSharedDataInterface*>(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;
--- 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
{
--- 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 )
{
--- 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
--- 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<KFepChineseInputModeLength> 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<KFepChineseInputModeLength> 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 ) )
--- 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 <StringLoader.h>
#include <syslangutil.h> // Display UI language
#include <ctsydomainpskeys.h>
-#include <SATDomainPSKeys.h>
+#include <satdomainpskeys.h>
#include <e32property.h>
#ifdef RD_INTELLIGENT_TEXT_INPUT
#include "PredictiveSettingDialog.h"
--- 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 *)
--- 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
--- 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<KFepChineseInputModeLength> 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<KFepChineseInputModeLength> 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)
--- 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;
--- 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
--- 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
--- 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();
}
--- 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)
{
--- 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<CFbsBitGc*>(BitGc());
+ AknPenInputDrawUtils::DrawColorIcon( iKeyboard->StarIcon(),
+ *gc,
+ textLayout.TextRect() );
+ }
else
{
textLayout.DrawText(*BitGc(), iKeyInfo->KeyUnicodes(TVirtualKeyTextPos(i)),
--- 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:
--- 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 <aknfeppeninputenums.h>
#include <PtiHwrRecognizer.h>
#include <e32property.h>
-#include "PtiDefs.h"
+#include <AknFepInternalPSKeys.h>
+#include <PtiDefs.h>
//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
}
--- 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);
}
--- 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
--- 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)
{
--- 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,
--- 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()
--- 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;
};
--- 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<CFont*>(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<CFont*>(
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());
--- 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
--- 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<CGenericItutWindowManager*>( 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<const TKeyEvent*>(aEventData.Ptr());
- SimulateRawEvent(key->iScanCode,TRawEvent::EKeyDown);
- SetLastRawKeyDown(key->iScanCode, ETrue, aCtrl);
+ if ( iAllowHandleRawKeyEvent )
+ {
+ const TKeyEvent *key = reinterpret_cast<const TKeyEvent*>(aEventData.Ptr());
+ SimulateRawEvent(key->iScanCode,TRawEvent::EKeyDown);
+ SetLastRawKeyDown(key->iScanCode, ETrue, aCtrl);
+ }
}
break;
case EEventRawKeyUpEvent:
{
- const TKeyEvent *key = reinterpret_cast<const TKeyEvent*>(aEventData.Ptr());
- SimulateRawEvent(key->iScanCode,TRawEvent::EKeyUp);
- SetLastRawKeyDown(key->iScanCode, EFalse, aCtrl);
+ if ( iAllowHandleRawKeyEvent )
+ {
+ const TKeyEvent *key = reinterpret_cast<const TKeyEvent*>(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
--- 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<CFepCtrlDropdownList*>(
iOwner->LayoutContext()->Control(ECtrlIdSpellCandsList));
- spelllist->ResetAndClear(CFepCtrlDropdownList::EListExpandableRollWithIcon);
- iSpellCands.ResetAndDestroy();
- iSpellCands.Close();
spelllist->Hide(ETrue);
CFepCtrlDropdownList* candlist = static_cast<CFepCtrlDropdownList*>(
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<const TKeyEvent*>(aEventData.Ptr());
-
- if (key->iScanCode == EStdKeyNkpAsterisk)
- {
- HandleKeyL(ECmdPenInputFingerKeyPress, EPtiKeyStar);
- return ETrue;
- }
+ if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent())
+ {
+ const TKeyEvent *key = reinterpret_cast<const TKeyEvent*>(aEventData.Ptr());
+
+ if (key->iScanCode == EStdKeyNkpAsterisk)
+ {
+ HandleKeyL(ECmdPenInputFingerKeyPress, EPtiKeyStar);
+ return ETrue;
+ }
+ }
}
break;
case EEventRawKeyUpEvent:
{
- const TKeyEvent *key = reinterpret_cast<const TKeyEvent*>(aEventData.Ptr());
-
- if (key->iScanCode == EStdKeyNkpAsterisk)
- {
- return ETrue;
- }
+ if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent())
+ {
+ const TKeyEvent *key = reinterpret_cast<const TKeyEvent*>(aEventData.Ptr());
+
+ if (key->iScanCode == EStdKeyNkpAsterisk)
+ {
+ return ETrue;
+ }
+ }
}
break;
default:
--- 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<const TKeyEvent*>(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<const TKeyEvent*>(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<const TKeyEvent*>(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<const TKeyEvent*>(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:
--- 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<CFepCtrlDropdownList*>(iOwner->LayoutContext()->Control(ECtrlIdStdCandsList));
- candlist->ResetAndClear(CFepCtrlDropdownList::EListExpandable);
iOwner->DataMgr()->ClearChnCandidates(EItutCandidates);
candlist->Hide(ETrue);
CFepInputContextField* spellctrl =
static_cast<CFepInputContextField*>(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<const TKeyEvent*>(aEventData.Ptr());
-
- if (key->iScanCode == EStdKeyNkpAsterisk && iOwner->DataMgr()->InputMode() == EZhuyin)
- {
- HandleKeyL(ECmdPenInputFingerKeyPress, EPtiKeyStar);
- return ETrue;
- }
+ if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent())
+ {
+ const TKeyEvent *key = reinterpret_cast<const TKeyEvent*>(aEventData.Ptr());
+
+ if (key->iScanCode == EStdKeyNkpAsterisk && iOwner->DataMgr()->InputMode() == EZhuyin)
+ {
+ HandleKeyL(ECmdPenInputFingerKeyPress, EPtiKeyStar);
+ return ETrue;
+ }
+ }
}
break;
case EEventRawKeyUpEvent:
{
- const TKeyEvent *key = reinterpret_cast<const TKeyEvent*>(aEventData.Ptr());
-
- if (key->iScanCode == EStdKeyNkpAsterisk && iOwner->DataMgr()->InputMode() == EZhuyin)
- {
- return ETrue;
- }
+ if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent())
+ {
+ const TKeyEvent *key = reinterpret_cast<const TKeyEvent*>(aEventData.Ptr());
+
+ if (key->iScanCode == EStdKeyNkpAsterisk && iOwner->DataMgr()->InputMode() == EZhuyin)
+ {
+ return ETrue;
+ }
+ }
}
break;
default:
--- 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:
--- 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<CAknFepCtrlRawKeyButton *>
- (iOwner->LayoutContext()->Control(ECtrlIdArrowLeft));
- rightbtn = static_cast<CAknFepCtrlRawKeyButton *>
- (iOwner->LayoutContext()->Control(ECtrlIdArrowRight));
- upbtn = static_cast<CAknFepCtrlRawKeyButton *>
- (iOwner->LayoutContext()->Control(ECtrlIdArrowUp));
- downbtn = static_cast<CAknFepCtrlRawKeyButton *>
- (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<CAknFepCtrlRawKeyButton *>
- (iOwner->LayoutContext()->Control(ECtrlIdArrowLeft));
- rightbtn = static_cast<CAknFepCtrlRawKeyButton *>
- (iOwner->LayoutContext()->Control(ECtrlIdArrowRight));
- leftbtn->SetDimmed(ETrue);
- rightbtn->SetDimmed(ETrue);
- }
+ AdjustWesternLayout();
}
}
}
@@ -227,37 +182,47 @@
{
case EEventRawKeyDownEvent:
{
- const TKeyEvent *key = reinterpret_cast<const TKeyEvent*>(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<const TKeyEvent*>(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<const TKeyEvent*>(aEventData.Ptr());
+ if ( iOwner->UiManager()->IsAllowHandleRawKeyEvent())
+ {
+ const TKeyEvent *key = reinterpret_cast<const TKeyEvent*>(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<CAknFepCtrlRawKeyButton *>
+ (iOwner->LayoutContext()->Control(ECtrlIdArrowLeft));
+ rightbtn = static_cast<CAknFepCtrlRawKeyButton *>
+ (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<CAknFepCtrlRawKeyButton *>
+ (iOwner->LayoutContext()->Control(ECtrlIdArrowLeft));
+ rightbtn = static_cast<CAknFepCtrlRawKeyButton *>
+ (iOwner->LayoutContext()->Control(ECtrlIdArrowRight));
+ upbtn = static_cast<CAknFepCtrlRawKeyButton *>
+ (iOwner->LayoutContext()->Control(ECtrlIdArrowUp));
+ downbtn = static_cast<CAknFepCtrlRawKeyButton *>
+ (iOwner->LayoutContext()->Control(ECtrlIdArrowDown));
+ leftbtn->SetDimmed(ETrue);
+ rightbtn->SetDimmed(ETrue);
+ upbtn->SetDimmed(ETrue);
+ downbtn->SetDimmed(ETrue);
+ }
+ }
// End Of File
--- 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<CAknFepCtrlCommonBgCtrl*>
- (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<CAknFepCtrlCommonBgCtrl*>
- (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()))
{
--- 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
--- 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 );
--- 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
--- 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;
--- 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<CFont*>(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:
--- 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() )
--- 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
--- 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
*
--- 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 );
--- 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();
}
}
--- 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
// ---------------------------------------------------------------------------
--- 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
--- 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());
}
--- 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__
--- 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"
--- 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"
Binary file textinput/peninputvkbkr/sis/PeninputVkbKr_stub.sis has changed
--- 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<TPtiNumericKeyBinding>& aResult,
TBool aUseExtendedSet,
TPtiKeyboardType aKeyboardtype = EPtiKeyboardNone);
- TPtiKeyboardType ActiveKeyboardTypeL();
+ TPtiKeyboardType ActiveKeyboardType() const;
TPtiKeyboardType FindFirstAvailableQwertyKeyboardType(TInt aLang) const;
TPtiTextCase CaseForMappedCharacter(TChar aCharacter);
void RemoveTrailingPunctuations();
--- 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 <AknUtils.h>
#include <e32property.h>
#include <AknFepInternalCRKeys.h>
+#include <AknFepInternalPSKeys.h>
#include <AvkonInternalCRKeys.h>
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