520 { |
520 { |
521 iFnKeyManager = CAknFepFnKeyManager::NewL( *this,iSharedDataInterface ); |
521 iFnKeyManager = CAknFepFnKeyManager::NewL( *this,iSharedDataInterface ); |
522 } |
522 } |
523 #endif |
523 #endif |
524 iCaseMan = CAknFepCaseManager::NewL(*this); |
524 iCaseMan = CAknFepCaseManager::NewL(*this); |
525 iLangMan = CAknFepLanguageManager::NewL(this, iCaseMan); |
525 iLangMan = CAknFepLanguageManager::NewL( this, iCaseMan, iSharedDataInterface ); |
526 iPtiEngine->ActivateLanguageL(inputLanguage); |
526 iPtiEngine->ActivateLanguageL(inputLanguage); |
527 #ifdef RD_INTELLIGENT_TEXT_INPUT |
527 #ifdef RD_INTELLIGENT_TEXT_INPUT |
528 #ifdef FF_DUAL_LANGUAGE_SUPPORT |
528 #ifdef FF_DUAL_LANGUAGE_SUPPORT |
529 iPtiEngine->SetSecondaryInputL(inputLanguageSecondary); |
529 iPtiEngine->SetSecondaryInputL(inputLanguageSecondary); |
530 #endif //FF_DUAL_LANGUAGE_SUPPORT |
530 #endif //FF_DUAL_LANGUAGE_SUPPORT |
573 iFepFullyConstructed = ETrue; |
573 iFepFullyConstructed = ETrue; |
574 #ifdef RD_INTELLIGENT_TEXT_INPUT |
574 #ifdef RD_INTELLIGENT_TEXT_INPUT |
575 iIsFnKeyMapped = IsFnKeyMappedL(); |
575 iIsFnKeyMapped = IsFnKeyMappedL(); |
576 iKeyboardType = (TPtiKeyboardType)iSharedDataInterface->KeyboardLayout(); |
576 iKeyboardType = (TPtiKeyboardType)iSharedDataInterface->KeyboardLayout(); |
577 #endif |
577 #endif |
|
578 |
|
579 iFnKeypressMonitor = CPeriodic::NewL(CActive::EPriorityStandard); |
578 } |
580 } |
579 |
581 |
580 CAknFepManager::~CAknFepManager() |
582 CAknFepManager::~CAknFepManager() |
581 { |
583 { |
582 #ifdef RD_PF_SEC_APPARC |
584 #ifdef RD_PF_SEC_APPARC |
3124 /* if (EPtiKeyboardQwerty4x10 == KeyboardLayout()) |
3128 /* if (EPtiKeyboardQwerty4x10 == KeyboardLayout()) |
3125 { |
3129 { |
3126 FepUI()->HandleKeyL(EKeyLeftCtrl, EShortKeyPress); |
3130 FepUI()->HandleKeyL(EKeyLeftCtrl, EShortKeyPress); |
3127 }*/ |
3131 }*/ |
3128 |
3132 |
|
3133 //The default value of response is EKeyWasConsumed. So in some case, fep don¡¯t |
|
3134 //do anything, but it return Consumed. |
|
3135 //This make app miss the event EEventKeyUp. |
|
3136 //As per the logic of the function, the combine about ctrl key including: |
|
3137 // Ctrl key + C; Ctrl key + V; Ctrl + X |
|
3138 // Ctrl key + Shift key |
|
3139 // Ctrl key + space |
|
3140 // Ctrl key + Function key |
|
3141 //In above cases, it return EKeyWasConsumed, it is correct. |
|
3142 //The function for Ctrl Key as pressing the only one key ctrl at one time is to |
|
3143 //do something if the flag EFlagQwertyShiftMode is set |
|
3144 //In this case, it return EKeyWasConsumed, it is correct. |
|
3145 //In other case, it should return EKeyWasNotConsumed |
|
3146 if( ( aKeyEvent.iScanCode == EStdKeyRightCtrl || aKeyEvent.iScanCode==EStdKeyLeftCtrl ) |
|
3147 && !IsFlagSet(EFlagQwertyShiftMode) ) |
|
3148 { |
|
3149 response = EKeyWasNotConsumed; |
|
3150 } |
3129 |
3151 |
3130 return response; |
3152 return response; |
3131 } |
3153 } |
3132 |
3154 |
3133 TBool CAknFepManager::HandleQwertyKeyEventL(const TKeyEvent& aKeyEvent, TKeyResponse& aResponse) |
3155 TBool CAknFepManager::HandleQwertyKeyEventL(const TKeyEvent& aKeyEvent, TKeyResponse& aResponse) |
3599 delete iCandidatePopup; |
3621 delete iCandidatePopup; |
3600 iCandidatePopup = NULL; |
3622 iCandidatePopup = NULL; |
3601 } |
3623 } |
3602 // Delete anu UI components launched by Fep. |
3624 // Delete anu UI components launched by Fep. |
3603 iUiInterface->DeleteDialogs(); |
3625 iUiInterface->DeleteDialogs(); |
|
3626 } |
|
3627 |
|
3628 if ( iFepPluginManager ) |
|
3629 { |
|
3630 // Check whether the destroyed editor is the editor that stored in fep |
|
3631 // according to the editor state |
|
3632 if ( aAknEdwinState == iFepPluginManager->EdwinState()) |
|
3633 { |
|
3634 // Set the editor pointer to NULL to avoid wild pointer exist |
|
3635 iFepPluginManager->ClearDestroyedEditorPointer(); |
|
3636 } |
3604 } |
3637 } |
3605 } |
3638 } |
3606 if ( IsFepAwareTextEditor() ) |
3639 if ( IsFepAwareTextEditor() ) |
3607 { |
3640 { |
3608 CAknEdwinState* editorState = EditorState(); |
3641 CAknEdwinState* editorState = EditorState(); |
4620 SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd); |
4653 SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd); |
4621 #ifdef RD_SCALABLE_UI_V2 |
4654 #ifdef RD_SCALABLE_UI_V2 |
4622 if (iFepPluginManager && |
4655 if (iFepPluginManager && |
4623 (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || |
4656 (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || |
4624 iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || |
4657 iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || |
4625 iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)) |
4658 iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr || |
|
4659 iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ ) ) |
4626 { |
4660 { |
4627 iFepPluginManager->SetMenuState(); |
4661 iFepPluginManager->SetMenuState(); |
4628 } |
4662 } |
4629 |
4663 |
4630 #endif //RD_SCALABLE_UI_V2 |
4664 #endif //RD_SCALABLE_UI_V2 |
4804 { |
4838 { |
4805 #ifdef RD_SCALABLE_UI_V2 |
4839 #ifdef RD_SCALABLE_UI_V2 |
4806 if (iFepPluginManager && |
4840 if (iFepPluginManager && |
4807 (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || |
4841 (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || |
4808 iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || |
4842 iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || |
4809 iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)) |
4843 iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr || |
|
4844 iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ ) ) |
4810 { |
4845 { |
4811 iFepPluginManager->SetMenuState(EFalse); |
4846 iFepPluginManager->SetMenuState(EFalse); |
4812 } |
4847 } |
4813 |
4848 |
4814 #endif //RD_SCALABLE_UI_V2 |
4849 #endif //RD_SCALABLE_UI_V2 |
5516 { |
5551 { |
5517 posToInsertItem = numOfMenuItems; |
5552 posToInsertItem = numOfMenuItems; |
5518 } |
5553 } |
5519 } |
5554 } |
5520 TInt inputOptionsPos = 0; |
5555 TInt inputOptionsPos = 0; |
5521 if ( aMenuPane->MenuItemExists( EEikCmdEditPaste, inputOptionsPos ) ) |
5556 TInt pastePos = 0; |
5522 { |
5557 |
5523 inputOptionsPos++; |
5558 if ( aMenuPane->MenuItemExists( EEikCmdEditPaste, pastePos ) ) |
5524 } |
5559 { |
|
5560 CEikMenuPaneItem::SData& itemData = aMenuPane->GetMenuPane()->ItemDataByIndexL( pastePos ); |
|
5561 if ( !( itemData.iFlags & EEikMenuItemDimmed ) ) |
|
5562 { |
|
5563 inputOptionsPos = pastePos + 1; |
|
5564 } |
|
5565 } |
|
5566 |
5525 //Now we have the position at which we need to insert the menu item. |
5567 //Now we have the position at which we need to insert the menu item. |
5526 if ( |
5568 if ( |
5527 #ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ |
5569 #ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ |
5528 iQwertyInputMode && |
5570 iQwertyInputMode && |
5529 #endif |
5571 #endif |
6381 { |
6423 { |
6382 aMenuPane->SetItemDimmed(EAknCmdEditModeAlpha, EFalse); |
6424 aMenuPane->SetItemDimmed(EAknCmdEditModeAlpha, EFalse); |
6383 aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); |
6425 aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); |
6384 aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); |
6426 aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); |
6385 aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); |
6427 aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); |
6386 if( iMode == EHangul || inputLanguage == ELangKorean) |
|
6387 { |
|
6388 TInt index; |
|
6389 if ( aMenuPane->MenuItemExists( EAknCmdEditModeKorean, index ) ) |
|
6390 { |
|
6391 aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, EFalse); |
|
6392 } |
|
6393 } |
|
6394 } |
6428 } |
6395 |
6429 |
6396 if ( IsModePermitted(ENumber) ) |
6430 if ( IsModePermitted(ENumber) ) |
6397 { |
6431 { |
6398 if (( iMode != ENumber || |
6432 if (( iMode != ENumber || |
8765 // Predictive QWERTY (XT9) changes <---- |
8800 // Predictive QWERTY (XT9) changes <---- |
8766 #endif //RD_INTELLIGENT_TEXT_INPUT |
8801 #endif //RD_INTELLIGENT_TEXT_INPUT |
8767 void CAknFepManager::LaunchInsertWordQueryL(const TDesC& aInitialText, |
8802 void CAknFepManager::LaunchInsertWordQueryL(const TDesC& aInitialText, |
8768 TCursorSelection aTextSpanToReplace) |
8803 TCursorSelection aTextSpanToReplace) |
8769 { |
8804 { |
8770 TInt recourceId; |
8805 TInt recourceId = R_AVKON_INSERT_WORD_QUERY; |
8771 if(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen) |
|
8772 { |
|
8773 recourceId = R_AVKON_INSERT_WORD_FS_QUERY; |
|
8774 } |
|
8775 else |
|
8776 { |
|
8777 recourceId = R_AVKON_INSERT_WORD_QUERY; |
|
8778 } |
|
8779 LaunchFepQueryDialogL(recourceId, aInitialText, aTextSpanToReplace); |
8806 LaunchFepQueryDialogL(recourceId, aInitialText, aTextSpanToReplace); |
8780 } |
8807 } |
8781 |
8808 |
8782 void CAknFepManager::LaunchEditWordQueryL() |
8809 void CAknFepManager::LaunchEditWordQueryL() |
8783 { |
8810 { |
8791 #endif //RD_INTELLIGENT_TEXT_INPUT |
8818 #endif //RD_INTELLIGENT_TEXT_INPUT |
8792 iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(newText, |
8819 iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(newText, |
8793 iUncommittedText.iAnchorPos, |
8820 iUncommittedText.iAnchorPos, |
8794 iUncommittedText.Length()); |
8821 iUncommittedText.Length()); |
8795 |
8822 |
8796 TInt recourceId; |
8823 TInt recourceId = R_AVKON_INSERT_WORD_QUERY; |
8797 if(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen) |
|
8798 { |
|
8799 recourceId = R_AVKON_INSERT_WORD_FS_QUERY; |
|
8800 } |
|
8801 else |
|
8802 { |
|
8803 recourceId = R_AVKON_INSERT_WORD_QUERY; |
|
8804 } |
|
8805 LaunchFepQueryDialogL(recourceId, newText, iUncommittedText); |
8824 LaunchFepQueryDialogL(recourceId, newText, iUncommittedText); |
8806 } |
8825 } |
8807 |
8826 |
8808 void CAknFepManager::LaunchFepQueryDialogL(TInt aResourceId, const TDesC& aInitialText, |
8827 void CAknFepManager::LaunchFepQueryDialogL(TInt aResourceId, const TDesC& aInitialText, |
8809 TCursorSelection aTextSpanToReplace) |
8828 TCursorSelection aTextSpanToReplace) |
10358 return 0; |
10378 return 0; |
10359 } |
10379 } |
10360 |
10380 |
10361 //maxLength of 0 means the editor has no limit |
10381 //maxLength of 0 means the editor has no limit |
10362 TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep(); |
10382 TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep(); |
10363 TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); |
|
10364 TCursorSelection currentSelection; |
10383 TCursorSelection currentSelection; |
10365 iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelection); |
10384 iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelection); |
10366 |
10385 |
10367 aUnlimit = (maxEdSize == 0 || ((iAknEditorFlags & EAknEditorFlagMTAutoOverwrite) && |
10386 aUnlimit = (maxEdSize == 0 || ((iAknEditorFlags & EAknEditorFlagMTAutoOverwrite) && |
10368 (currentSelection.iCursorPos >= 0 && |
10387 (currentSelection.iCursorPos >= 0 && |
10369 currentSelection.iCursorPos < maxEdSize) )); |
10388 currentSelection.iCursorPos < maxEdSize) )); |
10370 if(aUnlimit) |
10389 if(aUnlimit) |
10371 { |
10390 { |
10372 return 0; |
10391 return 0; |
10373 } |
10392 } |
10374 else |
10393 |
10375 { |
10394 TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); |
10376 if( isToCountUncommittedTextLength ) |
10395 |
10377 { |
10396 if( isToCountUncommittedTextLength ) |
10378 return ( maxEdSize - edSize + |
10397 { |
10379 currentSelection.Length() + UncommittedText().Length() ); |
10398 return ( maxEdSize - edSize + |
10380 } |
10399 currentSelection.Length() + UncommittedText().Length() ); |
10381 return (maxEdSize - edSize + currentSelection.Length()); |
10400 } |
10382 } |
10401 |
10383 } |
10402 return (maxEdSize - edSize + currentSelection.Length()); |
|
10403 |
|
10404 } |
|
10405 |
10384 #ifdef RD_INTELLIGENT_TEXT_INPUT |
10406 #ifdef RD_INTELLIGENT_TEXT_INPUT |
10385 TInt CAknFepManager::EditorFreeSpaceForAutoWordCompletion(TBool& aUnlimit, |
10407 TInt CAknFepManager::EditorFreeSpaceForAutoWordCompletion(TBool& aUnlimit, |
10386 TBool /* isToCountUncommittedTextLength = EFalse*/ ) const |
10408 TBool /* isToCountUncommittedTextLength = EFalse*/ ) const |
10387 { |
10409 { |
10388 aUnlimit = EFalse; |
10410 aUnlimit = EFalse; |
10655 | EAknEditorSecretAlphaInputMode))) |
10677 | EAknEditorSecretAlphaInputMode))) |
10656 { |
10678 { |
10657 // Any latin input mode is not permitted by the editor. |
10679 // Any latin input mode is not permitted by the editor. |
10658 // For compatibility permitted japanese input modes are checked and |
10680 // For compatibility permitted japanese input modes are checked and |
10659 // corresponding latin input modes are allowed. |
10681 // corresponding latin input modes are allowed. |
10660 if ( iPermittedInputModes & (EAknEditorKatakanaInputMode | |
10682 if ( iPermittedInputModes & ( EAknEditorKatakanaInputMode | |
10661 EAknEditorHalfWidthTextInputMode | |
10683 EAknEditorHalfWidthTextInputMode | |
10662 EAknEditorFullWidthTextInputMode | |
10684 EAknEditorFullWidthTextInputMode | |
10663 EAknEditorFullWidthKatakanaInputMode | |
10685 EAknEditorFullWidthKatakanaInputMode | |
10664 EAknEditorHiraganaKanjiInputMode | |
10686 EAknEditorHiraganaKanjiInputMode | |
10665 EAknEditorHiraganaInputMode)) |
10687 EAknEditorHiraganaInputMode |
|
10688 | EAknEditorHangulInputMode ) ) |
10666 { |
10689 { |
10667 iPermittedInputModes |= EAknEditorTextInputMode; |
10690 iPermittedInputModes |= EAknEditorTextInputMode; |
10668 } |
10691 } |
10669 if ( iPermittedInputModes & EAknEditorFullWidthNumericInputMode ) |
10692 if ( iPermittedInputModes & EAknEditorFullWidthNumericInputMode ) |
10670 { |
10693 { |
10671 iPermittedInputModes |= EAknEditorNumericInputMode; |
10694 iPermittedInputModes |= EAknEditorNumericInputMode; |
10672 } |
10695 } |
10673 |
10696 |
10674 if ( !(defaultInputMode & (EAknEditorTextInputMode | EAknEditorNumericInputMode))) |
10697 if ( !(defaultInputMode & (EAknEditorTextInputMode | EAknEditorNumericInputMode))) |
10675 { |
10698 { |
10676 if (defaultInputMode & (EAknEditorKatakanaInputMode | |
10699 if ( defaultInputMode & ( EAknEditorKatakanaInputMode | |
10677 EAknEditorHalfWidthTextInputMode| |
10700 EAknEditorHalfWidthTextInputMode| |
10678 EAknEditorFullWidthTextInputMode | |
10701 EAknEditorFullWidthTextInputMode | |
10679 EAknEditorFullWidthKatakanaInputMode | |
10702 EAknEditorFullWidthKatakanaInputMode | |
10680 EAknEditorHiraganaKanjiInputMode | |
10703 EAknEditorHiraganaKanjiInputMode | |
10681 EAknEditorHiraganaInputMode)) |
10704 EAknEditorHiraganaInputMode |
|
10705 | EAknEditorHangulInputMode ) ) |
10682 { |
10706 { |
10683 defaultInputMode = EAknEditorTextInputMode; |
10707 defaultInputMode = EAknEditorTextInputMode; |
10684 } |
10708 } |
10685 else if (defaultInputMode & EAknEditorFullWidthNumericInputMode) |
10709 else if (defaultInputMode & EAknEditorFullWidthNumericInputMode) |
10686 { |
10710 { |
10780 { |
10804 { |
10781 //this is safe default as it is currently allowed in all FEPs |
10805 //this is safe default as it is currently allowed in all FEPs |
10782 TryChangeModeL(ELatin); |
10806 TryChangeModeL(ELatin); |
10783 } |
10807 } |
10784 } |
10808 } |
|
10809 else if ( editorMode == EAknEditorHangulInputMode ) |
|
10810 { |
|
10811 // Choose EHangul as the current fep mode |
|
10812 // if the editor mode stored in editor state is EAknEditorHangulInputMode. |
|
10813 TryChangeModeL(EHangul); |
|
10814 } |
10785 else if (!iStrokeUsedInQWERTY) |
10815 else if (!iStrokeUsedInQWERTY) |
10786 { |
10816 { |
10787 if (editorMode == EStroke && sharedDataMode == ECangJie) |
10817 if (editorMode == EStroke && sharedDataMode == ECangJie) |
10788 { |
10818 { |
10789 TryChangeModeL(sharedDataMode); |
10819 TryChangeModeL(sharedDataMode); |
12800 editingStateIndicator != (MAknEditingStateIndicator*)iIndicator ); |
12830 editingStateIndicator != (MAknEditingStateIndicator*)iIndicator ); |
12801 |
12831 |
12802 #ifdef RD_SCALABLE_UI_V2 |
12832 #ifdef RD_SCALABLE_UI_V2 |
12803 TBool fingerItutIndicator = ( iFepPluginManager && |
12833 TBool fingerItutIndicator = ( iFepPluginManager && |
12804 iFepPluginManager->PluginInputMode() == EPluginInputModeItut ); |
12834 iFepPluginManager->PluginInputMode() == EPluginInputModeItut ); |
|
12835 // Portrait FSQ is added. |
12805 TBool fingerFSQIndicator = ( iFepPluginManager && |
12836 TBool fingerFSQIndicator = ( iFepPluginManager && |
12806 iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ); |
12837 ( iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || |
|
12838 iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ ) ); |
12807 #else |
12839 #else |
12808 TBool fingerItutIndicator = EFalse; |
12840 TBool fingerItutIndicator = EFalse; |
12809 TBool fingerFSQIndicator = EFalse; |
12841 TBool fingerFSQIndicator = EFalse; |
12810 |
12842 |
12811 #endif |
12843 #endif |
13041 } |
13073 } |
13042 } |
13074 } |
13043 } |
13075 } |
13044 // Add This condition for Phonebook, ReTe, PF52.50_2008_wk32: |
13076 // Add This condition for Phonebook, ReTe, PF52.50_2008_wk32: |
13045 // Navigation bar disappears after tapping find pane and then returning back to Names list view. |
13077 // Navigation bar disappears after tapping find pane and then returning back to Names list view. |
|
13078 // Portrait FSQ is added. |
13046 if (!(editingStateIndicator == (MAknEditingStateIndicator*)iIndicator && |
13079 if (!(editingStateIndicator == (MAknEditingStateIndicator*)iIndicator && |
13047 ( iFepPluginManager && ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut |
13080 ( iFepPluginManager && |
13048 || iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ) ) && |
13081 ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut |
|
13082 || iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ |
|
13083 || iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ ) ) && |
13049 IsFindPaneEditor())) |
13084 IsFindPaneEditor())) |
13050 { |
13085 { |
13051 editingStateIndicator->SetState(newState); |
13086 editingStateIndicator->SetState(newState); |
13052 } |
13087 } |
13053 |
13088 |
13827 { |
13862 { |
13828 currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE; |
13863 currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE; |
13829 } |
13864 } |
13830 } |
13865 } |
13831 } |
13866 } |
|
13867 |
|
13868 if ( FeatureManager::FeatureSupported(KFeatureIdKorean) ) |
|
13869 { |
|
13870 // Use the special sct resource file for Korean variant. |
|
13871 if (currentEditorSCTResId == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG) |
|
13872 { |
|
13873 currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_KOREAN; |
|
13874 } |
|
13875 } |
|
13876 |
13832 if (currentEditorSCTResId == EDefaultSCTResourceId) // -1 forces the default in SCT resource definition |
13877 if (currentEditorSCTResId == EDefaultSCTResourceId) // -1 forces the default in SCT resource definition |
13833 { |
13878 { |
13834 if (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) |
13879 if (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) |
13835 { |
13880 { |
13836 currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_LATIN_ONLY; |
13881 currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_LATIN_ONLY; |
15176 |
15226 |
15177 if (TryHandleCommonArrowAndBackspaceFunctionalityL(aCode, response)) |
15227 if (TryHandleCommonArrowAndBackspaceFunctionalityL(aCode, response)) |
15178 { |
15228 { |
15179 return response; |
15229 return response; |
15180 } |
15230 } |
|
15231 |
|
15232 // You will not understand the flowing lines, |
|
15233 // for it is just a "hole stem" than normal logic. |
|
15234 // |
|
15235 // Let me explain: |
|
15236 // In HWR, 4x12 keyboard is used, and predictive should be disabled for it. |
|
15237 // unfortunately, the existed codes enable predictive in some special case. |
|
15238 // when you switch from FSQ to HWR, with ITI on, you will get that. |
|
15239 // then if you press arrow key, |
|
15240 // the code blow of "HandlePredictiveNaviEventOutsideInlineEditL" will be called. |
|
15241 // which is writen for FSQ, not HWR, that finally cause navi-event being consumed. |
|
15242 // No navigation action being performed. |
|
15243 // |
|
15244 // It is not a complete fix, just for simplicity. |
|
15245 if (iFepPluginManager && |
|
15246 iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr) |
|
15247 { |
|
15248 return EKeyWasNotConsumed; |
|
15249 } |
|
15250 |
15181 if (WesternPredictive()) |
15251 if (WesternPredictive()) |
15182 { |
15252 { |
15183 response = HandlePredictiveNaviEventOutsideInlineEditL(aCode, aLength); |
15253 response = HandlePredictiveNaviEventOutsideInlineEditL(aCode, aLength); |
15184 } |
15254 } |
15185 |
15255 |
15529 if (currentEditorSelection.Length()) |
15599 if (currentEditorSelection.Length()) |
15530 { |
15600 { |
15531 // we have text selected - set cursor to start/end of current selection |
15601 // we have text selected - set cursor to start/end of current selection |
15532 TTmDocPosSpec newPos; |
15602 TTmDocPosSpec newPos; |
15533 aResponse = NavigateFromSelectionL( currentEditorSelection, naviEvent, newPos ); |
15603 aResponse = NavigateFromSelectionL( currentEditorSelection, naviEvent, newPos ); |
15534 if ( aCode != EKeyBackspace && WesternPredictive() ) |
15604 |
|
15605 // You will not understand the following lines, |
|
15606 // for it is just a "hole stem" than normal logic. |
|
15607 // |
|
15608 // Let me explain: |
|
15609 // In HWR, 4x12 keyboard is used, and predictive should be disabled for it. |
|
15610 // unfortunately, the existing codes enable predictive in some special case. |
|
15611 // when you switch from FSQ to HWR, with ITI on, you will get that. |
|
15612 // then if you select some words and press arrow key, |
|
15613 // the if bratch of the code blow will be excuted. |
|
15614 // which is writen for FSQ, not HWR, |
|
15615 // MoveCursorToEndOfWordL or MoveCursorToStartOfWordL is called unexpected |
|
15616 // |
|
15617 // It is not a complete fix, just for simplicity. |
|
15618 TBool isFingerHwr = ( iFepPluginManager != NULL ) && |
|
15619 ( iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr ); |
|
15620 |
|
15621 if ( aCode != EKeyBackspace && !isFingerHwr && WesternPredictive() ) |
15535 { |
15622 { |
15536 if (CursorInsideWord()) |
15623 if (CursorInsideWord()) |
15537 { |
15624 { |
15538 TBool rightToleftParagraph = IsRightToLeftParagraph(newPos); |
15625 TBool rightToleftParagraph = IsRightToLeftParagraph(newPos); |
15539 if ( (rightToleftParagraph && naviEvent == ELeftNaviEvent) || |
15626 if ( (rightToleftParagraph && naviEvent == ELeftNaviEvent) || |
15763 { |
15850 { |
15764 #ifdef RD_SCALABLE_UI_V2 |
15851 #ifdef RD_SCALABLE_UI_V2 |
15765 if( iFepPluginManager->PluginInputMode() != EPluginInputModeNone && |
15852 if( iFepPluginManager->PluginInputMode() != EPluginInputModeNone && |
15766 iFepPluginManager->PluginInputMode() != EPluginInputModeItut |
15853 iFepPluginManager->PluginInputMode() != EPluginInputModeItut |
15767 // Add this condition for correction of dim features on FSQ |
15854 // Add this condition for correction of dim features on FSQ |
15768 && iFepPluginManager->PluginInputMode() != EPluginInputModeFSQ ) |
15855 && iFepPluginManager->PluginInputMode() != EPluginInputModeFSQ |
|
15856 && iFepPluginManager->PluginInputMode() != EPluginInputModePortraitFSQ ) |
15769 { |
15857 { |
15770 iFepPluginManager->LaunchPenInputLanguageSelectionL(aLaunchedByTouchWin); |
15858 iFepPluginManager->LaunchPenInputLanguageSelectionL(aLaunchedByTouchWin); |
15771 return; |
15859 return; |
15772 } |
15860 } |
15773 #endif //RD_SCALABLE_UI_V2 |
15861 #endif //RD_SCALABLE_UI_V2 |
18292 if (charMap == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG) |
18388 if (charMap == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG) |
18293 { |
18389 { |
18294 charMap = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE; |
18390 charMap = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE; |
18295 } |
18391 } |
18296 } |
18392 } |
|
18393 else if ( FeatureManager::FeatureSupported(KFeatureIdKorean) ) |
|
18394 { |
|
18395 // Use the special sct resource file for Korean variant. |
|
18396 if (charMap == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG) |
|
18397 { |
|
18398 charMap = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_KOREAN; |
|
18399 } |
|
18400 } |
18297 if (!charMap) |
18401 if (!charMap) |
18298 { |
18402 { |
18299 // override numeric keymap if necessary. flag is for non standard charmaps |
18403 // override numeric keymap if necessary. flag is for non standard charmaps |
18300 TInt standardNumericCharMap = EDefaultNumericCharMapResId; |
18404 TInt standardNumericCharMap = EDefaultNumericCharMapResId; |
18301 if ((iMode == ENumber || iMode == ENativeNumber) && |
18405 if ((iMode == ENumber || iMode == ENativeNumber) && |
18311 |
18415 |
18312 if ( charMap == ENoCharacters && !IsAbleToLaunchSCT()) |
18416 if ( charMap == ENoCharacters && !IsAbleToLaunchSCT()) |
18313 { |
18417 { |
18314 currentEditorSCTResId = charMap; |
18418 currentEditorSCTResId = charMap; |
18315 } |
18419 } |
18316 if(R_AKNFEP_SCT_NUMERIC_MODE_CHARS_PLAIN == charMap && |
18420 if(R_AKNFEP_SCT_NUMERIC_MODE_CHARS_PLAIN == charMap) |
18317 ( R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_LATIN_ONLY == currentEditorSCTResId || |
|
18318 R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG == currentEditorSCTResId || |
|
18319 R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG == currentEditorSCTResId) ) |
|
18320 { |
18421 { |
18321 TBool isEmpty = ETrue; |
18422 TBool isEmpty = ETrue; |
18322 TRAP_IGNORE(isEmpty = GetSctLengthL(charMap)); |
18423 TRAP_IGNORE(isEmpty = GetSctLengthL(charMap)); |
18323 if(isEmpty) |
18424 if(isEmpty) |
18324 { |
18425 { |
18422 #ifdef RD_SCALABLE_UI_V2 |
18523 #ifdef RD_SCALABLE_UI_V2 |
18423 if( iFepFullyConstructed && !iFepPluginManager->IsGlobleNotes()) |
18524 if( iFepFullyConstructed && !iFepPluginManager->IsGlobleNotes()) |
18424 { |
18525 { |
18425 if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || |
18526 if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || |
18426 iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || |
18527 iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || |
18427 iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr) |
18528 iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr || |
|
18529 iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ ) |
|
18530 |
18428 { |
18531 { |
18429 SetStopProcessFocus(ETrue, EFalse); |
18532 SetStopProcessFocus(ETrue, EFalse); |
18430 iFepPluginManager->SetMenuState(); |
18533 iFepPluginManager->SetMenuState(); |
18431 } |
18534 } |
18432 else if (!iFepPluginManager->IsGlobleNotes()) |
18535 else if (!iFepPluginManager->IsGlobleNotes()) |
18433 { |
18536 { |
18434 iFepPluginManager->ClosePluginInputUiL( ETrue ); |
18537 iFepPluginManager->ClosePluginInputUiL( ETrue ); |
18435 } |
18538 } |
18436 } |
18539 } |
18482 iNotifyPlugin = EFalse; |
18585 iNotifyPlugin = EFalse; |
18483 if( iFepFullyConstructed && iFepPluginManager) |
18586 if( iFepFullyConstructed && iFepPluginManager) |
18484 { |
18587 { |
18485 if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || |
18588 if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || |
18486 iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || |
18589 iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || |
18487 iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr) |
18590 iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr || |
|
18591 iFepPluginManager->PluginInputMode() == EPluginInputModePortraitFSQ ) |
18488 { |
18592 { |
18489 SetStopProcessFocus(EFalse); |
18593 SetStopProcessFocus(EFalse); |
18490 } |
18594 } |
18491 else |
18595 else |
18492 { |
18596 { |
18493 HandleChangeInFocus(); |
18597 HandleChangeInFocus(); |
18494 } |
18598 } |
18495 } |
18599 } |
18892 // |
18996 // |
18893 TBool CAknFepManager::HandleSelModeArrowKeyEventL(const TKeyEvent& aKeyEvent, |
18997 TBool CAknFepManager::HandleSelModeArrowKeyEventL(const TKeyEvent& aKeyEvent, |
18894 TEventCode aEventCode, |
18998 TEventCode aEventCode, |
18895 TKeyResponse& aRetCode) |
18999 TKeyResponse& aRetCode) |
18896 { |
19000 { |
18897 TCursorSelection currentEditorSelection(0,0); |
19001 aRetCode = EKeyWasNotConsumed; |
18898 if(iInputCapabilities.FepAwareTextEditor()) |
19002 TBool used = EFalse; |
18899 { |
19003 |
18900 iInputCapabilities.FepAwareTextEditor()-> |
19004 // only arrow keys are potentially handled |
18901 GetCursorSelectionForFep(currentEditorSelection); |
19005 if ( ( aKeyEvent.iScanCode == EStdKeyLeftArrow |
18902 } |
19006 || aKeyEvent.iScanCode == EStdKeyRightArrow ) |
18903 |
19007 && iInputCapabilities.FepAwareTextEditor() ) |
18904 TInt inputMode = PluginInputMode(); |
19008 { |
18905 TBool isArabicFingerHwr = (inputMode == EPluginInputModeFingerHwr && |
19009 TInt inputMode = PluginInputMode(); |
18906 GetInputLanguageFromSharedDataInterface() == ELangArabic); |
19010 TBool isArabicFingerHwr = ( inputMode == EPluginInputModeFingerHwr && |
18907 if(!IsMfneEditor() && (inputMode == EPluginInputModeItut || |
19011 GetInputLanguageFromSharedDataInterface() == ELangArabic ); |
18908 inputMode == EPluginInputModeFSQ || isArabicFingerHwr) |
19012 TCursorSelection currentEditorSelection( 0, 0 ); |
18909 && currentEditorSelection.Length() != 0) |
19013 |
18910 { |
19014 iInputCapabilities.FepAwareTextEditor()-> |
18911 |
19015 GetCursorSelectionForFep( currentEditorSelection ); |
18912 if ((aKeyEvent.iScanCode == EStdKeyLeftArrow) || (aKeyEvent.iScanCode == EStdKeyRightArrow)) |
19016 |
18913 { |
19017 if ( !IsMfneEditor() && ( inputMode == EPluginInputModeItut || |
18914 if (!(aKeyEvent.iModifiers & EModifierShift)) |
19018 inputMode == EPluginInputModeFSQ || |
|
19019 inputMode == EPluginInputModePortraitFSQ || |
|
19020 isArabicFingerHwr ) |
|
19021 && currentEditorSelection.Length() != 0 ) |
|
19022 { |
|
19023 used = ETrue; |
|
19024 |
|
19025 if ( !( aKeyEvent.iModifiers & EModifierShift ) ) |
18915 { |
19026 { |
18916 TKeyEvent ccpuStart = aKeyEvent; |
19027 TKeyEvent ccpuStart = aKeyEvent; |
18917 ccpuStart.iModifiers |= EModifierShift; |
19028 ccpuStart.iModifiers |= EModifierShift; |
18918 ccpuStart.iModifiers |= EModifierRightShift; |
19029 ccpuStart.iModifiers |= EModifierRightShift; |
18919 CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode); |
19030 CCoeEnv::Static()->SimulateKeyEventL( ccpuStart, aEventCode ); |
18920 |
|
18921 aRetCode = EKeyWasConsumed; |
19031 aRetCode = EKeyWasConsumed; |
18922 return ETrue; |
|
18923 } |
|
18924 else |
|
18925 { |
|
18926 aRetCode = EKeyWasNotConsumed; |
|
18927 return ETrue; |
|
18928 } |
19032 } |
18929 } |
19033 } |
18930 } |
19034 } |
18931 aRetCode = EKeyWasNotConsumed; |
19035 |
18932 return EFalse; |
19036 return used; |
18933 } |
19037 } |
18934 |
19038 |
18935 #else // !RD_SCALABLE_UI_V2 |
19039 #else // !RD_SCALABLE_UI_V2 |
18936 // ----------------------------------------------------------------------------- |
19040 // ----------------------------------------------------------------------------- |
18937 // CAknFepManager::HandleResourceChange |
19041 // CAknFepManager::HandleResourceChange |
19895 iInputCapabilities ) ; |
19999 iInputCapabilities ) ; |
19896 } |
20000 } |
19897 } |
20001 } |
19898 else |
20002 else |
19899 { |
20003 { |
19900 |
20004 //Handle Fn key and consider long press case |
|
20005 if( EStdKeyRightFunc == aKeyEvent.iScanCode ) |
|
20006 { |
|
20007 switch(aEventCode) |
|
20008 { |
|
20009 case EEventKeyDown: |
|
20010 ActivateFnkeyPressMonitor(); |
|
20011 break; |
|
20012 case EEventKeyUp: |
|
20013 { |
|
20014 if(!iFnKeypressMonitor->IsActive()) |
|
20015 { |
|
20016 //when long pressing event occurrs, |
|
20017 //event has been already handled in HandleFnKeyPressMonitorCallback() |
|
20018 return EKeyWasConsumed; |
|
20019 } |
|
20020 //when short pressing event occurs, |
|
20021 //only deactive fn Key press monitor and normal event handle flow will work |
|
20022 DeactivateFnkeyPressMonitor(); |
|
20023 } |
|
20024 break; |
|
20025 default: |
|
20026 break; |
|
20027 } |
|
20028 } |
19901 ret = iFnKeyManager->HandleFnKeyEventL( aKeyEvent, aEventCode, |
20029 ret = iFnKeyManager->HandleFnKeyEventL( aKeyEvent, aEventCode, |
19902 iInputCapabilities ) ; |
20030 iInputCapabilities ) ; |
19903 } |
20031 } |
19904 if(IsHybridAplhaEditor() && !iHybridAplphaChangedToAlphanumeric) |
20032 if(IsHybridAplhaEditor() && !iHybridAplphaChangedToAlphanumeric) |
19905 { |
20033 { |
20677 return ETrue; |
20805 return ETrue; |
20678 } |
20806 } |
20679 } |
20807 } |
20680 return EFalse; |
20808 return EFalse; |
20681 } |
20809 } |
20682 |
20810 void CAknFepManager::ChangeMfneAmPm() |
|
20811 { |
|
20812 //trigger when touch at "AM" or "PM" in ICF |
|
20813 if (iInputCapabilities.FepAwareTextEditor() && IsMfneEditor() ) |
|
20814 { |
|
20815 MObjectProvider* mop = iInputCapabilities.ObjectProvider(); |
|
20816 if ( mop && iInputCapabilities.FepAwareTextEditor() ) |
|
20817 { |
|
20818 CAknExtendedInputCapabilities* extendedInputCapabilities = |
|
20819 mop->MopGetObject( extendedInputCapabilities ); |
|
20820 if ( extendedInputCapabilities->Capabilities() && CAknExtendedInputCapabilities::EInputEditorAmPm )// if support AM/PM toggle |
|
20821 { |
|
20822 extendedInputCapabilities->ReportEventL( |
|
20823 CAknExtendedInputCapabilities::MAknEventObserver::EChangeAmPm, NULL); |
|
20824 } |
|
20825 } |
|
20826 } |
|
20827 } |
|
20828 |
20683 //------------------------------------------------------------------- |
20829 //------------------------------------------------------------------- |
20684 |
20830 |
20685 // |
20831 // |
20686 // CChrMultiTapTimer |
20832 // CChrMultiTapTimer |
20687 // |
20833 // |
20851 } |
20997 } |
20852 #ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ |
20998 #ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ |
20853 // temporary solution for Entering key on virtual QWERTY not working |
20999 // temporary solution for Entering key on virtual QWERTY not working |
20854 // like enter on virtual ITU-T or on external keyboard |
21000 // like enter on virtual ITU-T or on external keyboard |
20855 if ( iOptionsMenuBar && !( iFepPluginManager && |
21001 if ( iOptionsMenuBar && !( iFepPluginManager && |
20856 iFepPluginManager->CurrentPluginInputMode() == EPluginInputModeFSQ ) ) |
21002 ( iFepPluginManager->CurrentPluginInputMode() == EPluginInputModeFSQ || |
|
21003 iFepPluginManager->CurrentPluginInputMode() == EPluginInputModePortraitFSQ ) ) ) |
20857 { |
21004 { |
20858 iOptionsMenuBar->StopDisplayingMenuBar(); |
21005 iOptionsMenuBar->StopDisplayingMenuBar(); |
20859 iOptionsMenuBar = NULL; |
21006 iOptionsMenuBar = NULL; |
20860 } |
21007 } |
20861 #endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ |
21008 #endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ |
21076 } |
21223 } |
21077 } |
21224 } |
21078 |
21225 |
21079 |
21226 |
21080 // --------------------------------------------------------------------------- |
21227 // --------------------------------------------------------------------------- |
|
21228 // CAknFepManager::HandleFnKeyPressMonitorCallback |
|
21229 // Handle fnkey press monitor callback |
|
21230 // static function |
|
21231 // --------------------------------------------------------------------------- |
|
21232 // |
|
21233 TInt CAknFepManager::HandleFnKeyPressMonitorCallback(TAny* aObj) |
|
21234 { |
|
21235 TRAPD(err, static_cast<CAknFepManager*>(aObj)->HandleFnKeyPressMonitor()); |
|
21236 if (err) |
|
21237 { |
|
21238 static_cast<CAknFepManager*>(aObj)->CleanUpFep(); |
|
21239 return KErrDied; |
|
21240 } |
|
21241 return KErrNone; |
|
21242 } |
|
21243 |
|
21244 // --------------------------------------------------------------------------- |
|
21245 // CAknFepManager::HandleFnKeyPressMonitor |
|
21246 // Handle fnkey press monitor callback |
|
21247 // --------------------------------------------------------------------------- |
|
21248 // |
|
21249 void CAknFepManager::HandleFnKeyPressMonitor() |
|
21250 { |
|
21251 DeactivateFnkeyPressMonitor(); |
|
21252 |
|
21253 //if previous state of fn key is EFnKeyNone or EFnKeyNext, EFnKeyLock will be set; |
|
21254 //otherwise, if previous state is EFnKeyLock, EFnKeyNone will be set. |
|
21255 switch(iFnKeyManager->FnKeyState()) |
|
21256 { |
|
21257 case CAknFepFnKeyManager::EFnKeyPressed: |
|
21258 case CAknFepFnKeyManager::EFnKeyPressedAgain: |
|
21259 iFnKeyManager->SetFnKeyState(CAknFepFnKeyManager::EFnKeyLock); |
|
21260 break; |
|
21261 case CAknFepFnKeyManager::EFnKeyDown: |
|
21262 iFnKeyManager->SetFnKeyState(CAknFepFnKeyManager::EFnKeyNone); |
|
21263 break; |
|
21264 default: |
|
21265 break; |
|
21266 } |
|
21267 } |
|
21268 |
|
21269 // --------------------------------------------------------------------------- |
|
21270 // CAknFepManager::ActivateFnkeyPressMonitor |
|
21271 // Activate Fnkey press Monitor |
|
21272 // --------------------------------------------------------------------------- |
|
21273 // |
|
21274 void CAknFepManager::ActivateFnkeyPressMonitor() |
|
21275 { |
|
21276 if( iFnKeypressMonitor ) |
|
21277 { |
|
21278 iFnKeypressMonitor->Start(KFnKeyLongPressTimeout, KFnKeyLongPressTimeout, |
|
21279 TCallBack(HandleFnKeyPressMonitorCallback, this)); |
|
21280 } |
|
21281 } |
|
21282 |
|
21283 // --------------------------------------------------------------------------- |
|
21284 // CAknFepManager::DeactivateFnkeyPressMonitor |
|
21285 // Deactivate Fnkey press Monitor |
|
21286 // --------------------------------------------------------------------------- |
|
21287 // |
|
21288 void CAknFepManager::DeactivateFnkeyPressMonitor() |
|
21289 { |
|
21290 if( iFnKeypressMonitor && iFnKeypressMonitor->IsActive()) |
|
21291 { |
|
21292 iFnKeypressMonitor->Cancel(); |
|
21293 } |
|
21294 } |
|
21295 |
|
21296 // --------------------------------------------------------------------------- |
21081 // LOCAL METHODS |
21297 // LOCAL METHODS |
21082 // |
21298 // |
21083 // --------------------------------------------------------------------------- |
21299 // --------------------------------------------------------------------------- |
21084 // |
21300 // |
21085 const TInt KVietKeyMarker = 0xffff; |
21301 const TInt KVietKeyMarker = 0xffff; |