fep/aknfep/inc/AknFepPluginManager.h
branchRCL_3
changeset 44 ecbabf52600f
child 50 5a1685599b76
equal deleted inserted replaced
43:ebd48d2de13c 44:ecbabf52600f
       
     1 /*
       
     2 * Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0""
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:           
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 
       
    22 
       
    23 
       
    24 
       
    25 
       
    26 
       
    27 
       
    28 
       
    29 #ifndef __AKN_FEP_PLUGIN_MANAGER__
       
    30 #define __AKN_FEP_PLUGIN_MANAGER__
       
    31 
       
    32 // INCLUDES
       
    33 #include <gulicon.h>
       
    34 #include <barsread.h>
       
    35 #include <aknfeppensupportinterface.h>
       
    36 #include <peninputclient.h>
       
    37 #include <aknextendedinputcapabilities.h>
       
    38 #include <eikedwob.h>          // for MEikEdwinObserver
       
    39 
       
    40 #include "AknFepGlobalEnums.h"
       
    41 #include <aknfeppeninputenums.h>
       
    42 #include "AknFepPluginMenuManager.h"
       
    43 #include "AknFepSharedDataInterface.h"
       
    44 #include "AknFepManager.h"
       
    45 #include "AknFepCaseManager.h"
       
    46 #include <peninputsrveventhandler.h>
       
    47 
       
    48 // FORWARD DECLARATIONS
       
    49 //class MPeninputServerEventHandler;
       
    50 class MAknFepManagerInterface;
       
    51 class CAknFepUiSpellContainer;
       
    52 class CPenInputGSInterface;
       
    53 class CConnectAo;
       
    54 
       
    55 // CLASS DECLARATION
       
    56 
       
    57 
       
    58 /** 
       
    59  * Plugin command type
       
    60  */
       
    61 enum TPluginCmd
       
    62     { 
       
    63     EPluginCloseMode,
       
    64     EPluginSyncFepAwareText,
       
    65     EPluginSetDataQueryShown,
       
    66     EPluginActivate,
       
    67     EPluginMenuCmd,
       
    68     EPluginFocusChanged,
       
    69     EPluginResourceChanged,
       
    70     EPluginFaseSwap,
       
    71     EPluginKeyEvent,
       
    72     EPluginUpdateIndicator,
       
    73     EPluginActivateInGlobalNote,
       
    74     EGainForeground,
       
    75     ELostForeground,    
       
    76     EPluginEditorActivate,
       
    77     EPluginForegroundChanged,
       
    78     EPluginFocusItemDestroy,
       
    79     EPluginLanguageChanged,
       
    80     EPluginPreview,
       
    81     EPluginPromptChanged,
       
    82     EPluginShowCandidate,
       
    83     EPluginShowTooltip,
       
    84     EPluginHideTooltip,
       
    85     EPluginSwitchToPortrait,
       
    86     EPluginSwitchToLandscape,
       
    87     EPluginSwitchMode,
       
    88     EPluginUpdatePenInputITIStatus,
       
    89 	EPluginEnableFetchDimState,
       
    90     EPluginArabicNumModeChanged,
       
    91 	EPluginEnablePriorityChangeOnOriChange
       
    92     };
       
    93 
       
    94 /** 
       
    95  * Plugin synchronization type
       
    96  */
       
    97 enum TPluginSync
       
    98     { 
       
    99     EPluginSyncCurSel,
       
   100     EPluginSyncUpdatedText,
       
   101     EPluginSyncAll
       
   102     };
       
   103     
       
   104 #ifdef RD_SCALABLE_UI_V2
       
   105 
       
   106 /**
       
   107  * CAknFepPluginManager class.
       
   108  *
       
   109  *  @lib AknFep.lib
       
   110  *  @since 2.8
       
   111  */
       
   112 class CAknFepPluginManager : 
       
   113     public CBase,
       
   114     public MAknFepPenSupportInterface,
       
   115     public MPeninputServerEventHandler,
       
   116     public MEikEdwinObserver
       
   117     { 
       
   118 public:
       
   119 	
       
   120 	/**
       
   121 	 * Simulate event mode
       
   122 	 * @remark: Used in SubmitUiPluginTextL()
       
   123 	 */	
       
   124 	enum TSimulateEventMode
       
   125 		{
       
   126 		EIgnor,
       
   127 		ERawEvent,
       
   128 		EKeyEvent	
       
   129 		};
       
   130 		
       
   131      /**
       
   132      * NewL first phase construction
       
   133      *
       
   134      * @param aFepMan fep manager
       
   135      *
       
   136      */
       
   137     static CAknFepPluginManager* NewL( CAknFepManager& aFepMan,
       
   138                                       CAknFepSharedDataInterface& aSharedData,
       
   139                                       CAknFepLanguageManager& aLangMan,
       
   140                                       CAknFepCaseManager& aCaseMan );
       
   141 
       
   142      /**
       
   143      * Destructor
       
   144      */
       
   145     virtual ~CAknFepPluginManager();
       
   146     
       
   147 private:
       
   148 
       
   149      /**
       
   150      * private constructor
       
   151      */
       
   152     CAknFepPluginManager( CAknFepManager& aFepMan,
       
   153                          CAknFepSharedDataInterface& aSharedData,
       
   154                          CAknFepLanguageManager& aLangMan,
       
   155                          CAknFepCaseManager& aCaseMan );     
       
   156     
       
   157      /**
       
   158      * Construct
       
   159      *
       
   160      * @param aFepMan fep manager
       
   161      *
       
   162      */
       
   163     void ConstructL();
       
   164 
       
   165 public :
       
   166      
       
   167     enum TSpellCBA
       
   168         {
       
   169         ESpellCBANone,
       
   170         ESpellCBACancelEmpty,
       
   171         ESpellCBAOkCancel,
       
   172         };
       
   173     
       
   174 public:
       
   175 
       
   176 // From MAknFepPenSupportInterface
       
   177     
       
   178     /**
       
   179      *  From MAknFepPenSupportInterface
       
   180      *  Activate pen input method
       
   181      *
       
   182      *  @since 3.2
       
   183      *  @Return None
       
   184      */
       
   185     void ActivatePenInputL();
       
   186 
       
   187     /**
       
   188      *  From MAknFepPenSupportInterface
       
   189      *  Deactivate pen input method
       
   190      *
       
   191      *  @since 3.2  
       
   192      *  @Return None
       
   193      */
       
   194     void DeactivatePenInputL();
       
   195 
       
   196 // From MPeninputServerEventHandler
       
   197         
       
   198     /**
       
   199      * From MPeninputServerEventHandler
       
   200      * Handle pen input server events.
       
   201      *
       
   202      * @since 3.2
       
   203      * @param aEventId Event to handle.
       
   204      * @return ETrue If server event handled
       
   205      */
       
   206     TBool HandleServerEventL(TInt aEventId);
       
   207     
       
   208     /**
       
   209      *  Handle events from FEP
       
   210      *  suggested mode.
       
   211      *  
       
   212      *  @since 3.2
       
   213      *  @param aEventType, event type from FEP
       
   214      *  @param aEventData, event data from FEP
       
   215      *  @return ETrue successful, EFalse otherwise
       
   216      */
       
   217     void HandleEventsFromFepL( TInt aEventType, TInt aEventData );
       
   218 
       
   219     /**
       
   220      *  Change current input method to plugin input method with
       
   221      *  suggested mode.
       
   222      *  
       
   223      *  @since 3.2
       
   224      *  @return ETrue successful, EFalse otherwise
       
   225      */
       
   226     TBool TryChangePluginInputModeByModeL(TPluginInputMode aSuggestMode, TInt aOpenMode, 
       
   227                                           TInt aSuggestRange);
       
   228     
       
   229     /**
       
   230      *  Close plugin input mode, reset iPluginInputMode
       
   231      *  to EPluginInputModeNone
       
   232      *
       
   233      *  @since 3.2
       
   234      *  @param aRestore, If ETrue, restor rembered HKB mode
       
   235      *  @return None
       
   236      */
       
   237     void ClosePluginInputModeL(TBool aRestore);
       
   238     
       
   239         /**
       
   240      *  Close plugin input UI, only close UI
       
   241      *
       
   242      *  @param aResetState If ETrue, reset UI state
       
   243      *  to initial.
       
   244      *  @return None.
       
   245      */
       
   246     void ClosePluginInputUiL(TBool aResetState);
       
   247        
       
   248     /**
       
   249      * Handle resource change.
       
   250      * 
       
   251      * @param aType The resource type
       
   252      * @return None.
       
   253      */
       
   254     void OnResourceChangedL(TInt aType);
       
   255          
       
   256     /**
       
   257      *  Synchronize plugin UI text with editor
       
   258      *
       
   259      *  @since 3.2
       
   260      *  @return None
       
   261      */
       
   262     void SyncFepAwareText( TPluginSync aSyncType = EPluginSyncCurSel, TBool aSendNow = ETrue );
       
   263 
       
   264     /**
       
   265      * Processes commands from the edit menu
       
   266      * 
       
   267      * @since 3.2
       
   268      * @param aCommandId The menu command id
       
   269      * @return None.
       
   270      */
       
   271     void ProcessMenuCommandL(TInt aCommandId);
       
   272 
       
   273     /**
       
   274      * Handle key events
       
   275      * 
       
   276      * @since 3.2
       
   277      * @param aCommandId The key id
       
   278      * @return None.
       
   279      */
       
   280     void HandleKeyEventL(TInt aKeyId);
       
   281     
       
   282     /**
       
   283      * initialize the edit menu depending on fep and editor state
       
   284      * 
       
   285      * @since 3.2
       
   286      * @param aMenuPane The pointer to menu pane
       
   287      * @return None.
       
   288      */
       
   289     void InitMenuPaneL( CAknEdwinState* aEditorState, 
       
   290         CAknFepUiInterfaceMenuPane* aMenuPane, TInt aResourceId );
       
   291     
       
   292     /**
       
   293      * Handles notifications that the UI has changed focus
       
   294      * 
       
   295      * @since 3.2
       
   296      * @param aFepFullyConstructed The flag of fep fully constructed
       
   297      * @return None.
       
   298      */
       
   299     void OnFocusChangedL( TBool aGainForeground );
       
   300 
       
   301             
       
   302     /**
       
   303      * Set ICF data
       
   304      *
       
   305      * @since 3.2
       
   306      * @param aTextChanged If editor text changed
       
   307      * @param aIcfData ICF data
       
   308      * @return None
       
   309      */
       
   310     void SendIcfDataL(  TPluginSync aSyncType = EPluginSyncCurSel );            
       
   311     /**
       
   312      * Set editor cursor selection according plugin UI 
       
   313      * cursor state
       
   314      *
       
   315      * @since 3.2
       
   316      * @param aCurSel Cursor position.
       
   317      * @param aSyncCursor ETrue if plug in UI need update cursor, EFalse otherwise
       
   318      * @return None
       
   319      */
       
   320     void SetCursorSelectionL(const TCursorSelection& aCurSel, TBool aSyncCursor);
       
   321     
       
   322     HBufC*  GetNumberKeymapResource(TInt aCaseMode);
       
   323     
       
   324     HBufC*  DoGetNumberKeymapResourceL(TInt aCaseMode);
       
   325     
       
   326     MAknFepManagerInterface* CurrentFepInputUI();
       
   327     
       
   328     void SetFingerMatchSelectionState(TBool aMatchStateOn);
       
   329     TBool IsVisible();
       
   330 
       
   331     // send all predictive candidates at once
       
   332     void ShowAllCandidates();
       
   333     
       
   334     void ResetCandidateList();
       
   335     
       
   336     void UpdateFSQIndicator();
       
   337     void UpdateITUTIndicator();
       
   338     
       
   339     void SetITUTSpellingStateL(TBool aState);
       
   340     
       
   341     void DisplaySpellEditor(const TInt aEditorFlag, const TDesC& aInitText, 
       
   342                             TCursorSelection aCurSel);
       
   343     void DisplaySpellEditorL(const TInt aEditorFlag, const TDesC& aInitText, 
       
   344                            TCursorSelection aCurSel);                            
       
   345     
       
   346     void HideSpellEditor();
       
   347     
       
   348     HBufC* SpellTextInput();
       
   349     void SetTCursorSelection();
       
   350     
       
   351     void HandleEdwinEventL(CEikEdwin* , TEdwinEvent aEventType);
       
   352     
       
   353     TInt GetSoftKeyResID();
       
   354     
       
   355     void HasNoFreeSpace();
       
   356 
       
   357     TBool EnterMatchSelectionState();
       
   358     
       
   359     TPluginInputMode PluginInputMode();
       
   360     
       
   361     void UpdateCaseMode();
       
   362     
       
   363     TBool IsGlobleNotes();
       
   364     TBool IsDimed();
       
   365     /**
       
   366      *  Save the cursor visibility. This function is called from fep side, 
       
   367      *  because of sync cursor visibility
       
   368      *
       
   369      *  @since v5.0
       
   370      */
       
   371     void SetCursorVisibility(TBool aVisibility, TBool aReportPlugin = EFalse);
       
   372     /**
       
   373      * Get the correct indicator for VKB;
       
   374      *
       
   375      * @return The correct indicator state for VKB.     
       
   376      */
       
   377     TAknEditingState VKBIndicatorState( TAknEditingState aOldState );
       
   378     void ClosePeninputSetting();
       
   379 
       
   380     /**
       
   381      * Show tooltip on FSQ to show the best guess word shown inline,
       
   382      * when it is necessary
       
   383      *
       
   384      * @param aText The tooltip text to be displayed
       
   385      * @return None
       
   386      */
       
   387     void ShowTooltipOnFSQL( TInt aSecondaryIdx );    
       
   388 
       
   389     /**
       
   390      * Hide tooltip on FSQ if necessary
       
   391      *
       
   392      * @return None
       
   393      */
       
   394      void HideTooltipOnFSQL();  
       
   395      
       
   396     /**
       
   397      * Open a candidate list to show contents in aItemArray
       
   398      *
       
   399      * @param aCandidateList ITI candidate data
       
   400      * @return None
       
   401      */
       
   402     void ShowCandidateListL( TFepITICandidateList aCandidateList );
       
   403     
       
   404     /**
       
   405      * Hide candidate list
       
   406      *
       
   407      */
       
   408     void HideCandidateListL();
       
   409 
       
   410     /**
       
   411      * Commit candidate word on FSQ
       
   412      * 
       
   413      * @param aIndex the index in candidate lists;
       
   414      * @return None
       
   415      */    
       
   416     void CommitCandidateWordOnFSQL( TInt aIndex );
       
   417     
       
   418     /**
       
   419      * Check if ITI features is enabled when FSQ is opened.
       
   420      */
       
   421     TBool EnableITIOnFSQ();
       
   422 
       
   423     /**
       
   424      * Check if ITI can be supported by FSQ.
       
   425      */
       
   426     TBool IsSupportITIOnFSQ();
       
   427     
       
   428     /**
       
   429      * Restore some configuration after closing FSQ.
       
   430      *     
       
   431      */
       
   432     void ResetItiStateL();    
       
   433 
       
   434 /*    
       
   435 #ifdef RD_TACTILE_FEEDBACK
       
   436     TBool VKBIsOpened();
       
   437 #endif // RD_TACTILE_FEEDBACK
       
   438 */
       
   439 
       
   440     void HandleiDimGainForeground(TBool aGain);
       
   441 
       
   442     void OnServerReady(TInt aErr);
       
   443     
       
   444     /**
       
   445      *  Remove last focused window,which launches touch input, from open list.
       
   446      *
       
   447      *  @since v5.0
       
   448      */
       
   449     void RemoveLastFocusedWinFromOpenList();
       
   450     
       
   451     /**
       
   452      * Set the editor pointer to NULL
       
   453      *
       
   454      * @since v5.0
       
   455      * @param none
       
   456      * @return void
       
   457      */
       
   458     void ClearDestroyedEditorPointer();
       
   459     
       
   460     /**
       
   461      * Get the editor state
       
   462      *
       
   463      * @since v5.0
       
   464      * @param none
       
   465      * @return the pointer of editor state
       
   466      */
       
   467     CAknEdwinState* EdwinState();
       
   468     
       
   469 public: // inline    
       
   470     
       
   471     /**
       
   472      * Get current plugin input UI
       
   473      *
       
   474      * @since 3.2
       
   475      * @return The pointer to MAknFepManagerInterface
       
   476      */      
       
   477     inline MAknFepManagerInterface* CurrentPluginInputFepUI();
       
   478     
       
   479     /**
       
   480      * Get current plugin input mode
       
   481      *
       
   482      * @since 3.2
       
   483      * @return current plugin input mode
       
   484      */      
       
   485     
       
   486     inline TBool PluginNativeRange();
       
   487     
       
   488     inline void SetPluginNativeRange( TBool aPluginNativeRange );
       
   489     
       
   490     inline TBool SyncWithPluginRange();
       
   491     
       
   492     inline RPointerArray<HBufC>& MatchCandidateList();    
       
   493 
       
   494     inline TBool IsMatchState();  
       
   495     
       
   496     inline TBool IsSpellVisible();
       
   497     
       
   498     inline void SetCursorSelection(TCursorSelection& aCursorSel); 
       
   499     
       
   500     inline TCursorSelection CursorSelection(); 
       
   501     
       
   502     inline void SetCaseUpdatesSupressed(TBool aCaseUpdatesSupressed);
       
   503     inline TBool CaseUpdatesSupressed();
       
   504     
       
   505     inline void SetBeforeSpell(TBool aBeforeSpell);
       
   506     inline TBool BeforeSpell();
       
   507     inline HBufC* GetSpellText();
       
   508     inline void SpellText(HBufC* aSpellText);
       
   509     inline TBool IsNonLatinLanguage(TLanguage aLang);
       
   510     inline TInt PreviousPermitMode();
       
   511     /**
       
   512      *  In T9 predictive text input, if user press "Spell" button, a edit word query dialog is opened.  
       
   513      *  This Flag is set for this case to indicate whether edit wod query dialog is opened.
       
   514      *  @param aIsEditWordQueryDlg  ETrue means dialog is open,
       
   515                                     EFalse means dialog is not open.
       
   516      *  @since v5.0
       
   517      */    
       
   518     inline void SetInEditWordQueryFlag(TBool aIsEditWordQueryDlg );    
       
   519     void LaunchPenInputLanguageSelectionL( TBool aLaunchedByTouchWin = EFalse );
       
   520     void LaunchPenInputRecognitionWithDictionarySelectionL();
       
   521     void LaunchPenInputWritingSpeedSelectionL();
       
   522     void LaunchPenInputGuidingLineSelectionL();
       
   523   inline TBool IsInGlobleNoteEditor();
       
   524     void SetMenuState(TBool aUpdateEditor = ETrue);
       
   525     void ResetMenuState(TBool aUnDim = ETrue);
       
   526     
       
   527     /**
       
   528      * When ITI setting opened, set this flag to ETrue
       
   529      *  
       
   530      * @param aOpen  ETrue means dialog is open,
       
   531      *               EFalse means dialog is not open.
       
   532      * @return None  
       
   533      */    
       
   534     inline void ITISettingDialogOpen( TBool aOpen );
       
   535     
       
   536     /**
       
   537      * Check if tooltip box on FSQ is opened.
       
   538      *
       
   539      * @return if ETrue: Tooltip box on FSQ is enabled.
       
   540      */    
       
   541     inline TBool IsTooltipOpenOnFSQ();
       
   542     
       
   543     /**
       
   544      * Get whether inMenu has been opened.
       
   545      * InMenu is that any pop-up dialog, e.g. menu, SCT, is launched by fep.
       
   546      * 
       
   547      * @since 5.0
       
   548      * @return whether inMenu has been opened
       
   549      */     
       
   550     inline TBool IsInMenuOpen();
       
   551     
       
   552     /**
       
   553      * Get current plugin input mode even if current window is close.
       
   554      * The function is defferent from PluginInputMode(), PluginInputMode() 
       
   555      * return EPluginInputModeNone if current input window is closed
       
   556      * 
       
   557      * @since 5.0
       
   558      * @return current plugin input mode
       
   559      */      
       
   560     inline TPluginInputMode CurrentPluginInputMode();
       
   561     
       
   562     inline void SetLaunchSCTInSpell( TBool aLaunchSCTInSpell );
       
   563 private: 
       
   564 
       
   565     /**
       
   566      *  Initialize plugin UI, set permitted ranges, primary
       
   567      *  range, case mode and etc.
       
   568      *  
       
   569      *  @since 3.2
       
   570      *  @Return None
       
   571      */
       
   572     void InitializePluginInputL(TInt aOpenMode, TInt aSuggestRange, TBool aCleanContent);
       
   573 
       
   574     /**
       
   575      * Launch plugin menu
       
   576      *
       
   577      * @since 3.2
       
   578      * @param aResource Menu resource id.
       
   579      * @return None
       
   580      */
       
   581     void LaunchPenInputMenuL(TInt aResourceId, TBool aRemeber = ETrue);
       
   582         
       
   583     /**
       
   584      *  Show pen input language setting of general setting view
       
   585      *
       
   586      *  @since 3.2
       
   587      *  @return None
       
   588      */
       
   589         
       
   590     /**
       
   591 	 *  Show pen input setting of general setting view
       
   592      *  @since 3.2
       
   593      *  @param aData Key data
       
   594      *  @return None
       
   595      */
       
   596     void LaunchPenInputSettingL();
       
   597        
       
   598     /**
       
   599      * Parse editor text passed to plugin ICF
       
   600      * Only return current paragraph of current cursor position.
       
   601      *
       
   602      *  @since 3.2
       
   603      *  @param aBuffer Editor text
       
   604      *  @param aCurrent Current cursor position.
       
   605      *  @param aFrom Returned paragraph start pos.
       
   606      *  @param aTo Returned paragraph end pos.
       
   607      *  @return None
       
   608      */
       
   609     void ParseInputContextContent(TDes& aBuffer, TInt aCurrent, 
       
   610                                   TInt& aFrom, TInt& aTo);
       
   611     
       
   612                                       
       
   613     /**
       
   614      *  Submit text input from plugin UI to editor
       
   615      *
       
   616      *  @since 3.2
       
   617      *  @param aData Key data
       
   618      *  @param aForcedMode Forced simluate event mode.
       
   619      *  @return None
       
   620      */
       
   621     void SubmitUiPluginTextL(const TDesC& aData, 
       
   622     						 TSimulateEventMode aForcedMode = EIgnor);
       
   623 
       
   624     /**
       
   625      *  Handle key event sent from pen input server
       
   626      *
       
   627      *  @since 3.2
       
   628      *  @param aData Key data
       
   629      *  @return None
       
   630      */
       
   631     void OnPenInputServerKeyEventL(const TDesC& aData);   
       
   632     
       
   633     /**
       
   634      *  Sync indicator with plugin range
       
   635      *  
       
   636      *  @since 3.2
       
   637      *  @Return None
       
   638      */
       
   639     void SyncIndicatorWithPluginRangeL();
       
   640      
       
   641     /**
       
   642      *  Get current suggest mode
       
   643      *  
       
   644      *  @since 3.2
       
   645      *  @param aSuggestMode The mode suggested
       
   646      *  @Return None
       
   647      */    
       
   648     TBool GetCurSuggestMode( TPluginInputMode& aSuggestMode );
       
   649     
       
   650     /**
       
   651      *  Connect server
       
   652      *  
       
   653      *  @since 3.2
       
   654      *  @Return ETrue If connection sucess
       
   655      */
       
   656     TBool ConnectServer();
       
   657     
       
   658     /**
       
   659      *  Notify layout
       
   660      *  
       
   661      *  @since 3.2
       
   662      *  @param aOpenMode The current input mode
       
   663      *  @param aSuggestRange The suggest range
       
   664      *  @Return None
       
   665      */
       
   666     void NotifyLayoutL(TInt aOpenMode, TInt aSuggestRange, TBool aCleanContent);
       
   667     
       
   668     /**
       
   669      *  verify if mode switch button enable
       
   670      *  
       
   671      *  @since 3.2
       
   672      *  @Return ETrue if mode switch button enable
       
   673      */
       
   674     TBool IsEnableModeSwitchBtn();
       
   675     
       
   676     /**
       
   677      *  verify if setting buttons enable
       
   678      *  
       
   679      *  @since 3.2
       
   680      *  @Return ETrue if setting buttons enable
       
   681      */
       
   682     TBool IsEnableSettingBtn();
       
   683     
       
   684     /**
       
   685      *  Notify layout the editor's keymapping
       
   686      *  
       
   687      *  @since 3.2
       
   688      *  @Return None
       
   689      */
       
   690     void NotifyLayoutKeymappingL();
       
   691              
       
   692     /**
       
   693 	 *  Test data query show status
       
   694      *  @since 3.2
       
   695      *  
       
   696      *  @return ETrue if data query is showing now, EFalse otherwise
       
   697      */
       
   698     TBool IsDisplayDataQuery();
       
   699     
       
   700     /**
       
   701 	 *  Show pen input setting of general setting view
       
   702 	 *
       
   703      *  @since 3.2
       
   704      *  @param aForce ETrue means adjusting data query no matter current showing status,
       
   705                       EFalse means adjusting data query window only first time
       
   706      *  @return None
       
   707      */
       
   708     void RepositionDataQuery(TBool aForce);
       
   709     
       
   710     /**
       
   711      * Timer procedure for adjust data query position
       
   712      *
       
   713      * @param aPtr The pointer of CAknFepManager itself
       
   714      * @since 3.2
       
   715      * @return 0.(meaningless)
       
   716      */
       
   717     static TInt AdjustDataQueryCallBackL(TAny *aPtr);
       
   718     
       
   719     
       
   720     static void FepObserverHandleCompletionOfTransactionL(MCoeFepObserver& aFepObserver);
       
   721     
       
   722     void CreateFingerItutChineseUiL();
       
   723 
       
   724     /**
       
   725      * Launch Hwr Training UI
       
   726      * 
       
   727      * @since 3.2
       
   728      * @return None
       
   729      */
       
   730     void LaunchHwrTrainUiL();
       
   731     
       
   732     TBool GetIndicatorImgID(const TInt IndicatorUID,TInt &aImage, TInt &aMask);
       
   733     TBool GetIndicatorImgIDL(const TInt IndicatorUID,TInt &aImage, TInt &aMask);
       
   734     
       
   735     void SetPromptText( TBool aCleanContent = ETrue );
       
   736     
       
   737     void SetIcfAlignment();
       
   738     
       
   739     void ConvertDigitToDigittype(TDigitType& digittype,TDes& aConvertedNumeral);
       
   740 
       
   741     void GetAllPredictiveCandidate();
       
   742     void GetAllPredictiveCandidateL();
       
   743     
       
   744     void AddCurrentWinToOpenListL();
       
   745     
       
   746     void AddWinToOpenListL( RDrawableWindow* aWin);
       
   747     
       
   748     void RemoveCurrentWinFromOpenList();
       
   749     
       
   750     TBool IsCurrentWindInOpenList();
       
   751     
       
   752     TBool ExistInlineText();
       
   753     
       
   754     TBool SetSyncCurSelIcfDataL( TFepInputContextFieldData& aIcfData );
       
   755     
       
   756     TBool SetSyncIcfDataL( TFepInputContextFieldData& aIcfData, 
       
   757                           const TDesC& aLastEditorContent,
       
   758                           const TDesC& aCurrentEditorContent );
       
   759                           
       
   760     TBool TextInlined( const TDesC& aLastEditorContent, const TDesC& aCurrentEditorContent);
       
   761     
       
   762     TBool TextInserted( const TDesC& aLastEditorContent, const TDesC& aCurrentEditorContent);
       
   763                                           
       
   764     TBool TextDeleted( const TDesC& aLastEditorContent, const TDesC& aCurrentEditorContent);
       
   765 
       
   766     TBool TextMultiTapped( const TDesC& aLastEditorContent, const TDesC& aCurrentEditorContent);
       
   767 
       
   768 	void AdjustDataCase( TDes& aData );
       
   769 	
       
   770 	TBool IsDimArrowKeys();
       
   771 	
       
   772 	void LaunchHelpL();
       
   773 	void DimAllModeAndCase(CAknFepUiInterfaceMenuPane* aMenuPane);
       
   774 	
       
   775 	TInt RepeatStringFromLeft(const TDesC& aSubmitData, TDes& aEditorData);
       
   776 
       
   777     void InformMfneUiStatusL( TBool aOpened );
       
   778     
       
   779     /** 
       
   780      * Update editor state according to current ui state
       
   781      * 
       
   782      * @since Symbian^3 
       
   783      * @param aOpened specifies current ui is opened or closed
       
   784      */
       
   785     void SetEdwinFlagsByUiStatus( TBool aOpened );
       
   786     
       
   787     /** 
       
   788      * Update state flags of specified editor
       
   789      * 
       
   790      * @since Symbian^3 
       
   791      * @param aEdwin  specifies the editor to be updated
       
   792      * @param aFlags  editor state flags
       
   793      * @param aSet    ETrue to add flags, or EFalse to remove flags.
       
   794      */
       
   795     void SetAknEdwinFlags( MCoeFepAwareTextEditor* aEdwin, TInt aFlags, TBool aSet );
       
   796     
       
   797     void UpdatePredicState();
       
   798                             
       
   799     TBool NotifyInGlobalNoteEditorL();
       
   800 
       
   801     TBool IsChineseIndicator( TAknEditingState aOldState );
       
   802     
       
   803     TBool IsEditorCursorDisabled();
       
   804 
       
   805     /**
       
   806      * Check if the cusror in editor is visible.
       
   807      *
       
   808      * @return ETrue: the cursos in editor is visible.
       
   809      *         EFalse: the cursos in editor is invisible.
       
   810      */
       
   811     TBool IsEditorCursorVisible();
       
   812     
       
   813 
       
   814     /**
       
   815      * Check if curor selection in editor is visible.
       
   816      *
       
   817      * @return ETrue: the cursos in editor is visible.
       
   818      *         EFalse: the cursos in editor is invisible.
       
   819      */    
       
   820     TBool IsEditorCursorSelVisible();
       
   821        
       
   822     /**
       
   823      * Get scan code from hw keymapping.
       
   824      *
       
   825      * @param aKeyCode unicode of each virutal key text.
       
   826      */
       
   827     TInt GetScanCodeFromHwKeymapping( TUint aKeyCode );
       
   828     
       
   829     /**
       
   830      * Check if those keys are IIT-supported keys
       
   831      *
       
   832      * @param aKeyEvent The keys to be checked.
       
   833      */
       
   834     TBool IsITISupportedKey( const TKeyEvent& aKeyEvent );
       
   835     
       
   836     TPtiTextCase CaseForMappedCharacter(TChar aCharacter);
       
   837     
       
   838     TBool IsNeedToChangeTextCase( const TPtiTextCase& aTextCase );
       
   839     
       
   840     /**
       
   841      * Do some configuration to make FSQ support ITI features
       
   842      *     
       
   843      */
       
   844     void SetItiStateL();
       
   845     
       
   846     /**
       
   847       * Config keyboard layout for ITI
       
   848       *     
       
   849       */
       
   850     void SetItiKeyboardLayoutL();
       
   851 
       
   852     /**
       
   853      * Restore keyboard layout after closing FSQ.
       
   854      */
       
   855     void ResetItiKeyboardLayoutL();
       
   856     
       
   857     /**
       
   858      * Restore predict state.
       
   859      */
       
   860     void RestorePredictStateL();
       
   861     
       
   862     /**
       
   863      * Check if the keycode belongs to dead keys.
       
   864      *     
       
   865      * @param aKeyCode: key code to be checked
       
   866      * @return ETrue: belongs to ETrue
       
   867      *         EFalse: doesn't belong to EFalse;
       
   868      */
       
   869     TBool IsDeadKeyCode( TUint aKeyCode );
       
   870     
       
   871     /**
       
   872      * Notify app touch window state.
       
   873      *     
       
   874      * @param aParam
       
   875      * @return None
       
   876      */
       
   877     void NotifyAppUiImeTouchWndStateL( const TBool aTouchState );
       
   878         
       
   879     /**
       
   880      * Check if current editor support partial screen IMEs
       
   881      * 
       
   882      * @return ETrue if support  
       
   883      */
       
   884     TBool IsEditorSupportSplitIme();
       
   885     
       
   886     void SetICFTextForSpellL();
       
   887     
       
   888     void SendMatchListCmd(const RArray<TPtrC>& aList);
       
   889 	/**
       
   890 	 * Initialize the Menu item in Option Menu for Arabic Finger HWR
       
   891 	 *
       
   892 	 * @CAknFepUiInterfaceMenuPane* aMenuPane The menu pane used to add more menu items
       
   893 	 */
       
   894 	void InitMenuItemForArabicFingerHwrL(CAknFepUiInterfaceMenuPane* aMenuPane);
       
   895 
       
   896     /**
       
   897      * andling the menu cmd for changing the input mode
       
   898      *     
       
   899      * @param aInputMode: the inputmode should be activate
       
   900      * @return None
       
   901      */
       
   902     void ProcessChangingInputModeCmdL(TInt aInputMode);
       
   903 	
       
   904 private:    // Data
       
   905     
       
   906     /**
       
   907      * The reference of fep manager
       
   908      */
       
   909     CAknFepManager& iFepMan;
       
   910     
       
   911     /**
       
   912      * The reference of language manager
       
   913      */
       
   914     CAknFepLanguageManager& iLangMan;
       
   915     
       
   916     /**
       
   917      * The reference of case manager
       
   918      */
       
   919     CAknFepCaseManager& iCaseMan;
       
   920     
       
   921     /**
       
   922      * The reference of shared data manager
       
   923      */
       
   924     CAknFepSharedDataInterface& iSharedData;
       
   925 
       
   926 
       
   927     /**
       
   928      * Current plugin UI interface
       
   929      */
       
   930     MAknFepManagerInterface* iCurrentPluginInputFepUI;
       
   931 
       
   932     /**
       
   933      * Current plugin input mode
       
   934      */
       
   935     TPluginInputMode iPluginInputMode;
       
   936     
       
   937     /**
       
   938      * Current plugin primary range
       
   939      */
       
   940     TInt iPluginPrimaryRange;
       
   941 
       
   942     /**
       
   943      * Update editor cursor timer
       
   944      */
       
   945     CPeriodic* iAdjustDataQueryTimer;
       
   946     
       
   947     /**
       
   948      * HKB predictive state before starting plugin IME
       
   949      */
       
   950     TBool iT9UsedBeforePluginInput;
       
   951     
       
   952     /**
       
   953      * Indicating connection state to pen input server
       
   954      */
       
   955     TBool iAutoCompBeforePluginInput;
       
   956     /**
       
   957      * Indicating connection state to pen input server
       
   958      */
       
   959     TBool iPenInputSvrConnected;
       
   960     
       
   961     /**
       
   962      * flags of layout UI submit status
       
   963      */
       
   964     TInt iLastSubmitCount;
       
   965     
       
   966     /**
       
   967      * Data query showing status
       
   968      */
       
   969     TBool iDataQueryAlreadyShow;
       
   970     
       
   971     /**
       
   972      * Plugin menu manager object
       
   973      */
       
   974     CAknFepPluginMenuManager* iPenInputMenu;
       
   975 
       
   976     /**
       
   977      * Pen input server handle
       
   978      */
       
   979     RPeninputServer iPenInputServer;
       
   980     
       
   981     /**
       
   982      * flags of language has been changed by setting
       
   983      */
       
   984     TInt iCurLanguage;
       
   985     
       
   986     /**
       
   987      * flags of fast swap by menu
       
   988      */
       
   989     TBool iFastSwapByMenu;
       
   990     
       
   991     MAknFepManagerInterface* iFingerItutChineseUI;
       
   992     
       
   993     TCursorSelection iCurSelPre;
       
   994     
       
   995     TCursorSelection iCurSelCur;
       
   996     
       
   997     TPluginSync iSyncType;
       
   998     
       
   999     HBufC* iIcfDataBuf;
       
  1000     
       
  1001     RPointerArray<HBufC> iCandidateList;
       
  1002     TInt iCandidateIndex;
       
  1003 
       
  1004     TFepInputAllCandidates iSendAllList;
       
  1005     
       
  1006     TBool iMatchState; 
       
  1007     
       
  1008     TInt iIndicatorImgID;
       
  1009     CAknFepUiSpellContainer* iSpell;
       
  1010     
       
  1011     TBool iSpellOn; 
       
  1012     
       
  1013     TCursorSelection iCursorSel;
       
  1014 
       
  1015     TInt iIndicatorTextID;
       
  1016     
       
  1017     TBool iCaseUpdatesSupressed;
       
  1018     
       
  1019     TBool iBeforeSpell;
       
  1020     
       
  1021     HBufC* iSpellText;
       
  1022     
       
  1023     TSpellCBA iSpellCba;
       
  1024     TBool iPenUiDimmed;
       
  1025     TBool iIsForeground;
       
  1026     
       
  1027     TInt iPreDocumentLengthForFep;
       
  1028     TInt iOpenPenUiFlag;
       
  1029     
       
  1030     TBool iPluginNativeRange;
       
  1031     
       
  1032     TBool iSyncWithPluginRange;
       
  1033     
       
  1034     RArray<TInt> iOpenWindowList;
       
  1035     TInt         iLastFocusedWin;
       
  1036     
       
  1037     HBufC* iLastEditorContentBuf;
       
  1038     
       
  1039     TBool iModeChanged;
       
  1040     
       
  1041     TInt iPreviousCoseMode;
       
  1042     
       
  1043     TBool iLaunchMenu;
       
  1044     TBool iInMenu; // need to check whether it can be replaced by iLaunchMenu
       
  1045     TUint iCurMFNECap;
       
  1046     MCoeFepAwareTextEditor* iCurEditor;
       
  1047     MCoeFepAwareTextEditor* iOldFepAwareEditor;
       
  1048 
       
  1049     RDrawableWindow *    iLastDataQueryWin;
       
  1050     
       
  1051     TInt iDefaultOrientation;
       
  1052     RBuf iEventData;
       
  1053     TBool iDisableSyncText;
       
  1054     TBool iPendingSyncReq;
       
  1055     TBool iHasSWEventCap;
       
  1056     TInt iCurPermitModes;
       
  1057     TBool isLanuchSCT;
       
  1058     TBool iInGlobleNoteEditor;
       
  1059     TBool iOrientationChanged;
       
  1060     TBool iInlineStateOn;
       
  1061     TInt iCharStartPostion;
       
  1062     /**
       
  1063      * Cursor Visibility
       
  1064      */
       
  1065     TInt iEditorPriority;
       
  1066     TBool iDimGainForeground;
       
  1067     TBool iEnableIndicatorBtn;
       
  1068     TBool iEnableSettingBtn;
       
  1069     TBool iEnableArrowBtn;
       
  1070     TBool iCursorVisibility;
       
  1071     TBool iForegroundChange;
       
  1072     TBool iResourceChange;
       
  1073 
       
  1074     TBool iLaunchHelp;
       
  1075     TInt iCurPermittedModes;
       
  1076     MCoeFepAwareTextEditor* iMfne;
       
  1077     
       
  1078     /**
       
  1079      * current focused editor
       
  1080      * not own 
       
  1081      */
       
  1082     MCoeFepAwareTextEditor* iEdwin;
       
  1083     
       
  1084     TBool iMfneChanged;
       
  1085     TBool iIsInEditWordQueryDlg;
       
  1086     
       
  1087 	TBool iPreferredUiMode;
       
  1088 
       
  1089     CRepository* iAvkonRepository;
       
  1090     
       
  1091     TBool iClosePluginInputMode;
       
  1092 	
       
  1093 	TBool iOrientationChangedfromUI;
       
  1094 	
       
  1095 	CPenInputGSInterface* iGsInterface;
       
  1096     RBuf iPreCaption;
       
  1097     TBool iIsPassWord;
       
  1098 
       
  1099     /**
       
  1100      * Store the last keyboard layout.
       
  1101      */
       
  1102     TInt iLastKeyboardLayout;
       
  1103     
       
  1104 
       
  1105     /**
       
  1106      * Indicate if predictive setting dialog opened.
       
  1107      */
       
  1108     TBool iITISettingDialogOpen;
       
  1109     
       
  1110     /**
       
  1111      * Indicate if current input mode is qwerty mode.
       
  1112      */
       
  1113     TBool iIsITIConfigured;
       
  1114     
       
  1115     /**
       
  1116      * Indicate if tooltip on FSQ is opened
       
  1117      */       
       
  1118     TBool iTooltipOpenOnFSQ;    
       
  1119 	
       
  1120 	TInt iAlignment;
       
  1121 
       
  1122     CConnectAo* iConnectAo;    
       
  1123 	
       
  1124     /**
       
  1125      * Indicate if need fetch the dim state from peninputserver
       
  1126      */ 	
       
  1127 	TBool iNeedFetchDimState;
       
  1128 
       
  1129     /**
       
  1130      * save the current dim state
       
  1131      */ 	
       
  1132     TBool iCurrentDimState;
       
  1133     
       
  1134     TBool iLaunchSCTInSpell;
       
  1135 	
       
  1136     TBool iFocuschangedForSpellEditor;
       
  1137     
       
  1138     /**
       
  1139      * Indicate whether portrait FSQ feature is enabled
       
  1140      */    
       
  1141     TBool iPortraitFSQEnabled;
       
  1142     };
       
  1143 
       
  1144 class CConnectAo : public CActive
       
  1145     {
       
  1146 public:
       
  1147 	
       
  1148     CConnectAo(CAknFepPluginManager* aClient);
       
  1149     
       
  1150     /**
       
  1151      * From CActive
       
  1152      * will be called when stroke timer ends
       
  1153      *
       
  1154      * @since S60 v4.0
       
  1155      */
       
  1156     void RunL();
       
  1157 
       
  1158     /**
       
  1159      * From CActive
       
  1160      * will be called if RunL leaves
       
  1161      *
       
  1162      * @since S60 v4.0
       
  1163      */
       
  1164     TInt RunError(TInt aError);
       
  1165 
       
  1166     /**
       
  1167      * From CActive
       
  1168      * will be called when stroke timer has been cancelled
       
  1169      *
       
  1170      * @since S60 v4.0
       
  1171      */
       
  1172     void DoCancel();
       
  1173     void RequestConnect();
       
  1174     TRequestStatus& RequestStatus(); 
       
  1175     
       
  1176     CAknFepPluginManager* iClient;
       
  1177     };
       
  1178 
       
  1179 
       
  1180 // ---------------------------------------------------------------------------
       
  1181 // CAknFepPluginManager::CurrentPluginInputFepUI
       
  1182 // (other items were commented in a header)
       
  1183 // ---------------------------------------------------------------------------
       
  1184 //           
       
  1185 inline MAknFepManagerInterface* CAknFepPluginManager::CurrentPluginInputFepUI()
       
  1186     {
       
  1187     return iCurrentPluginInputFepUI;
       
  1188     }
       
  1189     
       
  1190 inline TBool CAknFepPluginManager::PluginNativeRange()
       
  1191     {
       
  1192     return iPluginNativeRange;
       
  1193     }
       
  1194 
       
  1195 inline TBool CAknFepPluginManager::SyncWithPluginRange()
       
  1196     {
       
  1197     return iSyncWithPluginRange;
       
  1198     }
       
  1199 
       
  1200 inline void CAknFepPluginManager::SetPluginNativeRange( TBool aPluginNativeRange )
       
  1201     {
       
  1202     iPluginNativeRange = aPluginNativeRange;
       
  1203     }
       
  1204 
       
  1205 inline RPointerArray<HBufC>& CAknFepPluginManager::MatchCandidateList()
       
  1206     {
       
  1207     return iCandidateList;    
       
  1208     }
       
  1209 
       
  1210 inline TBool CAknFepPluginManager::IsMatchState()
       
  1211     {
       
  1212     return iMatchState;
       
  1213     }
       
  1214 
       
  1215 inline TBool CAknFepPluginManager::IsSpellVisible()
       
  1216     {
       
  1217     return iSpellOn;
       
  1218     }
       
  1219 
       
  1220 inline void CAknFepPluginManager::SetCursorSelection(TCursorSelection& aCursorSel)
       
  1221     {
       
  1222     iCursorSel = aCursorSel;
       
  1223     }
       
  1224     
       
  1225 inline TCursorSelection CAknFepPluginManager::CursorSelection()
       
  1226     {
       
  1227     return  iCursorSel;
       
  1228     }
       
  1229     
       
  1230 inline void CAknFepPluginManager::SetCaseUpdatesSupressed(TBool aCaseUpdatesSupressed)
       
  1231     {
       
  1232      iCaseUpdatesSupressed = aCaseUpdatesSupressed;
       
  1233     }
       
  1234 
       
  1235 inline TBool CAknFepPluginManager::CaseUpdatesSupressed()
       
  1236     {
       
  1237     return iCaseUpdatesSupressed;
       
  1238     }    
       
  1239 
       
  1240 inline void CAknFepPluginManager::SetBeforeSpell(TBool aBeforeSpell)
       
  1241     {
       
  1242     iBeforeSpell = aBeforeSpell;
       
  1243     }
       
  1244 
       
  1245 inline TBool CAknFepPluginManager::BeforeSpell()
       
  1246     {
       
  1247     return iBeforeSpell;
       
  1248     }
       
  1249     
       
  1250 inline HBufC* CAknFepPluginManager::GetSpellText()
       
  1251     {
       
  1252     return iSpellText;
       
  1253     }
       
  1254 
       
  1255 inline void CAknFepPluginManager::SpellText(HBufC* aSpellText)
       
  1256     {
       
  1257     if (aSpellText)
       
  1258         {
       
  1259         delete iSpellText;
       
  1260         iSpellText = aSpellText->Alloc();   
       
  1261         }
       
  1262     else
       
  1263         {
       
  1264         delete iSpellText;
       
  1265         iSpellText = NULL;
       
  1266         }
       
  1267     }
       
  1268 
       
  1269 inline TBool CAknFepPluginManager::IsNonLatinLanguage(TLanguage aLang)
       
  1270     {
       
  1271     return (aLang == ELangRussian) || (aLang == ELangBulgarian ) ||
       
  1272            (aLang == ELangUkrainian) || (aLang == ELangUrdu ) ||
       
  1273            (aLang == ELangVietnamese) || (aLang == ELangThai ) ||
       
  1274            (aLang == ELangArabic) || (aLang == ELangFarsi ) ||
       
  1275            (aLang == ELangHebrew) ;
       
  1276     }
       
  1277     
       
  1278 inline TInt CAknFepPluginManager::PreviousPermitMode()
       
  1279     {
       
  1280     return iCurPermitModes;   
       
  1281     }
       
  1282 inline void CAknFepPluginManager::SetInEditWordQueryFlag(TBool aIsEditWordQueryDlg )
       
  1283     {
       
  1284     iIsInEditWordQueryDlg = aIsEditWordQueryDlg;
       
  1285     }
       
  1286     
       
  1287 inline TBool CAknFepPluginManager::IsInGlobleNoteEditor()
       
  1288     {
       
  1289     return iInGlobleNoteEditor;    
       
  1290     }
       
  1291 
       
  1292 inline void CAknFepPluginManager::ITISettingDialogOpen( TBool aOpen )
       
  1293     {
       
  1294     iITISettingDialogOpen = aOpen;
       
  1295     }
       
  1296 
       
  1297 inline TBool CAknFepPluginManager::IsTooltipOpenOnFSQ()
       
  1298 	{
       
  1299 	return iTooltipOpenOnFSQ;
       
  1300 	}
       
  1301 
       
  1302 inline TBool CAknFepPluginManager::IsInMenuOpen()
       
  1303     {
       
  1304     return iInMenu;
       
  1305     }
       
  1306 
       
  1307 inline TPluginInputMode CAknFepPluginManager::CurrentPluginInputMode()
       
  1308 	{
       
  1309 	return iPluginInputMode;
       
  1310 	}
       
  1311 
       
  1312 inline void CAknFepPluginManager::SetLaunchSCTInSpell( TBool aLaunchSCTInSpell )
       
  1313 	{
       
  1314 	iLaunchSCTInSpell = aLaunchSCTInSpell;
       
  1315 	}
       
  1316 
       
  1317 #endif //RD_SCALABLE_UI_V2    
       
  1318 
       
  1319 #endif // __AKN_FEP_PLUGIN_MANAGER__
       
  1320 
       
  1321 // End of file