fep/aknfep/src/AknFepManager.cpp
branchRCL_3
changeset 9 e6a39382bb9c
parent 8 4eb1ae11334f
child 11 c8fb4cf7b3ae
equal deleted inserted replaced
8:4eb1ae11334f 9:e6a39382bb9c
  3536             	{
  3536             	{
  3537             	iFepPluginManager->ResetItiStateL();
  3537             	iFepPluginManager->ResetItiStateL();
  3538             	}
  3538             	}
  3539         #endif
  3539         #endif
  3540             // Close UI
  3540             // Close UI
  3541             FepUI()->CloseUI();
  3541             if ( FepUI())
       
  3542                 {
       
  3543                 FepUI()->CloseUI();
       
  3544                 }
  3542             }
  3545             }
  3543         else
  3546         else
  3544             {            
  3547             {            
  3545             TRAP_IGNORE(SendEventsToPluginManL( EPluginFocusItemDestroy, ETrue ));  
  3548             TRAP_IGNORE(SendEventsToPluginManL( EPluginFocusItemDestroy, ETrue ));  
  3546             }
  3549             }
  7007     {
  7010     {
  7008     iDisalbleFocusChangeForSCT = EFalse;
  7011     iDisalbleFocusChangeForSCT = EFalse;
  7009     return;
  7012     return;
  7010     }
  7013     }
  7011 #endif
  7014 #endif
       
  7015     // dim state changed, need fetch it again.
       
  7016     SendEventsToPluginManL(EPluginEnableFetchDimState);
  7012 
  7017 
  7013     //The CCPU flag ECcpuStateShiftkeyWasPressedBeforeLosingFocus suggests that the candidate list was closed
  7018     //The CCPU flag ECcpuStateShiftkeyWasPressedBeforeLosingFocus suggests that the candidate list was closed
  7014     //with a long key press of shift key. If so then, FEP needs to set the EFlagShiftKeyDepressed for the CCPU mode to work 
  7019     //with a long key press of shift key. If so then, FEP needs to set the EFlagShiftKeyDepressed for the CCPU mode to work 
  7015     //correctly. The state of the shift state is copied to local variable isToSetShiftKeyStateDown because as a function of change
  7020     //correctly. The state of the shift state is copied to local variable isToSetShiftKeyStateDown because as a function of change
  7016     //of focus the FEP clears all the CCPU flags which would reset ECcpuStateShiftkeyWasPressedBeforeLosingFocus also.
  7021     //of focus the FEP clears all the CCPU flags which would reset ECcpuStateShiftkeyWasPressedBeforeLosingFocus also.
 13957             // aPositionOfInsertionPointInInlineText is ignored, and its modified value
 13962             // aPositionOfInsertionPointInInlineText is ignored, and its modified value
 13958             // from the DecorateInlineText routine is also ignored.
 13963             // from the DecorateInlineText routine is also ignored.
 13959             
 13964             
 13960 			aPositionOfInsertionPointInInlineText = decoratedInlineEdit->Length();
 13965 			aPositionOfInsertionPointInInlineText = decoratedInlineEdit->Length();
 13961 
 13966 
       
 13967 			iUncommittedText.iCursorPos = iUncommittedText.iAnchorPos + aPositionOfInsertionPointInInlineText;
       
 13968 			
 13962             iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(
 13969             iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(
 13963                 bufferPtr, aPositionOfInsertionPointInInlineText);
 13970                 bufferPtr, aPositionOfInsertionPointInInlineText);
 13964             	
 13971             	
 13965             iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
 13972             iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
 13966             iUncommittedText.iAnchorPos-=decoratedInlineEdit->Length();
 13973             iUncommittedText.iAnchorPos-=decoratedInlineEdit->Length();
 15798 		RemoveSuggestedAdvanceCompletionL();
 15805 		RemoveSuggestedAdvanceCompletionL();
 15799 #endif // RD_INTELLIGENT_TEXT_INPUT   
 15806 #endif // RD_INTELLIGENT_TEXT_INPUT   
 15800         //Hindi Change Bug Fix
 15807         //Hindi Change Bug Fix
 15801         iSharedDataInterface->SetInputTextLanguage(languages->At(index));
 15808         iSharedDataInterface->SetInputTextLanguage(languages->At(index));
 15802         CAknEnv::Static()->SettingCache().Update(KEikInputLanguageChange);
 15809         CAknEnv::Static()->SettingCache().Update(KEikInputLanguageChange);
       
 15810         SetActiveInputLanguage( languages->At(index) );
 15803         ChangeInputLanguageL(languages->At(index));           
 15811         ChangeInputLanguageL(languages->At(index));           
 15804         SetFlag( EFlagNewSharedDataInputLanguage | EFlagNewSharedDataInputMode );
 15812         SetFlag( EFlagNewSharedDataInputLanguage | EFlagNewSharedDataInputMode );
 15805 	  	// This pice of code TSW Fute error fixing.
 15813 	  	// This pice of code TSW Fute error fixing.
 15806         // Display the confirmation msg if the dictionary is not available for
 15814         // Display the confirmation msg if the dictionary is not available for
 15807         // Current language.
 15815         // Current language.
 17355             editorType = AknTextUtils::EDigitModeLatinNumberEditor;
 17363             editorType = AknTextUtils::EDigitModeLatinNumberEditor;
 17356             }
 17364             }
 17357         }
 17365         }
 17358         
 17366         
 17359     if (iLanguageCapabilities.iArabicIndicDigitsAllowed &&
 17367     if (iLanguageCapabilities.iArabicIndicDigitsAllowed &&
 17360         AknTextUtils::DigitModeQuery(editorType) && 
 17368             (AknTextUtils::DigitModeQuery(editorType) || iMode == ENativeNumber) && 
 17361         !ASCIIDigits)
 17369         !ASCIIDigits)
 17362         {
 17370         {
 17363         aDestination = EDigitTypeArabicIndic;
 17371         aDestination = EDigitTypeArabicIndic;
 17364         }
 17372         }
 17365     else if (iLanguageCapabilities.iEasternArabicIndicDigitsAllowed &&
 17373     else if (iLanguageCapabilities.iEasternArabicIndicDigitsAllowed &&
 17366         AknTextUtils::DigitModeQuery(editorType)&& 
 17374             (AknTextUtils::DigitModeQuery(editorType) || iMode == ENativeNumber) && 
 17367         !ASCIIDigits)
 17375         !ASCIIDigits)
 17368         {
 17376         {
 17369         aDestination = EDigitTypeEasternArabicIndic;
 17377         aDestination = EDigitTypeEasternArabicIndic;
 17370         }    
 17378         }    
 17371     /*Hindi*/    
 17379     /*Hindi*/    
 17372     else if ( iLanguageCapabilities.iIndicDigitsAllowed &&
 17380     else if ( iLanguageCapabilities.iIndicDigitsAllowed &&
 17373                     AknTextUtils::DigitModeQuery(editorType) && 
 17381             (AknTextUtils::DigitModeQuery(editorType) || iMode == ENativeNumber) && 
 17374         !ASCIIDigits)    
 17382         !ASCIIDigits)    
 17375         {
 17383         {
 17376         aDestination = EDigitTypeDevanagari;    
 17384         aDestination = EDigitTypeDevanagari;    
 17377         }
 17385         }
 17378     else
 17386     else
 18210         
 18218         
 18211     if ( charMap == ENoCharacters && !IsAbleToLaunchSCT())
 18219     if ( charMap == ENoCharacters && !IsAbleToLaunchSCT())
 18212         {
 18220         {
 18213     	currentEditorSCTResId = charMap;
 18221     	currentEditorSCTResId = charMap;
 18214         }
 18222         }
 18215     if(R_AKNFEP_SCT_NUMERIC_MODE_CHARS_PLAIN == charMap && R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_LATIN_ONLY == currentEditorSCTResId)
 18223     if(R_AKNFEP_SCT_NUMERIC_MODE_CHARS_PLAIN == charMap && 
       
 18224        ( R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_LATIN_ONLY == currentEditorSCTResId || 
       
 18225          R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG == currentEditorSCTResId ) )
 18216         {
 18226         {
 18217         TBool isEmpty = ETrue;
 18227         TBool isEmpty = ETrue;
 18218         TRAP_IGNORE(isEmpty = GetSctLengthL(charMap));
 18228         TRAP_IGNORE(isEmpty = GetSctLengthL(charMap));
 18219         if(isEmpty)
 18229         if(isEmpty)
 18220            {
 18230            {
 18365 			currentEditorSCTResId,
 18375 			currentEditorSCTResId,
 18366 			disableRecentItemRow))
 18376 			disableRecentItemRow))
 18367             {
 18377             {
 18368             PrepareFepAfterDialogExitL(fepUid);
 18378             PrepareFepAfterDialogExitL(fepUid);
 18369             SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd);
 18379             SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd);
 18370 
 18380 			// after closing SCT, need change dim state.
 18371 #ifdef RD_SCALABLE_UI_V2 
 18381             SendEventsToPluginManL(EPluginEnableFetchDimState);
 18372             
 18382 
 18373             if( iFepFullyConstructed && iFepPluginManager)
       
 18374                 {
       
 18375                  if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
       
 18376                      iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
       
 18377                      iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)
       
 18378                     {
       
 18379                     SetStopProcessFocus(EFalse);
       
 18380                     }            
       
 18381                  else
       
 18382                     {
       
 18383                     HandleChangeInFocus();
       
 18384                     }
       
 18385                 }
       
 18386             else
       
 18387                 {
       
 18388                 HandleChangeInFocus();
       
 18389                 }   
       
 18390             // Set the flag, not change focus for next.
       
 18391             iDisalbleFocusChangeForSCT = ETrue;           
       
 18392 #endif
       
 18393 
 18383 
 18394             //Removes auto-complition part if SCT is launched and any special character is selected 
 18384             //Removes auto-complition part if SCT is launched and any special character is selected 
 18395 #ifdef RD_INTELLIGENT_TEXT_INPUT
 18385 #ifdef RD_INTELLIGENT_TEXT_INPUT
 18396             if( specialChars.Length() > 0 )
 18386             if( specialChars.Length() > 0 )
 18397                 {
 18387                 {
 18440                                 {
 18430                                 {
 18441                                 cursorSelection = TCursorSelection(iUncommittedText.iCursorPos + 1,
 18431                                 cursorSelection = TCursorSelection(iUncommittedText.iCursorPos + 1,
 18442                                                                    iUncommittedText.iAnchorPos);
 18432                                                                    iUncommittedText.iAnchorPos);
 18443                                 }
 18433                                 }
 18444                             }
 18434                             }
       
 18435                         // Get new InputCapabilities immediatly.
       
 18436                         CCoeEnv* coeEnv = CCoeEnv::Static();
       
 18437                         iInputCapabilities = static_cast<const CCoeAppUi*>(coeEnv->AppUi())->InputCapabilities();
 18445                         if (EditorState())
 18438                         if (EditorState())
 18446                             {
 18439                             {
 18447                             if (charAsDesc[0] == CEditableText::EParagraphDelimiter)
 18440                             if (charAsDesc[0] == CEditableText::EParagraphDelimiter)
 18448                                 {
 18441                                 {
 18449                                 // This is line feed character. Post it to editor and let it decide
 18442                                 // This is line feed character. Post it to editor and let it decide
 18464                                 if (replace)
 18457                                 if (replace)
 18465                                     {
 18458                                     {
 18466                                     TKeyEvent delKey = {8, EStdKeyBackspace, 1, 0};        
 18459                                     TKeyEvent delKey = {8, EStdKeyBackspace, 1, 0};        
 18467                                     CCoeEnv::Static()->SimulateKeyEventL(delKey, EEventKey);                                                                
 18460                                     CCoeEnv::Static()->SimulateKeyEventL(delKey, EEventKey);                                                                
 18468                                     }                               
 18461                                     }                               
 18469                                 InsertTextFromDialogL(charAsDesc, cursorSelection);
       
 18470 //There may be several char to be inserted, need disable Focus change to avoid multi-focus change.
 18462 //There may be several char to be inserted, need disable Focus change to avoid multi-focus change.
 18471 #ifdef RD_SCALABLE_UI_V2 
 18463 #ifdef RD_SCALABLE_UI_V2 
 18472                                 iDisalbleFocusChangeForSCT = ETrue;
 18464                                 iDisalbleFocusChangeForSCT = ETrue;
 18473 #endif
 18465 #endif       
       
 18466                                 InsertTextFromDialogL(charAsDesc, cursorSelection);
 18474                                 }
 18467                                 }
 18475                             // Clear dead key, vowel sequence and vietnamese tone mark states.                         
 18468                             // Clear dead key, vowel sequence and vietnamese tone mark states.                         
 18476                             iPtiEngine->HandleCommandL(EPtiCommandGetAndClearLastVietnameseChar, 
 18469                             iPtiEngine->HandleCommandL(EPtiCommandGetAndClearLastVietnameseChar, 
 18477                                                        NULL);
 18470                                                        NULL);
 18478                             iPtiEngine->HandleCommandL(EPtiCommandClearVowelSeq, 
 18471                             iPtiEngine->HandleCommandL(EPtiCommandClearVowelSeq, 
 18481                                                        NULL);                            
 18474                                                        NULL);                            
 18482                             }
 18475                             }
 18483                         }
 18476                         }
 18484                     }
 18477                     }
 18485                 }
 18478                 }
       
 18479 #ifdef RD_SCALABLE_UI_V2 
       
 18480             
       
 18481             if( iFepFullyConstructed && iFepPluginManager)
       
 18482                 {
       
 18483                  if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
       
 18484                      iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
       
 18485                      iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)
       
 18486                     {
       
 18487                     SetStopProcessFocus(EFalse);
       
 18488                     }            
       
 18489                  else
       
 18490                     {
       
 18491                     HandleChangeInFocus();
       
 18492                     }
       
 18493                 }
       
 18494             else
       
 18495                 {
       
 18496                 HandleChangeInFocus();
       
 18497                 }   
       
 18498             // Set the flag, not change focus for next.
       
 18499             iDisalbleFocusChangeForSCT = ETrue;           
       
 18500 #endif
 18486             }
 18501             }
 18487         else
 18502         else
 18488             {
 18503             {
 18489             iClosePeninputUi = EFalse;
 18504             iClosePeninputUi = EFalse;
 18490             iStopProcessFocus = EFalse;                   
 18505             iStopProcessFocus = EFalse;