diff -r ecbabf52600f -r bd83ceabce89 fep/aknfep/src/AknFepUiInputStateInitialChineseGenericQwerty.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialChineseGenericQwerty.cpp Wed Sep 01 12:23:33 2010 +0100 +++ b/fep/aknfep/src/AknFepUiInputStateInitialChineseGenericQwerty.cpp Tue Sep 14 21:59:06 2010 +0300 @@ -91,6 +91,33 @@ #endif } +TInt TAknFepInputStateInitialChineseGenericQwerty::ToneMark(TInt aKey, TDes& aResult) + { + CPtiEngine* ptiengine = iOwner->PtiEngine(); + TInt number = 0; + aResult.Zero(); + if(ptiengine) + { + TBuf data; + ptiengine->MappingDataForKey((TPtiKey)aKey, data, EPtiCaseLower); + if(data.Length() > 0) + { + for(TInt i = 0; i < data.Length(); i++) + { + if(data[i] == KZhuyinTone2 || data[i] == KZhuyinTone3 || data[i] == KZhuyinTone4 || data[i] == KZhuyinTone5) + { + if(aResult.MaxLength() > i) + { + aResult.Append(data[i]); + number++; + } + } + } + } + } + return number; + } + TBool TAknFepInputStateInitialChineseGenericQwerty::HandleKeyL(TInt aKey, TKeyPressLength aLength) { CPtiEngine* ptiengine = iOwner->PtiEngine(); @@ -124,58 +151,14 @@ && !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) { TBuf<1> ToneMarkBuf; -#ifdef RD_INTELLIGENT_TEXT_INPUT - if( keyboardType == EPtiKeyboardQwerty4x12) - { -#endif - switch(aKey) - { - case EPtiKeyQwerty3: - ToneMarkBuf.Append(KZhuyinTone3); - break; + if(ToneMark(aKey, ToneMarkBuf) > 0) - case EPtiKeyQwerty4: - ToneMarkBuf.Append(KZhuyinTone4); - break; - case EPtiKeyQwerty6: - ToneMarkBuf.Append(KZhuyinTone2); - break; - case EPtiKeyQwerty7: - ToneMarkBuf.Append(KZhuyinTone5); - break; - default: - break; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } - else - if (keyboardType == EPtiKeyboardQwerty4x10 || keyboardType - == EPtiKeyboardQwerty3x11) { - switch (aKey) - { - case EPtiKeyQwertyE: - ToneMarkBuf.Append(KZhuyinTone3); - break; - case EPtiKeyQwertyR: - ToneMarkBuf.Append(KZhuyinTone4); - break; - case EPtiKeyQwertyY: - ToneMarkBuf.Append(KZhuyinTone2); - break; - case EPtiKeyQwertyU: - ToneMarkBuf.Append(KZhuyinTone5); - break; - default: - break; - } - } -#endif MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); fepMan->NewCharacterL(ToneMarkBuf); @@ -186,6 +169,7 @@ iOwner->FepMan()->TryCloseUiL(); } ret = ETrue; + } } else if(iOwner->IsValidChineseInputKeyQwerty(aKey) && !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) && @@ -336,10 +320,29 @@ return response; } +//-------------------------------------------------------------------------- +// The gate to decide whether it is a character is whether it has valid mapping +// If return ETrue, the key will pass to ptiengine. +//-------------------------------------------------------------------------- +// TBool TAknFepInputStateInitialChineseGenericQwerty::IsCharacter(TInt aKey) { TBool response = EFalse; - if (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) + CPtiEngine* ptiengine = iOwner->PtiEngine(); + MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); + TPtiTextCase textCase = EPtiCaseLower; + if (ptiengine && fepMan) + { + TBuf data; + ptiengine->MappingDataForKey((TPtiKey)aKey, data, textCase); + if (data.Length() > 0) + { + response = ETrue; + } + } + + // exception Z might has no mapping but need to put into ptiengine. + if(!response && aKey == EPtiKeyQwertyZ) { response = ETrue; }