# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1282115206 -10800 # Node ID 2cb9bae34d17094e1da13245b86f8d7128f772b1 # Parent f1bdd6b078d10b0975dde22b63a74719e13a54ce Revision: 201031 Kit: 201033 diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/CenRep/keys_aknfep.xls Binary file fep/aknfep/CenRep/keys_aknfep.xls has changed diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/data/AknFepUiAvkonPlugin.rss --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/data/AknFepUiAvkonPlugin.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - - -#include "registryinfo.rh" - -// Declares info for two implementations -RESOURCE REGISTRY_INFO theInfo - { - // UID for the DLL - dll_uid = 0x10285839; - // Declare array of interface info - interfaces = - { - INTERFACE_INFO - { - // UID of interface that is implemented ime plugin interface - interface_uid = 0x10285779; - implementations = - { - // Info for CImplementation1 - IMPLEMENTATION_INFO - { - implementation_uid = 0x10285839; - version_no = 1; - display_name = ""; - default_data = ""; - opaque_data= ""; - } - }; - } - }; - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/group/AknFepUiAvkonPlugin.mmp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/group/AknFepUiAvkonPlugin.mmp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* MakMake Project file. -* -*/ - - - - - - - - - - - - -#include -#include -#include - -TARGET aknfepuiavkonplugin.dll -TARGETTYPE plugin -// ECom Dll recognition UID followed by the unique UID for this dll -UID 0x10009D8D 0x10285839 -TARGETPATH /system/libs - -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - -MACRO __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ -USERINCLUDE ../inc . -USERINCLUDE ../../../../inc - -// Added APP_LAYER_SYSTEMINCLUDE for header split and relocation activity -APP_LAYER_SYSTEMINCLUDE - -MW_LAYER_SYSTEMINCLUDE - -SYSTEMINCLUDE ../inc -SYSTEMINCLUDE ../../inc -SYSTEMINCLUDE ../../../../../../inc -SYSTEMINCLUDE /epoc32/include/ecom - -SOURCEPATH ../src - -SOURCE AknFepUiAvkonPlugin.cpp -SOURCE AknFepIndicatorAvkon.cpp -SOURCE AknFepUiAvkonImpl.cpp -SOURCE AknFepQuery.cpp -SOURCE AknFepUiAvkonMenus.cpp -SOURCE AknFepUiAvkonStylusPopUpMenu.cpp - -// Chinese UI Controls -SOURCE AknFepUiAvkonCtrlContainerChinese.cpp -SOURCE AknFepUiAvkonCtrlInputPane.cpp -SOURCE AknFepUiAvkonCtrlCandidatePane.cpp -SOURCE AknFepUiAvkonCtrlCandidateSelected.cpp -SOURCE AknFepUiAvkonCtrlPinyinPopup.cpp -SOURCE aknfepuilayoutdatamgr.cpp -SOURCE aknfepchineseuidataconv.cpp -// for phrase creation -SOURCE aknfepuictrleepcontrol.cpp -SOURCE aknfepuictrlpinyineep.cpp -SOURCE insertionpoint.cpp - -// Japanese UI Controls -SOURCE AknFepUiAvkonCtrlContainerJapanese.cpp -SOURCE AknFepUiAvkonCtrlJapaneseCandidateCellListBoxData.cpp -SOURCE AknFepUiAvkonCtrlJapaneseCandidateHeadingPane.cpp -SOURCE AknFepUiAvkonCtrlJapaneseCandidateListbox.cpp -SOURCE AknFepUiAvkonCtrlJapaneseCandidateListboxView.cpp -SOURCE AknFepUiAvkonCtrlJapaneseCandidatePane.cpp -SOURCE AknFepUiAvkonCtrlJapanesePredictiveCellListBoxData.cpp -SOURCE AknFepUiAvkonCtrlJapanesePredictiveListbox.cpp -SOURCE AknFepUiAvkonCtrlJapanesePredictiveListboxItemDrawer.cpp -SOURCE AknFepUiAvkonCtrlJapanesePredictiveListBoxModel.cpp -SOURCE AknFepUiAvkonCtrlJapanesePredictiveListboxView.cpp -SOURCE AknFepUiAvkonCtrlJapanesePredictivePane.cpp -// for Japanese -SOURCE AknFepUiAvkonCtrlJapaneseKutenQueryDialog.cpp -#ifdef RD_INTELLIGENT_TEXT_INPUT -// for western predictive -SOURCE AknFepAvkonCandidatePopup.cpp -SOURCE AknFepUiAvkonCtrlExactWordPopupContent.cpp -SOURCE AknFepPredictiveSettingDialog.cpp -SOURCE AknFepPredictiveSettingList.cpp -SOURCE AknFepPredictiveSettingData.cpp -#ifdef __USER_DICTIONARY_EDITING__ -SOURCE AknFepPredOwnWordsModel.cpp -SOURCE AknFepUserDictionaryEditDialog.cpp -#endif -#ifdef FF_DUAL_LANGUAGE_SUPPORT -SOURCE AknFepUiAvkonCtrlDualLanguageSettingData.cpp -SOURCE AknFepUiAvkonCtrlDualLanguageSettingDialog.cpp -SOURCE AknFepUiAvkonCtrlDualLanguageSettingList.cpp -SOURCE AknFepUiAvkonCtrlDualLanguageSettingModel.cpp -#endif //FF_DUAL_LANGUAGE_SUPPORT -#endif //RD_INTELLIGENT_TEXT_INPUT - -SOURCEPATH ../data -START RESOURCE AknFepUiAvkonPlugin.rss -TARGET aknfepuiavkonplugin.rsc -END - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY eikcore.lib -LIBRARY avkon.lib -LIBRARY eikdlg.lib -LIBRARY eikcoctl.lib -LIBRARY cone.lib -LIBRARY bafl.lib -LIBRARY featmgr.lib -LIBRARY fepbase.lib -LIBRARY ws32.lib -LIBRARY etext.lib -LIBRARY tagma.lib -LIBRARY gdi.lib -LIBRARY AknIcon.lib -LIBRARY AknFepUiInterface.lib - -LIBRARY cdlengine.lib // using Chinese -LIBRARY AknSkins.lib // using Chinese -LIBRARY charconv.lib // using Japanese only -LIBRARY efsrv.lib // using Japanese only -LIBRARY AknLayout2Scalable.lib // using Japanese only -LIBRARY FontUtils.lib // using Japanese only -LIBRARY aknlayout2.lib // using Chinese and Japanese -#ifdef RD_INTELLIGENT_TEXT_INPUT -LIBRARY aknlayout.lib // using western predictive -LIBRARY CentralRepository.lib -LIBRARY commonengine.lib -LIBRARY AknNotify.lib -LIBRARY eikctl.lib -LIBRARY ptiengine.lib -LIBRARY hlplch.lib -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ -LIBRARY CenRepNotifHandler.lib -#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ -#endif //RD_INTELLIGENT_TEXT_INPUT diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/group/bld.inf --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/group/bld.inf Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Bldmake component description file. -* -*/ - - - - - - - - - - - -PRJ_PLATFORMS -ARMV5 WINSCW - - -PRJ_MMPFILES -AknFepUiAvkonPlugin.mmp - - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepAvkonCandidatePopup.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepAvkonCandidatePopup.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,222 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Avkon implementation of non-focusing popup menu to show word candidates. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_AVKON_CANDIDATE_POPUP_H -#define __AKN_FEP_AVKON_CANDIDATE_POPUP_H - -#include "AknFepCandidatePopup.h" -#include "AknFepCandidatePopupCallback.h" -#include -#include - -// FORWARD DECLARATIONS -class TAknPopupLayouts; -class TRect; - - -// CLASS DECLARATION -class CAknFepAvkonCandidatePopup : public CAknPopupList, public MAknFepCandidatePopup - { -public: // construction and destruction - - /** - * Two-phased constructor - * @param aOwner Reference to the owner of the popup which provides - * the candidates to be shown - * @return A new instance of the class. - */ - static CAknFepAvkonCandidatePopup* NewL( MAknFepCandidatePopupCallback& aOwner ); - - /** - * Destructor - */ - ~CAknFepAvkonCandidatePopup(); - -public: // methods - - /** - * Getter for the currently active word - * @return The currently active word as pointer descriptor - */ - TPtrC ActiveWord() const; - - /** - * Getter for the exact word (the word with ordinal 0) - * @return The exact word as pointer descriptor. - */ - TPtrC ExactWord() const; - - /** - * Makes the pop-up selection list visible and blocks until the dialog has been dismissed. - * @param aInlineEditorRect Tells the place of the inline editor. If possible, the popup is opened - * so that it does not hide the inline editor. - * @param aSelectedIdx Output argument for the selected index. - * @param aLastKeyEvent The last key event received by the popup. On return this is the event - * which closed the popup. - * @param aRightToLeftLanguage Direction of the candidate language.ETrue is right to left. EFalse otherwise - * @param aKeyboard Type of keyboard in use. - * - * @return The command id used to close the window. EAknFepSoftkeySpell, EAknSoftkeyCancel, or EAknSoftkeySelect - */ - TInt ExecutePopupL( const TRect& aInlineEditorRect, TInt& aSelectedIdx, TKeyEvent& aLastKeyEvent, TBool aRightToLeftLanguage, TInt aKeyboard ); - - /** - * Function called when the dialog is dismissed. Among other things, this hides the dialog - * and deblocks the thread. Unlike in the base class, the instance is not destroyed here. - * The same popup instance can be reused by calling ExecutePopupL() again. - * @param aAccept EFalse if the dialog was cancelled. - * ETrue otherwise. - */ - void AttemptExitL(TBool aAccept); - /** - * Function called when there is a change of resource, typically when there is a layout switch. - * Overidden the base implementation for the same. This is because the position of the popup - * also chnages when there is a layout change. - * @param aType : Specifies the type of layout switch. - */ - void HandleResourceChange(TInt aType); - - /** - * Removes the focus from the candidate list and makes the editor to be in focus. - */ - void UnFocus(); - /** - * Changes the position where the candidate list is shown. The position of the candidate list is choosen by the - * candidate list itself but can be controlled by the inline text rectangle. - * @param aRect The inline text rect. - */ - void ShowAtNewPosition(TRect aRect); - - /** - * Reduce the candidate pop up control priority and add it to stack. - * Basically, this function is called,if after void UnFocus(); - * - * Whenever layout Change is happen opencandidate list, then candidatelist priority - * should be reduce, otherwise updated inline rect - */ - void SetFocusAddStackReducePriorityL(); - -protected: // methods - - /** - * Handler for key evemts. - * @param aKeyEvent The key event to be handled. - * @param aType The type of the key event to be handled. - * @return EKeyWasConsumed If the offered key event is consumed. - * EKeyWasNotConsumed Otherwise. - */ - virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType); - - /** - * Processing of the CBA commands - * @param aCommandId The command to be handled. - */ - virtual void ProcessCommandL(TInt aCommandId); - - /** - * Calculates the position for the popup window and places it there - * @param aInlineEditorRect The placement of the inline editor is used as reference. - * The inline editor is not hidden behind the popup if possible. - * The preferred location for the popup is under the inline editor. - * The next best place is on the right side of the inline editor, - * then on the top of the editor and last on the left side of the editor. - */ - virtual void SetupWindowLocation( const TRect& aInlineEditorRect ); - - /** - * Sets up the layout of the popup window. - * Modified from CAknPopupList::SetupWindowLayout() - */ - virtual void SetupWindowLayout( AknPopupLayouts::TAknPopupLayouts aType ); - - /** - * Calculates the width of the popup window based on the candidates available on the list. - * The with is always set to as small as possible without truncation. - * The client application area is used as reference to ensure that the popup is never wider - * than the application area. - * @param aClientRect The client application area. - * @return The window widt in pixels. - */ - TInt CalculateWindowWidth( const TRect& aClientRect ); - - /** - * Updates the popup window layout. - * Modified from AknPopupLayouts::HandleSizeChanged() - */ - void HandleSizeChanged( TAknPopupWindowLayoutDef &aDef, - AknPopupLayouts::TAknPopupLayouts aLayout_1, - TAknPopupLayoutsNode *aNode ); - - /** - * The C++ constructor - * @param aOwner Reference to the owner of the popup which provides - * the candidates to be shown - */ - CAknFepAvkonCandidatePopup( MAknFepCandidatePopupCallback& aOwner ); - - /** - * Second phase constructor. - */ - void ConstructL(); - - - static TInt HandleChrKeyMonitorCallback(TAny* aParam); - -private: // data - - //! Owner of this popup. Provides the candidates. - MAknFepCandidatePopupCallback& iOwner; - - //! The listbox embedded into this popup - CEikFormattedCellListBox* iList; - - //! Array of candidates shown in the popup list - CDesCArray* iCandidates; - - //! Pointer to variable containing the index of currently selected word. - TInt* iSelectedIdx; // not owned - - //! Pointer to variable containing the last received key event. - TKeyEvent* iLastKeyEvent; // not owned - - //! Last received command. EAknSoftkeySelect, EAknSoftkeySpell, or EAknSoftkeyCancel. - TInt iLastCommandId; - - //! Candidate Language direction. - TBool iRightToLeftCandidate; - //! Keyboard type in use. - TPtiKeyboardType iKeyboard; - - CPeriodic* iChrKeypressMonitor; - //The inline text rectangle that is used as a reference for showing the candidate list. - TRect iInlineTextRect; - }; - - -#endif // __AKN_FEP_AVKON_CANDIDATE_POPUP_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepIndicatorAvkon.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepIndicatorAvkon.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepIndicatorAvkon definition. -* -*/ - - - - - - - - - - - - -#ifndef AknFepAvkonIND_H -#define AknFepAvkonIND_H - -#include -#include //MAknEditingStateIndicator - -class CAknNavigationDecorator; -class CAknNavigationControlContainer; -class CEikonEnv; - -class CAknFepIndicatorAvkon : public CAknFepIndicator - { -public: - static CAknFepIndicator* NewL(); - ~CAknFepIndicatorAvkon(); - virtual void SetState(TAknEditingState aState); - virtual CAknIndicatorContainer* IndicatorContainer(); - -public: // new functions - /** - * Sets flag that copy mode is ON - */ - void SetCopyMode(TBool aCopyMode); - -private: - CAknFepIndicatorAvkon(); - void AddContainerL(CAknNavigationControlContainer* aNaviPane); - void RemoveContainer(); - void SetIndicator(TInt aIndicator, TInt aMode, TBool aDrawNow = ETrue); - CAknNavigationControlContainer* NaviPaneL(); - - /** Since 3.2 - * Returns True if Predictive Mode is On so that - the appropriate indicator is set - */ - TBool QueryPredictiveState(TAknEditingState aState); - -#ifndef RD_INTELLIGENT_TEXT_INPUT - /** Since 5.0 - * Returns True if AutoCompletion Mode is On so that - the appropriate indicator is set - */ - - TBool QueryPredictiveAutoCompleteState(TAknEditingState aState); - -#endif // RD_PRED_AW_COMPLETION - /** Since 3.2 - * Returns the indicator to be displayed based on the Editor state - */ - TInt EvaluateState(TAknEditingState aState); -private: - CAknIndicatorContainer* iIndicatorContainer; - CAknNavigationDecorator* iNaviDecorator; - TAknEditingState iPreviousState; - CEikonEnv& iEikEnv; - CAknNavigationControlContainer* iNaviPane; - TBool iNaviPaneChanged; - }; - -#endif // AknFepIND_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredOwnWordsModel.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredOwnWordsModel.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -#ifndef AKNFEPPREDOWNWORDSLISTBOX_H_ -#define AKNFEPPREDOWNWORDSLISTBOX_H_ - -#include -#include - -//For accessing user dictionary through PtiEngine: -#include -#include -#include - - -class CAknFepPredOwnWordsModel : public CBase - { -public: - /** - * Function: NewL - * - * Discussion: Factory function used to create a new instance of - * CAknFepPredictiveSettingDialog - * - * Params : aTextArray - pointer to array of UDB entries - * Returns: A newly created instance of CAknFepPredOwnWordsModel - */ - static CAknFepPredOwnWordsModel* NewL( MDesCArray* aTextArray ); - - /** - * Function: NewLC - * - * Discussion: Factory function used to create a new instance of - * CAknFepPredictiveSettingDialog and leave a pointer to it on the - * cleanup stack. - * - * Params: aTextArray - pointer to array of UDB entries - * Returns: A newly created instance of CAknFepUserDictionaryEditDialog - */ - static CAknFepPredOwnWordsModel* NewLC( MDesCArray* aTextArray ); - - //Destructor - ~CAknFepPredOwnWordsModel(); - - /** - * Function: RemoveSelectedWordL - * - * Discussion: Removes existing word from UDB - * - * Params: aWordIndex - index to the word to be removed - * in the list of UDB entries - * Returns: If successful, it returns the index of the word - * in the list of UDB entries which should be focussed. - * Else, returns one of the system wide error codes. - */ - TInt RemoveSelectedWordL( TInt aWordIndex ); - - /** - * Function: RemoveSelectedWordsL - * - * Discussion: Removes existing word from UDB - * - * Params: aSelectedItems - array of indices to the words to be - * removed from the list of UDB entries - * Returns: If successful, it returns KErrNone. - * Else, returns one of the system wide error codes. - */ - TInt RemoveSelectedWordsL( const CArrayFix* aSelectedItems ); - - /** - * Function: AddNewWordL - * - * Discussion: Adds the word to UDB - * - * Params: aNewWord - new word to be added - * Returns: If successful, it returns the index of the newly added word - * in the list of UDB entries. - * Else, returns one of the system wide error codes - */ - TInt AddNewWordL( TDesC& aNewWord ); - -private: - CAknFepPredOwnWordsModel(); - void ConstructL( MDesCArray* aTextArray ); - - //Helper methods: - /** - * Function: UpdateItemsL - * - * Discussion: Refreshes the word list with the current UDB entries - * - * Params: aTextArray - * Returns: no return value. - */ - void UpdateItemsL( MDesCArray* aTextArray ); - - //to read user dictionary entries through PtiEngine - void ReadUDBEntriesL(); - - //to format the words for list box - HBufC* FormListBoxEntryFromWordLC( const TDesC& aWord ); - - //data: - CPtiEngine* iPtiEngine; - CDesCArrayFlat* iUDBWords; - - }; -#endif /*AKNFEPPREDOWNWORDSLISTBOX_H_*/ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingData.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingData.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,185 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -/* - * ============================================================================ - * Name : CAknFepPredictiveSettingData from AknFepPredictiveSettingData.h - * ============================================================================ - */ - -#ifndef __AKN_FEP_PREDICTIVESETTING_DATA_H -#define __AKN_FEP_PREDICTIVESETTING_DATA_H - -#include - -/** - * Class: CAknFepPredictiveSettingData - * - * Discussion: An aggregate class containing data for all editing controls - * This class is used as a central respository for all data - * to be displayed and editted within this app. - */ -class CAknFepPredictiveSettingData : public CBase -{ -public: - /** - * Function: NewL - * - * Discussion: Factory function used to create a new instance of - * CAknFepPredictiveSettingData - * - * Returns: A newly created instance of CAknFepPredictiveSettingData with all data - * items valid - */ - static CAknFepPredictiveSettingData* NewL(); - - /** - * Function: NewLC - * - * Discussion: Factory function used to create a new instance of - * CAknFepPredictiveSettingData and leave a pointer to it on the cleanup - * stack - * - * Returns: A newly created instance of CAknFepPredictiveSettingData with all data - * items valid - */ - static CAknFepPredictiveSettingData* NewLC(); - - /** - * Function: ~CAknFepPredictiveSettingData - * - * Discussion: Virtual destructor for CAknFepPredictiveSettingData. Ensures that all - * allocated memory is returned to the heap before deletion - * of object. - * - */ - virtual ~CAknFepPredictiveSettingData(); - - /** - * Function: LoadL - * - * Discussion: Loads itself with parameters passed. - * - */ - void LoadL(TInt aAutoWordCompl, - TInt aTypingCorrection, - TInt aNumberCandidates, - TInt aPrimaryCandidate, - TInt aPhysicalKeyboards, - TInt aAWCBitmask); - - /** - * Function: SaveL - * - * Discussion: Saves itself. - * - */ - void SaveL() const; - - /** - * Function: AutoWordCompl - * - * Discussion: Trivial accessor function - * - * Returns: A reference to the iAutoWordCompl member - */ - inline TInt& AutoWordCompl() {return iAutoWordCompl; } - - /** - * Function: TypingCorrection - * - * Discussion: Trivial accessor function - * - * Returns: A reference to the iTypingCorrection member - */ - inline TInt& TypingCorrection() { return iTypingCorrection; } - - - /** - * Function: NumberCandidates - * - * Discussion: Trivial accessor function - * - * Returns: A reference to the iNumberCandidates member - */ - inline TInt& NumberCandidates() {return iNumberCandidates; } - - /** - * Function: PrimaryCandidate - * - * Discussion: Trivial accessor function - * - * Returns: A reference to the iPrimaryCandidate member - */ - inline TInt& PrimaryCandidate() {return iPrimaryCandidate; } - - /** - * Function: PhysicalKeyboards - * - * Discussion: Trivial accessor function - * - * Returns: Value of iPhysicalKeyboards member - */ - inline TInt PhysicalKeyboards() {return iPhysicalKeyboards; } - - /** - * Function: AWCBitmask - * - * Discussion: Trivial accessor function - * - * Returns: Value of iPhysicalKeyboards member - */ - inline TInt& AWCBitmask() {return iAWCBitmask; } -private: - /** - * Function: CAknFepPredictiveSettingData - * - * Discussion: Hidden, first-stage non-leaving constructor. - * - */ - CAknFepPredictiveSettingData(); - - /** - * Function: ConstructL - * - * Discussion: Hidden, second-stage possibly-leaving constructor. - * - */ - void ConstructL(); - - -public: - TInt iAutoWordCompl; /* Data for AutoWordCompl field */ - TInt iTypingCorrection; /* Data for TypingCorrection text field */ - TInt iNumberCandidates; /* Data for NumberCandidates field */ - TInt iPrimaryCandidate; /* Data for PrimaryCandidate field */ - TInt iPhysicalKeyboards; /* Data for PhysicalKeyboards field */ - TInt iAWCBitmask; /* AWC data in bitmask form */ - -}; - -#endif // __AKN_FEP_PREDICTIVESETTING_DATA_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingDialog.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingDialog.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -/* - * ============================================================================ - * Name : CAknFepPredictiveSettingList from AknFepPredictiveSettingList - * ============================================================================ - */ - -#ifndef __AKN_FEP_PREDICTIVESETTING_DIALOG_H -#define __AKN_FEP_PREDICTIVESETTING_DIALOG_H - -#include -#include "AknFepPredictiveSettingList.h" -#include "AknFepPredictiveSettingData.h" - -class CRepository; -class CAknTitlePane; -class CAknNavigationControlContainer; -class CAknNavigationDecorator; - -enum TInputSettings -{ - EAutoWordCompletion, - ETypingCorrectionLevel, - ENumberCandidate, - EPrimaryCandidate -}; - -class CAknFepPredictiveSettingDialog : public CAknDialog -{ - public: - /** - * Function: NewL - * - * Discussion: Factory function used to create a new instance of - * CAknFepPredictiveSettingDialog - * - * Params: aMenuResId - menu resource id. - * Params: aConfirmationQueryResId - Confirmation Query resource id. - * Params: aTitlePaneResId - Titlepane resource id. - * Returns: A newly created instance of CAknFepPredictiveSettingDialog - */ - static CAknFepPredictiveSettingDialog* NewL(TInt aMenuResId, TInt aConfirmationQueryResId, TInt aTitlePaneResId); - - /** - * Function: NewLC - * - * Discussion: Factory function used to create a new instance of - * CAknFepPredictiveSettingDialog and leave a pointer to it on the - * cleanup stack. - * - * Params: aMenuResId - menu resource id. - * Params: aConfirmationQueryResId - Confirmation Query resource id. - * Params: aTitlePaneResId - Titlepane resource id. - * Returns: A newly created instance of CAknFepPredictiveSettingDialog - */ - static CAknFepPredictiveSettingDialog* NewLC(TInt aMenuResId, TInt aConfirmationQueryResId, TInt aTitlePaneResId); - - /** - * Function: ~CAknFepPredictiveSettingDialog - * - * Discussion: Virtual destructor for CAknFepPredictiveSettingDialog. Ensures that all - * allocated memory is returned to the heap before deletion - * of object. - * - */ - virtual ~CAknFepPredictiveSettingDialog(); - - virtual SEikControlInfo CreateCustomControlL(TInt aControlType); - virtual CAknFepPredictiveSettingDialog::TFormControlTypes ConvertCustomControlTypeToBaseControlType(TInt aControlType) const; - - virtual TBool OkToExitL(TInt aButtonId); - virtual void ProcessCommandL(TInt aCommandId); - virtual void HandleResourceChange(TInt aType); - - void EditItemL(TBool aCalledFromMenu); - - void HandlePointerEventL(const TPointerEvent& aPointerEvent); - - // From MEikMenuObserver - virtual void DynInitMenuPaneL( TInt aResourceId, - CEikMenuPane* aMenuPane ); - - private: - void ConstructL( TInt aMenuTitleResourceId ); - CAknFepPredictiveSettingDialog(TInt aConfirmationQueryResId, TInt aTitlePaneResId); - void ReadSettingsDataL(); - void SaveSettingsDataL() const; - void SaveCurrentSettingsDataL() const; - void LaunchPredictiveSettingOffQueryIfNecessaryL(TInt prevSettings); - TInt CurrentSettings(); - void PrepareStatusPaneL(); - void SetTitlePaneL(); - void RestoreStatusPaneL(); - TInt iConfirmationQueryResId; - TInt iPredictiveTextFlag; - TBool iPredictiveSettingOffQueryNotShown; - - CAknTitlePane* iTitlePane; - CAknNavigationControlContainer* iNaviPane; - CAknNavigationDecorator* iNaviDecoratedTabGroup; - HBufC* iLastTitle; - HBufC* iStatusTitle; - TInt iTitlePaneResId; - - static TInt EventCheckCallback(TAny* aObj); - void AttemptToExitL(); - -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - TInt iOriginalKeyboardLayout; -#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - - // iSettingItemInEditingState is introduced to avoid the crash when we are editing - // the settings item and the flip staus changes. - TBool iSettingItemInEditingState; - CIdle* iItemCloseEventCheck; - - protected: - CAknFepPredictiveSettingList* iSettingsList; - CAknFepPredictiveSettingData* iSettingsData; - CRepository* iAknFepRepository; -}; -#endif //__AKN_FEP_PREDICTIVESETTING_DIALOG_H \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingList.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepPredictiveSettingList.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -/* - * ============================================================================ - * Name : CAknFepPredictiveSettingList from SettingExampleSettingList.h - * ============================================================================ - */ - -#ifndef __AKN_FEP_PREDICTIVESETTING_LIST_H -#define __AKN_FEP_PREDICTIVESETTING_LIST_H - - -#include -#include -#include - -//class CAknFepPredictiveSettingData; -#include "AknFepPredictiveSettingData.h" - -class CAknFepPredictiveSettingDialog; -/** - * Class: CAknFepMultiSelectionSettingItem - * - * Discussion: An implementation of CAknBigSettingItemBase, providing a - * big setting item that opens a multiselection (checkbox) - * setting page. Specialized implementation to show - * word autocompletion settings. - * - */ -class CAknFepMultiSelectionSettingItem : public CAknBigSettingItemBase - { -public: - CAknFepMultiSelectionSettingItem( TInt aResourceId, CAknFepPredictiveSettingData &aData, - CCoeEnv* aCoeEnv ); - virtual ~CAknFepMultiSelectionSettingItem(); - virtual void EditItemL( TBool aCalledFromMenu ); - virtual void StoreL(); - virtual void LoadL(); - -private: - CSelectionItemList* CreateSelectionItemListL(); - - CAknFepPredictiveSettingData &iData; // not owned - CSelectionItemList* iSelection; - CCoeEnv* iCoeEnv; - TInt iItutIndex; - TInt iHalfQwertyIndex; - TInt iQwertyIndex; - }; - -/** - * Class: CAknFepPredictiveSettingList - * - * Discussion: A specialised subclass of CAknSettingItemList. This class is - * the control used to both display the current values of the - * settings and to launch the relevant editor for those items. - * - */ -class CAknFepPredictiveSettingList : public CAknSettingItemList - { -public: - /** - * Function: NewL - * - * Discussion: Factory function used to create a new instance of - * CAknFepPredictiveSettingList - * - * Params: aData - reference to the data to be displayed and edited. - * - * Returns: A newly created instance of CAknFepPredictiveSettingList - */ - static CAknFepPredictiveSettingList* NewL(CAknFepPredictiveSettingData &aData, CAknFepPredictiveSettingDialog &aDialog); - - /** - * Function: NewLC - * - * Discussion: Factory function used to create a new instance of - * CAknFepPredictiveSettingList and leave a pointer to it on the - * cleanup stack. - * - * Params: aData - reference to the data to be displayed and edited. - * - * Returns: A newly created instance of CAknFepPredictiveSettingList - */ - static CAknFepPredictiveSettingList* NewLC(CAknFepPredictiveSettingData &aData, CAknFepPredictiveSettingDialog &aDialog); - - /** - * Function: ~CAknFepPredictiveSettingList - * - * Discussion: Virtual destructor for CAknFepPredictiveSettingList. Ensures that - * all allocated memory is returned to the heap before - * deletion of object. - * - */ - virtual ~CAknFepPredictiveSettingList(); - - - /** - * Function: SizeChanged - * - * Discussion: Inherited from CCoeControl. Calculates size based on - * contained control required sizes. - * - */ - void SizeChanged(); - - /** - * Function: EditCurrentItemL - * Params: aCalledFromMenu - ETrue if called from menu, EFalse otherwise. - * - * - * Discussion: Starts the setting page for the currently selected item - * in the list. - */ - void EditCurrentItemL(TBool aCalledFromMenu); - - TBool DeviceHasMultipleKeyboards(); - - -private: - /** - * Function: CAknFepPredictiveSettingList - * - * Discussion: Hidden, first-stage non-leaving constructor. - * - * Params: aData - reference to the data to be displayed and edited. - * - */ - CAknFepPredictiveSettingList(CAknFepPredictiveSettingData &aData, CAknFepPredictiveSettingDialog &aDialog); - - /** - * Function: CreateSettingItemL - * - * Discussion: Factory function for creating CAknSettingItem derived - * SettingItem classes used t display current values - * - * Params: aSettingId - the id of the control which should be created - * - */ - CAknSettingItem* CreateSettingItemL (TInt aSettingId); - - - void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); - - void HandleResourceChange(TInt aType); - -private: - CAknFepPredictiveSettingData &iSettingsData; /* Reference to data owned by Dialog */ - CAknFepPredictiveSettingDialog &iSettingsDialog; - }; - -#endif // __AKN_FEP_PREDICTIVESETTING_LIST_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepQuery.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepQuery.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#ifndef __AKNFEPQUERY__ -#define __AKNFEPQUERY__ - -#if !defined(__AKNQUERYDIALOG_H__) -#include -#endif - -class CAknEdwinState; - -class CAknFepTextQueryDialog : public CAknTextQueryDialog - { - public: - CAknFepTextQueryDialog(TDes& aDataText, CAknEdwinState& aEditorState, - const TTone aTone = ENoTone, const TInt aEditorFlag = 0); - virtual ~CAknFepTextQueryDialog(); - protected: //from CEikDialog - void PreLayoutDynInitL(); - private: - CAknEdwinState& iUnderlyingEditorState; // not owned - TInt iEditorFlag; - }; - -#endif - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlCandidatePane.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlCandidatePane.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,502 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlCandidatePane definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_AVKON_CANDIDATE_PANE_H__ -#define __AKN_FEP_AVKON_CANDIDATE_PANE_H__ - -#include -#include - -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUIAvkonCtrlContainerChinese.h" - -class CAknFepUICtrlCandidateSelected; - -/** - * Pane which displays the Chinese Candidates. - */ -NONSHARABLE_CLASS(CAknFepUICtrlCandidatePane) : public CCoeControl, public MAknFepUICtrlCandidatePane - { -public: - /** - * first phase construction - */ - static CAknFepUICtrlCandidatePane* NewL(RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr); - /** - * destructor - */ - ~CAknFepUICtrlCandidatePane(); -public: - /** - * Get a buffer that can be filled with candidate characters, - * which will subsequently be displayed. - * - * @output the text buffer of the Pane - */ - const TDesC& TextBuffer() const; - - /** - * Allows the client to set a descriptor pointer into an existing buffer of - * data, avoiding unnecessary copying of data. - *

Note that if the buffer contains less characters than the current - * visible count, then the remaining characters will not be displayed. - *

Note also that if the current selection falls outside the range - * of the size of the new buffer, it will be made not visible. - * However, the current highlighted state remains, so if the selection - * is set once more to a valid entry (or if the buffer is set to a length that - * includes the currently selected position), and the highlight is still enabled, - * the highlight will reappear. - * - * @param aBufferPtr descriptor that contains the candidates for display, - * could be a pointer into a subset of a larger descriptor - * that contains all the candidates. Note that only the - * first EMaxCandidates of aBuffer will be used. - * Length must be > 0. - */ - void SetCandidateBuffer(const TDesC& aBuffer); - - /** - * This function sets the highlighted status of the pane for rendering purposes. - * If the Pane is highlighted it displays the current selected Candidate, - * plus numbers with each of the other Candidates. - * - * @param aHighlighted ETrue if the highlight is to be set - * EFalse if the highlight is to be removed - */ - void SetHighlighted(TBool aHighlighted); - - /** - * This function returns the highlighted status of the Pane. - * - * @return ETrue if highlight was set - * EFalse if highlight was not set - * - */ - TBool Highlighted() const; - - /** - * Set the candidate mode for the specified candidate. This is used for - * setting the colour of the font for components in stroke mode - * - * @param aMode the new mode - */ - void SetCandidateMode(TInt aIndex, TCandidateMode aMode); - - /** - * Get the candidate mode for the specified candidate. - * - * @return aMode the new mode - */ - TCandidateMode CandidateMode(TInt aIndex); - - /** - * are the Horizontal Scroll Arrows enabled? - * - * @return if arrows not enabled, returns EFalse - */ - TBool IsShowHorizontalScrollArrows() const; - - /** - * enable/disable the rendering of the Horizontal Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - void ShowHorizontalScrollArrows(TBool aValue); - - - /** - * enable/disable the rendering of the up Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - void ShowUpScrollArrows(TBool aValue); - - /** - * enable/disable the rendering of the down Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - void ShowDownScrollArrows(TBool aValue); - - /** - * enable/disable the rendering of the left Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - void ShowLeftScrollArrows(TBool aValue); - - /** - * enable/disable the rendering of the right Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - void ShowRightScrollArrows(TBool aValue); - - /** - * are the Vertical Scroll Arrows enabled? - * - * @return if arrows not enabled, returns EFalse - */ - TBool IsShowVerticalScrollArrows() const; - - /** - * enable/disable the rendering of the Vertical Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - void ShowVerticalScrollArrows(TBool aValue); - - /** - * enable/disable the rendering of the candidate ordinal numbers - * - * @param aValue if ETrue, enable the ordinals - * if EFalse, disable the ordinals - * - */ - void ShowCandidateOrdinals(TBool aValue); - - /** - * enable/disable the rendering of the candidate ordinal numbers - * - * @return if not shown, return EFalse - */ - TBool IsShowCandidateOrdinals() const; - - /** - * This function returns the number of Candidates that are visible in the pane - * in its current configuration. - * - * @return number of candidates that are currently visible - */ - TInt VisibleCandidateCount() const; - - /** - * This function sets the number of candidates that are visible. - * This will affect the size of the control as determined by the layout. - * - * @param aCount the new visible count, - * must be 1 <= aCount <= EMaxCandidates - */ - void SetVisibleCandidateCount(TInt aCount); - - /** - * Select the first visible item in the candidate buffer - * - * @return ETrue if success, EFalse if no items visible - * - */ - TBool SelectFirst(); - - /** - * Select the first visible phrase item in the candidate buffer - * - * @return ETrue if success, EFalse if no items visible - * - */ - TBool SelectFirstPhrase(); - - /** - * Select the last visible item in the candidate buffer - * - * @return ETrue if success, EFalse if no items visible - * - */ - TBool SelectLast(); - - /** - * Select the last visible phrase item in the candidate buffer - * - * @return ETrue if success, EFalse if no items visible - * - */ - TBool SelectLastPhrase(); - - /** - * Select the next visible item - * - * @return ETrue if success, - * EFalse if no items visible, or if already on last visible item - */ - TBool SelectNext(); - /** - * Select the previous visible item - * - * @return ETrue if success, - * EFalse if no items visible, or if already on first visible item - */ - TBool SelectPrev(); - - /** - * This function selects the given index. - *

Note that if the new selected index is within the visible count, - * but falls on a candidate that is not valid (i.e. if it falls outside the - * length of the candidate buffer) then nothing happens and EFalse is returned - * - * @param aIndex If aIndex falls outside length of candidate buffer, - * then return EFalse to indicate failure. - * @return ETrue if index was valid, EFalse if index not valid - */ - TBool SelectIndex(TInt aIndex, TBool selected = ETrue); - - /** - * This function returns the selected index of the Candidate Pane. - * - * @return the index of the selected item. If the Pane is not highlighted it returns 0. - * - */ - TInt SelectedIndex() const; - - /** - * This function returns the character at index of the current selection - * - * @return a descrptor containing the character that is currently selected. - * If the currect selection falls outside the length of the current buffer, - * then return a null descriptor - * - */ - TPtrC CurrentCandidate() const; - /** - * This function returns the phrase at index of the current selection - * - * @return a descrptor containing the character that is currently selected. - * If the currect selection falls outside the length of the current buffer, - * then return a null descriptor - * - */ - TPtrC CurrentPhraseCandidate() const; - /** - * This function calculate the input pane's size for phrase input layout - * @return input pane's size - * - */ - TInt LabelTextWidthInPixels(TInt aIndex); - /** - * Set layout - * @param aPaneLayout the new panelayout - * - */ - void SetPaneLayout(CAknFepUICtrlContainerChinese::TPaneLayout aPaneLayout); - /** - * Split phrase candidates into pages - */ - void SplitPhraseCandidatesIntoPages(); - - /** - * Navigate to next page - */ - void NextCandidatePage(void); - - /** - * Navigate to previous page - */ - void PreviousCandidatePage(void); - - /** - * Return candidate array - */ - CDesCArrayFlat* CandidateArray(void); - - /** - * Set phrase candidate buffer - */ - void SetCandidateBuffer(void); - - /** - * Reset candidate pane state and variables - */ - void ResetCandidateState(); - - /** - * To test whether current page is the first page - */ - TBool IsFirstPage(); - - /** - * To test whether current page is the last page - */ - TBool IsLastPage(); - - /** - * To set all the cnadidate label invisible(phrase creation) - */ - void SetInVisiable(); - /** - * To test whether need to get new candidate page - */ - TBool NeedGetNewCandidatePage(); - -public: // from CCoeControl - /** - * size changed - */ - virtual void SizeChanged(); - - /** - * count component controls - * - * @return number of contained controls - */ - TInt CountComponentControls() const; - - /** - * Component control - * - * @param aIndex the control to return, must be between 0 and the number of controls - * @return pointer to contained control, ownership is not passed - * - */ - CCoeControl* ComponentControl(TInt aIndex) const; - - /** - * draw - * - * @param aRect rectangle - * - */ - virtual void Draw(const TRect& aRect) const; - - - //Bug Fixing for ESSG-7P5CSZ - void Enable(TBool aEnable); - -protected: - /** - * second phase construction - */ - void ConstructL(RWindow& aParent); - - /** - * Construct all the bitmap classes - */ - void ConstructBitmapsL(); - - /** - * constructor - */ - CAknFepUICtrlCandidatePane( CAknFepUiLayoutDataMgr* aLafDataMgr ); - - /** - * layout the rectangles - */ - void LayoutRects(); - - /** - * layout contained controls - */ - void LayoutContainedControls(); - - /** - * layout the labels for a single candidate - */ - void LayoutLabel(TInt aIndex); - - /** - * layout the labels for all the candidates (even those that are not currently visible) - */ - void LayoutLabels(); - - /** - * layout selected candidate - *

Note that there is only one instance, as there can - * only be one selected candidate at a time. Therefore, the control - * is placed in the position that is correct based on the current selection - * - * @param aIndex the index of the new position of the selected candidate - * - */ - void LayoutCandidateSelected(); - - /** - * set label vilisibilty, according to the current pane layout - */ - void UpdateLabelVisibility(); - - /** - * draw background color - * - * @param aRect rect in which to draw - */ - void DrawBackground(const TRect& aRect) const; - - /** - * Internal candidate paging function, - * Only paging once per call. - * - */ - void InternalSpilitPhraseCandidate(); - -private: // the following are owned - CAknFepUICtrlCandidateSelected* iCandidateSelected; - CFbsBitmap* iNaviArrowBitmapLeft; - CFbsBitmap* iNaviArrowBitmapLeftMask; - CFbsBitmap* iNaviArrowBitmapRight; - CFbsBitmap* iNaviArrowBitmapRightMask; - CFbsBitmap* iNaviArrowBitmapUp; - CFbsBitmap* iNaviArrowBitmapUpMask; - CFbsBitmap* iNaviArrowBitmapDown; - CFbsBitmap* iNaviArrowBitmapDownMask; -private: // the following need resetting - RPointerArray iCandidateLabelArray; - RPointerArray iOrdinalLabelArray; - RArray iCandidateModeArray; -private: // the following are members - CAknFepUiLayoutDataMgr* iLafDataMgr; - TAknLayoutRect iIndiFepArrowLeft; - TAknLayoutRect iIndiFepArrowRight; - TAknLayoutRect iIndiFepArrowUp; - TAknLayoutRect iIndiFepArrowDown; - TBufC iBuffer; - CAknFepUICtrlContainerChinese::TPaneLayout iPaneLayout; - TInt iVisibleCount; - TInt iSelected; - TBool iHighlighted; - TBool iShowHorizontalScrollArrows; - TBool iShowVerticalScrollArrows; - TBool iShowUpScrollArrows; - TBool iShowDownScrollArrows; - TBool iShowLeftScrollArrows; - TBool iShowRightScrollArrows; - TBool iShowCandidateOrdinals; - RArray iPages; - //next paging candidate index - TInt iUnpagedIndex; - TInt iCurDisplayPage; - CDesCArrayFlat* iCandidateArray; - TInt iOrdinalLableWidth; - }; - -#endif //__AKN_FEP_AVKON_CANDIDATE_PANE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlCandidateSelected.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlCandidateSelected.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlCandidateSelected definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_CANDIDATE_SELECTED_PANE_H__ -#define __AKN_FEP_CANDIDATE_SELECTED_PANE_H__ - -#include -#include - -#include "AknFepUICtrlCandidatePane.h" - -class CEikLabel; - -/** - * Control representing the selected candidate. Is a window owning control, - * that appears over the candidate pane such that it obscures the labels - * beneath. Can be hidden, for example if there is no visible selection, - * or if highlighting is disabled. - */ -NONSHARABLE_CLASS(CAknFepUICtrlCandidateSelected) : public CCoeControl - { -public: - enum - { - EOneCandidate = 1, - EMaxSelectedCandidateLength = 10 // extend buffer for phrase input - }; -public: - - /** - * first phase construction - */ - static CAknFepUICtrlCandidateSelected* NewL(RWindowTreeNode& aParent); - - /** - * destructor - */ - ~CAknFepUICtrlCandidateSelected(); - - /** - * Set the text buffer of the Pane. - * - * @param aCharacter, the label will be filled with the characters from aCharacter - */ - void SetText(TPtrC aCharacter); - - /** - * Set the ordinal of the Pane. - * - * @param aOrdinal - */ - void SetOrdinal(TInt aOrdinal); - - /** - * This function sets the candidate mode of the pane for rendering purposes. - * - * @param aMode the new mode - */ - void SetCandidateMode(MAknFepUICtrlCandidatePane::TCandidateMode aMode); - - /** - * Set layout - * @param aLayout the new layout - */ - void SetLayout(MAknFepUICtrlContainerChinese::TPaneLayout aLayout); - /** - * Set ordinal status - * @param aValue the new status - */ - void ShowOrdinal(TBool aValue); - -public: // from CCoeControl - /** - * size changed - */ - virtual void SizeChanged(); - - /** - * count component controls - * - * @return number of contained controls - */ - TInt CountComponentControls() const; - - /** - * Component control - * - * @param aIndex the control to return, must be between 0 and the number of controls - * @return pointer to contained control, ownership is not passed - */ - CCoeControl* ComponentControl(TInt aIndex) const; - - /** - * draw - * - * @param aRect rectangle - */ - virtual void Draw(const TRect& aRect) const; - -protected: - /** - * second phase construction - */ - void ConstructL(RWindowTreeNode& aParent); - - /** - * constructor - */ - CAknFepUICtrlCandidateSelected(); - - /** - * layout the rectangles - */ - void LayoutRects(); - - /** - * layout contained controls - */ - void LayoutContainedControls(); - - /** - * layout the background frames - * - * @param aOuterRect filled with outer rect coords - * @param aInnerRect filled with inner rect coords - * - */ - void CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const; - - /** - * set label vilisibilty, according to the current pane layout - */ - void UpdateLabelVisibility(); - -private: - TAknLayoutRect iRectShadow; - TAknLayoutRect iRectHighlight; - TBufC iBuffer; - MAknFepUICtrlCandidatePane::TCandidateMode iCandidateMode; - TInt iIndex; - MAknFepUICtrlContainerChinese::TPaneLayout iPaneLayout; - TBool iShowOrdinal; -private: // the following are owned - CEikLabel* iCandidateLabel; - CEikLabel* iOrdinalLabel; - }; - -#endif //__AKN_FEP_CANDIDATE_SELECTED_PANE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlContainerChinese.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlContainerChinese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,344 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlContainerChinese definition. -* -*/ - - - - - - - - - - - -#ifndef __AKN_FEP_UI_AVKON_CONTAINER_CHINESE_H__ -#define __AKN_FEP_UI_AVKON_CONTAINER_CHINESE_H__ - -#include -#include -#include - -class CAknsFrameBackgroundControlContext; -class CAknFepUICtrlInputPane; -class CAknFepUICtrlCandidatePane; -class CAknFepUICtrlPinyinPopup; -class CAknFepUICtrlPinyinEEP; -class MAknFepManagerUIInterface; -class CAknFepUiLayoutDataMgr; - -class MAknFepUICtrlPinyinPopupSizeChangedObserver - { -public: - /// this is called when the selection popup changes size - virtual void SelectionPopupSizeChanged(TInt aNumLines) = 0; - - /// this is called when the popup is enabled - virtual void SelectionPopupEnabled(TBool aEnabled) = 0; - }; - -NONSHARABLE_CLASS(CAknFepUICtrlContainerChinese) - : - public CCoeControl, - public MAknFepUICtrlPinyinPopupSizeChangedObserver, - public MAknFepUICtrlContainerChinese -{ -public: - /** - * first phase construction - */ - static CAknFepUICtrlContainerChinese* NewL(); - - /** - * destructor - */ - ~CAknFepUICtrlContainerChinese(); - - /** - * get the input pane - * - * @return pointer to the input pane, ownership is not passed - */ - MAknFepUICtrlInputPane* InputPane() const; - - /** - * get the candidate pane - * - * @return pointer to the candidate pane, ownership is not passed - */ - MAknFepUICtrlCandidatePane* CandidatePane() const; - - /** - * get the phrase pinyin popup window - * - * @return pointer to the phrase popup window, ownership is not passed - */ - MAknFepUICtrlPinyinPopup* PinyinPopupWindow() const; - - /** - * - * get the pinyin phrase creation popup window - * - * @return pointer to the pinyin phrase popup window, ownership is not passed - */ - MAknFepUICtrlEditPane* EditPaneWindow() const; - - /** - * Is the control displayed on the screen? - * - * @return if not enabled, returns EFalse - * - */ - TBool IsEnabled() const; - /** - * Enables the display of the control. Sets the control's - * window postion and visibility, but only if the value has - * changed (so it's ok to call it excessively). - * - * @param aEnable if ETrue, makes visible - * if EFalse, makes non-visible - * - */ - void Enable(TBool aEnable); - - /** - * Arrange the constituent panes into the correct proportions for - * the required layout. - * - * @param aPaneLayout the required layout - * - */ - void SetLayout(TPaneLayout aPaneLayout); - - - /** - * Set the Highlight to the desired control. - * - * @param aValue if aValue is ETrue set the focus to the Candidate Pane. - * if aValue is EFalse set focus to the Chinese Input Pane - */ - void FocusCandidatePane(TBool aValue); - - /** - * enable/disable the rendering of the Horizontal Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - void ShowHorizontalScrollArrows(TBool aValue); - - /** - * enable/disable the rendering of the Vertical Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - void ShowVerticalScrollArrows(TBool aValue); - - /** - * Call this method if the fep is being displayed for a control that is - * contained in a popup window (i.e. a Query). It changes the layout - * of the container. - * - * @param aValue if ETrue, use the layout for display with a query - * if EFalse, use the normal layout - */ - void SetIsShownWithPopupWindows(TBool aValue); - - /** - * This function sets cursor position. - * - * @param aCurPos containing the cursor position - * @param aHeight containing font height - */ - void SetContainerPosition(TPoint aCurPos,TInt aHeight); - - /** - * Set Candidate and pinyin popup invisible - * - */ - void SetControlInVisible( TBool aVisible ); - - /** - * Set the state to phrase creation - */ - void PhraseCreation( TBool aPhraseCreation ); - - /** - * Is the state is in phrase creation - * - * @return if not enabled, return EFalse - */ - TInt& IsPhraseCreation(); - - /** - * Set FepMan - * - * @return if not enabled, return EFalse - */ - void SetFepMan( MAknFepManagerUIInterface* aFepMan ); - -public: // from CCoeControl - - /** - * size changed - */ - virtual void SizeChanged(); - - /** - * count component controls - * - * @return number of contained controls - */ - TInt CountComponentControls() const; - - /** - * Component control - * - * @param aIndex the control to return, must be between 0 and the number of controls - * @return pointer to contained control, ownership is not passed - * - */ - CCoeControl* ComponentControl(TInt aIndex) const; - - /** - * draw - * - * @param aRect rectangle - * - */ - virtual void Draw(const TRect& aRect) const; - - virtual void HandleResourceChange(TInt aType); - -protected: // From CCoeControl - TTypeUid::Ptr MopSupplyObject(TTypeUid aId); - -public: // from MAknFepUICtrlPinyinPopupSizeChangedObserver - - /** - * called when the popup window changes size, so that it can be - * laid out correctly - * - * @param aNumLines the number of visible lines - */ - void SelectionPopupSizeChanged(TInt aNumLines); - - /** - * the popup has been enabled or disabled, so change layout where necessary - * - * @param aEnabled ETrue if popup has been enabled - * EFalse if popup has been disabled - */ - void SelectionPopupEnabled(TBool aEnabled); -protected: - - /** - * second phase construction - */ - void ConstructL(); - - /** - * constructor - */ - CAknFepUICtrlContainerChinese(); - - /** - * layout this control relative to the control pane (aka the CBA). - */ - void LayoutContainer(); - /** - * layout the rectangles - */ - void LayoutRects(); - /** - * layout entry pane - */ - void LayoutInputPane(); - /** - * layout contained controls - */ - void LayoutContainedControls(); - - /** - * layout the popup window - */ - void LayoutPinyinPopupWindow(); - - /** - * layout the EEP window - */ - void LayoutPinyinEEPWindow(); - - /** - * set control vilisibilty, according to the current pane layout - */ - void SetControlVisibility(); - - /** - * return the layout as an index that can be passed to the - * layout dll - * - * @return index into layout macro - */ - TInt ConvertLayoutToIndex() const; - - /** - * layout the background frames - */ - void LayoutFrames(); - - /** - * layout the background frames - * - * @param aOuterRect filled with outer rect coords - * @param aInnerRect filled with inner rect coords - * - */ - void CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const; - -private: - CAknFepUiLayoutDataMgr* iLafDataMgr; - CAknFepUICtrlInputPane* iInputPane; - CAknFepUICtrlCandidatePane* iCandidatePane; - CAknFepUICtrlPinyinPopup* iPinyinPopupWindow; - CAknFepUICtrlPinyinEEP* iEditPane; - CAknsFrameBackgroundControlContext* iBgContext; - -private: - TBool iEnabled; - TPaneLayout iPaneLayout; - TBool iIsShownWithPopupWindows; - // input pane - TAknLayoutRect iRectCoverMainPaneInput; - TAknLayoutRect iRectFirstShadowInput; - TAknLayoutRect iRectOutlineFrameInput; - TAknLayoutRect iRectInsideAreaInput; - TAknLayoutRect iHorizLine; //line between input pane and candidate pane - TAknLayoutRect iEEPFirstHorizLine; //line between input pane and EEP pane - TAknLayoutRect iEEPSecondHorizLine;////line between input pane and candidate pane when EEP exist - TPoint iContainerPosition; - TBool isPCLPosed; - TBool iPhraseCreationLaf; - - TInt iPhraseCreation; - MAknFepManagerUIInterface* iFepMan; -}; -#endif // __AKN_FEP_UI_AVKON_CONTAINER_CHINESE_H__ - -// End of file - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlContainerJapanese.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlContainerJapanese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlContainerJapanese definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_AVKON_CONTAINER_JAPANESE_H__ -#define __AKN_FEP_UI_AVKON_CONTAINER_JAPANESE_H__ - -// INCLUDES -#include -#include - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATION - -// CLASS DECLARATION -class CAknFepUIManagerJapanese; - -/** - * Container for the Japanese Candidate Pane and the Predictive Candidate Pane. - * - * @lib AknFep.lib - * @since 2.6 - */ -NONSHARABLE_CLASS(CAknFepUICtrlContainerJapanese) - : - public CBase, - public MAknFepUICtrlContainerJapanese - { -public: // Constructer and Destructor - /** - * first phase construction - * @since 2.6 - * @param aUiMng - * @return - */ - static CAknFepUICtrlContainerJapanese* NewL(CAknFepUIManagerJapanese* aUiMng); - - /** - * Destructor. - */ - ~CAknFepUICtrlContainerJapanese(); - -public: // New faunctions - /** - * @since 2.6 - * @param aId - * @return - */ - MAknFepUICtrlCandidatePaneInterface* CandidatePane(TAknFepUICtrlCandidatePaneId aId); - -private: - /** - * private c++ constructor. - * @since 2.6 - */ - CAknFepUICtrlContainerJapanese(); - - /** - * Second phase construction - * @since 2.6 - * @param aUiMng - */ - void ConstructL(CAknFepUIManagerJapanese* aUiMng); - -private: // Data - CArrayPtrFlat* iCandidatePaneArray; - }; - -#endif // __AKN_FEP_UI_AVKON_CONTAINER_JAPANESE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlDualLanguageSetting.hrh --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlDualLanguageSetting.hrh Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - -#ifndef __AKNFEPDUALLANGUAGESETTING_HRH_ -#define __AKNFEPDUALLANGUAGESETTING_HRH_ - - -enum TAknFepDualLanguageSettingDualInput - { - EAknFepDualLanguageSettingDualInputPrimary, - EAknFepDualLanguageSettingDualInputSecondary - }; -#endif \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlDualLanguageSettingData.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlDualLanguageSettingData.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,159 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -#ifndef __AKNFEPDUALLANGUAGESETTINGDATA_H -#define __AKNFEPDUALLANGUAGESETTINGDATA_H - -#include -#include -#include - -/** - * Class: CAknFepDualLanguageSettingData - * - * Discussion: An aggregate class containing data for all editing controls - * This class is used as a central respository for all data - * to be displayed and editted within this app. - */ -class CAknFepDualLanguageSettingData : public CBase -{ -public: - /** - * Function: NewL - * - * Discussion: Factory function used to create a new instance of - * CAknFepDualLanguageSettingData - * - * Returns: A newly created instance of CAknFepDualLanguageSettingData with all data - * items valid - */ - static CAknFepDualLanguageSettingData* NewL(); - - /** - * Function: NewLC - * - * Discussion: Factory function used to create a new instance of - * CAknFepDualLanguageSettingData and leave a pointer to it on the cleanup - * stack - * - * Returns: A newly created instance of CAknFepDualLanguageSettingData with all data - * items valid - */ - static CAknFepDualLanguageSettingData* NewLC(); - - /** - * Function: ~CAknFepDualLanguageSettingData - * - * Discussion: Virtual destructor for CCAknFepDualLanguageSettingData. Ensures that all - * allocated memory is returned to the heap before deletion - * of object. - * - */ - virtual ~CAknFepDualLanguageSettingData(); - - /** - * Function: LoadL - * - * Discussion: Loads itself with parameters passed. - * - */ - void LoadL(CDesCArrayFlat* aItems, - CDesCArrayFlat* aSecondaryItems, - TInt aCurrentValue, - TInt aCurrentSecondaryValue); - - - /** - * Function: SaveL - * - * Discussion: Saves itself. - * - */ - void SaveL() const; - - /** - * Function: Items - * - * Discussion: Trivial accessor function - * - * Returns: A reference to the iItems member - */ - inline CDesCArrayFlat* Items() {return iItems; } - - /** - * Function: SecondaryItems - * - * Discussion: Trivial accessor function - * - * Returns: A reference to the iSecondaryItems member - */ - inline CDesCArrayFlat* SecondaryItems() { return iSecondaryItems; } - - /** - * Function: CurrentValue - * - * Discussion: Trivial accessor function - * - * Returns: A reference to the iCurrentValue member - */ - inline TInt& CurrentValue() {return iCurrentValue; } - - /** - * Function: CurrentSecondaryValue - * - * Discussion: Trivial accessor function - * - * Returns: A reference to the iCurrentSecondaryValue member - */ - inline TInt& CurrentSecondaryValue() {return iCurrentSecondaryValue; } - -private: - /** - * Function: CAknFepDualLanguageSettingData - * - * Discussion: Hidden, first-stage non-leaving constructor. - * - */ - CAknFepDualLanguageSettingData(); - - /** - * Function: ConstructL - * - * Discussion: Hidden, second-stage possibly-leaving constructor. - * - */ - void ConstructL(); - - -public: - CDesCArrayFlat* iItems; - CDesCArrayFlat* iSecondaryItems; - TInt iCurrentValue; - TInt iCurrentSecondaryValue; -}; - -#endif // __AKNFEPDUALLANGUAGESETTINGDATA_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlDualLanguageSettingDialog.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlDualLanguageSettingDialog.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -#ifndef __AKNFEPDUALLANGUAGESETTINGDIALOG_H -#define __AKNFEPDUALLANGUAGESETTINGDIALOG_H - -#include -#include "AknFepUIAvkonCtrlDualLanguageSettingList.h" -#include "AknFepUIAvkonCtrlDualLanguageSettingData.h" - -class CAknFepDualLanguageSettingModel; - -class CAknFepDualLanguageSettingDialog : public CAknDialog -{ - public: - static CAknFepDualLanguageSettingDialog* NewL(TInt aMenuResId); - static CAknFepDualLanguageSettingDialog* NewLC(TInt aMenuResId); - virtual ~CAknFepDualLanguageSettingDialog(); - - virtual SEikControlInfo CreateCustomControlL(TInt aControlType); - virtual CAknFepDualLanguageSettingDialog::TFormControlTypes ConvertCustomControlTypeToBaseControlType(TInt aControlType) const; - - virtual TBool OkToExitL(TInt aButtonId); - virtual void ProcessCommandL(TInt aCommandId); - void EditItemL(TBool aCalledFromMenu); - - private: - CAknFepDualLanguageSettingDialog(); - void ReadSettingsDataL(); - void SaveSettingsDataL() const; - - TInt iPredictiveTextFlag; - - protected: - CAknFepDualLanguageSettingList* iSettingsList; - CAknFepDualLanguageSettingData* iLangData; - CAknFepDualLanguageSettingModel* iModel; - CArrayFixFlat* iLanguages; - CArrayFixFlat* iSecondaryLanguages; -}; -#endif //__AKNFEPDUALLANGUAGESETTINGDIALOG_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlDualLanguageSettingList.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlDualLanguageSettingList.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,152 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -#ifndef __AKNFEPDUALLANGUAGESETTINGLIST_H -#define __AKNFEPDUALLANGUAGESETTINGLIST_H - - -#include -#include -#include -#include "AknFepUIAvkonCtrlDualLanguageSettingModel.h" -#include "AknFepUIAvkonCtrlDualLanguageSettingData.h" - -class CAknFepDualLanguageSettingDialog; - -class CAknFepDualLanguageSettingItem : public CAknEnumeratedTextPopupSettingItem - { -public: - CAknFepDualLanguageSettingItem( TInt aResourceId, TBool aPrimary, CAknFepDualLanguageSettingData* aData ); - virtual ~CAknFepDualLanguageSettingItem(); -protected: - virtual void CompleteConstructionL(); -private: - CAknFepDualLanguageSettingData* iData; - TBool iPrimary; - }; - -/** - * Class: CAknFepDualLanguageSettingList - * - * Discussion: A specialised subclass of CAknSettingItemList. This class is - * the control used to both display the current values of the - * settings and to launch the relevant editor for those items. - * - */ -class CAknFepDualLanguageSettingList : public CAknSettingItemList - { -public: - /** - * Function: NewL - * - * Discussion: Factory function used to create a new instance of - * CAknFepDualLanguageSettingList - * - * Params: aData - reference to the data to be displayed and edited. - * - * Returns: A newly created instance of CAknFepDualLanguageSettingList - */ - static CAknFepDualLanguageSettingList* NewL(CAknFepDualLanguageSettingData* aData, CAknFepDualLanguageSettingDialog* aDialog); - - /** - * Function: NewLC - * - * Discussion: Factory function used to create a new instance of - * CAknFepDualLanguageSettingList and leave a pointer to it on the - * cleanup stack. - * - * Params: aData - reference to the data to be displayed and edited. - * - * Returns: A newly created instance of CAknFepDualLanguageSettingList - */ - static CAknFepDualLanguageSettingList* NewLC(CAknFepDualLanguageSettingData* aData, CAknFepDualLanguageSettingDialog* aDialog); - - /** - * Function: ~CAknFepDualLanguageSettingList - * - * Discussion: Virtual destructor for CAknFepDualLanguageSettingList. Ensures that - * all allocated memory is returned to the heap before - * deletion of object. - * - */ - virtual ~CAknFepDualLanguageSettingList(); - - - /** - * Function: SizeChanged - * - * Discussion: Inherited from CCoeControl. Calculates size based on - * contained control required sizes. - * - */ - void SizeChanged(); - - /** - * Function: EditCurrentItemL - * Params: aCalledFromMenu - ETrue if called from menu, EFalse otherwise. - * - * - * Discussion: Starts the setting page for the currently selected item - * in the list. - */ - void EditCurrentItemL(TBool aCalledFromMenu); - - // Toggle whether secondary input item is visible - void HideSecondaryInputL(TBool aHidden); - -private: - /** - * Function: CAknFepDualLanguageSettingList - * - * Discussion: Hidden, first-stage non-leaving constructor. - * - * Params: aData - reference to the data to be displayed and edited. - * - */ - CAknFepDualLanguageSettingList(CAknFepDualLanguageSettingData* aData, CAknFepDualLanguageSettingDialog* aDialog); - - /** - * Function: CreateSettingItemL - * - * Discussion: Factory function for creating CAknSettingItem derived - * SettingItem classes used t display current values - * - * Params: aSettingId - the id of the control which should be created - * - */ - CAknSettingItem* CreateSettingItemL (TInt aSettingId); - - void HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType); - -private: - CAknFepDualLanguageSettingData* iData; - CAknFepDualLanguageSettingDialog* iDialog; - TInt iPrimaryValue; - TInt iSecondaryValue; - }; - -#endif // __AKNFEPDUALLANGUAGESETTINGLIST_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlDualLanguageSettingModel.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlDualLanguageSettingModel.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -#ifndef __AKNFEPDUALLANGUAGESETTINGMODEL_H_ -#define __AKNFEPDUALLANGUAGESETTINGMODEL_H_ - -#include -#include //CDesCArray -#include //For CCoeEnv -#include - -class CAknFepDualLanguageSettingModel : public CBase - { -public: - static CAknFepDualLanguageSettingModel* NewL(); - enum TLanguageType - { - // Writing language - EAknFepDualLanguageSettingInputLanguage, - // Secondary writing language - EAknFepDualLanguageSettingInputLanguageSecondary - }; - void GetSecondaryInputLanguagesL( - CArrayFix* aSeedLanguages, - CDesCArray* aLanguageNames, - CCoeEnv* aCoeEnv); - void ShowDualInputLanguageSettingListL(CCoeEnv* aCoeEnv); - - void GetLanguagesFromPtiL( - CArrayFix* aInstalledLangCodes, - CArrayFix* aSeedLanguages, - CDesCArray* aLanguageNames ); - TInt LanguageL( TLanguageType aType ); - TBool SetLanguageL( TLanguageType aType, TInt aLanguage ); - - /* - * Returns Bool value according to predictive dictionary availability. - * PTI Engine used for lang avaibility retrieving - * @return ETrue: no errors - * EFalse: an error has occurred - * @since 2.6 - */ - TBool CheckDictionaryFromPtiL(TInt aLangCode ); - ~CAknFepDualLanguageSettingModel(); -private: - CAknFepDualLanguageSettingModel(){}; - void ConstructL(); -private: - CRepository* iAknFepRepository; - }; -#endif //__AKNFEPDUALLANGUAGESETTINGMODEL_H_ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlInputPane.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlInputPane.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,283 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlInputPane definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_AVKON_INPUT_PANE_H__ -#define __AKN_FEP_AVKON_INPUT_PANE_H__ - -#include -#include -#include - -#include "AknFepUIAvkonCtrlContainerChinese.h" -class CEikLabel; -class CAknsFrameBackgroundControlContext; - - -/** - * pane in which the user's input is shown - */ -NONSHARABLE_CLASS(CAknFepUICtrlInputPane) : public CCoeControl, public MAknFepUICtrlInputPane - { -public: - /** - * first phase construction - * - * @param aParent parent window - * @param aPaneLayout the required layout - * - */ - static CAknFepUICtrlInputPane* NewL(RWindow& aParent, - TInputPaneLayout aPaneLayout, - CAknFepUiLayoutDataMgr* aLafDataMgr); - - /** - * destructor - */ - ~CAknFepUICtrlInputPane(); - - /** - * set the observer - *

Note that only one observer is supported! - * - * @param aObserver pointer to the observer - */ - - void SetSizeChangedObserver(MAknFepUICtrlPinyinPopupSizeChangedObserver* aObserver); - - /** - * Set the text buffer of the pane. - * - * @param aDes, the label will be filled with the first N characters from aDes, - * where N=EMaxInputCharsNotIncludingToneMark - * - */ - void SetText(const TDesC& aDes); - - /** - * Get the text buffer of the pane - * - * @output aText the buffer is filled with the contents of the candidate - * of the pane, up to the size of the buffer - */ - void GetText(TDes& aText) const; - - /** - * This function sets the highlighted status of the pane for rendering purposes. - * - * @param aHighlighted whether or not the input pane has the highlight - */ - void SetHighlighted(TBool aHighlighted); - - /** - * This function returns the highlighted status of the Pane. - * - * @return whether the pane is highlighted - */ - TBool Highlighted() const; - - /** - * This function sets the Tone Mark for the Pane. - * - * @param aToneMark descriptor containing the tone mark character - */ - void SetToneMark(const TDesC& aToneMark); - - /** - * This function gets the Tone Mark for the Pane. - * - * @output aToneMark descriptor containing the tone mark character - */ - void GetToneMark(TDes& aToneMark) const; - - /** - * This function sets the validity of the tonemark - * - * @param aValid if ETrue, tonemark will be displayed as valid - * if EFalse, tonemark will be displayed as not valid - */ - void SetToneMarkValidity(TBool aValid); - - /** - * sets the layout index to use when accessing the - * layout dll - */ - void SetLayoutIndex(TInt aIndex); - - /** - * sets the font to be used, which will override the font from LAF - * - * @param aFontId the new font id, pass in 0 to use the one from LAF - * - */ - void SetOverrideFontId(TInt aFontId); - - /** - * This function determines whether the current text is shown or not - * - * @param aValid if ETrue, text will be displayed - * if EFalse, text will be displayed - */ - void MakeTextVisible(TBool aVisible); - /** - * This function calculate the input pane's size for phrase input layout - * @return input pane's size - * - */ - TInt LabelTextWidthInPixels() const; - - /** - * Set,clear and check phonetic change status (for phrase input) - */ - inline void SetFlag(TInt aFlag); - inline void ClearFlag(TInt aFlag); - inline TBool IsFlagSet(TInt aFlag) const; - - void SetLayout( TInputPaneLayout aPaneLayout ); - - -public: // from CCoeControl - /** - * size changed - */ - virtual void SizeChanged(); - - /** - * count component controls - * - * @return number of contained controls - */ - TInt CountComponentControls() const; - - /** - * Component control - * - * @param aIndex the control to return, must be between 0 and the number of controls - * @return pointer to contained control, ownership is not passed - * - */ - CCoeControl* ComponentControl(TInt aIndex) const; - - /** - * draw - * - * @param aRect rectangle - * - */ - virtual void Draw(const TRect& aRect) const; - -protected: - - /** - * second phase construction - * - * @param aParent parent window - */ - void ConstructL(RWindow& aParent); - - /** - * constructor - * - * @param aPaneLayout the required layout - */ - CAknFepUICtrlInputPane(TInputPaneLayout aPaneLayout, CAknFepUiLayoutDataMgr* aLafDataMgr); - - /** - * Update the contents of the label, by combining - * the buffer with the tone mark - */ - void UpdateLabelContents(); - - /** - * layout contained controls - */ - void LayoutContainedControls(); - - /** - * layout the background frames - * - * @param aOuterRect filled with outer rect coords - * @param aInnerRect filled with inner rect coords - * - */ - void CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const; - -private: - - /** - * Get dispalying input text - * - * @param aDes Input text - */ - TInt CalculateMaxTextLength(const TDesC& aDes) const; - - /** - * layout input text - * - * @param aDes Input text - */ - TInt CalculateTextLength(const TDesC& aDes) const; - -private: - TBool iHighlighted; - TInputPaneLayout iLayout; - TInt iLayoutIndex; - TInt iMaxInputChars; - TAknLayoutRect iUnselectedStringHighlight; - TBufC iToneMarkBuffer; - TBool iToneMarkValidity; - TInt iFontId; - TInt iFlags; -private: // the following are owned - HBufC* iBuffer; - CEikLabel* iLabel; - CEikLabel* iLabelToneMark; - -private: // the following are not owned - CAknFepUiLayoutDataMgr* iLafDataMgr; - MAknFepUICtrlPinyinPopupSizeChangedObserver* iSizeChangedObserver; - }; - -inline void CAknFepUICtrlInputPane::SetFlag(TInt aFlag) - { - iFlags |= aFlag; - } - -inline void CAknFepUICtrlInputPane::ClearFlag(TInt aFlag) - { - iFlags &= ~aFlag; - } - -inline TBool CAknFepUICtrlInputPane::IsFlagSet(TInt aFlag) const - { - return iFlags & aFlag; - } - -#endif //__AKN_FEP_AVKON_INPUT_PANE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseCandidateCellListBoxData.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseCandidateCellListBoxData.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Candidate list -* -*/ - - - - - - - - - - - - -#ifndef CAKNFEPUICTRLJAPANESECANDIDATECELLLISTBOXDATA_H -#define CAKNFEPUICTRLJAPANESECANDIDATECELLLISTBOXDATA_H - -// INCLUDES -#include // CFormattedCellListBoxData - -// CONSTANTS - -// FORWARD DECLARATIONS - -// CLASS DECLARATION - -/** -* CAknFepUICtrlJapaneseCandidateHeadingPane class. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapaneseCandidateCellListBoxData) - : public CFormattedCellListBoxData - { - public: // Constructors and destructor - /** - * Two-phased constructor. - */ - static CAknFepUICtrlJapaneseCandidateCellListBoxData* NewL(); - - public: // Functions from CFormattedCellListBoxData - /** - * From CFormattedCellListBoxData Draw() is the most important method - * in CAknFepUICtrlJapaneseCandidateCellListBoxData. - * This is the only method that needs to be implemented in this class - * and it draws the whole list item. - * @since 2.6 - * @param aProperties Properties attached to the list item - * @param aGc Graphics context used for drawing the list item - * @param aText a text string describing the list item cells - * @param aRect the area of the screen for the whole list item - * @param aHighlight whether the list item is selected - * @param aColors the colours used for drawing the item - */ - virtual void Draw(TListItemProperties aProperties, - CWindowGc& aGc, - const TDesC* aText, - const TRect& aRect, - TBool aHighlight, - const TColors& aColors) const; - - /** - * From CFormattedCellListBoxData DrawDefaultHighlight() is ... - * @since 2.6 - * @param aGc - * @param aItemRect - * @param aHighlight - */ - void DrawDefaultHighlight(CWindowGc& aGc, - const TRect& aItemRect, - TBool aHighlight) const; - }; - -#endif // CAKNFEPUICTRLJAPANESECANDIDATECELLLISTBOXDATA_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseCandidateHeadingPane.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseCandidateHeadingPane.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Candidate list -* -*/ - - - - - - - - - - - - -#ifndef CAKNFEPUICTRLJAPANESECANDIDATEHEADINGPANE_H -#define CAKNFEPUICTRLJAPANESECANDIDATEHEADINGPANE_H - -// INCLUDES -#include // CAknPopupHeadingPane - -// CONSTANTS - -// FORWARD DECLARATIONS - -// CLASS DECLARATION - -/** -* CAknFepUICtrlJapaneseCandidateHeadingPane class. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapaneseCandidateHeadingPane) : public CAknPopupHeadingPane - { - public: // New functions - /** - * Set the parent window rect of heading pane - * @since 2.6 - * @param aParentRect parent window rect - */ - void SetParentRect(const TRect& aParentRect); - - public: // Functions from CAknPopupHeadingPane - virtual void SizeChanged(); - - public: // Functions from CCoeControl - virtual void ActivateL(); - - private: // Functions from CCoeControl - TInt CountComponentControls() const; - CCoeControl* ComponentControl(TInt aIndex) const; - - private: // Functions from CAknPopupHeadingPane - void LayoutListHeadingPane(); - - private: // Data - TRect iParentRect; - - }; - -#endif // CAKNFEPUICTRLJAPANESECANDIDATEHEADINGPANE_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseCandidateListbox.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseCandidateListbox.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Candidate list -* -*/ - - - - - - - - - - - - -#ifndef CAKNFEPUICTRLJAPANESECANDIDATELISTBOX_H -#define CAKNFEPUICTRLJAPANESECANDIDATELISTBOX_H - -// INCLUDES - -// CONSTANTS - -// FORWARD DECLARATIONS - -// CLASS DECLARATION - -/** -* CAknFepUICtrlJapaneseCandidateListbox class. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapaneseCandidateListbox) - : public CAknSinglePopupMenuStyleListBox - { - public: // New functions - /** - * Set max digit number for listbox - * @since 2.6 - * @param aMaximumColumns max digit number - */ - void SetMaximumColumns(const TInt aMaximumColumns); - - /** - * Set max visible rows for listbox - * @since 3.0 - * @param aMaximumRows max visible rows - */ - void SetMaximumRows(const TInt aMaximumRows); - - /** - * Return max visible rows for listbox - * @since 3.0 - */ - inline TInt MaximumRows(); - - /** - * Handling of pointer event within the @c CEikListBox. - * Used for e.g. selecting an item from the list box. - * - * @since 3.2 - * @param aPointerEvent Details of the pointer event that is being handled. - */ - void HandlePointerEventL(const TPointerEvent& aPointerEvent); - - public: // Functions from CAknSinglePopupMenuStyleListBox - virtual void SizeChanged(); - - public: // Functions from CEikFormattedCellListBox - virtual CListBoxView* MakeViewClassInstanceL(); - - protected: // Functions from CAknSinglePopupMenuStyleListBox - virtual void CreateItemDrawerL(); - - protected: // Functions from CEikListBox - /** - * from CEikListBox - * Used for scrolling through the items in the list box. - * - * @param aScrollBar Scroll bar for the list box. - * @param aEventType Type of the event that occured. - */ - virtual void HandleScrollEventL(CEikScrollBar* aScrollBar, - TEikScrollEvent aEventType); - - private: // Data - TInt iMaximumColumns; - TInt iMaximumRows; - }; - -TInt CAknFepUICtrlJapaneseCandidateListbox::MaximumRows() - { - return iMaximumRows; - } - -#endif // CAKNFEPUICTRLJAPANESECANDIDATELISTBOX_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseCandidateListboxView.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseCandidateListboxView.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Candidate list -* -*/ - - - - - - - - - - - - -#ifndef CAKNFEPUICTRLJAPANESECANDIDATELISTBOXVIEW_H -#define CAKNFEPUICTRLJAPANESECANDIDATELISTBOXVIEW_H - -// INCLUDES - -// CONSTANTS - -// FORWARD DECLARATIONS - -// CLASS DECLARATION - -/** -* CAknFepUICtrlJapaneseCandidateListboxView draws all the list items and -* manages the area of the screen allocated for list itself. In particular, -* this class does not handle margins of the whole list. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapaneseCandidateListboxView) : public CListBoxView - { - public: // Functions from CListBoxView - virtual void Draw(const TRect* aClipRect = NULL) const; - virtual void DrawItem(TInt aItemIndex) const; - }; - -#endif // CAKNFEPUICTRLJAPANESECANDIDATELISTBOXVIEW_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseCandidatePane.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseCandidatePane.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,335 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Candidate list -* -*/ - - - - - - - - - - - - -#ifndef CAKNFEPUICTRLJAPANESECANDIDATEPANE_H -#define CAKNFEPUICTRLJAPANESECANDIDATEPANE_H - -// INCLUDES -#include // CAknPopupList -#include "AknFepUICtrlCandidatePaneInterface.h" - // MAknFepUICtrlCandidatePaneInterface - -// CONSTANTS - -// FORWARD DECLARATIONS -// CLASS DECLARATION -class CAknFepUIManagerJapanese; - -/** -* CAknFepUICtrlJapaneseCandidatePane class. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapaneseCandidatePane) : - public CAknPopupList, - public MAknFepUICtrlCandidatePaneInterface - { - public: // Constructors and destructor - /** - * Two-phased constructor. - */ - static CAknFepUICtrlJapaneseCandidatePane* NewL(CAknFepUIManagerJapanese* aUiMng); - - /** - * Destructor. - */ - virtual ~CAknFepUICtrlJapaneseCandidatePane(); - - public: // New functions - /** - * Show Pop-up list - * @since 2.6 - */ - void ShowWindow(); - - /** - * Close Pop-up list - * @since 2.6 - */ - void CloseCandidateList(); - - /** - * Specify the cursor position of a pop-up list - * @since 2.6 - * @param aItemIndex The index of the cursor position - * @param aDraw ETrue is redraw. - */ - void SetCurrentItemIndexL(TInt aItemIndex, TBool aDraw); - - /** - * Specify the display position of a pop-up list - * @since 2.6 - * @param aOffset Offset of a window display position - */ - void SetOffsetPosition(TPoint aOffset); - - public: // Functions from MAknFepUICtrlCandidatePaneInterface - /** - * From MAknFepUICtrlCandidatePaneInterface - * Set position to display candidate list - * @since 2.6 - * @param aLeftSideOfBaseLine left side of font - * @param aHeight font hight - * @param aAscent Ascent position - */ - void SetWindowPosition(const TPoint& aLeftSideOfBaseLine, - TInt aHeight, - TInt aAscent); - - /** - * From MAknFepUICtrlCandidatePaneInterface - * Show candidate list popup window - * @since 2.6 - * @param aItems array of candidate list - * @param aIndex selecting number when displaying - * - */ - void ShowCandidateListL(CDesCArrayFlat* aItems, TInt aIndex, TInt aResourceID=0); - - /** - * From MAknFepUICtrlCandidatePaneInterface - * Hide candidate popup window - * @since 2.6 - */ - void HideWindow(); - - /** - * From MAknFepUICtrlCandidatePaneInterface - * Return a selected candidate item number currently - * @since 2.6 - */ - TInt CurrentItemIndexOfCandidate(); - - /** - * From MAknFepUICtrlCandidatePaneInterface - * Move a current item in an appointed direction - * @since 2.6 - * @param aDirection direction - */ - TInt MoveItem(TAknFepUICtrlScroll aDirection); - - protected: // Functions from CAknPopupList - /** - * From CAknPopupList Set up a window layout type - * @since 2.6 - * @param aType Layout type - */ - virtual void SetupWindowLayout(AknPopupLayouts::TAknPopupLayouts aType); - - /** - * From CAknPopupList Set the title for the selection list - * @since 2.6 - * @param aAccept - */ - virtual void AttemptExitL(TBool aAccept); - - TTypeUid::Ptr MopSupplyObject(TTypeUid aId); - - /** - * from CAknPopupList of MEikCommandObserver - * @since 3.2 - * @param aCommandId aCommandId Event Id from the soft-key - */ - void ProcessCommandL(TInt aCommandId); - - protected: // from MEikListBoxObserver - /** - * Handle pointer up event - * - * @since S60 V3.2 - * @param aListBox ListBox control - * @param aEventType - * @return None - */ - virtual void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); - - private: - /** - * constructor. - */ - CAknFepUICtrlJapaneseCandidatePane(CAknFepUIManagerJapanese* aUiMng); - - /** - * Symbian 2nd phase constructor can leave. - */ - void ConstructL(); - - /** - * Set the title for the selection list - * @since 2.6 - * @param aTitle The character string of a title - */ - void SetTitleL(const TDesC& aTitle); - - /** - * The handler function for size change - * @since 2.6 - * @param aDef layout information of popup-window - * @param aHeading heading Pane object - * @param aListBox listbox object - * @param aWindowOwningControl owner control - */ - void HandleSizeChanged(TAknPopupWindowLayoutDef& aDef, - CAknPopupHeadingPane* aHeading, - CEikListBox* aListBox, - CCoeControl* aWindowOwningControl - ); - - /** - * The handler function for Draw - * @since 2.6 - * @param aEikEnv EikEnv - * @param aGc Gc - * @param aDef layout information of popup-window - * @param aListBox listbox object - * @param aHeadingOrNull heading Pane object - */ - static void HandleDraw(CEikonEnv* aEikEnv, - CWindowGc& aGc, - const TAknPopupWindowLayoutDef& aDef, - CEikListBox* aListBox, - CAknPopupHeadingPane* aHeadingOrNull); - - /** - * Set up the information on a pop-up window - * @since 2.6 - * @param aDef layout information of popup-window - * @param aRect rect - * @param num total cantidate number - */ - void CalcPopupMenuWindow(TAknPopupWindowLayoutDef& aDef, - const TRect& aRect, - TInt num); - - /** - * Set up the information on a pop-up window - * @since 2.6 - * @param aDef layout information of popup-window - * @param num total cantidate number - * @param heading ETrue:with heading pane/ EFalse:without heading pane - */ - void SetupMenuPopupWindow(TAknPopupWindowLayoutDef& aDef, - TInt num, - TBool heading); - - /** - * The handler function for size and a location - * @since 2.6 - * @param aDef layout information of popup-window - * @param aContentInsidePopup - * @param aHeadingOrNull heading pane object - */ - static void HandleSizeAndPositionOfComponents( - const TAknPopupWindowLayoutDef& aDef, - CCoeControl* aContentInsidePopup, - CAknPopupHeadingPane* aHeadingOrNull); - - /** - * Draws a window shadow - * @since 2.6 - * @param aCoverRect the area covered by the shadow - * @param aSecondShadowRect the area used for second shadow - * @param aFirstShadowRect the area of first shadow - * @param aOutliineFrameRect the area of black outline frame - * @param aInsideAreaRect the area of content inside the window - */ - static void DrawWindowShadow( - CWindowGc& aGc, - const TAknLayoutRect& aCoverRect, - const TAknLayoutRect& aSecondShadowRect, - const TAknLayoutRect& aFirstShadowRect, - const TAknLayoutRect& aOutlineFrameRect, - const TAknLayoutRect& aInsideAreaRect); - - /** - * This function returns maximum columns to be able to display in listbox, this function - * find longest candidate string in candidate list. Return 11 columns in case more than 11 columns, and minimum is 3 columns. - * @since 2.6 - * @param aModel listbox model object - * @return maximum columns - */ - TInt MaximumColumns(CTextListBoxModel* aModel); - - /** - * This function returns maximum rows to be able to display in listbox. - * Maximum is 7 rows and minimum is 3 columns. - * @since 2.6 - * @param aModel listbox model object - * @return maximum line - */ - TInt MaximumRows(CTextListBoxModel* aModel); - - /** - * Called by the framework to draw the control - * @param aRect Rectangle in which the Cone framework believes drawing - * is needed - */ - virtual void Draw(const TRect& aRect) const; - - /** - * Handle key events. When a key event occurs, - * CONE calls this function for each control on the control stack, - * until one of them returns EKeyWasConsumed to indicate that - * it processed the key event. - * - * @param aKeyEvent The key event. - * @param aType The type of the event: - * EEventKey, EEventKeyUp or EEventKeyDown. - * @return Indicates whether or not the key event was used - * by this control. - */ - virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, - TEventCode aType); - - /** - * show cba - * @since 2.6 - */ - void ShowWindowCbaL(); - - /** - * Changing the cba - * @since 3.2 - * @param aResourceID - */ - void UpdateCbaL(TInt aResourceID); - - private: // Data - TRect iMainPaneRect; - TPoint iOffsetPosition; - TInt iSrcTextHeight; - - TInt iMaximumColumns; - TInt iMaximumRows; - CAknFepUIManagerJapanese* iUiMng; - }; - -#endif // CAKNFEPUICTRLJAPANESECANDIDATEPANE_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseKutenQueryDialog.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapaneseKutenQueryDialog.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,174 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Kuten code query dialog -* -*/ - - - - - - - - - - - - -#ifndef AKNFEPUICTRLJAPANESEKUTENQUERYDIALOG_H -#define AKNFEPUICTRLJAPANESEKUTENQUERYDIALOG_H - -// INCLUDES -#include // CAknTextQueryDialog - -// FORWARD DECLARATIONS - -// CONSTANTS - -// CLASS DECLARATION - -/** -* CAknFepUICtrlJapaneseKutenQueryDialog class. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapaneseKutenQueryDialog) : public CAknTextQueryDialog - { - public: // Constructors and destructor - /** - * Two-phased constructor. - */ - static CAknFepUICtrlJapaneseKutenQueryDialog* NewL( - TInt& aCharCode, const TTone& aTone = ENoTone); - - /** - * Destructor. - */ - virtual ~CAknFepUICtrlJapaneseKutenQueryDialog(); - TInt ExecuteLD(TInt aResourceId); - - TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType); - protected: // Functions from CEikDialog - /** - * From CEikdialog This function is called by the EIKON framework - * if the user activates a button in the button panel. - * It is not called if the Cancel button is activated, - * unless the EEikDialogFlagNotifyEsc flag is set. - * @since 2.6 - * @param aButtonId The ID of the button that was activated - * @return Should return ETrue if the dialog should exit, - * and EFalse if it should not. - */ - virtual TBool OkToExitL(TInt aButtonId); - - protected: // Functions from CAknQueryDialog - /** - * If the query text is ok (retrieved form query control) then display the - * left soft key, otherwise hide it. - * @since 2.6 - */ - virtual void UpdateLeftSoftKeyL(); - - private: - /** - * constructor. - */ - CAknFepUICtrlJapaneseKutenQueryDialog( - TInt& aCharCode, const TTone& aTone = ENoTone); - - /** - * Set visibility of the left softkey. - * Softkey is hidden when data in the query is not acceptable. - * @since 2.6 - */ - void MakeLeftSoftkeyVisibleL(); - - enum TJisElementsCharMap - { - EJisFirstMin = 0x21, - EJisFirstMax = 0x74, - EJisSecondMin = 0x21, - EJisSecondMax = 0x7E, - EJisLastSecondMax = 0x2F - }; - - enum TSjisElements - { - ESjisFirstMin1 = 0x81, - ESjisFirstMax1 = 0x9F, - ESjisFirstMin2 = 0xE0, - ESjisFirstMax2 = 0xEA, -// ESjisFirstMax2 = 0xEE, // NEC extended kanji code -// ESjisFirstMax2 = 0xFC, // IBM extended kanji code - ESjisFirstCount = (ESjisFirstMax2 - ESjisFirstMin2 + 1 - + ESjisFirstMax1 - ESjisFirstMin1 + 1), - ESjisSecondMin1 = 0x40, - ESjisSecondMax1 = 0x7E, - ESjisSecondMin2 = 0x80, - ESjisSecondMax2 = 0xFC, - ESjisSecondCount = (ESjisSecondMax2 - ESjisSecondMin2 + 1 - + ESjisSecondMax1 - ESjisSecondMin1 + 1) - }; - - /** - * Convert from Kuten code to unicode, Kuten code is 4 characters which inputted in query dialog. - * @since 2.6 - * @return unicode, it is one character. - */ - TText ConvertKutenCode2Unicode(); - - /** - * Convert to valid jis code. If inputting invalid code, this function converts nearly valid code. - * @since 2.6 - */ - void AdjustJisCode(TText& aJisCode); - - /** - * Convert to valid s-jis code. If inputting invalid code, this function converts nearly valid code. - * @since 2.6 - * @return ETrue: s-jis code EFalse: none s-jis code - */ - TBool AdjustSjisCode(TText& aSjisCode); - - /** - * Convert from JIS to S-JIS - * @since 2.6 - * @return s-jis code as inputting jis code - */ - TText JisToSjis(TText aJisCode); - - /** - * Check a s-jis code inputted in dialog - * @since 2.6 - * @return ETrue: s-jis code EFalse: none s-jis code - */ - TBool CheckSjisCode(TText aSjisCode); - - /** - * Convert from s-jis to unicode - * @since 2.6 - * @return unicode code as inputting s-jis code - */ - TText ConvSjisToUnicode(TText aSjisCode); - - private: - TInt& iCharCode; - TBuf<5> iBuffer; - TUint iCbaResId; - }; - -#endif // AKNFEPUICTRLJAPANESEKUTENQUERYDIALOG_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictiveCellListBoxData.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictiveCellListBoxData.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive Candidate list -* -*/ - - - - - - - - - - - - -#ifndef CAKNFEPUICTRLJAPANESEPREDICTIVECELLLISTBOXDATA_H -#define CAKNFEPUICTRLJAPANESEPREDICTIVECELLLISTBOXDATA_H - -// INCLUDES - -// CONSTANTS - -// FORWARD DECLARATIONS - -// CLASS DECLARATION - -/** -* CAknFepUICtrlJapanesePredictiveCellListBoxData class. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapanesePredictiveCellListBoxData) - : public CFormattedCellListBoxData - { - public: // Constructors and destructor - /** - * Two-phased constructor. - */ - static CAknFepUICtrlJapanesePredictiveCellListBoxData* NewL(); - - public: // New functions - /** - * Set a starting x-point and ending to highlight - * @since 2.6 - * @param aHighlightStartXPos a starting x-point - * @param aHighlightEndXPos a ending x-point - */ - void SetHighlightArea(TInt aHighlightStartXPos, - TInt aHighlightEndXPos); - - public: // Functions from CFormattedCellListBoxData - - /** - * From CFormattedCellListBoxData Draw() is the most important method in - * CAknFepUICtrlJapanesePredictiveCellListBoxData. - * This is the only method that needs to be implemented in this class and - * it draws the whole listi tem. - * @since 0.0 - * @param aProperties Properties attached to the list item - * @param aGc Graphics context used for drawing the list item - * @param aText a text string describing the list item cells - * @param aRect the area of the screen for the whole list item - * @param aHighlight whether the list item is selected - * @param aColors the colours used for drawing the item - * @return None. - */ - virtual void Draw(TListItemProperties aProperties, - CWindowGc& aGc, - const TDesC* aText, - const TRect& aRect, - TBool aHighlight, - const TColors& aColors) const; - - /** - * From CFormattedCellListBoxData - * Show hightlight area in listbox - * @since 2.6 - * @param aGc Gc - * @param aItemRect rect to highlight - * @param aHighlight ETrue is highlight. EFalse is non-highlight. - */ - void DrawDefaultHighlight(CWindowGc &aGc, - const TRect &aItemRect, - TBool aHighlight) const; - - private: // Data - TInt iHighlightStartXPos; - TInt iHighlightEndXPos; - }; - -#endif // CAKNFEPUICTRLJAPANESEPREDICTIVECELLLISTBOXDATA_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictiveListBoxModel.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictiveListBoxModel.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive Candidate list -* -*/ - - - - - - - - - - - - -#ifndef CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOXMODEL_H -#define CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOXMODEL_H - -// INCLUDES - -// CONSTANTS - -// FORWARD DECLARATIONS - -// CLASS DECLARATION - -/** -* TPredictivePopupElement class. -* This structure stores the information to display a candidate. -* -* @lib AknFep.lib -* @since 2.6 -*/ -struct TPredictivePopupElement - { - TInt iStartXPos; - TInt iEndXPos; - TInt iCandidateNo; - }; - -typedef CArrayFixFlat CPredictivePopupElementArray; - -// CLASS DECLARATION - -/** -* CPredictivePopupLineInfo class. -* This class stores a line information on predictive candidate list. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CPredictivePopupLineInfo) : public CBase - { -public: - inline CPredictivePopupLineInfo() {}; - virtual ~CPredictivePopupLineInfo(); - - HBufC* iLineText; - CPredictivePopupElementArray* iElementsOnLine; - }; - -typedef CArrayPtrFlat CPredictivePopupLineInfoArray; - - -// CLASS DECLARATION - -/** -* CAknFepUICtrlJapanesePredictiveListBoxModel class. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapanesePredictiveListBoxModel) - : public CAknFilteredTextListBoxModel - { - public: // New functions - /** - * This function registeres the array of line information of candidate list. - * @since 2,6 - * @param aLineInfoArray - */ - void SetLineInfoArray(CPredictivePopupLineInfoArray* aLineInfoArray); - - /** - * This function returns a arrary object that the information is included each line. - * @since 2.6 - * @return array object - */ - CPredictivePopupLineInfoArray* LineInfoArray() const; - - /** - * This function searches a item index as key in a candidate number - * - * @since 2.6 - * @param aCandidateNo candidate number - * @return item index - */ - TInt SearchItemIndexFromCandidateNo(TInt aCandidateNo) const; - - /** - * This function is that it checks whether the candidate is included in the line. - * If including it, The displaying information is returned. - * @since 2.6 - * @param aLineNo line number - * @param aCandidateNo candidate number - * @param aElement display mode - * @return ETrue if including candidate - */ - TBool SearchElement(TInt aLineNo, - TInt aCandidateNo, - TPredictivePopupElement& aElement); - - /** - * Set total item numbers in listbox - * @since 2.6 - * @param aMaximumItems total item numbers - */ - void SetMaximumItems(TInt aMaximumItems); - - /** - * Return total item numbers - * @since 2.6 - * @return total item numbers - */ - TInt MaximumItems(); - - /** - * This function searches a CandidateNo from linenumber and Position - * @since 3.2 - * @param aLineNo line number - * @param aPoint position - * @eturn candidate number - */ - TInt SearchCandidateNoFromPosition( - TInt aLineNo, const TPoint& aPoint) const; - - private: // Data - CPredictivePopupLineInfoArray* iLineInfoArray; - TInt iMaximumItems; - }; - -#endif // CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOXMODEL_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictiveListbox.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictiveListbox.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive Candidate list -* -*/ - - - - - - - - - - - - -#ifndef CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOX_H -#define CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOX_H - -// INCLUDES - -// CONSTANTS - -// FORWARD DECLARATIONS - -// CLASS DECLARATION - -/** -* CAknFepUICtrlJapanesePredictiveListbox class. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapanesePredictiveListbox) - : public CAknSinglePopupMenuStyleListBox - { - public: // Constructors and destructor - void ConstructL(const CCoeControl* aParent, TInt aFlags); - - public: // New functions - /** - * Selecting the index as argument - * @since 2.6 - * @param aCandidateNo The index of the cursor position - * @param aDraw ETrue is redraw. - */ - void SetCurrentCandidateNo(TInt aCandidateNo, TBool aDraw); - - /** - * Return the candidate number selected currently - * @since 2.6 - * @return the candidate number selected currently - */ - TInt CurrentCandidateNo(); - - /** - * selecting a previous candidate - * @since 2.6 - * @return the candidate number selected currently - */ - TInt MovePreviousItem(); - - /** - * selecting a next candidate - * @since 2.6 - * @return the candidate number selected currently - */ - TInt MoveNextItem(); - - /** - * selecting a previous line candidate - * @since 2.6 - * @return the candidate number selected currently - */ - TInt MovePreviousLineItem(); - - /** - * selecting a next line candidate - * @since 2.6 - * @return the candidate number selected currently - */ - TInt MoveNextLineItem(); - - /** - * Handling of pointer event within the @c CEikListBox. - * Used for e.g. selecting an item from the list box. - * - * @since 3.2 - * @param aPointerEvent Details of the pointer event that is being handled. - */ - void HandlePointerEventL(const TPointerEvent& aPointerEvent); - - public: // Functions from CAknSinglePopupMenuStyleListBox - virtual void SizeChanged(); - - public: // Functions from CEikFormattedCellListBox - virtual CListBoxView* MakeViewClassInstanceL(); - - protected: // Functions from CAknSinglePopupMenuStyleListBox - virtual void CreateItemDrawerL(); - - protected: // Functions from CEikListBox - /** - * Sets an item as the current item, even if it is not currently - * visible. Redraws the list box to reflect the change. This - * should not be called from within another Draw function. - * - * @param aItemIndex The index of the list box item to update. - */ - virtual void UpdateCurrentItem(TInt aItemIndex) const; - - /** - * from CEikListBox - * Used for scrolling through the items in the list box. - * - * @param aScrollBar Scroll bar for the list box. - * @param aEventType Type of the event that occured. - */ - virtual void HandleScrollEventL(CEikScrollBar* aScrollBar, - TEikScrollEvent aEventType); - }; - -#endif // CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOX_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictiveListboxItemDrawer.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictiveListboxItemDrawer.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive Candidate list -* -*/ - - - - - - - - - - - - -#ifndef CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOXITEMDRAWER_H -#define CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOXITEMDRAWER_H - -// INCLUDES - -// CONSTANTS - -// FORWARD DECLARATIONS - -// CLASS DECLARATION - -/** -* CAknFepUICtrlJapanesePredictiveListboxItemDrawer draws a single list item -* and manages list item properties. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapanesePredictiveListboxItemDrawer) - : public CFormattedCellListBoxItemDrawer - { - public: // Constructors and destructor - /** - * Constructors - * @since 2.6 - * @param aTextListBoxModel - * @param aFont - * @param aFormattedCellData - */ - CAknFepUICtrlJapanesePredictiveListboxItemDrawer( - MTextListBoxModel* aTextListBoxModel, - const CFont* aFont, - CFormattedCellListBoxData* aFormattedCellData); - - public: // New functions - /** - * Drawing listbox items - * @since 2.6 - * @param aItemIndex a item index to draw - * @param aItemRectPos a rect to draw - * @param aItemIsSelected a flag to select - * @param aItemIsCurrent a flag to current - * @param aViewIsEmphasized - * @param aViewIsDimmed - * @param aHighlightStartXPos a starting x-position to hightlight - * @param aHighlightEndXPos a ending x-position to hightlight - */ - void DrawItem(TInt aItemIndex, - TPoint aItemRectPos, - TBool aItemIsSelected, - TBool aItemIsCurrent, - TBool aViewIsEmphasized, - TBool aViewIsDimmed, - TInt aHighlightStartXPos, - TInt aHighlightEndXPos) const; - }; - -#endif // CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOXITEMDRAWER_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictiveListboxView.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictiveListboxView.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive Candidate list -* -*/ - - - - - - - - - - - - -#ifndef CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOXVIEW_H -#define CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOXVIEW_H - -// INCLUDES - -// CONSTANTS - -// FORWARD DECLARATIONS - -// CLASS DECLARATION - -/** -* CAknFepUICtrlJapanesePredictiveListboxView draws all the list items and manages -* the area of the screen allocated for list itself. In particular, -* this class does not handle margins of the whole list. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapanesePredictiveListboxView) : public CListBoxView - { - public: // New functions - /** - * Return the selected candidate number currently - * @since 2.6 - * @return candidate number - */ - TInt CurrentCandidateNo() const; - - /** - * Set current candidate number - * @since 2.6 - * @param aCandidateNo candidate number - * @return item index including candidate number - */ - TInt SetCurrentCandidateNo(TInt aCandidateNo); - - /** - * Return previous candidate number - * @since 2.6 - * @return candidate number - */ - TInt PreviousItem(); - - /** - * Return next candidate number - * @since 2.6 - * @return candidate number - */ - TInt NextItem(); - - /** - * Return candidate number of previous line - * @since 2.6 - * @return candidate number - */ - TInt PreviousLineItem(); - - /** - * Return candidate number of next line - * @since 2.6 - * @return candidate number - */ - TInt NextLineItem(); - - /** - * Return the selected candidate number currently - * @since 3.2 - * @return candidate number - */ - TInt OldCandidateNo() const; - - /** - * Set current candidate number from point - * @since 3.2 - * @param aLineNo line number - * @param aPoint position - * @return candidate number - */ - TInt SetCurrentCandidateNo(TInt aLineNo, const TPoint& aPoint); - - public: // from CListBoxView - virtual void DrawItem(TInt aItemIndex) const; - - private: // Data - TInt iCurrentCandidateNo; - TInt iOldCandidateNo; - }; - -#endif // CAKNFEPUICTRLJAPANESEPREDICTIVELISTBOXVIEW_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictivePane.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlJapanesePredictivePane.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,385 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive Candidate list -* -*/ - - - - - - - - - - - - -#ifndef CAKNFEPUICTRLJAPANESEPREDICTIVEPANE_H -#define CAKNFEPUICTRLJAPANESEPREDICTIVEPANE_H - -// INCLUDES -#include -#include "AknFepUICtrlCandidatePaneInterface.h" // MAknFepUICtrlCandidatePaneInterface -#include "AknFepUIAvkonCtrlJapanesePredictiveListBoxModel.h" - -// CONSTANTS -const TInt KJapPredictiveVisibleListRowsMax = 3; -const TInt KJapPredictiveVisibleListRowsMin = 1; - -// FORWARD DECLARATIONS -class CAknFepUIManagerJapanese; - -// CLASS DECLARATION - -/** -* CAknFepUICtrlJapanesePredictivePane class. -* -* @lib AknFep.lib -* @since 2.6 -*/ -NONSHARABLE_CLASS(CAknFepUICtrlJapanesePredictivePane) : - public CAknPopupList, - public MAknFepUICtrlCandidatePaneInterface - { - public: // Constructors and destructor - /** - * Two-phased constructor. - */ - static CAknFepUICtrlJapanesePredictivePane* NewL(CAknFepUIManagerJapanese* aUiMng); - - /** - * Destructor. - */ - virtual ~CAknFepUICtrlJapanesePredictivePane(); - - public: // New functions - /** - * Show Pop-up list - * @since 2.6 - */ - void ShowWindow(); - - /** - * Close Pop-up list - * @since 2.6 - */ - void ClosePredictiveList(); - - /** - * Specify the cursor position of a pop-up list - * @since 2.6 - * @param aItemIndex The index of the cursor position - */ - void SetCurrentItemIndex(TInt aItemIndex); - - /** - * Specify the display position of a pop-up list - * - * @since 2.6 - * @param aOffset Offset of a window display position - */ - void SetOffsetPosition(TPoint aOffset); - -public: // Functions from MAknFepUICtrlCandidatePaneInterface - /** - * From MAknFepUICtrlCandidatePaneInterface - * Set position to show candidate list - * @since 2.6 - * @param aLeftSideOfBaseLine left side of font - * @param aHeight font height - * @param aAscent ascent position - */ - void SetWindowPosition(const TPoint& aLeftSideOfBaseLine, - TInt aHeight, - TInt aAscent); - - /** - * From MAknFepUICtrlCandidatePaneInterface - * Show candidate list popup window - * @since 2.6 - * @param aItems array including each candidate string - * @param aIndex selecting candidate number to display first time - * - */ - void ShowCandidateListL(CDesCArrayFlat* aItems, TInt aIndex, TInt aResourceID); - - /** - * From MAknFepUICtrlCandidatePaneInterface - * Hide candidate list popup window - * @since 2.6 - */ - void HideWindow(); - - /** - * From MAknFepUICtrlCandidatePaneInterface - * Return a selected candidate item number currently - * @since 2.6 - */ - TInt CurrentItemIndexOfCandidate(); - - /** - * From MAknFepUICtrlCandidatePaneInterface - * Move a current item in an appointed direction - * @since 2.6 - * @param aDirection direction - */ - TInt MoveItem(TAknFepUICtrlScroll aDirection); - - protected: // Functions from CAknPopupList - /** - * From CAknPopupList Set up a window layout type - * @since 2.6 - * @param aType Layout type - */ - virtual void SetupWindowLayout(AknPopupLayouts::TAknPopupLayouts aType); - - /** - * From CAknPopupList Set the title for the selection list - * @since 2.6 - * @param aAccept - */ - virtual void AttemptExitL(TBool aAccept); - - TTypeUid::Ptr MopSupplyObject(TTypeUid aId); - - protected: // from MEikListBoxObserver - /** - * Handle pointer up event - * - * @since S60 V3.2 - * @param aListBox ListBox control - * @param aEventType - * @return None - */ - virtual void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); - - private: - /** - * constructor. - */ - CAknFepUICtrlJapanesePredictivePane(CAknFepUIManagerJapanese* aUiMng); - - /** - * Symbian 2nd phase constructor can leave. - */ - void ConstructL(); - - /** - * Create array with line information in candidate list - * @since 2.6 - * @param aItems array with candidate string - * @param aMaxDisplayWidthInPixel maximum width in pixel - * @param aFontId font id - * @return array with line information - */ - CPredictivePopupLineInfoArray* - CreatePredictivePopupLineInfoArrayL(CDesCArrayFlat* aItems, - const TInt aMaxDisplayWidthInPixel, - const TInt aFontId); - - /** - * Append to array with line information - * @since 2.6 - * @param aLineArray array with line information - * @param aLineText string to show in a line - * @param aElementArray array with element information - */ - void PredictivePopupAppendLineL(CPredictivePopupLineInfoArray* aLineArray, - const TDesC& aLineText, - CPredictivePopupElementArray* aElementArray); - - /** - * Create arrary with string to show in a line - * @since 2.6 - * @param aLineArray arrary with line information - * @return string array - */ - CDesCArrayFlat* CreateListTextArrayL( - CPredictivePopupLineInfoArray* aLineArray); - - /** - * The handler function for size change - * @since 2.6 - * @param aDef layout information of popup-window - * @param aHeading heading pane object - * @param aListBox listbox object - * @param aWindowOwningControl Owner control - */ - void HandleSizeChanged(TAknPopupWindowLayoutDef& aDef, - CAknPopupHeadingPane* aHeading, - CEikListBox* aListBox, - CCoeControl* aWindowOwningControl - ); - - /** - * The handler function for Draw - * @since 2.6 - * @param aEikEnv EikEnv - * @param aGc Gc - * @param aDef layout information of popup-window - * @param aListBox Listbox object - * @param aHeadingOrNull Heading Pane object - */ - static void HandleDraw(CEikonEnv* aEikEnv, - CWindowGc& aGc, - const TAknPopupWindowLayoutDef& aDef, - CEikListBox* aListBox, - CAknPopupHeadingPane* aHeadingOrNull); - - /** - * Set up the information on a pop-up window - * @since 2.6 - * @param aDef layout information of popup-window - * @param aRect rect - * @param num total cantidate number - */ - void CalcPopupMenuWindow(TAknPopupWindowLayoutDef& aDef, - const TRect& aRect, - TInt num); - - /** - * Set up the information on a pop-up window - * @since 2.6 - * @param aDef layout information of popup-window - * @param num total cantidate number - * @param heading ETrue id with heading area, EFalse is without one. - */ - void SetupMenuPopupWindow(TAknPopupWindowLayoutDef& aDef, - TInt num, - TBool heading); - - /** - * The handler function for size and a location - * @since 2.6 - * @param aDef layout information of popup-window - * @param aContentInsidePopup - * @param aHeadingOrNull Heading Pane object - */ - static void HandleSizeAndPositionOfComponents( - const TAknPopupWindowLayoutDef& aDef, - CCoeControl* aContentInsidePopup, - CAknPopupHeadingPane* aHeadingOrNull); - - /** - * Draws a window shadow - * @since 2.6 - * @param aCoverRect the area covered by the shadow - * @param aSecondShadowRect the area used for second shadow - * @param aFirstShadowRect the area of first shadow - * @param aOutliineFrameRect the area of black outline frame - * @param aInsideAreaRect the area of content inside the window - */ - static void DrawWindowShadow(CWindowGc& aGc, - const TAknLayoutRect& aCoverRect, - const TAknLayoutRect& aSecondShadowRect, - const TAknLayoutRect& aFirstShadowRect, - const TAknLayoutRect& aOutlineFrameRect, - const TAknLayoutRect& aInsideAreaRect); - - /** - * This function returns maximum rows to be able to display in listbox. - * Maximum is 7 rows and minimum is 3 columns. - * @since 2.6 - * @param aModel listbox model object - * @return maximum line - */ - TInt MaximumRows(CTextListBoxModel* aModel); - - /** - * Called by the framework to draw the control - * @since 2.6 - * @param aRect Rectangle in which the Cone framework believes drawing - * is needed - */ - void Draw(const TRect& aRect) const; - - /** - * Handle key events. When a key event occurs, - * CONE calls this function for each control on the control stack, - * until one of them returns EKeyWasConsumed to indicate that - * it processed the key event. - * - * @since 2.6 - * @param aKeyEvent The key event. - * @param aType The type of the event: - * EEventKey, EEventKeyUp or EEventKeyDown. - * @return Indicates whether or not the key event was used - * by this control. - */ - TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, - TEventCode aType); - - /** - * selecting a previous candidate - * @since 2.6 - * @return selected candidate number - */ - TInt MovePreviousItem(); - - /** - * selecting a next candidate - * @since 2.6 - * @return selected candidate number - */ - TInt MoveNextItem(); - - /** - * selecting a previous line candidate - * @since 2.6 - * @return selected candidate number - */ - TInt MovePreviousLineItem(); - - /** - * selecting a next line candidate - * @since 2.6 - * @return selected candidate number - */ - TInt MoveNextLineItem(); - - /** - * Changing the cba - * @since 2.6 - * @param aResourceID - */ - void UpdateCbaL(TInt aResourceID); - - /** - * from CAknPopupList of MEikCommandObserver - * @since 2.6 - * @param aCommandId aCommandId Event Id from the soft-key - */ - void ProcessCommandL(TInt aCommandId); - - /** - * show cba - * @since 2.6 - */ - void ShowWindowCbaL(); - - private: // Data - TRect iMainPaneRect; - TPoint iOffsetPosition; - TInt iSrcTextHeight; - - TInt iMaximumRows; - CPredictivePopupLineInfoArray* iLineInfoArray; - CDesCArrayFlat* iListTextArray; - CAknFepUIManagerJapanese* iUiMng; - }; - -#endif // CAKNFEPUICTRLJAPANESEPREDICTIVEPANE_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlPinyinPopup.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlPinyinPopup.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,698 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlPinyinPopup class definitions. -* -*/ - - - - - - - - - - - -#ifndef __AKN_FEP_UI_AVKON_PINYIN_POPUP_H -#define __AKN_FEP_UI_AVKON_PINYIN_POPUP_H - -#include -#include -#include -#include -#include "AknFepUIAvkonCtrlInputPane.h" -#include "AknFepUIAvkonCtrlCandidatePane.h" - -class MAknFepUICtrlPinyinPopupSizeChangedObserver; - -NONSHARABLE_CLASS(CAknFepUICtrlPinyinPopup):public CCoeControl, public MAknFepUICtrlPinyinPopup -{ -public: - /** - * First phase construction - */ - static CAknFepUICtrlPinyinPopup* NewL(RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr); - /** - * destructor - */ - ~CAknFepUICtrlPinyinPopup(); - /** - * This function returns the index of the selected phrase item . - * - * @return aIndex index of entry in window, zero based - */ - TInt CurrentSelection() const; - /** - * This function returns the visible index of the selected item. - * - * @return aIndex index of entry in window, zero based - */ - TInt CurrentVisibleSelection() const; - /** - * set the observer - *

Note that only one observer is supported! - * - * @param aObserver pointer to the observer - */ - void SetSizeChangedObserver(MAknFepUICtrlPinyinPopupSizeChangedObserver* aObserver); - - /** - * Enables the display of the control. Sets the control's - * window postion and visibility, but only if the value has - * changed (so it's ok to call it excessively). - * - * @param aEnable if ETrue, makes visible - * if EFalse, makes non-visible - * - */ - void Enable(TBool aEnable); - /** - * set the number of selections that are visible - * - * @param aCount the number of visible selections, must be - * 0 < aCount <= KMaxNumberOfSelections - */ - void SetVisibleSelectionCount(TInt aCount); - /** - * set the number of selections that are visible - * - * @param aCount the number of visible selections, must be - * 0 < aCount <= KMaxNumberOfSelections - */ - void SetVisibleCount(TInt aCount); - - /** - * get the current visible selection count - * - * @return visible selection count - */ - TInt VisibleSelectionCount() const; - - - /** - * This sets the string of the internal buffer for the item index aIndex to aText, - * even if the index falls outside the current visible candidates. - * - * @param aText new contents of text item - * @return ETrue if successful - * EFalse if index outside visible candidates (but value is still set) - * - */ - TBool SetItemText(TInt aIndex, const TDesC& aText); - - /** - * Sets the string of the internal buffer for visible item - */ - TBool SetPhraseItemTexts(); - - /** - * This function gets the text at the index aIndex. - * - * @param aIndex index of entry in window, zero based - * @output aText contains contents of text item - * @return ETrue always - * - */ - TBool GetItemText(TInt aIndex, TDes& aText) const; - - /** - * This function sets the Tone Mark for all entries - * - * @param aToneMark the tone mark - * - */ - void SetToneMark(const TDesC& aToneMark); - - /** - * This function sets the Tone Mark for a specific entry - * - * @param aIndex index of entry - * @param aToneMark the tone mark - * - */ - void SetToneMark(TInt aIndex, const TDesC& aToneMark); - - /** - * This function gets the Tone Mark for a specific entry - * - * @param aIndex index of entry - * @output aToneMark the tone mark - * - */ - void GetToneMark(TInt aIndex, TDes& aToneMark) const; - - /** - * This function sets the validity of the tonemark - * - * @param aIndex index of the entry to be affected - * @param aValid if ETrue, tonemark will be displayed as valid - * if EFalse, tonemark will be displayed as not valid - */ - void SetItemToneMarkValidity(TInt aIndex, TBool aValid); - /** - * Is the control enabled for display? - * - * @return if not enabled, return EFalse - */ - TBool IsEnabled() const; - - /** - * Select the next visible item. If already on the last one, loop to the - * first one. - * - * @return ETrue if success, - * EFalse if no items visible, or if selection is outside visible items - */ - TBool SelectNextPhrase(); - - /** - * Select the previous visible item. If already on the first one, loop to the - * last one. - * - * @return ETrue if success, - * EFalse if no items visible, or if selection is outside visible items - */ - TBool SelectPrevPhrase(); - - /** - * This function selects the item at index aIndex. - * - * @param aIndex index of entry in window, zero based - * @return ETrue if success, EFalse if failure. - */ - TBool SelectIndex(TInt aIndex); - - /** - * Return Pinyin spelling candidate array - */ - CDesCArrayFlat* PhoneticSpellingArray(void); - - /** - * Return Pinyin spelling candidate array - */ - CDesCArrayFlat* PhoneticSpellingIndexArray(); - /** - * Split phrase pinyin spelling candidates into pages - */ - void SplitPhraseSpellingIntoPages(void); - - /** - * Split pinyin spelling candidates into pages - */ - void SplitSpellingIntoPages(TInt aCount); - - /** - * Set display page for deliberate selection - */ - void SetDisplayPage(TInt aSelection); - /** - * Return current page start spelling index - */ - TInt CurrentPageStartIndex(void); - - /** - * Return kestroke array - */ - CDesCArrayFlat* KeystrokeArray(void); - - /** - * Return in effect kestroke array - */ - CDesCArrayFlat* InEffectKeystrokeArray(); - - /** - * Return show kestroke array - */ - CDesCArrayFlat* ShowKeystrokeArray(); - - /** - * Return Optimize Spelling array - */ - CDesCArrayFlat* OptimizeSpelling(); - - /** - * Return temp Spelling array - */ - CDesCArrayFlat* TempSpelling(); - - /** - * Return choose chinese charater array - */ - CDesCArrayFlat* ChooseChineseCharacterArray(); - - /** - * Return choose chiese charater keystroke array - */ - CDesCArrayFlat* ChooseChineseCharacterArrayKeystroke(); - - /** - * Return the tone mark state - */ - TBool GetTonemarkState(); - - /** - * set the tone mark state - */ - void SetTonemarkState( TBool aState ); - - /** - * Set, clear and check flags status - */ - inline void SetFlag(TInt aFlag); - inline void ClearFlag(TInt aFlag); - inline TBool IsFlagSet(TInt aFlag) const; - void PopupSizeChanged(); - - /** - * Set all the input pane not highlight - */ - void SetNoneHighlighted(); - - /** - * Return kestroke array - */ - CDesCArrayFlat* KeystrokeArrayForStroke(); - - /** - * Return in effect kestroke array - */ - CDesCArrayFlat* InEffectKeystrokeArrayForStroke(); - - /** - * Return show kestroke array - */ - CDesCArrayFlat* ShowKeystrokeArrayForStroke(); - - /** - * Return choose chinese charater array - */ - CDesCArrayFlat* ChooseChineseCharacterArrayForStroke(); - - /** - * Return choose chiese charater keystroke array - */ - CDesCArrayFlat* ChooseChineseCharacterArrayKeystrokeForStroke(); - - CDesCArrayFlat* ZhuyinSymbols(); - - CDesCArrayFlat* ZhuyinShowSymbols(); - - CDesCArrayFlat* FirstValidZhuyinGrp() ; - - CDesCArrayFlat* ChineseCharsDisped() ; - - CDesCArrayFlat* ZhuyinSymbolsForChineseCharsDisped() ; - - void SetEEPContent ( const TDes& aDes ); - TDes& GetEEPContent ( ); - - void SetEEPContentValid ( TBool aValid ); - TBool GetEEPContentValid ( ); - - /** - * Reset all array - */ - void ResetStrokeArray(); - - /** - * Set the state is changed - */ - void SetChangeState( TBool aChangeState ); - - /** - * Return if has changed state or not - */ - TBool IsChangeStatet() const; - - /** - * Set whether state change from entry to spelling editing is automatical. - * - * @param aState.1 for automatical, 0 for manual. - * @return None. - */ - void SetState( TInt aState ); - - /** - * Get state change status. - */ - TInt GetState(); - - /** - * Set whether state change from pinyin input state to pinyin phrase creation. - * - * @param aState. ETrue for state change from pinyin input to phrase creation, - * EFalse is not. - * @return None. - */ - void SetPhraseCreationState( TBool aState ); - - /** - * Set whether state change from pinyin input state to pinyin phrase creation. - * - * @return ETrue for state change from pinyin input to phrase creation, - * EFalse is not. - */ - TBool GetPhraseCreationState(); - - /** - * Set whether at the editing state happen editing for pinyin phrase creation. - * - * @param aState. ETrue happen editing,EFalse others. - * @return None. - */ - void SetPhraseCreationEditingState( TBool aState ); - - /** - * Get whether at the editing state happen editing for pinyin phrase creation. - * - * @param aState. ETrue happen editing,EFalse others. - * @return None. - */ - TBool GetPhraseCreationEditingState(); - - /** - * Set flag whether from candidate state change state. - * - * @param aFlag ETrue from the candidate state change state, other EFalse. - * @since S60 V5.0 - * @return none. - */ - void SetFromCandidateChangeStateFlag( TBool aFlag ); - - /** - * Get flag whether from candidate state change state. - * - * @since S60 V5.0 - * @return ETrue from the candidate state change state, other EFalse. - */ - TBool GetFromCandidateChangeStateFlag(); - - /** - * Set count of valid keystroke. - * - * @since S60 V5.0 - * @return none - */ - void SetValidKeystrokeCount( TInt aCount ); - - /** - * get count of valid keystroke. - * - * @since S60 V5.0 - * @return count of valid keystroke. - */ - TInt GetValidKeystrokeCount(); - - /** - * Set last cba resouce id. - * - * @since S60 V5.0 - * @return None - */ - void SetLastResouce( TInt aResouceId ); - - /** - * Get last cba resouce id. - * - * @since S60 V5.0 - * @return last resouce id - */ - TInt GetLastResouce(); - - - /** - * Set change state from Edit to Spelling flag. - * - * @param aFlag,If ETrue Change from Edit state to spelling state,EFalse others. - * @since S60 V5.0 - * @return none. - */ - void SetFromEditToSpellingFlag( TBool aFlag = EFalse ); - - /** - * Get change state from Edit to Spelling flag. - * - * @param none. - * @since S60 V5.0 - * @return ETrue Change from Edit state to spelling state,EFalse others.. - */ - TInt GetFromEditToSpellingFlag(); - - - /** - * Set valid keystroke change flag. - * - * @param aFlag, ETrue valid keystroke changed,EFalse others. - * @since S60 V5.0 - * @return none - */ - void SetValidKeystrokeChange( TBool aFlag ); - - /** - * Get valid keystroke change flag. - * - * @since S60 V5.0 - * @return ETrue,if vallid keystroke changed, others EFalse. - */ - TBool GetValidKeystrokeChange(); - - /** - * Set PreStateIsPredict flag. - * - * @param aFlag, ETrue PreStateIsPredict,EFalse others. - * @since S60 V5.0 - * @return none - */ - void SetPreStateIsPredictive( TBool aFlag ); - - /** - * Get PreStateIsPredict flag. - * - * @since S60 V5.0 - * @return ETrue,if PreStateIsPredict, others EFalse. - */ - TBool GetPreStateIsPredictive(); - - void SetInputLayoutMiniQwertyZhuyin(); - - void ResetInputLayoutMiniQwertyZhuyin(); - -protected: // From CCoeControl - TTypeUid::Ptr MopSupplyObject(TTypeUid aId); - -protected: - /** - * constructor - */ - CAknFepUICtrlPinyinPopup(CAknFepUiLayoutDataMgr* aLafDataMgr); - /** - * second phase construction - */ - void ConstructL(RWindow& aParent); - /** - * Construct arrow bitmap class - */ - void ConstructBitmapsL(); - /** - * layout the rectangles - */ - void LayoutRects(); - - /** - * layout contained controls - */ - void LayoutContainedControls(); - - /** - * Layout the input panes - */ - void LayoutInputPanes(); - - /** - * set the visibility of the input panes, according to the current layout - */ - void SetInputPaneVisibility(); - - /** - * layout the background frames - */ - void LayoutFrames(); - - /** - * just layout one of the input panes - * - * @param aIndex index of input pane to lay out - * - */ - void LayoutInputPane(TInt aIndex); - - /** - * update input panes' visibility - */ - void UpdateInputPaneVisibility(void); - - -public: //from CcoeControl - /** - * size changed - */ - virtual void SizeChanged(); - - /** - * count component controls - * - * @return number of contained controls - */ - TInt CountComponentControls() const; - - /** - * Component control - * - * @param aIndex the control to return, must be between 0 and the number of controls - * @return pointer to contained control, ownership is not passed - * - */ - CCoeControl* ComponentControl(TInt aIndex) const; - /** - * draw - * - * @param aRect rectangle - * - */ - virtual void Draw(const TRect& aRect) const; - /** - * layout the background frames - * - * @param aOuterRect filled with outer rect coords - * @param aInnerRect filled with inner rect coords - * - */ - void CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const; - -private: // the following need resetting - RPointerArray iInputPaneArray; -private: // the following are not owned - CAknFepUiLayoutDataMgr* iLafDataMgr; - MAknFepUICtrlPinyinPopupSizeChangedObserver* iSizeChangedObserver; -private: // the following are owned - CAknsFrameBackgroundControlContext* iBgContext; - CFbsBitmap* iNaviArrowBitmapLeft; - CFbsBitmap* iNaviArrowBitmapLeftMask; - CFbsBitmap* iNaviArrowBitmapRight; - CFbsBitmap* iNaviArrowBitmapRightMask; - -private: - TAknLayoutRect iIndiFepArrowLeft; - TAknLayoutRect iIndiFepArrowRight; - TInt iSelected; - TInt iEnabled; - TToneMark iToneMark; - TAknLayoutRect iRectCoverMainPaneInput; - TAknLayoutRect iRectFirstShadowInput; - TAknLayoutRect iRectOutlineFrameInput; - TAknLayoutRect iRectInsideAreaInput; - TInt iVisibleCount; - RArray iPages; - TInt iCurDisplayPage; - CDesCArrayFlat* iSpellingArray; - //Spelling index array - CDesCArrayFlat* iSpellingIndexArray; - //keystroke arrray - CDesCArrayFlat* iKeystrokeArray; - //in effect keystroke array - CDesCArrayFlat* iInEffectKeystrokeArray; - //show Keystroke array - CDesCArrayFlat* iShowKeystrokeArray; - //Optimize Keystroke array - CDesCArrayFlat* iOptimizeSpelling; - //temp Keystroke array - CDesCArrayFlat* iTempSpelling; - //Chinese array - CDesCArrayFlat* iChooseChineseCharacterArray; - //Chinese Keystroke array - CDesCArrayFlat* iChooseChineseCharacterArrayKeystroke; - - CDesCArrayFlat* iKeystrokeArrayForStroke; - CDesCArrayFlat* iInEffectKeystrokeArrayForStroke; - CDesCArrayFlat* iShowKeystrokeArrayForStroke; - CDesCArrayFlat* iChooseChineseCharacterArrayForStroke; - CDesCArrayFlat* iChooseChineseCharacterArrayKeystrokeForStroke; - - CDesCArrayFlat* iZhuyinSymbols; - CDesCArrayFlat* iZhuyinShowSymbols; - CDesCArrayFlat* iFirstValidZhuyinGrp; - CDesCArrayFlat* iChineseCharsDisped; - CDesCArrayFlat* iZhuyinSymbolsForChineseCharsDisped; - TBuf<100> iEEPContent; - TBool iEEPContentValid; - - //the tone mark state - TInt iTonemarkState; - - //the stroke state - TInt iStrokeState; - - // The highlight goes back to wrong position when transfer from pinyin - // spelling pane to pinyin candidate pane more than one time. - TInt iHighLightFlag; - - TInt iFlags; - - TInt iValidKeystrokeCount; - TInt iPhraseCreation; - TInt iPhraseCreationEditingState; - TInt iChangeState; - /** - * whether the state change from entry to spelling editing is automatical. - */ - TInt iState; - - TInt iLastResouce; - - /** - * whether the state change from Edit to spelling. - */ - TInt iChangeStateFromEditToSpelling; - - /** - * whether the valid keystroke changed. - */ - TInt iValidKeystrokeChanged; - - /** - * whether the previous state is predictive display. - */ - TBool iPreStateIsPredictive; -}; - -inline void CAknFepUICtrlPinyinPopup::SetFlag(TInt aFlag) - { - iFlags |= aFlag; - } - -inline void CAknFepUICtrlPinyinPopup::ClearFlag(TInt aFlag) - { - iFlags &= ~aFlag; - } - -inline TBool CAknFepUICtrlPinyinPopup::IsFlagSet(TInt aFlag) const - { - return iFlags & aFlag; - } - -#endif // __AKN_FEP_UI_AVKON_PINYIN_POPUP_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUiAvkonCtrlExactWordPopupContent.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUiAvkonCtrlExactWordPopupContent.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Contents of the exact word tooltip shown above inline editor -* when the exact word differs from the inline word in Western -* QWERTY predictive mode. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_EXACT_WORD_POPUP_CONTENT_H -#define __AKN_FEP_EXACT_WORD_POPUP_CONTENT_H -#include -#include "AknFepUiWordPopupContent.h" - -// FORWARD DECLARATIONS -class CAknPreviewPopUpController; - - -// CLASS DECLARATION -class CAknFepExactWordPopupContent : public CCoeControl, public MAknFepUiWordPopupContent - { - public: // construction and destruction - - /** - * Two phased constructor - */ - static CAknFepExactWordPopupContent* NewL(); - - /** - * Destructor - */ - ~CAknFepExactWordPopupContent(); - - private: // construction - - /** - * C++ constructor - */ - CAknFepExactWordPopupContent(); - - /** - * Second phase constructor - */ - void ConstructL(); - - public: // new interface functions - - /** - * Sets the text to be shown in the popup - */ - void SetTextL( const TDesC& aText ); - - /** - * Sets the popup controller pointer. This must be called before drawing the popup contents. - * @param aController Pointer to the popup for which this object provides the content. - - void SetPopupController( CAknPreviewPopUpController* aController ); - */ - - /** - * Sets the direction of the arrow included in the popup. This should be used as a hint - * about the direction to tap to select the word shown in the popup. - */ - void SetArrowDirection( TArrowDirection aDirection ); - - public: // functions from base classes - /** - * Returns the minimuz size of this preview popup content. - */ - TSize MinimumSize(); - - public: //new interface functions - /** - * Sets the delay used before showing the preview popup. The default - * delay is one second. - * @param aDelay Delay in microseconds. - */ - void SetPopUpShowDelay( const TTimeIntervalMicroSeconds32& aDelay ); - /** - * Sets the preview popup visible after specified delay. If the popup - * is already visible it is hidden immediately and shown again after the - * showing delay. Popup is automatically hidden after its hiding delay - * unless the delay is zero in which case the popup is shown infinitely. - */ - virtual void ShowPopUp(); - - /** - * Hides the popup immediately. - */ - virtual void HidePopUp(); - /** - * Sets the position of preview popup. Popup's size is determined by the - * size of its content. The popup is placed left and down from the given - * point. If fixed mode is used then this function has no effect. - * @param aPoint Popup's position. - */ - virtual void SetPosition( const TPoint& aPoint ); - - /** - * Updates popup's size to reflect a change in content's size. - * Should be called if the size of the content is changed dynamically. - */ - virtual void UpdateContentSize(); - - /** - * Returns the popup's size. - */ - virtual TSize Size() const; - - /** - * Returns true if the popup is visible. - */ - virtual TBool IsPopUpVisible(); - virtual void HandlePointerEventL( const TPointerEvent& aPointerEvent ) ; - - private: // functions from base classes - - /** - * Draws the contents of the popup - * @aRect The area which should be redrawn. - */ - void Draw( const TRect& aRect ) const; - - /** - * Draws the upwards or downwards pointing arrow, depending on the value - * set by SetArrowDirection(). The upward arrow is placed in the bottom of the popup - * while the downward arrow is drawn on the top part of the popup. - * @aTextRect The area of the poup which is reserved for the text. - */ - void DrawArrowL( const TRect& aTextRect ) const; - - private: // data - TBool iIsPopUpVisible; - //! The text label to be shown in the popup - CEikLabel* iLabel; - - //! The popup where this object provides the content. - CAknPreviewPopUpController* iPopupController; // not owned - - //! Tells the direction of the arrow included in the popup - MAknFepUiWordPopupContent::TArrowDirection iArrowDirection; - }; - -#endif // AKN_FEP_EXACT_WORD_POPUP_CONTENT_H \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUiAvkonImpl.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUiAvkonImpl.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,199 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Avkon implementation of the FEP's UI component access -* -*/ - - - - - - - - - - - -#ifndef AKNFEPUIAVKONIMPL_H -#define AKNFEPUIAVKONIMPL_H - -#include "aknfepuiinterface.h" -#include "AknFepUiAvkonMenus.h" -#include -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ -#include -#endif - -class CEikButtonGroupContainer; -class CAknCharMapDialog; -class CEikDialog; -class CAknFepPredictiveSettingDialog; -class CAknListQueryDialog; -class CAknFepTextQueryDialog; - -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ -class CRepository; -#endif - -class CAknFepUIAvkonImpl : public CAknFepUIInterface, public MEikMenuObserver - { -private: - void ConstructL(); -public: - static CAknFepUIAvkonImpl* NewL(); - ~CAknFepUIAvkonImpl(); - CAknFepUIAvkonImpl(); -public: // menu abstraction - void SetFepMenuObserver(MAknFepUiInterfaceMenuObserver* aObserver); - CAknFepUiInterfaceMenuBar* EditorStateMenuBar(CAknEdwinState* aEditorState); - CAknFepUiInterfaceMenuBar* NewMenuBarL(MAknFepUiInterfaceMenuObserver* aObserver, TInt aHotKeyResourceId, TInt aMenuTitleResourceId); - CAknFepUiInterfaceMenuBar* ObjectProviderMenuBar(MObjectProvider* aObjectProvider); - -public: // stylus pop-up menu abstraction - CAknFepUiInterfaceStylusPopUpMenu* NewStylusPopUpMenuL(MAknFepUiInterfaceMenuObserver* aObserver, const TPoint& aPoint); - -public: // indicator abstraction - virtual CAknFepIndicator* NewIndicatorL(); - -public: // use case abstraction - void LaunchConfirmationNoteL(TInt aResourceId); - void LaunchHelpTextQueryL(TInt aResourceId); - TInt LaunchCangJieOptionDlgL(TInt aResourceId, TInt& aLevel, MDesC16Array* aItems); - TInt LaunchListPopupL(TInt aResourceId, TInt& aIndex, TInt aInitialIndex, MDesC16Array* aItems, CArrayPtr* aIcons); - void UpdateSoftkeysL(TInt aResourceId, CAknEdwinState* aEditorState, MEikCommandObserver* aObserver, TInt aInputMode); - TBool SoftkeysExist(); - TInt SoftkeyCommandId(TInt aPosition); - void DeleteSoftkeys(); - void DrawSoftkeysNow(); - void CreateSoftkeys(TInt aResourceId, MEikCommandObserver* aObserver); - TBool UpdateSoftkeyLabelL(TInt aPosition, TInt aCommandId, TInt aTextResId); - TInt CharMapDialogL(TInt aCharCase, TDes& aSpecialChars, TInt aCharSetResourceId, TBool aLockNumericKeys, TBool aShowPictographsFirst, TBool aShowNoPictographs, TBool aShowAnotherTable, TInt aAfterSctChars, TInt aResId, TBool aDisableRecentItemRow ); - TInt TextQueryDialogL(TDes& aDataText, CAknEdwinState& aEditorState, TInt aEditorFlag, TInt aResId); - CPlainText* PlainText(CAknEdwinState* aEditorState); - void UpdateEditorContext(MAknEditingStateIndicator& aIndicator, MAknFepManagerInterface& aManager); - - void TouchPaneSetFepPenSupportInterface(MAknFepPenSupportInterface* aFepPenSupportInterface); - void TouchPaneAllowInputMethodActivation(TBool aValue); - void TouchPaneRefreshL(); - void TouchPaneSetInputMethodIconActivated(TBool aActivated); - - TBool IsDisplayDataQuery(TBool aIsFepAwareTextEditor); - -public: // APAC abstraction - MAknFepUICtrlContainerChinese* NewAknFepUICtrlContainerChineseL(); - MAknFepUICtrlContainerJapanese* NewAknFepUICtrlContainerJapaneseL(CAknFepUIManagerJapanese* aUiMng); - void JapaneseKutenQueryDialogL(TInt aResId, TInt& aCharCode, TInt aTone); - -#ifdef RD_INTELLIGENT_TEXT_INPUT -// Predictive QWERTY (XT9) changes ----> -public: // candidate words pop-up abstraction - MAknFepCandidatePopup* NewCandidatePopupL(MAknFepCandidatePopupCallback& aOwner); - -public: //bubble implmentation - MAknFepUiWordPopupContent* CreateWordPopupContentL(); - -public: // for predictive setting dialog - void LaunchPredictiveSettingDialogL(TInt aDialogResId, - TInt aMenuResId, - TInt aConfirmationQueryResId, - TInt aTitlePaneResId ); -#ifdef FF_DUAL_LANGUAGE_SUPPORT - void LaunchWritingLanguageSettingDialogL(TInt aDialogResId, TInt aMenuResId, TInt aTitlePaneResId); -#endif //FF_DUAL_LANGUAGE_SUPPORT - -#ifdef __USER_DICTIONARY_EDITING__ - //for editing user dictionary - void LaunchUserDictEditDialogL(); -#endif //__USER_DICTIONARY_EDITING__ - -// Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - void DeleteDialogs(); - -private: // from MEikMenuObserver - void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane); - void DynInitMenuBarL(TInt aResourceId,CEikMenuBar* aMenuBar); - void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis); - -private: // from MEikCommandObserver - void ProcessCommandL(TInt aCommandId); - -private: - /** - * Show cba of aResourceId using owns cba object(iCba) - * - * @since 3.2 - * @param aResourceId softkeys resource id. - * @return None - */ - void ShowOwnsSoftkeysL(const TInt aResourceId, MEikCommandObserver* aObserver); - - /** - * This method is that empty softkeys is shown in case aShown is ETrue. - * If aShown is EFalse, empty softkeys is erased. - * @param aShown If ETrue, empty softkeys is shown. - */ - void ShowEmptySoftkeysL(TBool aShown, MEikCommandObserver* aObserver, TInt aInputMode); - -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - class CSubscriber : public CActive - { - public: - CSubscriber(TCallBack aCallBack, RProperty& aProperty); - ~CSubscriber(); - - public: // New functions - void SubscribeL(); - void StopSubscribe(); - - private: // from CActive - void RunL(); - void DoCancel(); - - private: - TCallBack iCallBack; - RProperty& iProperty; - }; - /** - * Call back function to handle a change in keyboard layout. - */ - static TInt HandleKeyboardLayoutChangeNotification(TAny* aObj); - - void HandleKeyboardLayoutChange(); - - CSubscriber* iKeyboardLayoutStatusSubscriber; - RProperty iKeyboardLayoutStatusProperty; - - friend class CSubscriber; -#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ -#endif - -private: - CEikButtonGroupContainer* iCba; // own - CAknFepUIAvkonMenuPaneImpl iTempMenuPane; - CAknFepUIAvkonMenuBarImpl iTempMenuBar; - CAknFepUIAvkonMenuBarImpl iEditorMenuBar; - CAknFepUIAvkonMenuBarImpl iObjectProviderMenuBar; - MAknFepUiInterfaceMenuObserver* iFepMenuObserver; - CAknCharMapDialog* iCharMapDialog; - CEikDialog* iDialog; - CAknFepPredictiveSettingDialog* iPredictiveSettingDialog; - CAknListQueryDialog* iListQueryDialog; - CAknFepTextQueryDialog* iTextQueryDialog; - }; - - -#endif diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUiAvkonMenus.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUiAvkonMenus.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Avkon implementation of the FEP's Menu component -* -*/ - - - - - - - - - - - -#ifndef AKNFEPUIAVKONMENUS_H -#define AKNFEPUIAVKONMENUS_H - -#include "aknfepuimenus.h" -#include - -class CEikMenuPane; -class CEikMenuBar; - - -class CAknFepUIAvkonMenuPaneImpl : public CAknFepUiInterfaceMenuPane - { -public: - CAknFepUIAvkonMenuPaneImpl(); - void ConstructMenuSctRowFromDialogL( TInt aCharCase, TDes& aSpecialChars, TInt aResourceId ); - void ConstructMenuSctRowL( TDes& aSpecialChars, TInt aResourceId ); - void DeleteMenuItem(TInt aCommandId); - void InsertMenuItemL(const SItemData& aMenuItem, TInt aPosition); - TBool MenuItemExists(TInt aCommandId, TInt& aPosition); - TInt NumberOfItemsInPane() const; - void SetItemDimmed(TInt aCommandId, TBool aDimmed); - void SetMenuPane(CEikMenuPane* aMenuPane); - CEikMenuPane* GetMenuPane(); -public: - CEikMenuPane* iMenuPane; // not owned - }; - - -class CAknFepUIAvkonMenuBarImpl : public CAknFepUiInterfaceMenuBar - { -private: - NONSHARABLE_CLASS(TEditMenuObserver) : public MEikMenuObserver - { - public: // from MEikMenuObserver - void ProcessCommandL(TInt aCommandId); - void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane); - void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis); - public: - MAknFepUiInterfaceMenuObserver* iObserver; - CAknFepUIAvkonMenuPaneImpl iTempPane; - }; -public: - CAknFepUIAvkonMenuBarImpl(); - CAknFepUiInterfaceMenuPane* MenuPane(); - void SetMenuType(TMenuType aMenuType); - void StopDisplayingMenuBar(); - void ReplaceAllMenuPanes(TInt aResourceId); - void TryDisplayMenuBarL(); - void SetFocus(TBool aFocus); - void RemoveFromStack(); - TInt FirstMenuPaneResourceId(); - TBool IsDisplayed(); - void AddToStackL(TInt aPriority,TInt aStackingFlags); - void TryDisplayMenuBarWithoutFepMenusL(); - void SetMenuTitleResourceId(TInt aResourceId); - void SetEditMenuObserver(MAknFepUiInterfaceMenuObserver* aEditMenuObserver); - void RemoveEditMenuObserver(MAknFepUiInterfaceMenuObserver* aEditMenuObserver); - -public: - CEikMenuBar* iMenuBar; // not owned - CAknFepUIAvkonMenuPaneImpl iTempMenuPane; - TEditMenuObserver iEditMenuObserver; - }; - - -class CAknFepUIAvkonMenuBarOwningImpl : public CAknFepUIAvkonMenuBarImpl, public MEikMenuObserver - { -public: - ~CAknFepUIAvkonMenuBarOwningImpl(); - void ConstructL(MAknFepUiInterfaceMenuObserver* aObserver, TInt aHotKeyResourceId, TInt aMenuTitleResourceId); - -private: // from MEikMenuObserver - void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane); - void DynInitMenuBarL(TInt aResourceId,CEikMenuBar* aMenuBar); - void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis); - -private: // from MEikCommandObserver - void ProcessCommandL(TInt aCommandId); - -private: - // owns CAknFepUIAvkonMenuBarImpl::iMenuBar - MAknFepUiInterfaceMenuObserver* iObserver; - }; - - -#endif diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUiAvkonStylusPopUpMenu.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUiAvkonStylusPopUpMenu.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Avkon implementation of the FEP's UI component access -* -*/ - - - - - - - - - - - -#ifndef AKNFEPUIAVKONSTYLUSPOPUPMENU_H -#define AKNFEPUIAVKONSTYLUSPOPUPMENU_H - -#include "AknFepUiStylusPopupMenu.h" -#include - -class CAknStylusPopUpMenu; -class MAknFepUiInterfaceMenuObserver; - - -class CAknFepUIAvkonStylusPopUpMenu : public CAknFepUiInterfaceStylusPopUpMenu, public MEikMenuObserver - { -public: - ~CAknFepUIAvkonStylusPopUpMenu(); - void ConstructL(MAknFepUiInterfaceMenuObserver* aObserver, const TPoint& aPoint); - -public: - void AddMenuItemL(const TDesC& aItem, const TInt aCommandId); - void SetPosition(const TPoint& aPoint); - void ShowMenu(); - -private: // from MEikMenuObserver - void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane); - void DynInitMenuBarL(TInt aResourceId,CEikMenuBar* aMenuBar); - void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis); - -private: // from MEikCommandObserver - void ProcessCommandL(TInt aCommandId); - -private: - MAknFepUiInterfaceMenuObserver* iObserver; - CAknStylusPopUpMenu* iPopupMenu; - }; - - -#endif diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUiInterfacePanic.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUiInterfacePanic.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Panic definitions. -* -*/ - - - - - - - - - - - - -#if !defined(__AknFepUiInterfacePanic_h__) -#define __AknFepUiInterfacePanic_h__ - -#include - -enum TAknFepUiInterfacePanic - { - EAknFepUiInterfacePanicCurrentSelectionOutsideVisibleCandidates, - EAknFepUiInterfacePanicAttemptedSelectionOutsideVisibleCandidates, - EAknFepUiInterfacePanicAttemptedSetItemTextOutsideMaxCandidates, - EAknFepUiInterfacePanicAttemptedSetModeOutsideMaxCandidates, - EAknFepUiInterfacePanicAttemptedLayoutOutsideVisibleCount, - EAknFepUiInterfacePanicNewVisibleCountExceedsRange, - EAknFepUiInterfacePanicCandidatesEmpty, - EAknFepUiInterfacePanicNoCandidatePane, - EAknFepUiInterfacePanicCandidatePaneNotSupportScrollDirection, - EAvkonImplNotSupported - }; - -GLREF_C void AknFepUiInterfacePanic(TAknFepUiInterfacePanic aPanic); - -#endif - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUserDictionaryEditDialog.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUserDictionaryEditDialog.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,146 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -/* - * ============================================================================ - * Name : CAknFepUserDictionaryEditDialog - * ============================================================================ - */ - -#ifndef AKNFEPUSERDICTIONARYEDITDIALOG_H_ -#define AKNFEPUSERDICTIONARYEDITDIALOG_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "AknFepPredOwnWordsModel.h" - -const TInt KMaxUDBLength = 64; - -class CAknFepUserDictionaryEditDialog : public CAknMarkableListDialog -{ - - public: - /** - * Function: NewL - * - * Discussion: Factory function used to create a new instance of - * CAknFepPredictiveSettingDialog - * - * Returns: A newly created instance of CAknFepUserDictionaryEditDialog - */ - static CAknFepUserDictionaryEditDialog* NewL( - TInt aOpenedItem, - CArrayFixFlat *aSelectedItems, - MDesCArray *aArray); - - /** - * Function: NewLC - * - * Discussion: Factory function used to create a new instance of - * CAknFepPredictiveSettingDialog and leave a pointer to it on the - * cleanup stack. - * - * Params: aMenuResId - menu resource id. - * Params: aConfirmationQueryResId - Confirmation Query resource id. - * Returns: A newly created instance of CAknFepUserDictionaryEditDialog - */ - static CAknFepUserDictionaryEditDialog* NewLC( - TInt aOpenedItem, - CArrayFixFlat *aSelectedItems, - MDesCArray *aArray); - - // the static RunDlgLD launch function - static void RunDlgLD(); - - /** - * Function: ~CAknFepPredictiveSettingDialog - * - * Discussion: Virtual destructor for CAknFepUserDictionaryEditDialog. Ensures that all - * allocated memory is returned to the heap before deletion - * of object. - */ - virtual ~CAknFepUserDictionaryEditDialog(); - - private: - //virtual methods from CAknMarkableListDialog: - void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane *aMenuPane); - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); - TBool OkToExitL(TInt aButtonId); - // the control initializer function - void PreLayoutDynInitL(); - - void ProcessCommandL( TInt aCommandId ); - - //Constructor - CAknFepUserDictionaryEditDialog( - TInt aOpenedItem, - CArrayFixFlat *aSelectedItems, - MDesCArray *aArray ); - - - - //Own methods - - void UpdateMSKLabelL(); - - //Query for new word from user. Also used to edit existing word - TBool QueryWordL( const TDesC& aTitle, TDes& aNewWord ); - - //Confirmation query for deletion - TBool ConfirmDeleteL( const TDesC& aPrompt ); - - //To handle different commands from the options menu or soft keys: - void HandleEditCommandL(); - void HandleAddNewCommandL(); - void HandleDeleteCommandL(); - - //To get the correct index if a filtered list is being shown - TInt CurrentItemIndex(); - const CArrayFix* SelectedItemsL(); - void HandleAddNewIntoFilteredListL( TInt &aOriginalItemIndex ); - - private: //data - - CEikColumnListBox* iOwnWordsListBox; - TInt iOpenedItem; - CArrayFixFlat* iSelectedItems; - CAknFepPredOwnWordsModel* iOwnWordsModel; - TInt iMSKPosition; - -}; - -#endif /*AKNFEPUSERDICTIONARYEDITDIALOG_H_*/ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepchineseuidataconv.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepchineseuidataconv.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#ifndef AKNFEPCHINESEUIDATACONV_H_ -#define AKNFEPCHINESEUIDATACONV_H_ - -// System includes -#include -#include -#include -#include -#include -#include - -class CAknFepChineseUIDataConv : public CBase - { -public: - static TInt AnyToInt(TAny* aOriginal); - - static TRect AnyToRect(TAny* aOriginal); - - static TPoint AnyToPoint(TAny* aOriginal); - - static TRgb AnyToRgb(TAny* aOriginal); - - static CFont* AnyToFont(TAny* aOriginal); - - static TSize AnyToSize(TAny* aOriginal); - - static TAknTextLineLayout AnyToTextLine(TAny* aOriginal); - - static TAknLayoutText AnyToLayoutText(TAny* aOriginal); - - static TAknWindowLineLayout AnyToWindowLine(TAny* aOriginal); - - static TAknLayoutRect AnyToLayoutRect(TAny* aOriginal); - - }; - -#endif /*AKNFEPCHINESEUIDATACONV_H_*/ - -//End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepuictrleepcontrol.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepuictrleepcontrol.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,360 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the CAknFepUICtrlEEPControl definition - * -*/ - - - - - - - - - - - - -#ifndef C_AKNFEPUICTRLEEPCONTROL_H -#define C_AKNFEPUICTRLEEPCONTROL_H - -#include -#include -#include - -#include "insertionpoint.h" - -class CAknFepUiLayoutDataMgr; -/** - * The editable entry pane control class. - * - * @lib aknfepuiavkonplugin.dll - * @since S60 v5.0 - */ -const TInt KLROffset = 5; -const TInt KCursorResetOffset = 20; -const TInt KCursorResetStartOffset = 85; -const TInt KDenominator = 100; - -class CAknFepUICtrlEEPControl : public CCoeControl, public MRefreshObserver - { -public: - /** - * The display style for the text. - */ - enum TDspStyle - { - ENomal, - EUnderline, - EHighlight, - EUnderlineHighlight - }; - - class TSegment - { - public: - /** - * C++ constructor. - * - * @since S60 v5.0 - * @param None. - * @return self object. - */ - TSegment( TInt aBeg, TInt aEnd, TDspStyle aStyle ); - - /** - * Compare the Index - * - * @since S60 v5.0 - * - * @param s1 the TSegment object. - * @param s2 the TSegment object. - * @return index - */ - static TInt - CompareByBegIndex( const TSegment& s1, const TSegment& s2 ); - TInt iBegin; - TInt iEnd; - TDspStyle iStyle; - }; - - /** - * NewL function. - * - * @since S60 v5.0 - * @param aParent. the RWindow object. - * @return self object. - */ - static CAknFepUICtrlEEPControl* NewL( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ); - - /** - * NewLC function. - * - * @since S60 v5.0 - * @param aParent. the RWindow object. - * @return self object. - */ - static CAknFepUICtrlEEPControl* NewLC( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ); - - - /** - * Cancel and destroy. - * - * @since S60 v5.0 - * - * @return none. - */ - virtual ~CAknFepUICtrlEEPControl( ); - - /** - * From CCoeControl - * Draw the control. - * - * @since S60 v5.0 - * @param aRect need to draw rect. - * @return None. - */ - virtual void Draw( const TRect& aRect ) const; - - /** - * From CCoeControl - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - virtual void SizeChanged( ); - - /** - * From MRefreshObserver - * Called by the cursor object. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void Refresh(); - - /** - * Set the visual text and store it into member data buffer. - * - * @since S60 v5.0 - * @param aDes. The buffer you want to display. - * @return None. - */ - void SetText( const TDesC& aDes ); - - /** - * Set the cursor position in the visual text rect. - * - * @since S60 v5.0 - * @param aIndex. it represent the cursor should appear in front of aIndex character. - * @return. error code. 0 for success. - */ - TInt SetCursorPosition( TInt aIndex ); - - /** - * Get the cursor position in visual text. - * - * @since S60 v5.0 - * @param None. - * @return. The cursor position. - */ - TInt GetCursorPosition( ); - - /** - * Set the underlined text beginning index and ending index. - * - * @since S60 v5.0 - * @param aBeg. the beginning index for underlined text. - * @param aEnd. the ending index for underlined text. - * @return. error code, 0 for success. - */ - TInt SetUnderline( TInt aBeg, TInt aEnd ); - - /** - * Set the highlighted text beginning index and ending index. - * - * @since S60 v5.0 - * @param aBeg. the beginning index for highlighted text. - * @param aEnd. the ending index for highlighted text. - * @param aColor. the color of highlighted text, KRgbRed by default. - * @return. error code, 0 for success. - */ - TInt SetHighlight( TInt aBeg, TInt aEnd ); - - /** - * Add a TSegment into iArray to identify the segment with a specified style. - * - * @since S60 v5.0 - * @param aBeg. the beginning index. - * @param aEnd. the ending index. - * @param aType. the specified style. - */ - void SetSegmentL ( TInt aBeg, TInt aEnd, TDspStyle aStyle ); - - /** - * Add a TSegment into iArray to identify the segment with a specified style. - * - * @since S60 v5.0 - * @param aBeg. the beginning index. - * @param aEnd. the ending index. - * @param aType. the specified style. - */ - void SetSegment ( TInt aBeg, TInt aEnd, TDspStyle aStyle ); - - /** - * Active the cursor,the cursor will be appeared with a glint. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void ActiveCursor( ); - - /** - * Deactive the cursor, the cursor will be gray and with no glint. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void DeactiveCursor( ); - - /** - * Enable the cursor. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void EnableCursor( ); - - /** - * Disable the cursor. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void DisableCursor( ); - - /** - * Move cursor to the left by a specified stride. - * - * @since S60 v5.0 - * @param aStride. specify the stride. - * @return. error code, 0 for success. - */ - TInt MoveCursorLeft( TInt aStride ); - - /** - * Move cursor to the right by a specified stride. - * - * @since S60 v5.0 - * @param aStride. specify the stride. - * @return. error code, 0 for success. - */ - TInt MoveCursorRight( TInt aStride ); - - /** - * Reset all its member data to initialized state. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void ResetAll( ); - -private: - - /** - * C++ constructor. - * - * @since S60 v5.0 - * @param None. - */ - CAknFepUICtrlEEPControl(CAknFepUiLayoutDataMgr* aLafDataMgr); - - /** - * Two-phrase constructor. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void ConstructL( RWindow& aParent ); - - /** - * Calculate the frame rect. - * - * @since S60 v5.0 - * @param aOuterRect. a output param for storing the outer rect. - * @param aInnerRect. a output param for storing the inner rect. - * @return None. - */ - void CalculateFrameRects( TRect& aOuterRect, TRect& aInnerRect ) const; - -private: - //Data. - - /** - * Laf data manager. - */ - CAknFepUiLayoutDataMgr* iLafDataMgr; - - /** - * Store visual text. - * Own - */ - HBufC* iBuffer; - - /** - * Whether cursor should be drawn on the screen. - */ - TBool isCursorDraw; - - /** - * The cursor pointer. - * Own - */ - CInsertionPoint* iInsertionPoint; - - /** - * The cursor position in visual text. - */ - TInt iCursorPosition; - - /** - * the color for highlighted text. - */ - TRgb iHighlightColor; - - /** - * The color for non-highlighted text. - */ - TRgb iDefaultTextColor; - - /** - * Distinguish different segment with a different format to its context. - */ - RPointerArray iArray; - }; - -#include "aknfepuictrleepcontrol.inl" - -#endif /* C_AKNFEPUICTRLEEPCONTROL_H */ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepuictrleepcontrol.inl --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepuictrleepcontrol.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the CAknFepUICtrlPinyinEEP definition - * -*/ - - - - - - - - - - - - -// --------------------------------------------------------- -// C++ constructor. -// --------------------------------------------------------- -// -inline CAknFepUICtrlEEPControl::TSegment::TSegment( TInt aBeg, TInt aEnd, - TDspStyle aStyle ) - { - iBegin = aBeg; - iEnd = aEnd; - iStyle = aStyle; - } - -// --------------------------------------------------------- -// Compare the Index. -// --------------------------------------------------------- -// -inline TInt CAknFepUICtrlEEPControl::TSegment::CompareByBegIndex( - const TSegment& s1, const TSegment& s2 ) - { - if ( s1.iBegin == s2.iBegin ) - return 0; - else - return s1.iBegin > s2.iBegin ? 1 : -1; - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepuictrlpinyineep.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepuictrlpinyineep.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,960 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the CAknFepUICtrlPinyinEEP definition - * -*/ - - - - - - - - - - - - -#ifndef C_AKNFEPUICTRLPINYINEEP_H -#define C_AKNFEPUICTRLPINYINEEP_H - -#include -#include -#include -#include -#include - -#include "aknfepuictrleditpane.h" -#include "aknfepuictrleepcontrol.h" - -/** - * The parent control of CAknFepUICtrlEEPControl. - * - * @lib aknfepuiavkonplugin.dll - * @since S60 v5.0 - */ -const TInt KMaxBufLen = 100; -class CAknFepUICtrlPinyinEEP : public CCoeControl, public MAknFepUICtrlEditPane - { -public: - enum - { - EEditableEntryPane - }; - enum - { - EZhuyinNULL, - EZhuyinInsert, - EZhuyinDelete, - EZhuyinReplace, - EZhuyinMoveCursor - }; - /** - * NewL function. - * - * @since S60 v5.0 - * @param aParent. the RWindow object. - * @return self object. - */ - static CAknFepUICtrlPinyinEEP* NewL( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ); - - /** - * NewLC function. - * - * @since S60 v5.0 - * @param aParent. the RWindow object. - * @return self object. - */ - static CAknFepUICtrlPinyinEEP* NewLC( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ); - - /** - * Destructor. - * - * @return none. - */ - virtual ~CAknFepUICtrlPinyinEEP(); - - /** - * From CCoeControl. - * - * @return. count of controls. - */ - virtual TInt CountComponentControls() const; - - /** - * From CCoeControl. - * - * @param aIndex. - * @return. the pointer of sub-control - */ - virtual CCoeControl* ComponentControl( TInt aIndex ) const; - - /** - * From CCoeControl. - * - * @param aRect. - * @return None. - */ - virtual void Draw( const TRect& aRect ) const; - - /** - * From CCoeControl. - * - * @param None. - * @return None. - */ - virtual void SizeChanged(); - - /** - * From MAknFepUICtrlEditPane. - * Set the text buffer and maintain the current cursor position. - * - * @since S60 v5.0 - * @param aDes. the content you set. - * @return None. - */ - void SetText( const TDesC& aDes ); - - /** - * From MAknFepUICtrlEditPane. - * Set the text buffer and posit the cursor index. - * - * @since S60 v5.0 - * @param aDes. the content you set. - * @param aCursorPos. the position of cursor. - * @param aMiniQwertyZhuyin - * @return None. - */ - void SetText( const TDesC& aDes, TInt aCursorIndex, TBool aMiniQwertyZhuyin = EFalse ); - - /** - * From MAknFepUICtrlEditPane. - * Set the text buffer and posit the cursor index for zhuyin. - * - * @since S60 v5.0 - * @param aDes. the content you set. - * @param aCursorPos. the position for cursor. - * @param aChineseCount. the count for chinese characters. - * @param aJudgeSeed. current zhuyin symbols' descriptor. - * @param aKeystroke. current key stroke position. - * @param aInvalid. whether aDes is invalid. ETrue for invalid, EFalse for valid. - * @return None. - */ - void SetTextForZhuyin( const TDesC& aDes, TInt aCursorIndex, TInt aChineseCount, - const TDesC& aJudgeSeed, TInt aKeystroke, TBool aInvalid = EFalse, TBool aMiniQwertyZhuyin = EFalse ); - - /** - * From MAknFepUICtrlEditPane - * Set the cursor position. - * - * @since S60 v5.0 - * @param aIndex. the cursor position you set. - * @return None. - */ - void SetCursor( const TInt aIndex ); - - /** - * From MAknFepUICtrlEditPane - * get the position index of cursor.The max cursor index must be larger - * than the length of text buffer by 1. - * - * @since S60 v5.0 - * @param None. - * @return. the position index. - */ - TInt GetCursor(); - - /** - * From MAknFepUICtrlEditPane - * move cursor to the left by a 1 stride. - * - * @since S60 v5.0 - * @param aStride. the stride for motion - * @return. succeed or not. - */ - TBool MoveCursorLeft( TInt aStride = 1 ); - - /** - * From MAknFepUICtrlEditPane - * move cursor to the right by a 1 stride. - * - * @since S60 v5.0 - * @param aStride. the stride for motion - * @return. succeed or not. - */ - TBool MoveCursorRight( TInt aStride = 1); - - /** - * From MAknFepUICtrlEditPane. - * active the cursor,the cursor will be black and with a wink.this cursor - * state represent this control is focused. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void ActiveCursor(); - - /** - * From MAknFepUICtrlEditPane. - * deactive the cursor, the cursor will be gray and no wink this cursor - * state represent this control with no focus. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void DeactiveCursor(); - - /** - * From MAknFepUICtrlEditPane. - * enable the cursor,the cursor will be drawn. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void EnableCursor(); - - /** - * From MAknFepUICtrlEditPane. - * deactive the cursor, the cursor will not be drawn. - * @since S60 v5.0 - * @param None. - * @return None. - */ - void DisableCursor(); - - /** - * From MAknFepUICtrlEditPane. - * set the beginning and ending index for the underline text. - * - * @since S60 v5.0 - * @param aBeg. the beginning index for underlined text. - * @param aEnd. the ending index for underlined text. - * @return None. - */ - void SetUnderline( TInt aBeg, TInt aEnd ); - - /** - * From MAknFepUICtrlEditPane. - * get the indexes for text with underline. - * - * @since S60 v5.0 - * @param aBeg. a output param for receiving beginning index for underlined text. - * @param aEnd. a output param for receiving ending index for underlined text. - * @return None. - */ - void GetUnderlineIndex( TInt& aBeg, TInt& aEnd ); - - /** - * From MAknFepUICtrlEditPane. - * set the indexes for the text with highlight - * - * @since S60 v5.0 - * @Param aBeg. the beginning index for highlighted text. - * @param aEnd. the ending index for highlighted text. - * @return None. - */ - void SetHighlight( TInt aBeg, TInt aEnd ); - - /** - * From MAknFepUICtrlEditPane. - * get the indexes for the text with highlight - * - * @since S60 v5.0 - * @param aBeg. a output parameter which will receive the beginning index. - * @param aEnd. a output parameter which will receive the ending index. - * @return None. - */ - void GetHighlightIndex( TInt& aBeg, TInt& aEnd ); - - /** - * From MAknFepUICtrlEditPane. - * set keystroke index. - * - * @since S60 v5.0 - * @param aStartIndex. the keystroke index. - * @return None. - */ - void SetCursorIndexOfKeystroke( const TInt aStartIndex ); - - /** - * From MAknFepUICtrlEditPane. - * get the keystroke index - * - * @since S60 v5.0 - * @param None. - * @return. the keystroke index. - */ - TInt GetCursorIndexOfKeystroke(); - - /** - * From MAknFepUICtrlEditPane. - * whether this control will be actived.ETrue represent enable otherwise - * disable. - * - * @since S60 v5.0 - * @param aEnable.ETrue represent enable this control,otherwise disable. - * @return None. - */ - void Enable( TBool aEnable ); - - /** - * From MAknFepUICtrlEditPane. - * return whether this control is enabled. - * - * @since S60 v5.0 - * @param None. - * @return.ETrue represent this control is enabled, otherwise disabled. - */ - TBool IsEnabled() const; - - /** - * Get the info before cursor. - * - * @since S60 v5.0 - * @param aText the show info. - * @return none. - */ - void GetText( TDes& aText ); - - /** - * Get the info before cursor. - * - * @since S60 v5.0 - * @param aOut the info before cursor. - * @return ETrue if can get the info. - */ - TBool GetDesBeforeCursor( TDes& aOut ); - - /** - * From MAknFepUICtrlEditPane. - * Not used. - */ - void SetToneMark( const TDesC& aToneMark ); - - /** - * From MAknFepUICtrlEditPane. - * Not used. - */ - void SetToneMarkValidity( TBool aValid ); - - /** - * From MAknFepUICtrlEditPane. - * Not used. - */ - void SetOverrideFontId( TInt aFontId ); - - /** - * From MAknFepUICtrlEditPane. - * Not used. - */ - void SetFlag( TInt aFlag ); - - /** - * From MAknFepUICtrlEditPane. - * Not used. - */ - void ClearFlag( TInt aFlag ); - - /** - * From MAknFepUICtrlEditPane. - * Not used. - */ - TBool IsFlagSet( TInt aFlag ) const; - - /** - * Set the cursor index for moving to the left. - * - * @since S60 v5.0 - * @param aIndex. the cursor index for moving left. - * @return None. - */ - void SetCursorForMoveLeft( const TInt aIndex ); - - /** - * Set the cursor index for moving to the right. - * - * @since S60 v5.0 - * @param aIndex. the cursor index for moving right. - * @return None. - */ - void SetCursorForMoveRight( const TInt aIndex ); - /** - * Add some text at the end of buffer. - * - * @since S60 v5.0 - * @param aDes. the content you want to append. - * @return. ETrue represent success, otherwise failure. - */ - TBool Append( const TDesC& aDes ); - - /** - * delete the content begin with aBeg index, and with an aLen length. - * - * @since S60 v5.0 - * @param aBeg. the beginning index for delete. - * @param aLen. the length you delete. - * @return ETrue for success, and EFalse for failure. - */ - TBool Delete( TInt aBeg, TInt aLen = 1 ); - - /** - * Insert some text after aIndex character. - * - * @since S60 v5.0 - * @param aIndex. the index for insert. - * @param aDes. the content you insert. - * @return ETrue for success, and EFalse for failure. - */ - TBool Insert( TInt aIndex, const TDesC& aDes ); - - /** - * Replace text from aBeg index to aBeg + aLen with aDes. - * - * @since S60 v5.0 - * @param aBeg. the beginning index for replace. - * @param aLen. the length for replace. - * @param aDes. the new content after replacing. - * @return ETrue for success, and EFalse for failure. - */ - TBool Replace( TInt aBeg, TInt aLen, const TDesC& aDes ); - - /** - * Reset private member viariable. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void Reset(); - - /** - * Return kestroke array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - CDesCArrayFlat* KeystrokeArray(); - - /** - * Return keycode array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - RArray* KeycodeArray(); - - /** - * Return show kestroke array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - CDesCArrayFlat* ShowKeystrokeArray(); - - /** - * Return choose chinese charater array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - CDesCArrayFlat* PhraseArray(); - - /** - * Return choose chinese charater show keystroke array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - CDesCArrayFlat* PhraseShowKeyStrokeArray(); - - /** - * Return phrase keycode array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - RArray* PhraseKeycodeArray(); - - /** - * Return temp array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - CDesCArrayFlat* TempArray(); - - /** - * Reset private member viariable array. - * - * @since S60 v3.2.3 - * @param None. - * @return None. - */ - void ResetAllArray(); - - /** - * change state flag. - * - * @since S60 v3.2.3 - * @param aState, ETrue change state. - * @return None. - */ - void SetChangeState( TBool aState = ETrue ); - - /** - * check change state flag. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue if change state, EFalse others. - */ - TBool IsChangeState(); - - /** - * Set auto change state flag. - * - * @since S60 v3.2.3 - * @param aState, ETrue auto change state, EFalse manual change state. - * @return None. - */ - void SetAutoChangeStateFlag( TBool aState = ETrue ); - - /** - * Get the auto change state flag. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue atuo change state, EFalse others. - */ - TBool GetAutoChangeStateFlag(); - - /** - * Set all the keystroke valid flag. - * - * @since S60 v3.2.3 - * @param aState, ETrue all the keystroke is valid, EFalse others. - * @return None. - */ - void SetAllValidFlag( TBool aState = ETrue ); - - /** - * Get all the keystroke valid flag. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue all the keystroke is valid, EFalse others. - */ - TBool GetAllValidFlag(); - - /** - * Set Phrase Creation flag. - * - * @since S60 v3.2.3 - * @param aState, ETrue is phrase creation, EFalse others. - * @return None. - */ - void SetPhraseCreationFlag( TBool aState ); - - /** - * Get Phrase Creation flag. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue is phrase creation, EFalse others. - */ - TBool GetPhraseCreationFlag(); - - /** - * Set the keystroke invalid index. - * - * @since S60 v3.2.3 - * @param aIndex, the keystroke invalid index. - * @return None. - */ - void SetInvalidIndex( TInt aIndex = 0 ); - - /** - * Get all the invalid keystroke index. - * - * @since S60 v3.2.3 - * @param None. - * @return invalid keystroke index. - */ - TInt GetInvalidIndex(); - - /** - * Set Phrase Candidate state need refresh UI flag. - * - * @since S60 v3.2.3 - * @param aState, ETrue is that Candidate state need refresh UI,other don't need. - * @return None. - */ - void SetCandidateRefreshFlag( TBool aState ); - - /** - * Get Phrase Candidate state need refresh UI flag. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue is that Candidate state need refresh UI,EFalse don't need. - */ - TBool GetCandidateRefreshFlag(); - - /** - * Set the delimiter count of keystroke. - * - * @since S60 v3.2.3 - * @param aCount, the delimiter count of keystroke. - * @return None. - */ - void SetDelimiterCount( TInt aCount ); - - /** - * Get the delimiter count of keystroke. - * - * @since S60 v3.2.3 - * @param None. - * @return aCount, the delimiter count of keystroke. - */ - TInt GetDelimiterCount(); - - /** - * Get current cba resource id. - * - * @since S60 v3.2.3 - * @param None. - * @return current cba resource id. - */ - TInt GetCurrentCBAResID(); - - /** - * Set current cba resource id. - * - * @since S60 v3.2.3 - * @param aResourceId, current cba resource id. - * @return None. - */ - void SetCurrentCBAResID( TInt aResourceId ); - - void SetEffictiveLength( TInt aLength ); - - TInt GetEffictiveLength(); - - void DecEffictiveLength(); - - void AddEffictiveLength(); - - void SetNeedClearDeliberateSelection( TBool aNeedClearDeliberateSelection ); - - TBool NeedClearDeliberateSelection(); - -protected: - - /** - * Layout contained controls. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void LayoutContainedControls(); - - /** - * layout the background frames. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void LayoutFrames(); - - /** - * layout its rectangles - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void LayoutRects(); - -private: - /** - * C++ constructor. - */ - CAknFepUICtrlPinyinEEP( CAknFepUiLayoutDataMgr* aLafDataMgr ); - - /** - * Two-phrase constructor. - */ - void ConstructL( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ); - - /** - * Calculate visual text for appending. - * - * @since S60 v5.0 - * @param aDes.the content you want to append. - * @return None. - */ - void CalculateVisualTextForAppend( const TDesC& aDes ); - - /** - * Calculate visual text for deleting. - * - * @since S60 v5.0 - * @param aBeg. the beginning index you want to delete. - * @param aLen. the length you want to delete, 1 by default. - * @return None. - */ - void CalculateVisualTextForDelete( TInt aBeg, TInt aLen = 1 ); - - /** - * Calculate visual text for inserting. - * - * @since S60 v5.0 - * @param aBeg. the beginning index for your insert. - * @param aDes. the content you want to insert. - * @return None. - */ - void CalculateVisualTextForInsert( TInt aBeg, const TDesC& aDes ); - - /** - * Calculate visual text for replacing. - * - * @since S60 v5.0 - * @param aBeg. the beginning index for you replace. - * @param aLen. the length for your replace. - * @param aDes. the new content after your replace. - * @return None. - */ - void CalculateVisualTextForReplace( TInt aBeg, TInt aLen, - const TDesC& aDes ); - - /** - * Calculate visual text for moving to left. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void CalculateVisualTextForMoveLeft(); - - /** - * Calculate visual text for moving to the right. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void CalculateVisualTextForMoveRight(); - - /** - * Calculate the underline indexes and highlight indexes according to the - * absolute value. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void CalculateVisualIndex(); - - /** - * layout the background frames. - * - * @since S60 v5.0 - * @param aOuterRect filled with outer rect coords - * @param aInnerRect filled with inner rect coords - * @return None. - */ - void CalculateFrameRects( TRect& aOuterRect, TRect& aInnerRect ) const; - -private: - // Data. - CAknFepUiLayoutDataMgr* iLafDataMgr; - /** - * the position of keystroke. - */ - TInt iIndex; - /** - * Whether EEP control is enabled ( visible ) . - */ - TBool iEnabled; - /** - * The background context for this control. - */ - CAknsFrameBackgroundControlContext* iBgContext; - - TAknLayoutRect iRectCoverMainPaneInput; - TAknLayoutRect iRectFirstShadowInput; - TAknLayoutRect iRectOutlineFrameInput; - TAknLayoutRect iRectInsideAreaInput; - /** - * Its contained control only for display. - * own - */ - CAknFepUICtrlEEPControl* iEditableEntryPane; - /** - * All the text its caller set. - * own - */ - HBufC* iAbsoluteBuffer; - /** - * The text displayed on the contained control. - * own - */ - HBufC* iVisualBuffer; - /** - * The cursor position relative to iAbsoluteBuffer which is set by its - * caller. - */ - TInt iAbsoluteCursorPos; - /** - * The offset between the beginning position of iVisualBuffer and - * iAbsoluteBuffer. - */ - TInt iOffset; - /** - * The beginning position of underlined text. - */ - TInt iAbsoluteUnderlineBeg; - /** - * The end position of underlined text. - */ - TInt iAbsoluteUnderlineEnd; - /** - * The beginning position of highlighted text. - */ - TInt iAbsoluteHighlightBeg; - /** - * The end position of highlighted text. - */ - TInt iAbsoluteHighlightEnd; - /** - * Store the highlight-setting&underline-setting sequence - */ - RPointerArray iArray; - - /** - * Only for zhuyin use - * the seed descriptor used in zhuyin input method. - * used to store zhuyin symbols every time. - */ - TBuf iJudgeSeed; - /** - * used to store count for chinese character. - */ - TInt iChineseCount; - - /** - * whether the last displayed text is valid. - */ - TBool iLastValid; - - /** - * keystroke arrray. - */ - CDesCArrayFlat* iKeystrokeArray; - - /** - * Keycode arrray. - */ - RArray iKeycodeArray; - - /** - * show Keystroke array. - */ - CDesCArrayFlat* iShowKeystrokeArray; - - /** - * Chinese array. - */ - CDesCArrayFlat* iPhraseArray; - - /** - * phrase Keycode arrray. - */ - RArray iPhraseKeycodeArray; - - /** - * KeyStroke array for the Chinese which have been selected. - */ - CDesCArrayFlat* iPhraseShowKeyStrokeArray; - - /** - * The temp array. - */ - CDesCArrayFlat* iTempArray; - - /** - * the change state flag. - */ - TInt iChangeFlag; - - /** - * the auto change state flag. - */ - TInt iAutoChangeFlag; - - /** - * The all kyestroke is valid. - */ - TInt iAllValidFlag; - - /** - * The invalid keystroke index. - */ - TInt iInvalidKeystrokeIndex; - - /** - * Is phrase creation. - */ - TInt iPhraseCreation; - - /** - * The candidate refresh flag. - */ - TInt iCandidateRefreshFlag; - - /** - * The delimiter count of keystroke. - */ - TInt iDelimiterCount; - - /** - * Current CBA resource id. - */ - TInt iCurrentCBAResId; - - TInt iEffictiveLength; - - TBool iMiniQwertyZhuyin; - - TBool iNeedClearDeliberateSelection; - - }; - -#endif /* C_AKNFEPUICTRLPINYINEEP_H */ - -// End of File - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepuilayoutdatamgr.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepuilayoutdatamgr.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,196 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: This file contains classes of phrase creation layout data management -* -*/ - - -#ifndef C_PHRASECREATIONLAYOUTDATAMGR_H -#define C_PHRASECREATIONLAYOUTDATAMGR_H - -#include -#include -#include -#include -#include -#include - -enum TAknFepChineseUiLafDataType - { - EPopupRectEntry, - EPopupRectCandatate, - EPopupRectEEP, - EPopupHeightEntry, - EPopupHeightEEP, - EEntryPaneWindowLine, - ECandidatePaneWindowLine, - EEEPWindowLayout, - EEEPWindowRect, - ECandidatePaneTextLine, - EOrdinalCandidateTextLayout, - ECandidateWindowLine1, - ECandidateWindowLine2, - ECandidateWindowLine3, - ECandidateWindowLine4, - ELayoutCandidateItem, - ELayoutEntryItem, - ERectCoverMainPaneInputEntry, - ERectFirstShadowInputEntry, - ERectOutlineFrameInputEntry, - ERectInsideAreaInputEntry, - ERectCoverMainPaneInputCandidate, - ERectFirstShadowInputCandidate, - ERectOutlineFrameInputCandidate, - ERectInsideAreaInputCandidate, - ERectCoverMainPaneInputEEP, - ERectFirstShadowInputEEP, - ERectOutlineFrameInputEEP, - ERectInsideAreaInputEEP, - ELayoutInputPaneText, - ELayoutLineRectEntryPane, - EEntryTextLayout, - EEntryPaneRect, - EIndiFepArrowLeft, - EIndiFepArrowRight, - ERectCoverMainPaneInput, - ERectFirstShadowInput, - ERectOutlineFrameInput, - ERectInsideAreaInput, - EEEPTextLine, - EEEPCursorHeight, - EEEPTextColor, - EHorizLine, - EEEPFirstHorizLine, - EEEPSecondHorizLine, - EEntryHorizLineWindow, - EEEPSecondHorizLineWindow, - EEEPFirstHorizLineWindow - - }; -//class CAknFepUiLayoutDataMgr; -/** - * CAknFepUiLayoutDataMgr - * This class provides the phrase creation layout - * data interface management - * to the program other component - */ -/** -* CAknFepUiLayoutDataMgr is a static fascade interface to the singleton layout data mgr object. -* There is at most one CAknFepUiLayoutDataMgr per thread. This static interface ensures that this -* fact can not be changed. -*/ -class CAknFepUiLayoutDataMgr : public CBase - { -public: - // General public API - - /** - * First phase construction - */ - static CAknFepUiLayoutDataMgr* NewL(); - - /** - * Read LAF info - * @return None. - */ - void ReadLafInfo(); - - /** - * Get LAF info - */ - TAny* RequestData(TInt aDataType); - -private: - - /** - * Constructor - */ - CAknFepUiLayoutDataMgr(); - - /** - * Second phase construction - */ - void ConstructL(); - -private: - TSize iScreenSize; - TBool iLandScape; - - TRect iPopupRectEntry; - TRect iPopupRectCandidate; - TRect iPopupRectEEP; - TInt iPopupHeightEntry; - TInt iPopupHeightEEP; - TInt16 iEEPHeight; - - TAknWindowLineLayout iEntryPaneWindowLine; - TAknWindowLineLayout iCandidatePaneWindowLine; - - TAknWindowLineLayout iEEPWindowLayout; - TRect iEEPWindowRect; - TRect iEntryPaneRect; - - TAknTextLineLayout iCandidatePaneTextLine; - TAknWindowLineLayout iCandidateWindowLine1; - TAknWindowLineLayout iCandidateWindowLine2; - TAknWindowLineLayout iCandidateWindowLine3; - TAknWindowLineLayout iCandidateWindowLine4; - TAknWindowLineLayout iLayoutCandidateItem; - TAknWindowLineLayout iLayoutEntryItem; - - TAknTextLineLayout iOrdinalCandidateTextLayout; - TAknTextLineLayout iEntryTextLayout; - - // - TAknLayoutRect iRectCoverMainPaneInputEntry; - TAknLayoutRect iRectFirstShadowInputEntry; - TAknLayoutRect iRectOutlineFrameInputEntry; - TAknLayoutRect iRectInsideAreaInputEntry; - - TAknLayoutRect iRectCoverMainPaneInputCandidate; - TAknLayoutRect iRectFirstShadowInputCandidate; - TAknLayoutRect iRectOutlineFrameInputCandidate; - TAknLayoutRect iRectInsideAreaInputCandidate; - - TAknLayoutRect iRectCoverMainPaneInputEEP; - TAknLayoutRect iRectFirstShadowInputEEP; - TAknLayoutRect iRectOutlineFrameInputEEP; - TAknLayoutRect iRectInsideAreaInputEEP; - - TAknWindowLineLayout iEntryHorizLineWindow; - TAknWindowLineLayout iEEPSecondHorizLineWindow; - TAknWindowLineLayout iEEPFirstHorizLineWindow; - TAknLayoutRect iHorizLine; - TAknLayoutRect iEEPFirstHorizLine; - TAknLayoutRect iEEPSecondHorizLine; - - TAknLayoutText iLayoutInputPaneText; - TAknLayoutRect iLayoutLineRectEntryPane; - - TAknLayoutRect iIndiFepArrowLeft; - TAknLayoutRect iIndiFepArrowRight; - - TAknLayoutRect iRectCoverMainPaneInput; - TAknLayoutRect iRectFirstShadowInput; - TAknLayoutRect iRectOutlineFrameInput; - TAknLayoutRect iRectInsideAreaInput; - - TAknTextLineLayout iEEPTextLine; - TInt iEEPCursorHeight; - TRgb iEEPTextColor; - }; - -#endif // C_PHRASECREATIONLAYOUTDATAMGR_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/insertionpoint.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/insertionpoint.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,282 +0,0 @@ -/* -* Copyright (c) 2008-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CInsertionPoint definition. -* -*/ - - - - - - - - - - - -#ifndef INSERTIONPOINT_H -#define INSERTIONPOINT_H - -#include // For CActive, link against: euser.lib -#include // For RTimer, link against: euser.lib -#include -#include "aknfepuilayoutdatamgr.h" - -/** - * The cursor observer interface. - * - * @lib aknfepuiavkonplugin.dll - * @since S60 v5.0 - */ -class MRefreshObserver - { -public: - /** - * When the cursor state is changed,it will notify its observer through this function. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - virtual void Refresh( ) = 0; - }; - -/** - * The cursor class. - * - * @lib aknfepuiavkonplugin.dll - * @since S60 v5.0 - */ - -class CInsertionPoint : public CActive - { -public: - enum TInsertionPointState - { - EUninitialized, - EInitialized, - EError - }; - - /** - * Cancel and destroy. - * - * @since S60 v5.0. - * @return none. - */ - virtual ~CInsertionPoint( ); - - /** - * NewL function. - * - * @since S60 v5.0. - * @return none. - */ - static CInsertionPoint* NewL( CAknFepUiLayoutDataMgr* aLafDataMgr ); - - /** - * NewLC funciton. - * - * @since S60 v5.0. - * @return none. - */ - static CInsertionPoint* NewLC( CAknFepUiLayoutDataMgr* aLafDataMgr ); - - /** - * Set iRefreshObserver member. - * - * @since S60 v5.0 - * @param aObserver. The observer you want to set. - * @return none. - */ - void SetRefreshObserver( MRefreshObserver* aObserver ); - - /** - * Set the position of cursor. - * The max position of cursor is larger than length of visual text - * by 1 stride. - * - * @since S60 5.0 - * @param aOffset. The cursor position which based on 0 index. - * @return None. - */ - void SetPosition( TInt aOffSet ); - - /** - * Set the rect where visual text will be displayed. - * - * @since S60 v5.0 - * @param aRect. The rect you want to display the visual text in. - * @return None. - */ - void SetTextRect( TRect aRect ); - - /** - * Set the height of cursor. - * - * @since S60 v5.0 - * @param aHeight. The cursor height you want to set. - * @return. - */ - void SetHeight(); - - /** - * Draw the cursor on the screen. - * - * @since S60 v5.0 - * @param aGc. the gc you used to draw the cursor. - * @return. - */ - void Draw( CWindowGc& aGc ); - - /** - * Active the cursor into active state. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void Active(); - - /** - * Deactive the cursor into deactive state. - * - * @since S60 v5.0 - * @param None. - * return None. - */ - void Deactive(); - -private: - - /** - * Insertion Point. - * - * @since S60 v5.0 - * @param None. - */ - CInsertionPoint( CAknFepUiLayoutDataMgr* aLafDataMgr ); - - /** - * Two-phrase constructor. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void ConstructL(); - - /** - * From CActive. - * The callback function used by CActiveScheduler. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void RunL(); - - /** - * From CActive. - * How to cancel me. - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - void DoCancel(); - - /** - * From CActive. - * Handle leaves from RunL(). - * - * @since S60 v5.0 - * @param None. - * @return None. - */ - TInt RunError( TInt aError ); - - /** - * Start the cursor with glint if actived or with gray color if deactived. - * - * @since S60 v5.0 - * @param aDelay. After this time, the RunL should be called. - * @return None. - */ - void StartL( TTimeIntervalMicroSeconds32 aDelay ); - -private: - // Data. - /** - * The state of CInsertionPoint object. - */ - TInt iState; - /** - * The timer for changing the visibility of this cursor. - */ - RTimer iTimer; - /** - * The rect that visual text must be displayed on. - */ - TRect iTextRect; - /** - * the cursor rect which will be drawn onto the screen. - */ - TRect iCursorRect; - /** - * Whether this cursor should be displayed. - */ - TBool isVisible; - /** - * the length from the beginning of visual text to the cursor position. - */ - TInt iOffSet; - /** - * the height of cursor. - */ - TInt iHeight; - /** - * the BrushColor of active cursor. - */ - TRgb iActiveBrushColor; - /** - * the PenColor of active cursor. - */ - TRgb iActivePenColor; - /** - * the BrushColor of active cursor. - */ - TRgb iInactiveBrushColor; - /** - * the PenColor of active cursor. - */ - TRgb iInactivePenColor; - /** - * the width of cursor. - */ - TInt iWidth; - /** - * Whether this cursor is actived. - */ - TBool isActive; - /** - * The observer for caring of the cursor's change. - * Not own. - */ - MRefreshObserver* iRefreshObserver; - CAknFepUiLayoutDataMgr* iLafDataMgr; - }; - -#endif /* INSERTIONPOINT_H */ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepAvkonCandidatePopup.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepAvkonCandidatePopup.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,950 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Avkon implementation of non-focusing popup menu to show word candidates. -* -*/ - - - - - - - - - - - - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include "AknFepAvkonCandidatePopup.h" -#include "AknPriv.hrh" -const TInt KChrKeyTimeout = 250000; -const TInt KChrKeyRepeatDelay = 1000000; - -const TInt KScreenWidthQHDLandscape = 640; -const TInt KScreenHeightQHDLandscape = 360; -const TInt KOffsetWidthForCandidatePopup = 32; - -/** -* Creates the pop-up list -* -*/ -CAknFepAvkonCandidatePopup* CAknFepAvkonCandidatePopup::NewL( MAknFepCandidatePopupCallback& aOwner ) - { - CAknFepAvkonCandidatePopup* self = new(ELeave)CAknFepAvkonCandidatePopup( aOwner ); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - - -/** -* C++ constructor -* -* @param aOwner The owner of the popup list. Provides the candidates and receives notification -* when candidate selected. -* -*/ -CAknFepAvkonCandidatePopup::CAknFepAvkonCandidatePopup( MAknFepCandidatePopupCallback& aOwner ) - : CAknPopupList() - , iOwner(aOwner) - , iKeyboard(EPtiKeyboardNone) - { - - } - - -/** -* 2nd phase construction -* -*/ -void CAknFepAvkonCandidatePopup::ConstructL() - { - // Construct the inner listbox and the base class - iList = new( ELeave ) CAknSinglePopupMenuStyleListBox; - TInt primaryCandidate = 0; - - CRepository* aknFepRepository = NULL; - aknFepRepository = CRepository::NewL(KCRUidAknFep); - if(aknFepRepository) - { - aknFepRepository->Get(KAknFepPrimaryCandidateFlag, primaryCandidate); - delete aknFepRepository; - } - - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout; - - // Not use embedded CBA, so new the CBA seperately - TInt cbaResource = 0; - if(primaryCandidate && layout != EPtiKeyboard12Key ) - { - CAknPopupList::ConstructL( iList,R_AKNFEP_SOFTKEYS_OK_CANCEL_SELECT, - AknPopupLayouts::EMenuWindow ); - cbaResource = R_AKNFEP_SOFTKEYS_OK_CANCEL_SELECT; - } - else - { - CAknPopupList::ConstructL( iList, R_AKNFEP_SOFTKEYS_SPELL_CANCEL_SELECT, - AknPopupLayouts::EMenuWindow ); - cbaResource = R_AKNFEP_SOFTKEYS_SPELL_CANCEL_SELECT; - } - // To add new CBA, here set its flag as the base class, - // but just not set Embedded flag. - TUint flags = CEikButtonGroupContainer::EAddToStack; - if ( AknLayoutUtils::PenEnabled() ) - { - flags |= CEikButtonGroupContainer::EDelayActivation; - } - // Destroy the CBA constructed in base class, and new its own CBA - delete iPopoutCba; - iPopoutCba = CEikButtonGroupContainer::NewL( - CEikButtonGroupContainer::ECba, - CEikButtonGroupContainer::EHorizontal, - this, cbaResource, *this, flags ); - - iList->ConstructL( this, CEikListBox::ELeftDownInViewRect ); - iList->CreateScrollBarFrameL( ETrue ); - iList->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, //< horizontal - CEikScrollBarFrame::EAuto ); //< vertical - iList->SetNonFocusing(); - - - // Construct the item array - iCandidates = new (ELeave) CDesCArrayFlat( KPredictiveListCandidateMax ); - CTextListBoxModel* model = iList->Model(); - model->SetItemTextArray( iCandidates ); - model->SetOwnershipType( ELbmDoesNotOwnItemArray ); - iChrKeypressMonitor = CPeriodic::NewL(CActive::EPriorityStandard); - SetNonFocusing(); - MakeVisible(EFalse); - } - - -MAknFepCandidatePopup::~MAknFepCandidatePopup() -{ - -} - -/** -* Destructor -* -*/ -CAknFepAvkonCandidatePopup::~CAknFepAvkonCandidatePopup() - { - delete iList; - delete iCandidates; - if( iChrKeypressMonitor ) - { - iChrKeypressMonitor->Cancel(); - delete iChrKeypressMonitor; - iChrKeypressMonitor = NULL; - } - } - - -TPtrC CAknFepAvkonCandidatePopup::ActiveWord() const - { - if ( iCandidates->Count()>*iSelectedIdx && *iSelectedIdx>0 ) - { - return (*iCandidates)[*iSelectedIdx]; - } - else - { - return TPtrC( KNullDesC ); - } - } - - -TPtrC CAknFepAvkonCandidatePopup::ExactWord() const - { - if ( iCandidates->Count() > 0 ) - { - return (*iCandidates)[0]; - } - else - { - return TPtrC( KNullDesC ); - } - } - - -/** -* Makes the pop-up selection list visible. -* -* @param aInlineEditorRect Tells the place of the inline editor. If possible, the popup is opened -* so that it does not hide the inline editor. -* -* @param aSelectedIdx Input/output argument for the selected index. If legal index is given in, -* it will be used as default selection. Otherwise the default selection will -* be the currently active word. On succesful exit this variable contains -* the index selected by the user. -* -* @param aLastKeyEvent The last key event received by the popup. On return this is the event -* which closed the popup. -* -* @return The command id used to close the window. EAknFepSoftkeySpell, EAknSoftkeyCancel, or EAknSoftkeySelect -*/ -TInt CAknFepAvkonCandidatePopup::ExecutePopupL( const TRect& aInlineEditorRect, TInt& aSelectedIdx, - TKeyEvent& aLastKeyEvent, TBool aRightToLeftLanguage, - TInt aKeyboard ) - { - iSelectedIdx = &aSelectedIdx; - iLastKeyEvent = &aLastKeyEvent; - iKeyboard = (TPtiKeyboardType)aKeyboard; - //This is the inline text rectangle, this is needed in the event of a layout change - iInlineTextRect = aInlineEditorRect; - - TInt requestedSelection = *iSelectedIdx; - iOwner.GetCandidatesL( *iCandidates, *iSelectedIdx ); - if ( requestedSelection >= 0 && requestedSelection < iCandidates->Count() ) - { - *iSelectedIdx = requestedSelection; - } - - iListBox->SetCurrentItemIndex( *iSelectedIdx ); - - iRightToLeftCandidate = aRightToLeftLanguage; - - const TSize screenSize = iAvkonAppUi->ApplicationRect().Size(); //TSize(AKN_LAYOUT_WINDOW_screen.iW,AKN_LAYOUT_WINDOW_screen.iH); - iPopoutCba->SetBoundingRect(TRect(screenSize)); - - SetupWindowLayout(iWindowType); - SetupWindowLocation( aInlineEditorRect ); - - iListBox->SetListBoxObserver(this); - - iEikonEnv->RemoveFromStack(this); - iEikonEnv->EikAppUi()->AddToStackL(this,ECoeStackPriorityDialog/*ECoeStackPriorityFep*/); - - - ActivateL(); - // this is required here to make code like - // iList->SetCurrentItemIndex( last item of the list ); - // iPopupList->ExecuteLD(); - // to work as it used to. Without this current item of the - // list would be topmost item, and there would be unused empty - // space below that. - iListBox->UpdateScrollBarsL(); - - // The main rule is to make the first index (the exact match) visible. However, the active index should never - // be hidden. - iListBox->ScrollToMakeItemVisible( 0 ); - if ( iListBox->BottomItemIndex() < *iSelectedIdx ) - { - iListBox->ScrollToMakeItemVisible( *iSelectedIdx ); - } - - // Ensure that the popup is on top. Without this the popup window is left in the background at least - // in the dialogs of the Phonebook application. - //Window().SetOrdinalPosition(0); - //iPopoutCba->SetContainerWindowL( Window() ); this didn't help - - // Make the popup visible - iPopoutCba->MakeVisible(ETrue); - iListBox->MakeVisible(ETrue); - MakeVisible(ETrue); - SetFocus(ETrue); - FadeBehindPopup(EFalse); - TInt returnValue; - iReturn = &returnValue; - iLastCommandId = EAknSoftkeySelect; - iWait.Start(); - return returnValue; - } - - -/** -* Called when the popup is closed. Unlike the base class, this class does not commit suicide on this situation. -* -* @return ETrue if the popup was accepted. EFalse if the popup was cancelled -*/ -void CAknFepAvkonCandidatePopup::AttemptExitL(TBool aAccept) - { - *iSelectedIdx = iList->CurrentItemIndex(); - - if (iCoeEnv && iEikonEnv) - { - iEikonEnv->RemoveFromStack(this); - } - - SetFocus(EFalse); - MakeVisible(EFalse); - ListBox()->MakeVisible(EFalse); - iPopoutCba->MakeVisible(EFalse); - - if (iReturn) //Always not null unless ExecutePopupL leaves - { - if (!aAccept) - { - *iReturn = EAknSoftkeyCancel; - } - else - { - *iReturn = iLastCommandId; - } - } - if(iWait.IsStarted()) - iWait.AsyncStop(); - } - - -void CAknFepAvkonCandidatePopup::HandleResourceChange(TInt aType) - { - CAknPopupList::HandleResourceChange(aType); - //When there is a dynamic layout change, the candidate list position needs to be aligned with - //the new position of the inline text. - if(aType == KEikDynamicLayoutVariantSwitch) - { - // Move back candidate popup control priority. - iEikonEnv->RemoveFromStack(this); - TRAP_IGNORE( iEikonEnv->EikAppUi()->AddToStackL(this, ECoeStackPriorityDialog )) ; - // Get candidate update position based on layout. - TRAP_IGNORE(iOwner.GetUpdateCandidatePositionL(iInlineTextRect)); - - // Ensure that the popup is on top. - Window().SetOrdinalPosition(0); - - SetupWindowLocation( iInlineTextRect); - DrawNow(); - } - else if(aType == KAknMessageFocusLost) - FadeBehindPopup(ETrue); - - } - - -void CAknFepAvkonCandidatePopup::UnFocus() - { - //Remove the candidate list from the control stack so that it does not receive any key event. - if (iCoeEnv && iEikonEnv) - { - iEikonEnv->RemoveFromStack(this); - } - //Un-Focus the candidate list - SetFocus(EFalse); - } -void CAknFepAvkonCandidatePopup::ShowAtNewPosition(TRect aRect) - { - if (iCoeEnv && iEikonEnv) - { - TRAP_IGNORE( iEikonEnv->EikAppUi()->AddToStackL(this,ECoeStackPriorityDialog/*ECoeStackPriorityFep*/ )); - } - SetFocus(ETrue); - iInlineTextRect = aRect; - SetupWindowLocation( iInlineTextRect); - DrawNow(); - } - -void CAknFepAvkonCandidatePopup::SetFocusAddStackReducePriorityL() - { - if (iCoeEnv && iEikonEnv) - { - iEikonEnv->EikAppUi()->AddToStackL(this, ECoeStackPriorityDefault-1/*ECoeStackPriorityDialog-1*/ ); - } - SetFocus(ETrue); - } - -TInt CAknFepAvkonCandidatePopup::HandleChrKeyMonitorCallback(TAny* aParam) - { - // the timer will be cancelled only when the key up event is received - // the down arrow key event is simulated now - TKeyEvent keyEvent; - keyEvent.iCode = EKeyDownArrow; -// TEventCode type = EEventKey; - TRAP_IGNORE( ((CAknFepAvkonCandidatePopup*)aParam)->ListBox()->OfferKeyEventL(keyEvent, EEventKey) ); - // Prevent the screen saver - User::ResetInactivityTime(); - return 1; - } - -/** -* Modified from CAknPopupList::OfferKeyEventL(). -*/ -TKeyResponse CAknFepAvkonCandidatePopup::OfferKeyEventL(const TKeyEvent& aKeyEvent, - TEventCode aType) - { - *iLastKeyEvent = aKeyEvent; - - // Selection key is substituted with the space key. Thus, selecting a candidate with the selection - // key auto-appends space character. - if ( aKeyEvent.iScanCode == EStdKeyDevice3 ) - { - //iLastKeyEvent->iScanCode = EStdKeySpace; - iLastKeyEvent->iCode = EKeyOK; - } - // Asterisk is substituted with arrow down key to get same functionality in ITU-T keypads - // Emulator sends key event with scancode EStdKeyNkpAsterisk and hardware an event - // with code '*' so we check for both - else if ( ( (aKeyEvent.iScanCode == EStdKeyNkpAsterisk || aKeyEvent.iCode == '*' ) - && iKeyboard == EPtiKeyboard12Key ) ) - { - iLastKeyEvent->iCode = EKeyDownArrow; - } - else if( aKeyEvent.iScanCode == EStdKeyLeftFunc - && iKeyboard == EPtiKeyboardHalfQwerty ) - { - if( aType == EEventKeyDown) - { - iLastKeyEvent->iCode = EKeyDownArrow; - // start the timer - if(iChrKeypressMonitor->IsActive()) - { - iChrKeypressMonitor->Cancel(); - } - iChrKeypressMonitor->Start( KChrKeyRepeatDelay, KChrKeyTimeout, - TCallBack(HandleChrKeyMonitorCallback, this)); - - aType = EEventKey; - } - else - { - iChrKeypressMonitor->Cancel(); - return EKeyWasNotConsumed; - } - } - // this must be first check, since window will be faded when fast - // swap window is visible - if (aType==EEventKey && aKeyEvent.iCode == EKeyEscape) - { - AttemptExitL(EFalse); - return EKeyWasConsumed; - } - - if ( Window().IsFaded() ) - { - // this happens, when popuplist has a findbox, and user - // presses shift to launch fep menu. Fep menu has priority menu - // in control stack, but we have dialog priority. As result, - // keyevents will get here first. If we return - // EKeyWasNotConsumed, fep menu will catch those events - // next. - return EKeyWasNotConsumed; - } - - TBool needRefresh = EFalse; - TKeyResponse res = AknFind::HandleFindOfferKeyEventL(aKeyEvent, aType, this, - ListBox(), FindBox(), EFalse, needRefresh); - - if (needRefresh && FindBox()) - { - DrawNow(); - } - - if ( res == EKeyWasConsumed ) - { - return res; - } - - if (aType==EEventKey) - { - // Handle arrow keys based on iScancode - TBool keyEventHandled = EFalse; - switch (iLastKeyEvent->iScanCode) - { - case EStdKeyUpArrow: //fall through - case EStdKeyDownArrow: - keyEventHandled = ETrue; - return iListBox->OfferKeyEventL(*iLastKeyEvent, aType); - - case EStdKeyLeftArrow: - if(iRightToLeftCandidate) - // These keys confirm the selection and are then handled by AknFepManager - AttemptExitL(ETrue); - else - // These keys cancel the selection and are then handled by AknFepManager - AttemptExitL(EFalse); - keyEventHandled = ETrue; - return EKeyWasConsumed; - - case EStdKeyRightArrow: - if(iRightToLeftCandidate) - // These keys cancel the selection and are then handled by AknFepManager - AttemptExitL(EFalse); - else - // These keys confirm the selection and are then handled by AknFepManager - AttemptExitL(ETrue); - keyEventHandled = ETrue; - return EKeyWasConsumed; - - } - if (!keyEventHandled) - { - // Handle through iCode - switch (iLastKeyEvent->iCode) - { - - case EKeyUpArrow: //fall through - case EKeyDownArrow: - return iListBox->OfferKeyEventL(*iLastKeyEvent, aType); - - case EKeyLeftArrow: - if(iRightToLeftCandidate) - // These keys confirm the selection and are then handled by AknFepManager - AttemptExitL(ETrue); - else - // These keys cancel the selection and are then handled by AknFepManager - AttemptExitL(EFalse); - return EKeyWasConsumed; - - case EKeyRightArrow: - if(iRightToLeftCandidate) - // These keys cancel the selection and are then handled by AknFepManager - AttemptExitL(EFalse); - else - // These keys confirm the selection and are then handled by AknFepManager - AttemptExitL(ETrue); - - return EKeyWasConsumed; - - - case EKeyEnter: - case EKeyOK: - case EKeySpace: - case EKeyTab: - default: - // These keys confirm the selection and are then handled by AknFepManager - AttemptExitL(ETrue); - return EKeyWasConsumed; - case EKeyApplication: - case EKeyPhoneEnd: - // Flip open close event. - case EKeyFlipOpen: - case EKeyFlipClose: - AttemptExitL(EFalse); - return EKeyWasNotConsumed; - - } - } - } - - // For Layout switching - // If user switch the layout, means QWERTY to ITU-T and vice versa - // Keyboard layout going to cahnge, So, not need to open the candidate - // list as it is, becz its may predict differnt list of word. - if (aKeyEvent.iScanCode == EStdKeyApplicationE || - aKeyEvent.iScanCode == EStdKeyApplication10 || - aKeyEvent.iScanCode == EStdKeyDeviceF || - aKeyEvent.iScanCode == EStdKeyDeviceA || - aKeyEvent.iScanCode == EStdKeyApplication12 || - aKeyEvent.iScanCode == EStdKeyApplication15 || - aKeyEvent.iScanCode == EStdKeyApplication16 || - aKeyEvent.iScanCode == EStdKeyDeviceB) - { - AttemptExitL(EFalse); - return EKeyWasConsumed; - } - - return EKeyWasNotConsumed; - } - - -/** -* Process commands from CBA buttons. -* @param aCommandId The command to handle. -*/ -void CAknFepAvkonCandidatePopup::ProcessCommandL(TInt aCommandId) - { - iLastCommandId = aCommandId; - if (aCommandId==EAknFepSoftkeySpell - || aCommandId == EAknSoftkeyOk) - { - AttemptExitL(ETrue); - } - else - { - CAknPopupList::ProcessCommandL(aCommandId); - } - } - - -/** -* Calculates the position for the popup window and places it there -* @param aInlineEditorRect The placement of the inline editor is used as reference. -* The inline editor is not hidden if possible. -*/ -void CAknFepAvkonCandidatePopup::SetupWindowLocation( const TRect& aInlineEditorRect ) - { - TRect clientRect; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, clientRect); - - TRect popupRect = Rect(); - - // 1. Is it possible to place the popup under the inline editor - if ( aInlineEditorRect.iBr.iY + popupRect.Height() < clientRect.iBr.iY ) - { - SetPosition( TPoint(aInlineEditorRect.iTl.iX, aInlineEditorRect.iBr.iY) ); - } - - // 2. Is it possible to place the popup on the right side of the inline editor - else if ( aInlineEditorRect.iBr.iX + popupRect.Width() < clientRect.iBr.iX ) - { - SetPosition( TPoint(aInlineEditorRect.iBr.iX, aInlineEditorRect.iTl.iY) ); - } - - // 3. Is it possible to place the popup above the inline editor - else if ( aInlineEditorRect.iTl.iY > popupRect.Height() ) - { - SetPosition( aInlineEditorRect.iTl - TPoint(0, popupRect.Height()) ); - } - - // 4. Is it possible to place the popup on the left side of the inline editor - else if ( aInlineEditorRect.iTl.iX > popupRect.Width() ) - { - SetPosition( aInlineEditorRect.iTl - TPoint(popupRect.Width(), 0) ); - } - - // 5. If everything else fails, place the popup in the center of the screen - else - { - TInt xMargins = clientRect.Width() - popupRect.Width(); - TInt yMargins = clientRect.Height() - popupRect.Height(); - SetPosition( TPoint(xMargins/2, yMargins/2) ); - } - - - - // Shift popup to left if necessary - if ( Position().iX + popupRect.Width() > clientRect.iBr.iX ) - { - SetPosition( TPoint(clientRect.iBr.iX-popupRect.Width(), Position().iY) ); - } - - // Shift popup upwards if necessary - if ( Position().iY + popupRect.Height() > clientRect.iBr.iY ) - { - SetPosition( TPoint(Position().iX, clientRect.iBr.iY-popupRect.Height()) ); - } - } - - -/** -* Sets up the layout of the popup window. -* Modified from CAknPopupList::SetupWindowLayout() -*/ -void CAknFepAvkonCandidatePopup::SetupWindowLayout(AknPopupLayouts::TAknPopupLayouts aType) - { - // A linked list for HandleSizeChanged(). - TAknPopupLayoutsNode list = { 0, EListNode, ListBox() }; - TAknPopupLayoutsNode heading = { &list, EHeadingNode, Heading() }; - TAknPopupLayoutsNode windowOwning = { &heading, EWindowOwningNode, this }; - TAknPopupLayoutsNode findPane = { &windowOwning, EFindBoxNode, FindBox() }; - TAknPopupLayoutsNode *listBegin = &findPane; - - HandleSizeChanged( Layout(), aType, listBegin ); - - // create skin context for popuplist (list itemdrawer uses normal list skinning) - TRect windowRect = Rect(); - - TAknLayoutRect topLeft; - topLeft.LayoutRect(windowRect, - SkinLayout::Popup_windows_skin_placing__frame_general__Line_2()); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect(windowRect, - SkinLayout::Popup_windows_skin_placing__frame_general__Line_5()); - - TRect outerRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); - TRect innerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); - - // we can safely use FormattedCellData only if normal popup layouts are in use - switch(iWindowType) - { - case AknPopupLayouts::EMenuUnknownColumnWindow: - case AknPopupLayouts::EMenuUnknownFormattedCellWindow: - break; - default: - { - CFormattedCellListBoxData *boxData = - ((CEikFormattedCellListBox*)ListBox())->ItemDrawer()->FormattedCellData(); - - boxData->SetSkinPopupFrame(&KAknsIIDQsnFrPopup,&KAknsIIDQsnFrPopupCenter); - boxData->SetSkinPopupFramePosition(outerRect,innerRect); - } - break; - } - - //CListItemDrawer::SetItemCellSize needs to be called to set the selection bar width - TSize cellSize = iList->ItemDrawer()->ItemCellSize(); - cellSize.iWidth = iLayout.iListRect.Rect().Width(); - iList->ItemDrawer()->SetItemCellSize( cellSize ); - } - - -/** -* Calculates the width of the popup window based on the candidates available on the list. -* The with is always set to as small as possible without truncation. -* The client application area is used as reference to ensure that the popup is never wider -* than the application area. -*/ -TInt CAknFepAvkonCandidatePopup::CalculateWindowWidth( const TRect& aClientRect ) - { - // Fetch the font - const CFont* font = AknLayoutUtils::FontFromId(AKN_LAYOUT_TEXT_List_pane_texts__menu_single__Line_1(0).FontId()); - - TInt maxTextWidth = 0; - - for (TInt i=0 ; iCount() ; ++i) - { - TInt curTextWidth = font->TextWidthInPixels( (*iCandidates)[i] ); - if ( curTextWidth > maxTextWidth ) - { - maxTextWidth = curTextWidth; - } - } - - TInt popupWidth = maxTextWidth + ( 2 * font->MaxCharWidthInPixels() ); - - // Modified as per Avkon team's suggestions - // From Avkon:- - // Layout data of listscroll_menu_pane are changed for CR 417-35260. - // The change is just for QHD landscape model. - // The CR makes listscroll_menu_pane's ir or il bigger than normal, - // so that width of list item is smaller than needs. Then, first cell - // of list item can not be drawn on proper position. - // Adjustment of layout is a solution for this problem. This is not a perfect idea, but - // creating a new layout for popuplist is too complex to do that. Adjustment is a must. - - if ( Layout_Meta_Data::IsLandscapeOrientation() ) - { - const TSize screenSize = iAvkonAppUi->ApplicationRect().Size(); - - if( KScreenWidthQHDLandscape == screenSize.iWidth && - KScreenHeightQHDLandscape == screenSize.iHeight ) - { - popupWidth += KOffsetWidthForCandidatePopup; - } - } - - if ( popupWidth > aClientRect.Width() ) - { - popupWidth = aClientRect.Width(); - } - - return popupWidth; - } - - -/** -* Utility function copied from aknpopuplayout.cpp -*/ -static CCoeControl *FindControl(TAknPopupLayoutsNode *aNode, TInt aId) - { - while(aNode) - { - if (aId == aNode->iId) - { - return aNode->iControl; - } - aNode = aNode -> iNext; - } - return NULL; - } - -/** -* Utility function copied from aknpopuplayout.cpp -*/ -static TInt GetMaxListHeight() - { - TAknLayoutRect temp, layout; - - TRect mainPane; - TRect statusPane; - TRect controlPane; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPane ); - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, statusPane ); - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EControlPane, controlPane ); - - // in landscape orientation popuplist can't go on top of statuspane - if ( !Layout_Meta_Data::IsLandscapeOrientation() ) - { - mainPane.iTl.iY -= statusPane.Height(); - } - - - // treat mainpane+statuspane area as popup window - // too bad we can't use this, because e.g. QVGA landscape has border-size 7 - // in avkon layout and border-size 9 in skin drawing... - /*temp.LayoutRect( mainPane, AknLayoutScalable_Avkon::listscroll_menu_pane(0)); - layout.LayoutRect( temp.Rect(), AknLayoutScalable_Avkon::list_menu_pane(0)); - return layout.Rect().Height();*/ - - // shadow - TInt varietyIndex = Layout_Meta_Data::IsLandscapeOrientation(); - - TAknLayoutRect insideArea; - insideArea.LayoutRect( - mainPane, - AknLayoutScalable_Avkon::bg_popup_window_pane_g1(varietyIndex) ); - - return insideArea.Rect().Height(); - } - -/** -* Modified from AknPopupLayouts::HandleSizeChanged() -*/ -void CAknFepAvkonCandidatePopup::HandleSizeChanged( TAknPopupWindowLayoutDef &aDef, - AknPopupLayouts::TAknPopupLayouts /*aLayout_1*/, - TAknPopupLayoutsNode *aNode) - { - CAknPopupHeadingPane *heading = (CAknPopupHeadingPane*)FindControl(aNode, EHeadingNode); - CEikListBox *listBox = (CEikListBox*)FindControl(aNode, EListNode); - CCoeControl *windowOwningControl = FindControl(aNode, EWindowOwningNode); - //CAknMessageQueryControl *msgQueryCtrl = (CAknMessageQueryControl*)FindControl(aNode, EMessageBoxNode); - - //TInt layout = aLayout_1; - TInt numofitems = listBox->Model()->NumberOfItems(); - - TRAP_IGNORE( listBox->View()->ItemDrawer()->SetSkinEnabledL(ETrue) ); - - TInt maxListHeight = GetMaxListHeight(); - - // position popup window's bottom correctly - TRect clientRect; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, clientRect); - // set windowrect to minimum size - this will be adjusted later - TAknLayoutRect windowRect; - windowRect.LayoutRect( clientRect, AknLayoutScalable_Avkon::popup_menu_window(8)); - - aDef.iWindowRect = windowRect.Rect(); - aDef.iWindowRect.SetWidth( CalculateWindowWidth(clientRect) ); - TRAP_IGNORE( listBox->View()->ItemDrawer()->SetSkinEnabledL(ETrue) ); - - TInt minItems = 1; - - TAknWindowLineLayout listLayout; - TAknLayoutScalableParameterLimits listLimits; - - listLayout = AknLayoutScalable_Avkon::list_single_pane_cp2(0); - listLimits = AknLayoutScalable_Avkon::list_single_pane_cp2_ParamLimits(); - - TInt maxLayoutItems = listLimits.LastRow() + 1; // last row is a zero based index, we need num items which is 1 based - - TAknLayoutRect listItemRect; - listItemRect.LayoutRect( aDef.iWindowRect, listLayout); - TInt listItemHeight = listItemRect.Rect().Height(); - TInt maxItems = maxListHeight / listItemHeight; - // minItems == 1 only if the popuplist is dynamically changeable - if ( (numofitems > 1) && (minItems == 1) ) - { - minItems = numofitems; - } - if (minItems > maxItems) - { - minItems = maxItems; - } - // maxItems might be greater than max items from layout -> use layout's maximum - if (minItems > maxLayoutItems) - { - minItems = maxLayoutItems; - } - - TRect window_rect = AknPopupLayouts::MenuRect(aDef); - - TAknLayoutRect temp, layout; - temp.LayoutRect( window_rect, AknLayoutScalable_Avkon::listscroll_menu_pane(0)); - layout.LayoutRect( temp.Rect(), AknLayoutScalable_Avkon::list_menu_pane(0)); - - - TRect tempListRect = layout.Rect(); // this is list's rect for the whole window - - // We really don't want parent relative list layout here because findbox will be overwritten. - // Just calculate list height and use that. - TRect nullRect(0,0,0,0); - listLayout.iH = (TInt16)(minItems * listItemHeight); - listLayout.ib = ELayoutEmpty; - - aDef.iListRect.LayoutRect(tempListRect, - listLayout); - - // we have to scale iWindowRect to list rect - layout is not (yet) correct - TInt usedHeight = aDef.iListRect.Rect().Height(); - - // popupwindow's inside area - TInt varietyIndex = Layout_Meta_Data::IsLandscapeOrientation(); - - TAknLayoutRect insideArea; - insideArea.LayoutRect( - window_rect, - AknLayoutScalable_Avkon::bg_popup_window_pane_g1(varietyIndex) ); - - if (layout.Rect().Height() < usedHeight) - { - aDef.iWindowRect.iTl.iY -= (usedHeight - layout.Rect().Height()); - } - - - // now we finally know the window rect - AknPopupLayouts::MenuPopupWindowGraphics(aDef); - - TAknWindowLineLayout line = AknLayoutScalable_Avkon::listscroll_menu_pane(0).LayoutLine(); - - layout.LayoutRect(AknPopupLayouts::MenuRect(aDef), line); - TRect scrollBarClientRect(layout.Rect()); - - varietyIndex = 0; - AknLayoutUtils::LayoutVerticalScrollBar( - listBox->ScrollBarFrame(), - scrollBarClientRect, - AknLayoutScalable_Avkon::scroll_pane_cp25(varietyIndex).LayoutLine() ) ; - - windowOwningControl->SetRect(AknPopupLayouts::WindowRect(aDef)); - AknPopupLayouts::HandleSizeAndPositionOfComponents(aDef, listBox, heading); - - window_rect = AknPopupLayouts::WindowRect(aDef); - MAknsControlContext *cc = AknsDrawUtils::ControlContext( listBox ); - TBool defaultContext = EFalse; - if (!cc) - { - cc = listBox->View()->ItemDrawer()->SkinBackgroundControlContext(); - defaultContext = ETrue; - } - if (cc) - { - CAknsBasicBackgroundControlContext *bcc = (CAknsBasicBackgroundControlContext*)cc; - TAknLayoutRect popupBgRect; - popupBgRect.LayoutRect(window_rect, - SkinLayout::Popup_windows_skin_placing__background_slice__Line_1(window_rect)); - - bcc->SetBitmap(KAknsIIDQsnFrPopupCenter); - if (defaultContext) bcc->SetRect(popupBgRect.Rect()); - bcc->SetParentPos(windowOwningControl->PositionRelativeToScreen()); - if (defaultContext) - bcc->SetParentPos(TPoint(0,0)); - } - } - -// end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepIndicatorAvkon.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepIndicatorAvkon.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,584 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepIndicator methods. -* -*/ - - - - - - - - - - - - -#include //CEikEnv -#include //CEikStatusPane -#include -#include //CAknNavigationControlContainer -#include //CAknNavigationDecorator -#include //CAknIndicatorContainer -#include -#include -#include "AknFepIndicatorAvkon.h" - -#include "AknFepGlobalEnums.h" - -/** - * - */ -CAknFepIndicator* CAknFepIndicatorAvkon::NewL() - { - CAknFepIndicatorAvkon* self = new(ELeave)CAknFepIndicatorAvkon(); - return self; - } - -/** - * - */ -CAknFepIndicatorAvkon::~CAknFepIndicatorAvkon() - { - RemoveContainer(); - } - - TBool CAknFepIndicatorAvkon::QueryPredictiveState(TAknEditingState aState) - { - return (( aState == EIndicatorStatePinyin) || - ( aState == EIndicatorStatePinyinPhrase) || - ( aState == EIndicatorStateZhuyin) || - ( aState == EIndicatorStateZhuyinPhrase) || - ( aState == EIndicatorStateZhuyinFind) || - ( aState == EIndicatorStateStrokeFind) || - ( aState == EIndicatorStateStroke) || - ( aState == EIndicatorStateStrokePhrase) || - ( aState == EIndicatorStateCangJie) || - ( aState == EIndicatorStateStrokeTrad) || - ( aState == EIndicatorStateStrokeTradPhrase) || - ( aState == ET9Upper) || - ( aState == ET9Shifted) || - ( aState == ET9Lower) || - ( aState == ET9Arabic) || - ( aState == ET9Hebrew) || - ( aState == ET9FarsiAndUrdu) || - ( aState == ET9Thai) || - ( aState == EIndicatorStatePredictiveHindi) || -#ifdef RD_MARATHI - ( aState == EIndicatorStatePredictiveMarathi) || -#endif // RD_MARATHI - ( aState == EIndicatorStateJapanesePredictive) || - ( aState == ET9UpperVietnamese) || - ( aState == ET9LowerVietnamese) || - ( aState == ET9ShiftedVietnamese) || - ( aState == ET9UpperGreek) || - ( aState == ET9LowerGreek) || - ( aState == ET9ShiftedGreek) || - ( aState == ET9UpperCyrillic) || - ( aState == ET9LowerCyrillic) || - ( aState == ET9ShiftedCyrillic) ); - } - - -#ifndef RD_INTELLIGENT_TEXT_INPUT - TBool CAknFepIndicatorAvkon::QueryPredictiveAutoCompleteState(TAknEditingState aState) - { - - return (( aState == EAutoCompleteUpper ) || - ( aState == EAutoCompleteShifted ) || - ( aState == EAutoCompleteLower ) || - ( aState == EAutoCompleteHindi ) || - ( aState == EAutoCompleteArabic ) || - ( aState == EAutoCompleteHebrew ) || - ( aState == EAutoCompleteFarsiAndUrdu ) || - ( aState == EAutoCompleteThai ) || - ( aState == EAutoCompleteUpperVietnamese ) || - ( aState == EAutoCompleteLowerVietnamese ) || - ( aState == EAutoCompleteShiftedVietnamese )); - } - -#endif -TInt CAknFepIndicatorAvkon::EvaluateState(TAknEditingState aState) -{ - TInt result = 0; - switch(aState) - { - case EArabicIndicNumeric: - result = EAknNaviPaneEditorIndicatorArabicIndicNumberCase; - break; - - case ET9Thai: - case EMultitapThai: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteThai: -#endif - result = EAknNaviPaneEditorIndicatorThai; - break; - - case EIndicatorStatePredictiveHindi: - case EIndicatorStateMultitapHindi: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteHindi: -#endif -#ifdef RD_MARATHI - case EIndicatorStateMultitapMarathi: - case EIndicatorStatePredictiveMarathi: -#endif // RD_MARATHI - result = EAknNaviPaneEditorIndicatorDevanagariCase; - break; - - case ET9Arabic: - case EMultitapArabic: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteArabic: -#endif - result = EAknNaviPaneEditorIndicatorArabicCase; - break; - - case ET9Hebrew: - case EMultitapHebrew: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteHebrew: -#endif - result = EAknNaviPaneEditorIndicatorHebrewCase; - break; - - case ET9FarsiAndUrdu: - case EMultitapFarsiAndUrdu: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteFarsiAndUrdu: -#endif - result = EAknNaviPaneEditorIndicatorFarsiAndUrduCase; - break; - - - case ET9Upper: - case EMultitapUpper: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteUpper: -#endif - if(iCopyMode) - { - result = EAknNaviPaneEditorIndicatorUpperCaseSelect; - } - else - { - result = EAknNaviPaneEditorIndicatorUpperCase; - } - - break; - - case ET9Lower: - case EMultitapLower: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteLower: -#endif - if(iCopyMode) - { - result = EAknNaviPaneEditorIndicatorLowerCaseSelect; - } - else - { - result = EAknNaviPaneEditorIndicatorLowerCase; - } - break; - - case ET9Shifted: - case EMultitapShifted: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteShifted: -#endif - if(iCopyMode) - { - result = EAknNaviPaneEditorIndicatorTextCaseSelect; - } - else - { - result = EAknNaviPaneEditorIndicatorTextCase; - } - break; - - case ENumeric: - if(iCopyMode) - { - result = EAknNaviPaneEditorIndicatorNumberCaseSelect; - } - else - { - result = EAknNaviPaneEditorIndicatorNumberCase; - } - break; - - - case EIndicatorStatePinyin: - result = EAknNaviPaneEditorIndicatorPinyin; - break; - case EIndicatorStatePinyinPhrase: - result = EAknNaviPaneEditorIndicatorPinyinPhrase; - break; - - case EIndicatorStateZhuyin: - result = EAknNaviPaneEditorIndicatorZhuyin; - break; - case EIndicatorStateZhuyinPhrase: - result = EAknNaviPaneEditorIndicatorZhuyinPhrase; - break; - - case EIndicatorStateZhuyinFind: - result = EAknNaviPaneEditorIndicatorZhuyinFind; - break; - - case EDevanagariIndicNumeric : - result = EAknNaviPaneEditorIndicatorDevanagariIndicNumberCase; - break; - - case EIndicatorStateHiraganaKanji: - case EIndicatorStateJapanesePredictive: - result = EAknNaviPaneEditorIndicatorJapaneseHiraganaKanji; - break; - - case EIndicatorStateFullKatakana: - result = EAknNaviPaneEditorIndicatorJapaneseFullKatakana; - break; - - case EIndicatorStateHalfKatakana: - result = EAknNaviPaneEditorIndicatorJapaneseHalfKatakana; - break; - - case EIndicatorStateFullLatinText: - result = EAknNaviPaneEditorIndicatorJapaneseFullTextAlphabet; - break; - - case EIndicatorStateFullLatinUpper: - result = EAknNaviPaneEditorIndicatorJapaneseFullUpperAlphabet; - break; - - case EIndicatorStateFullLatinLower: - result = EAknNaviPaneEditorIndicatorJapaneseFullLowerAlphabet; - break; - - case EIndicatorStateFullNumeric: - result = EAknNaviPaneEditorIndicatorJapaneseFullNumeric; - break; - - case EIndicatorStateHiragana: - result = EAknNaviPaneEditorIndicatorJapaneseHiragana; - break; - - case EIndicatorStateStroke: - result = EAknNaviPaneEditorIndicatorStroke; - break; - case EIndicatorStateStrokePhrase: - result = EAknNaviPaneEditorIndicatorStrokePhrase; - break; - - case EIndicatorStateStrokeTrad: - result = EAknNaviPaneEditorIndicatorStrokeTrad; - break; - case EIndicatorStateStrokeTradPhrase: - result = EAknNaviPaneEditorIndicatorStrokeTradPhrase; - break; - - case EQwertyShift: - result = EAknNaviPaneEditorIndicatorQwertyShift; - break; - - case EIndicatorStateStrokeFind: - result = EAknNaviPaneEditorIndicatorStrokeFind; - break; - - case EIndicatorStateCangJie: - result = EAknNaviPaneEditorIndicatorCangJie; - break; - - case EIndicatorStateHangul: - if(iCopyMode) - { - result = EAknNaviPaneEditorIndicatorKoreanHangulSelect; - } - else - { - result = EAknNaviPaneEditorIndicatorKoreanHangul; - } - break; - - case ET9UpperVietnamese: - case EMultitapUpperVietnamese: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteUpperVietnamese: -#endif - result = EAknNaviPaneEditorIndicatorVietnameseUpperCase; - break; - - case ET9LowerVietnamese: - case EMultitapLowerVietnamese: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteLowerVietnamese: -#endif - result = EAknNaviPaneEditorIndicatorVietnameseLowerCase; - break; - - case ET9ShiftedVietnamese: - case EMultitapShiftedVietnamese: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteShiftedVietnamese: -#endif - result = EAknNaviPaneEditorIndicatorVietnameseTextCase; - break; -#ifdef RD_HINDI_PHONETIC_INPUT - case EIndicatorStateHindiPhoneticUpper: - result = EAknNaviPaneEditorIndicatorDevanagariPhoneticUpperCase; - break; - case EIndicatorStateHindiPhoneticLower: - result = EAknNaviPaneEditorIndicatorDevanagariPhoneticLowerCase; - break; -#endif -#ifdef RD_INTELLIGENT_TEXT_INPUT - case EFnKeyPressed: - result = EAknNaviPaneEditorIndicatorFnKeyPressed; - break; - case EFnKeyLocked: - result = EAknNaviPaneEditorIndicatorFnKeyLocked; - break; -#endif - case ET9UpperGreek: - case EMultitapUpperGreek: - result = EAknNaviPaneEditorIndicatorGreekUpperCase; - break; - - case ET9LowerGreek: - case EMultitapLowerGreek: - result = EAknNaviPaneEditorIndicatorGreekLowerCase; - break; - - case ET9ShiftedGreek: - case EMultitapShiftedGreek: - result = EAknNaviPaneEditorIndicatorGreekTextCase; - break; - - case ET9UpperCyrillic: - case EMultitapUpperCyrillic: - result = EAknNaviPaneEditorIndicatorCyrillicUpperCase; - break; - - case ET9LowerCyrillic: - case EMultitapLowerCyrillic: - result = EAknNaviPaneEditorIndicatorCyrillicLowerCase; - break; - - case ET9ShiftedCyrillic: - case EMultitapShiftedCyrillic: - result = EAknNaviPaneEditorIndicatorCyrillicTextCase; - break; - } - return result; -} -/** - * - */ -void CAknFepIndicatorAvkon::SetState(TAknEditingState aState) - { - CAknNavigationControlContainer* naviPane = 0; - TRAPD(err, naviPane = NaviPaneL()); - - // If the navi pane has been changed, clean up and start again. - if (iNaviPane != naviPane) - { - RemoveContainer(); - iNaviPane = naviPane; - iNaviPaneChanged = ETrue; - } - - if ( (iPreviousState == aState) && !iNaviPaneChanged && !iCopyModeChanged) - { - // The required state already exists and navi pane has not been changed - // by launching embedded application. Leave the contents alone. - return; - } - iCopyModeChanged = EFalse; - - if (aState == EStateNone) - { - if ( iNaviDecorator && naviPane ) - { - CCoeControl* decoratedControl = iNaviDecorator->DecoratedControl(); - if ( decoratedControl ) - { - decoratedControl->MakeVisible(EFalse); - } - naviPane->Pop(iNaviDecorator); - } - if(iPreviousState && (iPreviousState != EStateNone)) - { - SetIndicator(EvaluateState(iPreviousState), EAknIndicatorStateOff, EFalse); - // Also set off predictive / query (pen) indicator. - SetIndicator(EAknNaviPaneEditorIndicatorQuery, EAknIndicatorStateOff, EFalse); - SetIndicator(EAknNaviPaneEditorIndicatorT9, EAknIndicatorStateOff, EFalse); - } - iPreviousState = aState; - iNaviPaneChanged = EFalse; - return; - } - - if ( err == KErrNone ) - { - iNaviPaneChanged = EFalse; - TRAP(err,AddContainerL(naviPane)); - - - // selection indicator - - SetIndicator(EvaluateState(iPreviousState), EAknIndicatorStateOff, EFalse); - - // selection indicator - if (iCopyMode) - { - // clear normal indicators first - SetIndicator(EAknNaviPaneEditorIndicatorTextCase, EAknIndicatorStateOff, ETrue); - SetIndicator(EAknNaviPaneEditorIndicatorLowerCase, EAknIndicatorStateOff, ETrue); - SetIndicator(EAknNaviPaneEditorIndicatorUpperCase, EAknIndicatorStateOff, ETrue); - SetIndicator(EAknNaviPaneEditorIndicatorNumberCase,EAknIndicatorStateOff, ETrue); - SetIndicator(EAknNaviPaneEditorIndicatorKoreanHangul,EAknIndicatorStateOff, ETrue); - } - else - { - // clear selection indicators first - SetIndicator(EAknNaviPaneEditorIndicatorTextCaseSelect, EAknIndicatorStateOff, ETrue); - SetIndicator(EAknNaviPaneEditorIndicatorLowerCaseSelect, EAknIndicatorStateOff, ETrue); - SetIndicator(EAknNaviPaneEditorIndicatorUpperCaseSelect, EAknIndicatorStateOff, ETrue); - SetIndicator(EAknNaviPaneEditorIndicatorNumberCaseSelect,EAknIndicatorStateOff, ETrue); - SetIndicator(EAknNaviPaneEditorIndicatorKoreanHangulSelect,EAknIndicatorStateOff, ETrue); - } - - TBool predictiveMode = QueryPredictiveState(aState); -#ifndef RD_INTELLIGENT_TEXT_INPUT - TBool predictiveAutoCompleteMode = EFalse; - if(!predictiveMode) - { - predictiveAutoCompleteMode = QueryPredictiveAutoCompleteState(aState); - } -#endif - - SetIndicator(EAknNaviPaneEditorIndicatorQuery, - ( predictiveMode || aState == EStateNone -#ifndef RD_INTELLIGENT_TEXT_INPUT - || predictiveAutoCompleteMode -#endif - )? EAknIndicatorStateOff : EAknIndicatorStateOn, EFalse); - SetIndicator(EAknNaviPaneEditorIndicatorT9, predictiveMode - ? EAknIndicatorStateOn : EAknIndicatorStateOff, EFalse); -#ifndef RD_INTELLIGENT_TEXT_INPUT - // Indicator for Auto Word Completion Mode - SetIndicator(EAknNaviPaneEditorIndicatorAutoComplete, predictiveAutoCompleteMode - ? EAknIndicatorStateOn : EAknIndicatorStateOff, EFalse); -#endif - - SetIndicator(EvaluateState(aState), EAknIndicatorStateOn, EFalse); - - // Push the state to the navi-pane - if (naviPane && iNaviDecorator) - { - CCoeControl* decoratedControl = iNaviDecorator->DecoratedControl(); - if ( decoratedControl ) - { - decoratedControl->MakeVisible(ETrue); - } - TRAP_IGNORE(naviPane->PushL(*iNaviDecorator)); - } - } - iPreviousState = aState; - } - -/** - * - */ -CAknIndicatorContainer* CAknFepIndicatorAvkon::IndicatorContainer() - { - CAknNavigationControlContainer* naviPane = 0; - TRAPD(err, naviPane = NaviPaneL()); - - // If the navi pane have changed, clean up and start again - if ( naviPane != iNaviPane ) - { - RemoveContainer(); - iNaviPane = naviPane; - iNaviPaneChanged = ETrue; - } - if ( !iIndicatorContainer ) - { - TRAP(err, AddContainerL(naviPane)); - } - return iIndicatorContainer; - } - -/** - * - */ -CAknFepIndicatorAvkon::CAknFepIndicatorAvkon() - :iPreviousState(EStateNone), iEikEnv(*CEikonEnv::Static()) - { - } - -/** - * Create a new indicator container and push it to the navi-pane - */ -void CAknFepIndicatorAvkon::AddContainerL(CAknNavigationControlContainer* aNaviPane) - { - // Create a new indicator container and push it to the navi-pane - if (!iIndicatorContainer && aNaviPane) - { - iNaviDecorator = aNaviPane->CreateEditorIndicatorContainerL(); - iIndicatorContainer = STATIC_CAST(CAknIndicatorContainer*, iNaviDecorator->DecoratedControl()); - } - } - -/** - * Pop the indicator container from the navi-pane - */ -void CAknFepIndicatorAvkon::RemoveContainer() - { - // Pop the indicator container from the navi-pane - if (iIndicatorContainer) - { - delete iNaviDecorator; - iNaviDecorator = NULL; - iIndicatorContainer = NULL; - } - } - -/** - * - */ -void CAknFepIndicatorAvkon::SetIndicator(TInt aIndicator, TInt aMode, TBool aDrawNow) - { - if ( iIndicatorContainer ) - { - iIndicatorContainer->SetIndicatorState(TUid::Uid(aIndicator), aMode, aDrawNow); - } - } - -/** - * get a handle to the Navi Pane - */ -CAknNavigationControlContainer* CAknFepIndicatorAvkon::NaviPaneL() - { - CEikStatusPane *sp = iEikEnv.AppUiFactory()->StatusPane(); - User::LeaveIfNull(sp); - // Fetch pointer to the default navi pane control - return (CAknNavigationControlContainer *)sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredOwnWordsModel.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredOwnWordsModel.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,224 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -#include "AknFepPredOwnWordsModel.h" - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAknFepPredOwnWordsModel::NewL() -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CAknFepPredOwnWordsModel* CAknFepPredOwnWordsModel::NewL( MDesCArray* aTextArray ) - { - CAknFepPredOwnWordsModel* self = CAknFepPredOwnWordsModel::NewLC( aTextArray ); - CleanupStack::Pop(self); - return self; - } - -// ----------------------------------------------------------------------------- -// CAknFepPredOwnWordsModel::NewLC() -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CAknFepPredOwnWordsModel* CAknFepPredOwnWordsModel::NewLC( MDesCArray* aTextArray ) - { - CAknFepPredOwnWordsModel* self = new ( ELeave ) CAknFepPredOwnWordsModel(); - CleanupStack::PushL(self); - self->ConstructL( aTextArray ); - return self; - } -// ----------------------------------------------------------------------------- -// CAknFepPredOwnWordsModel::ConstructL() -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CAknFepPredOwnWordsModel::ConstructL( MDesCArray* aTextArray ) - { - iPtiEngine = CPtiEngine::NewL(ETrue); - //for our purposes(adding/removing UDB entries), - //we are not dependent on language. Hence using English here - //as it should be available on all variants/devices. - iPtiEngine->ActivateLanguageL( ELangEnglish, EPtiEnginePredictive ); - - //Now read the UDB entires into the text array - UpdateItemsL( aTextArray ); - } -// ----------------------------------------------------------------------------- -// CAknFepPredOwnWordsModel::~CAknFepPredOwnWordsModel() -// C++ default constructor can NOT contain any code, that might leave. -// ----------------------------------------------------------------------------- -// -CAknFepPredOwnWordsModel::CAknFepPredOwnWordsModel() - { - // No implementation required - } - -// ----------------------------------------------------------------------------- -// CAknFepPredOwnWordsModel::~CAknFepPredOwnWordsModel() -// Destructor. -// ----------------------------------------------------------------------------- -// -CAknFepPredOwnWordsModel::~CAknFepPredOwnWordsModel() - { - delete iPtiEngine; - } - -// ----------------------------------------------------------------------------- -// CAknFepPredOwnWordsModel::UpdateItemsL() -// Destructor. -// ----------------------------------------------------------------------------- -// -void CAknFepPredOwnWordsModel::UpdateItemsL( MDesCArray* aTextArray ) - { - iUDBWords = (CDesCArrayFlat*)aTextArray; - ReadUDBEntriesL(); - } - -// ----------------------------------------------------------------------------- -// Read all the user dictionary words through PtiEngine -// ----------------------------------------------------------------------------- -// -void CAknFepPredOwnWordsModel::ReadUDBEntriesL() - { - if (NULL == iUDBWords) - { - //iUDBWords is not created here. We take referrence of item array - //from listbox parameter passed to the MAknFepPredUserDictEditingModel - //methods. So this is an error condition - list box is not - //completely/properly initialized - User::Leave(KErrCorrupt); - } - - TInt numOfUDBEntries = iPtiEngine->NumberOfEntriesInUserDictionary(); - for (TInt i(0) ; i < numOfUDBEntries ; ++i) - { - TPtiUserDictionaryEntry udbEntry; - TInt getEntryResult = iPtiEngine->GetUserDictionaryEntry( i, udbEntry); - if ( KErrNone == getEntryResult ) - { - HBufC *listEntry = FormListBoxEntryFromWordLC( udbEntry.Word() ); - iUDBWords->AppendL( *listEntry ); - CleanupStack::PopAndDestroy( listEntry ); - } - else if ( KErrNotFound != getEntryResult ) - { - //As this is not an empty slot, this could be an error condition - User::Leave(KErrCorrupt); - } - } - iUDBWords->Sort(); - } - -// ----------------------------------------------------------------------------- -// Helper method for listbox string formatting -// ----------------------------------------------------------------------------- -// -HBufC* CAknFepPredOwnWordsModel::FormListBoxEntryFromWordLC( const TDesC& aWord ) - { - _LIT( KListItemPrefix, "\t" ); - TInt length = aWord.Length(); - //add 2 to length of word to store the tab seperator - HBufC* listItem = HBufC::NewLC( length + 2 ); - listItem->Des().Copy( KListItemPrefix() ); - listItem->Des().Append( aWord ); - return ( listItem ); - } - - -//Adding new word -TInt CAknFepPredOwnWordsModel::AddNewWordL( TDesC& aNewWord ) - { - TPtiUserDictionaryEntry udbEntry; - udbEntry.SetWord( aNewWord ); - TInt status = iPtiEngine->AddUserDictionaryEntry( udbEntry ); - if (KErrNone == status || KErrAlreadyExists == status) - { - HBufC *listEntry = FormListBoxEntryFromWordLC( aNewWord ); - //If the word already exists, just move focus to it. - //If it is a new word, add it to the list box items too. - if ( KErrNone == status ) - { - iUDBWords->AppendL( *listEntry ); - iUDBWords->Sort(); - } - TInt selectedWordIndex(-1); - iUDBWords->Find( *listEntry, selectedWordIndex, ECmpNormal ); - CleanupStack::PopAndDestroy( listEntry ); - return selectedWordIndex; - } - else - { - return KErrGeneral; - } - } - -//Removing existing word -TInt CAknFepPredOwnWordsModel::RemoveSelectedWordL( TInt aWordIndex ) - { - TPtiUserDictionaryEntry udbEntry; - TPtrC word = ( (*iUDBWords)[aWordIndex] ).Mid(1); - udbEntry.SetWord( word ); - if ( KErrNone == iPtiEngine->RemoveEntryFromUserDictionary( udbEntry ) ) - { - iUDBWords->Delete( aWordIndex ); - return KErrNone; - } - else - { - return KErrGeneral; - } - } - -//Only to be called if it is known for sure that at least one item is marked/selected -TInt CAknFepPredOwnWordsModel::RemoveSelectedWordsL( const CArrayFix* aSelectedItems ) - { - TPtiUserDictionaryEntry udbEntry; - TInt numOfSelections = aSelectedItems->Count(); - /*TKeyArrayFix actNumKey(0,ECmpTInt); - aSelectedItems->Sort( actNumKey ); - */ - //loop backwards so we don't disturb the indices after deletion - for (TInt i(numOfSelections-1); i >= 0 ; --i ) - { - TInt selectedItem = aSelectedItems->At(i); - TPtrC word = ( (*iUDBWords)[selectedItem] ).Mid(1); - udbEntry.SetWord( word ); - if ( KErrNone == iPtiEngine->RemoveEntryFromUserDictionary( udbEntry ) ) - { - iUDBWords->Delete( selectedItem ); - } - else - { - return KErrGeneral; - } - } - - return KErrNone; - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingData.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingData.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -/* - * ============================================================================ - * Name : CAknFepPredictiveSettingData from AknFepPredictiveSettingData - * ============================================================================ - */ - -#include "AknFepPredictiveSettingData.h" - -CAknFepPredictiveSettingData *CAknFepPredictiveSettingData::NewL() - { - CAknFepPredictiveSettingData *self = CAknFepPredictiveSettingData::NewLC(); - CleanupStack::Pop(self); - return self; - } - -CAknFepPredictiveSettingData *CAknFepPredictiveSettingData::NewLC() - { - CAknFepPredictiveSettingData *self = new (ELeave) CAknFepPredictiveSettingData(); - CleanupStack::PushL(self); - return self; - } - -CAknFepPredictiveSettingData::~CAknFepPredictiveSettingData() - { - } - -CAknFepPredictiveSettingData::CAknFepPredictiveSettingData() - { - } - - - -void CAknFepPredictiveSettingData::LoadL(TInt aAutoWordCompl, - TInt aTypingCorrection, - TInt aNumberCandidates, - TInt aPrimaryCandidate, - TInt aPhysicalKeyboards, - TInt aAWCBitmask) - { - iAutoWordCompl = aAutoWordCompl; - iTypingCorrection = aTypingCorrection; - iNumberCandidates = aNumberCandidates; - iPrimaryCandidate = aPrimaryCandidate; - iPhysicalKeyboards = aPhysicalKeyboards; - iAWCBitmask = aAWCBitmask; - } - -void CAknFepPredictiveSettingData::SaveL() const - { - } -//EOF diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingDialog.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingDialog.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,798 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -/* - * ============================================================================ - * Name : CAknFepPredictiveSettingList from AknFepPredictiveSettingList - * ============================================================================ - */ -#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include "AknFepPredictiveSettingDialog.h" -#include -#include -#include -//#include -#include //CAknTitlePane -#include -#include - -_LIT(KFEPIMPLPREDINPUT_HLP_INPUT, "PREDINPUT_HLP_INPUT"); // - -CAknFepPredictiveSettingDialog *CAknFepPredictiveSettingDialog::NewL(TInt aMenuResId, TInt aConfirmationQueryResId, TInt aTitlePaneResId) - { - CAknFepPredictiveSettingDialog* self = CAknFepPredictiveSettingDialog::NewLC(aMenuResId, aConfirmationQueryResId, aTitlePaneResId); - CleanupStack::Pop(self); - return self; - } - -CAknFepPredictiveSettingDialog *CAknFepPredictiveSettingDialog::NewLC(TInt aMenuResId, TInt aConfirmationQueryResId, TInt aTitlePaneResId) - { - CAknFepPredictiveSettingDialog* self = new (ELeave) CAknFepPredictiveSettingDialog(aConfirmationQueryResId, aTitlePaneResId); - CleanupStack::PushL(self); - self->ConstructL(aMenuResId); - return self; - } - -void CAknFepPredictiveSettingDialog::ConstructL( TInt aMenuTitleResourceId ) - { - CAknDialog::ConstructL(aMenuTitleResourceId); - PrepareStatusPaneL(); - iItemCloseEventCheck = CIdle::NewL(CActive::EPriorityStandard); - } - -CAknFepPredictiveSettingDialog ::CAknFepPredictiveSettingDialog(TInt aConfirmationQueryResId, TInt aTitlePaneResId): - iConfirmationQueryResId(aConfirmationQueryResId), - iPredictiveSettingOffQueryNotShown(ETrue), - iTitlePane(NULL), - iNaviPane(NULL), - iNaviDecoratedTabGroup(NULL), - iLastTitle(NULL), - iStatusTitle(NULL), - iTitlePaneResId(aTitlePaneResId), - iSettingItemInEditingState(EFalse) - { -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, iOriginalKeyboardLayout); -#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - } - -CAknFepPredictiveSettingDialog::~CAknFepPredictiveSettingDialog() - { - TRAP_IGNORE(RestoreStatusPaneL()); - delete iSettingsData; - - delete iItemCloseEventCheck; - iItemCloseEventCheck = NULL; - if (iAknFepRepository) - delete iAknFepRepository; - - delete iLastTitle; - delete iStatusTitle; - } - - -SEikControlInfo CAknFepPredictiveSettingDialog::CreateCustomControlL(TInt /*aControlType*/) -{ - - // construct the data object the settings list will use - iSettingsData = CAknFepPredictiveSettingData::NewL(); - iAknFepRepository = CRepository::NewL(KCRUidAknFep); - ReadSettingsDataL(); - - iSettingsList = CAknFepPredictiveSettingList::NewL(*iSettingsData, *this); - - SEikControlInfo controlInfo; - controlInfo.iFlags = EEikControlHasEars; - controlInfo.iTrailerTextId = 0; - controlInfo.iControl = iSettingsList; - STATIC_CAST(CAknFepPredictiveSettingList*, controlInfo.iControl)->SetContainerWindowL(*this); - - return controlInfo; -} - - -CAknFepPredictiveSettingDialog::TFormControlTypes CAknFepPredictiveSettingDialog::ConvertCustomControlTypeToBaseControlType(TInt /*aControlType*/) const -{ - return EPopfieldDerived; -} - - -TBool CAknFepPredictiveSettingDialog::OkToExitL(TInt aButtonId) -{ - TBool retValue = EFalse; - switch(aButtonId) - { - case EAknSoftkeyBack: - iSettingsList->StoreSettingsL(); - SaveSettingsDataL(); - retValue = ETrue; - break; - - case EAknSoftkeyOptions: - DisplayMenuL(); - break; - - case EAknSoftkeyChange: - EditItemL(EFalse); - break; - } - return retValue; -} - -void CAknFepPredictiveSettingDialog::ProcessCommandL(TInt aCommandId) - { - if(iSettingItemInEditingState && aCommandId == EAknCmdExit) - { - // If we are currently editing the settings item then generate a cancel event - RWsSession& wsSession = CEikonEnv::Static()->WsSession(); - TKeyEvent escapeEvent = {EKeyEscape, EStdKeyEscape, 0, 0}; - TRAP_IGNORE(CEikonEnv::Static()->SimulateKeyEventL(escapeEvent, EEventKey)); - wsSession.Flush(); - // After generating cancel event, start the callback function so the settings - // page is dismissed. - iItemCloseEventCheck->Start( TCallBack(EventCheckCallback, this) ); - return; - } - - // This is TSW eror fixing. - // This function is called by dialog framework, whenever menu item is - // selected. we should have to hide existing display menu first to maitain the - // control stack . - // If user try to stop displaying menu after creating any control - // In that situation whenever application goes to background framework remove the - // control from the stack when try to remove the menubar from control stack. - CAknDialog::ProcessCommandL(aCommandId); - - switch(aCommandId) - { - case EAknFepCmdPredSettingChange: - EditItemL(ETrue); - break; - case EAknCmdHelp: - { - - const TInt KArrayGranularity = 3; - CArrayFix* contexts = - new (ELeave) CArrayFixFlat( KArrayGranularity ); - CleanupStack::PushL ( contexts ); - TUid appuid = { 0x100058EC }; - contexts->AppendL( TCoeHelpContext( appuid, KFEPIMPLPREDINPUT_HLP_INPUT ) ); - CleanupStack::Pop( contexts ); - HlpLauncher::LaunchHelpApplicationL( CEikonEnv::Static()->WsSession(), contexts ); - } - break; - case EAknCmdExit: - // Save the setting and exit application. - iSettingsList->StoreSettingsL(); - SaveSettingsDataL(); - // Pass the EAknCmdExit command to Avkon - // Framework - iAvkonAppUi->ProcessCommandL(aCommandId); - break; - } - } - -void CAknFepPredictiveSettingDialog::ReadSettingsDataL() - { - TInt autoWordCompl = 0; - TInt typingCorrection = 0; - TInt numberCandidates = 0; - TInt primaryCandidate = 0; - TInt physicalKeyboards = 0; - // Read CenRep - if( iAknFepRepository ) - { - iAknFepRepository->Get(KAknFepPredTxtFlagExtension, iPredictiveTextFlag); - iAknFepRepository->Get(KAknFepAutoCompleteFlag, autoWordCompl); - iAknFepRepository->Get(KAknFepTypingCorrectionLevel, typingCorrection); - iAknFepRepository->Get(KAknFepNumberCandidateFlag, numberCandidates); - iAknFepRepository->Get(KAknFepPrimaryCandidateFlag, primaryCandidate); - iAknFepRepository->Get(KAknFepPhysicalKeyboards, physicalKeyboards); - } - - // Parse keyboard dependent settings for current keyboard from bitmask - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout; - TInt autoTmp = autoWordCompl; - - // This part of code for error fixing: - // IF ITI is off for QWERTY/ITU-T iPredictiveTextFlag = 0 - // IF ITI is on for ITU-T iPredictiveTextFlag = 1 - // IF ITI is on for QWERTY iPredictiveTextFlag = 2 - - switch(layout) - { - case EPtiKeyboardNone: - break; - case EPtiKeyboard12Key: - autoTmp &= EKeyboardStyle12Key; - iPredictiveTextFlag &= EKeyboardStyle12Key; - break; - case EPtiKeyboardHalfQwerty: - autoTmp &= EKeyboardStyleHalfQwerty; - iPredictiveTextFlag &= EKeyboardStyleHalfQwerty; - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - autoTmp &= EKeyboardStyleQwerty; - iPredictiveTextFlag &= EKeyboardStyleQwerty; - break; - default: - break; - } - - //load setting data - iSettingsData->LoadL(( autoTmp ? 1 : 0), typingCorrection, numberCandidates, - primaryCandidate, physicalKeyboards, autoWordCompl); - - } - - -void CAknFepPredictiveSettingDialog::SaveSettingsDataL() const - { - // Read setting data and fill CenRep. - if( iAknFepRepository ) - { - TInt autoFlag = 0; - iAknFepRepository->Get(KAknFepAutoCompleteFlag, autoFlag); - TInt predFlag = 0; - iAknFepRepository->Get(KAknFepPredTxtFlagExtension, predFlag); - - // Parse keyboard dependent settings for current keyboard from bitmask - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout; - switch(layout) - { - case EPtiKeyboardNone: - break; - case EPtiKeyboard12Key: - if (iSettingsData->AutoWordCompl()) - { - autoFlag |= EKeyboardStyle12Key; - } - else - { - autoFlag &= ~EKeyboardStyle12Key; - } - break; - case EPtiKeyboardHalfQwerty: - if (iSettingsData->AutoWordCompl()) - { - autoFlag |= EKeyboardStyleHalfQwerty; - } - else - { - autoFlag &= ~EKeyboardStyleHalfQwerty; - } - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - - case EPtiKeyboardCustomQwerty: - if (iSettingsData->AutoWordCompl()) - { - autoFlag |= EKeyboardStyleQwerty; - } - else - { - autoFlag &= ~EKeyboardStyleQwerty; - } - break; - default: - break; - } - - if(iSettingsList->DeviceHasMultipleKeyboards()) - { - iAknFepRepository->Set(KAknFepAutoCompleteFlag, iSettingsData->AWCBitmask()); - } - else - { - iAknFepRepository->Set(KAknFepAutoCompleteFlag, autoFlag); - } - iAknFepRepository->Set(KAknFepTypingCorrectionLevel, iSettingsData->TypingCorrection()); - iAknFepRepository->Set(KAknFepNumberCandidateFlag, iSettingsData->NumberCandidates()); - iAknFepRepository->Set(KAknFepPrimaryCandidateFlag, iSettingsData->PrimaryCandidate()); - } - } - -void CAknFepPredictiveSettingDialog::SaveCurrentSettingsDataL() const - { - // Read setting data and fill CenRep. - if(iAknFepRepository) - { - if(EAutoWordCompletion == iSettingsList->ListBox()->CurrentItemIndex()) - { - TInt autoFlag = 0; - iAknFepRepository->Get(KAknFepAutoCompleteFlag, autoFlag); - TInt predFlag = 0; - iAknFepRepository->Get(KAknFepPredTxtFlagExtension, predFlag); - - // Parse keyboard dependent settings for current keyboard from bitmask - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout; - switch(layout) - { - case EPtiKeyboardNone: - break; - case EPtiKeyboard12Key: - if (iSettingsData->AutoWordCompl()) - { - autoFlag |= EKeyboardStyle12Key; - } - else - { - autoFlag &= ~EKeyboardStyle12Key; - } - break; - case EPtiKeyboardHalfQwerty: - if (iSettingsData->AutoWordCompl()) - { - autoFlag |= EKeyboardStyleHalfQwerty; - } - else - { - autoFlag &= ~EKeyboardStyleHalfQwerty; - } - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - if (iSettingsData->AutoWordCompl()) - { - autoFlag |= EKeyboardStyleQwerty; - } - else - { - autoFlag &= ~EKeyboardStyleQwerty; - } - break; - default: - break; - } - - if(iSettingsList->DeviceHasMultipleKeyboards()) - { - iAknFepRepository->Set(KAknFepAutoCompleteFlag, iSettingsData->AWCBitmask()); - } - else - { - iAknFepRepository->Set(KAknFepAutoCompleteFlag, autoFlag); - } - } - else if(ETypingCorrectionLevel == iSettingsList->ListBox()->CurrentItemIndex()) - { - iAknFepRepository->Set(KAknFepTypingCorrectionLevel, iSettingsData->TypingCorrection()); - } - else if(ENumberCandidate == iSettingsList->ListBox()->CurrentItemIndex()) - { - iAknFepRepository->Set(KAknFepNumberCandidateFlag, iSettingsData->NumberCandidates()); - } - else if(EPrimaryCandidate == iSettingsList->ListBox()->CurrentItemIndex()) - { - iAknFepRepository->Set(KAknFepPrimaryCandidateFlag, iSettingsData->PrimaryCandidate()); - } - } - } - - -void CAknFepPredictiveSettingDialog::EditItemL(TBool aCalledFromMenu) - { - TInt prevSettings = CurrentSettings(); - - // Set the flag as we are currently editing the settings item - iSettingItemInEditingState = ETrue; - - iSettingsList->EditCurrentItemL(aCalledFromMenu); - if(iSettingItemInEditingState == EFalse) - { - User::Leave(KErrNone); - } - LaunchPredictiveSettingOffQueryIfNecessaryL(prevSettings); - SaveCurrentSettingsDataL(); - - //Reset the flag as the current item edit is over - iSettingItemInEditingState = EFalse; - } - -void CAknFepPredictiveSettingDialog::LaunchPredictiveSettingOffQueryIfNecessaryL(TInt prevSettings) - { - if(iPredictiveSettingOffQueryNotShown) - { - if(iAknFepRepository) - { - iAknFepRepository->Get(KAknFepPredTxtFlagExtension,iPredictiveTextFlag); - } - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout; - TBool QueryNeeded = EFalse; - if(iSettingsList->DeviceHasMultipleKeyboards()) - { - TInt activateITIForKbd = 0; - if(EAutoWordCompletion == iSettingsList->ListBox()->CurrentItemIndex() && - iSettingsData->AWCBitmask() != prevSettings & 0xF) - { - // if AWC is ON and Prev.Settings of AWC is not ON and ITI is OFF - if((iSettingsData->AWCBitmask() & EKeyboardStyle12Key) && - ((prevSettings & 0xF) & EKeyboardStyle12Key)!=1 && - (iPredictiveTextFlag & EKeyboardStyle12Key) == 0) - { - QueryNeeded = ETrue; - activateITIForKbd |= EKeyboardStyle12Key ; - if(layout == EPtiKeyboard12Key) - iPredictiveSettingOffQueryNotShown = EFalse; - } - // if AWC is ON and Prev.Settings of AWC is not ON and ITI is OFF - if((iSettingsData->AWCBitmask() & EKeyboardStyleQwerty) && - ((prevSettings & 0xF) & EKeyboardStyleQwerty)!=2 && - (iPredictiveTextFlag & EKeyboardStyleQwerty) == 0) - { - QueryNeeded = ETrue; - activateITIForKbd |= EKeyboardStyleQwerty ; - if(layout == EKeyboardStyleQwerty) - iPredictiveSettingOffQueryNotShown = EFalse; - } - if((iSettingsData->AWCBitmask() & EKeyboardStyleHalfQwerty) && - ((prevSettings & 0xF) & EKeyboardStyleHalfQwerty)!=4 && - (iPredictiveTextFlag & EKeyboardStyleHalfQwerty) == 0) - { - QueryNeeded = ETrue; - activateITIForKbd |= EKeyboardStyleHalfQwerty ; - if(layout == EKeyboardStyleHalfQwerty) - iPredictiveSettingOffQueryNotShown = EFalse; - } - } - // if Prev.Setting of TypingCorrection != Curr.Settng of TypingCorrection and - // Current TypingCorrection != OFF and ITI is OFF - else if(iSettingsData->iTypingCorrection != ((prevSettings >> 4)&0xF) && - ETypingCorrectionLevel == iSettingsList->ListBox()->CurrentItemIndex() && - 0 != iSettingsData->TypingCorrection() && - (iPredictiveTextFlag & EKeyboardStyleQwerty) == 0) - { - QueryNeeded = ETrue; - iPredictiveSettingOffQueryNotShown = EFalse; - activateITIForKbd |= EKeyboardStyleQwerty ; - } - // if Prev.Setting of NumberCandidate != Curr.Settng of NumberCandidate and - // Current NumberCandidate is ON and ITI is OFF - else if(iSettingsData->iNumberCandidates != ((prevSettings >> 8)&0xF) && - ENumberCandidate == iSettingsList->ListBox()->CurrentItemIndex() && - 1 == iSettingsData->NumberCandidates() && - (iPredictiveTextFlag & EKeyboardStyleQwerty) == 0) - { - QueryNeeded = ETrue; - iPredictiveSettingOffQueryNotShown = EFalse; - activateITIForKbd |= EKeyboardStyleQwerty ; - } - - if(QueryNeeded) - { - CAknQueryDialog* dlg = CAknQueryDialog::NewL(); - if(dlg->ExecuteLD(iConfirmationQueryResId)) - { - if(activateITIForKbd & EKeyboardStyle12Key) - { - iPredictiveTextFlag |= EKeyboardStyle12Key; - } - - if(activateITIForKbd & EKeyboardStyleQwerty) - { - iPredictiveTextFlag |= EKeyboardStyleQwerty; - } - if(activateITIForKbd & EKeyboardStyleHalfQwerty) - { - iPredictiveTextFlag |= EKeyboardStyleHalfQwerty; - } - } - } - } - else - { - TInt predFlag = 0; - iAknFepRepository->Get(KAknFepPredTxtFlagExtension, predFlag); - TInt autoFlag = 0; - iAknFepRepository->Get(KAknFepAutoCompleteFlag, autoFlag); - - switch(layout) - { - case EPtiKeyboardNone: - break; - case EPtiKeyboard12Key: - autoFlag = ((autoFlag & EPtiKeyboard12Key)!=0); - // if ITI is ON for QWERTY then iPredictiveTextFlag = 2; In that case we have to find out the ITI state for ITU-T - if (!( iPredictiveTextFlag & EKeyboardStyle12Key )) - { - predFlag |= EKeyboardStyle12Key; - } - - break; - case EPtiKeyboardHalfQwerty: - autoFlag = ((autoFlag & EKeyboardStyleHalfQwerty)!=0); - if (!(iPredictiveTextFlag & EKeyboardStyleHalfQwerty )) - { - predFlag |= EKeyboardStyleHalfQwerty; - } - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - autoFlag = ((autoFlag & EKeyboardStyleQwerty)!=0); - // if ITI is ON for ITU-T then iPredictiveTextFlag = 1; In that case we have to find out the ITI state for QWERTY - if (!(iPredictiveTextFlag & EKeyboardStyleQwerty )) - { - predFlag |= EKeyboardStyleQwerty; - } - break; - default: - break; - } - - - if (predFlag != iPredictiveTextFlag) - { - switch(iSettingsList->ListBox()->CurrentItemIndex()) - { - case EAutoWordCompletion: - if(iSettingsData->iAutoWordCompl != autoFlag && - 1 == iSettingsData->AutoWordCompl()) - { - QueryNeeded = ETrue; - } - break; - case ETypingCorrectionLevel: - if(iSettingsData->iTypingCorrection != ((prevSettings >> 4)&0xF) && - 0 != iSettingsData->TypingCorrection()) - { - QueryNeeded = ETrue; - } - break; - case ENumberCandidate: - if(iSettingsData->iNumberCandidates != ((prevSettings >> 8)&0xF) && - 0 != iSettingsData->NumberCandidates()) - { - QueryNeeded = ETrue; - } - break; - } - - if(QueryNeeded) - { - CAknQueryDialog* dlg = CAknQueryDialog::NewL(); - if(dlg->ExecuteLD(iConfirmationQueryResId)) - iPredictiveTextFlag = predFlag; - - iPredictiveSettingOffQueryNotShown = EFalse; - } - } - } - if(iAknFepRepository && QueryNeeded) - { - iAknFepRepository->Set(KAknFepPredTxtFlagExtension,iPredictiveTextFlag); - iAknFepRepository->Set(KAknFepPredTxtFlag, iPredictiveTextFlag != 0); // For backwards compatibility - } - } - } -TInt CAknFepPredictiveSettingDialog::CurrentSettings() - { - TInt settings = 0; - //settings are the values of first 16 bits - // settings & 0xF = iAWCBitmask - // (settings >> 4) & 0xF = iNumberCandidates - // (settings >> 8) & 0xF = iTypingCorrection - // (settings >> 12) & 0xF = iPrimaryCandidate - settings = (iSettingsData->iPrimaryCandidate << 12) | - (iSettingsData->iNumberCandidates << 8) | - (iSettingsData->iTypingCorrection << 4) | - (iSettingsData->AWCBitmask()); - return settings; - } - -// This part of code for error fixing multiple layout. -void CAknFepPredictiveSettingDialog::HandleResourceChange(TInt aType) - { - - CAknDialog::HandleResourceChange(aType); - - // Check for keyboard layout change - // If layout is changed, load the setting information based on - // Layout. - if(aType==KEikDynamicLayoutVariantSwitch) - { - - // Read the Predictive setting - if(iAknFepRepository) - { - iAknFepRepository->Get(KAknFepPredTxtFlagExtension, iPredictiveTextFlag); - } - - // Adjust predictive flag after layout switch - TInt keyboardLayout = EPtiKeyboardNone; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - //settings page not to be retained on change of keyboard layout for Touch Input. -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - if (iOriginalKeyboardLayout != keyboardLayout) - { - if(iSettingItemInEditingState) - { - // If we are currently editing the settings item then generate a cancel event - // and start the scheduler so as to close the settings page - // when the blocking call completes. - RWsSession& wsSession = CEikonEnv::Static()->WsSession(); - TKeyEvent escapeEvent = {EKeyEscape, EStdKeyEscape, 0, 0}; - TRAP_IGNORE(CEikonEnv::Static()->SimulateKeyEventL(escapeEvent, EEventKey)); - wsSession.Flush(); - iItemCloseEventCheck->Start( TCallBack(EventCheckCallback, this) ); - } - else - { - // In case the current settings item is not in editing state then directly - // close the settings page. - TRAP_IGNORE(TryExitL(EAknSoftkeyBack)); - } - return; - } -#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - switch(keyboardLayout) - { - case EPtiKeyboard12Key: - // Dictionary is ON for ITU-T - iPredictiveTextFlag &= EKeyboardStyle12Key; - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardHalfQwerty: - case EPtiKeyboardCustomQwerty: - // // Dictionary is ON for QWERTY - iPredictiveTextFlag &= EKeyboardStyleQwerty; - case EPtiKeyboardNone: - default: - break; - } - TRAP_IGNORE(SetTitlePaneL()); - } - } - -TInt CAknFepPredictiveSettingDialog::EventCheckCallback(TAny* aObj) - { - TRAP_IGNORE(static_cast(aObj)->AttemptToExitL()); - return KErrNone; - } - -void CAknFepPredictiveSettingDialog::AttemptToExitL() - { - if(iItemCloseEventCheck->IsActive()) - { - iItemCloseEventCheck->Cancel(); - } - // iSettingItemInEditingState sets before the blocking call of editing item state and - // gets reset after the blocking call. - if (!iSettingItemInEditingState) - { - // In case we are here, then we need to close the settings item because of layout change - TRAP_IGNORE(TryExitL(EAknSoftkeyBack)); - } - else - { - // Because of priority we hit the scheduler first and then the blocking call gets - // executed. To handle such a scenario, restart the scheduler. - iItemCloseEventCheck->Start( TCallBack(EventCheckCallback, this) ); - } - } - -void CAknFepPredictiveSettingDialog::PrepareStatusPaneL() - { - CCoeEnv* coeEnv = CCoeEnv::Static(); - CAknAppUi* appUi = static_cast(coeEnv->AppUi()); - CEikStatusPane* statusPane = appUi->StatusPane(); - - iTitlePane = static_cast( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - - const TDesC* appTitle = iTitlePane->Text(); - iLastTitle = appTitle->AllocL(); - CleanupStack::PushL(iLastTitle); - - iStatusTitle = StringLoader::LoadLC( iTitlePaneResId,coeEnv); - SetTitlePaneL(); - CleanupStack::Pop(iStatusTitle); - CleanupStack::Pop(iLastTitle); - - iNaviPane = static_cast(statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); - - if(iNaviPane) - { - // Create a new tab Groub for Settings Page and push it on the Navigation Pane - // This is done so as to avoid previous page Tab Group to be used - iNaviDecoratedTabGroup = iNaviPane->CreateTabGroupL(); - if(iNaviDecoratedTabGroup) - { - // Tab Group visibility is set to false - iNaviDecoratedTabGroup->MakeVisible(EFalse); - iNaviPane->PushL(*iNaviDecoratedTabGroup); - } - } - } - -void CAknFepPredictiveSettingDialog::SetTitlePaneL() - { - iTitlePane->SetTextL( *iStatusTitle ); - } - -void CAknFepPredictiveSettingDialog::RestoreStatusPaneL() - { - iTitlePane->SetTextL( *iLastTitle ); - - if(iNaviPane && iNaviDecoratedTabGroup) - { - // Pop the Tab Group created for the Settings page - iNaviPane->Pop(); - delete iNaviDecoratedTabGroup; - iNaviDecoratedTabGroup = NULL; - } - } - -void CAknFepPredictiveSettingDialog::HandlePointerEventL(const TPointerEvent& aPointerEvent) - { - if ( aPointerEvent.iType == TPointerEvent::EDrag ) - { - iSettingsList->HandlePointerEventL(aPointerEvent); - } - else - { - CAknDialog::HandlePointerEventL(aPointerEvent); - } - } - -/** - *From MEikCommandObserver - */ -void CAknFepPredictiveSettingDialog::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane) - { - if ( iAvkonAppUi->IsSingleClickCompatible() ) - { - if ( R_PREDICTIVESETTINGDIALOG_MENU == aResourceId ) - { - aMenuPane->SetItemDimmed(EAknFepCmdPredSettingChange, ETrue); - } - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingList.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepPredictiveSettingList.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,407 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -/* - * ============================================================================ - * Name : CAknFepPredictiveSettingList from AknFepPredictiveSettingList - * ============================================================================ - */ - -#include -#include -#include -#include -#include -#include -#include - -#include "AknFepPredictiveSettingList.h" -#include "AknFepPredictiveSettingData.h" -#include "AknFepPredictiveSettingDialog.h" - -CAknFepMultiSelectionSettingItem::CAknFepMultiSelectionSettingItem ( - TInt aResourceId, CAknFepPredictiveSettingData &aData, CCoeEnv* aCoeEnv ) - : CAknBigSettingItemBase(aResourceId), iData(aData), iCoeEnv(aCoeEnv) - { - iItutIndex = -1; - iQwertyIndex = -1; - iHalfQwertyIndex = -1; - } - -CAknFepMultiSelectionSettingItem::~CAknFepMultiSelectionSettingItem() - { - if (iSelection) - { - iSelection->ResetAndDestroy(); - } - delete iSelection; - } - -void CAknFepMultiSelectionSettingItem::EditItemL( TBool /*aCalledFromMenu*/ ) - { - if(!iSelection) - { - iSelection = CreateSelectionItemListL(); - } - CAknCheckBoxSettingPage* settingPage = - new( ELeave) CAknCheckBoxSettingPage( R_AUTOWORDCOMPLMULTI_PAGE, iSelection); - - SetSettingPage(settingPage); - - if( settingPage->ExecuteLD(CAknSettingPage::EUpdateWhenAccepted)) - { - StoreL(); - } - else - { - TInt physicalKeyboards = iData.PhysicalKeyboards(); - - if( iItutIndex > -1 ) - { - TBool selected = iData.AWCBitmask() & EKeyboardStyle12Key ? ETrue : EFalse; - iSelection->At(iItutIndex)->SetSelectionStatus( selected ); - } - - if( iQwertyIndex > -1 ) - { - TBool selected = iData.AWCBitmask() & EKeyboardStyleQwerty ? ETrue : EFalse; - iSelection->At(iQwertyIndex)->SetSelectionStatus( selected ); - } - - if( iHalfQwertyIndex > -1 ) - { - TBool selected = iData.AWCBitmask() & EKeyboardStyleHalfQwerty ? ETrue : EFalse; - iSelection->At(iHalfQwertyIndex)->SetSelectionStatus( selected ); - } - } - SetSettingPage(0); - } - -void CAknFepMultiSelectionSettingItem::StoreL() - { - if(iSelection) - { - if ( iItutIndex > -1 ) - { - if(iSelection->At(iItutIndex)->SelectionStatus()) - { - iData.AWCBitmask() |= EKeyboardStyle12Key; - } - else - { - iData.AWCBitmask() &= ~EKeyboardStyle12Key; - } - } - - if( iHalfQwertyIndex > -1 ) - { - if(iSelection->At(iHalfQwertyIndex)->SelectionStatus()) - { - iData.AWCBitmask() |= EKeyboardStyleHalfQwerty; - } - else - { - iData.AWCBitmask() &= ~EKeyboardStyleHalfQwerty; - } - } - if ( iQwertyIndex > -1 ) - { - if(iSelection->At(iQwertyIndex)->SelectionStatus()) - { - iData.AWCBitmask() |= EKeyboardStyleQwerty; - } - else - { - iData.AWCBitmask() &= ~EKeyboardStyleQwerty; - } - } - } - } - -void CAknFepMultiSelectionSettingItem::LoadL() - { - if(iSelection) - { - iSelection->ResetAndDestroy(); - delete iSelection; - iSelection = NULL; - } - iSelection = CreateSelectionItemListL(); - } - -CSelectionItemList* CAknFepMultiSelectionSettingItem::CreateSelectionItemListL() - { - iItutIndex = -1; - iQwertyIndex = -1; - iHalfQwertyIndex = -1; - - CSelectionItemList* selection = new (ELeave) CSelectionItemList(2); - CleanupStack::PushL( selection ); - - TInt physicalKeyboards = iData.PhysicalKeyboards(); - TInt count = 0; - - TInt qwertyMask = EPhysicalKeyboardQwerty4x12 | EPhysicalKeyboardQwerty4x10 | - EPhysicalKeyboardQwerty3x11 | EPhysicalKeyboardCustomQwerty; - - TBool supportVFSQ = FeatureManager::FeatureSupported( KFeatureIdVirtualFullscrQwertyInput ); - - if ( physicalKeyboards & EPhysicalKeyboard12key ) //itut - { - TBool active = iData.AWCBitmask() & EKeyboardStyle12Key ? ETrue : EFalse; - HBufC* text = iCoeEnv->AllocReadResourceLC( R_AKNFEP_PRED_SETTING_ITUT ); - iItutIndex = count++; - - CSelectableItem* item = new (ELeave) CSelectableItem( *text, active ); - CleanupStack::PushL( item ); - item->ConstructL(); - selection->AppendL( item ); - CleanupStack::Pop( item ); - CleanupStack::PopAndDestroy( text ); - } - - if ( ( physicalKeyboards & qwertyMask ) || supportVFSQ ) //4x12,4x10,3x11,custom, FSQ - { - TBool active = iData.AWCBitmask() & EKeyboardStyleQwerty ? ETrue : EFalse; - HBufC* text = iCoeEnv->AllocReadResourceLC( R_AKNFEP_PRED_SETTING_QWERTY ); - iQwertyIndex = count++; - - CSelectableItem* item = new (ELeave) CSelectableItem( *text, active ); - CleanupStack::PushL( item ); - item->ConstructL(); - selection->AppendL( item ); - CleanupStack::Pop( item ); - CleanupStack::PopAndDestroy( text ); - } - - if ( physicalKeyboards & EPhysicalKeyboardHalfQwerty ) //half qwerty - { - TBool active = iData.AWCBitmask() & EKeyboardStyleHalfQwerty ? ETrue : EFalse; - HBufC* text = iCoeEnv->AllocReadResourceLC( R_AKNFEP_PRED_SETTING_HALF_QWERTY ); - iHalfQwertyIndex = count++; - - CSelectableItem* item = new (ELeave) CSelectableItem( *text, active ); - CleanupStack::PushL( item ); - item->ConstructL(); - selection->AppendL( item ); - CleanupStack::Pop( item ); - CleanupStack::PopAndDestroy( text ); - } - - CleanupStack::Pop( selection ); - - return selection; - } - -CAknFepPredictiveSettingList *CAknFepPredictiveSettingList::NewL(CAknFepPredictiveSettingData &aData, CAknFepPredictiveSettingDialog &aDialog) - { - CAknFepPredictiveSettingList* self = CAknFepPredictiveSettingList::NewLC(aData, aDialog); - CleanupStack::Pop(self); - return self; - } - -CAknFepPredictiveSettingList *CAknFepPredictiveSettingList::NewLC(CAknFepPredictiveSettingData &aData, CAknFepPredictiveSettingDialog &aDialog) - { - CAknFepPredictiveSettingList* self = new (ELeave) CAknFepPredictiveSettingList(aData, aDialog); - CleanupStack::PushL(self); - return self; - } - -CAknFepPredictiveSettingList::CAknFepPredictiveSettingList(CAknFepPredictiveSettingData &aData, CAknFepPredictiveSettingDialog &aDialog) : - CAknSettingItemList(), - iSettingsData(aData), - iSettingsDialog(aDialog) - { - } - -CAknFepPredictiveSettingList::~CAknFepPredictiveSettingList() - { - // no specific destruction code required - no owned data - } - - -void CAknFepPredictiveSettingList::SizeChanged() - { - // if size changes, make sure component takes whole available space - CEikFormattedCellListBox *listbox = ListBox(); - - if (listbox) - { - listbox->SetRect(Rect()); - } - } - -void CAknFepPredictiveSettingList::HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType) - { - TBool isSingleClick = iAvkonAppUi->IsSingleClickCompatible(); - if( aEventType == EEventEnterKeyPressed || aEventType == EEventItemDoubleClicked - || ( isSingleClick && ( aEventType == EEventItemSingleClicked ))) - { - iSettingsDialog.EditItemL(EFalse);//EditCurrentItemL(EFalse); - } - else - { - CAknSettingItemList::HandleListBoxEventL( aListBox,aEventType ); - } - } - -void CAknFepPredictiveSettingList::EditCurrentItemL(TBool aCalledFromMenu) - { - // invoke EditItemL on the current item - TInt index = SettingItemArray()->ItemIndexFromVisibleIndex(ListBox()->CurrentItemIndex()); - - EditItemL(index, aCalledFromMenu); // invoked from menu,or not - - StoreSettingsL(); - } - -CAknSettingItem * CAknFepPredictiveSettingList::CreateSettingItemL (TInt aIdentifier) - { - // method is used to create specific setting item as required at run-time. - // aIdentifier is used to determine what kind of setting item should be - // created - CAknSettingItem* settingItem = NULL; - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - switch (aIdentifier) - { - case EAknFepCmdPredAutoComplSetting: - settingItem = new (ELeave) CAknBinaryPopupSettingItem ( - aIdentifier, iSettingsData.AutoWordCompl()); - if(DeviceHasMultipleKeyboards()) - { - settingItem->SetHidden(ETrue); - } - break; - case EAknFepCmdPredAutoComplMultiSetting: - settingItem = new (ELeave) CAknFepMultiSelectionSettingItem ( - aIdentifier, iSettingsData, iCoeEnv ); - if(!DeviceHasMultipleKeyboards()) - { - settingItem->SetHidden(ETrue); - } - break; - case EAknFepCmdPredNumberCandidateSetting: - settingItem = new (ELeave) CAknBinaryPopupSettingItem ( - aIdentifier, - iSettingsData.NumberCandidates()); - if(keyboardLayout == EPtiKeyboard12Key || keyboardLayout == EPtiKeyboardHalfQwerty) - settingItem->SetHidden(ETrue); - break; - case EAknFepCmdPredTypingCorrectionSetting: - settingItem = new (ELeave) CAknEnumeratedTextPopupSettingItem ( - aIdentifier, - iSettingsData.TypingCorrection()); - // Disabled for ITU-T - if(keyboardLayout == EPtiKeyboard12Key || keyboardLayout == EPtiKeyboardHalfQwerty) - settingItem->SetHidden(ETrue); - break; - case EAknFepCmdPredPrimaryCandidateSetting: - settingItem = new (ELeave) CAknBinaryPopupSettingItem ( - aIdentifier, - iSettingsData.PrimaryCandidate()); - // Disabled for Half Qwerty and ITU-T - if(keyboardLayout == EPtiKeyboardHalfQwerty || - keyboardLayout == EPtiKeyboard12Key) - settingItem->SetHidden(ETrue); - break; - default: - break; - } - - return settingItem; - } - -TBool CAknFepPredictiveSettingList::DeviceHasMultipleKeyboards() - { - TInt physicalKeyboards = iSettingsData.PhysicalKeyboards(); - TBool firstFound = EFalse; - for(TUint i = 0x01; i <= 0xF0; i = i << 1) - { - if(physicalKeyboards & i) - { - if (firstFound) - { - return ETrue; - } - else - { - firstFound = ETrue; - } - } - } - return EFalse; - } - -void CAknFepPredictiveSettingList::HandleResourceChange(TInt aType) - { - CAknSettingItemList::HandleResourceChange(aType); - // Check for keyboard layout change - // If layout is changed, close settings with information note - if(aType==KEikDynamicLayoutVariantSwitch) - { - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - if(keyboardLayout == EPtiKeyboard12Key) - { -#ifndef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - // Adding this under the flag would avoid flickering as settings page will be - // dismissed if __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ is defined - // Number candidate - SettingItemArray()->At(2)->SetHidden(ETrue); - // Typing correction - SettingItemArray()->At(3)->SetHidden(ETrue); - // Primary Candidate - SettingItemArray()->At(4)->SetHidden(ETrue); -#endif - } - else if (keyboardLayout == EPtiKeyboardHalfQwerty) - { - // Number candidate - SettingItemArray()->At(2)->SetHidden(ETrue); - // Typing correction - SettingItemArray()->At(3)->SetHidden(ETrue); - // Primary Candidate - SettingItemArray()->At(4)->SetHidden(ETrue); - } - else - { - // Number candidate - SettingItemArray()->At(2)->SetHidden(EFalse); - // Typing correction - SettingItemArray()->At(3)->SetHidden(EFalse); - // Primary Candidate - SettingItemArray()->At(4)->SetHidden(EFalse); - } - - TRAP_IGNORE( - { - HandleChangeInItemArrayOrVisibilityL(); - }); - - } - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepQuery.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepQuery.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#include -#include "AknFepQuery.h" -#include //FeatureManager - -CAknFepTextQueryDialog::CAknFepTextQueryDialog(TDes& aDataText, CAknEdwinState& aEditorState, - const TTone aTone, const TInt aEditorFlag) : - CAknTextQueryDialog(aDataText, aTone), - iUnderlyingEditorState(aEditorState), - iEditorFlag(aEditorFlag) - { - } - -CAknFepTextQueryDialog::~CAknFepTextQueryDialog() - { - } - -void CAknFepTextQueryDialog::PreLayoutDynInitL() - { - CAknTextQueryDialog::PreLayoutDynInitL(); - - // need to set query editor's case and sct resource based on editor present when this is launched - CAknQueryControl* ctrl=STATIC_CAST(CAknQueryControl*, ControlOrNull(EGeneralQuery)); - CEikEdwin* editor=STATIC_CAST(CEikEdwin*, ctrl->ControlByLayoutOrNull(EDataLayout)); - if (editor) - { - if (iEditorFlag) - { - editor->SetAknEditorFlags(editor->AknEdwinFlags() | iEditorFlag ); - } - TInt currentCase = iUnderlyingEditorState.CurrentCase(); - if (currentCase != 0) - { - editor->SetAknEditorCase(iUnderlyingEditorState.CurrentCase()); - } - else - { - editor->SetAknEditorCase(EAknEditorUpperCase); - } - if( iUnderlyingEditorState.Flags() & EAknEditorFlagLatinInputModesOnly ) - { - editor->SetAknEditorFlags(editor->AknEdwinFlags() | EAknEditorFlagLatinInputModesOnly); - } - if (FeatureManager::FeatureSupported(KFeatureIdJapanese)) - { - editor->SetAknEditorFlags(editor->AknEdwinFlags() | EAknEditorFlagLatinInputModesOnly); - } - TInt underlyingEditorSCTResId=iUnderlyingEditorState.SpecialCharacterTableResourceId(); - if (FeatureManager::FeatureSupported(KFeatureIdChinese)) - { - if (!underlyingEditorSCTResId || underlyingEditorSCTResId == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG) - { - underlyingEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE; - } - } - else if (!underlyingEditorSCTResId) - { - underlyingEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG; - } - editor->SetAknEditorSpecialCharacterTable(underlyingEditorSCTResId); - } - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlCandidatePane.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlCandidatePane.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1172 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlCandidatePane methods. -* -*/ - - - - - - - - - - - - -#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#endif -#include -#include -#include -#include -#include - -#include -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlCandidatePane.h" -#include "AknFepUIAvkonCtrlCandidateSelected.h" -#include "aknfepchineseuidataconv.h" -#include "aknfepuilayoutdatamgr.h" - - -#include "data_caging_path_literals.hrh" - -const TInt CandidateCountLeft = 10; - -_LIT(KFepUiControlsBitmapFile, "aknfepuictrls.mbm"); - -CAknFepUICtrlCandidatePane* CAknFepUICtrlCandidatePane::NewL(RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr) - { - CAknFepUICtrlCandidatePane* self = new(ELeave) CAknFepUICtrlCandidatePane( aLafDataMgr ); - CleanupStack::PushL(self); - self->ConstructL(aParent); - CleanupStack::Pop(); - return self; - } - -CAknFepUICtrlCandidatePane::~CAknFepUICtrlCandidatePane() - { - delete iCandidateSelected; - delete iNaviArrowBitmapLeft; - delete iNaviArrowBitmapLeftMask; - delete iNaviArrowBitmapRight; - delete iNaviArrowBitmapRightMask; - delete iNaviArrowBitmapUp; - delete iNaviArrowBitmapUpMask; - delete iNaviArrowBitmapDown; - delete iNaviArrowBitmapDownMask; - if(iCandidateArray) - { - iCandidateArray->Reset(); - delete iCandidateArray; - } - iCandidateLabelArray.ResetAndDestroy(); - iOrdinalLabelArray.ResetAndDestroy(); - iCandidateModeArray.Reset(); - iPages.Reset(); - } - -const TDesC& CAknFepUICtrlCandidatePane::TextBuffer() const - { - return iBuffer; - } - -void CAknFepUICtrlCandidatePane::SetCandidateBuffer(const TDesC& aBuffer) - { - TInt newLength = aBuffer.Length(); - TInt oldLength = iBuffer.Length(); - if(newLength > EMaxCandidates) - { - newLength = EMaxCandidates; - } - if(newLength - 1 < iSelected) - { - // as far as the client is concerned, they have removed the character that was selected - // therefore we must now hide the selected candidate, although the highlighting - // state remains unchanged - iCandidateSelected->MakeVisible(EFalse); - } - else - { - if(iHighlighted) - { - // make sure that the candidate is visible, as the selection is now - // within a visible range (it might have been hidden last time - // the buffer was set) - iCandidateSelected->MakeVisible(ETrue); - } - } - - TPtrC newText = aBuffer.Left(newLength); - TPtr ptr = iBuffer.Des(); - if(ptr != newText) - { - for(TInt i = 0; i < newLength; i++) - { - TBool valueChanged = ETrue; - TPtrC newChar = aBuffer.Mid(i, EOneCandidate); - if(i < oldLength) - { - TPtrC oldChar = iBuffer.Mid(i, EOneCandidate); - if(newChar == oldChar) - { - valueChanged = EFalse; - } - } - // only update and redraw label background if the value has changed - if(valueChanged) - { - // we have already allocated enough memory for this - CEikLabel* candidateLabel = iCandidateLabelArray[i]; - TRAP_IGNORE(candidateLabel->SetTextL(newChar)); - - // need to update the character if it is in the current selected candidate - if(i == iSelected) - { - iCandidateSelected->SetText(newChar); - iCandidateSelected->SetOrdinal(i + 1); - DrawDeferred(); - } - if(i < iVisibleCount) - { - // only redraw characters that are visible - TRect rect = candidateLabel->Rect(); - Window().Invalidate(rect); - } - } - } - ptr.Copy(newText); - LayoutLabels(); - LayoutCandidateSelected(); - iVisibleCount = newLength; - UpdateLabelVisibility(); - } - } - -CDesCArrayFlat* CAknFepUICtrlCandidatePane::CandidateArray(void) - { - return iCandidateArray; - } - -void CAknFepUICtrlCandidatePane::SetCandidateBuffer(void) - { - if(iPages.Count() == 0) - { - return; - } - TPage curPage = iPages[iCurDisplayPage]; - iVisibleCount = curPage.iEndIndex - curPage.iStartIndex + 1; - - if(iVisibleCount - 1 < iSelected) - { - iCandidateSelected->MakeVisible(EFalse); - } - else - { - if(iHighlighted) - { - iCandidateSelected->MakeVisible(ETrue); - } - } - - TBufC buf; - TPtr newText = buf.Des(); - - for(TInt i = 0; i < iVisibleCount; i ++) - { - CEikLabel* candidateLabel = iCandidateLabelArray[i]; - const TDesC* txtLabel = candidateLabel->Text(); - newText = (*iCandidateArray)[curPage.iStartIndex + i]; - - if((txtLabel->Compare(newText) != 0) ) - { - // we have already allocated enough memory for this - TRAP_IGNORE( candidateLabel->SetTextL(newText)); - } - - // need to update the character if it is in the current selected candidate - if(i == iSelected) - { - iCandidateSelected->SetText(newText); - iCandidateSelected->SetOrdinal(i + 1); - DrawDeferred(); - } - if(i < iVisibleCount) - { - // only redraw labels that are visible - TRect rect = candidateLabel->Rect(); - Window().Invalidate(rect); - } - } - LayoutLabels(); - LayoutCandidateSelected(); - DrawDeferred(); - UpdateLabelVisibility(); - } - -void CAknFepUICtrlCandidatePane::SetHighlighted(TBool aHighlighted) - { - if(!COMPARE_BOOLS(iHighlighted, aHighlighted)) - { - iHighlighted = aHighlighted; - iCandidateSelected->MakeVisible(aHighlighted); - - iCandidateSelected->DrawDeferred(); - } - } - -TBool CAknFepUICtrlCandidatePane::Highlighted() const - { - return iHighlighted; - } - -void CAknFepUICtrlCandidatePane::SetCandidateMode(TInt aIndex, TCandidateMode aMode) - { - __ASSERT_DEBUG(aIndex < EMaxCandidates, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedSetModeOutsideMaxCandidates)); - __ASSERT_DEBUG(aIndex >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedSetModeOutsideMaxCandidates)); - - TCandidateMode oldMode = iCandidateModeArray[aIndex]; - if(oldMode != aMode) - { - iCandidateModeArray[aIndex] = aMode; - if(iSelected == aIndex) - { - LayoutCandidateSelected(); - } - // only do drawing if visible - if(aIndex < iVisibleCount) - { - LayoutLabel(aIndex); - if(iSelected == aIndex && iHighlighted) - { - iCandidateSelected->DrawDeferred(); - } - else - { - CEikLabel* candidateLabel = iCandidateLabelArray[aIndex]; - TRect rect = candidateLabel->Rect(); - Window().Invalidate(rect); - } - } - } - } - -CAknFepUICtrlCandidatePane::TCandidateMode CAknFepUICtrlCandidatePane::CandidateMode(TInt aIndex) - { - return iCandidateModeArray[aIndex]; - } - -TBool CAknFepUICtrlCandidatePane::IsShowHorizontalScrollArrows() const - { - return EFalse; - } - -void CAknFepUICtrlCandidatePane::ShowHorizontalScrollArrows(TBool /*aValue*/) - { - // If the state is changed, the arrows will be redrawn in the new state. - // if(!COMPARE_BOOLS(iShowHorizontalScrollArrows, aValue)) - // { - // iShowHorizontalScrollArrows = aValue; - // TRect rect = iIndiFepArrowLeft.Rect(); - // Window().Invalidate(rect); - // rect = iIndiFepArrowRight.Rect(); - // Window().Invalidate(rect); - // } - } - -void CAknFepUICtrlCandidatePane::ShowUpScrollArrows(TBool aValue) - { - if (iShowUpScrollArrows != aValue) - { - iShowUpScrollArrows = aValue; - TRect rect = iIndiFepArrowUp.Rect(); - Window().Invalidate(rect); - } - } - -void CAknFepUICtrlCandidatePane::ShowDownScrollArrows(TBool aValue) - { - if (iShowDownScrollArrows != aValue) - { - iShowDownScrollArrows = aValue; - TRect rect = iIndiFepArrowDown.Rect(); - Window().Invalidate(rect); - } - - } - -void CAknFepUICtrlCandidatePane::ShowLeftScrollArrows(TBool /*aValue*/) - { - // if (iShowLeftScrollArrows != aValue) - // { - // iShowLeftScrollArrows = aValue; - // TRect rect = iIndiFepArrowLeft.Rect(); - // Window().Invalidate(rect); - // } - } - -void CAknFepUICtrlCandidatePane::ShowRightScrollArrows(TBool /*aValue*/) - { - // if (iShowRightScrollArrows != aValue) - // { - // iShowRightScrollArrows = aValue; - // TRect rect = iIndiFepArrowRight.Rect(); - // Window().Invalidate(rect); - // } - } - -TBool CAknFepUICtrlCandidatePane::IsShowVerticalScrollArrows() const - { - return iShowVerticalScrollArrows; - } - -void CAknFepUICtrlCandidatePane::ShowVerticalScrollArrows(TBool aValue) - { - // If the state is changed, the arrows will be redrawn in the new state. - if(!COMPARE_BOOLS(iShowVerticalScrollArrows, aValue)) - { - iShowVerticalScrollArrows = aValue; - TRect rect = iIndiFepArrowUp.Rect(); - Window().Invalidate(rect); - rect = iIndiFepArrowDown.Rect(); - Window().Invalidate(rect); - } - } - -void CAknFepUICtrlCandidatePane::ShowCandidateOrdinals(TBool aValue) - { - if(!COMPARE_BOOLS(iShowCandidateOrdinals, aValue)) - { - iShowCandidateOrdinals = aValue; - iCandidateSelected->ShowOrdinal(aValue); - UpdateLabelVisibility(); - } - } - -TBool CAknFepUICtrlCandidatePane::IsShowCandidateOrdinals() const - { - return iShowCandidateOrdinals; - } - -TInt CAknFepUICtrlCandidatePane::VisibleCandidateCount() const - { - return iVisibleCount; - } - -void CAknFepUICtrlCandidatePane::SetVisibleCandidateCount(TInt aCount) - { - __ASSERT_DEBUG(aCount > 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicNewVisibleCountExceedsRange)); - __ASSERT_DEBUG(aCount <= EMaxCandidates, AknFepUiInterfacePanic(EAknFepUiInterfacePanicNewVisibleCountExceedsRange)); - if(iVisibleCount != aCount) - { - if(aCount - 1 < iSelected) - { - // automatically move the selection to be at the end of the new - // candidate buffer - SelectIndex(aCount - 1); // ignore return code - } - iVisibleCount = aCount; - UpdateLabelVisibility(); - } - } - -TBool CAknFepUICtrlCandidatePane::SelectFirstPhrase() - { - if(iVisibleCount >= 1) - { - return SelectIndex(0,EFalse); - } - else - { - return EFalse; - } - } - -TBool CAknFepUICtrlCandidatePane::SelectFirst() - { - if(iBuffer.Length()) - { - return SelectIndex(0); - } - else - { - return EFalse; - } - } - -TBool CAknFepUICtrlCandidatePane::SelectLastPhrase() - { - if(iVisibleCount > 1) - { - return SelectIndex(iVisibleCount - 1); - } - else - { - return EFalse; - } - } - -TBool CAknFepUICtrlCandidatePane::SelectLast() - { - TInt length = iBuffer.Length(); - if(length) - { - TInt index = length < iVisibleCount ? length : iVisibleCount; - return SelectIndex(index - 1); - } - else - { - return EFalse; - } - } - -TBool CAknFepUICtrlCandidatePane::SelectNext() - { - if(iSelected < iVisibleCount - 1) - { - return SelectIndex(iSelected + 1); - } - else - { - return EFalse; - } - } - -TBool CAknFepUICtrlCandidatePane::SelectPrev() - { - if(iSelected > 0) - { - return SelectIndex(iSelected - 1); - } - else - { - return EFalse; - } - } - -TBool CAknFepUICtrlCandidatePane::SelectIndex(TInt aIndex, TBool selected) - { - if(aIndex + 1 > iVisibleCount || aIndex < 0) - { - return EFalse; - } - if(iSelected != aIndex) - { - if(iSelected + 1 > iVisibleCount && iHighlighted) - { - // candidate selection is currently hidden, as the current - // selection is outside the range of valid candidates, therefore - // show it again - iCandidateSelected->MakeVisible(ETrue); - } - iSelected = aIndex; - // move and repopulate the selected candidate control - const TDesC* txtLabel = iCandidateLabelArray[aIndex]->Text(); - iCandidateSelected->SetText(*txtLabel); - iCandidateSelected->SetOrdinal(iSelected + 1); - - LayoutCandidateSelected(); - if( selected ) - { - - DrawDeferred(); - } - - } - return ETrue; - } - -TInt CAknFepUICtrlCandidatePane::SelectedIndex() const - { - return iSelected; - } - -TPtrC CAknFepUICtrlCandidatePane::CurrentPhraseCandidate() const - { - __ASSERT_DEBUG(iSelected >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicCurrentSelectionOutsideVisibleCandidates)); - if(iVisibleCount > iSelected) - { - return *(iCandidateLabelArray[iSelected]->Text()); - } - else - { - return TPtrC(); - } - } - -TPtrC CAknFepUICtrlCandidatePane::CurrentCandidate() const - { - __ASSERT_DEBUG(iSelected >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicCurrentSelectionOutsideVisibleCandidates)); - if(iBuffer.Length() > iSelected) - { - return iBuffer.Mid(iSelected, EOneCandidate); - } - else - { - return TPtrC(); - } - } - -TInt CAknFepUICtrlCandidatePane::LabelTextWidthInPixels( TInt aIndex) - { - TAknLayoutText layoutText; - TAknTextLineLayout candidatePaneLayoutText = - CAknFepChineseUIDataConv::AnyToTextLine(iLafDataMgr->RequestData( ECandidatePaneTextLine )); - - layoutText.LayoutText(Rect(), candidatePaneLayoutText); - - const CFont* font = layoutText.Font(); - - TInt labelWidthInPixels = 0; - if(font) - { - const TDesC* txtLabel = iCandidateLabelArray[aIndex]->Text(); - if(txtLabel->Length() != 0) - { - labelWidthInPixels = font->TextWidthInPixels(*txtLabel); - } - } - return labelWidthInPixels; - } -void CAknFepUICtrlCandidatePane::SetPaneLayout(CAknFepUICtrlContainerChinese::TPaneLayout aPaneLayout) - { - iPaneLayout = aPaneLayout; - } - -void CAknFepUICtrlCandidatePane::SplitPhraseCandidatesIntoPages() - { - iPages.Reset(); - iUnpagedIndex = 0; - - InternalSpilitPhraseCandidate(); - - if( iPages.Count() == 0 ) - { - iVisibleCount = 0; - } - else - { - iCurDisplayPage = 0; - SetVisibleCandidateCount(iPages[0].iEndIndex - iPages[0].iStartIndex + 1); - } - } - -void CAknFepUICtrlCandidatePane::NextCandidatePage(void) - { - if(iCurDisplayPage == (iPages.Count() - 1)) - { - if( iUnpagedIndex < iCandidateArray->Count() ) - { - //continue page - InternalSpilitPhraseCandidate(); - iCurDisplayPage++; - } - else - { - iCurDisplayPage = 0; - } - } - else - { - iCurDisplayPage ++; - } - // For fix bug of when the count of character in the last page is less than - // the previous page of the last page. And then select the last character of - // the previous page of the last page, and select next page. First of the last - // page is not refreshed. - iSelected = 0; - } - -void CAknFepUICtrlCandidatePane::PreviousCandidatePage(void) - { - if(iCurDisplayPage == 0) - { - iCurDisplayPage = iPages.Count() - 1; - } - else - { - iCurDisplayPage --; - } - } - -void CAknFepUICtrlCandidatePane::SizeChanged() - { - LayoutRects(); - LayoutContainedControls(); - } - -TInt CAknFepUICtrlCandidatePane::CountComponentControls() const - { - TInt count = 0; - count += iCandidateLabelArray.Count(); - count += iOrdinalLabelArray.Count(); - - CCoeControl* controls[] = - { - iCandidateSelected - } ; - - for (TUint ii = 0 ; ii < (sizeof(controls) / sizeof(CCoeControl*)) ; ii++) - { - if(controls[ii]) - { - count++ ; - } - } - return count ; - } - -CCoeControl* CAknFepUICtrlCandidatePane::ComponentControl(TInt aIndex) const - { - TInt candidateCount = iCandidateLabelArray.Count(); - TInt ordinalCount = iOrdinalLabelArray.Count(); - - if(aIndex < candidateCount) - { - // because this method is const, the const [] operator is selected - // which means that the pointer is const, so have to cast away constness - // - a possible alternative is to make the array mutable? - return CONST_CAST(CEikLabel*, iCandidateLabelArray[aIndex]); - } - aIndex -= candidateCount; - - if(aIndex < ordinalCount) - { - // because this method is const, the const [] operator is selected - // which means that the pointer is const, so have to cast away constness - // - a possible alternative is to make the array mutable? - return CONST_CAST(CEikLabel*, iOrdinalLabelArray[aIndex]); - } - aIndex -= ordinalCount; - - CCoeControl* controls[] = - { - iCandidateSelected - } ; - - for (TUint ii = 0; (ii < sizeof(controls) / sizeof(CCoeControl*)) ; ii++) - { - if (controls[ii] && aIndex-- == 0) - { - return controls[ii] ; - } - } - // shouldn't be called while no components. - return NULL ; - } - -void CAknFepUICtrlCandidatePane::Draw(const TRect& /* aRect */) const - { - CWindowGc& gc = SystemGc(); - - if(iShowHorizontalScrollArrows) - { - if (iShowLeftScrollArrows) - { - iIndiFepArrowLeft.DrawImage(gc, - iNaviArrowBitmapLeft, - iNaviArrowBitmapLeftMask); - } - - if (iShowRightScrollArrows) - { - iIndiFepArrowRight.DrawImage(gc, - iNaviArrowBitmapRight, - iNaviArrowBitmapRightMask); - } - } - if(iShowVerticalScrollArrows) - { - if (iShowUpScrollArrows) - { - iIndiFepArrowUp.DrawImage(gc, - iNaviArrowBitmapUp, - iNaviArrowBitmapUpMask); - } - - if (iShowDownScrollArrows) - { - iIndiFepArrowDown.DrawImage(gc, - iNaviArrowBitmapDown, - iNaviArrowBitmapDownMask); - } - } - } - -void CAknFepUICtrlCandidatePane::ConstructL(RWindow& aParent) - { - SetContainerWindowL(aParent); - ConstructBitmapsL(); - - TBuf ordinal; - for(TInt i = 0; i < EMaxCandidates; i++) - { - CEikLabel* candidateLabel = new(ELeave) CEikLabel; - CleanupStack::PushL(candidateLabel); - candidateLabel->SetContainerWindowL(aParent); - candidateLabel->SetBufferReserveLengthL(EPhraseLength); - // ownership is passed, unless allocation is unsuccessful, in which case we still have it on the stack - User::LeaveIfError(iCandidateLabelArray.Append(candidateLabel)); - CleanupStack::Pop(); // candidateLabel - - CEikLabel* ordinalLabel = new(ELeave) CEikLabel; - CleanupStack::PushL(ordinalLabel); - ordinalLabel->SetContainerWindowL(aParent); - ordinalLabel->SetBufferReserveLengthL(EOneCandidate); - ordinal.Num((i+1)%10); // digits are [1, 2,,, 9, 0] - only want the last digit in the case of 10! - ordinalLabel->SetTextL(ordinal); - // ownership is passed, unless allocation is unsuccessful, in which case we still have it on the stack - User::LeaveIfError(iOrdinalLabelArray.Append(ordinalLabel)); - CleanupStack::Pop(); // ordinalLabel - - User::LeaveIfError(iCandidateModeArray.Append(ECandidateModeNormal)); - } - - iCandidateSelected = CAknFepUICtrlCandidateSelected::NewL(aParent); - iCandidateSelected->MakeVisible(iHighlighted); - iCandidateSelected->SetMopParent(this); - iCandidateArray = new(ELeave) CDesCArrayFlat(1); - } - -void CAknFepUICtrlCandidatePane::ConstructBitmapsL() - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - - TFileName bmpFile; - bmpFile.Copy(_L("z:")); - bmpFile.Append(KDC_BITMAP_DIR); - bmpFile.Append(KFepUiControlsBitmapFile); - - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnIndiFepArrowLeft, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG20, - iNaviArrowBitmapLeft, - iNaviArrowBitmapLeftMask, - bmpFile, - EMbmAknfepuictrlsQgn_indi_fep_arrow_left, - EMbmAknfepuictrlsQgn_indi_fep_arrow_left_mask, - AKN_LAF_COLOR( 0 ) - ); - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnIndiFepArrowRight, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG20, - iNaviArrowBitmapRight, - iNaviArrowBitmapRightMask, - bmpFile, - EMbmAknfepuictrlsQgn_indi_fep_arrow_right, - EMbmAknfepuictrlsQgn_indi_fep_arrow_right_mask, - AKN_LAF_COLOR( 0 ) - ); - - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnIndiFepArrowUp, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG20, - iNaviArrowBitmapUp, - iNaviArrowBitmapUpMask, - bmpFile, - EMbmAknfepuictrlsQgn_indi_fep_arrow_up, - EMbmAknfepuictrlsQgn_indi_fep_arrow_up_mask, - AKN_LAF_COLOR( 0 ) - ); - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnIndiFepArrowDown, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG20, - iNaviArrowBitmapDown, - iNaviArrowBitmapDownMask, - bmpFile, - EMbmAknfepuictrlsQgn_indi_fep_arrow_down, - EMbmAknfepuictrlsQgn_indi_fep_arrow_down_mask, - AKN_LAF_COLOR( 0 ) - ); - } - -CAknFepUICtrlCandidatePane::CAknFepUICtrlCandidatePane(CAknFepUiLayoutDataMgr* aLafDataMgr) - : - iPaneLayout(CAknFepUICtrlContainerChinese::ELayoutCandidate), - iHighlighted(EFalse), - iShowHorizontalScrollArrows(EFalse), - iShowVerticalScrollArrows(EFalse), - iShowUpScrollArrows(ETrue), - iShowDownScrollArrows(ETrue), - iShowLeftScrollArrows(ETrue), - iShowRightScrollArrows(ETrue), - iShowCandidateOrdinals(ETrue), - iCurDisplayPage(0), - iOrdinalLableWidth(0) - { - iLafDataMgr = aLafDataMgr; - } - -void CAknFepUICtrlCandidatePane::LayoutRects() - { - TRect rect = Rect(); - - TAknWindowLineLayout candidateWindowLine1 = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ECandidateWindowLine1)); - TAknWindowLineLayout candidateWindowLine2 = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ECandidateWindowLine2)); - TAknWindowLineLayout candidateWindowLine3 = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ECandidateWindowLine3)); - TAknWindowLineLayout candidateWindowLine4 = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ECandidateWindowLine4)); - - iIndiFepArrowLeft.LayoutRect(rect, candidateWindowLine1); - AknIconUtils::SetSize(iNaviArrowBitmapLeft, iIndiFepArrowLeft.Rect().Size()); - - iIndiFepArrowRight.LayoutRect(rect, candidateWindowLine2); - AknIconUtils::SetSize(iNaviArrowBitmapRight, iIndiFepArrowRight.Rect().Size()); - - iIndiFepArrowUp.LayoutRect(rect, candidateWindowLine3); - AknIconUtils::SetSize(iNaviArrowBitmapUp, iIndiFepArrowUp.Rect().Size()); - - iIndiFepArrowDown.LayoutRect(rect, candidateWindowLine4); - AknIconUtils::SetSize( iNaviArrowBitmapDown, iIndiFepArrowDown.Rect().Size() ); - } - -void CAknFepUICtrlCandidatePane::LayoutContainedControls() - { - LayoutLabels(); - LayoutCandidateSelected(); - } - -void CAknFepUICtrlCandidatePane::LayoutLabel(TInt aIndex) - { - __ASSERT_DEBUG(aIndex >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedLayoutOutsideVisibleCount)); - __ASSERT_DEBUG(aIndex < iVisibleCount, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedLayoutOutsideVisibleCount)); - TRect rect = Rect(); - CEikLabel* candidateLabel = iCandidateLabelArray[aIndex]; - CEikLabel* ordinalLabel = iOrdinalLabelArray[aIndex]; - TAknWindowLineLayout layoutCandidateItem = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutCandidateItem)); - TAknTextLineLayout candidateLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(ECandidatePaneTextLine)); - - // layout candidate label - TAknLayoutRect layoutRectCandidateItem; - layoutRectCandidateItem.LayoutRect(rect,layoutCandidateItem); - TRect rectCandidateItem = layoutRectCandidateItem.Rect(); - - if(aIndex > 0) - { - rectCandidateItem.iTl.iX = iCandidateLabelArray[aIndex - 1]->Rect().iBr.iX; - } - TAknLayoutText layoutText; - layoutText.LayoutText(rectCandidateItem,candidateLayout); - TRect rectText = layoutText.TextRect(); - rectText.SetWidth(LabelTextWidthInPixels(aIndex)); - - candidateLabel->SetRect(rectText); - candidateLabel->SetFont(layoutText.Font()); - - // layout ordinal label - TAknTextLineLayout ordinalLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EOrdinalCandidateTextLayout)); - TBufC16<1> buf; - TAknLayoutText layoutOrdinal; - TPtr16 ptr = buf.Des(); - ptr = (*(ordinalLabel->Text())).Left(EOneCandidate); - - layoutOrdinal.LayoutText(rectCandidateItem,ordinalLayout); - - const CFont* font = layoutOrdinal.Font(); - - TRect rectOrdinal = layoutOrdinal.TextRect(); - // align ordinal label and candidate label - - /* removed in 2006.03.29 - rectOrdinal.iTl.iY = rectText.iTl.iY; - rectOrdinal.SetWidth(font->TextWidthInPixels(ptr)); - rectOrdinal.SetHeight(font->HeightInPixels()); - */ - - // inserted in 2006.03.29 - TPoint ordinalPosition; - TInt ordinalWidth = font->TextWidthInPixels(ptr); - ordinalPosition.iX = rectText.iTl.iX - ordinalWidth; - ordinalPosition.iY = rectText.iTl.iY; - - rectOrdinal = TRect(ordinalPosition, - TPoint(ordinalPosition.iX + rectOrdinal.Width(), - ordinalPosition.iY + rectOrdinal.Height())); - // end inserting - - ordinalLabel->SetRect(rectOrdinal); - ordinalLabel->SetFont(font); - iOrdinalLableWidth = rectOrdinal.Width(); - - // override colours if skin data present - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TRgb candidateLabelTextColor = layoutText.Color(); - TRgb ordinalLabelTextColor = layoutOrdinal.Color(); - - AknsUtils::GetCachedColor(skin, candidateLabelTextColor, - KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG19); - - AknsUtils::GetCachedColor(skin, ordinalLabelTextColor, - KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG19); - - TRAP_IGNORE( - candidateLabel->OverrideColorL(EColorLabelText, candidateLabelTextColor); - ordinalLabel->OverrideColorL(EColorLabelText, ordinalLabelTextColor); - ); - } - -void CAknFepUICtrlCandidatePane::LayoutLabels() - { - for(TInt i = 0; i < iVisibleCount; i++) - { - LayoutLabel(i); - } - } - -void CAknFepUICtrlCandidatePane::LayoutCandidateSelected() - { - TCandidateMode candidateMode = iCandidateModeArray[iSelected]; - iCandidateSelected->SetCandidateMode(candidateMode); - iCandidateSelected->SetLayout(iPaneLayout); - - TRect ordinalRect = iOrdinalLabelArray[iSelected]->Rect(); - - TAknLayoutRect layoutRect; - TAknWindowLineLayout layoutCandidateItem = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutCandidateItem)); - layoutRect.LayoutRect(Rect(),layoutCandidateItem); - - TRect rectLayoutCandidateItem = layoutRect.Rect(); - rectLayoutCandidateItem.iTl.iX = ordinalRect.iTl.iX; - - TAknTextLineLayout candidateLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(ECandidatePaneTextLine)); - TAknTextLineLayout ordinalLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EOrdinalCandidateTextLayout)); - rectLayoutCandidateItem.SetWidth(iCandidateLabelArray[iSelected]->Rect().Width() + candidateLayout.il - ordinalLayout.il); - - rectLayoutCandidateItem.SetHeight(rectLayoutCandidateItem.Height() - 1); - - iCandidateSelected->SetRect(rectLayoutCandidateItem); - } - -void CAknFepUICtrlCandidatePane::UpdateLabelVisibility() - { - TInt number = 0; - // only show the labels corresponding to candidates that have been set - if(iPages.Count() != 0) - { - number = iPages[iCurDisplayPage].iEndIndex - iPages[iCurDisplayPage].iStartIndex + 1; - } - else - { - number = iBuffer.Length(); - } - - if(number > iVisibleCount) - { - number = iVisibleCount; - } - for(TInt i = 0; i < EMaxCandidates; i++) - { - CEikLabel* candidateLabel = iCandidateLabelArray[i]; - CEikLabel* ordinalLabel = iOrdinalLabelArray[i]; - if(i < number) - { - candidateLabel->MakeVisible(ETrue); - ordinalLabel->MakeVisible(iShowCandidateOrdinals); // only show if needed - } - else - { - candidateLabel->MakeVisible(EFalse); - ordinalLabel->MakeVisible(EFalse); // don't show it as there is no character to go with it - } - } - } - -void CAknFepUICtrlCandidatePane::ResetCandidateState() - { - iPages.Reset(); - } - -void CAknFepUICtrlCandidatePane::DrawBackground(const TRect& aRect) const - { - // instead of drawing one blank rectangle over each of the 20 labels, - // just draw one big rectangle covering the entire pane - CWindowGc& gc = SystemGc(); - TRgb background = AKN_LAF_COLOR(0); - gc.SetBrushColor(background); - gc.Clear(aRect); - } - -void CAknFepUICtrlCandidatePane::InternalSpilitPhraseCandidate() - { - //__ASSERT_DEBUG(aStartIndex + aCount <= iCandidateArray->Count()); - - TInt phraseCandidateNum = iCandidateArray->Count(); - if( phraseCandidateNum == iUnpagedIndex ) - { - //nothing need to be paged - return; - } - - TPage curPage; - TInt index = iUnpagedIndex; - CEikLabel* candidateLabel; - - curPage.iStartIndex = index; - curPage.iEndIndex = index; - TInt candidateLeftNum = phraseCandidateNum - index > EMaxCandidates? - EMaxCandidates : phraseCandidateNum - index; - - TAknWindowLineLayout layoutCandidateItem = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutCandidateItem)); - TAknTextLineLayout candidateLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(ECandidatePaneTextLine)); - - // avoid accessing layout data member - TAknLayoutRect layoutRect; - layoutRect.LayoutRect(Rect(),layoutCandidateItem); - TRect rectLayoutCandidateItem = layoutRect.Rect(); - - TAknLayoutText layoutText; - layoutText.LayoutText(rectLayoutCandidateItem,candidateLayout); - TRect rectText = layoutText.TextRect(); - - TInt distance = rectText.iTl.iX - rectLayoutCandidateItem.iTl.iX + rectLayoutCandidateItem.iBr.iX - rectText.iBr.iX; - rectLayoutCandidateItem.iTl.iX += distance; - - TInt width = 0; - TInt i = 0; - - const TInt candidateWidth = rectLayoutCandidateItem.Width(); - for ( i = 0; i < candidateLeftNum; i ++ ) - { - // Initialization - candidateLabel = iCandidateLabelArray[i]; - // labelWidth in the font - const CFont* font = layoutText.Font(); - TPtrC newText = (*iCandidateArray)[iUnpagedIndex + i]; - TInt labelWidth = font->TextWidthInPixels( newText ); - if ( labelWidth > candidateWidth ) - { - TBufC buf1; - TPtr text( buf1.Des() ); - - AknBidiTextUtils::ConvertToVisualAndClip(newText, text, *font, - candidateWidth, candidateWidth, - AknBidiTextUtils::EImplicit,0xFFFF); - - iCandidateArray->Delete( iUnpagedIndex + i ); - TRAP_IGNORE( - { - iCandidateArray->InsertL( iUnpagedIndex + i, text ); - candidateLabel->SetTextL(text); - }); - - } - else - { - TRAP_IGNORE( candidateLabel->SetTextL(newText)); - width = LabelTextWidthInPixels(i)+ iOrdinalLableWidth; - rectLayoutCandidateItem.iTl.iX += width; - } - if (rectLayoutCandidateItem.iTl.iX >= rectLayoutCandidateItem.iBr.iX) - { - if (index>0) - { - curPage.iEndIndex = index - 1; - } - else - { - curPage.iEndIndex = index; - } - - iPages.Append(curPage); - break; - } - else - { - index ++; - } - - if( i == EMaxCandidates -1 ) - { - curPage.iEndIndex = index - 1; - iPages.Append(curPage); - break; - } - - } - - if( i >= candidateLeftNum ) - { - curPage.iEndIndex = index - 1; - iPages.Append(curPage); - } - - iUnpagedIndex = index; - } - -TBool CAknFepUICtrlCandidatePane::IsFirstPage() - { - return iCurDisplayPage == 0; - } - -TBool CAknFepUICtrlCandidatePane::IsLastPage() - { - if( iCandidateArray->Count() == iUnpagedIndex ) - { - return iCurDisplayPage == iPages.Count() - 1; - } - return EFalse; - } - -void CAknFepUICtrlCandidatePane::SetInVisiable() - { - for (TInt i = 0; i < EMaxCandidates; i ++) - { - CEikLabel* candidateLabel = iCandidateLabelArray[i]; - CEikLabel* ordinalLabel = iOrdinalLabelArray[i]; - candidateLabel->MakeVisible(EFalse); - ordinalLabel->MakeVisible(EFalse); - } - iCandidateSelected->MakeVisible(EFalse); - } - -TBool CAknFepUICtrlCandidatePane::NeedGetNewCandidatePage() - { - return (iCandidateArray->Count() - iUnpagedIndex < CandidateCountLeft); - - } - -//Bug Fixing for ESSG-7P5CSZ -void CAknFepUICtrlCandidatePane::Enable(TBool aEnable) - { - if (!aEnable) - { - for (TInt i=0; iSetTextL(KNullDesC)); - } - iCandidateArray->Reset(); - iVisibleCount = 0; - DrawNow(); - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlCandidateSelected.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlCandidateSelected.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,309 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlCandidateSelected methods. -* -*/ - - - - - - - - - - - -#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#endif -#include -#include -#include -#include "AknFepUIAvkonCtrlCandidateSelected.h" -#include "AknFepUIAvkonCtrlPinyinPopup.h" -#include "AknFepUiInterfacePanic.h" -#include - -class CEikLabel; - -CAknFepUICtrlCandidateSelected* CAknFepUICtrlCandidateSelected::NewL(RWindowTreeNode& aParent) - { - CAknFepUICtrlCandidateSelected* self = new(ELeave) CAknFepUICtrlCandidateSelected; - CleanupStack::PushL(self); - self->ConstructL(aParent); - CleanupStack::Pop(); - return self; - } - -CAknFepUICtrlCandidateSelected::~CAknFepUICtrlCandidateSelected() - { - delete iOrdinalLabel; - delete iCandidateLabel; - } - -void CAknFepUICtrlCandidateSelected::SetText(TPtrC aCharacter) - { - // make sure that we only copy as many characters as we can show - TInt textLen = aCharacter.Length(); - TInt textLength = textLen > EMaxSelectedCandidateLength? EMaxSelectedCandidateLength:textLen; - TPtrC newText = aCharacter.Left(textLength); - TPtr ptr = iBuffer.Des(); - if(ptr != newText) - { - ptr.Copy(newText); - // ignore any errors... we have guaranteed that the descriptor already has sufficient characters to avoid a realloc - TRAP_IGNORE( iCandidateLabel->SetTextL(iBuffer)); - } - } - -void CAknFepUICtrlCandidateSelected::SetOrdinal(TInt aOrdinal) - { - __ASSERT_DEBUG(aOrdinal < CAknFepUICtrlPinyinPopup::EMaxPhraseCandidate, AknFepUiInterfacePanic(EAknFepUiInterfacePanicNewVisibleCountExceedsRange)); - __ASSERT_DEBUG(aOrdinal >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicNewVisibleCountExceedsRange)); - - TBuf<2> buf; - buf.Format(_L("%d"), aOrdinal); - TRAP_IGNORE(iOrdinalLabel->SetTextL(buf)); - } - -void CAknFepUICtrlCandidateSelected::SetCandidateMode(CAknFepUICtrlCandidatePane::TCandidateMode aMode) - { - if(iCandidateMode != aMode) - { - iCandidateMode = aMode; - - LayoutRects(); - LayoutContainedControls(); - DrawDeferred(); - } - } - -void CAknFepUICtrlCandidateSelected::SetLayout(CAknFepUICtrlContainerChinese::TPaneLayout aLayout) - { - iPaneLayout = aLayout; - } - -void CAknFepUICtrlCandidateSelected::ShowOrdinal(TBool aValue) - { - if(!COMPARE_BOOLS(iShowOrdinal,aValue)) - { - iShowOrdinal = aValue; - UpdateLabelVisibility(); - } - } - -void CAknFepUICtrlCandidateSelected::SizeChanged() - { - LayoutRects(); - LayoutContainedControls(); - } - -TInt CAknFepUICtrlCandidateSelected::CountComponentControls() const - { - CCoeControl* controls[] = - { - iOrdinalLabel, - iCandidateLabel - } ; - - TInt count = 0 ; - for (TUint ii = 0 ; ii < (sizeof(controls) / sizeof(CCoeControl*)) ; ii++) - if(controls[ii]) - count++ ; - return count ; - } - -CCoeControl* CAknFepUICtrlCandidateSelected::ComponentControl(TInt aIndex) const - { - CCoeControl* controls[] = - { - iOrdinalLabel, - iCandidateLabel - } ; - - for (TUint ii = 0; (ii < sizeof(controls) / sizeof(CCoeControl*)) ; ii++) - if (controls[ii] && aIndex-- == 0) - return controls[ii] ; - // shouldn't be called while no components. - return NULL ; - } - -void CAknFepUICtrlCandidateSelected::Draw(const TRect& /*aRect*/) const - { - CWindowGc& gc = SystemGc(); - - TBool skinnedDraw = EFalse; - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TRect outerRect; - TRect innerRect; - CalculateFrameRects(outerRect, innerRect); - - // draw the whole frame background according to the containing context, which in this case - // is the candidate pane, to avoid corner drawing mess and to cope with masked grid frame centre - MAknsControlContext* cc = AknsDrawUtils::ControlContext(this); - AknsDrawUtils::DrawBackground(skin, cc, this, gc, - outerRect.iTl, outerRect, KAknsDrawParamDefault); - - skinnedDraw = AknsDrawUtils::DrawFrame(skin, gc, outerRect, innerRect, - KAknsIIDQsnFrGrid, KAknsIIDQsnFrGridCenter); - - if(!skinnedDraw) - { - iRectShadow.DrawRect(gc); - iRectHighlight.DrawRect(gc); - } - } - -void CAknFepUICtrlCandidateSelected::ConstructL(RWindowTreeNode& aParent) - { - CreateWindowL(aParent); - - iOrdinalLabel = new(ELeave) CEikLabel; - iOrdinalLabel->SetBufferReserveLengthL(EOneCandidate); - iOrdinalLabel->SetContainerWindowL(*this); - - // force label to contain required number of characters from the outset - iCandidateLabel = new(ELeave) CEikLabel; - iCandidateLabel->SetBufferReserveLengthL(EMaxSelectedCandidateLength); // this will do a realloc now, so no need to later - iCandidateLabel->SetContainerWindowL(*this); - } - -CAknFepUICtrlCandidateSelected::CAknFepUICtrlCandidateSelected() - : - iCandidateMode(CAknFepUICtrlCandidatePane::ECandidateModeNormal), - iPaneLayout(CAknFepUICtrlContainerChinese::ELayoutCandidate), - iShowOrdinal(ETrue) - { - } - -void CAknFepUICtrlCandidateSelected::LayoutRects() - { - TRect rect = Rect(); - iRectShadow.LayoutRect(rect, AKN_LAYOUT_WINDOW_Candidate_selection_highlight_Line_1(rect)); - iRectHighlight.LayoutRect(rect, AKN_LAYOUT_WINDOW_Candidate_selection_highlight_Line_2(rect)); - } - -void CAknFepUICtrlCandidateSelected::LayoutContainedControls() - { - TRect rect = Rect(); - - // layout candidate label - TAknTextLineLayout candidateLayout = AKN_LAYOUT_TEXT_Chinese_universal_FEP_candidate_pane_texts_Line_1; - TAknTextLineLayout ordinalLayout = AKN_LAYOUT_TEXT_Chinese_universal_FEP_candidate_pane_texts_Line_3; - candidateLayout.il = candidateLayout.il - ordinalLayout.il; - - TAknLayoutText layoutCandidate; - layoutCandidate.LayoutText(rect,candidateLayout); - - const CFont* font = layoutCandidate.Font(); - TInt labelWidthInPixels = 0; - if(font) - { - TInt bufLength = iBuffer.Length(); - if(bufLength != 0) - { - TPtrC newChars = iBuffer.Left(bufLength); - labelWidthInPixels = font->TextWidthInPixels(newChars); - } - } - TRect rectCandidate = layoutCandidate.TextRect(); - if(labelWidthInPixels == 0) - { - rectCandidate.iTl.iX = 0; - } - rectCandidate.SetWidth(labelWidthInPixels); - iCandidateLabel->SetRect(rectCandidate); - iCandidateLabel->SetFont(font); - - // layout ordinal label - TBufC16<1> buf; - TPtr16 ptr = buf.Des(); - ptr = (*(iOrdinalLabel->Text())).Left(EOneCandidate); - - TAknLayoutText layoutOrdinal; - ordinalLayout.il = 0; - - layoutOrdinal.LayoutText(rect,ordinalLayout); - - const CFont* fontOrdinal = layoutOrdinal.Font(); - - TRect ordinalRect = layoutOrdinal.TextRect(); - - // inserted in 2006.03.29 - TPoint ordinalPosition; - // end inserting - TInt ordinalWidth = fontOrdinal->TextWidthInPixels(ptr); - - /* removing in 2006.03.29 - ordinalRect.iTl.iX = rectCandidate.iTl.iX - ordinalWidth; - ordinalRect.iTl.iY = rectCandidate.iTl.iY; - - ordinalRect.SetWidth(ordinalWidth); - ordinalRect.SetHeight(fontOrdinal->HeightInPixels()); - */ // end removing - - // inserted in 2006.03.29 - ordinalPosition.iX = rectCandidate.iTl.iX - ordinalWidth; - ordinalPosition.iY = rectCandidate.iTl.iY; - - ordinalRect = TRect(ordinalPosition, - TPoint(ordinalPosition.iX + ordinalRect.Width(), - ordinalPosition.iY + ordinalRect.Height())); - // end inserting - - iOrdinalLabel->SetRect(ordinalRect); - iOrdinalLabel->SetFont(fontOrdinal); - - // override with skin text color - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TRgb labelTextColor; - - AknsUtils::GetCachedColor(skin, labelTextColor, - KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG11); - - TRAP_IGNORE( - iCandidateLabel->OverrideColorL(EColorLabelText, labelTextColor); - iOrdinalLabel->OverrideColorL(EColorLabelText, labelTextColor); - ); - } - -void CAknFepUICtrlCandidateSelected::CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const - { - TRect windowRect = Rect(); - - TAknLayoutRect topLeft; - topLeft.LayoutRect(windowRect, SkinLayout::Highlight_skin_placing__grid__Line_2()); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect(windowRect, SkinLayout::Highlight_skin_placing__grid__Line_5()); - - aOuterRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); - aInnerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); - } - -void CAknFepUICtrlCandidateSelected::UpdateLabelVisibility() - { - if(iShowOrdinal) - { - iOrdinalLabel->MakeVisible(ETrue); - } - else - { - iOrdinalLabel->MakeVisible(EFalse); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlContainerChinese.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlContainerChinese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,692 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlContainerChinese methods. -* -*/ - - - - - - - - - - - - -#include -#include -#include -#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#endif - - -#include -#include -#include -#include -#include -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlContainerChinese.h" -#include "AknFepUIAvkonCtrlCandidatePane.h" -#include "AknFepUIAvkonCtrlInputPane.h" -#include "AknFepUIAvkonCtrlPinyinPopup.h" -#include "aknfepuictrlpinyineep.h" -#include "AknFepManager.h" -#include "aknfepchineseuidataconv.h" -#include "aknfepuilayoutdatamgr.h" - -MAknFepUICtrlContainerChinese::~MAknFepUICtrlContainerChinese() - { - } - -CAknFepUICtrlContainerChinese::CAknFepUICtrlContainerChinese() - : - iPaneLayout(ELayoutInput), - iContainerPosition(TPoint(0,0)), - isPCLPosed(EFalse) - { - - } - -CAknFepUICtrlContainerChinese* CAknFepUICtrlContainerChinese::NewL() - { - CAknFepUICtrlContainerChinese* self = new(ELeave) CAknFepUICtrlContainerChinese; - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -MAknFepUICtrlInputPane* CAknFepUICtrlContainerChinese::InputPane() const - { - return iInputPane; - } - -MAknFepUICtrlCandidatePane* CAknFepUICtrlContainerChinese::CandidatePane() const - { - return iCandidatePane; - } - -MAknFepUICtrlPinyinPopup* CAknFepUICtrlContainerChinese::PinyinPopupWindow() const - { - return iPinyinPopupWindow; - } - -MAknFepUICtrlEditPane* CAknFepUICtrlContainerChinese::EditPaneWindow() const - { - return iEditPane; - } - -TBool CAknFepUICtrlContainerChinese::IsEnabled() const - { - return iEnabled; - } - -void CAknFepUICtrlContainerChinese::Enable(TBool aEnable) - { - if(!COMPARE_BOOLS(iEnabled, aEnable)) - { - iEnabled = aEnable; - if(aEnable) - { - Window().SetOrdinalPosition(0, ECoeWinPriorityFep); // right at the front - // make sure we are not faded even if a query has appeared - Window().SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren); - } - else - { - // make sure that the popup window is disabled as well - iInputPane->MakeVisible(aEnable); - iPinyinPopupWindow->Enable(aEnable); - iEditPane->Enable(aEnable); - iCandidatePane->Enable(aEnable); - } - MakeVisible(aEnable); - } - if ( aEnable == EFalse ) - { - if ( iFepMan ) - { - iFepMan->PinyinPhraseCreation( EFalse ); - iFepMan->EntryPhrase( EFalse ); - iFepMan->EnableKeyStar( ETrue ); - iFepMan->PhraseCreation( EFalse ); - } - PinyinPopupWindow()->ResetStrokeArray(); - PinyinPopupWindow()->SetLastResouce( 0 ); - iPinyinPopupWindow->ResetInputLayoutMiniQwertyZhuyin(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - iEditPane->ResetAllArray(); - iEditPane->SetEffictiveLength( 0 ); - iEditPane->SetChangeState( EFalse ); -#endif - } - } - -void CAknFepUICtrlContainerChinese::ConstructL() - { - CreateWindowL(); - SetNonFocusing(); - RWindow& window=Window(); - window.SetOrdinalPosition(0, ECoeWinPriorityFep); // right at the front - MakeVisible(EFalse); - - iEikonEnv->EikAppUi()->AddToStackL(this, ECoeStackPriorityDefault, ECoeStackFlagRefusesFocus); - - iLafDataMgr = CAknFepUiLayoutDataMgr::NewL(); - iInputPane = CAknFepUICtrlInputPane::NewL(window, CAknFepUICtrlInputPane::ELayoutPhraseInputPane, iLafDataMgr); - iCandidatePane = CAknFepUICtrlCandidatePane::NewL(window, iLafDataMgr); - iPinyinPopupWindow = CAknFepUICtrlPinyinPopup::NewL(window , iLafDataMgr); - iEditPane = CAknFepUICtrlPinyinEEP::NewL( window, iLafDataMgr ); - iInputPane->SetMopParent(this); - iCandidatePane->SetMopParent(this); - iEditPane->SetMopParent(this); - - iInputPane->SetSizeChangedObserver(this); - iPinyinPopupWindow->SetSizeChangedObserver(this); - iPinyinPopupWindow->MakeVisible(EFalse); - iEditPane->Enable(EFalse); - - iCandidatePane->SetPaneLayout(iPaneLayout); // set pane layout - iCandidatePane->SetVisibleCandidateCount(iPaneLayout); - iHorizLine = - CAknFepChineseUIDataConv::AnyToLayoutRect(iLafDataMgr->RequestData(EHorizLine)); - iEEPFirstHorizLine = - CAknFepChineseUIDataConv::AnyToLayoutRect(iLafDataMgr->RequestData(EEEPFirstHorizLine)); - iEEPSecondHorizLine = - CAknFepChineseUIDataConv::AnyToLayoutRect(iLafDataMgr->RequestData(EEEPSecondHorizLine)); - TInt index = ConvertLayoutToIndex(); - if ( index == 2 || index == 3 ) - { - index = 0; - } - iInputPane->SetLayoutIndex(index); - TRect outerRect = TRect(); - TRect innerRect = TRect(); - CalculateFrameRects(outerRect, innerRect); - - iBgContext = CAknsFrameBackgroundControlContext::NewL(KAknsIIDQsnFrPopup, outerRect, innerRect, ETrue); - LayoutContainer(); - ActivateL(); - } - -CAknFepUICtrlContainerChinese::~CAknFepUICtrlContainerChinese() - { - iEikonEnv->EikAppUi()->RemoveFromStack(this); - delete iLafDataMgr; - delete iInputPane; - delete iCandidatePane; - delete iPinyinPopupWindow; - delete iEditPane; - delete iBgContext; - } - -CCoeControl* CAknFepUICtrlContainerChinese::ComponentControl(TInt aIndex) const - { - CCoeControl* controls[] = - { - iInputPane, - iCandidatePane, - iEditPane, - iPinyinPopupWindow - } ; - - for (TUint ii = 0; (ii < sizeof(controls) / sizeof(CCoeControl*)) ; ii++) - { - if (controls[ii] && aIndex-- == 0) - { - return controls[ii] ; - } - } - // shouldn't be called while no components. - return NULL ; - } - -TInt CAknFepUICtrlContainerChinese::CountComponentControls() const - { - CCoeControl* controls[] = - { - iInputPane, - iCandidatePane, - iEditPane, - iPinyinPopupWindow - } ; - - TInt count = 0 ; - for (TUint ii = 0 ; ii < (sizeof(controls) / sizeof(CCoeControl*)) ; ii++) - { - if(controls[ii]) - { - count++ ; - } - } - return count ; - } - -TInt CAknFepUICtrlContainerChinese::ConvertLayoutToIndex() const - { - TInt layout = -1; - // switch on the cases in reverse order, and count our way through - // the possible layouts to determine the index into the layout - // this means that it is easier to add another layout in between - switch(iPaneLayout) - { - case ELayoutKeystroke: //index 3 - layout++; - case ELayoutPhraseCreation: //index 2 - layout++; - case ELayoutCandidate: //index 1 - layout++; - case ELayoutInput: //index 0 - layout++; - default: - break; - } - return layout; - } - -void CAknFepUICtrlContainerChinese::LayoutFrames() - { - TRect outerRect; - TRect innerRect; - CalculateFrameRects(outerRect, innerRect); - iBgContext->SetFrameRects(outerRect, innerRect); - iBgContext->SetParentPos(PositionRelativeToScreen()); - } - -void CAknFepUICtrlContainerChinese::CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const - { - TRect windowRect = Rect(); - TPoint lPoint(0,0); - TPoint rPoint(0,0); - TAknLayoutRect topLeft; - topLeft.LayoutRect(windowRect, SkinLayout::Submenu_skin_placing_Line_2()); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect(windowRect, SkinLayout::Submenu_skin_placing_Line_5()); - lPoint.iX = bottomRight.Rect().iTl.iX; - lPoint.iY = bottomRight.Rect().iTl.iY; - rPoint.iX = bottomRight.Rect().iBr.iX; - rPoint.iY = bottomRight.Rect().iBr.iY; - - aOuterRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); - aInnerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); - } - -void CAknFepUICtrlContainerChinese::Draw(const TRect& /*aRect*/) const - { - CWindowGc& gc = SystemGc(); - TBool skinnedDraw = EFalse; - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - - TRect outerRect; - TRect innerRect; - CalculateFrameRects(outerRect, innerRect); - gc.Clear(Rect()); - - skinnedDraw = AknsDrawUtils::DrawFrame( - skin, gc, - outerRect, innerRect, - KAknsIIDQsnFrPopupSub, KAknsIIDQsnFrPopupCenterSubmenu); - - TRgb separatorColor = iHorizLine.Color(); - AknsUtils::GetCachedColor( skin, separatorColor, - KAknsIIDQsnLineColors, EAknsCIQsnLineColorsCG8 ); - gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); - gc.SetBrushColor( separatorColor ); - - if(!skinnedDraw) - { - iRectCoverMainPaneInput.DrawRect(gc); - iRectFirstShadowInput.DrawRect(gc); - iRectOutlineFrameInput.DrawRect(gc); - iRectInsideAreaInput.DrawRect(gc); - } - - TInt index = ConvertLayoutToIndex(); - if ( iInputPane->IsVisible( ) || iPinyinPopupWindow->IsVisible() || - iPhraseCreationLaf) - { - if ( index == 0 || index == 1 ) - { - iHorizLine.DrawRect(gc); - } - } - if ( index == 2 ) - { - iEEPFirstHorizLine.DrawRect(gc); - iEEPSecondHorizLine.DrawRect(gc); - } - else if ( index == 3 ) - { - iEEPFirstHorizLine.DrawRect(gc); - } - - } - -void CAknFepUICtrlContainerChinese::SizeChanged() - { - iLafDataMgr->ReadLafInfo(); - LayoutRects(); - LayoutContainedControls(); - LayoutFrames(); - } - -void CAknFepUICtrlContainerChinese::SetLayout(TPaneLayout aPaneLayout) - { - if(iPaneLayout != aPaneLayout) - { - iPaneLayout = aPaneLayout; - SetControlVisibility(); - // set visible candidate length - iCandidatePane->SetPaneLayout(aPaneLayout); - TInt index = ConvertLayoutToIndex(); - if ( index == 2 || index == 3) - { - index = 0; - } - iCandidatePane->SetVisibleCandidateCount(aPaneLayout - index); - iInputPane->SetLayoutIndex( index ); - LayoutContainer(); - DrawDeferred(); - } - } - -void CAknFepUICtrlContainerChinese::FocusCandidatePane(TBool aValue) - { - iInputPane->SetHighlighted(!aValue); - iCandidatePane->SetHighlighted(aValue); - } - -void CAknFepUICtrlContainerChinese::SelectionPopupEnabled(TBool /*aEnabled*/) - { - // ensure that the input pane is only visible if the popup is not enabled - SetControlVisibility(); - } - -TTypeUid::Ptr CAknFepUICtrlContainerChinese::MopSupplyObject(TTypeUid aId) - { - if (aId.iUid == MAknsControlContext::ETypeId) - return ( MAknsControlContext::SupplyMopObject(aId, iBgContext)); - return CCoeControl::MopSupplyObject(aId); - } - -void CAknFepUICtrlContainerChinese::SelectionPopupSizeChanged(TInt /*aNumLines*/) - { - LayoutContainer(); - DrawDeferred(); - } - -void CAknFepUICtrlContainerChinese::LayoutPinyinPopupWindow() - { - TRect popupRect(Position(), Size()); - TRect pinyinRect = popupRect; - TAknWindowLineLayout entryHorizLine = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( EEntryHorizLineWindow )); - TAknWindowLineLayout entryPaneLine = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( EEntryPaneWindowLine )); - TAknWindowLineLayout eepFirstHorizLine = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( EEEPFirstHorizLineWindow )); - TAknWindowLineLayout eepSecondHorizLine = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( EEEPSecondHorizLineWindow )); - TAknLayoutRect layoutLineEntry, layoutLineEntryPane, layoutLineFirstHorizEEP, layoutLineSecondHorizEEP; - TRect layoutLineRectEntry, layoutLineRectEntryPane, layoutLineRectFirstHorizEEP, layoutLineRectSecondHorizEEP; - TInt index = ConvertLayoutToIndex(); - if ( 2 == index ) - { - layoutLineFirstHorizEEP.LayoutRect( popupRect, eepFirstHorizLine ); - layoutLineRectFirstHorizEEP = layoutLineFirstHorizEEP.Rect(); - layoutLineSecondHorizEEP.LayoutRect( popupRect, eepSecondHorizLine ); - layoutLineRectSecondHorizEEP = layoutLineSecondHorizEEP.Rect(); - - pinyinRect.iTl.iY = layoutLineRectFirstHorizEEP.iBr.iY; - pinyinRect.iBr.iY = layoutLineRectSecondHorizEEP.iTl.iY; - } - else - { - layoutLineEntry.LayoutRect( popupRect, entryHorizLine ); - layoutLineRectEntry = layoutLineEntry.Rect(); - layoutLineEntryPane.LayoutRect( popupRect, entryPaneLine ); - layoutLineRectEntryPane = layoutLineEntryPane.Rect(); - pinyinRect.iTl.iY = layoutLineRectEntryPane.iTl.iY; - pinyinRect.SetHeight(layoutLineRectEntry.iTl.iY - pinyinRect.iTl.iY); - } - iPinyinPopupWindow->SetRect(pinyinRect); - } - -void CAknFepUICtrlContainerChinese::LayoutPinyinEEPWindow() - { - TRect rect = Rect(); - TAknWindowLineLayout EEPWindowLayout; - if ( iPaneLayout == ELayoutPhraseCreation ) - { - EEPWindowLayout = - CAknFepChineseUIDataConv::AnyToWindowLine(iLafDataMgr->RequestData(EEEPWindowLayout)); - } - else - { - EEPWindowLayout = - CAknFepChineseUIDataConv::AnyToWindowLine(iLafDataMgr->RequestData(EEntryPaneWindowLine)); - } - AknLayoutUtils::LayoutControl(iEditPane, rect, EEPWindowLayout); - } - -void CAknFepUICtrlContainerChinese::SetControlVisibility() - { - TBool popupEnabled = iPinyinPopupWindow->IsEnabled(); - - switch(iPaneLayout) - { - case ELayoutCandidate: - // predicative candidate state - iInputPane->MakeVisible(EFalse); - iPhraseCreationLaf = EFalse; - break; - case ELayoutInput: - // input state - iInputPane->MakeVisible(!popupEnabled); - iPhraseCreationLaf = EFalse; - break; - case ELayoutPhraseCreation: - if ( !iPhraseCreationLaf ) - { - // input state - iInputPane->MakeVisible( !popupEnabled ); - } - else - { - iPhraseCreationLaf= EFalse; - } - default: - break; - } - } - -void CAknFepUICtrlContainerChinese::SetIsShownWithPopupWindows(TBool aValue) - { - if(!COMPARE_BOOLS(iIsShownWithPopupWindows,aValue)) - { - iIsShownWithPopupWindows = aValue; - // need to layout container first, so that the parent rect is the right size... - LayoutContainer(); - // ... now we can layout the rects relative to the resized parent - LayoutRects(); - // don't need to layout controls, only the rects are affected - DrawDeferred(); - } - } - -void CAknFepUICtrlContainerChinese::SetContainerPosition(TPoint aCurPos, TInt aHeight) - { - TRect parentRect; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, parentRect); - TInt windowHeight = 0; - TInt index = ConvertLayoutToIndex(); - - if ( index != 2 ) - { - windowHeight = - CAknFepChineseUIDataConv::AnyToInt( iLafDataMgr->RequestData( EPopupHeightEntry )); - isPCLPosed = EFalse; - } - else - { - windowHeight = CAknFepChineseUIDataConv::AnyToInt( iLafDataMgr->RequestData( EPopupHeightEEP )); - isPCLPosed = ETrue; - } - // Laf comments: In case there is enough space on the main pane to show the window under the entry, - // the window is placed 3 pixels below the text baseline of the entry. In case there is no space on - // the main pane to show the window fully under the entry, the window is placed 17(16 pixel font) or - // 13(12 pixel font) pixels above the baseline of the entry. - if(aCurPos.iY + 3 + windowHeight < parentRect.iBr.iY) - { - iContainerPosition.iY = aCurPos.iY + 3; - } - else - { - iContainerPosition.iY = aCurPos.iY - windowHeight - (aHeight + 1); - } - if ((( iContainerPosition.iY + windowHeight ) > parentRect.iBr.iY ) || - ( iContainerPosition.iY < parentRect.iTl.iY )) - { - iContainerPosition.iY = parentRect.iBr.iY - ( parentRect.iBr.iY - - parentRect.iTl.iY ) / 2 - windowHeight / 2; - } - LayoutContainer(); - } - -void CAknFepUICtrlContainerChinese::ShowHorizontalScrollArrows(TBool aValue) - { - iCandidatePane->ShowHorizontalScrollArrows(aValue); - } - -void CAknFepUICtrlContainerChinese::ShowVerticalScrollArrows(TBool aValue) - { - iCandidatePane->ShowVerticalScrollArrows(aValue); - } - -void CAknFepUICtrlContainerChinese::LayoutInputPane() - { - TRect rect = Rect(); - TAknWindowLineLayout entryPaneWindowLine = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( EEntryPaneWindowLine )); - TInt index = ConvertLayoutToIndex(); - if ( index == 2) - { - TInt eepPopupHeight = CAknFepChineseUIDataConv::AnyToInt( iLafDataMgr->RequestData( EPopupHeightEEP )); - TInt entryPopupHeight = CAknFepChineseUIDataConv::AnyToInt( iLafDataMgr->RequestData( EPopupHeightEntry )); - rect.iTl.iY = rect.iTl.iY + eepPopupHeight - entryPopupHeight; - } - AknLayoutUtils::LayoutControl(iInputPane, rect, entryPaneWindowLine); - } - -void CAknFepUICtrlContainerChinese::LayoutContainedControls() - { - LayoutInputPane(); - // layout candidate pane - TAknWindowLineLayout candidatePaneWindowLine = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( ECandidatePaneWindowLine )); - TInt index = ConvertLayoutToIndex(); - if (index == 2) - { - if ( isPCLPosed ) - { - iEditPane->Enable( ETrue ); - AknLayoutUtils::LayoutControl( iCandidatePane, Rect(), candidatePaneWindowLine ); - LayoutPinyinPopupWindow(); - LayoutPinyinEEPWindow(); - } - } - else if ( index == 0 || index == 1 ) - { - TRect rect = Rect(); - iEditPane->Enable(EFalse); - AknLayoutUtils::LayoutControl(iCandidatePane, rect, candidatePaneWindowLine); - LayoutPinyinPopupWindow(); - } - else - { - iEditPane->Enable(ETrue); - iPinyinPopupWindow->Enable(EFalse); - AknLayoutUtils::LayoutControl(iCandidatePane, Rect(), candidatePaneWindowLine); - LayoutPinyinEEPWindow(); - } - } - -void CAknFepUICtrlContainerChinese::LayoutContainer() - { - TInt layoutIndex = ConvertLayoutToIndex(); // 0 : input state layout, 1 : candidate state layout - TRect rect; - switch ( layoutIndex ) - { - case 2: - rect = CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData( EPopupRectEEP )); - break; - case 1: - rect = CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData( EPopupRectCandatate )); - break; - default: - rect = CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData( EPopupRectEntry )); - break; - } - TInt rectHeight = rect.iBr.iY - rect.iTl.iY; - rect.iTl.iY = iContainerPosition.iY; - rect.iBr.iY = iContainerPosition.iY + rectHeight; - SetRect(rect); - } - -void CAknFepUICtrlContainerChinese::LayoutRects() - { - TInt index = ConvertLayoutToIndex(); - TRect rect = Rect(); - - if ( index == 3 ) - { - index = 0; - } - - switch (index) // 0 : input state, 1: predicative candidate state - { - case 0: - iRectCoverMainPaneInput = CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectCoverMainPaneInputEntry )); - iRectFirstShadowInput= CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectFirstShadowInputEntry )); - iRectOutlineFrameInput= CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectOutlineFrameInputEntry )); - iRectInsideAreaInput= CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectInsideAreaInputEntry )); - break; - case 1: - iRectCoverMainPaneInput = CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectCoverMainPaneInputCandidate )); - iRectFirstShadowInput= CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectFirstShadowInputCandidate )); - iRectOutlineFrameInput= CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectOutlineFrameInputCandidate )); - iRectInsideAreaInput= CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectInsideAreaInputCandidate )); - break; - case 2: - iRectCoverMainPaneInput = CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectCoverMainPaneInputEEP)); - iRectFirstShadowInput= CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectFirstShadowInputEEP )); - iRectOutlineFrameInput= CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectOutlineFrameInputEEP )); - iRectInsideAreaInput= CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectInsideAreaInputEEP )); - break; - default: - break; - } - } - -void CAknFepUICtrlContainerChinese::HandleResourceChange(TInt aType) - { - // maybe should be KEikDynamicLayoutVariantSwitch_APAC, need to have a try after it's ready. - if(aType == KEikDynamicLayoutVariantSwitch) - { - LayoutContainer(); - } - else - { - CCoeControl::HandleResourceChange(aType); - } - } -void CAknFepUICtrlContainerChinese::SetControlInVisible( TBool aVisible ) - { - ShowVerticalScrollArrows( EFalse ); - if ( aVisible == EFalse ) - { - iCandidatePane->SetInVisiable(); - } - iPinyinPopupWindow->MakeVisible( EFalse ); - iInputPane->MakeVisible( EFalse ); - iPhraseCreationLaf= ETrue; - } - - -TInt& CAknFepUICtrlContainerChinese::IsPhraseCreation() - { - return iPhraseCreation; - } - -void CAknFepUICtrlContainerChinese::PhraseCreation( TBool aPhraseCreation ) - { - if ( iPhraseCreation != aPhraseCreation ) - { - iPhraseCreation = aPhraseCreation; - } - } - -void CAknFepUICtrlContainerChinese::SetFepMan( MAknFepManagerUIInterface* aFepMan ) - { - iFepMan = aFepMan; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlContainerJapanese.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlContainerJapanese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,169 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlContainerJapanese methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUIAvkonCtrlContainerJapanese.h" -#include "AknFepUIManagerJapanese.h" -#include "AknFepUICtrlCandidatePaneInterface.h" // MAknFepUiCtrlCandidatePaneInterface -#include "AknFepUIAvkonCtrlJapaneseCandidatePane.h" // CAknFepUICtrlJapaneseCandidatePane -#include "AknFepUIAvkonCtrlJapanesePredictivePane.h" // CAknFepUICtrlJapanesePredictivePane -#include "AknFepUiInterfacePanic.h" - -// CONSTANTS - -/** -* CAknFepUICtrlContainerJapanese class. -* -*/ - -//============================ MEMBER FUNCTIONS ============================== -MAknFepUICtrlContainerJapanese::~MAknFepUICtrlContainerJapanese() - { - } - -// --------------------------------------------------------------------------- -// CAknFepUICtrlContainerJapanese::NewL -// -// First phase construction -// --------------------------------------------------------------------------- -// -CAknFepUICtrlContainerJapanese* CAknFepUICtrlContainerJapanese::NewL(CAknFepUIManagerJapanese* aUiMng) - { - CAknFepUICtrlContainerJapanese* self = new(ELeave) CAknFepUICtrlContainerJapanese(); - CleanupStack::PushL(self); - self->ConstructL(aUiMng); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepUICtrlContainerJapanese::~CAknFepUICtrlContainerJapanese -// -// Destructor -// --------------------------------------------------------------------------- -// -CAknFepUICtrlContainerJapanese::~CAknFepUICtrlContainerJapanese() - { - if (iCandidatePaneArray) - { - iCandidatePaneArray->ResetAndDestroy(); - } - delete iCandidatePaneArray; - } - -// --------------------------------------------------------------------------- -// CAknFepUICtrlContainerJapanese::CandidatePane -// -// -// --------------------------------------------------------------------------- -// -MAknFepUICtrlCandidatePaneInterface* - CAknFepUICtrlContainerJapanese::CandidatePane(TAknFepUICtrlCandidatePaneId aId) - { - MAknFepUICtrlCandidatePaneInterface* candidatePane = NULL; - - switch(aId) - { - case EJapaneseCandidatePane: - { - candidatePane = iCandidatePaneArray->At(EJapaneseCandidatePane); - } - break; - - case EJapanesePredictiveCandidatePane: - { - candidatePane = iCandidatePaneArray->At(EJapanesePredictiveCandidatePane); - } - break; - - default: - { - AknFepUiInterfacePanic(EAknFepUiInterfacePanicNoCandidatePane); - } - } - return candidatePane; - } - -// --------------------------------------------------------------------------- -// CAknFepUICtrlContainerJapanese::CAknFepUICtrlContainerJapanese -// -// Default constructor -// --------------------------------------------------------------------------- -// -CAknFepUICtrlContainerJapanese::CAknFepUICtrlContainerJapanese() - { - } - -// --------------------------------------------------------------------------- -// CAknFepUICtrlContainerJapanese::ConstructL -// -// Second phase construction -// --------------------------------------------------------------------------- -// -void CAknFepUICtrlContainerJapanese::ConstructL(CAknFepUIManagerJapanese* aUiMng) - { - MAknFepUICtrlCandidatePaneInterface* candidatePane; - - iCandidatePaneArray = new(ELeave) CArrayPtrFlat(EJapaneseCandidatePaneMax); - - for(TInt i = 0; i < EJapaneseCandidatePaneMax; i++) - { - candidatePane = NULL; - switch(i) - { - case EJapaneseCandidatePane: - { - candidatePane = CAknFepUICtrlJapaneseCandidatePane::NewL(aUiMng); - } - break; - case EJapanesePredictiveCandidatePane: - { - candidatePane = CAknFepUICtrlJapanesePredictivePane::NewL(aUiMng); - } - break; - default: - { - AknFepUiInterfacePanic(EAknFepUiInterfacePanicNoCandidatePane); - } - break; - } - - if (candidatePane) - { - CleanupStack::PushL(candidatePane); - iCandidatePaneArray->AppendL(candidatePane); - CleanupStack::Pop(candidatePane); // candidatePane - } - else - { - iCandidatePaneArray->AppendL(candidatePane); - } - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlDualLanguageSettingData.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlDualLanguageSettingData.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -#include "AknFepUIAvkonCtrlDualLanguageSettingData.h" - -CAknFepDualLanguageSettingData *CAknFepDualLanguageSettingData::NewL() - { - CAknFepDualLanguageSettingData *self = CAknFepDualLanguageSettingData::NewLC(); - CleanupStack::Pop(self); - return self; - } - -CAknFepDualLanguageSettingData *CAknFepDualLanguageSettingData::NewLC() - { - CAknFepDualLanguageSettingData *self = new (ELeave) CAknFepDualLanguageSettingData(); - CleanupStack::PushL(self); - return self; - } - -CAknFepDualLanguageSettingData::~CAknFepDualLanguageSettingData() - { - if(iItems != NULL) - { - delete iItems; - } - if(iSecondaryItems != NULL) - { - delete iSecondaryItems; - } - } - -CAknFepDualLanguageSettingData::CAknFepDualLanguageSettingData() - { - } - -void CAknFepDualLanguageSettingData::LoadL(CDesCArrayFlat* aItems, - CDesCArrayFlat* aSecondaryItems, - TInt aCurrentValue, - TInt aCurrentSecondaryValue) - { - iItems = aItems; - iSecondaryItems = aSecondaryItems; - iCurrentValue = aCurrentValue; - iCurrentSecondaryValue = aCurrentSecondaryValue; - } - -void CAknFepDualLanguageSettingData::SaveL() const - { - } -//EOF diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlDualLanguageSettingDialog.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlDualLanguageSettingDialog.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,248 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "AknFepUIAvkonCtrlDualLanguageSettingDialog.h" -#include "AknFepUIAvkonCtrlDualLanguageSettingModel.h" -#include "AknFepUIAvkonCtrlDualLanguageSettingData.h" - -CAknFepDualLanguageSettingDialog *CAknFepDualLanguageSettingDialog::NewL(TInt aMenuResId) - { - CAknFepDualLanguageSettingDialog* self = CAknFepDualLanguageSettingDialog::NewLC(aMenuResId); - CleanupStack::Pop(self); - return self; - } - -CAknFepDualLanguageSettingDialog *CAknFepDualLanguageSettingDialog::NewLC(TInt aMenuResId) - { - CAknFepDualLanguageSettingDialog* self = new (ELeave) CAknFepDualLanguageSettingDialog(); - CleanupStack::PushL(self); - self->ConstructL(aMenuResId); - return self; - } - -CAknFepDualLanguageSettingDialog::CAknFepDualLanguageSettingDialog() - { - } - -CAknFepDualLanguageSettingDialog::~CAknFepDualLanguageSettingDialog() - { - delete iLangData; - delete iLanguages; - delete iSecondaryLanguages; - delete iModel; - } - -SEikControlInfo CAknFepDualLanguageSettingDialog::CreateCustomControlL(TInt /*aControlType*/) -{ - iModel = CAknFepDualLanguageSettingModel::NewL(); - // construct the data object the settings list will use - ReadSettingsDataL(); - - iSettingsList = CAknFepDualLanguageSettingList::NewL(iLangData, this); - - SEikControlInfo controlInfo; - controlInfo.iFlags = EEikControlHasEars; - controlInfo.iTrailerTextId = 0; - controlInfo.iControl = iSettingsList; - STATIC_CAST(CAknFepDualLanguageSettingList*, controlInfo.iControl)->SetContainerWindowL(*this); - - return controlInfo; -} - -CAknFepDualLanguageSettingDialog::TFormControlTypes CAknFepDualLanguageSettingDialog::ConvertCustomControlTypeToBaseControlType(TInt /*aControlType*/) const -{ - return EPopfieldDerived; -} - -TBool CAknFepDualLanguageSettingDialog::OkToExitL(TInt aButtonId) -{ - TBool retValue = EFalse; - switch(aButtonId) - { - case EAknSoftkeyBack: - retValue = ETrue; - break; - - case EAknSoftkeyOptions: - DisplayMenuL(); - break; - - case EAknSoftkeyChange: - EditItemL(EFalse); - break; - } - return retValue; -} - - -void CAknFepDualLanguageSettingDialog::ProcessCommandL(TInt aCommandId) - { - if(MenuShowing()) - HideMenu(); - - switch(aCommandId) - { - case EAknFepCmdPredSettingChange: - EditItemL(ETrue); - break; - case EAknCmdHelp: - break; - case EAknCmdExit: - // Pass the EAknCmdExit command to Avkon - // Framework - iAvkonAppUi->ProcessCommandL(aCommandId); - break; - } - } - -void CAknFepDualLanguageSettingDialog::ReadSettingsDataL() - { - if(iLangData == NULL) - { - iLangData = CAknFepDualLanguageSettingData::NewL(); - } - - // If the setting page has a list create array which contains all - // the items of the list in the setting page: - - //some dummy size of 10 - iLanguages = new( ELeave )CArrayFixFlat(10); - - iSecondaryLanguages = new( ELeave )CArrayFixFlat(10); - - //some dummy size of 10 - CDesCArrayFlat* items = new( ELeave )CDesCArrayFlat(10); - CleanupStack::PushL( items ); - - CDesCArrayFlat* secondaryItems = new( ELeave )CDesCArrayFlat(10); - CleanupStack::PushL( secondaryItems ); - - //TODO: Adding the GetLanguage and GetSecondaryLanguage APIs - iModel->GetLanguagesFromPtiL( NULL, iLanguages, items ); - iModel->GetSecondaryInputLanguagesL(iSecondaryLanguages, secondaryItems, - iCoeEnv); - - TInt i; - TInt currentItem = 0; - TInt currentItemSecondary = 0; - - //fetch the current value from model: - // current item is the decimal value of T9 language code from shared data - TInt currentInputLanguage = - iModel->LanguageL( CAknFepDualLanguageSettingModel::EAknFepDualLanguageSettingInputLanguage ); - - TInt currentInputLanguageSecondary = - iModel->LanguageL( CAknFepDualLanguageSettingModel::EAknFepDualLanguageSettingInputLanguageSecondary ); - - // total sum of available T9 dictionaries - TInt count = iLanguages->Count(); - - // compare sharedata languageCode with PtiLanguageCode array - // Ptilanguage <-> listindex converter - - for ( i=0;iCount(); - - // compare sharedata languageCode with PtiLanguageCode array - // Ptilanguage <-> listindex converter - - for ( i=0;iLoadL(items, secondaryItems, currentItem, currentItemSecondary); - - CleanupStack::Pop(secondaryItems); - CleanupStack::Pop(items); - } - -void CAknFepDualLanguageSettingDialog::SaveSettingsDataL() const - { - TInt index = iSettingsList->SettingItemArray()->ItemIndexFromVisibleIndex(iSettingsList->ListBox()->CurrentItemIndex()); - TInt curLang = (*iLanguages)[iLangData->CurrentValue()]; - - if(0 == index) - iModel->SetLanguageL( CAknFepDualLanguageSettingModel::EAknFepDualLanguageSettingInputLanguage, curLang ); - else - { - if(curLang == ELangTaiwanChinese || - curLang == ELangHongKongChinese || - curLang == ELangPrcChinese || - curLang == ELangJapanese || - curLang == ELangKorean ) - { - iModel->SetLanguageL( CAknFepDualLanguageSettingModel::EAknFepDualLanguageSettingInputLanguageSecondary, 0); - } - else - { - iModel->SetLanguageL( CAknFepDualLanguageSettingModel::EAknFepDualLanguageSettingInputLanguageSecondary, - (*iSecondaryLanguages)[iLangData->CurrentSecondaryValue()]); - } - } - } - -void CAknFepDualLanguageSettingDialog::EditItemL(TBool aCalledFromMenu) - { - iSettingsList->EditCurrentItemL(aCalledFromMenu); - TInt curLang = (*iLanguages)[iLangData->CurrentValue()]; - if(curLang == ELangTaiwanChinese || - curLang == ELangHongKongChinese || - curLang == ELangPrcChinese || - curLang == ELangJapanese || - curLang == ELangKorean ) - { - iSettingsList->HideSecondaryInputL(ETrue); - } - else - { - iSettingsList->HideSecondaryInputL(EFalse); - } - - iSettingsList->StoreSettingsL(); - SaveSettingsDataL(); - } \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlDualLanguageSettingList.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlDualLanguageSettingList.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,188 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "AknFepUIAvkonCtrlDualLanguageSettingList.h" - - -CAknFepDualLanguageSettingItem::CAknFepDualLanguageSettingItem( TInt aResourceId, TBool aPrimary, CAknFepDualLanguageSettingData* aData) - : CAknEnumeratedTextPopupSettingItem(aResourceId, (aPrimary?aData->iCurrentValue:aData->iCurrentSecondaryValue)) - , iData(aData), iPrimary(aPrimary) - { - } - -CAknFepDualLanguageSettingItem::~CAknFepDualLanguageSettingItem() - { - } - -void CAknFepDualLanguageSettingItem::CompleteConstructionL() - { - CAknEnumeratedTextPopupSettingItem::CompleteConstructionL(); - CArrayPtrFlat* dummyPtr = new (ELeave) CArrayPtrFlat(1); - CleanupStack::PushL(dummyPtr); - CArrayPtrFlat* items = new (ELeave) CArrayPtrFlat(10); - CleanupStack::PushL(items); - if(iPrimary) - { - for(TInt i = 0; i < iData->Items()->Count(); i++) - { - HBufC* buffer = HBufC::NewLC( 128 ); - (*buffer) = (*iData->Items())[i]; - CAknEnumeratedText* newItem = new (ELeave) CAknEnumeratedText(i, buffer); - CleanupStack::PushL(newItem); - items->AppendL(newItem); - CleanupStack::Pop(newItem); - CleanupStack::Pop(buffer); - } - SetEnumeratedTextArrays(items, dummyPtr); - SetInternalValue(iData->iCurrentValue); - SetExternalValue(iData->iCurrentValue); - } - else - { - for(TInt i = 0; i < iData->SecondaryItems()->Count(); i++) - { - HBufC* buffer = HBufC::NewLC( 128 ); - (*buffer) = (*iData->SecondaryItems())[i]; - CAknEnumeratedText* newItem = new (ELeave) CAknEnumeratedText(i, buffer); - CleanupStack::PushL(newItem); - items->AppendL(newItem); - CleanupStack::Pop(newItem); - CleanupStack::Pop(buffer); - } - SetEnumeratedTextArrays(items, dummyPtr); - SetInternalValue(iData->iCurrentSecondaryValue); - SetExternalValue(iData->iCurrentSecondaryValue); - } - CleanupStack::Pop(items); - CleanupStack::Pop(dummyPtr); - } - -CAknFepDualLanguageSettingList *CAknFepDualLanguageSettingList::NewL(CAknFepDualLanguageSettingData* aData, CAknFepDualLanguageSettingDialog* aDialog) - { - CAknFepDualLanguageSettingList* self = CAknFepDualLanguageSettingList::NewLC(aData, aDialog); - CleanupStack::Pop(self); - return self; - } - -CAknFepDualLanguageSettingList *CAknFepDualLanguageSettingList::NewLC(CAknFepDualLanguageSettingData* aData, CAknFepDualLanguageSettingDialog* aDialog) - { - CAknFepDualLanguageSettingList* self = new (ELeave) CAknFepDualLanguageSettingList(aData, aDialog); - CleanupStack::PushL(self); - return self; - } - -CAknFepDualLanguageSettingList::CAknFepDualLanguageSettingList(CAknFepDualLanguageSettingData* aData, CAknFepDualLanguageSettingDialog* aDialog) : - CAknSettingItemList(), iData(aData), iDialog(aDialog) - { - } - -CAknFepDualLanguageSettingList::~CAknFepDualLanguageSettingList() - { - // no specific destruction code required - no owned data - } - - -void CAknFepDualLanguageSettingList::SizeChanged() - { - // if size changes, make sure component takes whole available space - CEikFormattedCellListBox *listbox = ListBox(); - - if (listbox) - { - listbox->SetRect(Rect()); - } - } - -void CAknFepDualLanguageSettingList::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType) - { - if(aEventType == EEventEnterKeyPressed) - { - EditCurrentItemL(EFalse); - } - } - -void CAknFepDualLanguageSettingList::EditCurrentItemL(TBool aCalledFromMenu) - { - // invoke EditItemL on the current item - TInt index = SettingItemArray()->ItemIndexFromVisibleIndex(ListBox()->CurrentItemIndex()); - - EditItemL(index, aCalledFromMenu); // invoked from menu,or not - - StoreSettingsL(); - } - -CAknSettingItem * CAknFepDualLanguageSettingList::CreateSettingItemL (TInt aIdentifier) - { - // method is used to create specific setting item as required at run-time. - // aIdentifier is used to determine what kind of setting item should be - // created - - CAknFepDualLanguageSettingItem* settingItem = NULL; - - TInt language = 0; - CRepository* aknFepRepository = CRepository::NewLC(KCRUidAknFep); - aknFepRepository->Get( KAknFepInputTxtLang, language ); - - switch (aIdentifier) - { - case EAknFepDualLanguageSettingDualInputPrimary: - settingItem = new (ELeave) CAknFepDualLanguageSettingItem( - R_PRIMARY_INPUT_LANGUAGE_SETTING_PAGE, ETrue, iData); - break; - case EAknFepDualLanguageSettingDualInputSecondary: - settingItem = new (ELeave) CAknFepDualLanguageSettingItem( - R_SECONDARY_INPUT_LANGUAGE_SETTING_PAGE, EFalse, iData); - if(language == ELangTaiwanChinese || - language == ELangHongKongChinese || - language == ELangPrcChinese || - language == ELangJapanese || - language == ELangKorean ) - { - settingItem->SetHidden(ETrue); - } - break; - default: - break; - } - CleanupStack::PopAndDestroy( aknFepRepository ); - - return (CAknSettingItem*)settingItem; - } - -void CAknFepDualLanguageSettingList::HideSecondaryInputL(TBool aHidden) - { - SettingItemArray()->At(1)->SetHidden(aHidden); - HandleChangeInItemArrayOrVisibilityL(); - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlDualLanguageSettingModel.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlDualLanguageSettingModel.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,326 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - -#include -#include //For CAknAppUi -#include //CAknTitlePane -#include //For R_SECONDARY_WRITING_LANG_NONE -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "AknFepUIAvkonCtrlDualLanguageSettingModel.h" - -const TInt KAkFepDualLanguageMask = 0x03FF; -const TInt KAkFepDualLanguageBufSize128 = 128; - -CAknFepDualLanguageSettingModel* CAknFepDualLanguageSettingModel::NewL() - { - CAknFepDualLanguageSettingModel* self = new( ELeave ) CAknFepDualLanguageSettingModel(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -void CAknFepDualLanguageSettingModel::ConstructL() - { - iAknFepRepository = CRepository::NewL( KCRUidAknFep ); - } - -CAknFepDualLanguageSettingModel::~CAknFepDualLanguageSettingModel() - { - if(iAknFepRepository) - delete iAknFepRepository; - } -void CAknFepDualLanguageSettingModel::GetSecondaryInputLanguagesL( - CArrayFix* aSeedLanguages, - CDesCArray* aLanguageNames, - CCoeEnv* aCoeEnv) - { - CPtiEngine* ptiEngine = CPtiEngine::NewL(); - CleanupStack::PushL( ptiEngine ); - - CArrayFix* languageCodeArray = aSeedLanguages; - ptiEngine->GetAvailableLanguagesL( languageCodeArray ); - languageCodeArray->InsertL(0,0); // No secondary input language as the first item - - TInt count = languageCodeArray->Count(); - for ( TInt index = 0; index < count; ++index ) - { - const TInt langCode = languageCodeArray->At(index); - if(langCode == ELangTaiwanChinese || - langCode == ELangHongKongChinese || - langCode == ELangPrcChinese || - langCode == ELangJapanese || - langCode == ELangKorean ) - { - languageCodeArray->Delete(index); - count--; - index--; - } - } - - HBufC* noneString = StringLoader::LoadLC( R_SECONDARY_WRITING_LANG_NONE, aCoeEnv); - TPtr nonePtr( noneString->Des() ); - aLanguageNames->AppendL(nonePtr); - CleanupStack::PopAndDestroy( noneString ); - - HBufC* buffer = HBufC::NewLC( KAkFepDualLanguageBufSize128 ); - for ( TInt index = 1; index < count; ++index ) - { - const TInt langId = languageCodeArray->At( index ); - - TPtr ptrToBuffer( buffer->Des() ); - ptiEngine->GetLocalizedLanguageName( langId & KAkFepDualLanguageMask, - ptrToBuffer ); - - aLanguageNames->AppendL( ptrToBuffer ); - - ptrToBuffer.Zero(); - } - - CleanupStack::PopAndDestroy( buffer ); - CleanupStack::PopAndDestroy( ptiEngine ); - } -void CAknFepDualLanguageSettingModel::ShowDualInputLanguageSettingListL(CCoeEnv* aCoeEnv) - { - CAknAppUi* appUi = static_cast(aCoeEnv->AppUi()); - - CAknTitlePane* titlePane = static_cast( appUi->StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - - const TDesC* appTitle = titlePane->Text(); - HBufC* oldTitle = appTitle->AllocL(); - CleanupStack::PushL(oldTitle); - HBufC* title = StringLoader::LoadLC( R_INPUT_LANGUAGE_SETTINGS_TITLE, aCoeEnv); - titlePane->SetTextL( *title ); - CleanupStack::PopAndDestroy(title); - - //Launch dialog - - titlePane->SetTextL( *oldTitle ); - CleanupStack::PopAndDestroy(oldTitle); - } - - -// ================= DATA ACCESS FUNCTIONS ================== - -// ---------------------------------------------------------------------------- -// CAknFepDualLanguageSettingModel::GetLanguagesFromPtiL -// -// Utility routine to get available languages with Symbian OS codes -// ---------------------------------------------------------------------------- -// -void CAknFepDualLanguageSettingModel::GetLanguagesFromPtiL( - CArrayFix* aInstalledLangCodes, - CArrayFix* aSeedLanguages, - CDesCArray* aLanguageNames ) - { - CPtiEngine* ptiEngine = CPtiEngine::NewL(); - CleanupStack::PushL( ptiEngine ); - - CArrayFix* languageCodeArray = aSeedLanguages; - if ( aInstalledLangCodes ) - { - languageCodeArray = aInstalledLangCodes; - } - else - { - ptiEngine->GetAvailableLanguagesL( languageCodeArray ); - } - - HBufC* buffer = HBufC::NewLC( KAkFepDualLanguageBufSize128 ); - const TInt count = languageCodeArray->Count(); - for ( TInt index = 0; index < count; ++index ) - { - const TInt langId = languageCodeArray->At( index ); - - TPtr ptrToBuffer( buffer->Des() ); - ptiEngine->GetLocalizedLanguageName( langId & KAkFepDualLanguageMask, - ptrToBuffer ); - - if ( aInstalledLangCodes ) - { - aSeedLanguages->AppendL( langId ); - } - aLanguageNames->AppendL( ptrToBuffer ); - - ptrToBuffer.Zero(); - } - - CleanupStack::PopAndDestroy( buffer ); - CleanupStack::PopAndDestroy( ptiEngine ); - } - -TInt CAknFepDualLanguageSettingModel::LanguageL( TLanguageType aType ) - { - TInt Language = KErrNone; - switch ( aType ) - { - case EAknFepDualLanguageSettingInputLanguage: - { - User::LeaveIfError( - iAknFepRepository->Get( KAknFepInputTxtLang, Language ) ); - } - break; - case EAknFepDualLanguageSettingInputLanguageSecondary: - { - User::LeaveIfError( - iAknFepRepository->Get( KAknFepInputTxtLangSecondary, Language ) ); - } - break; - default: - break; - } - return Language; - - } - - -TBool CAknFepDualLanguageSettingModel::SetLanguageL( TLanguageType aType, TInt aLanguage ) - { - TBool ret = ETrue; - - switch( aType ) - { - case EAknFepDualLanguageSettingInputLanguage: - { - if( iAknFepRepository->Set( KAknFepInputTxtLang, - aLanguage ) != KErrNone ) - { - ret = EFalse; - } - - if(ret) - { - // now inform all open apps of the switch - TWsEvent event; - event.SetType(KEikInputLanguageChange); - CEikonEnv::Static()->WsSession().SendEventToAllWindowGroups(event); - CAknEnv::Static()->SettingCache().Update(KEikInputLanguageChange); - } - - // See if it cannot do predictive text entry - if( !CheckDictionaryFromPtiL( aLanguage ) ) - { - CAknNoteDialog* dlg = new (ELeave) CAknNoteDialog( ); - dlg->ExecuteDlgLD( - CAknNoteDialog::EShortTimeout, - CAknNoteDialog::ENoTone, - R_AVKON_T9_NOTE_NO_AVAILABLE ); - - } - } - break; - case EAknFepDualLanguageSettingInputLanguageSecondary: - { - if( iAknFepRepository->Set( KAknFepInputTxtLangSecondary, - aLanguage ) != KErrNone ) - { - ret = EFalse; - } - if(ret) - { - // now inform all open apps of the switch - // same event as primary input language change - TWsEvent event; - event.SetType(KEikInputLanguageChange); - CEikonEnv::Static()->WsSession().SendEventToAllWindowGroups(event); - CAknEnv::Static()->SettingCache().Update(KEikInputLanguageChange); - } - // Secondary input language does not need prediction - // so we don't check for it - } - break; - default: - break; - - } - return ret; - } - -// ---------------------------------------------------------------------------- -// CGSLangModel::CheckDictionaryFromPtiL -// -// Checks if the selected language supports predictive text input. -// In case this returns EFalse, the UI display's "Not available" -// for Predictive text input. -// ---------------------------------------------------------------------------- -// -TBool CAknFepDualLanguageSettingModel::CheckDictionaryFromPtiL( TInt aLangCode ) - { - TBool langSupport = EFalse; - - if ( FeatureManager::FeatureSupported( KFeatureIdChinese ) || - FeatureManager::FeatureSupported( KFeatureIdJapanese ) ) - { - langSupport = ETrue; - } - else - { - CPtiEngine* ptiEngine = CPtiEngine::NewL(); - CleanupStack::PushL( ptiEngine ); - - MPtiLanguage* ptiLang = ptiEngine->GetLanguage( aLangCode ); - if ( ptiLang ) - { - // the check here should be based on the keyboard - TInt keyboardLayout = 0; - RProperty::Get(KCRUidAvkon, KAknKeyBoardLayout, keyboardLayout); - TPtiKeyboardType layout = (TPtiKeyboardType)keyboardLayout; - switch(layout) - { - case EPtiKeyboardHalfQwerty: - langSupport = ptiLang->HasInputMode( (TPtiEngineInputMode)EPtiEngineHalfQwertyPredictive); - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - langSupport = ptiLang->HasInputMode( (TPtiEngineInputMode)EPtiEngineQwertyPredictive); - break; - case EPtiKeyboardNone: - case EPtiKeyboard12Key: - langSupport = ptiLang->HasInputMode( (TPtiEngineInputMode)EPtiEnginePredictive); - break; - default: - langSupport = ptiLang->HasInputMode( (TPtiEngineInputMode)EPtiEnginePredictive); - break; - } - - } - CleanupStack::PopAndDestroy( ptiEngine ); - ptiLang = NULL; - } - - return langSupport; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlExactWordPopupContent.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlExactWordPopupContent.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,225 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Contents of the exact word tooltip shown above inline editor -* when the exact word differs from the inline word in Western -* QWERTY predictive mode. -* -*/ - - - - - - - - - - - - -#include -#include -#include -#include -#include "AknFepUiAvkonCtrlExactWordPopupContent.h" - - -const TInt KArrowWidth = 10; -const TInt KArrowHeight = 5; - -CAknFepExactWordPopupContent* CAknFepExactWordPopupContent::NewL() - { - CAknFepExactWordPopupContent* self = new (ELeave) CAknFepExactWordPopupContent; - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - - -CAknFepExactWordPopupContent::CAknFepExactWordPopupContent() - : iIsPopUpVisible(EFalse) - , iLabel( NULL ) - , iPopupController( NULL ) - , iArrowDirection( EUpwards ) - { - } - - -void CAknFepExactWordPopupContent::ConstructL() - { - iLabel = new (ELeave) CEikLabel; - iLabel->SetTextL(KNullDesC); - - const CFont* font = AknLayoutUtils::FontFromId( AknLayout::Link_shortcut_title_texts_Line_1().FontId() ); - iLabel->SetFont(font); - - TRgb textColor(KRgbBlack); - iLabel->GetColor(EColorLabelText, textColor); - AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), textColor, - KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG20); - TRAP_IGNORE( AknLayoutUtils::OverrideControlColorL(*iLabel, EColorLabelText, textColor) ); - - TRect screenRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect ); - iLabel->SetRect( screenRect ); - SetRect( screenRect ); - - iPopupController = CAknPreviewPopUpController::NewL( *this, - CAknPreviewPopUpController::EPermanentMode ); - iPopupController->SetPopUpShowDelay(0); - } - -MAknFepUiWordPopupContent::~MAknFepUiWordPopupContent() - { - - } - -CAknFepExactWordPopupContent::~CAknFepExactWordPopupContent() - { - delete iLabel; - delete iPopupController; - } - - -void CAknFepExactWordPopupContent::SetTextL( const TDesC& aText ) - { - iLabel->SetTextL(aText); - } - - -void CAknFepExactWordPopupContent::SetArrowDirection( MAknFepUiWordPopupContent::TArrowDirection aDirection ) - { - iArrowDirection = aDirection; - } - - -TSize CAknFepExactWordPopupContent::MinimumSize() - { - // Ensure we are on top. Otherwise the popup would be left on background in many applications - // (e.g. Notes, ActiveNotes, Messaging, Contacts). - Window().SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront); - - TSize minSize = iLabel->MinimumSize(); - //minSize.iHeight *= 2; - return minSize; - } - - -void CAknFepExactWordPopupContent::Draw( const TRect& aRect ) const - { - TRect labelRect(aRect); - - if ( iPopupController ) - { - labelRect.SetSize( iPopupController->Size() ); - } - - // Reserve some space for the arrow, if it is going to be shown below the text - if ( iArrowDirection == EUpwards ) - { - labelRect.iTl.iY -= KArrowHeight; - } - - iLabel->SetRect( labelRect ); - iLabel->Draw( labelRect ); - - TRAP_IGNORE( DrawArrowL( aRect ) ); - } - - -void CAknFepExactWordPopupContent::DrawArrowL( const TRect& aTextRect ) const - { - CWindowGc& gc = SystemGc(); - gc.SetPenColor( iEikonEnv->ControlColor(EColorLabelText,*this) ); - gc.SetBrushColor( iEikonEnv->ControlColor(EColorControlBackground,*this) ); - gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); - - CArrayFix* arrow = new (ELeave) CArrayFixFlat(3); - CleanupStack::PushL(arrow); - - TPoint offset( aTextRect.iTl.iX + aTextRect.Width()/2 - KArrowWidth/2, 0 ); - - TPoint angle1; - TPoint angle2; - TPoint angle3; - - - if ( iArrowDirection == EDownwards ) - { - offset.iY = aTextRect.iTl.iY - KArrowHeight; - angle1.SetXY( 0, 0 ); - angle2.SetXY( KArrowWidth, 0 ); - angle3.SetXY( KArrowWidth/2, KArrowHeight ); - } - else // EUpwards - { - offset.iY = aTextRect.iBr.iY; - angle1.SetXY( 0, KArrowHeight ); - angle2.SetXY( KArrowWidth, KArrowHeight ); - angle3.SetXY( KArrowWidth/2, 0 ); - } - - arrow->AppendL( angle1 + offset ); - arrow->AppendL( angle2 + offset ); - arrow->AppendL( angle3 + offset ); - - gc.DrawPolygon(arrow); - CleanupStack::PopAndDestroy(arrow); - } - -void CAknFepExactWordPopupContent::SetPopUpShowDelay( const TTimeIntervalMicroSeconds32& aDelay ) - { - iPopupController->SetPopUpShowDelay( aDelay ); - } -void CAknFepExactWordPopupContent::ShowPopUp() - { - iIsPopUpVisible = ETrue; - iPopupController->ShowPopUp(); - } -void CAknFepExactWordPopupContent::HidePopUp() - { - iIsPopUpVisible = EFalse; - iPopupController->HidePopUp(); - } -void CAknFepExactWordPopupContent::SetPosition( const TPoint& aPoint ) - { - iPopupController->SetPosition( aPoint ); - } -void CAknFepExactWordPopupContent::UpdateContentSize() - { - iPopupController->UpdateContentSize(); - } -TSize CAknFepExactWordPopupContent::Size() const - { - return iPopupController->Size(); - } -TBool CAknFepExactWordPopupContent::IsPopUpVisible() - { - return iIsPopUpVisible; - } - -void CAknFepExactWordPopupContent::HandlePointerEventL( const TPointerEvent& aPointerEvent ) - { - if( !AknLayoutUtils::PenEnabled() ) - { - return; - } - - if (TPointerEvent::EButton1Down == aPointerEvent.iType) - { - TKeyEvent keyUp = {EKeyUpArrow, EStdKeyUpArrow, 0, 0}; - CCoeEnv::Static()->WsSession().SimulateKeyEvent(keyUp); - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlInputPane.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlInputPane.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,559 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlInputPane methods. -* -*/ - - - - - - - - - - - - -#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#endif -#include -#include -#include -#include -#include - -#include "AknFepUIAvkonCtrlInputPane.h" -#include "AknFepUIAvkonCtrlPinyinPopup.h" -#include "aknfepchineseuidataconv.h" -#include "aknfepuilayoutdatamgr.h" - -CAknFepUICtrlInputPane* CAknFepUICtrlInputPane::NewL(RWindow& aParent, - TInputPaneLayout aPaneLayout, - CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CAknFepUICtrlInputPane* self = new(ELeave) CAknFepUICtrlInputPane(aPaneLayout,aLafDataMgr); - CleanupStack::PushL(self); - self->ConstructL(aParent); - CleanupStack::Pop(); - return self; - } - -CAknFepUICtrlInputPane::~CAknFepUICtrlInputPane() - { - delete iBuffer; - delete iLabel; - delete iLabelToneMark; - } - -void CAknFepUICtrlInputPane::SetSizeChangedObserver( - MAknFepUICtrlPinyinPopupSizeChangedObserver* aObserver) - { - iSizeChangedObserver = aObserver; - } - -void CAknFepUICtrlInputPane::SetText(const TDesC& aDes) - { - // make sure that we only copy as many characters as we can show - if(iLayout == ELayoutPhraseInputPane) - { - TPtrC newText = aDes.Right(CalculateMaxTextLength(aDes)); - TPtr ptr = iBuffer->Des(); - - if(ptr != newText) - { - ptr.Copy(newText); - UpdateLabelContents(); - - if(iLayout == ELayoutPhraseInputPane) - { - iSizeChangedObserver->SelectionPopupSizeChanged(CAknFepUICtrlPinyinPopup::EMaxCandidates + 1); // indicate input pane layout - } - DrawNow(); - } - } - else - { - TPtrC newText= aDes.Right(iMaxInputChars - EMaxToneMarkLength); - TPtr ptr = iBuffer->Des(); - - if(ptr != newText) - { - ptr.Copy(newText); - UpdateLabelContents(); - - if(iLayout == ELayoutPhraseInputPane) - { - iSizeChangedObserver->SelectionPopupSizeChanged(CAknFepUICtrlPinyinPopup::EMaxCandidates + 1); // indicate input pane layout - } - DrawNow(); - } - } - } - -void CAknFepUICtrlInputPane::GetText(TDes& aText) const - { - aText.Copy(*iBuffer); - } - -void CAknFepUICtrlInputPane::SetHighlighted(TBool aHighlighted) - { - if(!COMPARE_BOOLS(iHighlighted, aHighlighted)) - { - iHighlighted = aHighlighted; - // need to change highlight colors - LayoutContainedControls(); - DrawDeferred(); - } - } - -TBool CAknFepUICtrlInputPane::Highlighted() const - { - return iHighlighted; - } - -void CAknFepUICtrlInputPane::SetToneMark(const TDesC& aToneMark) - { - TPtrC newText = aToneMark.Left(EMaxToneMarkLength); - TPtr tonePtr = iToneMarkBuffer.Des(); - - if(tonePtr != newText) - { - tonePtr.Copy(newText); - UpdateLabelContents(); - if(iLayout == ELayoutPhraseInputPane) - { - iSizeChangedObserver->SelectionPopupSizeChanged(CAknFepUICtrlPinyinPopup::EMaxCandidates + 1); - } - DrawDeferred(); - } - } - -void CAknFepUICtrlInputPane::GetToneMark(TDes& aToneMark) const - { - TInt length = aToneMark.MaxLength(); - TPtrC toneMark = iToneMarkBuffer.Left(length); - aToneMark.Copy(toneMark); - } - -void CAknFepUICtrlInputPane::SetToneMarkValidity(TBool aValid) - { - if(!COMPARE_BOOLS(iToneMarkValidity, aValid)) - { - iToneMarkValidity = aValid; - LayoutContainedControls(); - UpdateLabelContents(); - DrawDeferred(); - } - } - -void CAknFepUICtrlInputPane::SetLayoutIndex(TInt aIndex) - { - if(iLayoutIndex != aIndex) - { - iLayoutIndex = aIndex; - LayoutContainedControls(); - } - } - -void CAknFepUICtrlInputPane::SetOverrideFontId(TInt aFontId) - { - if(iFontId != aFontId) - { - iFontId = aFontId; - // need to update the layout, and then force the text to be formatted - LayoutContainedControls(); - UpdateLabelContents(); - DrawDeferred(); - } - } - -void CAknFepUICtrlInputPane::MakeTextVisible(TBool aVisible) - { - if(aVisible) - { - UpdateLabelContents(); - } - else - { - TRAP_IGNORE( - iLabel->SetTextL(KNullDesC); - iLabelToneMark->SetTextL(KNullDesC); - ); - } - } - -TInt CAknFepUICtrlInputPane::LabelTextWidthInPixels() const - { - TAknLayoutText layoutText = - CAknFepChineseUIDataConv::AnyToLayoutText( iLafDataMgr->RequestData( ELayoutInputPaneText )); - const CFont* font = layoutText.Font(); - - TInt labelWidthInPixels = 0; - if(font) - { - TBufC buf1; - TPtr ptr1 = buf1.Des(); - GetText(ptr1); - TBufC buf2; - TPtr ptr2 = buf2.Des(); - GetToneMark(ptr2); - labelWidthInPixels = font->TextWidthInPixels(ptr1); - labelWidthInPixels += font->TextWidthInPixels(ptr2); - } - TInt maxWidth = layoutText.TextRect().Width(); - labelWidthInPixels = labelWidthInPixels > maxWidth? maxWidth:labelWidthInPixels; - return labelWidthInPixels; - } - -void CAknFepUICtrlInputPane::SizeChanged() - { - LayoutContainedControls(); - } - -TInt CAknFepUICtrlInputPane::CountComponentControls() const - { - CCoeControl* controls[] = - { - iLabel, - iLabelToneMark - } ; - - TInt count = 0 ; - for (TUint ii = 0 ; ii < (sizeof(controls) / sizeof(CCoeControl*)) ; ii++) - { - if(controls[ii]) - { - count++ ; - } - } - return count ; - } - -CCoeControl* CAknFepUICtrlInputPane::ComponentControl(TInt aIndex) const - { - CCoeControl* controls[] = - { - iLabel, - iLabelToneMark - } ; - - for (TUint ii = 0; (ii < sizeof(controls) / sizeof(CCoeControl*)) ; ii++) - { - if (controls[ii] && aIndex-- == 0) - { - return controls[ii] ; - } - } - // shouldn't be called while no components. - return NULL ; - } - -void CAknFepUICtrlInputPane::Draw(const TRect& /*aRect*/) const - { - TBool skinnedDraw = EFalse; - CWindowGc& gc = SystemGc(); - - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - if(iHighlighted) - { - TRect outerRect; - TRect innerRect; - CalculateFrameRects(outerRect, innerRect); - skinnedDraw = AknsDrawUtils::DrawFrame( - skin, gc, outerRect, innerRect, KAknsIIDQsnFrList, KAknsIIDQsnFrListCenter); // or KAknsIIDDefault? - } - else - { - MAknsControlContext* cc = AknsDrawUtils::ControlContext(this); - skinnedDraw = AknsDrawUtils::Background(skin, cc, this, gc, Rect()); - } - - if(!skinnedDraw) - { - if(iHighlighted) - { - iUnselectedStringHighlight.DrawRect(gc); - } - else - { - gc.SetBrushColor(AKN_LAF_COLOR_STATIC(0)); - gc.Clear(iUnselectedStringHighlight.Rect()); - } - } - } - -void CAknFepUICtrlInputPane::ConstructL(RWindow& aParent) - { - SetContainerWindowL(aParent); - iBuffer = HBufC::NewL(iMaxInputChars); - - // force label to contain required number of characters from the outset - iLabel = new(ELeave) CEikLabel; - iLabel->SetBufferReserveLengthL(iMaxInputChars); // this will do a realloc now, so no need to later - iLabel->SetContainerWindowL(aParent); - iLabel->SetMopParent(this); - - iLabelToneMark = new(ELeave) CEikLabel; - iLabelToneMark->SetBufferReserveLengthL(EMaxToneMarkLength); // this will do a realloc now, so no need to later - iLabelToneMark->SetContainerWindowL(aParent); - iLabelToneMark->SetMopParent(this); - - } - -CAknFepUICtrlInputPane::CAknFepUICtrlInputPane(TInputPaneLayout aPaneLayout, CAknFepUiLayoutDataMgr* aLafDataMgr) - : - iHighlighted(EFalse), - iLayout(aPaneLayout), - iToneMarkValidity(ETrue), - iFlags(0), - iLafDataMgr(aLafDataMgr) - { - switch(iLayout) - { - case ELayoutPhraseInputPane: - iMaxInputChars = EMaxInputCharsInputPane; - break; - case ELayoutPhrasePinyinPopupPane: - iMaxInputChars = EMaxInputCharsPinyinPopup; - break; - default: - iMaxInputChars = EMaxInputCharsInputPane; - break; - }; - } - -void CAknFepUICtrlInputPane::UpdateLabelContents() - { - // add on the tone mark for the purposes of clipping - TBufC combinedBuffer; - TPtr combinedPtr = combinedBuffer.Des(); - combinedPtr.Copy(*iBuffer); - combinedPtr.Append(iToneMarkBuffer); - - TRect rect = Rect(); - if(iLayout == ELayoutPhrasePinyinPopupPane) - { - TAknLayoutRect layoutLineRectEntryPane = - CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ELayoutLineRectEntryPane )); - rect = layoutLineRectEntryPane.Rect(); - } - // avoid accessing text layout member data - TAknLayoutRect labelRect; - - TAknWindowLineLayout layoutEntryItem = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutEntryItem)); - labelRect.LayoutRect(rect, layoutEntryItem); - TAknLayoutText layoutText; - TAknTextLineLayout entryTextLine = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EEntryTextLayout)); - layoutText.LayoutText(labelRect.Rect(),entryTextLine); - TInt maxWidth = layoutText.TextRect().Width(); - - TAknLayoutText layoutText1 = - CAknFepChineseUIDataConv::AnyToLayoutText( iLafDataMgr->RequestData( ELayoutInputPaneText )); - const CFont* font = layoutText1.Font(); - - TInt labelWidthInPixels = 0; - if(font) - { - TBufC buf1; - TPtr ptr1 = buf1.Des(); - GetText(ptr1); - TBufC buf2; - TPtr ptr2 = buf2.Des(); - GetToneMark(ptr2); - labelWidthInPixels = font->TextWidthInPixels(ptr1); - labelWidthInPixels += font->TextWidthInPixels(ptr2); - } - - if(labelWidthInPixels > maxWidth) - { - AknTextUtils::ClipToFit( - combinedPtr, - *(iLabel->Font()), - maxWidth, - AknTextUtils::EClipFromBeginning, - KDefaultClipWidth, - KNullDesC); - } - - // now remove the tone mark again, as it has a separate label - TInt uncombinedLength = combinedPtr.Length() - iToneMarkBuffer.Length(); - if(uncombinedLength < 0) - uncombinedLength = 0; - combinedPtr.SetLength(uncombinedLength); // always shorter, so won't be bigger than max - - // ignore any errors... we have guaranteed that the descriptor already has sufficient characters to avoid a realloc - TRAP_IGNORE( - iLabel->SetTextL(combinedPtr); - iLabelToneMark->SetTextL(iToneMarkBuffer); - ); - } - -void CAknFepUICtrlInputPane::LayoutContainedControls() - { - TRect rect = Rect(); - if(iLayout == ELayoutPhraseInputPane) - { - TAknWindowLineLayout layoutEntryItem = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutEntryItem)); - iUnselectedStringHighlight.LayoutRect(rect, layoutEntryItem); - } - else if(iLayout == ELayoutPhrasePinyinPopupPane) - { - iUnselectedStringHighlight.LayoutRect(rect, AKN_LAYOUT_WINDOW_Input_highlight_Line_1(rect)); - } - - // layout spelling label - TAknTextLineLayout textLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EEntryTextLayout)); - TAknLayoutText layoutText; - TRect rectHighlight = iUnselectedStringHighlight.Rect(); - TRect textRect; - - layoutText.LayoutText(rectHighlight,textLayout); - textRect = layoutText.TextRect(); - TRgb labelTextColor = layoutText.Color(); - - TInt labelWidth = LabelTextWidthInPixels(); - if(textRect.Width() > labelWidth) - { - textRect.SetWidth(labelWidth); - } - iLabel->SetRect(textRect); - const CFont* font = layoutText.Font(); - iLabel->SetFont(font); - - // layout tone mark label - TRgb labelToneMarkTextColor = labelTextColor; - TRect toneMarkRect; - TPtrC ptr = *iBuffer; - TInt toneMarkOffset = 0; - - toneMarkOffset = iLabel->CalcMinimumSize(ptr).iWidth; - toneMarkRect.iTl.iX = textRect.iTl.iX + toneMarkOffset; - toneMarkRect.iTl.iY = textRect.iTl.iY; - toneMarkRect.iBr.iY = textRect.iBr.iY; - toneMarkRect.SetWidth(labelWidth - toneMarkOffset); - iLabelToneMark->SetRect(toneMarkRect); - iLabelToneMark->SetFont(font); - - // once we have layed out the labels from LAF, override the colours from the skin if necessary - // as the skin utils will only return RGB values, not colour ids. - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TInt colorIndex = EAknsCIQsnTextColorsCG19; - if (iHighlighted) - { - colorIndex = EAknsCIQsnTextColorsCG11; - } - - AknsUtils::GetCachedColor(skin, labelTextColor, KAknsIIDQsnTextColors, colorIndex); - - colorIndex = iToneMarkValidity ? EAknsCIQsnTextColorsCG10: EAknsCIQsnTextColorsCG11; - AknsUtils::GetCachedColor(skin, labelToneMarkTextColor, KAknsIIDQsnTextColors, colorIndex); - - TRgb tonemarkColor; - - if (iToneMarkValidity) - { - tonemarkColor = labelToneMarkTextColor; - } - else - { - tonemarkColor = KRgbGray; - } - - TRAP_IGNORE( - iLabel->OverrideColorL(EColorLabelText, labelTextColor); - iLabelToneMark->OverrideColorL(EColorLabelText, tonemarkColor); - ); - } - -void CAknFepUICtrlInputPane::CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const - { - TRect windowRect = Rect(); - TRect entryRect = - CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData(EEntryPaneRect)); - - windowRect.SetHeight(entryRect.iBr.iY - entryRect.iTl.iY); - - TAknLayoutRect topLeft; - topLeft.LayoutRect(windowRect,SkinLayout::Submenu_skin_placing_Line_2()); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect(windowRect, SkinLayout::Submenu_skin_placing_Line_5()); - - aOuterRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); - aInnerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); - if (aInnerRect.Width() <= 4) - { - aInnerRect.SetWidth(5); - } - } - -TInt CAknFepUICtrlInputPane::CalculateMaxTextLength(const TDesC& aDes) const - { - TAknLayoutText layoutText = - CAknFepChineseUIDataConv::AnyToLayoutText( iLafDataMgr->RequestData( ELayoutInputPaneText )); - TInt maxWidth = layoutText.TextRect().Width(); - TInt textWidth = 0; - - textWidth = aDes.Length(); - - while (maxWidth < CalculateTextLength(aDes.Right(textWidth))) - { - textWidth--; - } - - return textWidth; - } - -TInt CAknFepUICtrlInputPane::CalculateTextLength(const TDesC& aDes) const - { - TAknLayoutText layoutText = - CAknFepChineseUIDataConv::AnyToLayoutText( iLafDataMgr->RequestData( ELayoutInputPaneText )); - const CFont* font = layoutText.Font(); - - TInt labelWidthInPixels = 0; - if(font) - { - labelWidthInPixels = font->TextWidthInPixels(aDes); - } - - return labelWidthInPixels; - } - -void CAknFepUICtrlInputPane::SetLayout( TInputPaneLayout aPaneLayout ) - { - switch(aPaneLayout) - { - case ELayoutPhraseInputPane: - iMaxInputChars = EMaxInputCharsInputPane; - break; - case ELayoutPhrasePinyinPopupPane: - iMaxInputChars = EMaxInputCharsPinyinPopup; - break; - case ELayoutPhraseMiniQwertyZhuyin: - iMaxInputChars = EMaxInputCharsZhuyinPopup; - break; - default: - iMaxInputChars = EMaxInputCharsInputPane; - break; - }; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidateCellListBoxData.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidateCellListBoxData.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Candidate list -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include -#include - -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlJapaneseCandidateCellListBoxData.h" - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateCellListBoxData::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CAknFepUICtrlJapaneseCandidateCellListBoxData* - CAknFepUICtrlJapaneseCandidateCellListBoxData::NewL() - { - CAknFepUICtrlJapaneseCandidateCellListBoxData* self = - new(ELeave) CAknFepUICtrlJapaneseCandidateCellListBoxData; - self->ConstructLD(); - return self; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateCellListBoxData::Draw -// Draw items -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateCellListBoxData::Draw( - TListItemProperties aProperties, - CWindowGc& aGc, - const TDesC* aText, - const TRect& aRect, - TBool aHighlight, - const TColors& aColors) const - { - const TRect &aItemRect = aRect; - - DrawDefaultHighlight(aGc, aItemRect, aHighlight); - - // Draw the actual items. - DrawFormatted(aProperties, aGc, aText, aItemRect, aHighlight, aColors); - - aGc.Reset(); - - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateCellListBoxData::DrawDefaultHighlight -// Draw highlight item -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateCellListBoxData::DrawDefaultHighlight( - CWindowGc& aGc, - const TRect& aItemRect, - TBool aHighlight) const - { - if (aHighlight) - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TBool highlightDrawn = EFalse; - MAknsControlContext* cc = AknsDrawUtils::ControlContext(Control()); - if (!cc) - { - cc = SkinBackgroundContext(); - } - if (cc) - { - TAknLayoutRect topLeft; - topLeft.LayoutRect(aItemRect, - ELayoutEmpty, - 1, 1, ELayoutEmpty, ELayoutEmpty, 5, 5); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect(aItemRect, - ELayoutEmpty, - ELayoutEmpty, ELayoutEmpty, 1, 0, 5,5); - - TRect outerRect = - TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); - TRect innerRect = - TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); - aGc.SetPenStyle(CGraphicsContext::ENullPen); - - const TAknsItemID* skinHighlightFrameId = - &KAknsIIDQsnFrList; - const TAknsItemID* skinHighlightFrameCenterId = - &KAknsIIDQsnFrListCenter; - highlightDrawn = AknsDrawUtils::DrawFrame( - skin, - aGc, - outerRect, innerRect, - *skinHighlightFrameId, - *skinHighlightFrameCenterId); - } - - if (!highlightDrawn) - { - TAknLayoutRect highlightshadow; - TAknLayoutRect highlight; - highlightshadow.LayoutRect( - aItemRect, - AKN_LAYOUT_WINDOW_List_pane_highlight_graphics__various__Line_1(aItemRect)); - highlight.LayoutRect( - aItemRect, - AKN_LAYOUT_WINDOW_List_pane_highlight_graphics__various__Line_2(aItemRect)); - - highlightshadow.DrawRect(aGc); - highlight.DrawRect(aGc); - } - } - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidateHeadingPane.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidateHeadingPane.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Candidate list -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include - -#include -#include -#include -#include -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlJapaneseCandidateHeadingPane.h" - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateHeadingPane::SetParentRect -// Set rect of parent window -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateHeadingPane::SetParentRect( - const TRect& aParentRect) - { - iParentRect = aParentRect; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateHeadingPane::SizeChanged -// This function is called when changing window size. -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateHeadingPane::SizeChanged() - { - LayoutListHeadingPane(); - AknsUtils::RegisterControlPosition(this); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateHeadingPane::ActivateL -// This function is called when doing active -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateHeadingPane::ActivateL() - { - CCoeControl::ActivateL(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateHeadingPane::CountComponentControls -// Return a number of control in Heading Pane -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapaneseCandidateHeadingPane::CountComponentControls() const - { - return 1; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateHeadingPane::ComponentControl -// Return a control object -// ----------------------------------------------------------------------------- -// -CCoeControl* CAknFepUICtrlJapaneseCandidateHeadingPane::ComponentControl( - TInt /*aIndex*/) const - { - return Prompt(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateHeadingPane::LayoutListHeadingPane -// calculate layout from LAF information -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateHeadingPane::LayoutListHeadingPane() - { - TAknTextLineLayout textLayout = - AKN_LAYOUT_TEXT_Candidate_selection_list_texts_Line_1; - textLayout.il = 0; - - TRect parentRect(0, 0, iParentRect.Width(), iParentRect.Height()); - AknLayoutUtils::LayoutLabel(Prompt(), parentRect, textLayout); - - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TRgb color; - TInt error = AknsUtils::GetCachedColor( skin, - color, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG7 ); - if (!error) - { - // Ignore error - TRAP_IGNORE( AknLayoutUtils::OverrideControlColorL( - *Prompt(), - EColorLabelText, color ) ); - } - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidateListbox.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidateListbox.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,250 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Candidate list -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlJapaneseCandidateListbox.h" -#include "AknFepUIAvkonCtrlJapaneseCandidateListboxView.h" -#include "AknFepUIAvkonCtrlJapaneseCandidateCellListBoxData.h" - -// CONSTANTS -const TInt KLAFBaseListColumns = 3; - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateListbox::SetMaximumColumns -// Set maximum columns in listbox -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateListbox::SetMaximumColumns( - const TInt aMaximumColumns) - { - iMaximumColumns = aMaximumColumns; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateListbox::SizeChanged -// This function is called when changing window size. -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateListbox::SizeChanged() - { - CEikFormattedCellListBox& listBox = *this; - CFormattedCellListBoxItemDrawer* itemDrawer = listBox.ItemDrawer(); - - TAknWindowLineLayout textWindowLayout = - AKN_LAYOUT_WINDOW_list_single_popup_jap_candidate_pane( - 0, iMaximumColumns - KLAFBaseListColumns); - AknListBoxLayouts::SetupStandardListBox(listBox); - AknListBoxLayouts::SetupStandardFormListbox(itemDrawer); - AknListBoxLayouts::SetupListboxPos(listBox, textWindowLayout); - - { - TRgb color( KRgbBlack ); - // this does not modify color unless it gets a correct one - // no real need to check errors - AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), - color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 ); - itemDrawer->SetHighlightedTextColor( color ); - AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), - color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG7 ); - iItemDrawer->SetTextColor( color ); - } - - // setting text box size in listbox - TAknTextLineLayout textLineLayout = - AKN_LAYOUT_TEXT_List_pane_text__single_japan_fep__Line_1( - iMaximumColumns - KLAFBaseListColumns); - TSize itemSize = View()->ItemSize(); - - AknListBoxLayouts::SetupFormAntiFlickerTextCell( - listBox, itemDrawer, 0, textLineLayout, - TPoint(0, 0), - TPoint(itemSize.iWidth, itemSize.iHeight)); // CheckColor. - - CEikFormattedCellListBox::SizeChanged(); - - // Scroll bar - TAknWindowLineLayout scrollLineLayout = AknLayoutScalable_Avkon::scroll_pane_cp30().LayoutLine(); - scrollLineLayout.il = ELayoutEmpty; - if (Model()->NumberOfItems() <= iMaximumRows) - { - scrollLineLayout.iW = 0; - } - TRect scrollBarParent = TRect(TPoint(listBox.Rect().iTl), - TSize(listBox.Rect().Width() + scrollLineLayout.iW + scrollLineLayout.ir, - listBox.Rect().Height())); - AknLayoutUtils::LayoutVerticalScrollBar(iSBFrame, scrollBarParent, scrollLineLayout); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateListbox::MakeViewClassInstanceL -// Create view class -// ----------------------------------------------------------------------------- -// -CListBoxView* CAknFepUICtrlJapaneseCandidateListbox::MakeViewClassInstanceL() - { - return new(ELeave) CAknFepUICtrlJapaneseCandidateListboxView; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateListbox::CreateItemDrawerL -// Create ItemDrawer -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateListbox::CreateItemDrawerL() - { - CAknFepUICtrlJapaneseCandidateCellListBoxData* cellData = - CAknFepUICtrlJapaneseCandidateCellListBoxData::NewL(); - CleanupStack::PushL( cellData ); - - // getting font object - TAknTextLineLayout textLineLayout = - AKN_LAYOUT_TEXT_List_pane_text__single_japan_fep__Line_1(0); - const CFont* font = AknLayoutUtils::FontFromId(textLineLayout.iFont); - - iItemDrawer = - new(ELeave) CFormattedCellListBoxItemDrawer(Model(), font, cellData); - CleanupStack::Pop(cellData); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateListbox::SetMaximumRows -// Set maximum visible rows in listbox -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateListbox::SetMaximumRows( - const TInt aMaximumRows) - { - iMaximumRows = aMaximumRows; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateListbox::HandlePointerEventL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateListbox::HandlePointerEventL(const TPointerEvent& aPointerEvent) - { - const TInt old = CurrentItemIndex(); - CAknSinglePopupMenuStyleListBox::HandlePointerEventL(aPointerEvent); - switch (aPointerEvent.iType) - { - case TPointerEvent::EButton1Up: - break; - case TPointerEvent::EButton1Down: - { - if (CurrentItemIndex() != old) - { - ReportListBoxEventL(MEikListBoxObserver::EEventItemDraggingActioned);// need draw. - } - } - break; - default: - break; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateListbox::HandleScrollEventL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -void CAknFepUICtrlJapaneseCandidateListbox::HandleScrollEventL( - CEikScrollBar* aScrollBar, - TEikScrollEvent aEventType) - { - TInt oldThumbPos = (aEventType & KEikScrollEventBarMask) ? - iView->HScrollOffset() : iView->TopItemIndex(); - TInt newThumbPos = aScrollBar->ThumbPosition(); - TInt maxThumbPos = static_cast(Model())->NumberOfItems() - - MaximumRows(); - TBool update = ETrue; - TInt newThumbPosBeforeCorrecting = newThumbPos; - - if ((aEventType & KEikScrollEventBarMask) == KEikScrollEventFromVBar) - { - switch (aEventType) - { - case EEikScrollUp: - if ( oldThumbPos == 0 && (iListBoxFlags & ELoopScrolling)) - { - newThumbPos = maxThumbPos; - } - break; - case EEikScrollDown: - if ( oldThumbPos == maxThumbPos && (iListBoxFlags & ELoopScrolling) ) - { - newThumbPos = 0; - } - break; - case EEikScrollPageUp: - case EEikScrollPageDown: - case EEikScrollThumbDragVert: - break; - case EEikScrollThumbReleaseVert: - // in the case of drag events, the scrollbar automatically updates its thumb pos... - if(AknLayoutUtils::PenEnabled()) - { - update = EFalse; - } - break; - - default: - break; - } - if ( (!AknLayoutUtils::PenEnabled()) || update ) - { - iView->VScrollTo(newThumbPos); - if (aEventType != EEikScrollThumbDragVert) - { - aScrollBar->SetModelThumbPosition(iView->TopItemIndex()); - } - } - - // if event has changed thumb position, then update scroll bar - if ( AknLayoutUtils::PenEnabled() && newThumbPos != newThumbPosBeforeCorrecting ) - { - UpdateScrollBarThumbs(); - } - } - } - - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidateListboxView.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidateListboxView.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Candidate list -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include - -#include -#include -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlJapaneseCandidateListboxView.h" - -// ============================ MEMBER FUNCTIONS =============================== - -#define ITEM_EXISTS_BEGIN TInt no_of_items__ = iModel->NumberOfItems() -#define ITEM_EXISTS(x) (((x) > -1) && ((x) < no_of_items__)) - -#define ITEM_EXISTS_ONCE(x) (((x) > -1) && ((x) < iModel->NumberOfItems())) - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateListboxView::Draw -// Drawing listbox -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateListboxView::Draw( - const TRect* /*aClipRect*/) const - { - if (RedrawDisabled() || !IsVisible()) - return; - - if (iModel->NumberOfItems() > 0) - { - TInt firstPotentialItemIndex = iTopItemIndex; - TInt lastPotentialItemIndex = - iTopItemIndex + NumberOfItemsThatFitInRect(iViewRect) - 1; - TInt i; - ITEM_EXISTS_BEGIN; - for (i = firstPotentialItemIndex; i <= lastPotentialItemIndex; i++) - { - if (ITEM_EXISTS(i)) - { - DrawItem(i); - } - else - { - break; - } - } - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidateListboxView::DrawItem -// Drawing item of index appointed with an argument -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidateListboxView::DrawItem( - TInt aItemIndex) const - { - if (RedrawDisabled() || !IsVisible()) - { - return; - } - - if (((aItemIndex > -1) && (aItemIndex < iModel->NumberOfItems())) - && ItemIsVisible(aItemIndex)) - { - iItemDrawer->DrawItem( - aItemIndex, - ItemPos(aItemIndex), - ItemIsSelected(aItemIndex), - (aItemIndex == iCurrentItemIndex), - (iFlags & EEmphasized) > 0, - (iFlags & EDimmed) > 0); - } - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidatePane.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseCandidatePane.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,973 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Candidate list -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlJapaneseCandidateListbox.h" -#include "AknFepUIAvkonCtrlJapaneseCandidateHeadingPane.h" -#include "AknFepUIAvkonCtrlJapaneseCandidatePane.h" -#include "AknFepUIManagerJapanese.h" - -// CONSTANTS -const TInt KMaxTitleLength = 32; - -const TInt KMaxListRows = 7; -const TInt KMinListRows = 5; -const TInt KMaxListColumns = 9; -const TInt KMinListColumns = 3; -const TInt KLAFBaseListColumns = 3; -const TInt KLAFBaseListRows = 1; - -const TInt KLAFBelowTextBaseline = 2; -const TInt KLAFAboveTextBaseline = 1; -const TInt KListboxMarge = 4; - -/** -* CAknFepUICtrlJapaneseCandidatePane class. -* -*/ - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CAknFepUICtrlJapaneseCandidatePane* CAknFepUICtrlJapaneseCandidatePane::NewL(CAknFepUIManagerJapanese* aUiMng) - { - CAknFepUICtrlJapaneseCandidatePane* self = - new(ELeave) CAknFepUICtrlJapaneseCandidatePane(aUiMng); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); // self - return self; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::~CAknFepUICtrlJapaneseCandidatePane -// Destructor -// ----------------------------------------------------------------------------- -// -CAknFepUICtrlJapaneseCandidatePane::~CAknFepUICtrlJapaneseCandidatePane() - { - if (IsVisible()) - { - HideWindow(); - } - if (iListBox) - { - delete iListBox; - iListBox = NULL; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::ShowWindow -// Show Pop-up list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::ShowWindow() - { - RWindow& window=Window(); - //Set ordinal position to top - window.SetOrdinalPosition(0,ECoeWinPriorityFep); - window.SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren); - window.SetPointerCapture(ETrue); - TRAP_IGNORE( ActivateL()); - MakeVisible(ETrue); - DrawNow(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::CloseCandidateList -// Close Pop-up list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::CloseCandidateList() - { - CancelPopup(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::SetCurrentItemIndex -// Specify the cursor position of a pop-up list. -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::SetCurrentItemIndexL( - TInt aItemIndex, - TBool aDraw) - { - CTextListBoxModel* model = - static_cast(ListBox()->Model()); - TInt numOfItem = model->NumberOfItems(); - TBuf title; - title.Format(_L("%d / %d"), aItemIndex + 1, numOfItem); - SetTitleL(title); - - if (aDraw) - { - iListBox->SetCurrentItemIndexAndDraw(aItemIndex); - iTitle->DrawNow(); - } - else - { - iListBox->SetCurrentItemIndex(aItemIndex); - } - - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::SetOffsetPosition -// Specify the display position of a pop-up list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::SetOffsetPosition(TPoint aOffset) - { - iOffsetPosition = aOffset; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::SetWindowPosition -// Set the drawing position for candidate list popup window -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::SetWindowPosition( - const TPoint& aLeftSideOfBaseLine, TInt aHeight, TInt aAscent) - { - // getting rectangle for main pane - TRect screen = - TRect(0, 0, - AKN_LAYOUT_WINDOW_screen.iW, AKN_LAYOUT_WINDOW_screen.iH); - TAknLayoutRect main_pane; - main_pane.LayoutRect(screen, AKN_LAYOUT_WINDOW_main_pane(screen, 0, 1, 1)); - iMainPaneRect = main_pane.Rect(); - - TInt leftPos = aLeftSideOfBaseLine.iX; - if (leftPos < 0) - { - leftPos = iOffsetPosition.iX; - } - - TPoint windowOffset( - leftPos, - aLeftSideOfBaseLine.iY + aHeight - aAscent - iMainPaneRect.iTl.iY); - SetOffsetPosition(windowOffset); - - iSrcTextHeight = aHeight; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::ShowCandidateListL -// Show Pop-up list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::ShowCandidateListL( - CDesCArrayFlat* aItems, TInt aIndex, TInt aResourceID) - { - __ASSERT_DEBUG(aItems->Count() > 0, - AknFepUiInterfacePanic(EAknFepUiInterfacePanicCandidatesEmpty)); - - // Set listitems. - CTextListBoxModel* model = - static_cast(ListBox()->Model()); - model->SetItemTextArray(aItems); - model->SetOwnershipType(ELbmDoesNotOwnItemArray); - - iMaximumColumns = MaximumColumns(model); - iMaximumRows = MaximumRows(model); - - SetCurrentItemIndexL(aIndex, EFalse); - SetMaximumHeight(iMaximumRows); - - CAknFepUICtrlJapaneseCandidateListbox* listBox = - static_cast(ListBox()); - - listBox->SetMaximumColumns(iMaximumColumns); - - // Show popup list - TBool notShowingPopup = model->NumberOfItems() == 0 && iWindowType < 0x80; - if (!notShowingPopup) - { - const TSize screenSize=iCoeEnv->ScreenDevice()->SizeInPixels(); - iPopoutCba->SetBoundingRect(TRect(screenSize)); - } - - // Create a CBA for use with the popup - if (aResourceID) - { - UpdateCbaL(aResourceID); - } - - SetupWindowLayout(iWindowType); - - iListBox->SetListBoxObserver(this); - iPopoutCba->MakeVisible(ETrue); - - if (iMarkable) - { - // If markable, set the popup to observe event change events. - // Call HandleControlEvent to set the CBA appropriate to the 1st item - iListBox->SetObserver(this); - HandleControlEventL(iListBox, EEventStateChanged); - } - - if (IsVisible()) - { - DrawDeferred(); - } - else - { - ShowWindow(); - ActivateL(); - ShowWindowCbaL(); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::HideWindow -// Hide Pop-up list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::HideWindow() - { - MakeVisible(EFalse); - Window().SetPointerCapture(EFalse); - - iEikonEnv->RemoveFromStack(iPopoutCba); - - iPopoutCba->MakeVisible(EFalse); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::CurrentItemIndexOfCandidate -// Return a selected candidate item number currently -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapaneseCandidatePane::CurrentItemIndexOfCandidate() - { - return iListBox->CurrentItemIndex(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::MoveItem -// Move a current item in an appointed direction -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapaneseCandidatePane::MoveItem( - TAknFepUICtrlScroll aDirection) - { - __ASSERT_DEBUG(iListBox->IsVisible(), - AknFepUiInterfacePanic(EAknFepUiInterfacePanicNoCandidatePane)); - - TInt index = iListBox->CurrentItemIndex(); - - CTextListBoxModel* model = - static_cast(ListBox()->Model()); - const TInt numberOfItems = model->NumberOfItems(); - - switch(aDirection) - { - case EScrollUp: - { - --index; - if (index < 0) - index = numberOfItems - 1; - } - break; - - case EScrollDown: - { - ++index; - if (index >= numberOfItems) - index = 0; - } - break; - - default: - { - //Panic - AknFepUiInterfacePanic(EAknFepUiInterfacePanicCandidatePaneNotSupportScrollDirection); - } - break; - } - TRAPD(err, SetCurrentItemIndexL(index, ETrue)); - if (err != KErrNone) - { - HideWindow(); - index = 0; - } - return index; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::SetupWindowLayout -// Set up a window layout type -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::SetupWindowLayout( - AknPopupLayouts::TAknPopupLayouts /*aType*/) - { - HandleSizeChanged(Layout(), Heading(), ListBox(), this); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::AttemptExitL -// Set the title for the selection list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::AttemptExitL(TBool aAccept) - { - if (iReturn) //Always not null unless ExecuteLD leaves - *iReturn = aAccept; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::MopSupplyObject -// ----------------------------------------------------------------------------- -// -TTypeUid::Ptr CAknFepUICtrlJapaneseCandidatePane::MopSupplyObject(TTypeUid aId) - { - SetMopParent( iEikonEnv->EikAppUi() ); - return CAknPopupList::MopSupplyObject(aId); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::CAknFepUICtrlJapanesePredictivePane -// Constructor -// ----------------------------------------------------------------------------- -// -CAknFepUICtrlJapaneseCandidatePane::CAknFepUICtrlJapaneseCandidatePane(CAknFepUIManagerJapanese* aUiMng) - : iUiMng(aUiMng) - { - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::ConstructL() - { - // Create listbox. - CAknFepUICtrlJapaneseCandidateListbox* list = - new(ELeave) CAknFepUICtrlJapaneseCandidateListbox; - // "iListBox" member variable is defined in CAknPopupList class. - iListBox = list; - CAknPopupList::ConstructL( - iListBox, R_AKNFEP_SOFTKEYS_EMPTY_EMPTY_COMMIT, AknPopupLayouts::EMenuWindow); - - list->ConstructL(this, CEikListBox::ELeftDownInViewRect); - list->CreateScrollBarFrameL(ETrue); - list->ScrollBarFrame()->SetScrollBarVisibilityL( - CEikScrollBarFrame::EOff, - CEikScrollBarFrame::EAuto); - iEikonEnv->RemoveFromStack(this); - SetNonFocusing(); - MakeVisible(EFalse); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::SetTitleL -// Set the title for the selection list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::SetTitleL(const TDesC& aTitle) - { - if (!iTitle) - { - iTitle = new(ELeave) CAknFepUICtrlJapaneseCandidateHeadingPane; - iTitle->SetContainerWindowL(*this); - iTitle->ConstructL(aTitle); - iTitle->SetMopParent(iListBox); - } - else - { - iTitle->SetTextL(aTitle); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::HandleSizeChanged -// The handler function for size change -// Original function is AknPopupLayouts::HandleSizeChanged() -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::HandleSizeChanged( - TAknPopupWindowLayoutDef &aDef, - CAknPopupHeadingPane *aHeading, - CEikListBox *aListBox, - CCoeControl *aWindowOwningControl) - { - if ( aHeading ) - { - aHeading->SetLayout( CAknPopupHeadingPane::EListHeadingPane ); - aHeading->SetSkinFrameId(TAknsItemID()); - aHeading->SetSkinFrameCenterId(TAknsItemID()); - } - - TInt numofitems = aListBox->Model()->NumberOfItems(); - - TInt minItems = iMaximumRows; - TInt maxItems = KMaxListRows; - - if (aDef.iMaximumHeight) - { - maxItems = aDef.iMaximumHeight; - } - AknPopupLayouts::CheckRange(numofitems, minItems, maxItems); - CalcPopupMenuWindow(aDef, iMainPaneRect, numofitems); - SetupMenuPopupWindow(aDef, numofitems, aHeading != 0); - - CAknFepUICtrlJapaneseCandidateListbox* listbox = - static_cast(aListBox); - listbox->SetMaximumColumns(iMaximumColumns); - listbox->SetMaximumRows(iMaximumRows); - SetMaximumHeight(iMaximumRows); - - aWindowOwningControl->SetRect(AknPopupLayouts::WindowRect(aDef)); - HandleSizeAndPositionOfComponents(aDef, aListBox, aHeading); - - TRect windowRect = AknPopupLayouts::WindowRect(aDef); - MAknsControlContext *cc = AknsDrawUtils::ControlContext( aListBox ); - TBool defaultContext = EFalse; - if (!cc) - { - cc = aListBox->View()->ItemDrawer()->SkinBackgroundControlContext(); - defaultContext = ETrue; - } - - if (cc) - { - CAknsBasicBackgroundControlContext *bcc = - (CAknsBasicBackgroundControlContext*)cc; - TAknLayoutRect popupBgRect; - popupBgRect.LayoutRect( - windowRect, - ELayoutEmpty, - 0, 0, ELayoutEmpty, ELayoutEmpty, - windowRect.Size().iWidth, windowRect.Size().iHeight); - bcc->SetBitmap(KAknsIIDQsnFrPopupCenter); - if (defaultContext) - { - bcc->SetRect(popupBgRect.Rect()); - } - bcc->SetParentPos(aWindowOwningControl->PositionRelativeToScreen()); - if (defaultContext) - { - bcc->SetParentPos(TPoint(0,0)); - } - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::HandleDraw -// The handler function for Draw -// Original function is AknPopupLayouts::HandleDraw() -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::HandleDraw(CEikonEnv* /*aEikEnv*/, - CWindowGc& aGc, - const TAknPopupWindowLayoutDef& aDef, - CEikListBox* aListBox, - CAknPopupHeadingPane* aHeading) - { - TRect windowRect = - AknPopupLayouts::MenuRect(const_cast(aDef)); - MAknsSkinInstance *skin = AknsUtils::SkinInstance(); - MAknsControlContext *cc = AknsDrawUtils::ControlContext( aListBox ); - TBool windowFrameDrawn = EFalse; - if (!cc) - { - cc = aListBox->View()->ItemDrawer()->SkinBackgroundControlContext(); - } - - if (cc) - { - TRegionFix<2> dontDrawRegion; - TRegionFix<8> drawRegion; - if ( aListBox ) - { - dontDrawRegion.AddRect( aListBox->Rect() ); - } - if ( aHeading ) - { - dontDrawRegion.AddRect( aHeading->Rect() ); - } - drawRegion.AddRect( windowRect ); - drawRegion.SubRegion( dontDrawRegion ); - - const TAknsItemID *popupBgId = &KAknsIIDQsnBgPopupBackground; - TAknLayoutRect popupBgRect; - popupBgRect.LayoutRect(windowRect, SkinLayout::Popup_windows_skin_placing__background_slice__Line_1(windowRect)); - AknsDrawUtils::DrawCachedImage(skin, aGc, popupBgRect.Rect(), *popupBgId); - - const TAknsItemID *sliceId = &KAknsIIDQsnBgSlicePopup; - TAknLayoutRect sliceRect; - sliceRect.LayoutRect(windowRect, SkinLayout::Popup_windows_skin_placing__background_slice__Line_2()); - AknsDrawUtils::DrawCachedImage(skin, aGc, sliceRect.Rect(), *sliceId); - - // drawing frame - TAknLayoutRect topLeft; - topLeft.LayoutRect( - windowRect, - ELayoutEmpty, 0,0, ELayoutEmpty, ELayoutEmpty, KListboxMarge, KListboxMarge); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect( - windowRect, - ELayoutEmpty, - ELayoutEmpty, ELayoutEmpty, 0, 0, KListboxMarge, KListboxMarge); - - TRect outerRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); - TRect innerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); - aGc.SetPenStyle(CGraphicsContext::ENullPen); - const TAknsItemID *frameId = &KAknsIIDQsnFrPopup; - const TAknsItemID *frameCenterId = &KAknsIIDQsnFrPopupCenter; - aGc.SetClippingRegion( drawRegion ); - windowFrameDrawn = - AknsDrawUtils::DrawFrame( - skin, aGc, - outerRect, innerRect, *frameId, *frameCenterId); - aGc.CancelClippingRegion(); - } - - if (!windowFrameDrawn) - { - DrawWindowShadow( - aGc, aDef.iCover, - aDef.iSecond, aDef.iFirst, aDef.iOutline, aDef.iInside); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::CalcPopupMenuWindow -// Set up the information on a pop-up window -// Original function is AknPopupLayouts::CalcPopupMenuWindow() -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::CalcPopupMenuWindow( - TAknPopupWindowLayoutDef &aDef,const TRect& aRect, TInt /*num*/) - { - TAknLayoutRect popup_menu_window; - - TBool sizeDesideFlag = EFalse; - TInt adjustOffsetX = 0; - TInt adjustOffsetY = 0; - TInt i; - TAknWindowLineLayout lafwidth = - AknLayoutScalable_Avkon::popup_fep_japan_candidate_window(iMaximumColumns - KLAFBaseListColumns).LayoutLine(); - - // calculating the number of indication line again in order to be able to arrange under a plan position - for (i = iMaximumRows; i >= KLAFBaseListRows && !sizeDesideFlag; i--) - { - TAknWindowLineLayout laf = - AknLayoutScalable_Avkon::popup_fep_japan_candidate_window(i).LayoutLine(); - laf.il = 0; - laf.it = 0; - laf.iW = lafwidth.iW; - popup_menu_window.LayoutRect(aRect, laf); - // calculate a drawing position Y - TInt drawY = iMainPaneRect.iTl.iY + iOffsetPosition.iY - + KLAFBelowTextBaseline + popup_menu_window.Rect().Height(); - if (drawY < iMainPaneRect.iBr.iY) - { - adjustOffsetY = (-1) * KLAFBelowTextBaseline; - iMaximumRows = i; - sizeDesideFlag = ETrue; - } - if (iMaximumRows >= KMinListRows && i == KMinListRows) - { - break; - } - } - - // if popup window cannot be arranged under a plan positon, it try whether popup is arranged top or not. - // - for (i = iMaximumRows; i >= KLAFBaseListRows && !sizeDesideFlag; i--) - { - TAknWindowLineLayout laf = - AknLayoutScalable_Avkon::popup_fep_japan_candidate_window(i).LayoutLine(); - laf.il = 0; - laf.it = 0; - laf.iW = lafwidth.iW; - popup_menu_window.LayoutRect(aRect, laf); - // calculate a drawing position Y - TInt drawY = iMainPaneRect.iTl.iY + iOffsetPosition.iY - KLAFAboveTextBaseline - - iSrcTextHeight - popup_menu_window.Rect().Height(); - if (drawY > iMainPaneRect.iTl.iY) - { - adjustOffsetY = iSrcTextHeight + KLAFAboveTextBaseline + popup_menu_window.Rect().Height(); - iMaximumRows = i; - sizeDesideFlag = ETrue; - } - if (iMaximumRows >= KMinListRows && i == KMinListRows) - { - break; - } - } - - // In case popup window cannot be arrange both under and top, - // popup is shown on the bottom on screen. - if (!sizeDesideFlag) - { - TAknWindowLineLayout laf = - AknLayoutScalable_Avkon::popup_fep_japan_candidate_window(KMinListRows).LayoutLine(); - laf.il = 0; - laf.it = 0; - laf.iW = lafwidth.iW; - popup_menu_window.LayoutRect(aRect, laf); - adjustOffsetY = iMainPaneRect.iTl.iY + iOffsetPosition.iY + KLAFBelowTextBaseline - + popup_menu_window.Rect().Height() - - iMainPaneRect.iBr.iY; - iMaximumRows = KMinListRows; - sizeDesideFlag = ETrue; - } - - adjustOffsetX = - iMainPaneRect.iTl.iX - + iOffsetPosition.iX - + popup_menu_window.Rect().Width() - iMainPaneRect.iBr.iX; - adjustOffsetX = (adjustOffsetX > 0) ? adjustOffsetX : 0; - TPoint adjustOffset(-adjustOffsetX, -adjustOffsetY); - - aDef.iWindowRect = popup_menu_window.Rect(); - aDef.iWindowRect.Move(iOffsetPosition); - aDef.iWindowRect.Move(adjustOffset); - - // getting a information of shadow in candidate list - TRect window_rect = AknPopupLayouts::MenuRect(aDef); - - TAknWindowLineLayout laf1 = - AKN_LAYOUT_WINDOW_Candidate_selection_pop_up_window_graphics_Line_1( - aDef.iWindowRect); - laf1.iW = TInt16(aDef.iWindowRect.Width()); - TAknWindowLineLayout laf2 = - AKN_LAYOUT_WINDOW_Candidate_selection_pop_up_window_graphics_Line_2( - aDef.iWindowRect); - laf2.iW = TInt16(aDef.iWindowRect.Width() - 4); - TAknWindowLineLayout laf3 = - AKN_LAYOUT_WINDOW_Candidate_selection_pop_up_window_graphics_Line_3( - aDef.iWindowRect); - laf3.iW = TInt16(aDef.iWindowRect.Width() - 3); - TAknWindowLineLayout laf4 = - AKN_LAYOUT_WINDOW_Candidate_selection_pop_up_window_graphics_Line_4( - aDef.iWindowRect); - laf4.iW = TInt16(aDef.iWindowRect.Width() - 5); - - aDef.iCover.LayoutRect(window_rect, laf1); - aDef.iSecond.LayoutRect(window_rect, laf2); - aDef.iFirst.LayoutRect(window_rect, laf2); - aDef.iOutline.LayoutRect(window_rect, laf3); - aDef.iInside.LayoutRect(window_rect, laf4); - aDef.iPopupMenuWindowOffset = TPoint(0, 0); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::SetupMenuPopupWindow -// Set up the information on a pop-up window -// Original function is AknPopupLayouts::SetupMenuPopupWindow() -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::SetupMenuPopupWindow( - TAknPopupWindowLayoutDef &aDef, TInt /*num*/, TBool /*heading*/) - { - AknPopupLayouts::SetupDefaults(aDef); - TRect window_rect = AknPopupLayouts::MenuRect(aDef); - - // setting window size of listbox pane - // Those arguments aren't used in it. - TAknWindowLineLayout laf = AKN_LAYOUT_WINDOW_candidate_pane(0,0); - TAknWindowLineLayout textWindowLayout = - AKN_LAYOUT_WINDOW_list_single_popup_jap_candidate_pane(0,0); - laf.ib = ELayoutEmpty; - laf.iH = iMaximumRows * textWindowLayout.iH; - aDef.iListRect.LayoutRect(window_rect, laf); - - // setting window size of heading pane - // calculating window size of heading pane based on a shadow of popup window - // - TAknTextLineLayout lafHead = - AknLayoutScalable_Avkon::popup_fep_japan_candidate_window_t1().LayoutLine(); - - TRect rectFirstShadow = aDef.iFirst.Rect(); - TRect rectListBox = aDef.iListRect.Rect(); - laf.it = (TInt16)(rectFirstShadow.iTl.iY - window_rect.iTl.iY); - laf.ib = ELayoutEmpty; - laf.iH = (TInt16)(rectListBox.iTl.iY - rectFirstShadow.iTl.iY); - aDef.iHeadingRect.LayoutRect(window_rect, laf); - - CAknFepUICtrlJapaneseCandidateHeadingPane* headingPane = - static_cast(Heading()); - headingPane->SetParentRect(aDef.iWindowRect); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::HandleSizeAndPositionOfComponents -// The handler function for size and a location -// Original function is AknPopupLayouts::HandleSizeAndPositionOfComponents() -// -// -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::HandleSizeAndPositionOfComponents( - const TAknPopupWindowLayoutDef &aDef, - CCoeControl *aContent, - CAknPopupHeadingPane *aHeading) - { - TRect lbrect = aDef.iListRect.Rect(); - TRect headrect; - - if (AknLayoutUtils::ScalableLayoutInterfaceAvailable()) - { - // set scroll size - CAknFepUICtrlJapaneseCandidateListbox* listBox = - static_cast(aContent); - CTextListBoxModel* model = static_cast(listBox->Model()); - const TInt items = model->NumberOfItems(); - if (items > listBox->MaximumRows()) - { - TAknWindowLineLayout scrollllinelayout = AknLayoutScalable_Avkon::scroll_pane_cp30().LayoutLine(); - lbrect.iBr.iX -= scrollllinelayout.iW; - } - } - - // set listbox view rectangle - aContent->SetRect(lbrect); - if (aHeading) - { - headrect = aDef.iHeadingRect.Rect(); - aHeading->SetRect(headrect); - } - - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::DrawWindowShadow -// Draw window shadow -// -// Original function is AknDrawWithSkins::DrawWindowShadow() -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::DrawWindowShadow( - CWindowGc &aGc, - const TAknLayoutRect &aCoverRect, - const TAknLayoutRect &aSecondShadowRect, - const TAknLayoutRect &aFirstShadowRect, - const TAknLayoutRect &aOutlineFrameRect, - const TAknLayoutRect &aInsideAreaRect) - { - MAknsSkinInstance *skin = AknsUtils::SkinInstance(); - - TInt x2 = aFirstShadowRect.Rect().iTl.iX; - TInt x3 = aSecondShadowRect.Rect().iTl.iX; - - TInt y2 = aFirstShadowRect.Rect().iTl.iY; - TInt y3 = aSecondShadowRect.Rect().iTl.iY; - - TInt x4 = aOutlineFrameRect.Rect().iBr.iX; - TInt x5 = aFirstShadowRect.Rect().iBr.iX; - TInt x6 = aSecondShadowRect.Rect().iBr.iX; - - TInt y4 = aOutlineFrameRect.Rect().iBr.iY; - TInt y5 = aFirstShadowRect.Rect().iBr.iY; - TInt y6 = aSecondShadowRect.Rect().iBr.iY; - - aGc.SetBrushColor(aCoverRect.Color()); - AknsDrawUtils::Background(skin, NULL, NULL, aGc, aCoverRect.Rect()); - AknsDrawUtils::BackgroundBetweenRects( - skin, NULL, NULL, aGc, - TRect(x2,y2,x4-1,y4-1), aInsideAreaRect.Rect()); - - aOutlineFrameRect.DrawOutLineRect(aGc); - aGc.SetBrushColor(aFirstShadowRect.Color()); - aGc.Clear(TRect(x2,y4,x5,y5)); - aGc.Clear(TRect(x4,y2,x5,y4)); - aGc.SetBrushColor(aSecondShadowRect.Color()); - aGc.Clear(TRect(x3,y5,x6,y6)); - aGc.Clear(TRect(x5,y3,x6,y5)); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::MaximumColumns -// This function returns maximum columns to be able to display in listbox. -// ----------------------------------------------------------------------------- -TInt CAknFepUICtrlJapaneseCandidatePane::MaximumColumns( - CTextListBoxModel* aModel) - { - TInt maximumCharacters = 0; - TInt numberOfItems = aModel->NumberOfItems(); - TInt i; - for (i = 0; i < numberOfItems; i++) - { - TPtrC text = aModel->ItemText(i); - TInt textLength = text.Length(); - if (maximumCharacters < textLength) - { - maximumCharacters = textLength; - } - } - - TInt maximumColumns = Min(KMaxListColumns, maximumCharacters); - maximumColumns = Max(KMinListColumns, maximumColumns); - - return maximumColumns; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::MaximumRows -// This function returns maximum rows to be able to display in listbox. -// ----------------------------------------------------------------------------- -TInt CAknFepUICtrlJapaneseCandidatePane::MaximumRows( - CTextListBoxModel* aModel) - { - TInt numberOfItems = aModel->NumberOfItems(); - TInt maximumRows = Min(KMaxListRows, numberOfItems); - - return maximumRows; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::Draw -// Called by the framework to draw the control -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::Draw(const TRect& /*aRect*/) const - { - CWindowGc& gc = SystemGc(); - gc.Clear(); - HandleDraw(iEikonEnv, gc, Layout(), iListBox, Heading()); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::OfferKeyEventL -// Handle key events. When a key event occurs -// ----------------------------------------------------------------------------- -// -TKeyResponse CAknFepUICtrlJapaneseCandidatePane::OfferKeyEventL( - const TKeyEvent& /*aKeyEvent*/,TEventCode /*aType*/) - { - return EKeyWasNotConsumed; - } - -void CAknFepUICtrlJapaneseCandidatePane::ShowWindowCbaL() - { - RDrawableWindow* cbaWindow = iPopoutCba->ButtonGroup()->AsControl()->DrawableWindow(); - cbaWindow->SetOrdinalPosition(0,ECoeWinPriorityFep); - cbaWindow->SetFaded(EFalse, RWindowTreeNode::EFadeWindowOnly); - cbaWindow->SetNonFading(ETrue); - iEikonEnv->EikAppUi()->AddToStackL(iPopoutCba, - ECoeStackPriorityFep, - ECoeStackFlagRefusesFocus); - iPopoutCba->ActivateL(); - iPopoutCba->MakeVisible(ETrue); - iPopoutCba->DrawDeferred(); // to update the cba - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::ProcessCommandL -// Processes events from the softkeys. Responds to EAknSoftkeyOk and EAknSoftkeyBack -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::ProcessCommandL(TInt aCommandId) - { - // Respond to softkey events - switch (aCommandId) - { - case EAknFepSoftkeyCommit: - iUiMng->HandleCommandL(aCommandId); - break; - case EAknFepSoftkeyRetroActiveHalf: - case EAknFepSoftkeyRetroActiveFull: - iUiMng->HandleCommandL(aCommandId); - break; - default: - CAknPopupList::ProcessCommandL(aCommandId); - break; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::UpdateCbaL -// Changing the cba -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::UpdateCbaL(TInt aResourceID) - { - if (iCurrentResource == aResourceID) - { - return; - } - - // store resource id - iPopoutCba->SetCommandSetL( aResourceID ); - iCurrentResource = aResourceID; - iPopoutCba->DrawDeferred(); - } - -// CallBack from ListBox -// --------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseCandidatePane::HandleListBoxEventL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseCandidatePane::HandleListBoxEventL( - CEikListBox* /*aListBox*/, TListBoxEvent aEventType) - { - switch (aEventType) - { - case EEventItemDraggingActioned: // Item Moved - DrawNow(); - break; - case EEventItemClicked: - { - TKeyEvent ccpuStart = {EKeyOK, EStdKeyDevice3, 0, 0}; - iEikonEnv->SimulateKeyEventL(ccpuStart, EEventKey); - } - break; - default: - break; - } - } -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseKutenQueryDialog.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapaneseKutenQueryDialog.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,454 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Kuten code query dialog -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include - -#include -#include -#include -#include // CAknInformationNote -#include -#include -#include //keys -#include -#include - -#include "AknFepUIAvkonCtrlJapaneseKutenQueryDialog.h" - -// MACROS - -// CONSTANTS -const TInt KKutenCodeLength = 4; -const TInt KDummyUnicode = 0xfffd; -const TInt KTextKutenCodeErrorMaxSize = 32; -const TText KHalfWidthNotSign = 0x00AC; -const TText KFullWidthNotSign = 0xFFE2; - -// ================= MEMBER FUNCTIONS ========================================= - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseKutenQueryDialog::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CAknFepUICtrlJapaneseKutenQueryDialog* -CAknFepUICtrlJapaneseKutenQueryDialog::NewL(TInt& aCharCode, const TTone& aTone) - { - CAknFepUICtrlJapaneseKutenQueryDialog* self = - new (ELeave) CAknFepUICtrlJapaneseKutenQueryDialog(aCharCode, aTone); - - return self; - } - -// ---------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseKutenQueryDialog::~CAknFepUICtrlJapaneseKutenQueryDialog() -// Destructor. -// ---------------------------------------------------------------------------- -// -CAknFepUICtrlJapaneseKutenQueryDialog::~CAknFepUICtrlJapaneseKutenQueryDialog() - { - } - -// ---------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseKutenQueryDialog::OfferKeyEventL -// -// ---------------------------------------------------------------------------- -// -TKeyResponse CAknFepUICtrlJapaneseKutenQueryDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent, - TEventCode aType) -{ - if (aType == EEventKey) - { - TInt keyCode = aKeyEvent.iCode; - switch(keyCode) - { - case EPtiKey0: - case EPtiKey1: - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - { - if (iDataText.Length() == KKutenCodeLength) - { - if (SoundSystem()) - { - SoundSystem()->PlaySound(EErrorTone); - } - } - } - break; - default: - break; - } - } - return CAknTextQueryDialog::OfferKeyEventL(aKeyEvent, aType); -} - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseKutenQueryDialog::OkToExitL -// This function is called in case pressing OK or Cancel -// ----------------------------------------------------------------------------- -// -TBool CAknFepUICtrlJapaneseKutenQueryDialog::OkToExitL(TInt aButtonId) - { - TBool checkResult = EFalse; - iCharCode = ConvertKutenCode2Unicode(); - if (iCharCode > 0) - { - checkResult = CAknTextQueryDialog::OkToExitL(aButtonId); - } - else - { - TResourceReader reader; - TBufC string; - CCoeEnv::Static()->CreateResourceReaderLC(reader, R_AKNFEP_TEXT_KUTEN_INVALID_ERROR); - string = reader.ReadTPtrC(); - CleanupStack::PopAndDestroy(); // reader - - CAknInformationNote* dialog = new(ELeave) CAknInformationNote(); - dialog->ExecuteLD(string); - - CAknQueryControl* control = QueryControl(); - if (control) - { - control->SetTextL(KNullDesC); - control->DrawNow(); - } - - UpdateLeftSoftKeyL(); - } - - return checkResult; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseKutenQueryDialog::UpdateLeftSoftKeyL -// Updating left softkey -// -// If control text is ok then display left soft key -// otherwise don't -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseKutenQueryDialog::UpdateLeftSoftKeyL() - { - CAknQueryControl* control = QueryControl(); - if ( control ) - { - MakeLeftSoftkeyVisibleL(); - } - } - -// ---------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseKutenQueryDialog::CAknFepUICtrlJapaneseKutenQueryDialog() -// Overload constructor. -//----------------------------------------------------------------------------- -// -CAknFepUICtrlJapaneseKutenQueryDialog::CAknFepUICtrlJapaneseKutenQueryDialog( - TInt& aCharCode, const TTone& aTone) - : CAknTextQueryDialog(iBuffer, aTone), - iCharCode(aCharCode), - iCbaResId(R_AVKON_SOFTKEYS_CANCEL) - { - iCharCode = 0; - } - -TInt CAknFepUICtrlJapaneseKutenQueryDialog::ExecuteLD(TInt aResourceId) - { - PrepareLC(aResourceId); - CEikEdwin* edwin = STATIC_CAST(CEikEdwin*, (QueryControl()->ControlByLayoutOrNull(EDataLayout))); - edwin->SetAknEditorAllowedInputModes(EAknEditorNumericInputMode); - edwin->SetAknEditorNumericKeymap(EAknEditorPlainNumberModeKeymap); - return(RunLD()); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseKutenQueryDialog::MakeLeftSoftkeyVisibleL -// Set visibility of the left softkey. -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapaneseKutenQueryDialog::MakeLeftSoftkeyVisibleL() - { - TBool visible = EFalse; - CAknQueryControl* control = QueryControl(); - if (control) - { - control->GetText(iDataText); - if (iDataText.Length() == KKutenCodeLength) - { - visible = ETrue; - } - } - else - { - visible = EFalse; - } - - TUint resid = R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY; - if (visible) - { - resid = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - } - if (iCbaResId != resid) - { - ButtonGroupContainer().SetCommandSetL(resid); - ButtonGroupContainer().DrawDeferred(); - iCbaResId = resid; - } - - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapaneseKutenQueryDialog::ConvertKutenCode2Unicode -// Convert from Kuten code to unicode, Kuten code is 4 characters which inputted in query dialog. -// ----------------------------------------------------------------------------- -TText CAknFepUICtrlJapaneseKutenQueryDialog::ConvertKutenCode2Unicode() - { - TText code = 0; - if (iBuffer.Length() == KKutenCodeLength) - { - TBuf<4 + 1> buf; - TBool valid = ETrue; - buf.FillZ(4 + 1); - - for (TInt i = 0; i < KKutenCodeLength; ++i) - { - if ((iBuffer[i] >= '0') && (iBuffer[i] <= '9')) - { - buf[i] = (TText)(iBuffer[i] - '0'); - } - else - { - valid = EFalse; - break; - } - } - if (valid) - { - TInt hi_code = buf[0] * 10 + buf[1] + 0x20; - TInt low_code = buf[2] * 10 + buf[3] + 0x20; - code = (TText)((hi_code << 8) + low_code); - AdjustJisCode(code); - code = JisToSjis((TText)code); - if (AdjustSjisCode(code)) - { - code = ConvSjisToUnicode(code); - } - else - { - code = 0; - } - } - } - - // '0244" Kuten codes is converted to '0x00AC' unicode of half-width - // character. In Japanese variant, Kuten code input must be always - // Full-width character, so it converts from '0x00AC' to '0xFFE2' - if (code == KHalfWidthNotSign) - { - code = KFullWidthNotSign; - } - - return code; - } - -void CAknFepUICtrlJapaneseKutenQueryDialog::AdjustJisCode(TText& aJisCode) - { - TUint JisHi = (aJisCode >> 8) & 0x000000ff; - TUint JisLow = aJisCode & 0x000000ff; - - if ((JisHi < EJisFirstMin) || (JisHi > EJisFirstMax)) - { - JisHi = 0; - JisLow = 0; - } - else - { - if ((JisLow < EJisSecondMin) || (JisLow > EJisSecondMax)) - { - JisHi = 0; - JisLow = 0; - } - else - { - if (JisHi == EJisFirstMax) - { - if (JisLow > EJisLastSecondMax) - { - JisHi = 0; - JisLow = 0; - } - } - } - } - - aJisCode = (TText)((JisHi << 8) + JisLow); - return; - } - -TBool CAknFepUICtrlJapaneseKutenQueryDialog::AdjustSjisCode(TText& aSjisCode) -{ - TUint SjisHi = (aSjisCode >> 8) & 0x000000ff; - TUint SjisLow = aSjisCode & 0x000000ff; - - if ((SjisHi < ESjisFirstMin1) || (SjisHi > ESjisFirstMax2) - || ((SjisHi > ESjisFirstMax1) && (SjisHi < ESjisFirstMin2))) - { - SjisHi = 0; - SjisLow = 0; - } - else - { - if ((SjisLow < ESjisSecondMin1) || (SjisLow > ESjisSecondMax2) - || ((SjisLow > ESjisSecondMax1) && (SjisLow < ESjisSecondMin2))) - { - SjisHi = 0; - SjisLow = 0; - } - - /* - else - { - if (SjisHi == ESjisFirstMax2) - { - if (SjisLow > ESjisSecondMax2) - { - SjisHi = 0; - SjisLow = 0; - } - } - } - */ - } - - if (CheckSjisCode((TText)((SjisHi << 8) + SjisLow))) - { - aSjisCode = (TText)((SjisHi << 8) + SjisLow); - return ETrue; - } - else - { - return EFalse; - } - } - -TText CAknFepUICtrlJapaneseKutenQueryDialog::JisToSjis(TText aJisCode) - { - if (aJisCode == 0) - { - return 0; - } - - TUint jis_hi = (aJisCode >> 8) & 0x000000ff; /* hi byte */ - TUint jis_lo = aJisCode & 0x000000ff; /* low byte */ - - jis_lo += 0x1F; - if ((jis_hi & 1) == 0) - { - jis_hi >>= 1; - jis_hi--; - jis_lo += 0x5E; - } - else - { - jis_hi >>= 1; - } - if (jis_lo >= 0x7F) - { - jis_lo++; - } - jis_hi += (jis_hi > 0x2E) ? 0xB1 : 0x71; - - return (TText)((jis_hi << 8) + jis_lo); - } - -TBool CAknFepUICtrlJapaneseKutenQueryDialog::CheckSjisCode(TText aSjisCode) - { - const TText8 first = (TText8)((aSjisCode >> 8) & 0x000000ff); - const TText8 second = (TText8)(aSjisCode & 0x000000ff); - if ((((first >= ESjisFirstMin1) && (first <= ESjisFirstMax1)) - || ((first >= ESjisFirstMin2) && (first <= ESjisFirstMax2))) - && (((second >= ESjisSecondMin1) && (second <= ESjisSecondMax1)) - || ((second >= ESjisSecondMin2) && (second <= ESjisSecondMax2)))) - { - return ETrue; - } - else - { - return EFalse; - } - } - -TText CAknFepUICtrlJapaneseKutenQueryDialog::ConvSjisToUnicode(TText aSjisCode) - { - TText8 sjis[2]; - TText unicode = 0; - if (aSjisCode & 0xff00) - { - sjis[0] = (TText8)((aSjisCode & 0xff00) >> 8); - sjis[1] = (TText8)(aSjisCode & 0x00ff); - } - else - { - sjis[0] = (TText8)aSjisCode; - sjis[1] = '\0'; - } - - TPtrC8 foreign((TUint8*)&sjis[0], sizeof sjis); - TPtr16 unicode_des((TUint16*)&unicode, 1); - RFs fileServerSession; - - if (fileServerSession.Connect() == 0) - { - CCnvCharacterSetConverter* charconv = NULL; - TRAPD(error, charconv = CCnvCharacterSetConverter::NewL()); - if (error == KErrNone) - { - TRAP(error, charconv->PrepareToConvertToOrFromL(KCharacterSetIdentifierShiftJis, fileServerSession)); - if (error == KErrNone) - { - TInt state = CCnvCharacterSetConverter::KStateDefault; - charconv->ConvertToUnicode(unicode_des, foreign, state); - } - delete charconv; - } - fileServerSession.Close(); - } - if (unicode == (TText)KDummyUnicode) - { - unicode = 0; - } - return unicode; - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictiveCellListBoxData.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictiveCellListBoxData.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,174 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive candidate list -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveCellListBoxData.h" - -#include -using namespace SkinLayout; - -// CONSTANTS - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveCellListBoxData::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CAknFepUICtrlJapanesePredictiveCellListBoxData* - CAknFepUICtrlJapanesePredictiveCellListBoxData::NewL() - { - CAknFepUICtrlJapanesePredictiveCellListBoxData* self = - new(ELeave) CAknFepUICtrlJapanesePredictiveCellListBoxData; - self->ConstructLD(); - return self; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveCellListBoxData::SetHighlightArea -// Setting rang of x-point to highlight -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveCellListBoxData::SetHighlightArea( - TInt aHighlightStartXPos, TInt aHighlightEndXPos) - { - iHighlightStartXPos = aHighlightStartXPos; - iHighlightEndXPos = aHighlightEndXPos; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveCellListBoxData::Draw -// Drawing a item in listbox -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveCellListBoxData::Draw( - TListItemProperties aProperties, - CWindowGc& aGc, - const TDesC* aText, - const TRect& aRect, - TBool aHighlight, - const TColors& aColors) const - { - const TRect& aItemRect = aRect; - - aHighlight = (iHighlightStartXPos != 0 || iHighlightEndXPos != 0); - TRect highlightItemRect = aRect; - - TAknTextLineLayout textLineLayout = - AKN_LAYOUT_TEXT_Predictive_candidate_selection_list_texts_Line_1(0,0); - TAknTextLineLayout highlighttextLineLayout = - AKN_LAYOUT_TEXT_Predictive_candidate_selection_list_texts_Line_1(1,0); - TAknWindowLineLayout laf = - AKN_LAYOUT_WINDOW_Predictive_candidate_selection_popup_window_graphics_Line_4(aItemRect); - TAknLayoutText textlay; - textlay.LayoutText(aItemRect, textLineLayout); - TAknTextComponentLayout scal = AknLayoutScalable_Avkon::popup_fep_japan_predictive_window_t1(0); - - highlightItemRect.iBr.iX = highlightItemRect.iTl.iX + iHighlightEndXPos; - highlightItemRect.iTl.iX = highlightItemRect.iTl.iX + iHighlightStartXPos; - DrawDefaultHighlight(aGc, highlightItemRect, aHighlight); - - // Draw the actual items. - DrawFormatted(aProperties, aGc, aText, aItemRect, EFalse, aColors); - - aGc.Reset(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveCellListBoxData::DrawDefaultHighlight -// Highlighting a item -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveCellListBoxData::DrawDefaultHighlight( - CWindowGc& aGc, - const TRect& aItemRect, - TBool aHighlight) const - { - if (aHighlight) - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TBool highlightDrawn = EFalse; - MAknsControlContext* cc = AknsDrawUtils::ControlContext(Control()); - if (!cc) - { - cc = SkinBackgroundContext(); - } - - if (cc) - { - TAknWindowLineLayout layCorner = List_highlight_skin_placing__general__Line_2(); - TAknLayoutRect topLeft; - topLeft.LayoutRect( - aItemRect, - ELayoutEmpty, - 0, 0, ELayoutEmpty, ELayoutEmpty, layCorner.iW, layCorner.iH); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect( - aItemRect, - ELayoutEmpty, - ELayoutEmpty, ELayoutEmpty, -layCorner.iW, 0, layCorner.iW, layCorner.iH); - - TRect outerRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); - TRect innerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); - aGc.SetPenStyle(CGraphicsContext::ENullPen); - - const TAknsItemID* skinHighlightFrameId = &KAknsIIDQsnFrList; - const TAknsItemID* skinHighlightFrameCenterId = &KAknsIIDQsnFrListCenter; - highlightDrawn = - AknsDrawUtils::DrawFrame( - skin, aGc, outerRect, innerRect, - *skinHighlightFrameId, *skinHighlightFrameCenterId); - } - - if (!highlightDrawn) - { - TAknWindowLineLayout hl = AKN_LAYOUT_WINDOW_Predictive_candidate_selection_highlight_Line_1; - hl.iW = ELayoutEmpty; - hl.il += 1; - hl.it += 1; - hl.ir = -1; - TAknLayoutRect highlight; - highlight.LayoutRect(aItemRect, hl); - highlight.DrawRect(aGc); - } - } - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictiveListBoxModel.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictiveListBoxModel.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,188 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive candidate list -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveListBoxModel.h" -#include "AknFepUIAvkonCtrlJapanesePredictivePane.h" - -// ============================ MEMBER FUNCTIONS =============================== -// ----------------------------------------------------------------------------- -// CPredictivePopupLineInfo::~CPredictivePopupLineInfo -// Destructor -// ----------------------------------------------------------------------------- -// -CPredictivePopupLineInfo::~CPredictivePopupLineInfo() - { - delete iLineText; - delete iElementsOnLine; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListBoxModel::SetLineInfoArray -// Registering a array with candidate line information -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveListBoxModel::SetLineInfoArray( - CPredictivePopupLineInfoArray* aLineInfoArray) - { - iLineInfoArray = aLineInfoArray; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListBoxModel::LineInfoArray -// Returning a arrary with candidate line information -// ----------------------------------------------------------------------------- -// -CPredictivePopupLineInfoArray* - CAknFepUICtrlJapanesePredictiveListBoxModel::LineInfoArray() const - { - return iLineInfoArray; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListBoxModel::SearchItemIndexFromCandidateNo -// This function searches a item index as key in a candidate number -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListBoxModel::SearchItemIndexFromCandidateNo( - TInt aCandidateNo) const - { - TInt lineNo = -1; - const TInt numberOfLine = iLineInfoArray->Count(); - TInt i; - for (i = 0; i < numberOfLine && lineNo == -1; i++) - { - CPredictivePopupLineInfo* lineInfo = iLineInfoArray->At(i); - CPredictivePopupElementArray* elementArray =lineInfo->iElementsOnLine; - - const TInt numberOfElement = elementArray->Count(); - TInt j; - for (j = 0; j < numberOfElement; j++) - { - TPredictivePopupElement element = elementArray->At(j); - if (aCandidateNo == element.iCandidateNo) - { - lineNo = i; - break; - } - } - } - return lineNo; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListBoxModel::SearchElement -// This function is that it checks whether the candidate is included in the line. -// If including it, The displaying information is returned. -// ----------------------------------------------------------------------------- -// -TBool CAknFepUICtrlJapanesePredictiveListBoxModel::SearchElement( - TInt aLineNo, TInt aCandidateNo, TPredictivePopupElement& aElement) - { - TBool foundFlag = EFalse; - - CPredictivePopupLineInfo* lineInfo = iLineInfoArray->At(aLineNo); - CPredictivePopupElementArray* elementArray = lineInfo->iElementsOnLine; - - const TInt numberOfElement = elementArray->Count(); - TInt i; - for (i = 0; i < numberOfElement; i++) - { - TPredictivePopupElement element = elementArray->At(i); - if (aCandidateNo < element.iCandidateNo) - { - break; - } - else if (aCandidateNo == element.iCandidateNo) - { - aElement.iStartXPos = element.iStartXPos; - aElement.iEndXPos = element.iEndXPos; - aElement.iCandidateNo = element.iCandidateNo; - foundFlag = ETrue; - break; - } - } - return foundFlag; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListBoxModel::SetMaximumItems -// Set total item numbers in listbox -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveListBoxModel::SetMaximumItems( - TInt aMaximumItems) - { - iMaximumItems = aMaximumItems; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListBoxModel::MaximumItems -// Return total item numbers -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListBoxModel::MaximumItems() - { - return iMaximumItems; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListBoxModel::SearchCandidateNoFromPosition -// This function searches a CandidateNo from linenumber and Position -// ----------------------------------------------------------------------------- -TInt CAknFepUICtrlJapanesePredictiveListBoxModel::SearchCandidateNoFromPosition( - TInt aLineNo, const TPoint& aPoint) const - { - TInt candidateNo = -1; - if ( 0 <= aLineNo && iLineInfoArray->Count() > aLineNo ) - { - CPredictivePopupLineInfo* lineInfo = iLineInfoArray->At(aLineNo); - CPredictivePopupElementArray* elementArray = lineInfo->iElementsOnLine; - const TInt numberOfElement = elementArray->Count(); - candidateNo = elementArray->At(numberOfElement - 1).iCandidateNo; - for (TInt ii = 0; ii < numberOfElement; ii++) - { - TPredictivePopupElement element = elementArray->At(ii); - //if (aPoint.iX /*- margin*/ <= element.iEndXPos) - if (aPoint.iX <= element.iEndXPos) - { - candidateNo = element.iCandidateNo; - break; - } - } - } - return candidateNo; - } -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictiveListbox.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictiveListbox.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,448 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive candidate list -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveListboxView.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveListboxItemDrawer.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveCellListBoxData.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveListBoxModel.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveListbox.h" -#include "AknFepUIAvkonCtrlJapanesePredictivePane.h" - -// CONSTANTS -const TInt KListboxMarge = 4; -const TInt KScrollRightMarge = 5; -const TInt KListBoxVisibleRow = 3; - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveListbox::ConstructL( - const CCoeControl* aParent, - TInt aFlags) - { - CAknFilteredTextListBoxModel* model = - new(ELeave) CAknFepUICtrlJapanesePredictiveListBoxModel; - iModel=model; - model->ConstructL(); - CreateItemDrawerL(); - - EnableExtendedDrawingL(); - - iItemDrawer->SetDrawMark(EFalse); - CEikListBox::ConstructL(aParent,aFlags); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::SetCurrentCandidateNo -// Selecting a candidate number appointed with an argument -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveListbox::SetCurrentCandidateNo( - TInt aCandidateNo, TBool aDraw) - { - CAknFepUICtrlJapanesePredictiveListboxView* view = - static_cast(View()); - TInt itemIndex = view->SetCurrentCandidateNo(aCandidateNo); - - if (aDraw) - { - SetCurrentItemIndexAndDraw(itemIndex); - } - else - { - SetCurrentItemIndex(itemIndex); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::CurrentCandidateNo -// Returning a selected number -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListbox::CurrentCandidateNo() - { - CAknFepUICtrlJapanesePredictiveListboxView* view = - static_cast(View()); - return view->CurrentCandidateNo(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::MovePreviousItem -// selecting a previous candidate -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListbox::MovePreviousItem() - { - CAknFepUICtrlJapanesePredictiveListboxView* view = - static_cast(View()); - - TInt candidateNo = view->PreviousItem(); - SetCurrentCandidateNo(candidateNo, ETrue); - - return candidateNo; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::MoveNextItem -// selecting a next candidate -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListbox::MoveNextItem() - { - CAknFepUICtrlJapanesePredictiveListboxView* view = - static_cast(View()); - - TInt candidateNo = view->NextItem(); - SetCurrentCandidateNo(candidateNo, ETrue); - - return candidateNo; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::MovePreviousLineItem -// selecting a previous line candidate -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListbox::MovePreviousLineItem() - { - CAknFepUICtrlJapanesePredictiveListboxView* view = - static_cast(View()); - TInt candidateNo = view->PreviousLineItem(); - SetCurrentCandidateNo(candidateNo, ETrue); - - return candidateNo; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::MoveNextLineItem -// selecting a next line candidate -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListbox::MoveNextLineItem() - { - CAknFepUICtrlJapanesePredictiveListboxView* view = - static_cast(View()); - TInt candidateNo = view->NextLineItem(); - SetCurrentCandidateNo(candidateNo, ETrue); - - return candidateNo; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::SizeChanged -// This function is called in case changing size -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveListbox::SizeChanged() - { - CEikFormattedCellListBox& listBox = *this; - CFormattedCellListBoxItemDrawer* itemDrawer = listBox.ItemDrawer(); - - TAknWindowLineLayout textWindowLayout = - AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window(0,0); - // setting textbox size in listbox - TAknTextLineLayout textLineLayout = - AKN_LAYOUT_TEXT_Predictive_candidate_selection_list_texts_Line_1(0,0); - - TAknTextComponentLayout scal = AknLayoutScalable_Avkon::popup_fep_japan_predictive_window_t1(0); - TAknWindowLineLayout scrollLineLayout = AknLayoutScalable_Avkon::scroll_pane_cp29().LayoutLine(); - - TAknLayoutText text; - text.LayoutText(textWindowLayout.Rect(), textLineLayout); - textWindowLayout.iW = text.TextRect().Width(); - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(Model()); - TInt maxRows = model->LineInfoArray()->Count(); - TInt maxVisibleRows = Min(KJapPredictiveVisibleListRowsMax, maxRows); - maxVisibleRows = Max(KJapPredictiveVisibleListRowsMin, maxVisibleRows); - textWindowLayout.iH = listBox.Size().iHeight / maxVisibleRows; - - AknListBoxLayouts::SetupStandardListBox(listBox); - AknListBoxLayouts::SetupStandardFormListbox(itemDrawer); - AknListBoxLayouts::SetupListboxPos(listBox, textWindowLayout); - { - TRgb color( KRgbBlack ); - // this does not modify color unless it gets a correct one - // no real need to check errors - AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), - color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 ); - itemDrawer->SetHighlightedTextColor( color ); - AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), - color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG7 ); - iItemDrawer->SetTextColor( color ); - } - - textLineLayout.il -= KListboxMarge; - textLineLayout.ir = 0; - // Baseline must be set to textLineLayout.iB. - const CFont* font = AknLayoutUtils::FontFromId(textLineLayout.iFont); - TInt baseLineOffset = (textWindowLayout.iH - font->HeightInPixels())/2 + font->AscentInPixels(); - - if( TAknFontId::IsEncodedFont(textLineLayout.FontId()) ) - { - textLineLayout.iB = textWindowLayout.iH - font->DescentInPixels() -1 - baseLineOffset; - } - else - { - textLineLayout.iB = baseLineOffset; - } - TSize itemSize = View()->ItemSize(); - - AknListBoxLayouts::SetupFormAntiFlickerTextCell(listBox, itemDrawer, 0, - textLineLayout, - TPoint(0, 0), - TPoint(itemSize.iWidth, itemSize.iHeight)); - - CEikFormattedCellListBox::SizeChanged(); - - // Scroll bar - scrollLineLayout.il = ELayoutEmpty; - scrollLineLayout.ir = KScrollRightMarge; - scrollLineLayout.it = 0; - scrollLineLayout.ib = 0; - if (maxRows <= KJapPredictiveVisibleListRowsMax) - { - scrollLineLayout.iW = 0; - } - TAknWindowLineLayout laf = - AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window(0,0); - TRect scrollBarParent = TRect(TPoint(0, listBox.Rect().iTl.iY), - TPoint(laf.iW, listBox.Rect().iBr.iY)); - AknLayoutUtils::LayoutVerticalScrollBar(iSBFrame, scrollBarParent, scrollLineLayout); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::MakeViewClassInstanceL -// Creating a view -// ----------------------------------------------------------------------------- -// -CListBoxView* CAknFepUICtrlJapanesePredictiveListbox::MakeViewClassInstanceL() - { - return new(ELeave) CAknFepUICtrlJapanesePredictiveListboxView; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::CreateItemDrawerL -// Creating a ItemDrawer -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveListbox::CreateItemDrawerL() - { - CAknFepUICtrlJapanesePredictiveCellListBoxData* - cellData = CAknFepUICtrlJapanesePredictiveCellListBoxData::NewL(); - CleanupStack::PushL(cellData); - - // getting font object - TAknTextLineLayout textLineLayout = - AKN_LAYOUT_TEXT_Predictive_candidate_selection_list_texts_Line_1( - 0, 0); - const CFont* font = AknLayoutUtils::FontFromId(textLineLayout.iFont); - - iItemDrawer = - new(ELeave) CAknFepUICtrlJapanesePredictiveListboxItemDrawer( - Model(), font, cellData); - - CleanupStack::Pop(cellData); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::UpdateCurrentItem -// Update the current index -// Notes: The argument of aItemIndex means the current line. (not current candidate index) -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveListbox::UpdateCurrentItem(TInt aItemIndex) const - { - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(Model()); - CAknFepUICtrlJapanesePredictiveListboxView* view = - static_cast(View()); - - TPredictivePopupElement element; - TInt curCandi = view->CurrentCandidateNo(); - TInt oldCandi = view->OldCandidateNo(); - TInt maxLine = model->LineInfoArray()->Count(); - - TInt oldCurrentItemIndex = view->CurrentItemIndex(); - if (oldCurrentItemIndex != aItemIndex) - { - // Set the current line - view->SetCurrentItemIndex(aItemIndex); - - if ( IsReadyToDraw() ) - { - // Draw the old line - view->DrawItem(oldCurrentItemIndex); - } - - if (oldCurrentItemIndex+1 < maxLine - && oldCurrentItemIndex+1 != aItemIndex) - { - if (model->SearchElement(oldCurrentItemIndex+1, - oldCandi, element)) - { - view->DrawItem(oldCurrentItemIndex+1); - } - } - // Set the top position - if (!(view->ItemIsVisible(aItemIndex))) - { - SetTopItemIndex(view->CalcNewTopItemIndexSoItemIsVisible(aItemIndex)); - DrawNow(); - } - } - // Draw the current line - DrawItem(aItemIndex); - // Check next line including the same candidate - TInt nextLine = aItemIndex+1; - if (nextLine < maxLine - && model->SearchElement(nextLine, curCandi, element)) - { - if (!(view->ItemIsVisible(nextLine))) - { - SetTopItemIndex(view->CalcNewTopItemIndexSoItemIsVisible(nextLine)); - DrawNow(); - } - DrawItem(nextLine); - } - UpdateScrollBarThumbs(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::HandlePointerEventL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -void CAknFepUICtrlJapanesePredictiveListbox::HandlePointerEventL(const TPointerEvent& aPointerEvent) - { - const TInt old = CurrentItemIndex(); - CAknSinglePopupMenuStyleListBox::HandlePointerEventL(aPointerEvent); - switch (aPointerEvent.iType) - { - case TPointerEvent::EButton1Up: - break; - case TPointerEvent::EButton1Down: - { - CAknFepUICtrlJapanesePredictiveListboxView* view = - static_cast(View()); - TInt oldCandidateNo = view->CurrentCandidateNo(); - TPoint pos = aPointerEvent.iPosition - Rect().iTl; - TInt itemIndex = view->SetCurrentCandidateNo(CurrentItemIndex(), pos); - SetCurrentItemIndex(itemIndex); - TInt newCandidateNo = view->CurrentCandidateNo(); - - if (oldCandidateNo != newCandidateNo) - { - ReportListBoxEventL(MEikListBoxObserver::EEventItemDraggingActioned);// need draw. - } - } - break; - default: - break; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListbox::HandleScrollEventL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -void CAknFepUICtrlJapanesePredictiveListbox::HandleScrollEventL( - CEikScrollBar* aScrollBar, - TEikScrollEvent aEventType) - { - TInt oldThumbPos = (aEventType & KEikScrollEventBarMask) ? - iView->HScrollOffset() : iView->TopItemIndex(); - TInt newThumbPos = aScrollBar->ThumbPosition(); - TInt maxThumbPos = static_cast(Model())->NumberOfItems() - - KListBoxVisibleRow; - TBool update = ETrue; - TInt newThumbPosBeforeCorrecting = newThumbPos; - - if ((aEventType & KEikScrollEventBarMask) == KEikScrollEventFromVBar) - { - switch (aEventType) - { - case EEikScrollUp: - if ( oldThumbPos == 0 && (iListBoxFlags & ELoopScrolling)) - { - newThumbPos = maxThumbPos; - } - break; - case EEikScrollDown: - if ( oldThumbPos == maxThumbPos && (iListBoxFlags & ELoopScrolling) ) - { - newThumbPos = 0; - } - break; - case EEikScrollPageUp: - case EEikScrollPageDown: - case EEikScrollThumbDragVert: - break; - case EEikScrollThumbReleaseVert: - // in the case of drag events, the scrollbar automatically updates its thumb pos... - if(AknLayoutUtils::PenEnabled()) - { - update = EFalse; - } - break; - - default: - break; - } - if ( (!AknLayoutUtils::PenEnabled()) || update ) - { - iView->VScrollTo(newThumbPos); - if (aEventType != EEikScrollThumbDragVert) - { - aScrollBar->SetModelThumbPosition(iView->TopItemIndex()); - } - } - - // if event has changed thumb position, then update scroll bar - if ( AknLayoutUtils::PenEnabled() && newThumbPos != newThumbPosBeforeCorrecting ) - { - UpdateScrollBarThumbs(); - } - } - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictiveListboxItemDrawer.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictiveListboxItemDrawer.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive candidate list -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveCellListBoxData.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveListboxItemDrawer.h" - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListboxItemDrawer:: -// CAknFepUICtrlJapanesePredictiveListboxItemDrawer -// Constractor -// ----------------------------------------------------------------------------- -// -CAknFepUICtrlJapanesePredictiveListboxItemDrawer::CAknFepUICtrlJapanesePredictiveListboxItemDrawer( - MTextListBoxModel* aTextListBoxModel, - const CFont* aFont, - CFormattedCellListBoxData* aFormattedCellData) - : CFormattedCellListBoxItemDrawer(aTextListBoxModel, - aFont, - aFormattedCellData) - { - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListboxItemDrawer::DrawItem -// Drawing a item -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveListboxItemDrawer::DrawItem( - TInt aItemIndex, - TPoint aItemRectPos, - TBool aItemIsSelected, - TBool aItemIsCurrent, - TBool aViewIsEmphasized, - TBool aViewIsDimmed, - TInt aHighlightStartXPos, - TInt aHighlightEndXPos) const - { - TRect actualItemRect(aItemRectPos, iItemCellSize); - - CAknFepUICtrlJapanesePredictiveCellListBoxData* data = - static_cast(iData); - data->SetHighlightArea(aHighlightStartXPos, aHighlightEndXPos); - - DrawActualItem( - aItemIndex, - actualItemRect, - aItemIsCurrent, aViewIsEmphasized, aViewIsDimmed, aItemIsSelected); - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictiveListboxView.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictiveListboxView.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,334 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive candidate list -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveListBoxModel.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveListboxItemDrawer.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveListboxView.h" - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListboxView::CurrentCandidateNo -// Return the selected candidate number currently -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListboxView::CurrentCandidateNo() const - { - return iCurrentCandidateNo; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListboxView::SetCurrentCandidateNo -// Set current candidate number -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListboxView::SetCurrentCandidateNo( - TInt aCandidateNo) - { - iOldCandidateNo = iCurrentCandidateNo; - iCurrentCandidateNo = aCandidateNo; - - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(iModel); - - const TInt itemIndex = model->SearchItemIndexFromCandidateNo(aCandidateNo); - - return itemIndex; - } - -// ----------------------------------------------------------------------------- -// CPeninputJapanesePredictiveListBoxView::SetCurrentCandidateNo -// Set current candidate number -// ----------------------------------------------------------------------------- -TInt CAknFepUICtrlJapanesePredictiveListboxView::SetCurrentCandidateNo( - TInt aLineNo, const TPoint& aPoint) - { - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(iModel); - - iCurrentCandidateNo = model->SearchCandidateNoFromPosition(aLineNo, aPoint); - - return aLineNo; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListboxView::PreviousItem -// Return previous candidate number -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListboxView::PreviousItem() - { - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(iModel); - const TInt maximumItems = model->MaximumItems(); - - TInt itemindex = iCurrentCandidateNo - 1; - if (itemindex < 0) - { - itemindex = maximumItems - 1; - } - - return itemindex; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListboxView::NextItem -// Return next candidate number -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListboxView::NextItem() - { - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(iModel); - const TInt maximumItems = model->MaximumItems(); - - TInt itemindex = iCurrentCandidateNo +1; - if (itemindex >= maximumItems) - { - itemindex = 0; - } - - return itemindex; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListboxView::PreviousLineItem -// Return candidate number of previous line -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListboxView::PreviousLineItem() - { - TInt currentItemIndex = CurrentItemIndex(); - TPredictivePopupElement currentElement; - - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(iModel); - CPredictivePopupLineInfoArray* lineInfoArray = model->LineInfoArray(); - const TInt lineInfoArrayCount = lineInfoArray->Count(); - - TInt previousItemIndex = currentItemIndex; - TInt previousCandidateNo = -1; - - if (model->SearchElement( - currentItemIndex, iCurrentCandidateNo, currentElement)) - { - do - { - previousItemIndex--; - if (previousItemIndex < 0) - { - previousItemIndex = lineInfoArrayCount - 1; - } - - if (previousItemIndex == currentItemIndex) - { - break; // in case one loop - } - - CPredictivePopupLineInfo* lineInfo = - lineInfoArray->At(previousItemIndex); - - CPredictivePopupElementArray* elementArray = - lineInfo->iElementsOnLine; - - const TInt numberOfElement = elementArray->Count(); - TInt lastCandidateNo = -1; - TInt i; - for (i = 0; i < numberOfElement; i++) - { - TPredictivePopupElement element = elementArray->At(i); - if (currentElement.iStartXPos >= element.iStartXPos - && currentElement.iStartXPos < element.iEndXPos) - { - previousCandidateNo = element.iCandidateNo; - break; - } - else if (currentElement.iStartXPos < element.iStartXPos) - { - previousCandidateNo = element.iCandidateNo; - break; - } - - lastCandidateNo = element.iCandidateNo; - } - - if (previousCandidateNo == -1) - { - previousCandidateNo = lastCandidateNo; - } - } - while (previousCandidateNo == iCurrentCandidateNo); - } - - if (previousCandidateNo == -1) - { - previousCandidateNo = iCurrentCandidateNo; - } - - return previousCandidateNo; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListboxView::NextLineItem -// Return candidate number of next line -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListboxView::NextLineItem() - { - TInt currentItemIndex = CurrentItemIndex(); - TPredictivePopupElement currentElement; - - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(iModel); - - CPredictivePopupLineInfoArray* lineInfoArray = model->LineInfoArray(); - TInt nextCandidateNo = -1; - - if (lineInfoArray) - { - const TInt lineInfoArrayCount = lineInfoArray->Count(); - - TInt nextItemIndex = currentItemIndex; - - if (model->SearchElement( - currentItemIndex, iCurrentCandidateNo, currentElement)) - { - do - { - nextItemIndex++; - if (nextItemIndex >= lineInfoArrayCount) - { - nextItemIndex = 0; - } - - if (nextItemIndex == currentItemIndex) - { - break; // in case one loop - } - - CPredictivePopupLineInfo* lineInfo = - lineInfoArray->At(nextItemIndex); - - CPredictivePopupElementArray* elementArray = - lineInfo->iElementsOnLine; - - const TInt numberOfElement = elementArray->Count(); - TInt lastCandidateNo = -1; - TInt i; - for (i = 0; i < numberOfElement; i++) - { - TPredictivePopupElement element = elementArray->At(i); - if (currentElement.iStartXPos >= element.iStartXPos - && currentElement.iStartXPos < element.iEndXPos) - { - nextCandidateNo = element.iCandidateNo; - break; - } - else if (currentElement.iStartXPos < element.iStartXPos) - { - nextCandidateNo = element.iCandidateNo; - break; - } - - lastCandidateNo = element.iCandidateNo; - } - - if (nextCandidateNo == -1) - { - nextCandidateNo = lastCandidateNo; - } - } - while (nextCandidateNo == iCurrentCandidateNo); - } - } - if (nextCandidateNo == -1) - { - nextCandidateNo = iCurrentCandidateNo; - } - return nextCandidateNo; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListboxView::DrawItem -// Drawing item -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictiveListboxView::DrawItem(TInt aItemIndex) const - { - if (RedrawDisabled() || !IsVisible()) - return; - - if (((aItemIndex > -1) && (aItemIndex < iModel->NumberOfItems())) - && ItemIsVisible(aItemIndex)) - { - TInt highlightStartXPos = 0; - TInt highlightEndXPos = 0; - - TPredictivePopupElement currentElement; - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(iModel); - - if (model->SearchElement(aItemIndex, - iCurrentCandidateNo, currentElement)) - { - highlightStartXPos = currentElement.iStartXPos; - highlightEndXPos = currentElement.iEndXPos; - } - - CAknFepUICtrlJapanesePredictiveListboxItemDrawer* itemDrawer = - static_cast(iItemDrawer); - - itemDrawer->DrawItem( - aItemIndex, - ItemPos(aItemIndex), - ItemIsSelected(aItemIndex), - (aItemIndex == iCurrentItemIndex), - (iFlags & EEmphasized) > 0, (iFlags & EDimmed) > 0, - highlightStartXPos, highlightEndXPos); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictiveListboxView::OldCandidateNo -// Return the selected candidate number previously -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictiveListboxView::OldCandidateNo() const - { - return iOldCandidateNo; - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictivePane.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictivePane.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1089 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Predictive candidate list -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepGlobalEnums.h" -#include "AknFepUIAvkonCtrlJapanesePredictiveListbox.h" -#include "AknFepUIAvkonCtrlJapanesePredictivePane.h" -#include "AknFepUIManagerJapanese.h" - -// CONSTANTS -const TInt KMaxListColumns = 30; -const TInt KLAFBaseListRows = 1; -const TInt KLAFBelowTextBaseline = 2; -const TInt KLAFAboveTextBaseline = 1; -const TInt KSpaceCharCode = ' '; -const TInt KListboxFlameMarge = 4; -const TInt KScrollRightMarge = 5; -const TInt KListboxMarge = 3; - -/** -* CAknFepUICtrlJapanesePredictivePane class. -* -*/ - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CAknFepUICtrlJapanesePredictivePane* CAknFepUICtrlJapanesePredictivePane::NewL(CAknFepUIManagerJapanese* aUiMng) - { - CAknFepUICtrlJapanesePredictivePane* self = - new(ELeave)CAknFepUICtrlJapanesePredictivePane(aUiMng); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); // self - return self; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::~CAknFepUICtrlJapanesePredictivePane -// Destructor -// ----------------------------------------------------------------------------- -// -CAknFepUICtrlJapanesePredictivePane::~CAknFepUICtrlJapanesePredictivePane() - { - if (IsVisible()) - { - HideWindow(); - } - - if (iListBox) - { - delete iListBox; - iListBox = NULL; - } - - if (iLineInfoArray) - { - iLineInfoArray->ResetAndDestroy(); - delete iLineInfoArray; - iLineInfoArray = NULL; - } - - if (iListTextArray) - { - delete iListTextArray; - iListTextArray = NULL; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::ShowWindow -// Show Pop-up list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::ShowWindow() - { - RWindow& window=Window(); - //Set ordinal position to top - window.SetOrdinalPosition(0,ECoeWinPriorityFep); - window.SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren); - window.SetPointerCapture(ETrue); - TRAP_IGNORE( ActivateL()); - MakeVisible(ETrue); - DrawNow(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::ClosePredictiveList -// Close Pop-up list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::ClosePredictiveList() - { - CancelPopup(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::SetCurrentItemIndex -// Specify the cursor position of a pop-up list. -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::SetCurrentItemIndex(TInt aItemIndex) - { - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(ListBox()->Model()); - const TInt maximumItems = model->MaximumItems(); - - if (aItemIndex > maximumItems) - { - aItemIndex = maximumItems; - } - - CAknFepUICtrlJapanesePredictiveListbox* listBox = - static_cast(ListBox()); - - listBox->SetCurrentCandidateNo(aItemIndex, EFalse); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::SetOffsetPosition -// Specify the display position of a pop-up list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::SetOffsetPosition(TPoint aOffset) - { - iOffsetPosition = aOffset; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::SetWindowPosition -// Set position to show candidate list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::SetWindowPosition( - const TPoint& aLeftSideOfBaseLine, - TInt aHeight, - TInt aAscent) - { - // getting rectangle of main pane - TRect screen = - TRect(0, 0, AKN_LAYOUT_WINDOW_screen.iW, AKN_LAYOUT_WINDOW_screen.iH); - TAknLayoutRect main_pane; - main_pane.LayoutRect(screen, AKN_LAYOUT_WINDOW_main_pane(screen, 0, 1, 1)); - iMainPaneRect = main_pane.Rect(); - - TInt leftPos = aLeftSideOfBaseLine.iX; - if (leftPos < 0) - { - leftPos = iOffsetPosition.iX; - } - - TPoint windowOffset( - leftPos, - aLeftSideOfBaseLine.iY + aHeight - aAscent - iMainPaneRect.iTl.iY); - SetOffsetPosition(windowOffset); - - iSrcTextHeight = aHeight; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::ShowCandidateListL -// Show Pop-up list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::ShowCandidateListL( - CDesCArrayFlat* aItems, TInt aIndex, TInt aResourceID) - { - __ASSERT_DEBUG(aItems->Count() > 0, - AknFepUiInterfacePanic(EAknFepUiInterfacePanicCandidatesEmpty)); - - if (iLineInfoArray) - { - iLineInfoArray->ResetAndDestroy(); - } - delete iLineInfoArray; - delete iListTextArray; - iLineInfoArray = NULL; - iListTextArray = NULL; - // getting listbox width by a pixel unit - TAknWindowLineLayout laf = - AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window(0, 0); - TAknTextLineLayout textLineLayout = - AKN_LAYOUT_TEXT_Predictive_candidate_selection_list_texts_Line_1(0,0); - TAknWindowLineLayout scrollLineLayout = AknLayoutScalable_Avkon::scroll_pane_cp29().LayoutLine(); - TAknLayoutText text; - text.LayoutText(laf.Rect(), textLineLayout); - TInt allowDrawWidth = text.TextRect().Width() - scrollLineLayout.iW; - - iLineInfoArray = CreatePredictivePopupLineInfoArrayL( - aItems, allowDrawWidth, textLineLayout.iFont); - iListTextArray = CreateListTextArrayL(iLineInfoArray); - - // Set listitems. - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(ListBox()->Model()); - model->SetMaximumItems(aItems->Count()); - model->SetLineInfoArray(iLineInfoArray); - model->SetItemTextArray(iListTextArray); - model->SetOwnershipType(ELbmDoesNotOwnItemArray); - - iMaximumRows = MaximumRows(model); - - SetCurrentItemIndex(aIndex); - SetMaximumHeight(iMaximumRows); - - // Show popup list - TBool notShowingPopup = - model->NumberOfItems() == 0 && iWindowType < 0x80; - if (notShowingPopup) - { - const TSize screenSize=iCoeEnv->ScreenDevice()->SizeInPixels(); - iPopoutCba->SetBoundingRect(TRect(screenSize)); - } - - // Create a CBA for use with the popup - if (aResourceID) - { - UpdateCbaL(aResourceID); - } - - SetupWindowLayout(iWindowType); - - iListBox->SetListBoxObserver(this); - - if (iMarkable) - { - // If markable, set the popup to observe event change events. - // Call HandleControlEvent to set the CBA appropriate to the 1st item - iListBox->SetObserver(this); - HandleControlEventL(iListBox, EEventStateChanged); - } - - if (IsVisible()) - { - DrawDeferred(); - } - else - { - ShowWindow(); - ActivateL(); - ShowWindowCbaL(); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::HideWindow -// Hide Pop-up list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::HideWindow() - { - MakeVisible(EFalse); - Window().SetPointerCapture(EFalse); - - iEikonEnv->RemoveFromStack(iPopoutCba); - - iPopoutCba->MakeVisible(EFalse); - - iCurrentResource = 0; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::CurrentItemIndexOfCandidate -// Return a selected candidate item number currently -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictivePane::CurrentItemIndexOfCandidate() - { - if (IsVisible()) - { - CAknFepUICtrlJapanesePredictiveListbox* listBox = - static_cast(ListBox()); - return listBox->CurrentCandidateNo(); - } - return -1; // Disable window - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::MoveItem -// Move a current item in an appointed direction -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictivePane::MoveItem( - TAknFepUICtrlScroll aDirection) - { - __ASSERT_DEBUG(iListBox->IsVisible(), - AknFepUiInterfacePanic(EAknFepUiInterfacePanicNoCandidatePane)); - - TInt ret = 0; - - switch(aDirection) - { - case EScrollLeft: - ret = MovePreviousItem(); - break; - - case EScrollRight: - ret = MoveNextItem(); - break; - - case EScrollUp: - ret = MovePreviousLineItem(); - break; - - case EScrollDown: - ret = MoveNextLineItem(); - break; - - default: - //Panic - AknFepUiInterfacePanic(EAknFepUiInterfacePanicCandidatePaneNotSupportScrollDirection); - break; - } - return ret; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::SetupWindowLayout -// Set up a window layout type -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::SetupWindowLayout( - AknPopupLayouts::TAknPopupLayouts /*aType*/) - { - HandleSizeChanged(Layout(), NULL, ListBox(), this); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::AttemptExitL -// Set the title for the selection list -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::AttemptExitL(TBool aAccept) - { - if (iReturn) //Always not null unless ExecuteLD leaves - *iReturn = aAccept; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::MopSupplyObject -// ----------------------------------------------------------------------------- -// -TTypeUid::Ptr CAknFepUICtrlJapanesePredictivePane::MopSupplyObject(TTypeUid aId) - { - SetMopParent( iEikonEnv->EikAppUi() ); - return CAknPopupList::MopSupplyObject(aId); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::CAknFepUICtrlJapanesePredictivePane -// Constructor -// ----------------------------------------------------------------------------- -// -CAknFepUICtrlJapanesePredictivePane::CAknFepUICtrlJapanesePredictivePane(CAknFepUIManagerJapanese* aUiMng) - : iUiMng(aUiMng) - { - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::ConstructL() - { - // Create listbox - CAknFepUICtrlJapanesePredictiveListbox* list = - new(ELeave) CAknFepUICtrlJapanesePredictiveListbox; - // "iListBox" member variable is defined in CAknPopupList class. - iListBox = list; - CAknPopupList::ConstructL( - list, R_AKNFEP_SOFTKEYS_CONVERT_OTHER_SELECT, AknPopupLayouts::EMenuWindow); - - list->ConstructL(this, CEikListBox::ELeftDownInViewRect); - list->CreateScrollBarFrameL(ETrue); - list->ScrollBarFrame()->SetScrollBarVisibilityL( - CEikScrollBarFrame::EOff, - CEikScrollBarFrame::EAuto); - - SetNonFocusing(); - MakeVisible(EFalse); - iLineInfoArray = NULL; - iListTextArray = NULL; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::CreatePredictivePopupLineInfoArrayL -// Create a array with line information in candidate list -// ----------------------------------------------------------------------------- -CPredictivePopupLineInfoArray* -CAknFepUICtrlJapanesePredictivePane::CreatePredictivePopupLineInfoArrayL( - CDesCArrayFlat* aItems, - const TInt aMaxDisplayWidthInPixel, - const TInt aFontId) - { - CPredictivePopupLineInfoArray* lineArray = - new(ELeave) CPredictivePopupLineInfoArray(1); - CleanupStack::PushL(lineArray); - - // getting font object from font id - const CFont* font = AknLayoutUtils::FontFromId(aFontId); - - TInt displayWidthInPixel = aMaxDisplayWidthInPixel; - TInt elementStartXPos = 0; - - TBuf bufferOfLine; - CPredictivePopupElementArray* elementArray = NULL; - - const TInt widthOfSpaceInPixel = font->CharWidthInPixels(KSpaceCharCode); - const TInt numberOfItem = aItems->Count(); - TInt i; - for (i = 0; i < numberOfItem; i++) - { - TPtrC itemText = aItems->MdcaPoint(i); - TInt itemTextLength = itemText.Length(); - - // getting a number of characters within width - TInt count = font->TextCount(itemText, displayWidthInPixel); - - // If a candidate cannot occupy a line, it is - // continued in next line - if (count < itemTextLength && elementArray) - { - PredictivePopupAppendLineL(lineArray, bufferOfLine, elementArray); - CleanupStack::Pop(elementArray); // elementArray - elementArray = NULL; - bufferOfLine.SetLength(0); - - displayWidthInPixel = aMaxDisplayWidthInPixel; - elementStartXPos = 0; - count = font->TextCount(itemText, displayWidthInPixel); - } - - FOREVER - { - if (!elementArray) - { - elementArray = new(ELeave) CPredictivePopupElementArray(1); - CleanupStack::PushL(elementArray); - } - - TPtrC elementText = itemText.Left(count); - TInt elementWidthInPixels = font->TextWidthInPixels(elementText); - - // setting a item string to line string - bufferOfLine.Append(elementText); - displayWidthInPixel -= elementWidthInPixels; - - TPredictivePopupElement& element = elementArray->ExtendL(); - element.iStartXPos = elementStartXPos; - elementStartXPos += elementWidthInPixels; - element.iEndXPos = elementStartXPos; - element.iCandidateNo = i; - - // creating a string which removes a item string - itemTextLength -= count; - if (itemTextLength > 0) - { - // If this line is full, add this line and create a new line. - PredictivePopupAppendLineL(lineArray, bufferOfLine, elementArray); - CleanupStack::Pop(elementArray); // elementArray - elementArray = NULL; - bufferOfLine.SetLength(0); - - itemText.Set(itemText.Right(itemTextLength)); - displayWidthInPixel = aMaxDisplayWidthInPixel; - elementStartXPos = 0; - - // Calculating a number of characters which be able to shown in the width and - // cutting the string - count = font->TextCount(itemText, displayWidthInPixel); - } - else - { - break; - } - } - - if (displayWidthInPixel > widthOfSpaceInPixel) - { - // adding space if it is possible to add space - bufferOfLine.Append(KSpaceCharCode); - displayWidthInPixel -= widthOfSpaceInPixel; - elementStartXPos += widthOfSpaceInPixel; - } - else - { - // adding a line information if it isn't possible to add space - PredictivePopupAppendLineL(lineArray, bufferOfLine, elementArray); - CleanupStack::Pop(elementArray); // elementArray - elementArray = NULL; - bufferOfLine.SetLength(0); - - displayWidthInPixel = aMaxDisplayWidthInPixel - 1; - elementStartXPos = 0; - } - } - - if (bufferOfLine.Length() > 0 && elementArray) - { - PredictivePopupAppendLineL(lineArray, bufferOfLine, elementArray); - CleanupStack::Pop(elementArray); // elementArray - } - - CleanupStack::Pop(lineArray); // lineArray - - return lineArray; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::PredictivePopupAppendLineL -// Append to array with line information -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::PredictivePopupAppendLineL( - CPredictivePopupLineInfoArray* aLineArray, - const TDesC& aLineText, - CPredictivePopupElementArray* aElementArray) - { - HBufC* lineTextBuf = HBufC::NewL(aLineText.Length()); - CleanupStack::PushL(lineTextBuf); - TPtr lineTextBufPtr = lineTextBuf->Des(); - lineTextBufPtr.Copy(aLineText); - - CPredictivePopupLineInfo* lineInfo = new(ELeave) CPredictivePopupLineInfo; - CleanupStack::PushL(lineInfo); - - aLineArray->AppendL(lineInfo); - CleanupStack::Pop(2, lineTextBuf); // lineTextBuf, lineInfo - - // After that set to line information items, - // becasue the following member variables are deleted - // in the destractor of CPredictivePopupLineInfo if leave occurs. - lineInfo->iLineText = lineTextBuf; - lineInfo->iElementsOnLine = aElementArray; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::CreateListTextArrayL -// Create arrary with string to show in a line -// ----------------------------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUICtrlJapanesePredictivePane::CreateListTextArrayL( - CPredictivePopupLineInfoArray* aLineArray) - { - CDesCArrayFlat* textArray = new(ELeave) CDesCArrayFlat(1); - CleanupStack::PushL(textArray); - - const TInt numberOfItem = aLineArray->Count(); - TInt i; - for (i = 0; i < numberOfItem; i++) - { - CPredictivePopupLineInfo* lineInfo = aLineArray->At(i); - textArray->AppendL(*lineInfo->iLineText); - } - - CleanupStack::Pop(textArray); // textArray - - return textArray; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::HandleSizeChanged -// The handler function for size change -// -// Original function is AknPopupLayouts::HandleSizeChanged() -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::HandleSizeChanged( - TAknPopupWindowLayoutDef& aDef, - CAknPopupHeadingPane* aHeading, - CEikListBox* aListBox, - CCoeControl* aWindowOwningControl) - { - TInt numofitems = aListBox->Model()->NumberOfItems(); - - TInt minItems = KJapPredictiveVisibleListRowsMin; - TInt maxItems = KJapPredictiveVisibleListRowsMax; - - if (aDef.iMaximumHeight) - { - maxItems = aDef.iMaximumHeight; - } - AknPopupLayouts::CheckRange(numofitems, minItems, maxItems); - CalcPopupMenuWindow(aDef, iMainPaneRect, numofitems); - SetupMenuPopupWindow(aDef, numofitems, aHeading != 0); - - aWindowOwningControl->SetRect(AknPopupLayouts::WindowRect(aDef)); - HandleSizeAndPositionOfComponents(aDef, aListBox, aHeading); - - TRect windowRect = AknPopupLayouts::WindowRect(aDef); - MAknsControlContext *cc = AknsDrawUtils::ControlContext( aListBox ); - TBool defaultContext = EFalse; - if (!cc) - { - cc = aListBox->View()->ItemDrawer()->SkinBackgroundControlContext(); - defaultContext = ETrue; - } - - if (cc) - { - CAknsBasicBackgroundControlContext *bcc = - (CAknsBasicBackgroundControlContext*)cc; - TAknLayoutRect popupBgRect; - - popupBgRect.LayoutRect( - windowRect, - ELayoutEmpty, - 0, 0, ELayoutEmpty, ELayoutEmpty, - windowRect.Size().iWidth, windowRect.Size().iHeight); - - bcc->SetBitmap(KAknsIIDQsnFrPopupCenter); - - if (defaultContext) - { - bcc->SetRect(popupBgRect.Rect()); - } - - bcc->SetParentPos(aWindowOwningControl->PositionRelativeToScreen()); - - if (defaultContext) - { - bcc->SetParentPos(TPoint(0, 0)); - } - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::HandleDraw -// The handler function for Draw -// -// Original function is AknPopupLayouts::HandleDraw() -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::HandleDraw(CEikonEnv* /*aEikEnv*/, - CWindowGc& aGc, - const TAknPopupWindowLayoutDef& aDef, - CEikListBox* aListBox, - CAknPopupHeadingPane* /*aHeading*/) - { - aGc.Clear(); - - TRect windowRect = - AknPopupLayouts::MenuRect(const_cast(aDef)); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - MAknsControlContext* cc = AknsDrawUtils::ControlContext(aListBox); - TBool windowFrameDrawn = EFalse; - if (!cc) - { - cc = aListBox->View()->ItemDrawer()->SkinBackgroundControlContext(); - } - - if (cc) - { - // drawing frame - TAknLayoutRect topLeft; - topLeft.LayoutRect( - windowRect, - ELayoutEmpty, - 0, 0, ELayoutEmpty, ELayoutEmpty, KListboxFlameMarge, KListboxFlameMarge); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect( - windowRect, - ELayoutEmpty, - ELayoutEmpty, ELayoutEmpty, 0, 0, KListboxFlameMarge, KListboxFlameMarge); - - TRect outerRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); - TRect innerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); - aGc.SetPenStyle(CGraphicsContext::ENullPen); - const TAknsItemID *frameId = &KAknsIIDQsnFrPopupSub; - const TAknsItemID *frameCenterId = &KAknsIIDQsnFrPopupCenter; - windowFrameDrawn = AknsDrawUtils::DrawFrame( - skin, aGc, outerRect, innerRect, *frameId, *frameCenterId); - } - - if (!windowFrameDrawn) - { - DrawWindowShadow( - aGc, - aDef.iCover, aDef.iSecond, aDef.iFirst, aDef.iOutline, aDef.iInside); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::CalcPopupMenuWindow -// Set up the information on a pop-up window -// -// Original function is AknPopupLayouts::CalcPopupMenuWindow() -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::CalcPopupMenuWindow( - TAknPopupWindowLayoutDef &aDef,const TRect& aRect, TInt /*aNum*/) - { - TAknLayoutRect popup_menu_window; - - TBool sizeDesideFlag = EFalse; - TInt adjustOffsetX = 0; - TInt adjustOffsetY = 0; - - TAknWindowLineLayout laf = - AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window( - 0, iMaximumRows - KJapPredictiveVisibleListRowsMin); - laf.il = 0; - laf.it = 0; - TAknWindowLineLayout maxlaf = - AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window( - 0, KJapPredictiveVisibleListRowsMax - KJapPredictiveVisibleListRowsMin); - laf.il = 0; - maxlaf.it = 0; - - popup_menu_window.LayoutRect(aRect, laf); - - // checking whether list can be drawn under the position which popup window is dispalyed - if (iMainPaneRect.iTl.iY - + iOffsetPosition.iY + KLAFBelowTextBaseline - + maxlaf.iH < iMainPaneRect.iBr.iY) - { - // deciding the position which popup window is dispalyed - adjustOffsetY = (-1) * KLAFBelowTextBaseline; - sizeDesideFlag = ETrue; - } - - // checking whether list can be drawn top the position which popup window is dispalyed - else if (iMainPaneRect.iTl.iY - + iOffsetPosition.iY - KLAFAboveTextBaseline - - iSrcTextHeight - - popup_menu_window.Rect().Height() > iMainPaneRect.iTl.iY) - { - // deciding the position which popup window is dispalyed - adjustOffsetY = iSrcTextHeight + KLAFAboveTextBaseline + popup_menu_window.Rect().Height(); - sizeDesideFlag = ETrue; - } - - // display the bottom of window in case the displaying position isn't decided - // - if (!sizeDesideFlag) - { - TAknWindowLineLayout laf = - AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window( - 0, KJapPredictiveVisibleListRowsMax - KLAFBaseListRows); - laf.il = 0; - laf.it = 0; - popup_menu_window.LayoutRect(aRect, laf); - adjustOffsetY = - iMainPaneRect.iTl.iY - + iOffsetPosition.iY + KLAFBelowTextBaseline - + popup_menu_window.Rect().Height() - iMainPaneRect.iBr.iY; - - iMaximumRows = KJapPredictiveVisibleListRowsMin; - sizeDesideFlag = ETrue; - } - - adjustOffsetX = - iMainPaneRect.iTl.iX - + iOffsetPosition.iX - + popup_menu_window.Rect().Width() - iMainPaneRect.iBr.iX; - adjustOffsetX = (adjustOffsetX > 0) ? adjustOffsetX : 0; - - TPoint adjustOffset(-adjustOffsetX, -adjustOffsetY); - - aDef.iWindowRect = popup_menu_window.Rect(); - aDef.iWindowRect.Move(iOffsetPosition); - aDef.iWindowRect.Move(adjustOffset); - - TRect window_rect = AknPopupLayouts::MenuRect(aDef); - aDef.iCover.LayoutRect( - window_rect, - AKN_LAYOUT_WINDOW_Predictive_candidate_selection_popup_window_graphics_Line_1(aDef.iWindowRect)); - aDef.iSecond.LayoutRect( - window_rect, - AKN_LAYOUT_WINDOW_Predictive_candidate_selection_popup_window_graphics_Line_2(aDef.iWindowRect)); - aDef.iFirst.LayoutRect( - window_rect, - AKN_LAYOUT_WINDOW_Predictive_candidate_selection_popup_window_graphics_Line_2(aDef.iWindowRect)); - aDef.iOutline.LayoutRect( - window_rect, - AKN_LAYOUT_WINDOW_Predictive_candidate_selection_popup_window_graphics_Line_3(aDef.iWindowRect)); - aDef.iInside.LayoutRect( - window_rect, - AKN_LAYOUT_WINDOW_Predictive_candidate_selection_popup_window_graphics_Line_4(aDef.iWindowRect)); - aDef.iPopupMenuWindowOffset = TPoint(0, 0); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::SetupMenuPopupWindow -// Set up the information on a pop-up window -// -// Original function is AknPopupLayouts::SetupMenuPopupWindow() -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::SetupMenuPopupWindow(TAknPopupWindowLayoutDef &aDef, TInt /*num*/, TBool /*heading*/) - { - AknPopupLayouts::SetupDefaults(aDef); - TRect window_rect = AknPopupLayouts::MenuRect(aDef); - - // setting size of listbox pane - TAknWindowLineLayout laf = - AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window(0, iMaximumRows - KLAFBaseListRows); - - laf.il = KListboxMarge; - laf.it = KListboxMarge; - laf.iW -= KListboxMarge*2; - laf.iH = laf.iH - KListboxMarge*2 - (laf.iH-KListboxMarge*2)%iMaximumRows; - aDef.iListRect.LayoutRect(window_rect, laf); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::HandleSizeAndPositionOfComponents -// The handler function for size and a location -// -// Original function is AknPopupLayouts::HandleSizeAndPositionOfComponents() -// -// -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::HandleSizeAndPositionOfComponents( - const TAknPopupWindowLayoutDef &aDef, - CCoeControl *aContent, - CAknPopupHeadingPane* /*aHeading*/) - { - TRect lbrect = aDef.iListRect.Rect(); - - if (AknLayoutUtils::ScalableLayoutInterfaceAvailable()) - { - // set scroll size - CAknFepUICtrlJapanesePredictiveListbox* listBox = - static_cast(aContent); - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(listBox->Model()); - TInt maxRows = model->LineInfoArray()->Count(); - if (maxRows > KJapPredictiveVisibleListRowsMax) - { - TAknWindowLineLayout scrollLineLayout = AknLayoutScalable_Avkon::scroll_pane_cp29().LayoutLine(); - lbrect.iBr.iX -= (scrollLineLayout.iW + KScrollRightMarge - KListboxMarge); - } - } - - aContent->SetRect(lbrect); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::DrawWindowShadow -// Draw window shadow -// -// Original function is AknDrawWithSkins::DrawWindowShadow() -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::DrawWindowShadow( - CWindowGc& aGc, - const TAknLayoutRect& aCoverRect, - const TAknLayoutRect& /*aSecondShadowRect*/, - const TAknLayoutRect& aFirstShadowRect, - const TAknLayoutRect& aOutlineFrameRect, - const TAknLayoutRect& aInsideAreaRect) - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - - // draw rectangle - aGc.SetBrushColor(aCoverRect.Color()); - AknsDrawUtils::Background(skin, NULL, NULL, aGc, aCoverRect.Rect()); - - aFirstShadowRect.DrawOutLineRect(aGc); - - aOutlineFrameRect.DrawOutLineRect(aGc); - - aGc.SetBrushStyle(CGraphicsContext::ESolidBrush); - aGc.SetBrushColor(aInsideAreaRect.Color()); - AknsDrawUtils::Background(skin, NULL, NULL, aGc, aInsideAreaRect.Rect()); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::MaximumRows -// calculate maximum columns from items of listbox -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictivePane::MaximumRows( - CTextListBoxModel* aModel) - { - CAknFepUICtrlJapanesePredictiveListBoxModel* model = - static_cast(aModel); - TInt maxRows = model->LineInfoArray()->Count(); - TInt maxVisibleRows = Min(KJapPredictiveVisibleListRowsMax, maxRows); - maxVisibleRows = Max(KJapPredictiveVisibleListRowsMin, maxVisibleRows); - return maxVisibleRows; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::Draw -// Called by the framework to draw the control -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::Draw(const TRect& /*aRect*/) const - { - CWindowGc& gc = SystemGc(); - gc.Clear(); - HandleDraw(iEikonEnv, gc, Layout(), iListBox, Heading()); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::OfferKeyEventL -// Handle key events. When a key event occurs -// ----------------------------------------------------------------------------- -// -TKeyResponse CAknFepUICtrlJapanesePredictivePane::OfferKeyEventL( - const TKeyEvent& /*aKeyEvent*/,TEventCode /*aType*/) - { - return EKeyWasNotConsumed; - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::MovePreviousItem -// selecting a next candidate -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictivePane::MovePreviousItem() - { - CAknFepUICtrlJapanesePredictiveListbox* listBox = - static_cast(ListBox()); - - return listBox->MovePreviousItem(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::MoveNextItem -// selecting a next candidate -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictivePane::MoveNextItem() - { - CAknFepUICtrlJapanesePredictiveListbox* listBox = - static_cast(ListBox()); - - return listBox->MoveNextItem(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::MovePreviousLineItem -// selecting a previous line candidate -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictivePane::MovePreviousLineItem() - { - CAknFepUICtrlJapanesePredictiveListbox* listBox = - static_cast(ListBox()); - - return listBox->MovePreviousLineItem(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::MoveNextLineItem -// selecting a next line candidate -// ----------------------------------------------------------------------------- -// -TInt CAknFepUICtrlJapanesePredictivePane::MoveNextLineItem() - { - CAknFepUICtrlJapanesePredictiveListbox* listBox = - static_cast(ListBox()); - - return listBox->MoveNextLineItem(); - } - -// ----------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::UpdateCbaL -// Changing the cba -// ----------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::UpdateCbaL(TInt aResourceID) - { - if (iCurrentResource == aResourceID) - { - return; - } - - // store resource id - iPopoutCba->SetCommandSetL( aResourceID ); - iCurrentResource = aResourceID; - iPopoutCba->DrawDeferred(); - } - -/** - * Processes events from the softkeys. Responds to EAknSoftkeyOk and EAknSoftkeyBack - * to accept or cancel the pop-up. - * - * @param aCommandId Event Id from the soft-key - */ -void CAknFepUICtrlJapanesePredictivePane::ProcessCommandL(TInt aCommandId) - { - // Respond to softkey events - switch (aCommandId) - { - case EAknFepSoftkeyConvert: - case EAknFepSoftkeyCloseWindow: - case EAknFepSoftkeyCommit: - case EAknFepSoftkeySelectCandidate: - case EAknFepSoftkeyOtherModes: - iUiMng->HandleCommandL(aCommandId); - break; - default: - CAknPopupList::ProcessCommandL(aCommandId); - break; - } - } - -void CAknFepUICtrlJapanesePredictivePane::ShowWindowCbaL() - { - RDrawableWindow* cbaWindow = iPopoutCba->ButtonGroup()->AsControl()->DrawableWindow(); - cbaWindow->SetOrdinalPosition(0,ECoeWinPriorityFep); - cbaWindow->SetFaded(EFalse, RWindowTreeNode::EFadeWindowOnly); - cbaWindow->SetNonFading(ETrue); - iEikonEnv->EikAppUi()->AddToStackL(iPopoutCba, - ECoeStackPriorityFep, - ECoeStackFlagRefusesFocus); - - iPopoutCba->ActivateL(); - iPopoutCba->MakeVisible(ETrue); - iPopoutCba->DrawDeferred(); // to update the cba - } - -// --------------------------------------------------------------------------- -// CAknFepUICtrlJapanesePredictivePane::HandleListBoxEventL -// CallBack from ListBox -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepUICtrlJapanesePredictivePane::HandleListBoxEventL( - CEikListBox* /*aListBox*/, TListBoxEvent aEventType) - { - switch (aEventType) - { - case EEventItemDraggingActioned: // Item Moved - DrawNow(); - break; - case EEventItemClicked: - { - TKeyEvent ccpuStart = {EKeyOK, EStdKeyDevice3, 0, 0}; - iEikonEnv->SimulateKeyEventL(ccpuStart, EEventKey); - } - break; - default: - break; - } - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlPinyinPopup.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlPinyinPopup.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1271 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlPinyinPopup methods. -* -*/ - - - - - - - - - - - - -#include -#include -#include -#include -#include - -#include -#include - -#include "AknFepUiInterfacePanic.h" -#include "AknFepUIAvkonCtrlPinyinPopup.h" -#include "AknFepUIAvkonCtrlInputPane.h" -#include "aknfepchineseuidataconv.h" -#include "aknfepuilayoutdatamgr.h" -#include - -#include "data_caging_path_literals.hrh" - -_LIT(KFepUiControlsBitmapFile, "aknfepuictrls.mbm"); - -CAknFepUICtrlPinyinPopup* CAknFepUICtrlPinyinPopup::NewL(RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CAknFepUICtrlPinyinPopup* self = new(ELeave) CAknFepUICtrlPinyinPopup( aLafDataMgr ); - CleanupStack::PushL(self); - self->ConstructL(aParent); - CleanupStack::Pop(); - return self; - } - -CAknFepUICtrlPinyinPopup::~CAknFepUICtrlPinyinPopup() - { - iInputPaneArray.ResetAndDestroy(); - iPages.Reset(); - delete iSpellingArray; - delete iSpellingIndexArray; - delete iNaviArrowBitmapLeft; - delete iNaviArrowBitmapLeftMask; - delete iNaviArrowBitmapRight; - delete iNaviArrowBitmapRightMask; - delete iBgContext; - delete iKeystrokeArray; - delete iInEffectKeystrokeArray; - delete iShowKeystrokeArray; - delete iOptimizeSpelling; - delete iTempSpelling; - delete iChooseChineseCharacterArray; - delete iChooseChineseCharacterArrayKeystroke; - - delete iKeystrokeArrayForStroke; - delete iInEffectKeystrokeArrayForStroke; - delete iShowKeystrokeArrayForStroke; - delete iChooseChineseCharacterArrayForStroke; - delete iChooseChineseCharacterArrayKeystrokeForStroke; - - delete iZhuyinSymbols; - delete iZhuyinShowSymbols; - delete iFirstValidZhuyinGrp; - delete iChineseCharsDisped; - delete iZhuyinSymbolsForChineseCharsDisped; - } - -void CAknFepUICtrlPinyinPopup::SetSizeChangedObserver( - MAknFepUICtrlPinyinPopupSizeChangedObserver* aObserver) - { - iSizeChangedObserver = aObserver; - } - -TBool CAknFepUICtrlPinyinPopup::IsEnabled() const - { - return iEnabled; - } - -void CAknFepUICtrlPinyinPopup::Enable(TBool aEnable) - { - // fix the refresh bug. - TBool redraw = ( aEnable || iEnabled != aEnable ); - - iEnabled = aEnable; - if(aEnable) - { - Window().SetOrdinalPosition(0, ECoeWinPriorityFep); // right at the front - } - - iSizeChangedObserver->SelectionPopupEnabled(aEnable); - if (!aEnable) - { - for(TInt i = 0; i < iVisibleCount; i++) - { - CAknFepUICtrlInputPane* inputPane = iInputPaneArray[i]; - inputPane->SetText(KNullDesC); - } - iVisibleCount = 0; - } - MakeVisible(aEnable); - - // fix the refresh bug. - if( redraw ) - { - DrawDeferred(); - } - } - -void CAknFepUICtrlPinyinPopup::SetVisibleSelectionCount(TInt aCount) - { - __ASSERT_DEBUG(aCount <= EMaxPhraseCandidate, AknFepUiInterfacePanic(EAknFepUiInterfacePanicNewVisibleCountExceedsRange)); - __ASSERT_DEBUG(aCount >= 1, AknFepUiInterfacePanic(EAknFepUiInterfacePanicNewVisibleCountExceedsRange)); - - if(iVisibleCount != aCount) - { - iVisibleCount = aCount; - TInt oldSelected = iSelected; - - if (iVisibleCount > 1) //the layout does not support a visible count of 1 - { - if(aCount - 1 < oldSelected) - { - // automatically move the selection to be at the end of the new - // candidate buffer, by forcing the one that will become the new - // highlighted one to be layout out highlighted before we are resized - // (note that briefly, there will be two items highlighted, but at least - // there will be no flicker) - iSelected = aCount - 1; - LayoutInputPane(aCount - 1); - } - - // note that the old highlighted one isn't shown any more, so we don't need to lay it out again to hide its highlight - SetInputPaneVisibility(); - iSizeChangedObserver->SelectionPopupSizeChanged(iVisibleCount); - DrawDeferred(); - } - } - } - -void CAknFepUICtrlPinyinPopup::SetVisibleCount(TInt aCount) - { - if(iVisibleCount != aCount) - { - iVisibleCount = aCount; - } - } - -TInt CAknFepUICtrlPinyinPopup::VisibleSelectionCount() const - { - return iVisibleCount; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::PhoneticSpellingArray(void) - { - return iSpellingArray; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::PhoneticSpellingIndexArray(void) - { - return iSpellingIndexArray; - } - -void CAknFepUICtrlPinyinPopup::SplitPhraseSpellingIntoPages(void) - { - iPages.Reset(); - TPage curPage; - TInt spellingNum = iSpellingArray->Count(); - if(spellingNum == 0) - { - iVisibleCount = 0; - return; - } - - TInt index = 0; - TBool beAppend = EFalse; - - while(index < spellingNum) - { - beAppend = EFalse; - curPage.iStartIndex = index; - curPage.iEndIndex = index; - - TInt spellingLeftNum = spellingNum - index > EMaxPhraseCandidate? EMaxPhraseCandidate:spellingNum - index; - for(TInt j = 0; j < spellingLeftNum; j ++) - { - iInputPaneArray[j]->SetText((*iSpellingArray)[index + j]); - } - - TAknWindowLineLayout layoutEntryItem = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutEntryItem)); - TAknTextLineLayout entryTextLine = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EEntryTextLayout)); - TInt layoutLinePrevLeft = 0; - TInt layoutLinePrevWidth = 0; - - TAknLayoutRect layoutRectEntryItem; - layoutRectEntryItem.LayoutRect(Rect(),layoutEntryItem); - TRect rectEntryItem = layoutRectEntryItem.Rect(); - - TAknLayoutText layoutText; - layoutText.LayoutText(rectEntryItem,entryTextLine); - TRect rectText = layoutText.TextRect(); - - TInt rightLimit = iIndiFepArrowRight.Rect().iTl.iX; - // value is 3 for 176*208 resolution - TInt distance = rectText.iTl.iX - rectEntryItem.iTl.iX + rectEntryItem.iBr.iX - rectText.iBr.iX; - - for(TInt i = 0;i < spellingLeftNum;i ++) - { - if(i > 0) - { - rectText.iTl.iX = TInt16(layoutLinePrevLeft + layoutLinePrevWidth); - } - rectText.SetWidth(iInputPaneArray[i]->LabelTextWidthInPixels() + distance); - - // if label's layout out of screen, forms another display page - // > change >= change for phrase creation. - if((rectText.iTl.iX >= rightLimit) || ((rectText.iTl.iX + rectText.Width()) >= rightLimit)) - { - curPage.iEndIndex = index - 1; - iPages.Append(curPage); - beAppend = ETrue; - break; - } - - layoutLinePrevLeft = rectText.iTl.iX; - layoutLinePrevWidth = rectText.Width(); - - index ++; - - if( i == EMaxPhraseCandidate -1 ) - { - curPage.iEndIndex = index - 1; - iPages.Append(curPage); - beAppend = ETrue; - break; - } - - } - } - - if( beAppend == EFalse) - { - curPage.iEndIndex = index - 1; - iPages.Append(curPage); - } - iCurDisplayPage = 0; - SetVisibleSelectionCount(iPages[0].iEndIndex - iPages[0].iStartIndex + 1); - } - -void CAknFepUICtrlPinyinPopup::SplitSpellingIntoPages(TInt aCount) - { - iPages.Reset(); - TPage curPage; - if(aCount == 0) - { - return; - } - TInt index = 0; - TBool beAppend = EFalse; - - while(index < aCount) - { - beAppend = EFalse; - curPage.iStartIndex = index; - curPage.iEndIndex = index; - TInt spellingLeftNum = aCount - index > EMaxCandidates? EMaxCandidates:aCount - index; - - TAknWindowLineLayout layoutEntryItem = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutEntryItem)); - TAknTextLineLayout entryTextLine = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EEntryTextLayout)); - TInt layoutLinePrevLeft = 0; - TInt layoutLinePrevWidth = 0; - - TAknLayoutRect layoutRectEntryItem; - layoutRectEntryItem.LayoutRect(Rect(),layoutEntryItem); - TRect rectEntryItem = layoutRectEntryItem.Rect(); - - TAknLayoutText layoutText; - layoutText.LayoutText(rectEntryItem,entryTextLine); - TRect rectText = layoutText.TextRect(); - - TInt rightLimit = rectEntryItem.iTl.iX + rectEntryItem.Width(); - // value is 3 for 176*208 resolution - TInt distance = rectText.iTl.iX - rectEntryItem.iTl.iX + rectEntryItem.iBr.iX - rectText.iBr.iX; - for(TInt i = 0;i < spellingLeftNum;i ++) - { - if(i > 0) - { - rectText.iTl.iX = TInt16(layoutLinePrevLeft + layoutLinePrevWidth); - } - rectText.SetWidth(iInputPaneArray[i]->LabelTextWidthInPixels() + distance); - - // if label's layout out of screen, forms another display page - if((rectText.iTl.iX >= rightLimit) || ((rectText.iTl.iX + rectText.Width()) >= rightLimit)) - { - curPage.iEndIndex = index - 1; - iPages.Append(curPage); - beAppend = ETrue; - break; - } - layoutLinePrevLeft = rectText.iTl.iX; - layoutLinePrevWidth = rectText.Width(); - index ++; - - if( i == EMaxPhraseCandidate -1 ) - { - curPage.iEndIndex = index - 1; - iPages.Append(curPage); - beAppend = ETrue; - break; - } - - } - } - - if(beAppend == EFalse) - { - curPage.iEndIndex = index - 1; - iPages.Append(curPage); - } - - iCurDisplayPage = 0; - SetVisibleSelectionCount(iPages[0].iEndIndex - iPages[0].iStartIndex + 1); - SelectIndex(0); - } - -void CAknFepUICtrlPinyinPopup::SetDisplayPage(TInt aSelection) - { - if(aSelection >= iVisibleCount) - { - for(TInt i = 0 ; i < iPages.Count(); i ++) - { - if((aSelection >= iPages[i].iStartIndex) && (aSelection <= iPages[i].iEndIndex)) - { - iCurDisplayPage = i; - SetVisibleSelectionCount(iPages[i].iEndIndex - iPages[i].iStartIndex + 1); - SelectIndex(aSelection - iPages[i].iStartIndex); - break; - } - } - } - else - { - SelectIndex(aSelection); - } - UpdateInputPaneVisibility(); - } - -TInt CAknFepUICtrlPinyinPopup::CurrentPageStartIndex(void) - { - return iPages[iCurDisplayPage].iStartIndex; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::KeystrokeArray() - { - return iKeystrokeArray; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::InEffectKeystrokeArray() - { - return iInEffectKeystrokeArray; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::ShowKeystrokeArray() - { - return iShowKeystrokeArray; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::OptimizeSpelling() - { - return iOptimizeSpelling; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::TempSpelling() - { - return iTempSpelling; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::ChooseChineseCharacterArray() - { - return iChooseChineseCharacterArray; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::ChooseChineseCharacterArrayKeystroke() - { - return iChooseChineseCharacterArrayKeystroke; - } - -TBool CAknFepUICtrlPinyinPopup::GetTonemarkState() - { - return iTonemarkState; - } - -void CAknFepUICtrlPinyinPopup::SetTonemarkState( TBool aState ) - { - iTonemarkState = aState; - } - -void CAknFepUICtrlPinyinPopup::UpdateInputPaneVisibility() - { - TInt number = 0; - if(iPages.Count() != 0) - { - number = iPages[iCurDisplayPage].iEndIndex - iPages[iCurDisplayPage].iStartIndex + 1; - } - if(number > iVisibleCount) - { - number = iVisibleCount; - } - for(TInt i = 0; i < EMaxPhraseCandidate; i++) - { - CAknFepUICtrlInputPane* inputPane = iInputPaneArray[i]; - - if(i < number) - { - inputPane->MakeVisible(ETrue); - } - else - { - inputPane->MakeVisible(EFalse); - } - } - } - -TBool CAknFepUICtrlPinyinPopup::SetItemText(TInt aIndex, const TDesC& aText) - { - __ASSERT_DEBUG(aIndex < EMaxPhraseCandidate, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedSetItemTextOutsideMaxCandidates)); - __ASSERT_DEBUG(aIndex >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedSetItemTextOutsideMaxCandidates)); - - if(aIndex > iVisibleCount) - { - return EFalse; - } - - CAknFepUICtrlInputPane* inputPane = iInputPaneArray[aIndex]; - inputPane->SetText(aText); - return ETrue; - } - -TBool CAknFepUICtrlPinyinPopup::SetPhraseItemTexts() - { - for(TInt i = 0; i < iVisibleCount; i ++) - { - TPtrC spelling = (*iSpellingArray)[i + iPages[iCurDisplayPage].iStartIndex]; // our index is zero based, engine index is one based - SetItemText(i, spelling); - } - return ETrue; - } - -TBool CAknFepUICtrlPinyinPopup::GetItemText(TInt aIndex, TDes& aText) const - { - __ASSERT_DEBUG(aIndex < EMaxCandidates, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedSetItemTextOutsideMaxCandidates)); - __ASSERT_DEBUG(aIndex >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedSetItemTextOutsideMaxCandidates)); - - const CAknFepUICtrlInputPane* inputPane = iInputPaneArray[aIndex]; - inputPane->GetText(aText); - - return ETrue; - } - -void CAknFepUICtrlPinyinPopup::SetToneMark(const TDesC& aToneMark) - { - for(TInt i = 0; i < EMaxPhraseCandidate; i++) - { - CAknFepUICtrlInputPane* inputPane = iInputPaneArray[i]; - inputPane->SetToneMark(aToneMark); - } - } - -void CAknFepUICtrlPinyinPopup::SetToneMark(TInt aIndex, const TDesC& aToneMark) - { - CAknFepUICtrlInputPane* inputPane = iInputPaneArray[aIndex]; - inputPane->SetToneMark(aToneMark); - - LayoutInputPane(aIndex); - } - -void CAknFepUICtrlPinyinPopup::GetToneMark(TInt aIndex, TDes& aToneMark) const - { - const CAknFepUICtrlInputPane* inputPane = iInputPaneArray[aIndex]; - inputPane->GetToneMark(aToneMark); - } - -void CAknFepUICtrlPinyinPopup::SetItemToneMarkValidity(TInt aIndex, TBool aValid) - { - CAknFepUICtrlInputPane* inputPane = iInputPaneArray[aIndex]; - inputPane->SetToneMarkValidity(aValid); - } - - - -TBool CAknFepUICtrlPinyinPopup::SelectNextPhrase() - { - TInt maxIndex = iVisibleCount - 1; - TInt newIndex = iSelected; - - if((iSelected == maxIndex) ) - { - // is last page - if(iCurDisplayPage == (iPages.Count() - 1)) - { - iCurDisplayPage = 0; - } - else - { - iCurDisplayPage ++; - } - SetVisibleSelectionCount(iPages[iCurDisplayPage].iEndIndex - iPages[iCurDisplayPage].iStartIndex + 1); - SetFlag(EDispPageChanged); - newIndex = 0; - } - else if(iSelected < maxIndex) - { - newIndex ++; - } - else if(iSelected > maxIndex) - { - return EFalse; - } - return SelectIndex(newIndex); - } - - -TBool CAknFepUICtrlPinyinPopup::SelectPrevPhrase() - { - TInt maxIndex = iVisibleCount - 1; - TInt newIndex = iSelected; - if(iSelected == 0) - { - // first page - if(iCurDisplayPage == 0) - { - iCurDisplayPage = iPages.Count() - 1; - } - else - { - iCurDisplayPage --; - } - // loop to the end - SetVisibleSelectionCount(iPages[iCurDisplayPage].iEndIndex - iPages[iCurDisplayPage].iStartIndex + 1); - SetFlag(EDispPageChanged); - newIndex = iVisibleCount - 1 ; - } - else if(iSelected > 0) - { - newIndex--; - } - else if(iSelected > maxIndex) - { - return EFalse; - } - return SelectIndex(newIndex); - } - -TBool CAknFepUICtrlPinyinPopup::SelectIndex(TInt aIndex) - { - __ASSERT_DEBUG(aIndex < iVisibleCount, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedSelectionOutsideVisibleCandidates)); - __ASSERT_DEBUG(aIndex >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedSelectionOutsideVisibleCandidates)); - // If the value of the index changes, the control is redrawn to show the new position. - if(iSelected != aIndex) - { - // only want to layout the two controls between which the selection is moving - TInt oldSelected = iSelected; - iSelected = aIndex; - - LayoutInputPane(oldSelected); - LayoutInputPane(iSelected); - } - return ETrue; - } - -TInt CAknFepUICtrlPinyinPopup::CurrentSelection() const - { - if(iPages.Count() != 0) - { - return iPages[iCurDisplayPage].iStartIndex + iSelected; - } - else - { - return 0; - } - } - -TInt CAknFepUICtrlPinyinPopup::CurrentVisibleSelection() const - { - return iSelected; - } - -void CAknFepUICtrlPinyinPopup::PopupSizeChanged() - { - SizeChanged(); - } - -void CAknFepUICtrlPinyinPopup::SizeChanged() - { - LayoutRects(); - LayoutContainedControls(); - LayoutFrames(); - } - -TInt CAknFepUICtrlPinyinPopup::CountComponentControls() const - { - TInt count = 0; - count += iInputPaneArray.Count(); - - CCoeControl* controls[] = - { - 0 - } ; - - for (TUint ii = 0 ; ii < (sizeof(controls) / sizeof(CCoeControl*)) ; ii++) - { - if(controls[ii]) - { - count++ ; - } - } - return count ; - } - -CCoeControl* CAknFepUICtrlPinyinPopup::ComponentControl(TInt aIndex) const - { - TInt candidateCount = iInputPaneArray.Count(); - - if(aIndex < candidateCount) - { - // because this method is const, the const [] operator is selected - // which means that the pointer is const, so have to cast away constness - // - a possible alternative is to make the array mutable - return CONST_CAST(CAknFepUICtrlInputPane*, iInputPaneArray[aIndex]); - } - aIndex -= candidateCount; - - CCoeControl* controls[] = - { - 0 - } ; - - for (TUint ii = 0; (ii < sizeof(controls) / sizeof(CCoeControl*)) ; ii++) - { - if (controls[ii] && aIndex-- == 0) - { - return controls[ii] ; - } - } - // shouldn't be called while no components. - return NULL ; - } - -void CAknFepUICtrlPinyinPopup::Draw(const TRect& /*aRect*/) const - { - CWindowGc& gc = SystemGc(); - TBool skinnedDraw = EFalse; - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - - TRect outerRect; - TRect innerRect; - CalculateFrameRects(outerRect, innerRect); - - gc.Clear(outerRect); - TRect tmpRect; - tmpRect.iTl.iX = innerRect.iTl.iX; - tmpRect.iTl.iY = outerRect.iTl.iY; - tmpRect.SetWidth(innerRect.Width()); - tmpRect.SetHeight(outerRect.Height()); - skinnedDraw = AknsDrawUtils::DrawFrame(skin, gc, outerRect, tmpRect, - KAknsIIDQsnFrPopupSub, KAknsIIDQsnFrPopupCenterSubmenu); - - // draw the rectangles - if(!skinnedDraw) - { - iRectCoverMainPaneInput.DrawRect(gc); - iRectFirstShadowInput.DrawRect(gc); - iRectOutlineFrameInput.DrawRect(gc); - iRectInsideAreaInput.DrawRect(gc); - } - - if((iVisibleCount >= 1) && (iPages.Count() > 1)) - { - if(iCurDisplayPage != 0) - { - iIndiFepArrowLeft.DrawImage(gc, iNaviArrowBitmapLeft, iNaviArrowBitmapLeftMask); - } - - if (iPages.Count() > iCurDisplayPage + 1) - { - iIndiFepArrowRight.DrawImage(gc, iNaviArrowBitmapRight, iNaviArrowBitmapRightMask); - } - } - } - -TTypeUid::Ptr CAknFepUICtrlPinyinPopup::MopSupplyObject(TTypeUid aId) - { - if (aId.iUid == MAknsControlContext::ETypeId) - return ( MAknsControlContext::SupplyMopObject(aId, iBgContext)); - return CCoeControl::MopSupplyObject(aId); - } - -void CAknFepUICtrlPinyinPopup::ConstructL(RWindow& /*aParent*/) - { - CreateWindowL(); - ConstructBitmapsL(); - RWindow& window = Window(); - - for(TInt i = 0; i < EMaxPhraseCandidate; i++) - { - CAknFepUICtrlInputPane* inputPane = - CAknFepUICtrlInputPane::NewL(window, CAknFepUICtrlInputPane::ELayoutPhrasePinyinPopupPane, iLafDataMgr); - inputPane->SetMopParent(this); - CleanupStack::PushL(inputPane); - // ownership is passed, unless allocation is unsuccessful, in which case we still have it on the stack - User::LeaveIfError(iInputPaneArray.Append(inputPane)); - CleanupStack::Pop(); // inputPane - } - - iSpellingArray = new(ELeave)CDesCArrayFlat(1); - iSpellingIndexArray = new(ELeave)CDesCArrayFlat(1); - iKeystrokeArray = new(ELeave)CDesCArrayFlat(1); - iShowKeystrokeArray = new(ELeave)CDesCArrayFlat(1); - iOptimizeSpelling = new(ELeave)CDesCArrayFlat(1); - iTempSpelling = new(ELeave)CDesCArrayFlat(1); - iInEffectKeystrokeArray = new(ELeave)CDesCArrayFlat(1); - iChooseChineseCharacterArray = new(ELeave)CDesCArrayFlat(1); - iChooseChineseCharacterArrayKeystroke = new(ELeave)CDesCArrayFlat(1); - //For stroke - iKeystrokeArrayForStroke = new(ELeave)CDesCArrayFlat(1); - iInEffectKeystrokeArrayForStroke = new(ELeave)CDesCArrayFlat(1); - iShowKeystrokeArrayForStroke = new(ELeave)CDesCArrayFlat(1); - iChooseChineseCharacterArrayForStroke = new(ELeave)CDesCArrayFlat(1); - iChooseChineseCharacterArrayKeystrokeForStroke = new(ELeave)CDesCArrayFlat(1); - - iZhuyinSymbols = new(ELeave)CDesCArrayFlat(1); - iZhuyinShowSymbols = new(ELeave)CDesCArrayFlat(1); - iFirstValidZhuyinGrp = new(ELeave)CDesCArrayFlat(1); - iChineseCharsDisped = new(ELeave)CDesCArrayFlat(1); - iZhuyinSymbolsForChineseCharsDisped = new(ELeave)CDesCArrayFlat(1); - - SetNonFocusing(); - window.SetOrdinalPosition(0, ECoeWinPriorityFep); // right at the front - window.SetNonFading(ETrue); - - TRect outerRect = TRect(); - TRect innerRect = TRect(); - CalculateFrameRects(outerRect, innerRect); - - iBgContext = CAknsFrameBackgroundControlContext::NewL(KAknsIIDQsnFrPopupSub, outerRect, innerRect, ETrue); - iLastResouce = 0; - MakeVisible(EFalse); - } - -void CAknFepUICtrlPinyinPopup::ConstructBitmapsL() - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - - TFileName bmpFile; - bmpFile.Copy(_L("z:")); - bmpFile.Append(KDC_BITMAP_DIR); - bmpFile.Append(KFepUiControlsBitmapFile); - - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnIndiFepArrowLeft, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG20, - iNaviArrowBitmapLeft, - iNaviArrowBitmapLeftMask, - bmpFile, - EMbmAknfepuictrlsQgn_indi_fep_arrow_left, - EMbmAknfepuictrlsQgn_indi_fep_arrow_left_mask, - AKN_LAF_COLOR( 0 ) - ); - - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnIndiFepArrowRight, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG20, - iNaviArrowBitmapRight, - iNaviArrowBitmapRightMask, - bmpFile, - EMbmAknfepuictrlsQgn_indi_fep_arrow_right, - EMbmAknfepuictrlsQgn_indi_fep_arrow_right_mask, - AKN_LAF_COLOR( 0 ) - ); - } - -CAknFepUICtrlPinyinPopup::CAknFepUICtrlPinyinPopup( CAknFepUiLayoutDataMgr* aLafDataMgr ) - : - iSelected(0), - iEnabled(EFalse), - iVisibleCount(CAknFepUICtrlPinyinPopup::EMaxPhraseCandidate), - iCurDisplayPage(0), - iTonemarkState(1), - iStrokeState(0), - iHighLightFlag( 0 ), - iFlags(0), - iValidKeystrokeCount( 0 ), - iPhraseCreation(0), - iPhraseCreationEditingState( 0 ), - iState(1), - iChangeStateFromEditToSpelling( 0 ), - iValidKeystrokeChanged( 0 ) - { - iLafDataMgr = aLafDataMgr; - iEEPContent.Zero(); - } - -void CAknFepUICtrlPinyinPopup::LayoutRects() - { - // left arrow - iIndiFepArrowLeft = - CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( EIndiFepArrowLeft )); - AknIconUtils::SetSize( iNaviArrowBitmapLeft, iIndiFepArrowLeft.Rect().Size()); - - // right arrow - iIndiFepArrowRight = - CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( EIndiFepArrowRight )); - AknIconUtils::SetSize( iNaviArrowBitmapRight, iIndiFepArrowRight.Rect().Size()); - - // cover main pane - iRectCoverMainPaneInput = - CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectCoverMainPaneInput )); - // first shadow - iRectFirstShadowInput = - CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectFirstShadowInput )); - // outline frame - iRectOutlineFrameInput = - CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectOutlineFrameInput )); - // inside area - iRectInsideAreaInput = - CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ERectInsideAreaInput )); - } - -void CAknFepUICtrlPinyinPopup::LayoutContainedControls() - { - LayoutInputPanes(); - } - -void CAknFepUICtrlPinyinPopup::LayoutInputPanes() - { - for(TInt i = 0; i < EMaxPhraseCandidate; i++) - { - LayoutInputPane(i); - } - } - -void CAknFepUICtrlPinyinPopup::LayoutInputPane(TInt aIndex) - { - TRect rect = Rect(); - - CAknFepUICtrlInputPane* inputPane = iInputPaneArray[aIndex]; - TAknWindowLineLayout layoutEntryItem = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutEntryItem)); - TAknTextLineLayout layoutLineText = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EEntryTextLayout)); - TAknLayoutRect layoutRectEntryItem; - layoutRectEntryItem.LayoutRect(rect,layoutEntryItem); - TRect rectEntryItem = layoutRectEntryItem.Rect(); - - TAknLayoutText layoutText; - layoutText.LayoutText(rectEntryItem,layoutLineText); - TRect rectText = layoutText.TextRect(); - - // value is 3 for 176*208 resolution - TInt distance = rectText.iTl.iX - rectEntryItem.iTl.iX + rectEntryItem.iBr.iX - rectText.iBr.iX; - - if( aIndex > 0) - { - CAknFepUICtrlInputPane* inputPanePrev = iInputPaneArray[aIndex - 1]; - rectText.iTl.iX = inputPanePrev->Rect().iBr.iX; - } - rectText.SetWidth(inputPane->LabelTextWidthInPixels() + distance); - rectText.SetHeight(rect.Height()); - - inputPane->SetRect(rectText); - inputPane->SetHighlighted(aIndex == iSelected); - } - -void CAknFepUICtrlPinyinPopup::SetInputPaneVisibility() - { - TInt number = iVisibleCount; - CWindowGc& gc = SystemGc(); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - MAknsControlContext* cc = AknsDrawUtils::ControlContext(this); - TBool skinnedDraw = AknsDrawUtils::Background(skin, cc, this, gc, Rect(),KAknsDrawParamPrepareOnly); - - for(TInt i = 0; i < EMaxPhraseCandidate; i++) - { - CAknFepUICtrlInputPane* inputPane = iInputPaneArray[i]; - - //TBool skinnedDraw = AknsDrawUtils::HasBitmapBackground(skin, cc); - if(skinnedDraw) - { - // show input panes, when skinned, as they must draw background context - // to avoid (the one that is almost off-screen) flickering behind - // however, need to hide the text so that is doesn't show - inputPane->MakeTextVisible(i < number); - } - else - { - // if not skinned, must hide the offscreen input panes otherwise they - // will draw over the border rectangle - inputPane->MakeVisible(i < number); - } - } - } - -void CAknFepUICtrlPinyinPopup::LayoutFrames() - { - TRect outerRect; - TRect innerRect; - CalculateFrameRects(outerRect, innerRect); - iBgContext->SetFrameRects(outerRect, innerRect); - iBgContext->SetParentPos(PositionRelativeToScreen()); - } - -void CAknFepUICtrlPinyinPopup::CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const - { - TRect windowRect = - CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData( EPopupRectEntry )); - TInt rectHeight = windowRect.iBr.iY - windowRect.iTl.iY; - TInt rectWidth = windowRect.Width(); - windowRect.iTl.iX = 0; - windowRect.iTl.iY = 0; - windowRect.SetHeight(rectHeight); - windowRect.SetWidth(rectWidth); - - TAknLayoutRect topLeft; - topLeft.LayoutRect(windowRect, SkinLayout::Submenu_skin_placing_Line_2()); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect(windowRect, SkinLayout::Submenu_skin_placing_Line_5()); - - aOuterRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); - aInnerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); - } - -void CAknFepUICtrlPinyinPopup::SetNoneHighlighted() - { - TInt number = iVisibleCount; - CWindowGc& gc = SystemGc(); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - MAknsControlContext* cc = AknsDrawUtils::ControlContext(this); - TBool skinnedDraw = AknsDrawUtils::Background(skin, cc, this, gc, Rect(),KAknsDrawParamPrepareOnly); - - for(TInt i = 0; i < EMaxPhraseCandidate; i++) - { - CAknFepUICtrlInputPane* inputPane = iInputPaneArray[i]; - - //TBool skinnedDraw = AknsDrawUtils::HasBitmapBackground(skin, cc); - if(skinnedDraw) - { - // show input panes, when skinned, as they must draw background context - // to avoid (the one that is almost off-screen) flickering behind - // however, need to hide the text so that is doesn't show - inputPane->SetHighlighted( !(i < number) ); - } - } - } -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::KeystrokeArrayForStroke() - { - return iKeystrokeArrayForStroke; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::InEffectKeystrokeArrayForStroke() - { - return iInEffectKeystrokeArrayForStroke; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::ShowKeystrokeArrayForStroke() - { - return iShowKeystrokeArrayForStroke; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::ChooseChineseCharacterArrayForStroke() - { - return iChooseChineseCharacterArrayForStroke; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::ChooseChineseCharacterArrayKeystrokeForStroke() - { - return iChooseChineseCharacterArrayKeystrokeForStroke; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::ZhuyinSymbols() - { - return this->iZhuyinSymbols; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::ZhuyinShowSymbols() - { - return this->iZhuyinShowSymbols; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::FirstValidZhuyinGrp() - { - return this->iFirstValidZhuyinGrp; - } - -void CAknFepUICtrlPinyinPopup::SetEEPContent ( const TDes& aDes ) - { - iEEPContent = aDes; - } - -TDes& CAknFepUICtrlPinyinPopup::GetEEPContent ( ) - { - return iEEPContent; - } - -void CAknFepUICtrlPinyinPopup::SetEEPContentValid ( TBool aValid ) - { - iEEPContentValid = aValid; - } - -TBool CAknFepUICtrlPinyinPopup::GetEEPContentValid ( ) - { - return iEEPContentValid; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::ChineseCharsDisped() - { - return this->iChineseCharsDisped; - } - -CDesCArrayFlat* CAknFepUICtrlPinyinPopup::ZhuyinSymbolsForChineseCharsDisped() - { - return this->iZhuyinSymbolsForChineseCharsDisped; - } - -void CAknFepUICtrlPinyinPopup::ResetStrokeArray() - { - //reset pinyin array - iSpellingArray->Reset(); - iSpellingArray->Compress(); - iSpellingIndexArray->Reset(); - iSpellingIndexArray->Compress(); - iKeystrokeArray->Reset(); - iKeystrokeArray->Compress(); - iInEffectKeystrokeArray->Reset(); - iInEffectKeystrokeArray->Compress(); - iShowKeystrokeArray->Reset(); - iShowKeystrokeArray->Compress(); - iChooseChineseCharacterArray->Reset(); - iChooseChineseCharacterArray->Compress(); - iChooseChineseCharacterArrayKeystroke->Reset(); - iChooseChineseCharacterArrayKeystroke->Compress(); - iOptimizeSpelling->Reset(); - iOptimizeSpelling->Compress(); - iTempSpelling->Reset(); - iTempSpelling->Compress(); - - //reset stroke array - iKeystrokeArrayForStroke->Reset(); - iKeystrokeArrayForStroke->Compress(); - iInEffectKeystrokeArrayForStroke->Reset(); - iInEffectKeystrokeArrayForStroke->Compress(); - iShowKeystrokeArrayForStroke->Reset(); - iShowKeystrokeArrayForStroke->Compress(); - iChooseChineseCharacterArrayForStroke->Reset(); - iChooseChineseCharacterArrayForStroke->Compress(); - iChooseChineseCharacterArrayKeystrokeForStroke->Reset(); - iChooseChineseCharacterArrayKeystrokeForStroke->Compress(); - - //reset zhuyin array - iZhuyinSymbols->Reset(); - iFirstValidZhuyinGrp->Reset(); - iChineseCharsDisped->Reset(); - iZhuyinSymbolsForChineseCharsDisped->Reset(); - - iZhuyinSymbols->Compress(); - iFirstValidZhuyinGrp->Compress(); - iChineseCharsDisped->Compress(); - iZhuyinSymbolsForChineseCharsDisped->Compress(); - - iLastResouce = 0; - iValidKeystrokeCount = 0; - iPhraseCreation = 0; - iPhraseCreationEditingState = 0; - iHighLightFlag = 0; - iChangeStateFromEditToSpelling = 0; - iValidKeystrokeChanged = 0; - - } - -void CAknFepUICtrlPinyinPopup::SetChangeState( TBool aChangeState ) - { - iChangeState = aChangeState ; - } - -TBool CAknFepUICtrlPinyinPopup::IsChangeStatet() const - { - return iChangeState; - } - -void CAknFepUICtrlPinyinPopup::SetState( TInt aState ) - { - iState = aState; - } - -TInt CAknFepUICtrlPinyinPopup::GetState() - { - return iState; - } - -void CAknFepUICtrlPinyinPopup::SetPhraseCreationState( TBool aState ) - { - iPhraseCreation = aState; - } - -TBool CAknFepUICtrlPinyinPopup::GetPhraseCreationState() - { - return iPhraseCreation; - } - -void CAknFepUICtrlPinyinPopup::SetPhraseCreationEditingState( TBool aState ) - { - iPhraseCreationEditingState = aState; - } - -TBool CAknFepUICtrlPinyinPopup::GetPhraseCreationEditingState() - { - return iPhraseCreationEditingState; - } - -// --------------------------------------------------------- -// Set flag whether from candidate state change state. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinPopup::SetFromCandidateChangeStateFlag( TBool aFlag ) - { - iHighLightFlag = aFlag; - } - -// --------------------------------------------------------- -// Get flag whether from candidate state change state. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinPopup::GetFromCandidateChangeStateFlag() - { - return iHighLightFlag; - } - -// --------------------------------------------------------- -// Set count of valid keystroke. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinPopup::SetValidKeystrokeCount( TInt aCount ) - { - iValidKeystrokeCount = aCount; - } - -// --------------------------------------------------------- -// Set count of valid keystroke. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinPopup::GetValidKeystrokeCount() - { - return iValidKeystrokeCount; - } - -// --------------------------------------------------------- -// Set last cba resouce id. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinPopup::SetLastResouce( TInt aResouceId ) - { - iLastResouce = aResouceId; - } - -// --------------------------------------------------------- -// Get last cba resouce id. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinPopup::GetLastResouce() - { - return iLastResouce; - } - -// --------------------------------------------------------- -// Set change state from Edit to Spelling flag. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinPopup::SetFromEditToSpellingFlag( TBool aFlag ) - { - iChangeStateFromEditToSpelling = aFlag; - } - -// --------------------------------------------------------- -// Get change state from Edit to Spelling flag. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinPopup::GetFromEditToSpellingFlag() - { - return iChangeStateFromEditToSpelling; - } - -// --------------------------------------------------------- -// Set valid keystroke change flag. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinPopup::SetValidKeystrokeChange( TBool aFlag ) - { - iValidKeystrokeChanged = aFlag; - } - -// --------------------------------------------------------- -// Get valid keystroke change flag. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinPopup::GetValidKeystrokeChange() - { - return iValidKeystrokeChanged; - } - -// --------------------------------------------------------- -// Set PreStateIsPredict flag. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinPopup::SetPreStateIsPredictive( TBool aFlag ) - { - iPreStateIsPredictive = aFlag; - } - -// --------------------------------------------------------- -// Set PreStateIsPredict flag. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinPopup::GetPreStateIsPredictive() - { - return iPreStateIsPredictive; - } - -void CAknFepUICtrlPinyinPopup::SetInputLayoutMiniQwertyZhuyin() - { - for(TInt i = 0; i < EMaxPhraseCandidate; i++) - { - iInputPaneArray[i]->SetLayout( CAknFepUICtrlInputPane::ELayoutPhraseMiniQwertyZhuyin ); - } - } - -void CAknFepUICtrlPinyinPopup::ResetInputLayoutMiniQwertyZhuyin() - { - for(TInt i = 0; i < EMaxPhraseCandidate; i++) - { - iInputPaneArray[i]->SetLayout( CAknFepUICtrlInputPane::ELayoutPhrasePinyinPopupPane ); - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonImpl.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonImpl.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,896 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the FEP's Avkon UI access methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiAvkonImpl.h" -#include "AknFepUiAvkonStylusPopUpMenu.h" -#include //CAknNoteDialog -#include //CAknMessageQueryDialog -#include -#include -#include -#include //CAknEdwinState -#include -#include -#include "AknFepGlobalEnums.h" -#include -#include //CAknCharMapDialog -#include -#include "AknFepQuery.h" -#include -#include "AknFepIndicatorAvkon.h" -#include // MAknFepManagerInterface -#include //CAknIndicatorContainer -#include "AknFepUIAvkonCtrlContainerChinese.h" -#include "AknFepUIAvkonCtrlContainerJapanese.h" -#include -#include "AknFepUIAvkonCtrlJapaneseKutenQueryDialog.h" -#include -#ifdef RD_INTELLIGENT_TEXT_INPUT -// Predictive QWERTY (XT9) changes ----> -#include -#include //CAknTitlePane -#include -#include "AknFepAvkonCandidatePopup.h" -#include "AknFepUiAvkonCtrlExactWordPopupContent.h" -#include "AknFepPredictiveSettingDialog.h" -#include "AknFepUserDictionaryEditDialog.h" - -#ifdef FF_DUAL_LANGUAGE_SUPPORT -#include "AknFepUIAvkonCtrlDualLanguageSettingDialog.h" -#endif //FF_DUAL_LANGUAGE_SUPPORT -// Predictive QWERTY (XT9) changes <---- -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ -#include -#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ -#endif //RD_INTELLIGENT_TEXT_INPUT - -GLDEF_C void AknFepUiInterfacePanic(TAknFepUiInterfacePanic aPanic) - { - User::Panic(_L("AKNFEPUI"),aPanic); - } - - -// This command is is used for setting empty CBA. -const TInt ENullCommandId = 0; - - -CAknFepUIAvkonImpl* CAknFepUIAvkonImpl::NewL() - { - CAknFepUIAvkonImpl* self = new(ELeave) CAknFepUIAvkonImpl(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -void CAknFepUIAvkonImpl::ConstructL() - { -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - //Attach the P&S property to the keyboardlayout and subscribe to the P&S framework - // for any keyboard layout change. - User::LeaveIfError(iKeyboardLayoutStatusProperty.Attach(KCRUidAvkon, KAknKeyBoardLayout)); - iKeyboardLayoutStatusSubscriber = new (ELeave) CSubscriber( - TCallBack(HandleKeyboardLayoutChangeNotification, this), - iKeyboardLayoutStatusProperty); - iKeyboardLayoutStatusSubscriber->SubscribeL(); -#endif -#endif - } - -CAknFepUIAvkonImpl::CAknFepUIAvkonImpl() - { - iDialog = NULL; - iPredictiveSettingDialog = NULL; - iListQueryDialog = NULL; - iTextQueryDialog = NULL; - } -CAknFepUIAvkonImpl::~CAknFepUIAvkonImpl() - { - delete iCba; - iCba = NULL; - DeleteDialogs(); - -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - if (iKeyboardLayoutStatusSubscriber) - { - iKeyboardLayoutStatusSubscriber->StopSubscribe(); - } - iKeyboardLayoutStatusProperty.Close(); - delete iKeyboardLayoutStatusSubscriber; -#endif -#endif - } - -void CAknFepUIAvkonImpl::DeleteDialogs() - { - if(iDialog) - { - delete iDialog; - iDialog = NULL; - } - if(iCharMapDialog) - { - delete iCharMapDialog; - iCharMapDialog = NULL; - } - if(iListQueryDialog) - { - delete iListQueryDialog; - iListQueryDialog = NULL; - } - if(iTextQueryDialog) - { - delete iTextQueryDialog; - iTextQueryDialog = NULL; - } - if(iPredictiveSettingDialog) - { - TRAP_IGNORE( iPredictiveSettingDialog->ProcessCommandL(EAknCmdExit)); - } - } - -void CAknFepUIAvkonImpl::LaunchConfirmationNoteL(TInt aResourceId) - { - CAknNoteDialog* dlg = new (ELeave) CAknNoteDialog(); - dlg->SetTimeout(CAknNoteDialog::EShortTimeout); - dlg->SetTone(CAknNoteDialog::ENoTone); - dlg->ExecuteLD(aResourceId); - } - -void CAknFepUIAvkonImpl::LaunchHelpTextQueryL(TInt aResourceId) - { - CAknMessageQueryDialog* dlg = new (ELeave) CAknMessageQueryDialog(); - iDialog = dlg; - dlg->ExecuteLD(aResourceId); - iDialog = NULL; - } - -TInt CAknFepUIAvkonImpl::LaunchCangJieOptionDlgL(TInt aResourceId, TInt& aLevel, MDesC16Array* aItems) - { - CAknRadioButtonSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage ( - aResourceId, - aLevel, - aItems - ); - TBool ret = dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged); - return ret; - } - -/* TCleanupSlotBase can be placed on the cleanup stack to cleanup - * a CBase derived object, but with the benefit that the CBase - * object can be reassigned. - * Essesntially it is a reusable cleanup stack slot. - * This is useful for situations where you would like to be able - * to remove or change an item on the cleanup stack, but do not - * know enough about the contents of the cleanup stack above it - * to unstack then restack the items that should remain. - */ -class TCleanupSlotCBase - { -public: - TCleanupSlotCBase() - : iObj(NULL) - {} - TCleanupSlotCBase(CBase* aObj) - : iObj(aObj) - {} - void PushL() - { CleanupStack::PushL(TCleanupItem(Cleanup, this)); } - void Pop() - { CleanupStack::Pop(); } - void PopAndDestroy() - { CleanupStack::PopAndDestroy(); } - void SetObj(CBase* aObj) - { iObj = aObj; } -private: - static void Cleanup(TAny* aThis) - { delete static_cast(static_cast(aThis)->iObj); } -private: - CBase* iObj; - }; - -TInt CAknFepUIAvkonImpl::LaunchListPopupL(TInt aResourceId, TInt& aIndex, TInt aInitialIndex, MDesC16Array* aItems, CArrayPtr* aIcons) - { - TCleanupSlotCBase iconsCleanup(aIcons); - iconsCleanup.PushL(); - - iListQueryDialog = new (ELeave) CAknListQueryDialog(&aIndex); - iListQueryDialog->PrepareLC( aResourceId ); - - CAknListQueryControl* listQueryControl = - STATIC_CAST( CAknListQueryControl*, iListQueryDialog->Control(EListQueryControl)); - if (aIcons) - { - listQueryControl->Listbox()->ItemDrawer()->FormattedCellData() - ->SetIconArrayL( aIcons ); - iconsCleanup.SetObj(NULL); // ownership transferred to dialog - listQueryControl->Listbox()->ItemDrawer()->FormattedCellData() - ->SetNotAlwaysDrawnSubCellL( 0, ETrue );// Needed because not using icon in cell. - } - - // Activate selected language: - CTextListBoxModel* model = listQueryControl->Listbox()->Model(); - model->SetItemTextArray( aItems ); - model->SetOwnershipType( ELbmDoesNotOwnItemArray ); - iListQueryDialog->ListBox()->SetCurrentItemIndex( aInitialIndex ); - - // Fire up the dialog - TInt ret = iListQueryDialog->RunLD(); - iconsCleanup.Pop(); - iListQueryDialog = NULL; - return ret; - } - -void CAknFepUIAvkonImpl::UpdateSoftkeysL(TInt aResourceId, CAknEdwinState* aEditorState, MEikCommandObserver* aObserver, TInt aInputMode) - { - CEikButtonGroupContainer* currentEditorCba=aEditorState->CbaState().iCurrentCba; - if (currentEditorCba /*&& currentEditorCba->IsVisible()*/) - { -// currentEditorCba->MakeVisible(ETrue); - TBool cbaModified = EFalse; - - // remove the old command button(s) - if (aEditorState->CbaState().iLeftSoftkeyCommandId) - { - currentEditorCba->RemoveCommandFromStack(ELeftSoftkeyIndex, currentEditorCba->ButtonGroup()->CommandId(ELeftSoftkeyIndex)); - currentEditorCba->RemoveCommandObserver(ELeftSoftkeyIndex); - aEditorState->CbaState().iLeftSoftkeyCommandId=0; - cbaModified = ETrue; - } - if (aEditorState->CbaState().iRightSoftkeyCommandId) - { - currentEditorCba->RemoveCommandFromStack(ERightSoftkeyIndex, currentEditorCba->ButtonGroup()->CommandId(ERightSoftkeyIndex)); - currentEditorCba->RemoveCommandObserver(ERightSoftkeyIndex); - aEditorState->CbaState().iRightSoftkeyCommandId=0; - cbaModified = ETrue; - } - if (aEditorState->MiddleSoftkeyCommandId()) - { - currentEditorCba->RemoveCommandFromStack(EMiddleSoftkeyIndex, currentEditorCba->ButtonGroup()->CommandId(EMiddleSoftkeyIndex)); - currentEditorCba->RemoveCommandObserver(EMiddleSoftkeyIndex); - aEditorState->SetMiddleSoftkeyCommandId(0); - cbaModified = ETrue; - } - - if( aResourceId == R_AKNFEP_SOFTKEYS_FINGER || - aResourceId == R_AKNFEP_SOFTKEYS_FINGER_OPTION_PREVIOUS || - aResourceId == R_AKNFEP_SOFTKEYS_FINGER_SPELL_PREVIOUS ) - { - ShowOwnsSoftkeysL(aResourceId, aObserver); - return; // return this function - } - // for Japanese - switch (aResourceId) - { - case R_AKNFEP_SOFTKEYS_PREDICT_OTHER_COMMIT: - case R_AKNFEP_SOFTKEYS_EMPTY_EMPTY_COMMIT: - case R_AKNFEP_SOFTKEYS_EMPTY_OTHER_COMMIT: - case R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT: - case R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE: - ShowOwnsSoftkeysL(aResourceId, aObserver); - return; // return this function - case R_AKNFEP_SOFTKEYS_CONVERT_OTHER_SELECT: - case R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_SELECT: - case R_AVKON_SOFTKEYS_EMPTY: - ShowEmptySoftkeysL(ETrue, aObserver, aInputMode); - return; // return this function - default: - // delete iCba object in this function - ShowEmptySoftkeysL(EFalse, aObserver, aInputMode); - break; - } - - // add the new button/command ids - if (aResourceId) - { - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, aResourceId); - reader.ReadInt32(); // flags - reader.ReadInt16(); // width - reader.ReadInt32(); // related buttons - reader.ReadInt16(); // size of buttons array - - TInt leftSoftkeyShortCommandId=(currentEditorCba->ButtonGroup()->CommandId(ELeftSoftkeyIndex)) & 0x0000ffff; - - for (TInt index=0; index < currentEditorCba->ButtonCount(); index++) - { - TInt cbaIndex = index; - if ( index >=1 ) - { - cbaIndex++; // skip the scrollbar - } - - TUint8 version = (TUint8)reader.ReadUint8(); - TInt commandId; - if (version == KAknCbaVersion) - { - TUint32 shortCommandId = reader.ReadUint16(); - TUint32 longCommandId = reader.ReadUint16(); - commandId = (longCommandId << 16) | shortCommandId; - } - else - { - commandId = TInt(TUint(reader.ReadUint16())); - } - TPtrC text=reader.ReadTPtrC(); - reader.ReadTPtrC(); // bmp filename - reader.ReadInt16(); // bmp id - reader.ReadInt16(); // bmp mask id - - // check we have a command and also check that if we're changing the - // left softkey that it is 'Options' - if ( commandId ) - { - if(!currentEditorCba->UpdatedCommandObserverExists(CEikButtonGroupContainer::TCommandPosition(cbaIndex))) - { - currentEditorCba->UpdateCommandObserverL(cbaIndex, *aObserver); - currentEditorCba->AddCommandToStackL(cbaIndex, commandId, text); - - if (cbaIndex==ELeftSoftkeyIndex) - { - aEditorState->CbaState().iLeftSoftkeyCommandId=commandId; - } - else if (cbaIndex==ERightSoftkeyIndex) - { - aEditorState->CbaState().iRightSoftkeyCommandId=commandId; - } - else if (cbaIndex==EMiddleSoftkeyIndex) - { - aEditorState->SetMiddleSoftkeyCommandId(commandId); - } - } - - cbaModified = ETrue; - } - } - CleanupStack::PopAndDestroy(); // reader - } - - if (cbaModified) - { - currentEditorCba->DrawNow(); // to update the cba - } - } - } - -/** - * Show cba of aResourceId using owns cba object(iCba) - * - * @since 3.2 - * @param aResourceId Cba resource id. - * @return None - */ -void CAknFepUIAvkonImpl::ShowOwnsSoftkeysL(const TInt aResourceId, MEikCommandObserver* aObserver) - { - if (iCba) - { - delete iCba; - iCba = NULL; - } - iCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, - CEikButtonGroupContainer::EHorizontal, - aObserver, - aResourceId); - iCba->SetBoundingRect(CEikonEnv::Static()->EikAppUi()->ApplicationRect()); - iCba->DrawNow(); - } - -/** - * This method is that empty CBA is shown in case aShown is ETrue. - * If aShown is EFalse, empty CBA is erased. - */ -void CAknFepUIAvkonImpl::ShowEmptySoftkeysL(TBool aShown, MEikCommandObserver* aObserver, TInt aInputMode) - { - if (aShown) - { - if (!iCba) - { - iCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, aObserver, R_AVKON_SOFTKEYS_EMPTY); - iCba->SetBoundingRect(CEikonEnv::Static()->EikAppUi()->ApplicationRect()); - } - // set each CBA - TBool update = UpdateSoftkeyLabelL(ELeftSoftkeyIndex, ENullCommandId, R_TEXT_SOFTKEY_EMPTY); - if (aInputMode == EPinyin || aInputMode == EZhuyin || - aInputMode == EStroke || aInputMode == ECangJie) - { - update |= UpdateSoftkeyLabelL(ERightSoftkeyIndex, EAknFepSoftkeyCloseWindow, R_AKNFEP_SOFTKEY_CCPU_CANCEL); - update |= UpdateSoftkeyLabelL( EMiddleSoftkeyIndex, ENullCommandId, R_AVKON_SOFTKEY_SELECT_TEXT ); - } - else - { - update |= UpdateSoftkeyLabelL(ERightSoftkeyIndex, ENullCommandId, R_TEXT_SOFTKEY_EMPTY); - update |= UpdateSoftkeyLabelL(EMiddleSoftkeyIndex, ENullCommandId, R_TEXT_SOFTKEY_EMPTY); - } - - if (update) - { - iCba->DrawNow(); - } - } - else - { - delete iCba; - iCba = NULL; - } - } - -TBool CAknFepUIAvkonImpl::SoftkeysExist() - { - return iCba != NULL; - } - -TInt CAknFepUIAvkonImpl::SoftkeyCommandId(TInt aPosition) - { - return iCba->ButtonGroup()->CommandId(aPosition); - } - -void CAknFepUIAvkonImpl::DeleteSoftkeys() - { - delete iCba; - iCba = NULL; - } - -void CAknFepUIAvkonImpl::DrawSoftkeysNow() - { - iCba->DrawNow(); - } - -void CAknFepUIAvkonImpl::CreateSoftkeys(TInt aResourceId, MEikCommandObserver* aObserver) - { - DeleteSoftkeys(); - TRAP_IGNORE(iCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, aObserver, aResourceId)); - iCba->SetBoundingRect(CEikonEnv::Static()->EikAppUi()->ApplicationRect()); - iCba->MakeVisible(ETrue); - iCba->ButtonGroup()->AsControl()->DrawableWindow()->SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront + 10); - } - -TBool CAknFepUIAvkonImpl::UpdateSoftkeyLabelL(TInt aPosition, TInt aCommandId, TInt aTextResId) - { - if (iCba->ButtonGroup()->CommandId(aPosition) != aCommandId) - { - HBufC* buf = CEikonEnv::Static()->AllocReadResourceLC(aTextResId); - if( buf->Des().Length() > 1 && EMiddleSoftkeyIndex != aPosition ) - { - iCba->SetCommandL(aPosition, aCommandId, buf->Des().Mid(1)); - } - else - { - iCba->SetCommandL(aPosition, aCommandId, *buf); - } - CleanupStack::PopAndDestroy(buf); - return ETrue; - } - return EFalse; - } - -void CAknFepUIAvkonImpl::SetFepMenuObserver(MAknFepUiInterfaceMenuObserver* aObserver) - { - iFepMenuObserver = aObserver; - if (aObserver) - { - CAknEnv::Static()->SetFepMenuObserver(this); - } - else - { - CAknEnv::Static()->SetFepMenuObserver(NULL); - } - } - -CAknFepUiInterfaceMenuBar* CAknFepUIAvkonImpl::EditorStateMenuBar(CAknEdwinState* aEditorState) - { - iEditorMenuBar.iMenuBar = aEditorState->MenuBar(); - return &iEditorMenuBar; - } - -void CAknFepUIAvkonImpl::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) - { - iTempMenuPane.iMenuPane = aMenuPane; - if (iFepMenuObserver) - iFepMenuObserver->DynInitMenuPaneL(aResourceId, &iTempMenuPane); - } - -void CAknFepUIAvkonImpl::DynInitMenuBarL(TInt aResourceId,CEikMenuBar* aMenuBar) - { - CAknFepUIAvkonMenuBarImpl* impl = &iTempMenuBar; - if (iEditorMenuBar.iMenuBar == aMenuBar) - impl = &iEditorMenuBar; - impl->iMenuBar = aMenuBar; - if (iFepMenuObserver) - iFepMenuObserver->DynInitMenuBarL(aResourceId, impl); - } - -void CAknFepUIAvkonImpl::SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis) - { - CBase* impl = NULL; - if (aMenuControl == iEditorMenuBar.iMenuBar) - impl = &iEditorMenuBar; - else if (aMenuControl == iTempMenuBar.iMenuBar) - impl = &iTempMenuBar; - else if (aMenuControl == iTempMenuPane.iMenuPane) - impl = &iTempMenuPane; - if (iFepMenuObserver) - iFepMenuObserver->SetEmphasis(impl, aEmphasis); - } - -void CAknFepUIAvkonImpl::ProcessCommandL(TInt aCommandId) - { - if (iFepMenuObserver) - iFepMenuObserver->ProcessCommandL(aCommandId); - } - -CAknFepUiInterfaceMenuBar* CAknFepUIAvkonImpl::NewMenuBarL(MAknFepUiInterfaceMenuObserver* aObserver, TInt aHotKeyResourceId, TInt aMenuTitleResourceId) - { - CAknFepUIAvkonMenuBarOwningImpl* menuBar = new(ELeave) CAknFepUIAvkonMenuBarOwningImpl; - CleanupStack::PushL(menuBar); - menuBar->ConstructL(aObserver, aHotKeyResourceId, aMenuTitleResourceId); - CleanupStack::Pop(menuBar); - return menuBar; - } - -CAknFepUiInterfaceStylusPopUpMenu* CAknFepUIAvkonImpl::NewStylusPopUpMenuL(MAknFepUiInterfaceMenuObserver* aObserver, const TPoint& aPoint) - { - CAknFepUIAvkonStylusPopUpMenu* popupMenu = new(ELeave) CAknFepUIAvkonStylusPopUpMenu; - CleanupStack::PushL(popupMenu); - popupMenu->ConstructL(aObserver, aPoint); - CleanupStack::Pop(popupMenu); - return popupMenu; - } - -TInt CAknFepUIAvkonImpl::CharMapDialogL(TInt aCharCase, TDes& aSpecialChars, TInt aCharSetResourceId, TBool aLockNumericKeys, TBool aShowPictographsFirst, TBool aShowNoPictographs, TBool aShowAnotherTable, TInt aAfterSctChars, TInt aResId, TBool aDisableRecentItemRow ) - { - TInt result; - - iCharMapDialog = new(ELeave) CAknCharMapDialog(aCharCase, aSpecialChars, aCharSetResourceId); - - if (aLockNumericKeys) - { - iCharMapDialog->LockNumericKeys(ETrue); - } - - if ( aShowPictographsFirst ) - { - // It is supposed that the pictograph table launch is allowed in this case. - iCharMapDialog->ShowPictographsFirst(); - } - else if (aShowNoPictographs) - { - // Pictograph table is not shown. - iCharMapDialog->ShowNoPictographs(); - } - - if (aShowAnotherTable) - { - iCharMapDialog->ShowAnotherTable(aAfterSctChars); - } - if(aDisableRecentItemRow) - { - iCharMapDialog->DisableRecentCharsRow(); - } - - - result = iCharMapDialog->ExecuteLD(aResId); - iCharMapDialog = NULL; - return result; - } - -void CAknFepUIAvkonImpl::TouchPaneSetFepPenSupportInterface(MAknFepPenSupportInterface* aFepPenSupportInterface) - { - if(iAvkonAppUi->TouchPane()) - iAvkonAppUi->TouchPane()->SetFepPenSupportInterface(aFepPenSupportInterface); - } - -void CAknFepUIAvkonImpl::TouchPaneAllowInputMethodActivation(TBool aValue) - { - if(iAvkonAppUi->TouchPane()) - iAvkonAppUi->TouchPane()->AllowInputMethodActivation(aValue); - } - -void CAknFepUIAvkonImpl::TouchPaneRefreshL() - { - if(iAvkonAppUi->TouchPane()) - iAvkonAppUi->TouchPane()->RefreshL(); - } - -void CAknFepUIAvkonImpl::TouchPaneSetInputMethodIconActivated(TBool aActivated) - { - if(iAvkonAppUi->TouchPane()) - iAvkonAppUi->TouchPane()->SetInputMethodIconActivated(aActivated); - } - -TInt CAknFepUIAvkonImpl::TextQueryDialogL(TDes& aDataText, CAknEdwinState& aEditorState, TInt aEditorFlag, TInt aResId) - { - TInt result; - iTextQueryDialog = new (ELeave) CAknFepTextQueryDialog(aDataText, aEditorState, CAknFepTextQueryDialog::ENoTone, aEditorFlag); - iTextQueryDialog->PrepareLC(aResId); -#ifdef RD_INTELLIGENT_TEXT_INPUT - //last char space has to be reserved for null terminator - iTextQueryDialog->SetMaxLength( KMaxUDBLength - 1 ); -#endif //RD_INTELLIGENT_TEXT_INPUT - result = iTextQueryDialog->RunLD(); - iTextQueryDialog = NULL; - return result; - } - -CPlainText* CAknFepUIAvkonImpl::PlainText(CAknEdwinState* aEditorState) - { - CEikEdwin* editor = NULL; - if (aEditorState) - { - CAknEdwinFormAccessor* formAccessor = aEditorState->FormAccessor(); - if (formAccessor) - { - editor = (CEikEdwin*)formAccessor->FormClientControl(); - if (editor) - { - return editor->Text(); - } - } - } - return NULL; - } - -void CAknFepUIAvkonImpl::UpdateEditorContext(MAknEditingStateIndicator& aIndicator, MAknFepManagerInterface& aManager) - { - CAknIndicatorContainer* indicatorContainer = aIndicator.IndicatorContainer(); - - if(indicatorContainer) - { - TInt indicatorContext = indicatorContainer->IndicatorContext(); - aManager.SetEditorContext(indicatorContext); - } - } - -CAknFepIndicator* CAknFepUIAvkonImpl::NewIndicatorL() - { - return CAknFepIndicatorAvkon::NewL(); - } - -TBool CAknFepUIAvkonImpl::IsDisplayDataQuery(TBool aIsFepAwareTextEditor) - { - CEikAppUi* eikAppUi = (CEikAppUi *)CCoeEnv::Static()->AppUi(); - - if( eikAppUi->IsDisplayingDialog() && eikAppUi->TopFocusedControl() ) - { - CEikDialog* dlg = eikAppUi->TopFocusedControl()->MopGetObject( dlg ); - - if ( dlg ) - { - TInt flag = dlg->DialogFlags(); - - if(!(flag & EEikDialogFlagFillScreen) && - !(flag & EEikDialogFlagFillAppClientRect) ) - { - MObjectProvider* objectProvider = NULL; - MCoeFepAwareTextEditor* editor; - MCoeFepAwareTextEditor_Extension1* ext1; - CAknEdwinState* state; - CCoeEnv* coeEnv = CCoeEnv::Static(); - TCoeInputCapabilities inputCapabilities = - static_cast(coeEnv->AppUi())->InputCapabilities(); - - if ( aIsFepAwareTextEditor && - ( editor = inputCapabilities.FepAwareTextEditor() ) != NULL && - ( ext1 = editor->Extension1() ) != NULL && - ( state = (CAknEdwinState*)ext1->State( KNullUid ) ) != NULL ) - { - objectProvider = state->ObjectProvider(); - } - - // If not found, try to get object provider from input capabilities. - // It is set there with CEikMfne-derived editors. - - if ( !objectProvider ) - { - objectProvider = inputCapabilities.ObjectProvider(); - } - - if ( objectProvider ) - { - CAknQueryControl* ctrl = objectProvider->MopGetObject( ctrl ); - - if ( ctrl ) - { - return ETrue; - } - } - } - } - } - - return EFalse; - } - -CAknFepUiInterfaceMenuBar* CAknFepUIAvkonImpl::ObjectProviderMenuBar(MObjectProvider* aObjectProvider) - { - if (!aObjectProvider) - return NULL; - CEikMenuBar* menu; - aObjectProvider->MopGetObject(menu); - if (menu) - { - iObjectProviderMenuBar.iMenuBar = menu; - return &iObjectProviderMenuBar; - } - else - return NULL; - } - -MAknFepUICtrlContainerChinese* CAknFepUIAvkonImpl::NewAknFepUICtrlContainerChineseL() - { - if (FeatureManager::FeatureSupported(KFeatureIdChinese)) - { - return CAknFepUICtrlContainerChinese::NewL(); - } - - User::Leave(KErrNotSupported); - return NULL; - } - -MAknFepUICtrlContainerJapanese* CAknFepUIAvkonImpl::NewAknFepUICtrlContainerJapaneseL(CAknFepUIManagerJapanese* aUiMng) - { - if (FeatureManager::FeatureSupported(KFeatureIdJapanese)) - { - return CAknFepUICtrlContainerJapanese::NewL(aUiMng); - } - return NULL; - } - -void CAknFepUIAvkonImpl::JapaneseKutenQueryDialogL(TInt aResId, TInt& aCharCode, TInt aTone) - { - if (FeatureManager::FeatureSupported(KFeatureIdJapanese)) - { - CAknFepUICtrlJapaneseKutenQueryDialog* query = CAknFepUICtrlJapaneseKutenQueryDialog::NewL(aCharCode, (CAknQueryDialog::TTone)aTone); - iDialog = query; - query->ExecuteLD(aResId); - iDialog = NULL; - } - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -// Predictive QWERTY (XT9) changes ----> -MAknFepCandidatePopup* CAknFepUIAvkonImpl::NewCandidatePopupL(MAknFepCandidatePopupCallback& aOwner) - { - MAknFepCandidatePopup* candidatePopup = CAknFepAvkonCandidatePopup::NewL(aOwner); - return candidatePopup; - } - -MAknFepUiWordPopupContent* CAknFepUIAvkonImpl::CreateWordPopupContentL() - { - return CAknFepExactWordPopupContent::NewL(); - } - -void CAknFepUIAvkonImpl::LaunchPredictiveSettingDialogL(TInt aDialogResId, - TInt aMenuResId, - TInt aConfirmationQueryResId, - TInt aTitlePaneResId) - { - iPredictiveSettingDialog = CAknFepPredictiveSettingDialog::NewL(aMenuResId, aConfirmationQueryResId, aTitlePaneResId); - iPredictiveSettingDialog->ExecuteLD(aDialogResId); - iPredictiveSettingDialog = NULL; - } - -#ifdef __USER_DICTIONARY_EDITING__ -void CAknFepUIAvkonImpl::LaunchUserDictEditDialogL() - { - CAknFepUserDictionaryEditDialog::RunDlgLD(); - } -#endif //__USER_DICTIONARY_EDITING__ - -#ifdef FF_DUAL_LANGUAGE_SUPPORT -void CAknFepUIAvkonImpl::LaunchWritingLanguageSettingDialogL(TInt aDialogResId, TInt aMenuResId, TInt aTitlePaneResId) - { - CCoeEnv* coeEnv = CCoeEnv::Static(); - CAknAppUi* appUi = static_cast(coeEnv->AppUi()); - CAknTitlePane* titlePane = static_cast( appUi->StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - - const TDesC* appTitle = titlePane->Text(); - HBufC* oldTitle = appTitle->AllocL(); - CleanupStack::PushL(oldTitle); - HBufC* title = StringLoader::LoadLC( aTitlePaneResId,coeEnv); - titlePane->SetTextL( *title ); - CleanupStack::PopAndDestroy(title); - - CAknFepDualLanguageSettingDialog* dlg = CAknFepDualLanguageSettingDialog::NewL(aMenuResId); - iDialog = dlg; - dlg->ExecuteLD(aDialogResId); - iDialog = NULL; - - titlePane->SetTextL( *oldTitle ); - CleanupStack::PopAndDestroy(oldTitle); - } -#endif //FF_DUAL_LANGUAGE_SUPPORT -// Predictive QWERTY (XT9) changes <---- - -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ -TInt CAknFepUIAvkonImpl::HandleKeyboardLayoutChangeNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandleKeyboardLayoutChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -void CAknFepUIAvkonImpl::HandleKeyboardLayoutChange() - { - if(iPredictiveSettingDialog) - { - iPredictiveSettingDialog->HandleResourceChange(KEikDynamicLayoutVariantSwitch); - } - } - -CAknFepUIAvkonImpl::CSubscriber::CSubscriber(TCallBack aCallBack, RProperty& aProperty) - : - CActive(EPriorityNormal), iCallBack(aCallBack), iProperty(aProperty) - { - CActiveScheduler::Add(this); - } - -CAknFepUIAvkonImpl::CSubscriber::~CSubscriber() - { - Cancel(); - } - -void CAknFepUIAvkonImpl::CSubscriber::SubscribeL() - { - if (!IsActive()) - { - iProperty.Subscribe(iStatus); - SetActive(); - } - } - -void CAknFepUIAvkonImpl::CSubscriber::StopSubscribe() - { - Cancel(); - } - -void CAknFepUIAvkonImpl::CSubscriber::RunL() - { - if (iStatus.Int() == KErrNone) - { - iCallBack.CallBack(); - SubscribeL(); - } - } - -void CAknFepUIAvkonImpl::CSubscriber::DoCancel() - { - iProperty.Cancel(); - } - -#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ -#endif //RD_INTELLIGENT_TEXT_INPUT - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonMenus.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonMenus.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,267 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the FEP's Avkon UI access methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiAvkonMenus.h" -#include -#include -#include - -CAknFepUIAvkonMenuPaneImpl::CAknFepUIAvkonMenuPaneImpl() - { - } - -void CAknFepUIAvkonMenuPaneImpl::ConstructMenuSctRowFromDialogL( TInt aCharCase, TDes& aSpecialChars, TInt aResourceId ) - { - if (iMenuPane) - iMenuPane->ConstructMenuSctRowFromDialogL(aCharCase, aSpecialChars, aResourceId); - } - -void CAknFepUIAvkonMenuPaneImpl::ConstructMenuSctRowL( TDes& aSpecialChars, TInt aResourceId ) - { - if (iMenuPane) - iMenuPane->ConstructMenuSctRowL(aSpecialChars, aResourceId); - } - -void CAknFepUIAvkonMenuPaneImpl::DeleteMenuItem(TInt aCommandId) - { - if (iMenuPane) - iMenuPane->DeleteMenuItem(aCommandId); - } - -void CAknFepUIAvkonMenuPaneImpl::InsertMenuItemL(const SItemData& aMenuItem, TInt aPosition) - { - if (iMenuPane) - iMenuPane->InsertMenuItemL(*reinterpret_cast(&aMenuItem), aPosition); - } - -TBool CAknFepUIAvkonMenuPaneImpl::MenuItemExists(TInt aCommandId, TInt& aPosition) - { - if (iMenuPane) - return iMenuPane->MenuItemExists(aCommandId, aPosition); - return EFalse; - } - -TInt CAknFepUIAvkonMenuPaneImpl::NumberOfItemsInPane() const - { - if (iMenuPane) - return iMenuPane->NumberOfItemsInPane(); - return 0; - } - -void CAknFepUIAvkonMenuPaneImpl::SetItemDimmed(TInt aCommandId, TBool aDimmed) - { - TInt index(0); - if (iMenuPane && MenuItemExists( aCommandId, index ) ) - iMenuPane->SetItemDimmed(aCommandId, aDimmed); - } - -void CAknFepUIAvkonMenuPaneImpl::SetMenuPane(CEikMenuPane* aMenuPane) - { - iMenuPane = aMenuPane; - } - -CEikMenuPane* CAknFepUIAvkonMenuPaneImpl::GetMenuPane() - { - return iMenuPane; - } - -CAknFepUIAvkonMenuBarImpl::CAknFepUIAvkonMenuBarImpl() - { - } - -CAknFepUiInterfaceMenuPane* CAknFepUIAvkonMenuBarImpl::MenuPane() - { - if (iMenuBar) - { - iTempMenuPane.iMenuPane = iMenuBar->MenuPane(); - } - return &iTempMenuPane; - } - -void CAknFepUIAvkonMenuBarImpl::SetMenuType(TMenuType aMenuType) - { - if (iMenuBar) - iMenuBar->SetMenuType(static_cast(aMenuType)); - } - -void CAknFepUIAvkonMenuBarImpl::StopDisplayingMenuBar() - { - if (iMenuBar) - iMenuBar->StopDisplayingMenuBar(); - } - -void CAknFepUIAvkonMenuBarImpl::ReplaceAllMenuPanes(TInt aResourceId) - { - // remove app menu panes - TInt count = iMenuBar->TitleArray()->Count() - 1; - for (TInt ii = 0; iiTitleArray()->At(0); - iMenuBar->TitleArray()->Delete(0); - } - // add the mode menu - iMenuBar->TitleArray()->At(0)->iData.iMenuPaneResourceId = aResourceId; - } - -void CAknFepUIAvkonMenuBarImpl::TryDisplayMenuBarL() - { - if (iMenuBar) - iMenuBar->TryDisplayMenuBarL(); - } - -void CAknFepUIAvkonMenuBarImpl::SetFocus(TBool aFocus) - { - if (iMenuBar) - iMenuBar->SetFocus(aFocus); - } - -void CAknFepUIAvkonMenuBarImpl::RemoveFromStack() - { - if (iMenuBar) - CCoeEnv::Static()->AppUi()->RemoveFromStack(iMenuBar); - } - -TInt CAknFepUIAvkonMenuBarImpl::FirstMenuPaneResourceId() - { - if (iMenuBar) - { - CEikMenuBar::CTitleArray* titles = iMenuBar->TitleArray(); - if( titles->Count() > 0 ) - { - return (*titles)[0]->iData.iMenuPaneResourceId; - } - } - return 0; - } - -TBool CAknFepUIAvkonMenuBarImpl::IsDisplayed() - { - if (iMenuBar) - return iMenuBar->IsDisplayed(); - return EFalse; - } - -void CAknFepUIAvkonMenuBarImpl::AddToStackL(TInt aPriority, TInt aStackingFlags) - { - if (iMenuBar) - CCoeEnv::Static()->AppUi()->AddToStackL(iMenuBar, aPriority, aStackingFlags); - } - -void CAknFepUIAvkonMenuBarImpl::TryDisplayMenuBarWithoutFepMenusL() - { - if (iMenuBar) - iMenuBar->TryDisplayMenuBarWithoutFepMenusL(); - } - -void CAknFepUIAvkonMenuBarImpl::SetMenuTitleResourceId(TInt aResourceId) - { - if (iMenuBar) - iMenuBar->SetMenuTitleResourceId(aResourceId); - } - -void CAknFepUIAvkonMenuBarImpl::SetEditMenuObserver(MAknFepUiInterfaceMenuObserver* aEditMenuObserver) - { - iEditMenuObserver.iObserver = aEditMenuObserver; - iMenuBar->SetEditMenuObserver(&iEditMenuObserver); - } - -void CAknFepUIAvkonMenuBarImpl::RemoveEditMenuObserver(MAknFepUiInterfaceMenuObserver* aEditMenuObserver) - { - if (iEditMenuObserver.iObserver == aEditMenuObserver) - { - iMenuBar->RemoveEditMenuObserver(&iEditMenuObserver); - } - } - -void CAknFepUIAvkonMenuBarImpl::TEditMenuObserver::ProcessCommandL(TInt aCommandId) - { - if (iObserver) - iObserver->ProcessCommandL(aCommandId); - } - -void CAknFepUIAvkonMenuBarImpl::TEditMenuObserver::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane) - { - if (iObserver) - { - iTempPane.iMenuPane = aMenuPane; - iObserver->DynInitMenuPaneL(aResourceId, &iTempPane); - } - } - -void CAknFepUIAvkonMenuBarImpl::TEditMenuObserver::SetEmphasis(CCoeControl* /*aMenuControl*/,TBool aEmphasis) - { - // client code is not currently using aMenuControl - if (iObserver) - iObserver->SetEmphasis(NULL, aEmphasis); - } - - -CAknFepUIAvkonMenuBarOwningImpl::~CAknFepUIAvkonMenuBarOwningImpl() - { - delete iMenuBar; - } - -void CAknFepUIAvkonMenuBarOwningImpl::ConstructL(MAknFepUiInterfaceMenuObserver* aObserver, TInt aHotKeyResourceId, TInt aMenuTitleResourceId) - { - iObserver = aObserver; - iMenuBar = new (ELeave) CEikMenuBar() ; - iMenuBar->ConstructL(this, aHotKeyResourceId, aMenuTitleResourceId) ; - } - -void CAknFepUIAvkonMenuBarOwningImpl::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) - { - iTempMenuPane.iMenuPane = aMenuPane; - if (iObserver) - iObserver->DynInitMenuPaneL(aResourceId, &iTempMenuPane); - } - -void CAknFepUIAvkonMenuBarOwningImpl::DynInitMenuBarL(TInt aResourceId,CEikMenuBar* /*aMenuBar*/) - { - if (iObserver) - iObserver->DynInitMenuBarL(aResourceId, this); - } - -void CAknFepUIAvkonMenuBarOwningImpl::SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis) - { - CBase* obj = this; - if (aMenuControl != iMenuBar) - { - iTempMenuPane.iMenuPane = static_cast(aMenuControl); - obj = &iTempMenuPane; - } - if (iObserver) - iObserver->SetEmphasis(obj, aEmphasis); - } - -void CAknFepUIAvkonMenuBarOwningImpl::ProcessCommandL(TInt aCommandId) - { - if (iObserver) - iObserver->ProcessCommandL(aCommandId); - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonPlugin.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonPlugin.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Boilerplate for FEP's Avkon UI plugin. -* -*/ - - - - - - - - - - - -#include -#include - -#include "AknFepUiAvkonImpl.h" -#include - -class CFepUiAvkonImplPlugin : public CFepUiInterfacePlugin - { -public: - static CFepUiAvkonImplPlugin* NewL(); - TBool UseThisPlugin() const; - CAknFepUIInterface* NewImplL(); - }; - - -// Map the interface UIDs to implementation factory functions -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(0x10285839, CFepUiAvkonImplPlugin::NewL) - }; - -// Exported proxy for instantiation method resolution -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - - return ImplementationTable; - } - - -CFepUiAvkonImplPlugin* CFepUiAvkonImplPlugin::NewL() - { - return new(ELeave) CFepUiAvkonImplPlugin; - } - -TBool CFepUiAvkonImplPlugin::UseThisPlugin() const - { - // AknFepUiInterface will try to load this plugin last, so it should - // always be used if asked. - return ETrue; - } - -CAknFepUIInterface* CFepUiAvkonImplPlugin::NewImplL() - { - return CAknFepUIAvkonImpl::NewL(); - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonStylusPopUpMenu.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonStylusPopUpMenu.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the FEP's Avkon UI access methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiAvkonStylusPopUpMenu.h" -#include "AknFepUiInterfacePanic.h" -#include "aknfepuimenus.h" -#include - - -CAknFepUIAvkonStylusPopUpMenu::~CAknFepUIAvkonStylusPopUpMenu() - { - delete iPopupMenu; - } - -void CAknFepUIAvkonStylusPopUpMenu::ConstructL(MAknFepUiInterfaceMenuObserver* aObserver, const TPoint& aPoint) - { - iObserver = aObserver; - iPopupMenu = CAknStylusPopUpMenu::NewL(this, aPoint); - } - -void CAknFepUIAvkonStylusPopUpMenu::AddMenuItemL(const TDesC& aItem, const TInt aCommandId) - { - iPopupMenu->AddMenuItemL(aItem, aCommandId); - } - -void CAknFepUIAvkonStylusPopUpMenu::SetPosition(const TPoint& aPoint) - { - iPopupMenu->SetPosition(aPoint); - } - -void CAknFepUIAvkonStylusPopUpMenu::ShowMenu() - { - iPopupMenu->ShowMenu(); - } - -void CAknFepUIAvkonStylusPopUpMenu::DynInitMenuPaneL(TInt /*aResourceId*/,CEikMenuPane* /*aMenuPane*/) - { - AknFepUiInterfacePanic(EAvkonImplNotSupported); - } - -void CAknFepUIAvkonStylusPopUpMenu::DynInitMenuBarL(TInt /*aResourceId*/,CEikMenuBar* /*aMenuBar*/) - { - AknFepUiInterfacePanic(EAvkonImplNotSupported); - } - -void CAknFepUIAvkonStylusPopUpMenu::SetEmphasis(CCoeControl* /*aMenuControl*/,TBool /*aEmphasis*/) - { - AknFepUiInterfacePanic(EAvkonImplNotSupported); - } - -void CAknFepUIAvkonStylusPopUpMenu::ProcessCommandL(TInt aCommandId) - { - iObserver->ProcessCommandL(aCommandId); - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUserDictionaryEditDialog.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUserDictionaryEditDialog.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,558 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -/* - * ============================================================================ - * Name : CAknFepUserDictionaryEditDialog - * ============================================================================ - */ - -#include -#include -#include -#include -#include "AknFepUserDictionaryEditDialog.h" - -//For help: -#include -//#include - -//Uid of AknFep -const TUid KUidAknFep = {0x101FD65A}; - -CAknFepUserDictionaryEditDialog *CAknFepUserDictionaryEditDialog::NewL( - TInt aOpenedItem, - CArrayFixFlat *aSelectedItems, - MDesCArray *aArray) - { - CAknFepUserDictionaryEditDialog* self = CAknFepUserDictionaryEditDialog::NewLC( - aOpenedItem, aSelectedItems, aArray ); - CleanupStack::Pop(self); - return self; - } - -CAknFepUserDictionaryEditDialog *CAknFepUserDictionaryEditDialog::NewLC( - TInt aOpenedItem, - CArrayFixFlat *aSelectedItems, - MDesCArray *aArray) - { - CAknFepUserDictionaryEditDialog* self = new (ELeave) CAknFepUserDictionaryEditDialog( - aOpenedItem, aSelectedItems, aArray ); - CleanupStack::PushL(self); - self->ConstructL(R_UDB_EDIT_OPTIONS_MENUBAR); - return self; - } - -CAknFepUserDictionaryEditDialog::CAknFepUserDictionaryEditDialog( - TInt aOpenedItem, - CArrayFixFlat *aSelectedItems, - MDesCArray *aArray ) - :CAknMarkableListDialog(aOpenedItem, aSelectedItems, aArray, R_UDB_EDIT_OPTIONS_MENUBAR, NULL, NULL), - iOpenedItem(aOpenedItem), iSelectedItems(aSelectedItems) - { - }; - -CAknFepUserDictionaryEditDialog::~CAknFepUserDictionaryEditDialog() - { - delete iOwnWordsModel; - iOwnWordsModel = NULL; - iOwnWordsListBox = NULL; - }; - -void CAknFepUserDictionaryEditDialog::RunDlgLD() - { - CDesCArrayFlat* arrWords = new (ELeave) CDesCArrayFlat(1); - CleanupStack::PushL( arrWords ); - //ownership of selectedItems is given to CAknFepUserDictionaryEditDialog - CArrayFixFlat* selectedItems = new (ELeave) CArrayFixFlat(1); - CleanupStack::PushL( selectedItems ); - - TInt openedItem(0); - CAknFepUserDictionaryEditDialog* dlg = CAknFepUserDictionaryEditDialog::NewL( - openedItem, selectedItems, arrWords); - - //Save old title pane and display title for user dictionary editing - CCoeEnv* coeEnv = CCoeEnv::Static(); - CAknAppUi* appUi = static_cast(coeEnv->AppUi()); - - CAknTitlePane* titlePane = - static_cast( appUi->StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - - const TDesC* appTitle = titlePane->Text(); - HBufC* oldTitle = appTitle->AllocL(); - CleanupStack::PushL(oldTitle); - HBufC* title = StringLoader::LoadLC( R_AKNFEP_PRED_USERDICT_EDITING_TITLE ); - titlePane->SetTextL( *title ); - CleanupStack::PopAndDestroy(title); - - dlg->ExecuteLD(R_USER_DICTIONARY_EDITING_DIALOG); - - //workaround to prevent application from crashing in case a 3rd party fep - //was installed while the dialog was active. - if( KUidAknFep != CCoeEnv::Static()->FepUid() ) - { - User::Leave(KErrNone); - } - titlePane->SetTextL( *oldTitle ); - CleanupStack::PopAndDestroy( 3, arrWords ); - } - - -void CAknFepUserDictionaryEditDialog::PreLayoutDynInitL() - { - CAknMarkableListDialog::PreLayoutDynInitL(); - iOwnWordsListBox = (CEikColumnListBox*) ControlOrNull( ESelectionListControl ); - //Initialize the model for retrieving UDB entries - iOwnWordsModel = CAknFepPredOwnWordsModel::NewL( iOwnWordsListBox->Model()->ItemTextArray() ); - iOwnWordsListBox->HandleItemAdditionL(); - - //Set the empty listbox string - HBufC* emptyListString_secondary = StringLoader::LoadLC( R_AKNFEP_PRED_USER_DICTIONARY_EMPTY ); - HBufC* emptyListString = StringLoader::LoadLC( R_AKNFEP_PRED_USER_DICTIONARY_HEADING_EMPTY ); - _LIT( KNewLine, "\n" ); - TInt newLength = emptyListString->Length() + KNewLine().Length() + emptyListString_secondary->Length(); - emptyListString = emptyListString->ReAllocL( newLength ); - CleanupStack::Pop(); //emptyListString could now be at a different location - CleanupStack::PushL( emptyListString ); - TPtr ptr = emptyListString->Des(); - ptr.Append( KNewLine ); - ptr.Append( *emptyListString_secondary ); - - iOwnWordsListBox->View()->SetListEmptyTextL( *emptyListString ); - CleanupStack::PopAndDestroy( 2, emptyListString_secondary ); - - //Set the middle soft key: - CEikButtonGroupContainer& cba = ButtonGroupContainer(); - iMSKPosition = cba.PositionById( EAknSoftkeyContextOptions ); - UpdateMSKLabelL(); - - //For viewing extra long words: - iOwnWordsListBox->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue); - } - -void CAknFepUserDictionaryEditDialog::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane *aMenuPane) - { - CAknMarkableListDialog::DynInitMenuPaneL( aResourceId, aMenuPane ); - - if ( iOwnWordsListBox->SelectionIndexes()->Count() >= 1 - && R_UDB_EDIT_OPTIONS_MENUPANE == aResourceId ) - { - //At least one item in the list is marked. - //Hide the "Edit" option. - aMenuPane->SetItemDimmed( EAknFepPredDictionaryCmdEdit, ETrue); - } - - if ( iOwnWordsListBox->Model()->NumberOfItems() <= 0 - && R_UDB_EDIT_OPTIONS_MENUPANE == aResourceId ) - { - //No items available for editing/deletion: - aMenuPane->SetItemDimmed( EAknFepPredDictionaryCmdEdit, ETrue); - aMenuPane->SetItemDimmed( EAknFepPredDictionaryCmdDelete, ETrue); - } - - } - -void CAknFepUserDictionaryEditDialog::ProcessCommandL( TInt aCommandId ) - { - - if ( MenuShowing() ) - { - HideMenu(); - } - - switch(aCommandId) - { - case EAknFepPredDictionaryCmdEdit : - { - HandleEditCommandL(); - break; - } - - case EAknFepPredDictionaryCmdAdd : - { - HandleAddNewCommandL(); - break; - } - - case EAknFepPredDictionaryCmdDelete : - { - HandleDeleteCommandL(); - break; - } - - case EAknCmdMark : - case EAknCmdUnmark : - case EAknMarkAll : - case EAknUnmarkAll : - { - SelectionListProcessCommandL(aCommandId); - break; - } - - case EAknSoftkeyEdit : - { - if ( iOwnWordsListBox->Model()->NumberOfItems() <= 0 ) - { - //No entries in the list. So only option available is "Add new" - HandleAddNewCommandL(); - } - else if ( iOwnWordsListBox->SelectionIndexes()->Count() <= 0 ) - { - //Words available and none are marked. So selection => "Edit" - HandleEditCommandL(); - } - else - { - //Words are available and at least one is marked. - //So selection => "Options" menu is launched - DisplayMenuL(); - } - break; - } - - case EAknCmdHelp: - { - CArrayFix* helpContext = new (ELeave) CArrayFixFlat( 1 ); - CleanupStack::PushL( helpContext ); - //THIS IS TEMPORARY AND NEEDS TO BE UPDATED WHEN HELP CONTENT IS AVAILABLE!!! - TUid appuid = { 0x100058EC }; - _LIT( KAknFepPredUserDictHelp, "PREDINPUT_HLP_USERDICT" ); - helpContext->AppendL( TCoeHelpContext( appuid, KAknFepPredUserDictHelp() ) ); - HlpLauncher::LaunchHelpApplicationL( CEikonEnv::Static()->WsSession(), helpContext ); - CleanupStack::Pop( helpContext ); - break; - } - - case EAknCmdExit: - { - iAvkonAppUi->ProcessCommandL( aCommandId ); - break; - } - default: CAknMarkableListDialog::ProcessCommandL( aCommandId ); - } - - UpdateMSKLabelL(); - - } - -TKeyResponse CAknFepUserDictionaryEditDialog::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) - { - TKeyResponse response( EKeyWasNotConsumed ); - //Special handling required only for the clear/backspace/delete keys - //AND only when find pane is empty AND there is at least one item in focus/selected - if ( - ( aKeyEvent.iCode == EKeyBackspace - || aKeyEvent.iCode == EKeyDelete ) - && ( - FindBox()->TextLength() == 0 - && iOwnWordsListBox->Model()->NumberOfItems() > 0 - && (iOwnWordsListBox->SelectionIndexes()->Count() > 0 - || iOwnWordsListBox->CurrentItemIndex() >= 0 ) - ) - ) - { - //Delete the item(s) - HandleDeleteCommandL(); - response = EKeyWasConsumed; - } - else - { - response = CAknMarkableListDialog::OfferKeyEventL( aKeyEvent, aType ); - } - - //Update MSK only if key is not escape key (for exiting) - if ( EKeyEscape != aKeyEvent.iCode ) - { - UpdateMSKLabelL(); - } - return response; - } - -TBool CAknFepUserDictionaryEditDialog::OkToExitL(TInt aButtonId) - { - if ( EAknSoftkeyEdit == aButtonId || EAknSoftkeyContextOptions == aButtonId ) - { - CAknFepUserDictionaryEditDialog::ProcessCommandL( EAknSoftkeyEdit ); - return EFalse; - } - else - { - return CAknMarkableListDialog::OkToExitL( aButtonId ); - } - } - -void CAknFepUserDictionaryEditDialog::UpdateMSKLabelL() - { - if ( iOwnWordsListBox && iOwnWordsListBox->Model() ) - { - CEikButtonGroupContainer& cba = ButtonGroupContainer(); - if ( iOwnWordsListBox->Model()->NumberOfItems() <= 0 ) - { - //No entries in the list. So MSK is "Add new" - HBufC* mskLabel = StringLoader::LoadLC( R_AKNFEP_PRED_MSK_ADD_NEW ); - cba.SetCommandL(iMSKPosition, EAknSoftkeyEdit, *mskLabel); - CleanupStack::PopAndDestroy( mskLabel ); - } - else if ( iOwnWordsListBox->SelectionIndexes()->Count() > 0 ) - { - //Words are available and at least one is marked. - //So on pressing MSK, "Options" menu is launched - HBufC* mskLabel = StringLoader::LoadLC( R_AKNFEP_PRED_MSK_CONTEXT_OPTIONS ); - cba.SetCommandL(iMSKPosition, EAknSoftkeyContextOptions, *mskLabel); - CleanupStack::PopAndDestroy( mskLabel ); - } - else - { - //Words available and none are marked. So MSK should be "Edit" - HBufC* mskLabel = StringLoader::LoadLC( R_AKNFEP_PRED_MSK_EDIT ); - cba.SetCommandL(iMSKPosition, EAknSoftkeyEdit, *mskLabel); - CleanupStack::PopAndDestroy( mskLabel ); - } - cba.DrawDeferred(); - } - } - -void CAknFepUserDictionaryEditDialog::HandleEditCommandL() - { - CDesCArrayFlat* wordArray = (CDesCArrayFlat*)iOwnWordsListBox->Model()->ItemTextArray(); - //First Get the current focussed word's index - TInt selectedWordIndex = iOwnWordsListBox->CurrentItemIndex(); - //Edit option will be available only for the currently - //focussed item. - - //Get the indexed word and remove seperator ("\t") - TPtrC oldWord = ( (*wordArray)[selectedWordIndex] ).Mid(1); - HBufC* newWord = HBufC::NewLC( KMaxUDBLength ); - //Copy the old word to newWord for the "Edit word" prompt - newWord->Des().Copy( oldWord ); - TPtr newWordPtr(newWord->Des()); - HBufC* queryTitle = StringLoader::LoadLC( R_AKNFEP_PRED_EDIT_QUERY ); - if ( QueryWordL( *queryTitle, newWordPtr ) ) - { - //Remove old word - if ( KErrNone == iOwnWordsModel->RemoveSelectedWordL( selectedWordIndex ) ) - { - iOwnWordsListBox->HandleItemRemovalL(); - //Now add the new word: - selectedWordIndex = iOwnWordsModel->AddNewWordL( newWordPtr ); - if ( selectedWordIndex >= 0 ) - { - iOwnWordsListBox->HandleItemAdditionL(); - if ( (iOwnWordsListBox->CurrentItemIndex() >= 0) && FindBox() && (FindBox()->TextLength() > 0) ) - { - HandleAddNewIntoFilteredListL( selectedWordIndex ); - } - if ( selectedWordIndex >=0 ) - { - iOwnWordsListBox->SetCurrentItemIndex( selectedWordIndex ); - } - iOwnWordsListBox->DrawNow(); - } - } - } - - CleanupStack::PopAndDestroy( 2, newWord ); - } - -void CAknFepUserDictionaryEditDialog::HandleAddNewCommandL() - { - HBufC* newWord = HBufC::NewLC( KMaxUDBLength ); - TPtr newWordPtr(newWord->Des()); - //if there is some text in the find pane, include it in the query - if ( FindBox()->TextLength() > 0 ) - { - FindBox()->GetSearchText( newWordPtr ); - } - HBufC* queryTitle = StringLoader::LoadLC( R_AKNFEP_PRED_ADD_QUERY ); - if ( QueryWordL( *queryTitle, newWordPtr ) ) - { - TInt selectedWordIndex = iOwnWordsModel->AddNewWordL( newWordPtr ); - if ( selectedWordIndex >= 0 ) - { - iOwnWordsListBox->HandleItemAdditionL(); - if ( (iOwnWordsListBox->CurrentItemIndex() >= 0) && FindBox() && (FindBox()->TextLength() > 0) ) - { - HandleAddNewIntoFilteredListL( selectedWordIndex ); - } - if ( selectedWordIndex >=0 ) - { - iOwnWordsListBox->SetCurrentItemIndex( selectedWordIndex ); - } - iOwnWordsListBox->DrawNow(); - } - } - CleanupStack::PopAndDestroy( 2, newWord ); - } -void CAknFepUserDictionaryEditDialog::HandleDeleteCommandL() - { - if ( iOwnWordsListBox->Model()->NumberOfItems() <= 0 ) - { - //safety check - no words to delete so return from here - return; - } - - TInt updatedIndex(-1); - TInt numOfMarkedItems = iOwnWordsListBox->SelectionIndexes()->Count(); - TInt currentIndex = CurrentItemIndex(); - //If multiple items are marked: - if ( numOfMarkedItems > 1 ) - { - //Load the confirmation string for multiple item deletion - HBufC* prompt = StringLoader::LoadLC( - R_AKNFEP_PRED_DELETE_MANY_QUERY, numOfMarkedItems ); - if ( ConfirmDeleteL( *prompt ) ) - { - const CArrayFix* selectedItems = SelectedItemsL();/*(CArrayFix*)filteredModel->Filter()->SelectionIndexes();*/ - updatedIndex = iOwnWordsModel->RemoveSelectedWordsL( selectedItems ); - } - CleanupStack::PopAndDestroy( prompt ); - } - else - { - //Load the confirmation string for single item deletion - HBufC* prompt = StringLoader::LoadLC( R_AKNFEP_PRED_DELETE_1_QUERY ); - if ( ConfirmDeleteL( *prompt ) ) - { - //Deleting marked item? - if ( numOfMarkedItems == 1 ) - { - updatedIndex = iOwnWordsModel->RemoveSelectedWordL( SelectedItemsL()->At(0) ); - } - //or deleting the currently focussed item - else //just one entry to delete: - { - updatedIndex = iOwnWordsModel->RemoveSelectedWordL( currentIndex ); - } - } - CleanupStack::PopAndDestroy( prompt ); - } - - if ( updatedIndex == KErrNone ) - { - iOwnWordsListBox->HandleItemRemovalL(); - - CAknListBoxFilterItems* filter; - TInt filteredNumOfItems(-1); - if ( (iOwnWordsListBox->CurrentItemIndex() >= 0) && FindBox() && (FindBox()->TextLength() > 0) ) - { - CAknFilteredTextListBoxModel* model = static_cast(iOwnWordsListBox->Model()); - filter = model->Filter(); - filter->HandleItemArrayChangeL(); - filter->UpdateCachedDataL(); - filteredNumOfItems = filter->FilteredNumberOfItems(); - } - - //retain the current selection position, unless - //it refers to non-existant word. In this case, - //keep selection at the end of the list. - TInt numOfItems = filteredNumOfItems>=0? filteredNumOfItems : iOwnWordsListBox->Model()->NumberOfItems(); - - if ( currentIndex >= numOfItems && numOfItems > 0 ) - { - iOwnWordsListBox->SetCurrentItemIndex( numOfItems - 1 ); - } - - - UpdateMSKLabelL(); - iOwnWordsListBox->DrawNow(); - } - - } - -//Query for new word from user. Also used to edit existing word -TBool CAknFepUserDictionaryEditDialog::QueryWordL( const TDesC& aTitle, TDes& aNewWord ) - { - CAknTextQueryDialog* dialog = CAknTextQueryDialog::NewL( aNewWord ); - dialog->PrepareLC( R_AKNFEP_PRED_USER_DICTIONARY_WORD_QUERY ); - dialog->SetPromptL(aTitle); - //last char space has to be reserved for null terminator - dialog->SetMaxLength( KMaxUDBLength - 1 ); - if ( EAknSoftkeyOk == dialog->RunLD() ) - { - return ETrue; - } - else - { - return EFalse; - } - } - -TBool CAknFepUserDictionaryEditDialog::ConfirmDeleteL( const TDesC& aPrompt ) - { - CAknQueryDialog* dialog = CAknQueryDialog::NewL(); - dialog->SetPromptL( aPrompt ); - if ( EAknSoftkeyYes == dialog->ExecuteLD( R_AKNFEP_PRED_DELETE_CONFIRMATION_QUERY ) ) - { - return ETrue; - } - else - { - return EFalse; - } - } - -TInt CAknFepUserDictionaryEditDialog::CurrentItemIndex() - { - if ( (iOwnWordsListBox->CurrentItemIndex() >= 0) && FindBox() && (FindBox()->TextLength() > 0) ) - { - CAknFilteredTextListBoxModel* model = static_cast(iOwnWordsListBox->Model()); - CAknListBoxFilterItems* filter = model->Filter(); - return filter->FilteredItemIndex(iOwnWordsListBox->CurrentItemIndex()); - } - else - { - return iOwnWordsListBox->CurrentItemIndex(); - } - } - -const CArrayFix* CAknFepUserDictionaryEditDialog::SelectedItemsL() - { - const CArrayFix* selectedItems; - if ( (iOwnWordsListBox->CurrentItemIndex() >= 0) && FindBox() && (FindBox()->TextLength() > 0) ) - { - CAknFilteredTextListBoxModel* model = static_cast(iOwnWordsListBox->Model()); - CAknListBoxFilterItems* filter = model->Filter(); - filter->ResetFilteringL(); - selectedItems = filter->SelectionIndexes(); - } - else - { - selectedItems = iOwnWordsListBox->SelectionIndexes(); - } - TKeyArrayFix actNumKey(0,ECmpTInt); - const_cast*>(selectedItems)->Sort(actNumKey); - return selectedItems; - } - -void CAknFepUserDictionaryEditDialog::HandleAddNewIntoFilteredListL( TInt &aOriginalItemIndex ) - { - CAknFilteredTextListBoxModel* model = static_cast(iOwnWordsListBox->Model()); - CAknListBoxFilterItems* filter = model->Filter(); - filter->HandleItemArrayChangeL(); - filter->UpdateCachedDataL(); - TInt filteredNumOfItems = filter->FilteredNumberOfItems(); - aOriginalItemIndex = filter->VisibleItemIndex( aOriginalItemIndex ); - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/aknfepchineseuidataconv.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/aknfepchineseuidataconv.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepChineseUIDataConv methods. -* -* -*/ - - -#include "aknfepchineseuidataconv.h" - -TInt CAknFepChineseUIDataConv::AnyToInt(TAny* aOriginal) - { - return *(reinterpret_cast(aOriginal)); - } - -TRect CAknFepChineseUIDataConv::AnyToRect(TAny* aOriginal) - { - return *(reinterpret_cast(aOriginal)); - } - -CFont* CAknFepChineseUIDataConv::AnyToFont(TAny* aOriginal) - { - return reinterpret_cast(aOriginal); - } - -TPoint CAknFepChineseUIDataConv::AnyToPoint(TAny* aOriginal) - { - return *(reinterpret_cast(aOriginal)); - } - -TRgb CAknFepChineseUIDataConv::AnyToRgb(TAny* aOriginal) - { - return *(reinterpret_cast(aOriginal)); - } - -TSize CAknFepChineseUIDataConv::AnyToSize(TAny* aOriginal) - { - return *(reinterpret_cast(aOriginal)); - } - -TAknTextLineLayout CAknFepChineseUIDataConv::AnyToTextLine(TAny* aOriginal) - { - return *(reinterpret_cast(aOriginal)); - } - -TAknLayoutText CAknFepChineseUIDataConv::AnyToLayoutText(TAny* aOriginal) - { - return *(reinterpret_cast(aOriginal)); - } - -TAknWindowLineLayout CAknFepChineseUIDataConv::AnyToWindowLine(TAny* aOriginal) - { - return *(reinterpret_cast(aOriginal)); - } - -TAknLayoutRect CAknFepChineseUIDataConv::AnyToLayoutRect(TAny* aOriginal) - { - return *(reinterpret_cast(aOriginal)); - } - -//End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/aknfepuictrleepcontrol.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/aknfepuictrleepcontrol.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,736 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the CAknFepUICtrlEEPControl definition - * -*/ - - - - - - - - - - - - -#include -#include -#include -#include //AknBidiTextUtils -#include //TBidiLogicalToVisual -#include -#include -#include -#include "aknlayoutscalable_avkon.cdl.h" - -#include "aknfepuictrleepcontrol.h" -#include "insertionpoint.h" -#include "aknfepuilayoutdatamgr.h" -#include "aknfepchineseuidataconv.h" - -const TInt KMaxDispNum = 100; - -// --------------------------------------------------------- -// NewL function. -// --------------------------------------------------------- -// -CAknFepUICtrlEEPControl* CAknFepUICtrlEEPControl::NewL( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CAknFepUICtrlEEPControl* self= CAknFepUICtrlEEPControl::NewLC( aParent, aLafDataMgr ); - CleanupStack::Pop( self ); // self; - return self; - } - -// --------------------------------------------------------- -// NewLC function. -// --------------------------------------------------------- -// -CAknFepUICtrlEEPControl* CAknFepUICtrlEEPControl::NewLC( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CAknFepUICtrlEEPControl* self = new ( ELeave ) CAknFepUICtrlEEPControl(aLafDataMgr); - CleanupStack::PushL( self ) ; - self->ConstructL( aParent ); - return self; - } - -// --------------------------------------------------------- -// Cancel and destroy. -// --------------------------------------------------------- -// -CAknFepUICtrlEEPControl::~CAknFepUICtrlEEPControl( ) - { - if ( iBuffer ) - { - delete iBuffer; - iBuffer = NULL; - } - if ( iInsertionPoint ) - { - delete iInsertionPoint; - iInsertionPoint = NULL; - } - iArray.ResetAndDestroy( ); - } - -// --------------------------------------------------------- -// Draw the control. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::Draw( const TRect& /*aRect*/ ) const - { - CWindowGc& gc = SystemGc( ); - TAknTextLineLayout textPaneTextLayout; - gc.Clear( Rect( ) ) ; - gc.SetPenStyle( CGraphicsContext::ESolidPen ) ; - TInt fontWidth = 0; - TRect editRectTmp; - MAknsSkinInstance* skin = AknsUtils::SkinInstance( ); - TRect outerRect; - TRect innerRect; - CalculateFrameRects( outerRect, innerRect ) ; - - AknsDrawUtils::DrawFrame( skin, gc, outerRect, innerRect, - KAknsIIDQsnFrPopupSub, KAknsIIDQsnFrPopupCenterSubmenu ) ; - - TRect textrect; - textrect.iTl = Rect().iTl + TPoint( Rect().Width( )*KLROffset/KDenominator, 3 ) ; - textrect.SetHeight( Rect().Height( ) ) ; - textrect.SetWidth( Rect().Width( )- Rect().Width( )*KLROffset/KDenominator * 2 ) ; - - TAknLayoutText layoutText; - TAknTextLineLayout - textLayout= - AKN_LAYOUT_TEXT_Chinese_universal_FEP_entry_pane_texts_Line_1( 0); - layoutText.LayoutText( textrect, textLayout ) ; - const CFont* font = layoutText.Font( ); - gc.UseFont( font ) ; - TInt baseLine = font->AscentInPixels( )/2 + Rect().Height( )/2 - 2; - - TInt arrayCount = iArray.Count( ); - TInt beg = 0; - TInt end = iBuffer->Length( ) - 1; - - for ( TInt i = 0; i < arrayCount; i++ ) - { - TSegment* tmp = iArray[i]; - fontWidth = font->TextWidthInPixels( iBuffer->Left( beg ) ) ; - editRectTmp = textrect; - editRectTmp.iTl.iX = textrect.iTl.iX + fontWidth; - gc.SetPenColor( iDefaultTextColor ) ; - gc.SetUnderlineStyle( EUnderlineOff ) ; - gc.DrawText( iBuffer->Mid( beg, tmp->iBegin - beg ) , editRectTmp, - baseLine ) ; - fontWidth = font->TextWidthInPixels( iBuffer->Left( tmp->iBegin ) ) ; - editRectTmp = textrect; - editRectTmp.iTl.iX = textrect.iTl.iX + fontWidth; - if ( tmp->iStyle == EHighlight ) - { - gc.SetPenColor( iHighlightColor ) ; - } - else if ( tmp->iStyle == EUnderline ) - { - gc.SetUnderlineStyle( EUnderlineOn ) ; - } - else if ( tmp->iStyle == EUnderlineHighlight ) - { - gc.SetPenColor( iHighlightColor ) ; - gc.SetUnderlineStyle( EUnderlineOn ) ; - } - gc.DrawText( - iBuffer->Mid( tmp->iBegin, tmp->iEnd - tmp->iBegin + 1 ) , - editRectTmp, baseLine ) ; - beg = tmp->iEnd + 1; - } - gc.SetPenColor( iDefaultTextColor ) ; - gc.SetUnderlineStyle( EUnderlineOff ) ; - fontWidth = font->TextWidthInPixels( iBuffer->Left( beg ) ) ; - editRectTmp = textrect; - editRectTmp.iTl.iX = textrect.iTl.iX + fontWidth; - gc.DrawText( iBuffer->Right( end - beg + 1 ) , editRectTmp, baseLine ) ; - gc.DiscardFont( ); - - if ( isCursorDraw ) - { - iInsertionPoint->SetTextRect( textrect ) ; - //iInsertionPoint->SetHeight( font->HeightInPixels( ) + 4 ) ; - iInsertionPoint->SetHeight(); - iInsertionPoint->Draw( gc ) ; - } - } - -// --------------------------------------------------------- -// From CCoeControl. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::SizeChanged( ) - { - } - -// --------------------------------------------------------- -// Set the visual text and store it into member data buffer. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::SetText( const TDesC& aDes ) - { - ResetAll( ); - * (this->iBuffer ) = aDes; - } - -// --------------------------------------------------------- -// Set the cursor position in the visual text rect. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlEEPControl::SetCursorPosition( TInt aIndex ) - { - if ( aIndex < 0 || aIndex> iBuffer->Length() + 1 ) - { - return -1; - } - else - { - iCursorPosition = aIndex; - TInt offSetInPixel = 0; - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId ( textPaneTextLayout.iFont, - NULL ); - offSetInPixel = font->TextWidthInPixels ( iBuffer->Left ( iCursorPosition ) ); - this->iInsertionPoint->SetPosition ( offSetInPixel ); - return 0; - } - } - -// --------------------------------------------------------- -// Get the cursor position in visual text. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlEEPControl::GetCursorPosition( ) - { - return iCursorPosition; - } - -// --------------------------------------------------------- -// Set the underlined text beginning index and ending index. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlEEPControl::SetUnderline( TInt aBeg, TInt aEnd ) - { - if ( aBeg> aEnd - || ( aBeg < 0 || aBeg> iBuffer->Length() ) - || ( aEnd < 0 || aEnd> iBuffer->Length() )) - { - return -1; - } - else - { - SetSegment ( aBeg, aEnd, EUnderline ); - return 0; - } - } - -// --------------------------------------------------------- -// Set the highlighted text beginning index and ending index. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlEEPControl::SetHighlight( TInt aBeg, TInt aEnd ) - { - if ( aBeg> aEnd - || ( aBeg < 0 || aBeg> iBuffer->Length() ) - || ( aEnd < 0 || aEnd> iBuffer->Length() )) - { - return -1; - } - else - { - SetSegment ( aBeg, aEnd, EHighlight ); - return 0; - } - } - -// --------------------------------------------------------- -// Add a TSegment into iArray to identify the segment with a specified style. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::SetSegmentL ( TInt aBeg, TInt aEnd, TDspStyle aStyle ) - { - TInt left = aBeg; - TInt right = aEnd; - TSegment* tmp; - TSegment* newSeg; - RPointerArray newArray; - TBool consumed = EFalse; - - if ( iArray.Count() == 0 ) - { - tmp = new ( ELeave )TSegment ( aBeg, aEnd, aStyle ); - TLinearOrder orderByBegIndex(TSegment::CompareByBegIndex); - iArray.InsertInOrder ( tmp, orderByBegIndex ); - consumed = ETrue; - return; - } - - for ( TInt i = 0; i < iArray.Count(); i++ ) - { - tmp = iArray[i]; - if ( left > tmp->iBegin && left < tmp->iEnd - && right > tmp->iEnd ) - { - if ( aStyle == tmp->iStyle ) - { - left = tmp->iEnd + 1; - } - else - { - TInt tmpIndex = tmp->iEnd; - tmp->iEnd = left - 1; - newSeg = new ( ELeave ) TSegment ( left, tmpIndex, EUnderlineHighlight ); - CleanupStack::PushL( newSeg ); - newArray.AppendL( newSeg ); - CleanupStack::Pop( newSeg ); - left = tmpIndex + 1; - } - } - else if ( left < tmp->iBegin - && right > tmp->iBegin && right < tmp->iEnd ) - { - if ( aStyle == tmp->iStyle ) - { - tmp->iBegin = left; - consumed = ETrue; - break; - } - else - { - newSeg = new ( ELeave ) TSegment ( left, tmp->iBegin - 1, aStyle ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - newSeg = new ( ELeave ) TSegment ( tmp->iBegin, right, EUnderlineHighlight ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - tmp->iBegin = right + 1; - consumed = ETrue; - break; - } - } - else if ( left > tmp->iBegin && left < tmp->iEnd - && right > tmp->iBegin && right < tmp->iEnd ) - { - if ( aStyle == tmp->iStyle ) - { - consumed = ETrue; - break; - } - else - { - newSeg = new ( ELeave ) TSegment ( tmp->iBegin, left - 1, tmp->iStyle ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - newSeg = new ( ELeave ) TSegment ( left, right, EUnderlineHighlight ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - tmp->iBegin = right + 1; - consumed = ETrue; - break; - } - } - else if ( left < tmp->iBegin && right > tmp->iEnd ) - { - if ( aStyle == tmp->iStyle ) - { - tmp->iBegin = left; - left = tmp->iEnd + 1; - } - else - { - newSeg = new ( ELeave ) TSegment ( left, tmp->iBegin - 1, aStyle ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - tmp->iStyle = EUnderlineHighlight; - left = tmp->iEnd + 1; - } - } - else if ( left < tmp->iBegin && right < tmp->iBegin ) - { - newSeg = new ( ELeave ) TSegment ( left, right, aStyle ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - consumed = ETrue; - break; - } - else if ( left > tmp->iEnd && right > tmp->iEnd ) - { - if ( i == ( iArray.Count() - 1 ) - || right < iArray[i+1]->iBegin ) - { - newSeg = new ( ELeave ) TSegment ( left, right, aStyle ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - consumed = ETrue; - break; - } - } - else if (left == tmp->iBegin && right < tmp->iEnd ) - { - if ( aStyle == tmp->iStyle ) - { - consumed = ETrue; - break; - } - else - { - newSeg = new ( ELeave ) TSegment ( left, right, EUnderlineHighlight ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - tmp->iBegin = right + 1; - consumed = ETrue; - break; - } - } - else if (left > tmp->iBegin && right == tmp->iEnd ) - { - if ( aStyle == tmp->iStyle ) - { - consumed = ETrue; - break; - } - else - { - newSeg = new ( ELeave ) TSegment ( left, right, EUnderlineHighlight ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - tmp->iEnd = left - 1; - consumed = ETrue; - break; - } - } - else if (left == tmp->iBegin && right == tmp->iEnd ) - { - if ( aStyle == tmp->iStyle ) - { - consumed = ETrue; - break; - } - else - { - tmp->iStyle = EUnderlineHighlight; - consumed = ETrue; - break; - } - } - else if (left == tmp->iBegin && right > tmp->iEnd ) - { - if ( aStyle == tmp->iStyle ) - { - left = tmp->iEnd + 1; - } - else - { - tmp->iStyle = EUnderlineHighlight; - left = tmp->iEnd + 1; - } - } - else if (left < tmp->iBegin && right == tmp->iEnd ) - { - if ( aStyle == tmp->iStyle ) - { - tmp->iBegin = left; - consumed = ETrue; - break; - } - else - { - newSeg = new ( ELeave ) TSegment ( left, tmp->iBegin - 1, aStyle ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - tmp->iStyle = EUnderlineHighlight; - consumed = ETrue; - break; - } - } - else if (left == tmp->iEnd && tmp->iBegin < left ) - { - if ( aStyle == tmp->iStyle ) - { - left = tmp->iEnd + 1; - } - else - { - tmp->iEnd = tmp->iEnd - 1; - newSeg = new ( ELeave ) TSegment ( left, left, EUnderlineHighlight ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - left = left + 1; - } - } - else if (right == tmp->iBegin && tmp->iEnd > right ) - { - if ( aStyle == tmp->iStyle ) - { - tmp->iBegin = left; - consumed = ETrue; - break; - } - else - { - tmp->iBegin = tmp->iBegin + 1; - newSeg = new ( ELeave ) TSegment ( right, right, EUnderlineHighlight ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - right = right - 1; - } - } - } - - if ( consumed == EFalse ) - { - newSeg = new ( ELeave ) TSegment ( left, right, aStyle ); - CleanupStack::PushL(newSeg); - newArray.AppendL( newSeg ); - CleanupStack::Pop(newSeg); - consumed = ETrue; - } - - for ( TInt ii = 0; ii < newArray.Count(); ii++ ) - { - TLinearOrder orderByBegIndex(TSegment::CompareByBegIndex); - TSegment* tmp1 = newArray[ii]; - TInt err = 0; - err = iArray.InsertInOrder ( newArray[ii], orderByBegIndex ); - if ( err == KErrAlreadyExists ) - { - delete tmp1; - } - } - newArray.Reset(); - - for ( TInt ii = 0; ii < iArray.Count() - 1; ) - { - if ( iArray[ii]->iStyle == iArray[ii + 1]->iStyle - && iArray[ii]->iEnd + 1 == iArray[ii + 1]->iBegin ) - { - iArray[ii]->iEnd = iArray[ii + 1]->iEnd; - TSegment* tmp1 = iArray[ii + 1]; - iArray.Remove(ii + 1); - delete tmp1; - } - else - { - ii ++; - } - } - return; - } - -// --------------------------------------------------------- -// Add a TSegment into iArray to identify the segment with a specified style. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::SetSegment( TInt aBeg, TInt aEnd, TDspStyle aStyle ) - { - TRAP_IGNORE( SetSegmentL( aBeg,aEnd,aStyle ) ); - } - -// --------------------------------------------------------- -// Active the cursor,the cursor will be appeared with a glint. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::ActiveCursor( ) - { - iInsertionPoint->Active( ); - } - -// --------------------------------------------------------- -// Deactive the cursor, the cursor will be gray and with no glint. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::DeactiveCursor( ) - { - iInsertionPoint->Deactive( ); - } - -// --------------------------------------------------------- -// Enable the cursor. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::EnableCursor() - { - isCursorDraw = ETrue; - DrawDeferred(); - } - -// --------------------------------------------------------- -// Disable the cursor. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::DisableCursor() - { - isCursorDraw = EFalse; - DrawDeferred(); - } - -// --------------------------------------------------------- -// Move cursor to the left by a specified stride. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlEEPControl::MoveCursorLeft( TInt aStride ) - { - TRect panerect = Rect( ); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( - textPaneTextLayout.iFont, NULL ) ; - if ( iCursorPosition - aStride >= 0 - && font->TextWidthInPixels( iBuffer->Left( iCursorPosition - aStride ) ) >= panerect.Width() * KLROffset / KDenominator) - { - iCursorPosition = iCursorPosition - aStride; - TInt offSetInPixel = 0; - offSetInPixel - = font->TextWidthInPixels( iBuffer->Left( iCursorPosition ) ) ; - this->iInsertionPoint->SetPosition( offSetInPixel ) ; - return 0; - } - else - { - return -1; - } - } - -// --------------------------------------------------------- -// Move cursor to the right by a specified stride. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlEEPControl::MoveCursorRight( TInt aStride ) - { - TRect panerect = Rect( ); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( - textPaneTextLayout.iFont, NULL ) ; - TInt lenBegToCursor = font->TextWidthInPixels( iBuffer->Left( iCursorPosition + aStride ) ); - if ( iBuffer->Length( ) >= iCursorPosition + aStride - && lenBegToCursor < panerect.Width() * KCursorResetStartOffset / KDenominator - ) - { - iCursorPosition = iCursorPosition + aStride; - TInt offSetInPixel = 0; - offSetInPixel - = font->TextWidthInPixels( iBuffer->Left( iCursorPosition ) ); - this->iInsertionPoint->SetPosition( offSetInPixel ) ; - return 0; - } - else - { - return -1; - } - } - -// --------------------------------------------------------- -// Called by the cursor object. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::Refresh( ) - { - this->DrawDeferred( ); - } - -// --------------------------------------------------------- -// C++ constructor. -// --------------------------------------------------------- -// -CAknFepUICtrlEEPControl::CAknFepUICtrlEEPControl( CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - iBuffer = NULL; - iInsertionPoint = NULL; - iCursorPosition = 0; - isCursorDraw = ETrue; - iLafDataMgr = aLafDataMgr; - } - -// --------------------------------------------------------- -// Two-phrase constructor. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::ConstructL( RWindow& aParent ) - { - SetContainerWindowL( aParent ); - this->iBuffer = HBufC::New( KMaxDispNum ) ; - this->iInsertionPoint = CInsertionPoint::NewL( iLafDataMgr ); - this->iInsertionPoint->SetRefreshObserver( this ) ; - iHighlightColor = KRgbRed; - iDefaultTextColor = KRgbBlack; - } - -// --------------------------------------------------------- -// Reset all its member data to initialized state. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::ResetAll( ) - { - iBuffer->Des().Zero( ); - iArray.ResetAndDestroy( ); - iCursorPosition = 0; - isCursorDraw = ETrue; - this->iInsertionPoint->SetPosition( 0 ); - } - -// --------------------------------------------------------- -// Calculate the frame rect. -// --------------------------------------------------------- -// -void CAknFepUICtrlEEPControl::CalculateFrameRects( TRect& aOuterRect, - TRect& aInnerRect ) const - { - TRect windowRect = CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData( EPopupRectEEP )); - TAknLayoutRect eepFirstHorizLineLayoutRect = CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( EEEPFirstHorizLine )); - TAknLayoutRect eepSecondHorizLineLayoutRect = CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( EEEPSecondHorizLine )); - TRect eepFirstHorizLineRect = eepFirstHorizLineLayoutRect.Rect(); - TRect eepSecondHorizLineRect = eepSecondHorizLineLayoutRect.Rect(); - TInt rectHeight = eepFirstHorizLineRect.iTl.iY - windowRect.iTl.iY; - //TInt rectHeight = eepSecondHorizLineRect.iTl.iY - windowRect.iTl.iY - 1; - TInt rectWidth = windowRect.Width( ); - windowRect.iTl.iX = 0; - windowRect.iTl.iY = 0; - windowRect.SetHeight( rectHeight ) ; - windowRect.SetWidth( rectWidth ) ; - TAknLayoutRect topLeft; - topLeft.LayoutRect( windowRect, - SkinLayout::Submenu_skin_placing_Line_2( ) ) ; - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect( windowRect, - SkinLayout::Submenu_skin_placing_Line_5( ) ) ; - - aOuterRect = TRect( topLeft.Rect().iTl, bottomRight.Rect().iBr ) ; - aInnerRect = TRect( topLeft.Rect().iBr, bottomRight.Rect().iTl ) ; -// aOuterRect.SetHeight(); -// aInnerRect = aOuterRect; - aInnerRect.iBr.iY = aOuterRect.iBr.iY; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/aknfepuictrlpinyineep.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/aknfepuictrlpinyineep.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1620 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the CAknFepUICtrlPinyinEEP definition - * -*/ - - - - - - - - - - - - -#include -#include -#include -#include -#include -#include - -#include "aknlayoutscalable_avkon.cdl.h" -#include "aknfepuictrlpinyineep.h" -#include "aknfepuilayoutdatamgr.h" -#include "aknfepchineseuidataconv.h" - -_LIT(KFullStop, "\x002E"); - -_LIT( KToneMark1, "\x0020"); -_LIT( KToneMark2, "\x02CA"); -_LIT( KToneMark3, "\x02C7"); -_LIT( KToneMark4, "\x02CB"); -_LIT( KToneMark5, "\x02D9"); -_LIT( KLeftBracket, "\x0028"); -const TInt KControlNum = 1; -const TInt KMaxCharNum = 200; -const TInt KMaxDispNum = 200; - -// --------------------------------------------------------- -// NewL function. -// --------------------------------------------------------- -// -CAknFepUICtrlPinyinEEP* CAknFepUICtrlPinyinEEP::NewL( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CAknFepUICtrlPinyinEEP* self=CAknFepUICtrlPinyinEEP::NewLC( aParent, aLafDataMgr ); - CleanupStack::Pop(self); // self; - return self; - } - -// --------------------------------------------------------- -// NewLC function. -// --------------------------------------------------------- -// -CAknFepUICtrlPinyinEEP* CAknFepUICtrlPinyinEEP::NewLC( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CAknFepUICtrlPinyinEEP* self = new(ELeave)CAknFepUICtrlPinyinEEP( aLafDataMgr ); - CleanupStack::PushL( self ); - self->ConstructL( aParent, aLafDataMgr); - return self; - } - -// --------------------------------------------------------- -// Destructor. -// --------------------------------------------------------- -// -CAknFepUICtrlPinyinEEP::~CAknFepUICtrlPinyinEEP() - { - if ( iEditableEntryPane ) - { - delete iEditableEntryPane; - iEditableEntryPane = NULL; - } -// if ( iBgContext ) -// { -// delete iBgContext; -// iBgContext = NULL; -// } - if ( iAbsoluteBuffer ) - { - delete iAbsoluteBuffer; - iAbsoluteBuffer = NULL; - } - if ( iVisualBuffer ) - { - delete iVisualBuffer; - iVisualBuffer = NULL; - } - iArray.ResetAndDestroy(); - delete iKeystrokeArray; - delete iShowKeystrokeArray; - delete iPhraseArray; - delete iPhraseShowKeyStrokeArray; - delete iTempArray; - } - -// --------------------------------------------------------- -// From CCoeControl. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::CountComponentControls() const - { - return KControlNum; - } - -// --------------------------------------------------------- -// From CCoeControl. -// --------------------------------------------------------- -// -CCoeControl* CAknFepUICtrlPinyinEEP::ComponentControl( TInt aIndex ) const - { - switch ( aIndex ) - { - case EEditableEntryPane: - return iEditableEntryPane; - default: - return NULL; - } - } - -// --------------------------------------------------------- -// From CCoeControl. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::Draw( const TRect& /*aRect*/) const - { - } - -// --------------------------------------------------------- -// From CCoeControl. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SizeChanged() - { - LayoutContainedControls(); - } - -// --------------------------------------------------------- -// Set the text buffer and posit the cursor index. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetText( const TDesC& aDes, TInt aCursorIndex, TBool aMiniQwertyZhuyin ) - { - iMiniQwertyZhuyin = aMiniQwertyZhuyin; - iAbsoluteUnderlineBeg = -1; - iAbsoluteUnderlineEnd = -1; - iAbsoluteHighlightBeg = -1; - iAbsoluteHighlightEnd = -1; - iArray.ResetAndDestroy(); - TInt absoluteBufferLen = iAbsoluteBuffer->Length(); - TInt desLen = aDes.Length(); - - if ( aCursorIndex > aDes.Length() ) - { - aCursorIndex = aDes.Length(); - } - else if ( aCursorIndex < 0 ) - { - aCursorIndex = 0; - } - - // cursor is at the end of buffer and add a character - if ( aDes.Left( iAbsoluteBuffer->Length() ) == *iAbsoluteBuffer - && iAbsoluteCursorPos == iAbsoluteBuffer->Length() && aCursorIndex - == aDes.Length() ) - { - Append( aDes.Right( aDes.Length() - iAbsoluteBuffer->Length() ) ); - } - // delete one character - else if ( iAbsoluteBuffer->Left( aCursorIndex ).Compare(aDes.Left(aCursorIndex)) == 0 - && aCursorIndex < iAbsoluteCursorPos - && iAbsoluteBuffer->Compare( aDes ) != 0 - && 0 == iAbsoluteBuffer->Right( absoluteBufferLen - iAbsoluteCursorPos ).Compare( - aDes.Right( desLen - aCursorIndex)) ) - { - Delete( iAbsoluteCursorPos - (iAbsoluteBuffer->Length() - - aDes.Length()), iAbsoluteBuffer->Length() - aDes.Length() ); - } - else if ( iAbsoluteBuffer->Length() < aDes.Length() - && iAbsoluteBuffer->Left( iAbsoluteCursorPos ) - == aDes.Left( iAbsoluteCursorPos ) - && iAbsoluteBuffer->Right( iAbsoluteBuffer->Length() - - iAbsoluteCursorPos ) == aDes.Right( iAbsoluteBuffer->Length() - - iAbsoluteCursorPos ) && aCursorIndex - iAbsoluteCursorPos - == aDes.Length() - iAbsoluteBuffer->Length() ) - { - TPtrC tmp = aDes.Mid( iAbsoluteCursorPos, aDes.Length() - - iAbsoluteBuffer->Length() ); - Insert( iAbsoluteCursorPos, tmp ); - } - else - { - SetText( aDes ); - SetCursor( aCursorIndex ); - } - } - -// --------------------------------------------------------- -// Set the text buffer and posit the cursor index for zhuyin. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetTextForZhuyin( - const TDesC& aDes, - TInt aCursor, - TInt aChineseCount, - const TDesC& aJudgeSeed, - TInt aKeystroke, - TBool aInvalid, - TBool aMiniQwertyZhuyin) - { - iMiniQwertyZhuyin = aMiniQwertyZhuyin; - TInt actionType = EZhuyinNULL; - if ( aKeystroke == 0 && aJudgeSeed.Compare(iJudgeSeed) == 0) - { - actionType = EZhuyinMoveCursor; - } - else if ( aChineseCount == iChineseCount + 1 ) - { - actionType = EZhuyinNULL; - } - else if ( aKeystroke == 0 && aJudgeSeed.Length() <= iJudgeSeed.Length() - 1) - { - actionType = EZhuyinDelete; - } - else - { - if ( aJudgeSeed.Length() == iJudgeSeed.Length()) - { - if ( aJudgeSeed.Left(aKeystroke - 1).Compare(iJudgeSeed.Left(aKeystroke - 1)) == 0 - && aJudgeSeed.Mid(aKeystroke - 1,1).Compare(iJudgeSeed.Mid(aKeystroke - 1,1)) != 0 ) - { - actionType = EZhuyinReplace; - } - else if ( aCursor == GetCursor() ) - { - actionType = EZhuyinReplace; - } - else - { - actionType = EZhuyinMoveCursor; - } - } - else if ( aJudgeSeed.Length() == iJudgeSeed.Length() + 1) - { - actionType = EZhuyinInsert; - } - else if ( aJudgeSeed.Length() == iJudgeSeed.Length() - 1) - { - actionType = EZhuyinDelete; - } - else if ( KErrNotFound != iJudgeSeed.Find( aJudgeSeed ) ) - { - actionType = EZhuyinDelete; - } - else - { - actionType = EZhuyinNULL; - } - } - iArray.ResetAndDestroy(); - iJudgeSeed = aJudgeSeed; - iChineseCount = aChineseCount; - if ( iLastValid && aInvalid ) - { - TInt newOffset = 0; - TPtrC ptr = iAbsoluteBuffer->Des(); - for ( TInt i = 0; i < iOffset; i++ ) - { - if ( ptr.Mid(i,1).Compare(KFullStop) == 0 ) - { - continue; - } - newOffset++; - } - iOffset = newOffset; - } - else if ( !iLastValid && !aInvalid ) - { - TInt newOffset = 0; - TInt i = 0; - TPtrC ptr = aDes; - for ( i = 0; i < iOffset && newOffset < ptr.Length(); ) - { - if ( ptr.Mid(newOffset,1).Compare(KFullStop) != 0 ) - { - i++; - } - newOffset++; - } - iOffset = newOffset; - } - iLastValid = !aInvalid; - switch ( actionType ) - { - case EZhuyinInsert: - { - *iAbsoluteBuffer = aDes; - iAbsoluteCursorPos = aCursor; - this->CalculateVisualTextForInsert( 0, aDes ); - this->iEditableEntryPane->SetText( *iVisualBuffer ); - this->CalculateVisualIndex(); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - - iOffset ); - } - break; - case EZhuyinReplace: - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( - textPaneTextLayout.iFont, - NULL ); - TInt lenToCursor = font->TextWidthInPixels( aDes.Mid( iOffset, - aCursor - iOffset ) ); - if ( lenToCursor < panerect.Width() - panerect.Width() - *KLROffset/KDenominator * 2 ) - { - *iAbsoluteBuffer = aDes; - iAbsoluteCursorPos = aCursor; - TInt stride = 0; - for (stride = 1;; stride ++ ) - { - if ( iOffset + stride > aDes.Length() ) - { - break; - } - TInt tmpFontLen = font->TextWidthInPixels( aDes.Mid( - iOffset, stride ) ); - if ( tmpFontLen > panerect.Width() - panerect.Width() - *KLROffset/KDenominator * 2 ) - { - break; - } - } - *iVisualBuffer = aDes.Mid( iOffset, stride - 1 ); - iEditableEntryPane->SetText( *iVisualBuffer ); - iEditableEntryPane->SetCursorPosition( aCursor-iOffset ); - } - else - { - SetText( aDes, aCursor ); - } - CalculateVisualIndex(); - break; - } - case EZhuyinDelete: - { - *iAbsoluteBuffer = aDes; - iAbsoluteCursorPos = aCursor; - this->CalculateVisualTextForDelete( 0, 0 ); - this->iEditableEntryPane->SetText( *iVisualBuffer ); - this->CalculateVisualIndex(); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - - iOffset ); - } - break; - default: - SetText( aDes, aCursor ); - } - } - -// --------------------------------------------------------- -// Set the text buffer and maintain the current cursor position. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetText( const TDesC& aDes ) - { - iAbsoluteCursorPos = 0; - iOffset = 0; - iAbsoluteBuffer->Des().Zero(); - iVisualBuffer->Des().Zero(); - *iAbsoluteBuffer = aDes; - CalculateVisualTextForMoveRight(); - iEditableEntryPane->SetText( *iVisualBuffer ); - CalculateVisualIndex(); - } - -// --------------------------------------------------------- -// Set the cursor position. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCursor( const TInt aIndex ) - { - SetCursorForMoveRight( aIndex ); - } - -// --------------------------------------------------------- -// get the position index of cursor.The max cursor index must -// be larger than the length of text buffer by 1. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetCursor() - { - return iAbsoluteCursorPos; - } - -// --------------------------------------------------------- -// move cursor to the left by a 1 stride. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::MoveCursorLeft( TInt aStride ) - { - if ( iAbsoluteCursorPos - aStride < 0 ) - { - return EFalse; - } - if ( iEditableEntryPane->MoveCursorLeft( aStride ) == 0 ) - { - iAbsoluteCursorPos = iAbsoluteCursorPos - aStride; - } - else - { - iAbsoluteCursorPos = iAbsoluteCursorPos - aStride; - SetCursorForMoveLeft( iAbsoluteCursorPos ); - } - return ETrue; - } - -// --------------------------------------------------------- -// move cursor to the right by a 1 stride. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::MoveCursorRight( TInt aStride ) - { - if ( iAbsoluteCursorPos + aStride > iAbsoluteBuffer->Length() ) - { - return EFalse; - } - if ( iEditableEntryPane->MoveCursorRight( aStride ) == 0 ) - { - iAbsoluteCursorPos = iAbsoluteCursorPos + aStride; - } - else - { - iAbsoluteCursorPos = iAbsoluteCursorPos + aStride; - SetCursorForMoveRight( iAbsoluteCursorPos ); - } - return ETrue; - } - -// --------------------------------------------------------- -// active the cursor,the cursor will be black and with a wink -// this cursor state represent this control is focused. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::ActiveCursor() - { - iEditableEntryPane->ActiveCursor(); - } - -// --------------------------------------------------------- -// deactive the cursor, the cursor will be gray and no wink this cursor -// state represent this control with no focus. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::DeactiveCursor() - { - iEditableEntryPane->DeactiveCursor(); - } - -// --------------------------------------------------------- -// enable the cursor,the cursor will be drawn. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::EnableCursor() - { - iEditableEntryPane->EnableCursor(); - } - -// --------------------------------------------------------- -// deactive the cursor, the cursor will not be drawn. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::DisableCursor() - { - iEditableEntryPane->DisableCursor(); - } - -// --------------------------------------------------------- -// set the beginning and ending index for the underline text. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetUnderline( TInt aBeg, TInt aEnd ) - { - CAknFepUICtrlEEPControl::TSegment* tmp = - new CAknFepUICtrlEEPControl::TSegment ( aBeg, aEnd, CAknFepUICtrlEEPControl::EUnderline ); - iArray.Append( tmp ); - - TInt visualUnderlineBeg = aBeg - iOffset; - TInt visualUnderlineEnd = aEnd - iOffset; - - if ( - visualUnderlineBeg < 0 && - visualUnderlineEnd < 0 - || - visualUnderlineBeg> iVisualBuffer->Length() - 1 && - visualUnderlineEnd> iVisualBuffer->Length() - 1 - ) - { - visualUnderlineBeg = -1; - visualUnderlineEnd = -1; - } - else - { - if ( visualUnderlineBeg < 0 ) - { - visualUnderlineBeg = 0; - } - if ( visualUnderlineEnd> iVisualBuffer->Length() - 1 ) - { - visualUnderlineEnd = iVisualBuffer->Length() - 1; - } - } - iEditableEntryPane->SetUnderline( visualUnderlineBeg, visualUnderlineEnd ); - - iAbsoluteUnderlineBeg = aBeg; - iAbsoluteUnderlineEnd = aEnd; - } - -// --------------------------------------------------------- -// get the indexes for text with underline. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::GetUnderlineIndex( TInt& aBeg, TInt& aEnd ) - { - aBeg = iAbsoluteUnderlineBeg; - aEnd = iAbsoluteUnderlineEnd; - } - -// --------------------------------------------------------- -// set the indexes for the text with highlight -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetHighlight( TInt aBeg, TInt aEnd ) - { - CAknFepUICtrlEEPControl::TSegment* tmp = - new CAknFepUICtrlEEPControl::TSegment ( aBeg, aEnd, CAknFepUICtrlEEPControl::EHighlight ); - iArray.Append( tmp ); - - TInt visualHighlightBeg = aBeg - iOffset; - TInt visualHighlightEnd = aEnd - iOffset; - - if ( - visualHighlightBeg < 0 && - visualHighlightEnd < 0 - || - visualHighlightBeg> iVisualBuffer->Length() - 1 && - visualHighlightEnd> iVisualBuffer->Length() - 1 - ) - { - visualHighlightBeg = -1; - visualHighlightEnd = -1; - } - else - { - if ( visualHighlightBeg < 0 ) - { - visualHighlightBeg = 0; - } - if ( visualHighlightEnd> iVisualBuffer->Length() - 1 ) - { - visualHighlightEnd = iVisualBuffer->Length() - 1; - } - } - iEditableEntryPane->SetHighlight( visualHighlightBeg, visualHighlightEnd ); - - iAbsoluteHighlightBeg = aBeg; - iAbsoluteHighlightEnd = aEnd; - } - -// --------------------------------------------------------- -// get the indexes for the text with highlight -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::GetHighlightIndex( TInt& aBeg, TInt& aEnd ) - { - aBeg = iAbsoluteHighlightBeg; - aEnd = iAbsoluteHighlightEnd; - } - -// --------------------------------------------------------- -// set keystroke index. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCursorIndexOfKeystroke( const TInt aStartIndex ) - { - iIndex = aStartIndex; - } - -// --------------------------------------------------------- -// get the keystroke index -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetCursorIndexOfKeystroke() - { - return iIndex; - } - -// --------------------------------------------------------- -// whether this control will be actived.ETrue represent enable -// otherwise disable. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::Enable( TBool aEnable ) - { - iEnabled = aEnable; - if ( aEnable == EFalse ) - { - Reset(); - DrawNow(); - } - iEditableEntryPane->MakeVisible( aEnable ); - MakeVisible( aEnable ); - } - -// --------------------------------------------------------- -// return whether this control is enabled. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::IsEnabled() const - { - return iEnabled; - } - -// --------------------------------------------------------- -// Get the info before cursor. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::GetText( TDes& aText ) - { - aText = *iAbsoluteBuffer; - } - -// --------------------------------------------------------- -// Get the info before cursor. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::GetDesBeforeCursor( TDes& aOut ) - { - if ( iAbsoluteCursorPos == 0 ) - { - return EFalse; - } - else - { - aOut = iAbsoluteBuffer->Mid( (iAbsoluteCursorPos - 1 ), 1 ); - return ETrue; - } - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetToneMark( const TDesC& /*aToneMark*/) - { - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetToneMarkValidity( TBool /*aValid*/) - { - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetOverrideFontId( TInt /*aFontId*/) - { - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetFlag( TInt /*aFlag*/) - { - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::ClearFlag( TInt /*aFlag*/) - { - } - -// --------------------------------------------------------- -// From MAknFepUICtrlEditPane. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::IsFlagSet( TInt /*aFlag*/) const - { - return EFalse; - } - -// --------------------------------------------------------- -// Set the cursor index for moving to the left. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCursorForMoveLeft( const TInt aIndex ) - { - iAbsoluteCursorPos = aIndex; - CalculateVisualTextForMoveLeft(); - iEditableEntryPane->SetText( *iVisualBuffer ); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - iOffset ); - CalculateVisualIndex(); - } - -// --------------------------------------------------------- -// Set the cursor index for moving to the right. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCursorForMoveRight( const TInt aIndex ) - { - iAbsoluteCursorPos = aIndex; - CalculateVisualTextForMoveRight(); - iEditableEntryPane->SetText( *iVisualBuffer ); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - iOffset ); - CalculateVisualIndex(); - } - -// --------------------------------------------------------- -// Add some text at the end of buffer. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::Append( const TDesC& aDes ) - { - if ( this->iAbsoluteCursorPos != this->iAbsoluteBuffer->Length() ) - { - return EFalse; - } - else - { - if ( iAbsoluteBuffer->Length() + aDes.Length() - > iAbsoluteBuffer->Des().MaxLength() ) - { - return EFalse; - } - iAbsoluteBuffer->Des().Append( aDes ); - iAbsoluteCursorPos = iAbsoluteCursorPos + aDes.Length(); - this->CalculateVisualTextForAppend( aDes ); - this->iEditableEntryPane->SetText( *iVisualBuffer ); - this->CalculateVisualIndex(); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - iOffset ); - return ETrue; - } - } - -// --------------------------------------------------------- -// delete the content begin with aBeg index, and with an aLen length. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::Delete( TInt aBeg, TInt aLen ) - { - if ( aBeg < 0 || aLen < 0 || aBeg + aLen> iAbsoluteBuffer->Length() ) - { - return EFalse; - } - else - { - iAbsoluteBuffer->Des().Delete( aBeg, aLen ); - iAbsoluteCursorPos = aBeg; - this->CalculateVisualTextForDelete( aBeg, aLen ); - this->iEditableEntryPane->SetText( *iVisualBuffer ); - this->CalculateVisualIndex(); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - iOffset ); - return ETrue; - } - } - -// --------------------------------------------------------- -// Insert some text after aIndex character. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::Insert( TInt aIndex, const TDesC& aDes ) - { - if ( iAbsoluteBuffer->Length() + aDes.Length() > iAbsoluteBuffer->Des().MaxLength() ) - { - return EFalse; - } - iAbsoluteBuffer->Des().Insert( aIndex, aDes ); - iAbsoluteCursorPos = iAbsoluteCursorPos + aDes.Length(); - this->CalculateVisualTextForInsert( aIndex, aDes ); - this->iEditableEntryPane->SetText( *iVisualBuffer ); - this->CalculateVisualIndex(); - iEditableEntryPane->SetCursorPosition( iAbsoluteCursorPos - iOffset ); - return ETrue; - } - -// --------------------------------------------------------- -// Replace text from aBeg index to aBeg + aLen with aDes. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::Replace( TInt /*aBeg*/, TInt /*aLen*/, - const TDesC& /*aDes*/) - { - return EFalse; - } - -// --------------------------------------------------------- -// Reset private member viariable. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::Reset() - { - iIndex = 0; - iEnabled = EFalse; - iAbsoluteCursorPos = 0; - iOffset = 0; - iAbsoluteUnderlineBeg = -1; - iAbsoluteUnderlineEnd = -1; - iAbsoluteHighlightBeg = -1; - iAbsoluteHighlightEnd = -1; - iAbsoluteBuffer->Des().Zero(); - iVisualBuffer->Des().Zero(); - iEditableEntryPane->ResetAll(); - iArray.ResetAndDestroy(); - iJudgeSeed.Zero(); - iLastValid = ETrue; - iChineseCount = 0; - } - -// --------------------------------------------------------- -// Layout contained controls. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::LayoutContainedControls() - { - TRect outerRect; - TRect innerRect; - CalculateFrameRects( outerRect, innerRect ); - TRect rect = Rect(); - iEditableEntryPane->SetRect( rect ); - } - -// --------------------------------------------------------- -// layout the background frames. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::LayoutFrames() - { - TRect outerRect; - TRect innerRect; -// CalculateFrameRects( outerRect, innerRect ); -// iBgContext->SetFrameRects( outerRect, innerRect ); -// iBgContext->SetParentPos( PositionRelativeToScreen() ); - } - -// --------------------------------------------------------- -// layout its rectangles -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::LayoutRects() - { - TRect windowRect = - CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData( EEEPWindowRect )); - TInt height = windowRect.Height(); - TInt width = windowRect.Width(); - windowRect.iTl.iY = 0; - windowRect.iTl.iX = 0; - windowRect.SetHeight( height ); - windowRect.SetWidth( width ); - iSize.SetSize( width, Rect().Height() ); - } - -// --------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------- -// -CAknFepUICtrlPinyinEEP::CAknFepUICtrlPinyinEEP( CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - iIndex = 0; - iEnabled = EFalse; - iAbsoluteCursorPos = 0; - iAbsoluteUnderlineBeg = -1; - iAbsoluteUnderlineEnd = -1; - iAbsoluteHighlightBeg = -1; - iAbsoluteHighlightEnd = -1; - iOffset = 0; - iJudgeSeed.Zero(); - iLastValid = ETrue; - iChineseCount = 0; - iChangeFlag = 0; - iAutoChangeFlag = 1; - iAllValidFlag = 1; - iInvalidKeystrokeIndex = 0; - iCandidateRefreshFlag = 0; - iDelimiterCount = 0; - iLafDataMgr = aLafDataMgr; - } - -// --------------------------------------------------------- -// Two-phrase constructor. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::ConstructL( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - SetContainerWindowL( aParent ); - iEditableEntryPane = CAknFepUICtrlEEPControl::NewL( Window(), aLafDataMgr ); - iAbsoluteBuffer = HBufC::New( KMaxCharNum ); - iVisualBuffer = HBufC::New( KMaxDispNum ); - TRect outerRect = TRect(); - TRect innerRect = TRect(); - CalculateFrameRects( outerRect, innerRect ); -// iBgContext = CAknsFrameBackgroundControlContext::NewL( -// KAknsIIDQsnFrPopupSub, outerRect, innerRect, ETrue ); - iKeystrokeArray = new(ELeave)CDesCArrayFlat(1); - iShowKeystrokeArray = new(ELeave)CDesCArrayFlat(1); - iPhraseArray = new(ELeave)CDesCArrayFlat(1); - iPhraseShowKeyStrokeArray = new(ELeave)CDesCArrayFlat(1); - iTempArray = new(ELeave)CDesCArrayFlat(1); - iMiniQwertyZhuyin = EFalse; - iNeedClearDeliberateSelection = EFalse; - } - -// --------------------------------------------------------- -// Calculate visual text for appending. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForAppend( const TDesC& aDes ) - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, - NULL ); - - TInt lenToEnd = font->TextWidthInPixels( iAbsoluteBuffer->Right( iVisualBuffer->Length() - + aDes.Length() ) ); - if ( lenToEnd <= panerect.Width() - panerect.Width()*KLROffset - /KDenominator * 2 ) - { - *iVisualBuffer = iAbsoluteBuffer->Right( iVisualBuffer->Length() - + aDes.Length() ); - } - else - { - this->CalculateVisualTextForMoveRight(); - } - } - -// --------------------------------------------------------- -// Calculate visual text for deleting. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForDelete( TInt /*aBeg*/, - TInt /*aLen*/) - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, - NULL ); - iOffset = iOffset > iAbsoluteBuffer->Length()?iAbsoluteBuffer->Length():iOffset; - TInt lenToEnd = font->TextWidthInPixels( iAbsoluteBuffer->Right( iAbsoluteBuffer->Length() - - iOffset ) ); - - TInt offsetLen = iAbsoluteCursorPos - iOffset; - if ( offsetLen < 0 ) - { - offsetLen = 0; - } - TInt LenOffsetToCursor = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - iOffset, offsetLen ) ); - - if ( lenToEnd > 0 && iAbsoluteCursorPos >= iOffset && LenOffsetToCursor > panerect.Width()*KLROffset/KDenominator ) - { - TInt stride = 0; - for (stride = 1;; stride ++ ) - { - if ( iOffset + stride > iAbsoluteBuffer->Length() ) - { - break; - } - TInt tmpFontLen = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - iOffset, stride ) ); - if ( tmpFontLen > panerect.Width() - panerect.Width() - *KLROffset/KDenominator * 2 ) - { - break; - } - } - *iVisualBuffer = iAbsoluteBuffer->Mid( iOffset, stride - 1 ); - } - else - { - this->CalculateVisualTextForMoveLeft(); - } - } - -// --------------------------------------------------------- -// Calculate visual text for inserting. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForInsert( TInt /*aIndex*/, - const TDesC& /*aDes*/) - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, - NULL ); - - TInt offsetLen = iAbsoluteCursorPos - iOffset; - if ( offsetLen < 0 ) - { - offsetLen = 0; - } - - TInt lenToCursor = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - iOffset, offsetLen ) ); - if ( lenToCursor < panerect.Width()* KCursorResetStartOffset / KDenominator - || iAbsoluteCursorPos == iAbsoluteBuffer->Length() - && lenToCursor <= panerect.Width() - panerect.Width()*KLROffset/KDenominator * 2) - { - TInt stride = 0; - for (stride = 1;; stride ++ ) - { - if ( iOffset + stride > iAbsoluteBuffer->Length() ) - { - break; - } - TInt tmpFontLen = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - iOffset, stride ) ); - if ( tmpFontLen > panerect.Width() - panerect.Width() - *KLROffset/KDenominator * 2 ) - { - break; - } - } - *iVisualBuffer = iAbsoluteBuffer->Mid( iOffset, stride - 1 ); - } - else - { - this->CalculateVisualTextForMoveRight(); - } - } - -// --------------------------------------------------------- -// Calculate visual text for replacing. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForReplace( TInt /*aBeg*/, - TInt /*aLen*/, const TDesC& /*aDes*/) - { - } - -// --------------------------------------------------------- -// Calculate visual text for moving to left. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForMoveLeft() - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, - NULL ); - TInt absolutelength = font->TextWidthInPixels( *iAbsoluteBuffer ); - TInt - cursorToBegLength = - font->TextWidthInPixels( iAbsoluteBuffer->Left( iAbsoluteCursorPos ) ); - if ( iAbsoluteCursorPos > iAbsoluteBuffer->Length() + 1 ) - { - iAbsoluteCursorPos = iAbsoluteBuffer->Length() + 1; - } - TInt lenPixelToVisualBeg = panerect.Width() * KCursorResetOffset - / KDenominator; - TInt stride = 0; - TInt visualBeg = 0; - TInt visualEnd = 0; - for (stride = 1;; stride ++ ) - { - if ( 0 > iAbsoluteCursorPos - stride ) - { - visualBeg = 0; - break; - } - TInt tmpFontLen = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - iAbsoluteCursorPos - stride, stride ) ); - if ( tmpFontLen > lenPixelToVisualBeg ) - { - visualBeg = iAbsoluteCursorPos - stride + 1; - break; - } - } - - //Fix for bug ESXU-7U68JT, let adjustment of visualBeg before caculation of visualEnd. - //For one, calculation always start before "(" for miniqwertyzhuyin - //For two, because characters(markers) might have different length in pixel, it's better recalculate visualEnd - // after changing visualBeg, therefore move changing visualBeg ahead of caculation take effect too. - if ( iMiniQwertyZhuyin && - iAbsoluteBuffer->Length() > 0 && - visualBeg >= iPhraseArray->Count() ) - { - while ( visualBeg > 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KLeftBracket ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark1 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark2 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark3 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark4 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark5 ) != 0 ) - { - visualBeg--; - } - } - - for (stride = 1;; stride ++ ) - { - if ( visualBeg + stride > iAbsoluteBuffer->Length() ) - { - visualEnd = visualBeg + stride - 1; - break; - } - TPtrC tempString = iAbsoluteBuffer->Mid(visualBeg, stride ); - TInt tmpFontLen = font->TextWidthInPixels( tempString ); - if ( tmpFontLen > panerect.Width() - panerect.Width() *KLROffset - /KDenominator * 2 ) - { - visualEnd = visualBeg + stride - 1; - //visualEnd = visualBeg + stride; - break; - } - } - *iVisualBuffer = iAbsoluteBuffer->Mid( visualBeg, visualEnd - visualBeg ); - this->iOffset = visualBeg; - } - -// --------------------------------------------------------- -// Calculate visual text for moving to the right. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualTextForMoveRight() - { - TRect panerect = iEditableEntryPane->Rect(); - TAknTextLineLayout textPaneTextLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - const CFont* font = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, - NULL ); - TInt absolutelength = font->TextWidthInPixels( *iAbsoluteBuffer ); - TInt cursorToEndLength = - font->TextWidthInPixels( iAbsoluteBuffer->Mid( iAbsoluteCursorPos, - iAbsoluteBuffer->Length() - iAbsoluteCursorPos ) ); - if ( iAbsoluteCursorPos > iAbsoluteBuffer->Length() + 1 ) - { - iAbsoluteCursorPos = iAbsoluteBuffer->Length() + 1; - } - if ( absolutelength <= panerect.Width() - panerect.Width()*KLROffset - /KDenominator * 2 ) - { - *iVisualBuffer = *iAbsoluteBuffer; - } - else if ( cursorToEndLength < panerect.Width() * KCursorResetOffset - / KDenominator ) - { - TInt tmp70VisualEnd = iAbsoluteCursorPos; - TInt visualBeg = 0; - TInt visualEnd = 0; - TInt stride = 0; - visualEnd = iAbsoluteBuffer->Length(); - for (stride = 1;; stride ++ ) - { - TInt tmpFontLen = font->TextWidthInPixels( iAbsoluteBuffer->Mid( - tmp70VisualEnd - stride, stride ) ); - if ( tmpFontLen > panerect.Width() * (KDenominator - - KLROffset * 2 - KCursorResetOffset ) / KDenominator ) - { - visualBeg = tmp70VisualEnd - stride + 1; - break; - } - } - if ( iMiniQwertyZhuyin && - iAbsoluteBuffer->Length( ) > 0 && - visualBeg >= iPhraseArray->Count() ) - { - while ( iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KLeftBracket ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark1 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark2 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark3 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark4 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark5 ) != 0 ) - { - visualBeg++; - // visualEnd++; - } - } - *iVisualBuffer = iAbsoluteBuffer->Right( visualEnd - visualBeg ); - this->iOffset = visualBeg; - } - else - { - TInt absoluteOffset = font->TextWidthInPixels( - iAbsoluteBuffer->Left( iAbsoluteCursorPos ) ); - if ( absoluteOffset < panerect.Width() * - KCursorResetStartOffset / KDenominator) - { - TInt stride = 0; - for (stride = 1;; stride ++ ) - { - TInt tmpFontLen = font->TextWidthInPixels( - iAbsoluteBuffer->Left( stride ) ); - if ( tmpFontLen > panerect.Width() - panerect.Width() - *KLROffset /KDenominator * 2 ) - { - *iVisualBuffer = iAbsoluteBuffer->Left( stride - 1 ); - this->iOffset = 0; - break; - } - } - } - else - { - TInt lenPixelToVisualEnd = panerect.Width() * KCursorResetOffset - / KDenominator; - TInt stride = 0; - TInt visualBeg = 0; - TInt visualEnd = 0; - for (stride = 1;; stride ++ ) - { - if ( iAbsoluteBuffer->Length() < iAbsoluteCursorPos + stride ) - { - visualEnd = iAbsoluteBuffer->Length(); - break; - } - TInt tmpFontLen = font->TextWidthInPixels( - iAbsoluteBuffer->Mid( iAbsoluteCursorPos, stride ) ); - if ( tmpFontLen > lenPixelToVisualEnd ) - { - visualEnd = iAbsoluteCursorPos + stride - 1; - break; - } - } - for (stride = 1;; stride ++ ) - { - TInt tmpFontLen = font->TextWidthInPixels( - iAbsoluteBuffer->Mid( visualEnd - stride, stride ) ); - if ( tmpFontLen > panerect.Width() - panerect.Width() - *KLROffset /KDenominator * 2 ) - { - visualBeg = visualEnd - stride + 1; - break; - } - } - if ( iMiniQwertyZhuyin && - iAbsoluteBuffer->Length( ) > 0 && - visualBeg >= iPhraseArray->Count() ) - { - while ( iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KLeftBracket ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark1 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark2 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark3 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark4 ) != 0 && - iAbsoluteBuffer->Mid( visualBeg, 1 ).Compare( KToneMark5 ) != 0 ) - { - visualBeg++; - // visualEnd++; - } - } - *iVisualBuffer = iAbsoluteBuffer->Mid( visualBeg, visualEnd - - visualBeg ); - this->iOffset = visualBeg; - } - } - } - -// --------------------------------------------------------- -// Calculate the underline indexes and highlight indexes according to the -// absolute value. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateVisualIndex() - { - for (TInt i = 0; i < iArray.Count(); i++ ) - { - TInt left = iArray[i]->iBegin - iOffset; - TInt right = iArray[i]->iEnd - iOffset; - if ( - left < 0 && - right < 0 - || - left> iVisualBuffer->Length() - 1 && - right> iVisualBuffer->Length() - 1 - ) - { - left = -1; - right = -1; - } - else - { - if ( left < 0 ) - { - left = 0; - } - if ( right> iVisualBuffer->Length() - 1 ) - { - right = iVisualBuffer->Length() - 1; - } - } - if ( iArray[i]->iStyle == CAknFepUICtrlEEPControl::EHighlight ) - { - iEditableEntryPane->SetHighlight( left, right ); - } - else if ( iArray[i]->iStyle == CAknFepUICtrlEEPControl::EUnderline ) - { - iEditableEntryPane->SetUnderline( left, right ); - } - } - } - -// --------------------------------------------------------- -// layout the background frames. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::CalculateFrameRects( TRect& aOuterRect, - TRect& aInnerRect ) const - { - TRect windowRect = CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData( EPopupRectEEP )); - TAknLayoutRect eepFirstHorizLineLayoutRect = CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( EEEPFirstHorizLine )); - TRect eepFirstHorizLineRect = eepFirstHorizLineLayoutRect.Rect(); - TInt rectHeight = eepFirstHorizLineRect.iBr.iY - windowRect.iTl.iY + 2; - TInt rectWidth = windowRect.Width( ); - windowRect.iTl.iX = 0; - windowRect.iTl.iY = 0; - windowRect.SetHeight( rectHeight ); - windowRect.SetWidth( rectWidth ); - - TAknLayoutRect topLeft; - topLeft.LayoutRect( windowRect, - SkinLayout::Submenu_skin_placing_Line_2() ); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect( windowRect, - SkinLayout::Submenu_skin_placing_Line_5() ); - - aOuterRect = TRect( topLeft.Rect().iTl, bottomRight.Rect().iBr ); - aInnerRect = TRect( topLeft.Rect().iBr, bottomRight.Rect().iTl ); - } - -// --------------------------------------------------------- -// Return kestroke array. -// --------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUICtrlPinyinEEP::KeystrokeArray() - { - return iKeystrokeArray; - } - -// --------------------------------------------------------- -// Return kescode array. -// --------------------------------------------------------- -// -RArray* CAknFepUICtrlPinyinEEP::KeycodeArray() - { - return &iKeycodeArray; - } - -// --------------------------------------------------------- -// Return kescode array. -// --------------------------------------------------------- -// -RArray* CAknFepUICtrlPinyinEEP::PhraseKeycodeArray() - { - return &iPhraseKeycodeArray; - } - -// --------------------------------------------------------- -// Return show kestroke array. -// --------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUICtrlPinyinEEP::ShowKeystrokeArray() - { - return iShowKeystrokeArray; - } - -// --------------------------------------------------------- -// Return choose chinese charater array. -// --------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUICtrlPinyinEEP::PhraseArray() - { - return iPhraseArray; - } - -// --------------------------------------------------------- -// Return choose chinese charater show keystroke array. -// --------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUICtrlPinyinEEP::PhraseShowKeyStrokeArray() - { - return iPhraseShowKeyStrokeArray; - } -// --------------------------------------------------------- -// Return temp array. -// --------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUICtrlPinyinEEP::TempArray() - { - return iTempArray; - } - -// --------------------------------------------------------- -// Reset private member viariable array. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::ResetAllArray() - { - iKeystrokeArray->Reset(); - iKeystrokeArray->Compress(); - iKeycodeArray.Reset(); - iShowKeystrokeArray->Reset(); - iShowKeystrokeArray->Compress(); - iPhraseArray->Reset(); - iPhraseArray->Compress(); - iPhraseKeycodeArray.Reset(); - iPhraseShowKeyStrokeArray->Reset(); - iPhraseShowKeyStrokeArray->Compress(); - iTempArray->Reset(); - iTempArray->Compress(); - iAllValidFlag = 1; - iInvalidKeystrokeIndex = 0; - iCandidateRefreshFlag = 0; - iDelimiterCount = 0; - } - -// --------------------------------------------------------- -// change state flag. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetChangeState( TBool aState ) - { - iChangeFlag = aState; - } - -// --------------------------------------------------------- -// check change state flag. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::IsChangeState() - { - return iChangeFlag; - } - -// --------------------------------------------------------- -// Set auto change state flag. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetAutoChangeStateFlag( TBool aState ) - { - iAutoChangeFlag = aState; - } - -// --------------------------------------------------------- -// Set auto change state flag. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::GetAutoChangeStateFlag() - - { - return iAutoChangeFlag; - } - -// --------------------------------------------------------- -// Set all the keystroke valid flag. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetAllValidFlag( TBool aState ) - { - iAllValidFlag = aState; - } - -// --------------------------------------------------------- -// Set all the keystroke valid flag. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::GetAllValidFlag() - { - return iAllValidFlag; - } - -// --------------------------------------------------------- -// Set is Phrase creation. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetPhraseCreationFlag( TBool aState ) - { - iPhraseCreation = aState; - } - -// --------------------------------------------------------- -// Is Phrase creation. -// --------------------------------------------------------- -// -TBool CAknFepUICtrlPinyinEEP::GetPhraseCreationFlag() - { - return iPhraseCreation; - } - -// --------------------------------------------------------- -// Set the keystroke invalid index. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetInvalidIndex( TInt aInvalidIndex ) - { - iInvalidKeystrokeIndex = aInvalidIndex; - } - -// --------------------------------------------------------- -// Get all the invalid keystroke index. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetInvalidIndex() - { - return iInvalidKeystrokeIndex; - } - -// --------------------------------------------------------- -// Set Phrase Candidate state need refresh UI flag. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCandidateRefreshFlag( TBool aState ) - { - iCandidateRefreshFlag = aState; - } - -// --------------------------------------------------------- -// Get Phrase Candidate state need refresh UI flag. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetCandidateRefreshFlag() - { - return iCandidateRefreshFlag; - } - -// --------------------------------------------------------- -// Set the delimiter count of keystroke. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetDelimiterCount( TInt aCount ) - { - iDelimiterCount = aCount; - } - -// --------------------------------------------------------- -// Get the delimiter count of keystroke. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetDelimiterCount() - { - return iDelimiterCount; - } - -// --------------------------------------------------------- -// Get current cba resource id. -// --------------------------------------------------------- -// -TInt CAknFepUICtrlPinyinEEP::GetCurrentCBAResID() - { - return iCurrentCBAResId; - } - -// --------------------------------------------------------- -// Set current cba resource id. -// --------------------------------------------------------- -// -void CAknFepUICtrlPinyinEEP::SetCurrentCBAResID( TInt aResourceId ) - { - iCurrentCBAResId = aResourceId; - } - -void CAknFepUICtrlPinyinEEP::SetEffictiveLength( TInt aLength ) - { - iEffictiveLength = aLength; - } - -TInt CAknFepUICtrlPinyinEEP::GetEffictiveLength() - { - return iEffictiveLength; - } - -void CAknFepUICtrlPinyinEEP::AddEffictiveLength() - { - iEffictiveLength++; - } - -void CAknFepUICtrlPinyinEEP::DecEffictiveLength() - { - iEffictiveLength--; - } - -void CAknFepUICtrlPinyinEEP::SetNeedClearDeliberateSelection( TBool aNeedClearDeliberateSelection ) - { - iNeedClearDeliberateSelection = aNeedClearDeliberateSelection; - } - -TBool CAknFepUICtrlPinyinEEP::NeedClearDeliberateSelection() - { - return iNeedClearDeliberateSelection; - } - -// End of file - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/aknfepuilayoutdatamgr.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/aknfepuilayoutdatamgr.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,280 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation for phrase creation layout data managment - * -*/ - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include - -#include "aknfepuilayoutdatamgr.h" - -// ----------------------------------------------------------------------------- -// CAknFepUiLayoutDataMgr::GetPinyinPhraseCreationContainerHeight() -// Get the pinyin phrase creation container Height data -// ----------------------------------------------------------------------------- -// -CAknFepUiLayoutDataMgr* CAknFepUiLayoutDataMgr::NewL() - { - CAknFepUiLayoutDataMgr* self = new(ELeave)CAknFepUiLayoutDataMgr(); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( ); // self - return self; - } - -CAknFepUiLayoutDataMgr::CAknFepUiLayoutDataMgr() - { - } - -void CAknFepUiLayoutDataMgr::ConstructL() - { - ReadLafInfo(); - } - -void CAknFepUiLayoutDataMgr::ReadLafInfo() - { - // Screen - TRect rect; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, rect); - iScreenSize = rect.Size(); - - iLandScape = iScreenSize.iWidth < iScreenSize.iHeight ? EFalse : ETrue; - - TAknWindowLineLayout layoutLineEntry, layoutLineCandidate, layoutLineEEP; - TAknLayoutRect layoutRectEntry, layoutRectCandidate, layoutRectEEP; - - layoutLineEntry = AKN_LAYOUT_WINDOW_popup_fep_china_uni_window(0,0); - layoutRectEntry.LayoutRect(iScreenSize,layoutLineEntry); - iPopupRectEntry = layoutLineEntry.Rect(); - iPopupHeightEntry = layoutLineEntry.iH; - - //PinyinPopupWindowRect - iEntryPaneWindowLine = AKN_LAYOUT_WINDOW_fep_china_uni_entry_pane; - iLayoutEntryItem = AKN_LAYOUT_WINDOW_fep_entry_item_pane; - - iLayoutLineRectEntryPane.LayoutRect(iPopupRectEntry, iEntryPaneWindowLine); - - layoutLineCandidate = AKN_LAYOUT_WINDOW_popup_fep_china_uni_window(0,1); - layoutRectCandidate.LayoutRect(iScreenSize,layoutLineCandidate); - iPopupRectCandidate = layoutLineCandidate.Rect(); - - layoutLineEEP = AKN_LAYOUT_WINDOW_popup_fep_china_uni_window(0,2);//need updated - layoutRectEEP.LayoutRect(iScreenSize,layoutLineEEP); - iPopupRectEEP = layoutLineEEP.Rect(); - iPopupHeightEEP = layoutLineEEP.iH; - - - iCandidatePaneWindowLine = AKN_LAYOUT_WINDOW_fep_china_uni_candidate_pane( 0 ); - - //Candidate - - iCandidatePaneTextLine = AKN_LAYOUT_TEXT_Chinese_universal_FEP_candidate_pane_texts_Line_1; - iOrdinalCandidateTextLayout = AKN_LAYOUT_TEXT_Chinese_universal_FEP_candidate_pane_texts_Line_3; - iCandidateWindowLine1 = AKN_LAYOUT_WINDOW_Chinese_universal_FEPcandidate_pane_elements_Line_1; - iCandidateWindowLine2 = AKN_LAYOUT_WINDOW_Chinese_universal_FEPcandidate_pane_elements_Line_2; - iCandidateWindowLine3 = AKN_LAYOUT_WINDOW_Chinese_universal_FEPcandidate_pane_elements_Line_3; - iCandidateWindowLine4 = AKN_LAYOUT_WINDOW_Chinese_universal_FEPcandidate_pane_elements_Line_4; - - iLayoutCandidateItem = AKN_LAYOUT_WINDOW_fep_candidate_item_pane; - - //EEP - TAknWindowComponentLayout EEPWindowComponentLayout = AknLayoutScalable_Avkon::fep_china_uni_eep_pane(); - iEEPWindowLayout = EEPWindowComponentLayout.LayoutLine(); - TAknLayoutRect EEPLayout; - EEPLayout.LayoutRect( iPopupRectEEP, iEEPWindowLayout ); - iEEPWindowRect = EEPLayout.Rect(); - // - iRectCoverMainPaneInputEntry.LayoutRect(iPopupRectEntry, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_1(iPopupRectEntry)); - iRectFirstShadowInputEntry.LayoutRect(iPopupRectEntry, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_2(iPopupRectEntry)); - iRectOutlineFrameInputEntry.LayoutRect(iPopupRectEntry, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_3(iPopupRectEntry)); - iRectInsideAreaInputEntry.LayoutRect(iPopupRectEntry, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_4(iPopupRectEntry)); - - iRectCoverMainPaneInputCandidate.LayoutRect(iPopupRectCandidate, - AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_1(iPopupRectCandidate)); - iRectFirstShadowInputCandidate.LayoutRect(iPopupRectCandidate, - AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_2(iPopupRectCandidate)); - iRectOutlineFrameInputCandidate.LayoutRect(iPopupRectCandidate, - AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_3(iPopupRectCandidate)); - iRectInsideAreaInputCandidate.LayoutRect(iPopupRectCandidate, - AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_4(iPopupRectCandidate)); - - iRectCoverMainPaneInputEEP.LayoutRect(iPopupRectEEP, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_1(iPopupRectEEP)); - iRectFirstShadowInputEEP.LayoutRect(iPopupRectEEP, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_2(iPopupRectEEP)); - iRectOutlineFrameInputEEP.LayoutRect(iPopupRectEEP, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_3(iPopupRectEEP)); - iRectInsideAreaInputEEP.LayoutRect(iPopupRectEEP, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_4(iPopupRectEEP)); - - //HorizLine - - iEntryHorizLineWindow = AknLayoutScalable_Avkon::popup_fep_china_uni_window_g(0,0).LayoutLine(); - iEEPSecondHorizLineWindow = AknLayoutScalable_Avkon::popup_fep_china_uni_window_g(0,1).LayoutLine(); - iEEPFirstHorizLineWindow = AknLayoutScalable_Avkon::popup_fep_china_uni_window_g(1,0).LayoutLine(); - iHorizLine.LayoutRect(iPopupRectEntry, iEntryHorizLineWindow); - iEEPFirstHorizLine.LayoutRect(iPopupRectEEP, iEEPFirstHorizLineWindow); - iEEPSecondHorizLine.LayoutRect(iPopupRectEEP, iEEPSecondHorizLineWindow); - - iEntryPaneRect = iLayoutLineRectEntryPane.Rect( ); - iEntryTextLayout - = AKN_LAYOUT_TEXT_Chinese_universal_FEP_entry_pane_texts_Line_1(0); - TAknLayoutRect labelRect; - labelRect.LayoutRect( iEntryPaneRect, - AKN_LAYOUT_WINDOW_fep_entry_item_pane ); - iLayoutInputPaneText.LayoutText( labelRect.Rect( ), iEntryTextLayout ); - - TRect windowRect = layoutRectEntry.Rect(); - TInt height = windowRect.Height(); - TInt width = windowRect.Width(); - windowRect.iTl.iY = 0; - windowRect.iTl.iX = 0; - windowRect.SetHeight(height); - windowRect.SetWidth(width); - - TAknLayoutRect layoutLineRectEntryPane; - layoutLineRectEntryPane.LayoutRect(windowRect, iEntryPaneWindowLine); - TRect entryPane = layoutLineRectEntryPane.Rect(); - // left and right arrow - TAknWindowLineLayout leftArrowLayoutLine, rithgArrowLayoutLine; - leftArrowLayoutLine = AKN_LAYOUT_WINDOW_Chinese_universal_FEP_entry_pane_elements_Line_1; - iIndiFepArrowLeft.LayoutRect(entryPane,leftArrowLayoutLine); - rithgArrowLayoutLine = AKN_LAYOUT_WINDOW_Chinese_universal_FEP_entry_pane_elements_Line_2; - iIndiFepArrowRight.LayoutRect(entryPane,rithgArrowLayoutLine); - - iRectCoverMainPaneInput.LayoutRect(windowRect, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_1(windowRect)); - iRectFirstShadowInput.LayoutRect(windowRect, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_2(windowRect)); - iRectOutlineFrameInput.LayoutRect(windowRect, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_3(windowRect)); - iRectInsideAreaInput.LayoutRect(windowRect, AKN_LAYOUT_WINDOW_Chinese_universal_FEP_pop_up_window_graphics_Line_4(windowRect)); - - //eep text - TAknTextComponentLayout textLayout = AknLayoutScalable_Avkon::fep_china_uni_eep_pane_t1(); - iEEPTextLine = textLayout.LayoutLine(); - TAknLayoutText eepTextLayout; - eepTextLayout.LayoutText( iEEPWindowRect, iEEPTextLine ); - iEEPTextColor = eepTextLayout.Color(); - const CFont* font = AknLayoutUtils::FontFromId(iEEPTextLine.FontId()); - iEEPCursorHeight = font->HeightInPixels(); - } - -TAny* CAknFepUiLayoutDataMgr::RequestData(TInt aDataType) - { - switch ( aDataType ) - { - case EPopupRectEntry: - return &iPopupRectEntry; - case EPopupRectCandatate: - return &iPopupRectCandidate; - case EPopupRectEEP: - return &iPopupRectEEP; - case EPopupHeightEntry: - return &iPopupHeightEntry; - case EPopupHeightEEP: - return &iPopupHeightEEP; - case EEntryPaneWindowLine: - return &iEntryPaneWindowLine; - case ECandidatePaneWindowLine: - return &iCandidatePaneWindowLine; - case ECandidatePaneTextLine: - return &iCandidatePaneTextLine; - case ECandidateWindowLine1: - return &iCandidateWindowLine1; - case ECandidateWindowLine2: - return &iCandidateWindowLine2; - case ECandidateWindowLine3: - return &iCandidateWindowLine3; - case ECandidateWindowLine4: - return &iCandidateWindowLine4; - case ELayoutCandidateItem: - return &iLayoutCandidateItem; - case ELayoutEntryItem: - return &iLayoutEntryItem; - case EOrdinalCandidateTextLayout: - return &iOrdinalCandidateTextLayout; - case EEEPWindowRect: - return &iEEPWindowRect; - case EEEPWindowLayout: - return &iEEPWindowLayout; - case ERectCoverMainPaneInputEntry: - return &iRectCoverMainPaneInputEntry; - case ERectFirstShadowInputEntry: - return &iRectFirstShadowInputEntry; - case ERectOutlineFrameInputEntry: - return &iRectOutlineFrameInputEntry; - case ERectInsideAreaInputEntry: - return &iRectInsideAreaInputEntry; - case ERectCoverMainPaneInputCandidate: - return &iRectCoverMainPaneInputCandidate; - case ERectFirstShadowInputCandidate: - return &iRectFirstShadowInputCandidate; - case ERectOutlineFrameInputCandidate: - return &iRectOutlineFrameInputCandidate; - case ERectInsideAreaInputCandidate: - return &iRectInsideAreaInputCandidate; - case ERectCoverMainPaneInputEEP: - return &iRectCoverMainPaneInputEEP; - case ERectFirstShadowInputEEP: - return &iRectFirstShadowInputEEP; - case ERectOutlineFrameInputEEP: - return &iRectOutlineFrameInputEEP; - case ERectInsideAreaInputEEP: - return &iRectInsideAreaInputEEP; - case ELayoutInputPaneText: - return &iLayoutInputPaneText; - case ELayoutLineRectEntryPane: - return &iLayoutLineRectEntryPane; - case EEntryTextLayout: - return &iEntryTextLayout; - case EEntryPaneRect: - return &iEntryPaneRect; - case EIndiFepArrowLeft: - return &iIndiFepArrowLeft; - case EIndiFepArrowRight: - return &iIndiFepArrowRight; - case ERectCoverMainPaneInput: - return &iRectCoverMainPaneInput; - case ERectFirstShadowInput: - return &iRectFirstShadowInput; - case ERectOutlineFrameInput: - return &iRectOutlineFrameInput; - case ERectInsideAreaInput: - return &iRectInsideAreaInput; - case EEEPTextLine: - return &iEEPTextLine; - case EEEPCursorHeight: - return &iEEPCursorHeight; - case EHorizLine: - return &iHorizLine; - case EEEPFirstHorizLine: - return &iEEPFirstHorizLine; - case EEEPSecondHorizLine: - return &iEEPSecondHorizLine; - case EEntryHorizLineWindow: - return &iEntryHorizLineWindow; - case EEEPSecondHorizLineWindow: - return &iEEPSecondHorizLineWindow; - case EEEPFirstHorizLineWindow: - return &iEEPFirstHorizLineWindow; - case EEEPTextColor: - return &iEEPTextColor; - default: - break; - } - return NULL; - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/insertionpoint.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/insertionpoint.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,246 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#include "insertionpoint.h" -#include "aknfepchineseuidataconv.h" - -//Cursor position offset -const TInt KCursorPosCorrectionX = 0; -//define the timer -const TInt KTimer = 500000; - -// --------------------------------------------------------- -// Cancel and destroy. -// --------------------------------------------------------- -CInsertionPoint::~CInsertionPoint() - { - Cancel(); // Cancel any request, if outstanding - iTimer.Close(); // Destroy the RTimer object - // Delete instance variables if any - } - -// --------------------------------------------------------- -// NewL function. -// --------------------------------------------------------- -CInsertionPoint* CInsertionPoint::NewL( CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CInsertionPoint* self = CInsertionPoint::NewLC( aLafDataMgr ); - CleanupStack::Pop( self ); // self; - return self; - } - -// --------------------------------------------------------- -// NewLC funciton. -// --------------------------------------------------------- -CInsertionPoint* CInsertionPoint::NewLC( CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CInsertionPoint* self = new ( ELeave ) CInsertionPoint( aLafDataMgr ); - CleanupStack::PushL( self ) ; - self->ConstructL(); - return self; - } - -// --------------------------------------------------------- -// Set iRefreshObserver member. -// --------------------------------------------------------- -void CInsertionPoint::SetRefreshObserver(MRefreshObserver* aObserver) - { - iRefreshObserver = aObserver; - } - -// --------------------------------------------------------- -// Set the position of cursor. -// --------------------------------------------------------- -void CInsertionPoint::SetPosition(TInt aOffSet) - { - iOffSet = aOffSet; - isVisible = ETrue; - iRefreshObserver->Refresh(); - TPoint point(iTextRect.iTl.iX -1 + iOffSet + KCursorPosCorrectionX, - iCursorRect.iTl.iY); - iCursorRect = TRect(point, TSize(iWidth, iHeight) ) ; - } - -// --------------------------------------------------------- -// Set the rect where visual text will be displayed. -// --------------------------------------------------------- -void CInsertionPoint::SetTextRect(TRect aRect) - { - iTextRect = aRect; - TPoint point(iTextRect.iTl.iX + iOffSet + KCursorPosCorrectionX, - iCursorRect.iTl.iY); - iCursorRect = TRect(point, TSize(iWidth, iHeight) ) ; - if ( 0 == iHeight ) - { - iHeight = - CAknFepChineseUIDataConv::AnyToInt( iLafDataMgr->RequestData(EEEPCursorHeight)); - iWidth = 1; - } - } - -// --------------------------------------------------------- -// Set the height of cursor. -// --------------------------------------------------------- -void CInsertionPoint::SetHeight() - { - TPoint point(iTextRect.iTl.iX + iOffSet + KCursorPosCorrectionX, - iTextRect.iTl.iY - 1 + iTextRect.Height() / 2 - iHeight / 2); - iCursorRect = TRect(point, TSize(iWidth, iHeight) ) ; - } - -// --------------------------------------------------------- -// Draw the cursor on the screen. -// --------------------------------------------------------- -void CInsertionPoint::Draw(CWindowGc& aGc) - { - if (isActive) - { - if ( !this->isVisible) - { - return; - } - else - { - aGc.SetBrushStyle(CGraphicsContext::ESolidBrush) ; - aGc.SetBrushColor(iActiveBrushColor) ; - aGc.SetPenColor(iActivePenColor) ; - aGc.SetPenStyle(CGraphicsContext::ESolidPen) ; - aGc.SetPenSize(TSize( 1, 1) ) ; - aGc.DrawRect(iCursorRect) ; - aGc.SetBrushStyle(CGraphicsContext::ENullBrush) ; - } - } - else - { - aGc.SetBrushStyle(CGraphicsContext::ESolidBrush) ; - aGc.SetBrushColor(iInactiveBrushColor) ; - aGc.SetPenColor(iInactivePenColor) ; - aGc.SetPenStyle(CGraphicsContext::ESolidPen) ; - aGc.SetPenSize(TSize( 1, 1) ) ; - aGc.DrawRect(iCursorRect) ; - aGc.SetBrushStyle(CGraphicsContext::ENullBrush) ; - } - } - -// --------------------------------------------------------- -// Active the cursor into active state. -// --------------------------------------------------------- -void CInsertionPoint::Active() - { - Cancel(); - iTimer.Cancel(); - iTimer.After(iStatus, KTimer); // Set for 1 sec later - SetActive(); // Tell scheduler a request is active - isActive = ETrue; - this->iRefreshObserver->Refresh(); - } - -// --------------------------------------------------------- -// Deactive the cursor into deactive state. -// --------------------------------------------------------- -void CInsertionPoint::Deactive() - { - Cancel(); - isActive = EFalse; - this->iRefreshObserver->Refresh(); - } - -// --------------------------------------------------------- -// Insertion Point. -// --------------------------------------------------------- -CInsertionPoint::CInsertionPoint( CAknFepUiLayoutDataMgr* aLafDataMgr ) : - CActive(EPriorityStandard) - { - iState = EUninitialized; - isVisible = ETrue; - iHeight = 0; - iWidth = 0; - iOffSet = 0; - isActive = EFalse; - iRefreshObserver = NULL; - iLafDataMgr = aLafDataMgr; - } - -// --------------------------------------------------------- -// Two-phrase constructor. -// --------------------------------------------------------- -void CInsertionPoint::ConstructL() - { - User::LeaveIfError(iTimer.CreateLocal() ) ; // Initialize timer - CActiveScheduler::Add( this); // Add to scheduler - iActiveBrushColor = KRgbBlack; - iActivePenColor = KRgbBlack; - iInactiveBrushColor = KRgbGray; - iInactivePenColor = KRgbGray; - } - -// --------------------------------------------------------- -// The callback function used by CActiveScheduler. -// --------------------------------------------------------- -void CInsertionPoint::RunL() - { - if (iState == EUninitialized) - { - // Do something the first time RunL() is called - iState = EInitialized; - } - else - if (iState != EError) - { - // Do something - isVisible = isVisible ? EFalse : ETrue; - if (iRefreshObserver) - { - this->iRefreshObserver->Refresh(); - } - } - - iTimer.Cancel(); - iTimer.After( iStatus, KTimer ) ; // Set for 1 sec later - SetActive(); // Tell scheduler a request is active - } - -// --------------------------------------------------------- -// How to cancel me. -// --------------------------------------------------------- -void CInsertionPoint::DoCancel() - { - iTimer.Cancel(); - } - -// --------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------- -TInt CInsertionPoint::RunError(TInt aError) - { - return aError; - } - -// --------------------------------------------------------- -// Start the cursor with glint if actived or with gray color if deactived. -// --------------------------------------------------------- -void CInsertionPoint::StartL( TTimeIntervalMicroSeconds32 aDelay ) - { - Cancel(); // Cancel any request, just to be sure - iState = EUninitialized; - iTimer.Cancel(); - iTimer.After(iStatus, aDelay) ; // Set for later - SetActive(); // Tell scheduler a request is active - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/bwins/aknfepuiinterfaceu.def --- a/fep/aknfep/UiPlugins/AknFepUiInterface/bwins/aknfepuiinterfaceu.def Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -EXPORTS - ??1CAknFepUIInterface@@UAE@XZ @ 1 NONAME ; CAknFepUIInterface::~CAknFepUIInterface(void) - ?DynInitMenuBarL@MAknFepUiInterfaceMenuObserver@@UAEXHPAVCAknFepUiInterfaceMenuBar@@@Z @ 2 NONAME ; void MAknFepUiInterfaceMenuObserver::DynInitMenuBarL(int, class CAknFepUiInterfaceMenuBar *) - ?DynInitMenuPaneL@MAknFepUiInterfaceMenuObserver@@UAEXHPAVCAknFepUiInterfaceMenuPane@@@Z @ 3 NONAME ; void MAknFepUiInterfaceMenuObserver::DynInitMenuPaneL(int, class CAknFepUiInterfaceMenuPane *) - ?NewL@CAknFepUIInterface@@SAPAV1@XZ @ 4 NONAME ; class CAknFepUIInterface * CAknFepUIInterface::NewL(void) - ??1CAknFepIndicator@@UAE@XZ @ 5 NONAME ; CAknFepIndicator::~CAknFepIndicator(void) - ?SetCopyMode@CAknFepIndicator@@QAEXH@Z @ 6 NONAME ; void CAknFepIndicator::SetCopyMode(int) - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/eabi/aknfepuiinterfaceu.def --- a/fep/aknfep/UiPlugins/AknFepUiInterface/eabi/aknfepuiinterfaceu.def Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -EXPORTS - _ZN16CAknFepIndicator11SetCopyModeEi @ 1 NONAME - _ZN16CAknFepIndicatorD0Ev @ 2 NONAME - _ZN16CAknFepIndicatorD1Ev @ 3 NONAME - _ZN16CAknFepIndicatorD2Ev @ 4 NONAME - _ZN18CAknFepUIInterface4NewLEv @ 5 NONAME - _ZN18CAknFepUIInterfaceD0Ev @ 6 NONAME - _ZN18CAknFepUIInterfaceD1Ev @ 7 NONAME - _ZN18CAknFepUIInterfaceD2Ev @ 8 NONAME - _ZN30MAknFepUiInterfaceMenuObserver15DynInitMenuBarLEiP25CAknFepUiInterfaceMenuBar @ 9 NONAME - _ZN30MAknFepUiInterfaceMenuObserver16DynInitMenuPaneLEiP26CAknFepUiInterfaceMenuPane @ 10 NONAME - _ZTI16CAknFepIndicator @ 11 NONAME ; ## - _ZTI18CAknFepUIInterface @ 12 NONAME ; ## - _ZTI30MAknFepUiInterfaceMenuObserver @ 13 NONAME ; ## - _ZTV16CAknFepIndicator @ 14 NONAME ; ## - _ZTV18CAknFepUIInterface @ 15 NONAME ; ## - _ZTV30MAknFepUiInterfaceMenuObserver @ 16 NONAME ; ## - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/group/AknFepUiInterface.mmp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/group/AknFepUiInterface.mmp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* MakMake Project file. -* -*/ - - - - - - - - - - - - -#include -#include -#include - -TARGET aknfepuiinterface.dll -TARGETTYPE DLL - -UID 0x1000008D 0x10285778 -CAPABILITY All -Tcb - -VENDORID VID_DEFAULT - - -USERINCLUDE ../inc . -USERINCLUDE ../../../inc - -MW_LAYER_SYSTEMINCLUDE - -SYSTEMINCLUDE ../inc -SYSTEMINCLUDE ../../../../../inc - -SOURCEPATH ../src - -SOURCE AknFepUiInterface.cpp -SOURCE AknFepIndicator.cpp -SOURCE AknFepUiMenus.cpp - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY eikcore.lib - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/group/bld.inf --- a/fep/aknfep/UiPlugins/AknFepUiInterface/group/bld.inf Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Bldmake component description file. -* -*/ - - - - - - - - - - - - -#include - -PRJ_EXPORTS -// specify the source file followed by its destination here -// copy will be used to copy the source file to its destination -// If there's no destination then the source file will be copied -// to the same name in /epoc32/include - -../inc/aknfepindicator.h |../../../../../inc/aknfepindicator.h -../inc/AknFepUICtrlCandidatePane.h |../../../../../inc/AknFepUICtrlCandidatePane.h -../inc/AknFepUICtrlCandidatePaneInterface.h |../../../../../inc/AknFepUICtrlCandidatePaneInterface.h -../inc/AknFepUiCtrlContainerChinese.h |../../../../../inc/AknFepUiCtrlContainerChinese.h -../inc/AknFepUICtrlContainerJapanese.h |../../../../../inc/AknFepUICtrlContainerJapanese.h -../inc/AknFepUICtrlInputPane.h |../../../../../inc/AknFepUICtrlInputPane.h -../inc/AknFepUICtrlPinyinPopup.h |../../../../../inc/AknFepUICtrlPinyinPopup.h -../inc/AknFepUIStylusPopupMenu.h |../../../../../inc/AknFepUIStylusPopupMenu.h -../inc/aknfepuictrleditpane.h |../../../../../inc/aknfepuictrleditpane.h -#ifdef RD_INTELLIGENT_TEXT_INPUT -../inc/AknFepCandidatePopup.h |../../../../../inc/AknFepCandidatePopup.h -../inc/AknFepCandidatePopupCallback.h |../../../../../inc/AknFepCandidatePopupCallback.h -../inc/AknFepUiWordPopupContent.h |../../../../../inc/AknFepUiWordPopupContent.h -#endif //RD_INTELLIGENT_TEXT_INPUT - -PRJ_MMPFILES -// specify the .mmp files required for building the important component releasables -// note that you should specify any .mmp files for test programs further down the file. -// -// Use C++ style #defines to denote that a component is only built for a particular platform - -// ../group/aknfepuiinterface.mmp This is now built from aknfep's main bld.inf. - - - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepCandidatePopup.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepCandidatePopup.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: A non-focusing popup menu to show candidates. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_CANDIDATE_POPUP_H -#define __AKN_FEP_CANDIDATE_POPUP_H - -// MACROS -//To congigure the number of candidates in list -const TInt KPredictiveListCandidateMax = 16; - -// CLASS DECLARATION -class MAknFepCandidatePopup - { -public: // methods - - /** - * destructor - */ - virtual ~MAknFepCandidatePopup() = 0; - - /** - * Getter for the currently active word - * @return The currently active word as pointer descriptor - */ - virtual TPtrC ActiveWord() const = 0; - - /** - * Getter for the exact word (the word with ordinal 0) - * @return The exact word as pointer descriptor. - */ - virtual TPtrC ExactWord() const = 0; - - /** - * Makes the pop-up selection list visible and blocks until the dialog has been dismissed. - * @param aInlineEditorRect Tells the place of the inline editor. If possible, the popup is opened - * so that it does not hide the inline editor. - * @param aSelectedIdx Output argument for the selected index. - * @param aLastKeyEvent The last key event received by the popup. On return this is the event - * which closed the popup. - * @param aRightToLeftLanguage Direction of the candidate language.ETrue is right to left. EFalse otherwise - * @param aKeyboard Keyboard type in use (TPtiKeyboardType) - * - * @return The command id used to close the window. EAknFepSoftkeySpell, EAknSoftkeyCancel, or EAknSoftkeySelect - */ - virtual TInt ExecutePopupL( const TRect& aInlineEditorRect, TInt& aSelectedIdx, TKeyEvent& aLastKeyEvent, TBool aRightToLeftLanguage, TInt aKeyboard ) = 0; - - /** - * Function called when the dialog is dismissed. Among other things, this hides the dialog - * and deblocks the thread. Unlike in the base class, the instance is not destroyed here. - * The same popup instance can be reused by calling ExecutePopupL() again. - * @param aAccept EFalse if the dialog was cancelled. - * ETrue otherwise. - */ - virtual void AttemptExitL(TBool aAccept) = 0; - - /** - * Removes the focus from the candidate list and makes the editor to be in focus. - */ - virtual void UnFocus() = 0; - /** - * Changes the position where the candidate list is shown. The position of the candidate list is choosen by the - * candidate list itself but can be controlled by the inline text rectangle. - * @param aRect The inline text rect. - */ - virtual void ShowAtNewPosition(TRect aRect) = 0; - - /** - * Revert back the candidate focus, and add the candidate list to the control stack reducing - * the control priority. Usually, this function can be called after void UnFocus(). - */ - virtual void SetFocusAddStackReducePriorityL() = 0; - - - }; - -#endif // __AKN_FEP_CANDIDATE_POPUP_ H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepCandidatePopupCallback.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepCandidatePopupCallback.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: A callback interface for the candidate popup -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_CANDIDATE_POPUP_CALLBACK_H -#define __AKN_FEP_CANDIDATE_POPUP_CALLBACK_H - -class MAknFepCandidatePopupCallback - { -public: - /** - * Callback the get the current set of candidates - * @param aArray An output parameter for the candidate strings - * @param aActiveIdx An output parameter for the index of the - * currently active candidate - */ - virtual void GetCandidatesL( CDesCArray& aArray, TInt& aActiveIdx ) = 0; - - /** - * Callback get current position of candidate list. - * @param aRect New posion of candidate list - */ - virtual void GetUpdateCandidatePositionL(TRect& aRect) = 0; - }; - -#endif // __AKN_FEP_CANDIDATE_POPUP_CALLBACK_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepIndicator.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepIndicator.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepIndicator definition. -* -*/ - - - - - - - - - - - - -#ifndef AKNFEPIND_H -#define AKNFEPIND_H - -#include -#include //MAknEditingStateIndicator - -class CAknNavigationDecorator; -class CAknNavigationControlContainer; -class CEikonEnv; - -class CAknFepIndicator : public CBase, public MAknEditingStateIndicator - { -public: - IMPORT_C ~CAknFepIndicator(); - -public: // new functions - /** - * Sets flag that copy mode is ON - */ - IMPORT_C void SetCopyMode(TBool aCopyMode); - -protected: - TBool iCopyMode; - TBool iCopyModeChanged; - }; - -#endif // AknFepIND_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlCandidatePane.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlCandidatePane.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,305 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlCandidatePane definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_CANDIDATE_PANE_H__ -#define __AKN_FEP_CANDIDATE_PANE_H__ - -#include -#include - -#include "AknFepUiCtrlContainerChinese.h" - -/** -* TPage holds the start index, end index and start position in buffer of every display page -*/ -struct TPage - { - TInt iStartIndex; - TInt iEndIndex; - }; - -/** - * Pane which displays the Chinese Candidates. - */ -class MAknFepUICtrlCandidatePane - { -public: - enum - { - EOneCandidate = 1, - EMaxCandidates = 10, - EMaxPages = 10, - EPhraseLength = 10 - }; - /** - * each candidate can be in a certain mode, which may affect its layout. Note - * that only stroke is needed at this time (for components), but more modes could be added - * later if the LAF spec changes. - */ - enum TCandidateMode - { - ECandidateModeNormal, - ECandidateModeStroke - }; -public: - /** - * Allows the client to set a descriptor pointer into an existing buffer of - * data, avoiding unnecessary copying of data. - *

Note that if the buffer contains less characters than the current - * visible count, then the remaining characters will not be displayed. - *

Note also that if the current selection falls outside the range - * of the size of the new buffer, it will be made not visible. - * However, the current highlighted state remains, so if the selection - * is set once more to a valid entry (or if the buffer is set to a length that - * includes the currently selected position), and the highlight is still enabled, - * the highlight will reappear. - * - * @param aBufferPtr descriptor that contains the candidates for display, - * could be a pointer into a subset of a larger descriptor - * that contains all the candidates. Note that only the - * first EMaxCandidates of aBuffer will be used. - * Length must be > 0. - */ - virtual void SetCandidateBuffer(const TDesC& aBuffer) = 0; - - /** - * This function sets the highlighted status of the pane for rendering purposes. - * If the Pane is highlighted it displays the current selected Candidate, - * plus numbers with each of the other Candidates. - * - * @param aHighlighted ETrue if the highlight is to be set - * EFalse if the highlight is to be removed - */ - virtual void SetHighlighted(TBool aHighlighted) = 0; - - /** - * enable/disable the rendering of the Horizontal Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - virtual void ShowHorizontalScrollArrows(TBool aValue) = 0; - - - /** - * enable/disable the rendering of the up Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - virtual void ShowUpScrollArrows(TBool aValue) = 0; - - /** - * enable/disable the rendering of the down Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - virtual void ShowDownScrollArrows(TBool aValue) = 0; - - /** - * enable/disable the rendering of the left Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - virtual void ShowLeftScrollArrows(TBool aValue) = 0; - - /** - * enable/disable the rendering of the right Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - virtual void ShowRightScrollArrows(TBool aValue) = 0; - - /** - * enable/disable the rendering of the Vertical Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - virtual void ShowVerticalScrollArrows(TBool aValue) = 0; - - /** - * enable/disable the rendering of the candidate ordinal numbers - * - * @param aValue if ETrue, enable the ordinals - * if EFalse, disable the ordinals - * - */ - virtual void ShowCandidateOrdinals(TBool aValue) = 0; - - /** - * This function returns the number of Candidates that are visible in the pane - * in its current configuration. - * - * @return number of candidates that are currently visible - */ - virtual TInt VisibleCandidateCount() const = 0; - - /** - * Select the first visible item in the candidate buffer - * - * @return ETrue if success, EFalse if no items visible - * - */ - virtual TBool SelectFirst() = 0; - - /** - * Select the first visible phrase item in the candidate buffer - * - * @return ETrue if success, EFalse if no items visible - * - */ - virtual TBool SelectFirstPhrase() = 0; - - /** - * Select the last visible item in the candidate buffer - * - * @return ETrue if success, EFalse if no items visible - * - */ - virtual TBool SelectLast() = 0; - - /** - * Select the last visible phrase item in the candidate buffer - * - * @return ETrue if success, EFalse if no items visible - * - */ - virtual TBool SelectLastPhrase() = 0; - - /** - * Select the next visible item - * - * @return ETrue if success, - * EFalse if no items visible, or if already on last visible item - */ - virtual TBool SelectNext() = 0; - /** - * Select the previous visible item - * - * @return ETrue if success, - * EFalse if no items visible, or if already on first visible item - */ - virtual TBool SelectPrev() = 0; - - /** - * This function selects the given index. - *

Note that if the new selected index is within the visible count, - * but falls on a candidate that is not valid (i.e. if it falls outside the - * length of the candidate buffer) then nothing happens and EFalse is returned - * - * @param aIndex If aIndex falls outside length of candidate buffer, - * then return EFalse to indicate failure. - * @return ETrue if index was valid, EFalse if index not valid - */ - virtual TBool SelectIndex(TInt aIndex, TBool selected = ETrue) = 0; - - /** - * This function returns the selected index of the Candidate Pane. - * - * @return the index of the selected item. If the Pane is not highlighted it returns 0. - * - */ - virtual TInt SelectedIndex() const = 0; - - /** - * This function returns the character at index of the current selection - * - * @return a descrptor containing the character that is currently selected. - * If the currect selection falls outside the length of the current buffer, - * then return a null descriptor - * - */ - virtual TPtrC CurrentCandidate() const = 0; - /** - * This function returns the phrase at index of the current selection - * - * @return a descrptor containing the character that is currently selected. - * If the currect selection falls outside the length of the current buffer, - * then return a null descriptor - * - */ - virtual TPtrC CurrentPhraseCandidate() const = 0; - /** - * Split phrase candidates into pages - */ - virtual void SplitPhraseCandidatesIntoPages() = 0; - - /** - * Navigate to next page - */ - virtual void NextCandidatePage(void) = 0; - - /** - * Navigate to previous page - */ - virtual void PreviousCandidatePage(void) = 0; - - /** - * Return candidate array - */ - virtual CDesCArrayFlat* CandidateArray(void) = 0; - - /** - * Set phrase candidate buffer - */ - virtual void SetCandidateBuffer(void) = 0; - - /** - * Reset candidate pane state and variables - */ - virtual void ResetCandidateState() = 0; - - /** - * To test whether current page is the first page - */ - virtual TBool IsFirstPage() = 0; - - /** - * To test whether current page is the last page - */ - virtual TBool IsLastPage() = 0; - - /** - * To set all the cnadidate label invisible(phrase creation) - */ - virtual void SetInVisiable() = 0; - - /** - * To test whether need to get new candidate page - */ - virtual TBool NeedGetNewCandidatePage() = 0; - }; - -#endif //__AKN_FEP_CANDIDATE_PANE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlCandidatePaneInterface.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlCandidatePaneInterface.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the MAknFepUICtrlCandidatePaneInterface definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_CTRL_CANDIDATEPANE_INTERFACE_H__ -#define __AKN_FEP_UI_CTRL_CANDIDATEPANE_INTERFACE_H__ - -#include -#include //CDesCArrayFlat - -enum TAknFepUICtrlScroll - { - EScrollNone, - EScrollLeft, - EScrollRight, - EScrollUp, - EScrollDown - }; - - -class MAknFepUICtrlCandidatePaneInterface - { -public: - /** - * Destructor. - */ - virtual ~MAknFepUICtrlCandidatePaneInterface() {}; - /** - * Show Candidate List - * - * @param aItems The disposition of an item - * @param aIndex The index of the cursor position when an initial display - * @param aLeftSideOfBaseLine - * @param aHeight - * @param aAscent - */ - virtual void ShowCandidateListL(CDesCArrayFlat* aItems, - TInt aIndex, TInt aResourceID) = 0; - /** - * Close Candidate List - */ - virtual void HideWindow() = 0; - /** - * - */ - virtual TInt CurrentItemIndexOfCandidate() = 0; - /** - * - */ - virtual TInt MoveItem(TAknFepUICtrlScroll aDirection) = 0; - /** - * - */ - virtual void SetWindowPosition(const TPoint& aLeftSideOfBaseLine, TInt aHeight, TInt aAscent) = 0; - }; - -#endif - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlCandidateSelected.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlCandidateSelected.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlCandidateSelected definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_CANDIDATE_SELECTED_PANE_H__ -#define __AKN_FEP_CANDIDATE_SELECTED_PANE_H__ - -#include -#include - -#include "AknFepUICtrlCandidatePane.h" - -class CEikLabel; - -/** - * Control representing the selected candidate. Is a window owning control, - * that appears over the candidate pane such that it obscures the labels - * beneath. Can be hidden, for example if there is no visible selection, - * or if highlighting is disabled. - */ -class CAknFepUICtrlCandidateSelected : public CCoeControl - { -public: - enum - { - EOneCandidate = 1, - EMaxSelectedCandidateLength = 10 // extend buffer for phrase input - }; -public: - - /** - * first phase construction - */ - static CAknFepUICtrlCandidateSelected* NewL(RWindowTreeNode& aParent); - - /** - * destructor - */ - ~CAknFepUICtrlCandidateSelected(); - - /** - * Set the text buffer of the Pane. - * - * @param aCharacter, the label will be filled with the characters from aCharacter - */ - void SetText(TPtrC aCharacter); - - /** - * Set the ordinal of the Pane. - * - * @param aOrdinal - */ - void SetOrdinal(TInt aOrdinal); - - /** - * This function sets the candidate mode of the pane for rendering purposes. - * - * @param aMode the new mode - */ - void SetCandidateMode(CAknFepUICtrlCandidatePane::TCandidateMode aMode); - - /** - * Set layout - * @param aLayout the new layout - */ - void SetLayout(CAknFepUICtrlContainerChinese::TPaneLayout aLayout); - /** - * Set ordinal status - * @param aValue the new status - */ - void ShowOrdinal(TBool aValue); - -public: // from CCoeControl - /** - * size changed - */ - virtual void SizeChanged(); - - /** - * count component controls - * - * @return number of contained controls - */ - TInt CountComponentControls() const; - - /** - * Component control - * - * @param aIndex the control to return, must be between 0 and the number of controls - * @return pointer to contained control, ownership is not passed - */ - CCoeControl* ComponentControl(TInt aIndex) const; - - /** - * draw - * - * @param aRect rectangle - */ - virtual void Draw(const TRect& aRect) const; - -protected: - /** - * second phase construction - */ - void ConstructL(RWindowTreeNode& aParent); - - /** - * constructor - */ - CAknFepUICtrlCandidateSelected(); - - /** - * layout the rectangles - */ - void LayoutRects(); - - /** - * layout contained controls - */ - void LayoutContainedControls(); - - /** - * layout the background frames - * - * @param aOuterRect filled with outer rect coords - * @param aInnerRect filled with inner rect coords - * - */ - void CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const; - - /** - * set label vilisibilty, according to the current pane layout - */ - void UpdateLabelVisibility(); - -private: - TAknLayoutRect iRectShadow; - TAknLayoutRect iRectHighlight; - TBufC iBuffer; - CAknFepUICtrlCandidatePane::TCandidateMode iCandidateMode; - TInt iIndex; - CAknFepUICtrlContainerChinese::TPaneLayout iPaneLayout; - TBool iShowOrdinal; -private: // the following are owned - CEikLabel* iCandidateLabel; - CEikLabel* iOrdinalLabel; - }; - -#endif //__AKN_FEP_CANDIDATE_SELECTED_PANE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlContainerJapanese.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlContainerJapanese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlContainerJapanese definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_CONTAINER_JAPANESE_H__ -#define __AKN_FEP_UI_CONTAINER_JAPANESE_H__ - -// INCLUDES -#include - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATION - -// CLASS DECLARATION -class MAknFepUICtrlCandidatePaneInterface; - -/** - * Container for the Japanese Candidate Pane and the Predictive Candidate Pane. - * - * @lib AknFep.lib - * @since 2.6 - */ -class MAknFepUICtrlContainerJapanese - { -public: - /** - * - * @since 2.6 - */ - enum TAknFepUICtrlCandidatePaneId - { - EJapaneseCandidatePane, - EJapanesePredictiveCandidatePane, - EJapaneseCandidatePaneMax - }; - -public: // New faunctions - /** - * destructor - */ - virtual ~MAknFepUICtrlContainerJapanese() = 0; - - /** - * @since 2.6 - * @param aId - * @return - */ - virtual MAknFepUICtrlCandidatePaneInterface* CandidatePane(TAknFepUICtrlCandidatePaneId aId) = 0; - }; - -#endif // __AKN_FEP_UI_CONTAINER_JAPANESE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlInputPane.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlInputPane.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlInputPane definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_INPUT_PANE_H__ -#define __AKN_FEP_INPUT_PANE_H__ - -#include - -/** - * pane in which the user's input is shown - */ -class MAknFepUICtrlInputPane - { -public: - /** - * Different layouts, can be used depending on whether used as the input pane, or as - * an entry in the popup pinyin window - */ - enum TInputPaneLayout - { - ELayoutPhraseInputPane = 3, - ELayoutPhrasePinyinPopupPane, - ELayoutPhraseMiniQwertyZhuyin - }; - - /** - * The number of characters that can be displayed in the input pane. - * This does not include the tone mark, which is counted separately. - */ - enum - { - EMaxToneMarkLength = 1, - EMaxInputCharsInputPaneNotIncludingToneMark = 30, // need 30 in the case of stroke - EMaxInputCharsPinyinPopupNotIncludingToneMark = 21, - EMaxInputCharsZhuyinPopup = 16, - EMaxInputCharsInputPane = EMaxInputCharsInputPaneNotIncludingToneMark + EMaxToneMarkLength, - EMaxInputCharsPinyinPopup = EMaxInputCharsPinyinPopupNotIncludingToneMark + EMaxToneMarkLength, - EMaxInputChars = EMaxInputCharsInputPane + EMaxInputCharsPinyinPopup // guaranteed big enough for either - }; - - enum - { - EPhoneticChanged = 0x0001 - }; - -public: - virtual void SetText(const TDesC& aDes) = 0; - - /** - * Get the text buffer of the pane - * - * @output aText the buffer is filled with the contents of the candidate - * of the pane, up to the size of the buffer - */ - virtual void GetText(TDes& aText) const = 0; - - /** - * This function sets the Tone Mark for the Pane. - * - * @param aToneMark descriptor containing the tone mark character - */ - virtual void SetToneMark(const TDesC& aToneMark) = 0; - - /** - * This function sets the validity of the tonemark - * - * @param aValid if ETrue, tonemark will be displayed as valid - * if EFalse, tonemark will be displayed as not valid - */ - virtual void SetToneMarkValidity(TBool aValid) = 0; - - /** - * sets the font to be used, which will override the font from LAF - * - * @param aFontId the new font id, pass in 0 to use the one from LAF - * - */ - virtual void SetOverrideFontId(TInt aFontId) = 0; - virtual void SetFlag(TInt aFlag) = 0; - virtual void ClearFlag(TInt aFlag) = 0; - virtual TBool IsFlagSet(TInt aFlag) const = 0; - }; - -#endif //__AKN_FEP_INPUT_PANE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlPinyinPopup.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUICtrlPinyinPopup.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,455 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlPinyinPopup class definitions. -* -*/ - - - - - - - - - - - -#ifndef __AKN_FEP_UI_PINYIN_POPUP_H -#define __AKN_FEP_UI_PINYIN_POPUP_H - -#include - -class MAknFepUICtrlPinyinPopup - { -public: - enum - { - ESpellingChanged = 0x0001, - ESpellingNavigation = 0x0002, - EDispPageChanged = 0x0004, - EChangeStatebyBackSpce = 0x1000//need by pinying phrase creation. - }; - - /** - * The number of selections that can be displayed in the popup. - */ - enum - { - EMaxToneMarkLength = 1, - EMaxCandidates = 6, - EMaxCandidateCharsNotIncludingToneMark = 6, - EMaxCandidateChars = EMaxCandidateCharsNotIncludingToneMark + EMaxToneMarkLength, - EMaxPhraseCandidate = 10 - }; - - typedef TBufC TToneMark; - -public: - /** - * This function returns the index of the selected phrase item . - * - * @return aIndex index of entry in window, zero based - */ - virtual TInt CurrentSelection() const = 0; - /** - * This function returns the visible index of the selected item. - * - * @return aIndex index of entry in window, zero based - */ - virtual TInt CurrentVisibleSelection() const = 0; - - /** - * Enables the display of the control. Sets the control's - * window postion and visibility, but only if the value has - * changed (so it's ok to call it excessively). - * - * @param aEnable if ETrue, makes visible - * if EFalse, makes non-visible - * - */ - virtual void Enable(TBool aEnable) = 0; - /** - * set the number of selections that are visible - * - * @param aCount the number of visible selections, must be - * 0 < aCount <= KMaxNumberOfSelections - */ - virtual void SetVisibleCount(TInt aCount) = 0; - - /** - * get the current visible selection count - * - * @return visible selection count - */ - virtual TInt VisibleSelectionCount() const = 0; - - - /** - * This sets the string of the internal buffer for the item index aIndex to aText, - * even if the index falls outside the current visible candidates. - * - * @param aText new contents of text item - * @return ETrue if successful - * EFalse if index outside visible candidates (but value is still set) - * - */ - virtual TBool SetItemText(TInt aIndex, const TDesC& aText) = 0; - - /** - * Sets the string of the internal buffer for visible item - */ - virtual TBool SetPhraseItemTexts() = 0; - - /** - * This function gets the text at the index aIndex. - * - * @param aIndex index of entry in window, zero based - * @output aText contains contents of text item - * @return ETrue always - * - */ - virtual TBool GetItemText(TInt aIndex, TDes& aText) const = 0; - - /** - * This function sets the Tone Mark for a specific entry - * - * @param aIndex index of entry - * @param aToneMark the tone mark - * - */ - virtual void SetToneMark(TInt aIndex, const TDesC& aToneMark) = 0; - - /** - * This function sets the validity of the tonemark - * - * @param aIndex index of the entry to be affected - * @param aValid if ETrue, tonemark will be displayed as valid - * if EFalse, tonemark will be displayed as not valid - */ - virtual void SetItemToneMarkValidity(TInt aIndex, TBool aValid) = 0; - /** - * Is the control enabled for display? - * - * @return if not enabled, return EFalse - */ - virtual TBool IsEnabled() const = 0; - - /** - * Select the next visible item. If already on the last one, loop to the - * first one. - * - * @return ETrue if success, - * EFalse if no items visible, or if selection is outside visible items - */ - virtual TBool SelectNextPhrase() = 0; - - /** - * Select the previous visible item. If already on the first one, loop to the - * last one. - * - * @return ETrue if success, - * EFalse if no items visible, or if selection is outside visible items - */ - virtual TBool SelectPrevPhrase() = 0; - - /** - * Return Pinyin spelling candidate array - */ - virtual CDesCArrayFlat* PhoneticSpellingArray(void) = 0; - - /** - * Split phrase pinyin spelling candidates into pages - */ - virtual void SplitPhraseSpellingIntoPages(void) = 0; - - /** - * Split pinyin spelling candidates into pages - */ - virtual void SplitSpellingIntoPages(TInt aCount) = 0; - - /** - * Set display page for deliberate selection - */ - virtual void SetDisplayPage(TInt aSelection) = 0; - - /** - * Return keystroke array - */ - virtual CDesCArrayFlat* KeystrokeArray(void) = 0; - - /** - * return in effect keystroke array - */ - virtual CDesCArrayFlat* InEffectKeystrokeArray(void) = 0; - - /** - * Return show keystroke array - */ - virtual CDesCArrayFlat* ShowKeystrokeArray(void) = 0; - - /** - * Return the optimize spelling array - */ - virtual CDesCArrayFlat* OptimizeSpelling(void) = 0; - - /** - * Return the temp spelling array - */ - virtual CDesCArrayFlat* TempSpelling(void) = 0; - - /** - * Return show keystroke array - */ - virtual CDesCArrayFlat* ChooseChineseCharacterArray(void) = 0; - - /** - * Return show keystroke array - */ - virtual CDesCArrayFlat* ChooseChineseCharacterArrayKeystroke(void) = 0; - - /** - * Return the tone mark state - */ - virtual TBool GetTonemarkState() = 0; - - /** - * set the tone mark state - */ - virtual void SetTonemarkState( TBool aState ) = 0; - - - /** - * Return show keystroke array - */ - virtual CDesCArrayFlat* PhoneticSpellingIndexArray(void) = 0; - - /** - * Return current page start spelling index - */ - virtual TInt CurrentPageStartIndex(void) = 0; - virtual void SetFlag(TInt aFlag) = 0; - virtual void ClearFlag(TInt aFlag) = 0; - virtual TBool IsFlagSet(TInt aFlag) const = 0; - virtual void PopupSizeChanged() = 0; - /** - * Set all the input pane not highlight - */ - virtual void SetNoneHighlighted() = 0; - - virtual CDesCArrayFlat* KeystrokeArrayForStroke() = 0; - - virtual CDesCArrayFlat* InEffectKeystrokeArrayForStroke() = 0; - - virtual CDesCArrayFlat* ShowKeystrokeArrayForStroke() = 0; - - virtual CDesCArrayFlat* ChooseChineseCharacterArrayForStroke() = 0; - - virtual CDesCArrayFlat* ChooseChineseCharacterArrayKeystrokeForStroke() = 0; - - /** - * Get the current content array displayed in eep control for Zhuyin method. - */ - virtual CDesCArrayFlat* ZhuyinSymbols() = 0; - - /** - * Get the current content array displayed in eep control for Zhuyin method. - */ - virtual CDesCArrayFlat* ZhuyinShowSymbols() = 0; - - /** - * Get the current valid zhuyin symbol group. - */ - virtual CDesCArrayFlat* FirstValidZhuyinGrp() = 0; - - /** - * Get the current chinese characters displayed in the eep control. - */ - virtual CDesCArrayFlat* ChineseCharsDisped() = 0; - - /** - * Get the corresponding zhuyin symbol array for chinese characters array. - */ - virtual CDesCArrayFlat* ZhuyinSymbolsForChineseCharsDisped() = 0; - - virtual void SetEEPContent ( const TDes& aDes ) = 0; - virtual TDes& GetEEPContent ( ) = 0; - - virtual void SetEEPContentValid ( TBool aValid ) = 0; - virtual TBool GetEEPContentValid ( ) = 0; - - virtual void ResetStrokeArray() = 0; - - virtual void SetChangeState(TBool aChangeState) = 0; - - virtual TBool IsChangeStatet() const = 0; - - /** - * Set whether state change from entry to spelling editing is automatical. - * - * @param aState.1 for automatical, 0 for manual. - * @return None. - */ - virtual void SetState( TInt aState ) = 0; - - /** - * Get state change status. - */ - virtual TInt GetState() = 0; - - /** - * Set whether state change from pinyin input state to pinyin phrase creation. - * - * @param aState. ETrue for state change from pinyin input to phrase creation, - * EFalse is not. - * @since S60 V5.0 - * @return None. - */ - virtual void SetPhraseCreationState( TBool aState ) = 0; - - /** - * Set whether at the editing state happen editing for pinyin phrase creation. - * - * @param aState. ETrue happen editing,EFalse others. - * @since S60 V5.0 - * @return None. - */ - virtual void SetPhraseCreationEditingState( TBool aState ) = 0; - - /** - * Get whether state change from pinyin input state to pinyin phrase creation. - * - * @since S60 V5.0 - * @return ETrue for state change from pinyin input to phrase creation, - * EFalse is not. - */ - virtual TBool GetPhraseCreationState() = 0; - - /** - * Get whether at the editing state happen editing for pinyin phrase creation. - * - * @since S60 V5.0 - * @return None. - */ - virtual TBool GetPhraseCreationEditingState() = 0; - - /** - * set flag whether from candidate state change state. - * - * @param aFlag ETrue from the candidate state change state, other EFalse. - * @since S60 V5.0 - * @return none. - */ - virtual void SetFromCandidateChangeStateFlag( TBool aFlag ) = 0; - - /** - * Get flag whether from candidate state change state. - * - * @since S60 V5.0 - * @return ETrue from the candidate state change state, other EFalse. - */ - virtual TBool GetFromCandidateChangeStateFlag() = 0; - - /** - * Set count of valid keystroke. - * - * @since S60 V5.0 - * @return none - */ - virtual void SetValidKeystrokeCount( TInt aCount ) = 0; - - /** - * get count of valid keystroke. - * - * @since S60 V5.0 - * @return count of valid keystroke. - */ - virtual TInt GetValidKeystrokeCount() = 0; - - /** - * Set last cba resouce id. - * - * @since S60 V5.0 - * @return None - */ - virtual void SetLastResouce( TInt aResouceId ) = 0; - - /** - * Get last cba resouce id. - * - * @since S60 V5.0 - * @return last resouce id - */ - virtual TInt GetLastResouce() = 0; - - /** - * Set change state from Edit to Spelling flag. - * - * @param aFlag,If ETrue Change from Edit state to spelling state,EFalse others. - * @since S60 V5.0 - * @return none. - */ - virtual void SetFromEditToSpellingFlag( TBool aFlag = EFalse ) = 0; - - /** - * Set change state from Edit to Spelling flag. - * - * @param none. - * @since S60 V5.0 - * @return ETrue Change from Edit state to spelling state,EFalse others.. - */ - virtual TInt GetFromEditToSpellingFlag() = 0; - - /** - * Set valid keystroke change flag. - * - * @param aFlag, ETrue valid keystroke changed,EFalse others. - * @since S60 V5.0 - * @return none - */ - virtual void SetValidKeystrokeChange( TBool aFlag ) = 0; - - /** - * Get valid keystroke change flag. - * - * @since S60 V5.0 - * @return ETrue,if vallid keystroke changed, others EFalse. - */ - virtual TBool GetValidKeystrokeChange() = 0; - - /** - * Set PreStateIsPredict flag. - * - * @param aFlag, ETrue PreStateIsPredict,EFalse others. - * @since S60 V5.0 - * @return none - */ - virtual void SetPreStateIsPredictive( TBool aFlag ) = 0; - - /** - * Get PreStateIsPredict flag. - * - * @since S60 V5.0 - * @return ETrue,if PreStateIsPredict, others EFalse. - */ - virtual TBool GetPreStateIsPredictive() = 0; - - virtual void SetInputLayoutMiniQwertyZhuyin() = 0; - - virtual void ResetInputLayoutMiniQwertyZhuyin() = 0; - }; - -#endif // __AKN_FEP_UI_PINYIN_POPUP_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUiCtrlContainerChinese.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUiCtrlContainerChinese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,189 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlContainerChinese definition. -* -*/ - - - - - - - - - - - -#ifndef __AKN_FEP_UI_CONTAINER_CHINESE_H__ -#define __AKN_FEP_UI_CONTAINER_CHINESE_H__ - -#include - -class MAknFepUICtrlInputPane; -class MAknFepUICtrlCandidatePane; -class MAknFepUICtrlPinyinPopup; -class MAknFepUICtrlEditPane; -class MAknFepManagerUIInterface; - -class MAknFepUICtrlContainerChinese -{ - -public: - /** - * Different layouts, the number represents the number of candidates visible in the candidate pane - */ - enum TPaneLayout - { - ELayoutInput = 6, - ELayoutCandidate = 7, - // the follow 2 lines be added for phrase creation - ELayoutPhraseCreation = 8, - ELayoutKeystroke = 9 - }; -public: - /** - * destructor - */ - virtual ~MAknFepUICtrlContainerChinese() = 0; - - /** - * get the input pane - * - * @return pointer to the input pane, ownership is not passed - */ - virtual MAknFepUICtrlInputPane* InputPane() const = 0; - - /** - * get the candidate pane - * - * @return pointer to the candidate pane, ownership is not passed - */ - virtual MAknFepUICtrlCandidatePane* CandidatePane() const = 0; - - /** - * get the phrase pinyin popup window - * - * @return pointer to the phrase popup window, ownership is not passed - */ - virtual MAknFepUICtrlPinyinPopup* PinyinPopupWindow() const = 0; - - /** - * phrase creation's EEP Ctrl - * get the pinyin phrase creation popup window - * - * @return pointer to the pinyin phrase popup window, ownership is not passed - */ - virtual MAknFepUICtrlEditPane* EditPaneWindow() const = 0; - - /** - * Is the control displayed on the screen? - * - * @return if not enabled, returns EFalse - * - */ - virtual TBool IsEnabled() const = 0; - /** - * Enables the display of the control. Sets the control's - * window postion and visibility, but only if the value has - * changed (so it's ok to call it excessively). - * - * @param aEnable if ETrue, makes visible - * if EFalse, makes non-visible - * - */ - virtual void Enable(TBool aEnable) = 0; - - /** - * Arrange the constituent panes into the correct proportions for - * the required layout. - * - * @param aPaneLayout the required layout - * - */ - virtual void SetLayout(TPaneLayout aPaneLayout) = 0; - - - /** - * Set the Highlight to the desired control. - * - * @param aValue if aValue is ETrue set the focus to the Candidate Pane. - * if aValue is EFalse set focus to the Chinese Input Pane - */ - virtual void FocusCandidatePane(TBool aValue) = 0; - - /** - * enable/disable the rendering of the Horizontal Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - virtual void ShowHorizontalScrollArrows(TBool aValue) = 0; - - /** - * enable/disable the rendering of the Vertical Scroll Arrows. - * - * @param aValue if ETrue, enable the arrows - * if EFalse, disable the arrrows - */ - virtual void ShowVerticalScrollArrows(TBool aValue) = 0; - - /** - * Call this method if the fep is being displayed for a control that is - * contained in a popup window (i.e. a Query). It changes the layout - * of the container. - * - * @param aValue if ETrue, use the layout for display with a query - * if EFalse, use the normal layout - */ - virtual void SetIsShownWithPopupWindows(TBool aValue) = 0; - - /** - * This function sets cursor position. - * - * @param aCurPos containing the cursor position - * @param aHeight containing font height - */ - virtual void SetContainerPosition(TPoint aCurPos,TInt aHeight) = 0; - - /** - * Set Candidate and pinyin popup invisible(phrase creation) - * - */ - virtual void SetControlInVisible( TBool aVisible = ETrue ) = 0; - - /** - * Set the state to phrase creation(phrase creation) - */ - virtual void PhraseCreation( TBool aPhraseCreation ) = 0; - - /** - * Is the state is in phrase creation(phrase creation) - * - * @return if not phrase creation, return EFalse - */ - virtual TInt& IsPhraseCreation() = 0; - - /** - * Set FepMan(phrase creation) - * - * @return if not enabled, return EFalse - */ - virtual void SetFepMan( MAknFepManagerUIInterface* aFepMan ) = 0; - - }; -#endif // __AKN_FEP_UI_CONTAINER_CHINESE_H__ - -// End of file - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUiInterfacePlugin.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUiInterfacePlugin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Interface for FEP UI plugins -* -*/ - - - - - - - - - - - - -#ifndef AKNFEPUIINTERFACEPLUGIN_H -#define AKNFEPUIINTERFACEPLUGIN_H - -#include - -class CAknFepUIInterface; - -class CFepUiInterfacePlugin : public CBase - { -public: - enum TInterfaceUid { ETypeId = 0x10285779 }; - virtual TBool UseThisPlugin() const = 0; - virtual CAknFepUIInterface* NewImplL() = 0; - }; - -#endif diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUiStylusPopupMenu.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUiStylusPopupMenu.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Interface through which the FEP can use UI components -* -*/ - - - - - - - - - - - - -#ifndef AKNFEPUISTYLUSPOPUPMENU_H -#define AKNFEPUISTYLUSPOPUPMENU_H - -#include - - -class CAknFepUiInterfaceStylusPopUpMenu : public CBase - { -public: - virtual void AddMenuItemL(const TDesC& aItem, const TInt aCommandId) = 0; - virtual void SetPosition(const TPoint& aPoint) = 0; - virtual void ShowMenu() = 0; - }; - - -#endif diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUiWordPopupContent.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/AknFepUiWordPopupContent.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,106 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Interface through which the FEP can use pop up bubble components -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INTERFACE_WORD_POPUP_CONTENT_H -#define __AKN_FEP_UI_INTERFACE_WORD_POPUP_CONTENT_H - -#include -#include -#include - - - -class MAknFepUiWordPopupContent - { -public: - // Enum copied from CAknFepExactWordPopupContent - enum TArrowDirection - { - EUpwards, //!< The arrow included in the popup points upwards - EDownwards //!< The arrow included in the popup points downwards - }; -public: - virtual ~MAknFepUiWordPopupContent() = 0; -public: - /** - * Sets the text to be shown in the popup - */ - virtual void SetTextL( const TDesC& aText ) = 0; - - /** - * Sets the direction of the arrow included in the popup. This should be used as a hint - * about the direction to tap to select the word shown in the popup. - */ - virtual void SetArrowDirection( TArrowDirection aDirection ) = 0; - /** - * Sets the delay used before showing the preview popup. The default - * delay is one second. - * @param aDelay Delay in microseconds. - */ - virtual void SetPopUpShowDelay( const TTimeIntervalMicroSeconds32& aDelay ) = 0; - - /** - * Sets the preview popup visible after specified delay. If the popup - * is already visible it is hidden immediately and shown again after the - * showing delay. Popup is automatically hidden after its hiding delay - * unless the delay is zero in which case the popup is shown infinitely. - */ - virtual void ShowPopUp() = 0; - - /** - * Hides the popup immediately. - */ - virtual void HidePopUp() = 0; - - /** - * Sets the position of preview popup. Popup's size is determined by the - * size of its content. The popup is placed left and down from the given - * point. If fixed mode is used then this function has no effect. - * @param aPoint Popup's position. - */ - virtual void SetPosition( const TPoint& aPoint ) = 0; - - /** - * Updates popup's size to reflect a change in content's size. - * Should be called if the size of the content is changed dynamically. - */ - virtual void UpdateContentSize() = 0; - - /** - * Returns the popup's size. - */ - virtual TSize Size() const = 0; - - /** - * Returns true if the popup is visible. - */ - virtual TBool IsPopUpVisible() = 0; - }; - -#endif diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/aknfepuictrleditentrypopup.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/aknfepuictrleditentrypopup.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,251 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUICtrlPinyinPopup class definitions. -* -*/ - - - - - - - - - - - -#ifndef AKN_FEP_UI_EDIT_ENTRY_POPUP_H -#define AKN_FEP_UI_EDIT_ENTRY_POPUP_H - -#include - -class MAknFepUICtrlEditEntryPopup - { -public: - enum - { - ESpellingChanged = 0x0001, - ESpellingNavigation = 0x0002, - EDispPageChanged = 0x0004 - }; - /** - * The cursor move orientation. - */ - enum TMoveDirect - { - ELeft = 0, - ERight = 1 - }; - /** - * The number of selections that can be displayed in the popup. - */ - enum - { - EMaxToneMarkLength = 1, - EMaxCandidates = 6, - EMaxCandidateCharsNotIncludingToneMark = 6, - EMaxCandidateChars = EMaxCandidateCharsNotIncludingToneMark + EMaxToneMarkLength, - EMaxPhraseCandidate = 10 - }; - - typedef TBufC TToneMark; - -public: - - /** - * This function move the cursor in the EEP. - * - * @param aMoveDirect if ELeft, the cursor move left - * if ERight, the cursor move right - * - * @return EFalse if the cursor can't move again other ETrue. - */ - virtual TBool Move( TInt aMoveDirect ) const = 0; - - /** - * This function move the cursor in the EEP. - * - * @param aCount the number of the verifide Key sequence. - * - * @return None - */ - virtual void SetVerifiedKeySequenceCount( TInt aCount ) const = 0; - - /** - * This function move the cursor in the EEP. - * - * @param aFlag if ETrue, the key sequence is verified - * if EFalse, the key sequence is not verified. - * - * @return EFalse if the cursor can't move again other ETrue. - */ - virtual TBool SetVerifiedKeySequenceFlag( TBool aFlag) const = 0; - - /** - * This function returns the index of the selected phrase item . - * - * @return aIndex index of entry in window, zero based - */ - virtual TInt CurrentSelection() const = 0; - - /** - * This function returns the visible index of the selected item. - * - * @return aIndex index of entry in window, zero based - */ - virtual TInt CurrentVisibleSelection() const = 0; - - /** - * Enables the display of the control. Sets the control's - * window postion and visibility, but only if the value has - * changed (so it's ok to call it excessively). - * - * @param aEnable if ETrue, makes visible - * if EFalse, makes non-visible - * - */ - virtual void Enable(TBool aEnable) = 0; - /** - * set the number of selections that are visible - * - * @param aCount the number of visible selections, must be - * 0 < aCount <= KMaxNumberOfSelections - */ - virtual void SetVisibleCount(TInt aCount) = 0; - - /** - * get the current visible selection count - * - * @return visible selection count - */ - virtual TInt VisibleSelectionCount() const = 0; - - - /** - * This sets the string of the internal buffer for the item index aIndex to aText, - * even if the index falls outside the current visible candidates. - * - * @param aText new contents of text item - * @return ETrue if successful - * EFalse if index outside visible candidates (but value is still set) - * - */ - virtual TBool SetItemText(TInt aIndex, const TDesC& aText) = 0; - - /** - * Sets the string of the internal buffer for visible item - */ - virtual TBool SetPhraseItemTexts() = 0; - - /** - * This function gets the text at the index aIndex. - * - * @param aIndex index of entry in window, zero based - * @output aText contains contents of text item - * @return ETrue always - * - */ - virtual TBool GetItemText(TInt aIndex, TDes& aText) const = 0; - - /** - * This function sets the Tone Mark for a specific entry - * - * @param aIndex index of entry - * @param aToneMark the tone mark - * - */ - virtual void SetToneMark(TInt aIndex, const TDesC& aToneMark) = 0; - - /** - * This function sets the validity of the tonemark - * - * @param aIndex index of the entry to be affected - * @param aValid if ETrue, tonemark will be displayed as valid - * if EFalse, tonemark will be displayed as not valid - */ - virtual void SetItemToneMarkValidity(TInt aIndex, TBool aValid) = 0; - /** - * Is the control enabled for display? - * - * @return if not enabled, return EFalse - */ - virtual TBool IsEnabled() const = 0; - - /** - * Select the next visible item. If already on the last one, loop to the - * first one. - * - * @return ETrue if success, - * EFalse if no items visible, or if selection is outside visible items - */ - virtual TBool SelectNextPhrase() = 0; - - /** - * Select the previous visible item. If already on the first one, loop to the - * last one. - * - * @return ETrue if success, - * EFalse if no items visible, or if selection is outside visible items - */ - virtual TBool SelectPrevPhrase() = 0; - - /** - * Return Pinyin spelling candidate array - */ - virtual CDesCArrayFlat* PhoneticSpellingArray(void) = 0; - - /** - * Split phrase pinyin spelling candidates into pages - */ - virtual void SplitPhraseSpellingIntoPages(void) = 0; - - /** - * Split pinyin spelling candidates into pages - */ - virtual void SplitSpellingIntoPages(TInt aCount) = 0; - - /** - * Set display page for deliberate selection - */ - virtual void SetDisplayPage(TInt aSelection) = 0; - - /** - * Return keystroke array - */ - virtual CDesCArrayFlat* KeystrokeArray(void) = 0; - - /** - * return in effect keystroke array - */ - virtual CDesCArrayFlat* InEffectKeystrokeArray(void) = 0; - - /** - * Return show keystroke array - */ - virtual CDesCArrayFlat* ShowKeystrokeArray(void) = 0; - - /** - * Return current page start spelling index - */ - virtual TInt CurrentPageStartIndex(void) = 0; - virtual void SetFlag(TInt aFlag) = 0; - virtual void ClearFlag(TInt aFlag) = 0; - virtual TBool IsFlagSet(TInt aFlag) const = 0; - virtual void PopupSizeChanged() = 0; - }; - -#endif // AKN_FEP_UI_EDIT_ENTRY_POPUP_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/inc/aknfepuictrleditpane.h --- a/fep/aknfep/UiPlugins/AknFepUiInterface/inc/aknfepuictrleditpane.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,545 +0,0 @@ -/* -* Copyright (c) 2008-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the MAknFepUICtrlEditPane definition. -* -*/ - - - - - - - - - - - - - -#ifndef M_AKNFEPUICTRLEDITPANE_H -#define M_AKNFEPUICTRLEDITPANE_H - -/** - * pane in which the user's edit is shown - */ -class MAknFepUICtrlEditPane - { -public: - - /** - * Set the show info - * - * @since S60 v5.0 - * @param aDes the show info. - * @return None. - */ - virtual void SetText( const TDesC& aDes ) = 0; - - /** - * Set the show info and cursor position - * - * @since S60 v5.0 - * @param aDes the show info. - * @param aCursorIndex the cursor position. - * @return None. - */ - virtual void SetText( const TDesC& aDes, TInt aCursorIndex, TBool aMiniQwertyZhuyin = EFalse ) = 0; - - /** - * Set the show info - * - * @since S60 v5.0 - * @param aDes the show info. - * @param aCursorIndex the cursor position. - * @param aChineseCount the chinese count. - * @param aJudgeSeed the zhuyin symbols. - * @param aKeystroke the index of symbols. - * @param aRefreshOffset ETrue the show info only is zhuyin symbols. - * @return None. - */ - virtual void SetTextForZhuyin( - const TDesC& aDes, - TInt aCursorIndex, - TInt aChineseCount, - const TDesC& aJudgeSeed, - TInt aKeystroke, - TBool aRefreshOffset = EFalse, - TBool aMiniQwertyZhuyin = EFalse - ) = 0; - - /** - * Set the cousor the index. - * - * @since S60 v5.0 - * @param aIndex the index of cousor. - * @return None. - */ - virtual void SetCursor( const TInt aIndex ) = 0; - - /** - * Get the index of the cursor. - * - * @since S60 v5.0 - * @return the index of cousor. - */ - virtual TInt GetCursor() = 0; - - /** - * Move cursor to the left. - * - * @since S60 v5.0 - * @param aStride the cursor move offset. - * @return ETrue if the cursor can be move,EFalse the others. - */ - virtual TBool MoveCursorLeft( TInt aStride = 1 ) = 0; - - /** - * Move cursor to the right. - * - * @since S60 v5.0 - * @param aStride the cursor move offset. - * @return ETrue if the cursor can be move,EFalse the others. - */ - virtual TBool MoveCursorRight( TInt aStride = 1 ) = 0; - - /** - * Active cursor. - * - * @since S60 v5.0 - * @return None. - */ - virtual void ActiveCursor() = 0; - - /** - * Deactive cursor. - * - * @since S60 v5.0 - * @return None. - */ - virtual void DeactiveCursor() = 0; - - /** - * Enable cursor, the cursor will be drawn. - * - * @since S60 v5.0 - * @return None. - */ - virtual void EnableCursor() = 0; - - /** - * Disable cursor, the cursor will be not drawn. - * - * @since S60 v5.0 - * @return None. - */ - virtual void DisableCursor() = 0; - - /** - * Set the show info underline. - * - * @since S60 v5.0 - * @param aStartIndex the underline begine index. - * @param aEndIndex the underline end index. - * @return None. - */ - virtual void SetUnderline( TInt aStartIndex, TInt aEndIndex ) = 0; - - /** - * Get the show info underline. - * - * @since S60 v5.0 - * @param aStartIndex the underline begine index. - * @param aEndIndex the underline end index. - * @return None. - */ - virtual void GetUnderlineIndex(TInt& aStartIndex, TInt& aEndIndex) = 0; - - /** - * Set the highlight text. - * - * @since S60 v5.0 - * @param aStartIndex the high light begine index. - * @param aEndIndex the high light end index. - * @return None. - */ - virtual void SetHighlight(TInt aStartIndex, TInt aEndIndex) = 0; - - /** - * Get the highlight text. - * - * @since S60 v5.0 - * @param aStartIndex the high light begine index. - * @param aEndIndex the high light end index. - * @return None. - */ - virtual void GetHighlightIndex(TInt& aStartIndex, TInt& aEndIndex) = 0; - - /** - * set index of keystroke array. - * - * @since S60 v5.0 - * @param aStartIndex the index. - * @return None. - */ - virtual void SetCursorIndexOfKeystroke( const TInt aStartIndex ) = 0; - - /** - * Get index of keystroke array. - * - * @since S60 v5.0 - * @return the index. - */ - virtual TInt GetCursorIndexOfKeystroke() = 0; - - /** - * Enables the display of the control. Sets the control's - * window postion and visibility, but only if the value has - * changed (so it's ok to call it excessively). - * - * @since S60 v5.0 - * @param aEnable if ETrue, makes visible - * if EFalse, makes non-visible - * @return none. - */ - virtual void Enable(TBool aEnable) = 0; - - /** - * Is the control enabled for display? - * - * @since S60 v5.0 - * @return if not enabled, return EFalse - */ - virtual TBool IsEnabled() const = 0; - - /** - * Get the text buffer of the pane - * - * @since S60 v5.0 - * @param aText the buffer is filled with the contents of the candidate - * of the pane, up to the size of the buffer - * @return if not enabled, return EFalse - */ - virtual void GetText(TDes& aText) = 0; - - /** - * Get the show info before cursor. - * - * @since S60 v5.0 - * @param aOut the show info of the before cursor. - * - * @return if not enabled, return EFalse - */ - virtual TBool GetDesBeforeCursor ( TDes& aOut ) = 0; - - /** - * This function sets the Tone Mark for the Pane. - * - * @since S60 v5.0 - * @param aToneMark descriptor containing the tone mark character - * - * @return none. - */ - virtual void SetToneMark(const TDesC& aToneMark) = 0; - - /** - * This function sets the validity of the tonemark - * - * @since S60 v5.0 - * @param aValid if ETrue, tonemark will be displayed as valid - * if EFalse, tonemark will be displayed as not valid - * - * @return none. - */ - virtual void SetToneMarkValidity(TBool aValid) = 0; - - /** - * Reset private member viariable. - * - * @since S60 v5.0 - * @return None. - */ - virtual void Reset() = 0; - - /** - * Sets the font to be used, which will override the font from LAF - * - * @since S60 v5.0 - * @param aFontId the new font id, pass in 0 to use the one from LAF - * @return None. - */ - virtual void SetOverrideFontId(TInt aFontId) = 0; - - /** - * Sets flag - * - * @since S60 v5.0 - * @param aFlag the flag - * @return None. - */ - virtual void SetFlag(TInt aFlag) = 0; - - /** - * Clear flag - * - * @since S60 v5.0 - * @param aFlag the flag - * @return None. - */ - virtual void ClearFlag(TInt aFlag) = 0; - - /** - * check flag - * - * @since S60 v5.0 - * @param aFlag the flag - * @return if not enabled, return EFalse. - */ - virtual TBool IsFlagSet(TInt aFlag) const = 0; - - /** - * Return kestroke array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - virtual CDesCArrayFlat* KeystrokeArray() = 0; - - /** - * Return show kestroke array. - * save keystroke that after Analyse when pinyin. - * save all valid keystroke when zhuyin. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - virtual CDesCArrayFlat* ShowKeystrokeArray() = 0; - - /** - * Return choose chinese charater array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - virtual CDesCArrayFlat* PhraseArray() = 0; - - /** - * Return choose chinese charater show keystroke array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - virtual CDesCArrayFlat* PhraseShowKeyStrokeArray() = 0; - - /** - * Return temp array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - virtual CDesCArrayFlat* TempArray() = 0; - - /** - * Reset private member viariable array. - * - * @since S60 v3.2.3 - * @param None. - * @return None. - */ - virtual void ResetAllArray() = 0; - - /** - * change state flag. - * - * @since S60 v3.2.3 - * @param aState, ETrue change state. - * @return None. - */ - virtual void SetChangeState( TBool aState = ETrue ) = 0; - - /** - * check change state flag. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue if change state, EFalse others. - */ - virtual TBool IsChangeState() = 0; - - /** - * Set auto change state flag. - * - * @since S60 v3.2.3 - * @param aState, ETrue auto change state, EFalse manual change state. - * @return None. - */ - virtual void SetAutoChangeStateFlag( TBool aState = ETrue ) = 0; - - /** - * check change state flag. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue atuo change state, EFalse others. - */ - virtual TBool GetAutoChangeStateFlag() = 0; - - - /** - * Set all the keystroke valid flag. - * - * @since S60 v3.2.3 - * @param aState, ETrue all the keystroke is valid, EFalse others. - * @return None. - */ - virtual void SetAllValidFlag( TBool aState = ETrue ) = 0; - - /** - * Get all the keystroke valid flag. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue all the keystroke is valid, EFalse others. - */ - virtual TBool GetAllValidFlag() = 0; - - /** - * Set the keystroke invalid index. - * - * @since S60 v3.2.3 - * @param aIndex, the keystroke invalid index. - * @return None. - */ - virtual void SetInvalidIndex( TInt aIndex = 0 ) = 0; - - /** - * Get all the invalid keystroke index. - * - * @since S60 v3.2.3 - * @param None. - * @return invalid keystroke index. - */ - virtual TInt GetInvalidIndex() = 0; - - /** - * Set Phrase Creation flag. - * - * @since S60 v3.2.3 - * @param aState, ETrue is phrase creation, EFalse others. - * @return None. - */ - virtual void SetPhraseCreationFlag( TBool aState ) = 0; - - /** - * Get Phrase Creation flag. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue is phrase creation, EFalse others. - */ - virtual TBool GetPhraseCreationFlag() = 0; - - /** - * Set Phrase Candidate state need refresh UI flag. - * - * @since S60 v3.2.3 - * @param aState, ETrue is that Candidate state need refresh UI,other don't need. - * @return None. - */ - virtual void SetCandidateRefreshFlag( TBool aState ) = 0; - - /** - * Get Phrase Candidate state need refresh UI flag. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue is that Candidate state need refresh UI,EFalse don't need. - */ - virtual TBool GetCandidateRefreshFlag() = 0; - - /** - * Set the delimiter count of keystroke. - * - * @since S60 v3.2.3 - * @param aCount, the delimiter count of keystroke. - * @return None. - */ - virtual void SetDelimiterCount( TInt aCount ) = 0; - - /** - * Get the delimiter count of keystroke. - * - * @since S60 v3.2.3 - * @param None. - * @return aCount, the delimiter count of keystroke. - */ - virtual TInt GetDelimiterCount() = 0; - - /** - * Get current cba resource id. - * - * @since S60 v3.2.3 - * @param None. - * @return current cba resource id. - */ - virtual TInt GetCurrentCBAResID() = 0; - - /** - * Set current cba resource id. - * - * @since S60 v3.2.3 - * @param aResourceId, current cba resource id. - * @return None. - */ - virtual void SetCurrentCBAResID( TInt aResourceId) = 0; - - virtual void SetEffictiveLength( TInt aLength ) = 0; - - virtual TInt GetEffictiveLength() = 0; - - virtual void DecEffictiveLength() = 0; - - virtual void AddEffictiveLength() = 0; - - virtual void SetNeedClearDeliberateSelection( TBool aNeedClearDeliberateSelection ) = 0; - - virtual TBool NeedClearDeliberateSelection() = 0; - /** - * Return keycode array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - virtual RArray* KeycodeArray() = 0; - - /** - * Return phrase keycode array. - * - * @since S60 v3.2.3 - * @param None. - * @return pointer of array. - */ - virtual RArray* PhraseKeycodeArray() = 0; - }; - -#endif /*M_AKNFEPUICTRLEDITPANE_H*/ - -//End of File - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/src/AknFepIndicator.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/src/AknFepIndicator.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepIndicator methods. -* -*/ - - - - - - - - - - - - -#include //CEikEnv -#include //CEikStatusPane -#include -#include //CAknNavigationControlContainer -#include //CAknNavigationDecorator -#include //CAknIndicatorContainer -#include -#include -#include "AknFepIndicator.h" - -#include "AknFepGlobalEnums.h" - -EXPORT_C CAknFepIndicator::~CAknFepIndicator() - { - } - -EXPORT_C void CAknFepIndicator::SetCopyMode(TBool aCopyMode) - { - iCopyMode = aCopyMode; - iCopyModeChanged = ETrue; - } - - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/src/AknFepUiInterface.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/src/AknFepUiInterface.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInterface methods. -* -*/ - - - - - - - - - - - - -#include "aknfepuiinterface.h" -#include "AknFepUiInterfacePlugin.h" -#include - -void PanicNoImpl() - { - _LIT(KReason, "NoFepUiImpl"); - User::Panic(KReason, 0); - } - -const TUid KAvkonPluginUid = { 0x10285839 }; - -void EComDtorCleanup(TAny* aUid) - { - TUid dtor = {(TInt)aUid}; - REComSession::DestroyedImplementation(dtor); - } - -void EComImplCleanup(TAny* aArray) - { - RImplInfoPtrArray* array = (RImplInfoPtrArray*) aArray; - array->ResetAndDestroy(); - } - -// factory function -EXPORT_C CAknFepUIInterface* CAknFepUIInterface::NewL() - { - RImplInfoPtrArray impls; - CleanupStack::PushL(TCleanupItem(EComImplCleanup, &impls)); - REComSession::ListImplementationsL(TUid::Uid(CFepUiInterfacePlugin::ETypeId), impls); - - // Move Avkon plugin to the back of the list to act as default implementation - TInt count = impls.Count(); - for (int i=0; iImplementationUid() == KAvkonPluginUid) - { - impls.Remove(i); - // Append will not fail as space has been freed by Remove - impls.Append(info); - break; - } - } - - // Find the first plugin that says it should be used - CAknFepUIInterface* impl = NULL; - for (int i=0; !impl && iImplementationUid(), dtorUid); - if (plugin->UseThisPlugin()) - { - CleanupStack::PushL(TCleanupItem(EComDtorCleanup, (TAny*)dtorUid.iUid)); - CleanupStack::PushL(plugin); - impl = plugin->NewImplL(); - impl->iEcomDtorUid = dtorUid; - CleanupStack::PopAndDestroy(plugin); - CleanupStack::Pop(); - } - else - { - delete plugin; - REComSession::DestroyedImplementation(dtorUid); - } - } - - CleanupStack::PopAndDestroy(&impls); - - __ASSERT_ALWAYS(impl, PanicNoImpl()); - return impl; - } - -EXPORT_C CAknFepUIInterface::~CAknFepUIInterface() - { - if (iEcomDtorUid.iUid) - REComSession::DestroyedImplementation(iEcomDtorUid); - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/src/AknFepUiMenus.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/src/AknFepUiMenus.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the menu methods. -* -*/ - - - - - - - - - - - - -#include "aknfepuimenus.h" - -EXPORT_C void MAknFepUiInterfaceMenuObserver::DynInitMenuPaneL(TInt /*aResourceId*/,CAknFepUiInterfaceMenuPane* /*aMenuPane*/) - { - } - -EXPORT_C void MAknFepUiInterfaceMenuObserver::DynInitMenuBarL(TInt /*aResourceId*/,CAknFepUiInterfaceMenuBar* /*aMenuBar*/) - { - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/conf/aknfep.confml Binary file fep/aknfep/conf/aknfep.confml has changed diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/conf/aknfep_101F876D.crml Binary file fep/aknfep/conf/aknfep_101F876D.crml has changed diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/conf/aknfep_japan.confml Binary file fep/aknfep/conf/aknfep_japan.confml has changed diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/conf/aknfep_thai.confml Binary file fep/aknfep/conf/aknfep_thai.confml has changed diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/group/AknFep.mmp --- a/fep/aknfep/group/AknFep.mmp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,342 +0,0 @@ -/* -* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* MakMake Project file. -* -*/ - - - - - - - - - - - - -#include -#include -#include - -TARGET avkonfep.dll -TARGETTYPE plugin - -UID 0x10009d8d 0x100056de -CAPABILITY All -Tcb - -VENDORID VID_DEFAULT - -SOURCEPATH ../resource - -START RESOURCE 100056de.rss -TARGET AvkonFep.rsc -END - -START RESOURCE AknFep.rss -HEADER -TARGETPATH FEP_RESOURCES_DIR -LANGUAGE_IDS -END - -MACRO __REVERSE_FN_KEY_SUPPORTED -MACRO __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -MACRO __HALF_QWERTY_KEYPAD -MACRO __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - -USERINCLUDE ../inc . -//sort this out when move to 2.0 env - - -// Added APP_LAYER_SYSTEMINCLUDE for header split and relocation activity -APP_LAYER_SYSTEMINCLUDE - - -// This is a SYSTEMINCLUDE macro containing the middleware -// layer specific include directories -MW_LAYER_SYSTEMINCLUDE - -SYSTEMINCLUDE ../inc -SYSTEMINCLUDE ../../../inc -//SYSTEMINCLUDE ../../inc - -SOURCEPATH ../src - -SOURCE AknFepManager.cpp -SOURCE AknFepKeyCatcher.cpp -SOURCE AknFepHashKeyManager.cpp -SOURCE AknFepCaseManager.cpp -SOURCE AknFepSharedDataInterface.cpp -SOURCE AknFepLanguageManager.cpp -SOURCE AknFepUiManagerBase.cpp -SOURCE AknFepInlineTextDecorator.cpp - -#ifdef RD_INTELLIGENT_TEXT_INPUT -SOURCE AknFepFnKeyManager.cpp -SOURCE AknFepUiInputStateHalfQwerty.cpp -SOURCE AknFepUiInputStateInitialHalfQwertyWesternPredictive.cpp -SOURCE AknFepUiInputStateEntryHalfQwertyWesternPredictive.cpp -#endif -#ifdef RD_SCALABLE_UI_V2 -SOURCE AknFepPluginManager.cpp -SOURCE AknFepPluginMenuManager.cpp -SOURCE aknfepuimanagerfingeritutchinese.cpp -SOURCE aknfepuifingeritutinputstategeneric.cpp - -// for spell -SOURCE aknfepuispellcontainer.cpp -SOURCE aknfepuispellinputpane.cpp -#endif - -// UI manager for each variant -SOURCE AknFepUiManagerWestern.cpp -SOURCE AknFepUiIndicInputManager.cpp -SOURCE AknFepUiInputStateInitialIndicMultitap.cpp -SOURCE AknFepUiInputStateInitialIndicPredictive.cpp -SOURCE AknFepUiInputStateEntryIndicPredictive.cpp -SOURCE AknFepUiInputStateInitialKoreanMultitap.cpp -SOURCE AknFepUiManagerKorean.cpp -#ifdef RD_HINDI_PHONETIC_INPUT -SOURCE aknfepuiinputstateinitialindicphoneticmultitap.cpp -SOURCE aknfepuiinputstateindicphoneticqwerty.cpp -#endif - -SOURCE AknFepUiManagerChinese.cpp -SOURCE AknFepUiManagerJapanese.cpp -// UI Inputstates -SOURCE AknFepUiInputStateBase.cpp -// for western -SOURCE AknFepUiInputStateInitialNumber.cpp -SOURCE AknFepUiInputStateInitialLatinMultitap.cpp -SOURCE AknFepUiInputStateInitialMultitapBase.cpp -SOURCE AknFepUiInputStateInitialWesternPredictive.cpp -SOURCE AknFepUiInputStateEntryWesternPredictive.cpp -#ifdef RD_INTELLIGENT_TEXT_INPUT -// Predictive Qwerty changes (e.g. XT9) ----> -SOURCE AknFepUiInputStateInitialQwertyWesternPredictive.cpp -SOURCE AknFepUiInputStateEntryQwertyWesternPredictive.cpp -// Predictive Qwerty changes (e.g. XT9) <---- -#endif //RD_INTELLIGENT_TEXT_INPUT -SOURCE AknFepUiInputStateEntryWesternPredictiveJp.cpp - -// for Arabic and Hebrew -SOURCE AknFepUiInputStateInitialArabicHebrewMultitap.cpp -SOURCE AknFepUiInputStateInitialArabicHebrewPredictive.cpp -SOURCE AknFepUiInputStateEntryArabicHebrewPredictive.cpp - -// for Chinese -SOURCE AknFepUiInputStateChineseBase.cpp -SOURCE AknFepUiInputStateInitialChineseMultitapBase.cpp -SOURCE AknFepUiInputStateInitialChineseGeneric.cpp -SOURCE AknFepUiInputStateInitialZhuyinFind.cpp -SOURCE AknFepUiInputstateInitialStrokeFind.cpp -SOURCE AknFepUiInputStateEntryPinyin.cpp -SOURCE AknFepUiInputStateEntryZhuyinStrokeBase.cpp -SOURCE AknFepUiInputStateEntryZhuyin.cpp -SOURCE AknFepUiInputStateEntryStroke.cpp -SOURCE AknFepUiInputStateCandidateBase.cpp -SOURCE AknFepUiInputStateCandidate.cpp -SOURCE AknFepUiInputStatePredictiveCandidate.cpp -SOURCE AknFepUiInputStatePredictiveCandidatePinyin.cpp -SOURCE AknFepUiInputStatePredictiveCandidateStroke.cpp -SOURCE AknFepUiInputStatePredictiveInput.cpp -SOURCE AknFepUiInputStatePredictiveInputChinese.cpp -// Chinese phrase Input state -SOURCE AknFepUiInputStateEntryPinyinPhrase.cpp -SOURCE AknFepUiInputStateEntryZhuyinPhrase.cpp -SOURCE AknFepUiInputStateEntryStrokePhrase.cpp -SOURCE AknFepUiInputStateEntryZhuyinStrokeBasePhrase.cpp -SOURCE AknFepUiInputStateCandidateChinese.cpp -SOURCE AknFepUiInputStateCandidateBasePhrase.cpp -SOURCE AknFepUiInputStateCandidateBaseChinesePhrase.cpp -SOURCE AknFepUiInputStateCandidateChinesePhrase.cpp -SOURCE AknFepUiInputStateCandidateQwertyBaseChinesePhrase.cpp -SOURCE AknFepUiInputStateCandidatePinyinAndStrokePhrase.cpp -SOURCE AknFepUiInputStateCandidatePhrase.cpp -SOURCE AknFepUiInputStatePredictiveCandidatePhrase.cpp -SOURCE AknFepUiInputStatePredictiveCandidatePinyinPhrase.cpp -SOURCE AknFepUiInputStatePredictiveCandidateStrokePhrase.cpp -SOURCE AknFepUiInputStatePredictiveInputPhrase.cpp -SOURCE AknFepUiInputStatePredictiveCandidateChinesePhrase.cpp -SOURCE AknFepUiInputStatePredictiveInputChinesePhrase.cpp -// Chinese Qwerty -SOURCE AknFepUiInputStateInitialChineseGenericQwerty.cpp -SOURCE AknFepUiInputStatePredictiveInputQwerty.cpp -SOURCE AknFepUiInputStatePredictiveInputQwertyPinyin.cpp -SOURCE AknFepUiInputStateEntryQwertyPinyin.cpp -SOURCE AknFepUiInputStateEntryQwertyZhuyin.cpp -SOURCE AknFepUiInputStateCandidateQwertyZhuyin.cpp -SOURCE AknFepUiInputStatePredictiveCandidateQwertyZhuyin.cpp -SOURCE AknFepUiInputStatePredictiveInputQwertyZhuyin.cpp -SOURCE AknFepUiInputStateCandidateQwertyBase.cpp -SOURCE AknFepUiInputStateCandidateQwertyChineseBase.cpp -SOURCE AknFepUiInputStateEntryQwertyBase.cpp -SOURCE AknFepUiInputStateEntryQwertyStroke.cpp -SOURCE AknFepUiInputStateEntryQwertyCangJie.cpp -SOURCE AknFepUiInputStateCandidateQwertyBasePhrase.cpp -SOURCE AknFepUiInputStateEntryQwertyBaseChinesePhrase.cpp -SOURCE AknFepUiInputStateCandidateQwertyChinesePhrase.cpp -SOURCE AknFepUiInputStateEntryQwertyBasePhrase.cpp -SOURCE AknFepUiInputStatePredictiveInputQwertyPhrase.cpp -SOURCE AknFepUiInputStatePredictiveInputQwertyChinesePhrase.cpp -SOURCE AknFepUiInputStateEntryQwertyPinyinPhrase.cpp -SOURCE AknFepUiInputStateEntryQwertyZhuyinPhrase.cpp -SOURCE AknFepUiInputStateEntryQwertyStrokePhrase.cpp -SOURCE AknFepUiInputStateCandidateQwertyZhuyinPhrase.cpp -SOURCE AknFepUiInputStatePredictiveCandidateQwertyZhuyinPhrase.cpp -SOURCE AknFepUiInputStatePredictiveInputQwertyZhuyinPhrase.cpp -SOURCE AknFepUiInputStateStrokeFindQwerty.cpp -SOURCE AknFepUiInputStateChineseFindQwerty.cpp -SOURCE AknFepUiInputStateZhuyinFindQwerty.cpp -SOURCE AknFepUiInputStateCandidateQwertyPhrase.cpp -SOURCE AknFepUiInputStatePredictiveInputQwertyPinyinPhrase.cpp -SOURCE AknFepUiInputStateCandidateQwerty.cpp -SOURCE AknFepUiInputStateCandidateQwertyChinese.cpp -SOURCE AknFepUiInputStatePredictiveInputQwertyStrokePhrase.cpp -SOURCE AknFepUiInputStatePredictiveInputQwertyStroke.cpp -#ifdef RD_INTELLIGENT_TEXT_INPUT -SOURCE AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase.cpp -SOURCE AknFepUIInputStateEntryMiniQwertyPinyinPhrase.cpp -SOURCE AknFepUIInputStatePredictiveInputMiniQwertyChinesePhrase.cpp -SOURCE AknFepUiInputStatePredictiveCandidateMiniQwertyChinesePhrase.cpp -SOURCE AknFepUiInputStateEntryMiniQwertyZhuyinPhrase.cpp -SOURCE AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase.cpp -SOURCE AknFepUIInputStateEntryMiniQwertyCangJie.cpp -SOURCE aknfepuiinputminiqwertypinyinphrasebase.cpp -SOURCE aknfepuiinputminiqwertystrokephrasebase.cpp -SOURCE aknfepuiinputstateminiqwertystrokephrase.cpp -SOURCE aknfepinputstateminiqwertyzhuyinkeymap.cpp -SOURCE aknfepuiinputminiqwertyzhuyinphrasebase.cpp -SOURCE aknfepuiinputstateminiqwertyzhuyinphrase.cpp -SOURCE AknFepUiInputStateCandidateHalfQwertyChinesePhrase.cpp -SOURCE AknFepInputStateInitialChineseGenericHalfQwerty.cpp -SOURCE AknFepUiInputStatePredictiveCandidateHalfQwertyChinesePhrase.cpp -SOURCE aknfepuiinputstateentryhalfqwertyphrase.cpp -#endif - -// for thai -SOURCE AknFepUiInputStateInitialThaiMultitap.cpp -SOURCE AknFepUiInputStateInitialThaiPredictive.cpp -SOURCE AknFepUiInputStateEntryThaiPredictive.cpp -SOURCE AknFepThaiSCTSelector.cpp - -// for Japanese -SOURCE AknFepUiInputStateJapaneseBase.cpp -SOURCE AknFepUiInputStateInitialJapaneseBase.cpp -SOURCE AknFepUiInputStateInitialHiraganaKanji.cpp -SOURCE AknFepUiInputStateInitialHiragana.cpp -SOURCE AknFepUiInputStateInitialKatakana.cpp -SOURCE AknFepUiInputStateInitialLatinJapanese.cpp -SOURCE AknFepUiInputStateInitialFullNumber.cpp -SOURCE AknFepUiInputStateEntryJapaneseMultitap.cpp -SOURCE AknFepUiInputStateEntryHiraganaKanji.cpp -SOURCE AknFepUiInputStateEntryKatakana.cpp -SOURCE AknFepUiInputStateEntryLatinJapanese.cpp -SOURCE AknFepUiInputStateConversionHiraganaKanji.cpp -SOURCE AknFepUiInputStateCandidateHiraganaKanji.cpp -SOURCE AknFepUiInputStateCompletionJapaneseMultitap.cpp -SOURCE AknFepUiInputStateCompletionHiraganaKanji.cpp -SOURCE AknFepUiInputStateCompletionKatakana.cpp -SOURCE AknFepUiInputStateCompletionPredictiveHiraganaKanji.cpp -SOURCE AknFepUiInputStateCompletionLatinJapanese.cpp -SOURCE AknFepUiInputStateJapanesePredictiveBase.cpp -SOURCE AknFepUiInputStatePredictiveInputJapanese.cpp -SOURCE AknFepUiInputStateNextWordJapanesePredictive.cpp -SOURCE AknFepUiInputStateCandidateRetroActive.cpp - -// for Vietnamese -SOURCE AknFepUiInputStateInitialVietnameseMultitap.cpp -SOURCE AknFepVietnameseToneManager.cpp -SOURCE AknFepUiInputStateEntryVietnamesePredictive.cpp - -// for Qwerty -SOURCE AknFepUiInputStateQwerty.cpp -SOURCE AknFepPlugin.cpp -// for phraes creation -SOURCE aknfepinputstatecandidatepinyinphrasecreation.cpp -SOURCE aknfepinputstatespellingpinyinphrasecreation.cpp -SOURCE aknfepuserdbdlg.cpp -SOURCE aknfepuserdbquerydlg.cpp -SOURCE AknFepZhuyinAnalyser.cpp -SOURCE AknFepZhuyinAnalyserDb.cpp -SOURCE dbmanagement.cpp -SOURCE aknfepuiinputstateentrypinyinphrasecreation.cpp -SOURCE aknfepzhuyinconvertion.cpp -SOURCE aknfepzhuyinkeyhandler.cpp -SOURCE aknfepinputstatepinyinphrasecreationbase.cpp -SOURCE aknfepuiinputstatestrokephrasebase.cpp -SOURCE aknfepuiinputstateentryzhuyinphrasecreation.cpp -SOURCE aknfepuiinputstatezhuyinphrasecreationbase.cpp -SOURCE aknfepuiinputstateqwertykorean.cpp - -LIBRARY euser.lib -LIBRARY fepbase.lib -LIBRARY cone.lib -LIBRARY ws32.lib -LIBRARY eikcoctl.lib -LIBRARY eikctl.lib -LIBRARY eikcore.lib -LIBRARY ptiengine.lib // for PtiEngine -LIBRARY avkon.lib -LIBRARY commonengine.lib -LIBRARY bafl.lib -LIBRARY form.lib -LIBRARY eikdlg.lib -LIBRARY aknjapanesereading.lib -LIBRARY featmgr.lib -LIBRARY jplangutil.lib -LIBRARY apparc.lib -LIBRARY aknpictograph.lib -LIBRARY etext.lib -LIBRARY tagma.lib -LIBRARY gdi.lib -LIBRARY AknIcon.lib -LIBRARY egul.lib -LIBRARY hlplch.lib - -LIBRARY AknLayout2Scalable.lib -LIBRARY aknskins.lib -LIBRARY aknskinsrv.lib -LIBRARY uiklaf.lib - -LIBRARY fbscli.lib -LIBRARY efsrv.lib -LIBRARY CdlEngine.lib -LIBRARY apgrfx.lib - -#ifdef RD_SCALABLE_UI_V2 -LIBRARY peninputclient.lib -#endif - -LIBRARY CentralRepository.lib -LIBRARY CenRepNotifHandler.lib - -LIBRARY ecom.lib -LIBRARY AknfepUiInterface.lib - -#ifdef RD_TACTILE_FEEDBACK -LIBRARY touchfeedback.lib -#endif // RD_TACTILE_FEEDBACK - - -#ifdef RD_SCALABLE_UI_V2 -LIBRARY aknnotify.lib -#endif //RD_SCALABLE_UI_V2 -START WINS -BASEADDRESS 0x70500000 -END - - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/group/Iconlist.txt --- a/fep/aknfep/group/Iconlist.txt Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -/c8,1 qgn_indi_fep_arrow_left.bmp -/c8,1 qgn_indi_fep_arrow_right.bmp -/c8,1 qgn_indi_fep_arrow_up.bmp -/c8,1 qgn_indi_fep_arrow_down.bmp diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/group/aknfep_Data/ARM4_UDEB/TargetDataWindows.tdt Binary file fep/aknfep/group/aknfep_Data/ARM4_UDEB/TargetDataWindows.tdt has changed diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/group/aknfep_Data/ARM4_UREL/TargetDataWindows.tdt Binary file fep/aknfep/group/aknfep_Data/ARM4_UREL/TargetDataWindows.tdt has changed diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/group/aknfep_icons.mk --- a/fep/aknfep/group/aknfep_icons.mk Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -# -# Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0"" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# - -ifeq (WINS,$(findstring WINS, $(PLATFORM))) -ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\Z -else -ZDIR=\epoc32\data\z -endif - -# ---------------------------------------------------------------------------- -# Configuration for AknFep icons. -# ---------------------------------------------------------------------------- - -TARGETDIR=$(ZDIR)\system\data -HEADERDIR=\epoc32\include -ICONTARGETFILENAME=$(TARGETDIR)\aknfepuictrls.mif -HEADERFILENAME=$(HEADERDIR)\aknfepuictrls.mbg - -do_nothing : - @rem do_nothing - -MAKMAKE : do_nothing - -BLD : do_nothing - -CLEAN : - if exist $(ICONTARGETFILENAME) @del $(ICONTARGETFILENAME) - if exist $(HEADERFILENAME) @del $(HEADERFILENAME) - if exist $(TARGETDIR)\aknfepuictrls.mbm @del $(TARGETDIR)\aknfepuictrls.mbm - -LIB : do_nothing - -CLEANLIB : do_nothing - -# ---------------------------------------------------------------------------- -# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by -# MifConv if the mask depth is defined. -# -# NOTE 2: Usually, source paths should not be included in the bitmap -# definitions. MifConv searches for the icons in all icon directories in a -# predefined order, which is currently \s60\icons, \s60\bitmaps2. -# The directory \s60\icons is included in the search only if the feature flag -# __SCALABLE_ICONS is defined. -# ---------------------------------------------------------------------------- - -RESOURCE: - mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) /Ficonlist.txt - -FREEZE : do_nothing - -SAVESPACE : do_nothing - -RELEASABLES : - @echo $(HEADERFILENAME)&& \ - @echo $(ICONTARGETFILENAME) - -FINAL : do_nothing \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/group/aknfep_icons_dc.mk --- a/fep/aknfep/group/aknfep_icons_dc.mk Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -# -# Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0"" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# - -ifeq (WINS,$(findstring WINS, $(PLATFORM))) -ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\Z -else -ZDIR=\epoc32\data\z -endif - -# ---------------------------------------------------------------------------- -# Configuration for AknFep icons. -# ---------------------------------------------------------------------------- - -TARGETDIR=$(ZDIR)\resource\apps -HEADERDIR=\epoc32\include -ICONTARGETFILENAME=$(TARGETDIR)\aknfepuictrls.mif -HEADERFILENAME=$(HEADERDIR)\aknfepuictrls.mbg - -do_nothing : - @rem do_nothing - -MAKMAKE : do_nothing - -BLD : do_nothing - -CLEAN : - if exist $(ICONTARGETFILENAME) @del $(ICONTARGETFILENAME) - if exist $(HEADERFILENAME) @del $(HEADERFILENAME) - if exist $(TARGETDIR)\aknfepuictrls.mbm @del $(TARGETDIR)\aknfepuictrls.mbm - -LIB : do_nothing - -CLEANLIB : do_nothing - -# ---------------------------------------------------------------------------- -# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by -# MifConv if the mask depth is defined. -# -# NOTE 2: Usually, source paths should not be included in the bitmap -# definitions. MifConv searches for the icons in all icon directories in a -# predefined order, which is currently \s60\icons, \s60\bitmaps2. -# The directory \s60\icons is included in the search only if the feature flag -# __SCALABLE_ICONS is defined. -# ---------------------------------------------------------------------------- - -RESOURCE: - mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) /Ficonlist.txt - -FREEZE : do_nothing - -SAVESPACE : do_nothing - -RELEASABLES : - @echo $(HEADERFILENAME)&& \ - @echo $(ICONTARGETFILENAME) - -FINAL : do_nothing diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/group/bld.inf --- a/fep/aknfep/group/bld.inf Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* -* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Bldmake component description file. -* -*/ - - - - - - - - - - - - -#include - -PRJ_EXPORTS -// specify the source file followed by its destination here -// copy will be used to copy the source file to its destination -// If there's no destination then the source file will be copied -// to the same name in /epoc32/include - -../inc/AknFepManagerInterface.h |../../../inc/AknFepManagerInterface.h -../inc/AknFepManagerUIInterface.h |../../../inc/AknFepManagerUIInterface.h -../inc/AknFepUiIndicEnums.h |../../../inc/AknFepUiIndicEnums.h -../inc/aknfeppeninputimeplugin.h |../../../inc/aknfeppeninputimeplugin.h -../inc/AknFepVietnameseInputTables.h |../../../inc/aknFepVietnameseInputTables.h - -//From AknFepUiInterface - -../UiPlugins/AknFepUiInterface/inc/AknFepIndicator.h |../../../inc/aknfepindicator.h -../UiPlugins/AknFepUiInterface/inc/AknFepUICtrlCandidatePane.h |../../../inc/AknFepUICtrlCandidatePane.h -../UiPlugins/AknFepUiInterface/inc/AknFepUICtrlCandidatePaneInterface.h |../../../inc/AknFepUICtrlCandidatePaneInterface.h -../UiPlugins/AknFepUiInterface/inc/AknFepUiCtrlContainerChinese.h |../../../inc/AknFepUiCtrlContainerChinese.h -../UiPlugins/AknFepUiInterface/inc/AknFepUICtrlContainerJapanese.h |../../../inc/AknFepUICtrlContainerJapanese.h -../UiPlugins/AknFepUiInterface/inc/AknFepUICtrlInputPane.h |../../../inc/AknFepUICtrlInputPane.h -../UiPlugins/AknFepUiInterface/inc/AknFepUICtrlPinyinPopup.h |../../../inc/AknFepUICtrlPinyinPopup.h -../UiPlugins/AknFepUiInterface/inc/AknFepUiStylusPopupMenu.h |../../../inc/AknFepUIStylusPopupMenu.h -../UiPlugins/AknFepUiInterface/inc/aknfepuictrleditpane.h |../../../inc/aknfepuictrleditpane.h -#ifdef RD_INTELLIGENT_TEXT_INPUT -../UiPlugins/AknFepUiInterface/inc/AknFepCandidatePopup.h |../../../inc/AknFepCandidatePopup.h -../UiPlugins/AknFepUiInterface/inc/AknFepCandidatePopupCallback.h |../../../inc/AknFepCandidatePopupCallback.h -../UiPlugins/AknFepUiInterface/inc/AknFepUiWordPopupContent.h |../../../inc/AknFepUiWordPopupContent.h -#endif //RD_INTELLIGENT_TEXT_INPUT - - -../rom/aknfep_variant.iby CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(aknfep_variant.iby) -../rom/aknfepResources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(aknfepResources.iby) -../rom/aknfepuiinterface.iby CORE_MW_LAYER_IBY_EXPORT_PATH(aknfepuiinterface.iby) -//../rom/peninputimeplugincn_Variant.iby CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(peninputimeplugincn_Variant.iby) -//../rom/peninputimeplugingeneric.iby CORE_MW_LAYER_IBY_EXPORT_PATH(peninputimeplugingeneric.iby) -//../rom/peninputimepluginitut_Variant.iby CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(peninputimepluginitut_Variant.iby) -//../rom/PeninputPluginKr.iby CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(PeninputPluginKr.iby) -//../rom/peninputimepluginjp_Variant.iby CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(peninputimepluginjp_Variant.iby) - -// Generic configuration interface for component cenrep settings -../conf/aknfep.confml APP_LAYER_CONFML(aknfep.confml) -../conf/aknfep_japan.confml CONFML_EXPORT_PATH(aknfep_japan.confml,japan) -../conf/aknfep_thai.confml CONFML_EXPORT_PATH(aknfep_thai.confml,thai) -../conf/aknfep_101F876D.crml APP_LAYER_CRML(aknfep_101F876D.crml) - - -PRJ_MMPFILES -// specify the .mmp files required for building the important component releasables -// note that you should specify any .mmp files for test programs further down the file. -// -// Use C++ style #defines to denote that a component is only built for a particular platform - -//gnumakefile aknfep_icons_dc.mk -../group/AknFep.mmp -../UiPlugins/AknFepUiInterface/group/AknFepUiInterface.mmp -../UiPlugins/AknFepUiInterface/AvkonImpl/group/AknFepUiAvkonPlugin.mmp - -#ifdef RD_SCALABLE_UI_V2 -//../peninputplugins/peninputimepluginitut/group/peninputimepluginitut.mmp -//../peninputplugins/peninputimeplugincn/group/peninputimeplugincn.mmp -//../peninputplugins/peninputimepluginjp/group/peninputimepluginjp.mmp -//../peninputplugins/peninputimeplugingeneric/group/peninputimeplugingeneric.mmp -//../peninputplugins/PeninputPluginKr/group/PeninputPluginKr.mmp -#endif //RD_SCALABLE_UI_V2 - - -PRJ_EXTENSIONS -START EXTENSION s60/mifconv -OPTION TARGETFILE aknfepuictrls.mif -OPTION HEADERFILE aknfepuictrls.mbg -OPTION SOURCES -c8,1 qgn_indi_fep_arrow_left.bmp -c8,1 qgn_indi_fep_arrow_right.bmp -c8,1 qgn_indi_fep_arrow_up.bmp -c8,1 qgn_indi_fep_arrow_down.bmp -END -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/group/fep.ini --- a/fep/aknfep/group/fep.ini Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -(AknFep.fep diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/group/fep_ecom.ini --- a/fep/aknfep/group/fep_ecom.ini Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -0::0x101FD65A \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFep.hrh --- a/fep/aknfep/inc/AknFep.hrh Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource headers for project AknFep -* -*/ - - - - - - - - - - - -#ifndef AKNFEP_HRH -#define AKNFEP_HRH - -// MyListBox enumerate command codes -enum - { - EAknCmdUserDBAdd = 0x6001, - EAknCmdUserDBEdit, - EAknCmdUserDBDelete, - EAknCmdMarkOrUnmark, - EShowInfoLabel1, - EShowInfoLabel2, - EShowInfoLabel3, - EShowInfoLabel4, - EProgressNoteId, - EAknCmdSoftkeyExit - }; - -#endif // AKNFEP_HRH diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepCaseManager.h --- a/fep/aknfep/inc/AknFepCaseManager.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,295 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#ifndef _AKNFEP_CASE_MANAGER_H__ -#define _AKNFEP_CASE_MANAGER_H__ - -#include "AknFepManager.h" - -#include - -class CAknEdwinState; -class CAknPictographInterface; - - -class CAknFepCaseManager : public CBase - { -private: - enum AknFepCaseManagerConsts - { - ETextCaseCharactersBufferMaxSize =16 - }; - -public: - /** - * Two phase constructor for this class - */ - static CAknFepCaseManager* NewL(CAknFepManager& aFep); - - /** - * C++ Destructor - */ - ~CAknFepCaseManager(); - -public: - /** - * Configure the current case state of the system based on the current - * editor state - */ - void ConfigureCaseStateFromEditorState(); - - /** - * Start an automatic case update - determines the case of the next - * character based on the rules governing auto case update and applies - * this change accordingly - * - * @param aNaviEvent the type of event which prompted the case update - * (affects the final cursor position) - */ - void UpdateCase(TWesternNaviEvent aNaviEvent); - - /** - * Starts a manual case update - */ - void ManualCaseUpdate(); - - /** - * Reverts the case of text input to the previous one in order to - * back out unneccasary case changes - */ - void RevertCaseChange(); - - /** - * Set the case of text input - * - * @param aCase the case of the next character - * @param aOverrideNumericTest Isn't used in most cases, but if set, handles - * numeric mode as normal mode. Needed for selection - * style hash key loop implementation. - */ - void SetCurrentCase(TInt aCase, TBool aOverrideNumericTest = EFalse); - - /** - * Return the current case of text input - * - * @return integer representing an enumerated value of the current case - */ - TInt CurrentCase() const; - - /** - * check whether case can be changed - * - * @return Eture if case can be changed - */ - TBool IsAbleChangeCase() const; - - TInt PluginPermittedCases(); - - TBool CapsLockRequired(TInt aCurrentCase); - /* Teleca change begin, 18.08.2009 ssal */ - /** - * Determines whether a character is one of Korean characters - * @param aChar the charcter to be checked - * @return ETrue if aChar is Korean character - */ - TBool IsKoreanCharacter( TChar aChar ) const; - /* Teleca change end, 18.08.2009 ssal */ -private: - /** - * C++ Constructor - */ - CAknFepCaseManager(CAknFepManager& aFep); - - /** - * Second phase constructor for this class - */ - void ConstructL(); - - /** - * Determines the position the cursor will be in when a navigation event is - * complete. This is used to determine the required case at that position. - * - * @param aNaviEvent the type of event after which the case will be updated - * @return The position in the document of the cursor when aNaviEvent is - * complete - */ - TInt FindCursorPositionAtCaseCheck(TWesternNaviEvent aNaviEvent); - - /** - * Determines, based on the case rules, whether text case needs to be - * applied for text input i.e. whether the next character needs - * to be entered in upper case and subsequent characters in lower case - * - * @return ETrue if text case needs to be applied for the next - * character - */ - TBool TextCaseRequired(TInt aCursorPos); - - /** - * Determines, based on the case rules, whether or not caps lock input style - * needs to be applied i.e. if the current case is upper and we should stay - * in upper following the entry of the next character - * - * @return ETrue if caps lock input style is to be applied - */ - TBool CapsLockRequired(TInt aCursorPos, TInt aCurCase); - - /** - * Determines the case of text input based on the rules governing - * case updates atarted by the user and applies this change accordingly - */ - void DoManualCaseUpdate(); - - /** - * Applies the case change in the ptiengine (via the engine interface) and - * updates the edit state indicators accordingly - */ - void ApplyCase(); - - /** - * Sets the system to be in fixed case. No case updates are permitted - * in this state - * - * @param aFixedCase if ETrue then no case updates are subsequently - * permitted - */ - void SetFixedCase(TBool aFixedCase); - - /** - * Determines if the current editor has the fixed case flag set - * - * @return ETrue if the fixed case flag is set on the current editor - */ - TBool CurrentEditorIsFixedCase() const; - - /** - * Determines if a case is one which is allowed in the current editor - * based on the editor's configuration - * - * @param aCase the case to be checked - * @return ETrue if aCase is permitted by the current editor - */ - TBool IsCasePermitted(TInt aCase) const; - - /** - * - * - * - * @param aChar the charcter to be checke - * @return ETrue - */ - TBool IsTextCaseCharacter(TChar aChar) const; - - /** - * - * - * - * @param aChar the charcter to be checked - * @return ETrue if aChar is full or half alphabet - */ - TBool IsAlpha(TChar aChar) const; - - /** - * Determines whether a character is one of Japanese characters - * Japanese character is included as below: - * - Hiragana/Kanji - * - Katakana (Both half and full) - * - Symbol (Full-width only) - * (including Full-width Full-Stop) - * - * @since S60 v3.1 - * @param aChar the charcter to be checked - * @return ETrue if aChar is Japanese character - */ - TBool IsJapaneseCharacter(TChar aChar) const; - - /* Teleca change begin, 18.08.2009 ssal */ - /** - * Determines whether a character is one of Korean hangul syllable - * @param aChar the charcter to be checked - * @return ETrue if aChar is korean character - */ - TBool IsHangulSyllable(TChar aChar) const; - - /** - * Determines whether a character is one of Korean hangul compatibility Jamo Syllable - * @param aChar the charcter to be checked - * @return ETrue if aChar is Korean character - */ - TBool IsHangulCompatibilityJamo(TChar aChar) const; - /* Teleca change begin, 18.08.2009 ssal */ - -public: - /** - * Calls to ManulaCaseUpdate() in lower case situation will switch to - * upper case even if text case would be normally selected. - */ - inline void SetForceUpperCase(); - - /** - * Clear force upper case flag (see SetForceUpperCase()). - */ - inline void ClearForceUpperCase(); - - inline TBool IsInverseCase() const; - inline void SetInverseCase( TBool aVal ); - -private: - CAknFepManager& iFep; //not owned - CAknPictographInterface* iPictoInterface; //owned - - TInt iCurrentCase; - TInt iPreviousCase; - TBool iFixedCase; - TBool iForceUpperCase; - TBool iInverseCase; - TBufC iTextCaseCharacters; - }; - -inline void CAknFepCaseManager::SetForceUpperCase() - { - iForceUpperCase = ETrue; - } - - -inline void CAknFepCaseManager::ClearForceUpperCase() - { - iForceUpperCase = EFalse; - } - -inline TBool CAknFepCaseManager::IsInverseCase() const - { - return iInverseCase; - } - -inline void CAknFepCaseManager::SetInverseCase( TBool aVal ) - { - iInverseCase = aVal; - } - -#endif //_AKNFEP_CASE_MANAGER_H__ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepFnKeyManager.h --- a/fep/aknfep/inc/AknFepFnKeyManager.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides CAknFepManager definition -* -*/ - - - - - - - - - - - - -#ifndef _AKNFEP_FNKEY_MANAGER_H__ -#define _AKNFEP_FNKEY_MANAGER_H__ - - -#include -#include -#include -#include //TCoeInputCapabilities - -#include - -#include "AknFepGlobalEnums.h" -#include "AknFepSharedDataInterface.h" - - -class CAknFepManager; -class CAknIndicatorContainer; - -/** - * FnKey State machine - * - * @since S60 v3.2 - */ -class CAknFepFnKeyManager : public CBase - { - -public: - - /** Fn key states */ - enum TFnKeyState - { - EFnKeyNone, - EFnKeyPressed, - EFnKeyDown, - EFnKeyNext, - EFnKeyPressedAgain, - EFnKeyLock, - EFnKeyForced, - EFnKeyReversePressed, - EFnKeyReverse - }; - -public: - static CAknFepFnKeyManager* NewL( CAknFepManager& aFepMan,CAknFepSharedDataInterface* - aSharedDataInterface ); - ~CAknFepFnKeyManager(); - -public: - /* - * Resets the Function Key State - */ - void ClearFnKeyState(); - - void SetQwertyInputMode(TBool aQwertyState); - - /* - * Handles the Fn key event to change the state appropriately. - */ - TKeyResponse CAknFepFnKeyManager::HandleFnKeyEventL( const TKeyEvent& aKeyEvent, - TEventCode aEventCode, - TCoeInputCapabilities aInputCapabilities - ); - - void SetCase( TCase aCase ); - - TFnKeyState FnKeyState(); - void SetFnKeyState(CAknFepFnKeyManager::TFnKeyState aState); -private: - - CAknFepFnKeyManager( CAknFepManager& aFepMan, - CAknFepSharedDataInterface* aSharedDataInterface); - void ConstructL(); - - // For Shift Key handling. - void UpdatePreviousCase(); - - -private: // data - CAknFepManager &iFepMan; //not own - TCoeInputCapabilities iInputCapabilities; - TFnKeyState iFnKeyState; - TBool iIsQwertyMode; - - /** - * Pointer to the Indicator Container object containing editor indicators. - * Not own. - */ - CAknIndicatorContainer* iIndicatorContainer; - CAknFepSharedDataInterface* iSharedDataInterface; - - // For Shift key handling. - TInt iPreviousCase; - TBool iShiftKeyPressed; - - // For QWERTY Predictive - TBool iWasPreviousModePredictive; - TBool iPreviousKeyWasFnKey; - }; - -#endif // ? _AKNFEP_FNKEY_MANAGER_H__ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepHashKeyManager.h --- a/fep/aknfep/inc/AknFepHashKeyManager.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,195 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#ifndef _AKNFEP_HASHKEY_MANAGER_H__ -#define _AKNFEP_HASHKEY_MANAGER_H__ - -#include -#include -#include - -#include "AknFepGlobalEnums.h" - -class CAknFepManager; -class CAknFepCaseManager; -enum TKeyResponse; -enum TKeyPressLength; - -class CAknFepHashKeyManager : public CBase - { -public: - enum THashKeyStyle - { - EHashKeyStyleWestern, - EHashKeyStyleChineseWithWestern, - EHashKeyStyleJapanese, - EHashKeyStyleKoreanWithWestern - }; - -public: - static CAknFepHashKeyManager* NewL(CAknFepManager& aFepMan, CAknFepCaseManager* aCaseMan); - ~CAknFepHashKeyManager(); - TKeyResponse HandleKeyEventL(TKeyPressLength aLength); - void SetMode(TInt aMode, TBool aWesternPredictive); - - /** - * Changes the hash key functionality. - */ - void SetHashKeyStyle(THashKeyStyle aHashKeyStyle); - - /** - * Cancels the hash key timer. - */ - void CancelHashKeyTimer(); - - inline void ClearSelectionModeHashKeyLoop(); - - void SetPreviousSelectionStyleModeL(); - /** - * To Handle the Indic Hash key Loop State - * - * Set the New State or Mode based on the editor after Fep is configured from Editor - * @since 3.2 - * @return nothing - */ - void ResetIndicHashKeyStateL(); - - /** - * Reset the flag of previous selection - * - * @since 3.2 - * @return nothing - */ - void ResetPreviousSelectionStyleMode(); -#ifdef RD_HINDI_PHONETIC_INPUT - /** - * To Handle SetIndicStateL method - * - * helps in handling case changes - * @since 5.0 - * @return nothing - */ - void HandleSetIndicStateL(); -#endif - -private: - CAknFepHashKeyManager(CAknFepManager& aFepMan, CAknFepCaseManager* aCaseMan); - void ConstructL(); - static TInt HashKeyTimerTimeoutCallback(TAny* aObj); - void HashKeyTimerTimeout(); - TKeyResponse HandleKeyWesternSelectionStyleL(TKeyPressLength aLength); - void SetSelectionStyleModeL(); - /** - * To Handle Indic Hash key Loop - * - * Set the New State or Mode based on the existing mode - * @since 3.2 - * @return EKeyWasConsumed - */ - TKeyResponse SetIndicStateL(); - - /** - * To Handle Indic Hash key Loop - * - * Change back to the Previous State or Mode - * @since 3.2 - * @return EKeyWasConsumed - */ - TKeyResponse SetIndicPreviousStateL(); - - /** - * To Handle Indic Hash key Loop - * - * To verify if Indic hash key Loop is required. - * @since 3.2 - * @return ETrue if Shared Interface input Language is Indic and given editor is not Latin-Only - */ - TBool IsIndicHashKeyStyleRequired(); - - - /** - * To Handle Indic Hash key Loop - * - * Set the Style for the State - * @since 3.2 - * @return nothing - */ - void SetIndicSelectionStateL(); - - - /** - * To Handle Indic Hash key Loop - * - * Update the case information - * @since 3.2 - * @return nothing - */ - void UpdateCaseForIndicHashLoop(); - - /** - * Reverts predictive text setting change. This method can be used - * if short key press of hash key changed predictive text - * setting in non-case supported languages and actually long key press - * action was handled. Not used with Chinese languages. - */ - void RevertPredictiveTextSettingChangeL(); - - TKeyResponse HandleKeyWesternL(TKeyPressLength aLength); - TKeyResponse HandleKeyWesternWithChineseL(TKeyPressLength aLength); - TKeyResponse HandleKeyJapaneseL(TKeyPressLength aLength); - TKeyResponse HandleLongKeypressJapaneseL(); - TKeyResponse HandleSortKeypressJapaneseL(); - TKeyResponse HandleKeyWesternWithKoreanL(TKeyPressLength aLength); - -private: - THashKeyStyle iHashKeyStyle; - TInt iMode; - TBool iLastModeNumber; - - CPeriodic* iHashKeyTimer; //owned - - CAknFepManager& iFepMan; //not owned - CAknFepCaseManager* iCaseMan; - TBool iWesternPredictive; - - TInt iSelectionLoopIndex; - TInt iIndicSelectionLoopIndex; - TUint8 const * iSelectionLoop; - TBool iLanguageChangedOrChangeFromNumberMode; - TBool iIndicPredictiveState; - TCursorSelection iPreviousIndicCursorPosition; - TBool iPreviousSelection; // used by Japanese - }; - -inline void CAknFepHashKeyManager::ClearSelectionModeHashKeyLoop() - { - iSelectionLoop = NULL; - iSelectionLoopIndex = 0; - } - -#endif //_AKNFEP_HASHKEY_MANAGER_H__ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepInlineTextDecorator.h --- a/fep/aknfep/inc/AknFepInlineTextDecorator.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,166 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#ifndef _AKNFEP_INLINE_TEXT_DECORATOR_H__ -#define _AKNFEP_INLINE_TEXT_DECORATOR_H__ - -#include - -class CAknFepInlineTextDecorator : public CBase - { -public: - enum - { - ELeftToRightMark = 0x200E, // LRM - ERightToLeftMark = 0x200F // RLM - }; -private: - enum - { - ENullChar = 0, - ESingleCharacter = 1, - ETwoCharacters = 2 - }; - -public: - /** - * Applies required markup to a piece of bidirectional text to ensure correct - * rendering for Averell - * - * @param aInlineText original inline text - * @param aDecoratedText descriptor which will hold the original text plus - * any decoration - * @param aPositionOfInsertionPointInInlineText position of insertion point - * (cursor) in the original inline text - * @param aPreviousCharacter the character immediately prior to the inline - * text - * @param aRTLParagraph set to true if the inline text is being inserted into - * a paragraph with RTL directionality in the CParaFormat - * @param aInputDirectionIsRtl is to be set to ETrue if the current input direction is RTL - */ - void DecorateInlineText( - const TDesC& aInlineText, - TDes& aDecoratedText, - TInt& aPositionOfInsertionPointInInlineText, - TChar aPreviousCharacter, - TBool aRTLParagraph, - TBool aInputDirectionIsRTL); - - /** - * Resolves any decorated text + any surrounding text that has been added to the beginning - * or end to remove unnecessary directional markers. - * - * @param aDecoratedTextPlusSurroundings descriptor to hold a piece of text to be parsed - * and resolved; new text, optionally with accreted surrounding text - * @param aDecoratedTextSpan span of text originally inspected and decorated (must be subset of descriptor) - * - * @return EFalse if and only if no change was made to aDecoratedTextPlusSurroundings - */ - TBool ResolveDecoratedText( - TDes& aDecoratedTextPlusSurroundings, - TCursorSelection aDecoratedTextSpan); - - /** - * Determines if a character is an LRM (0x200e) or an RLM (0x200f) - * - * @param aChar the character to be inspected - * @return ETrue if the character has the value 0x200e or 0x200f - */ - TBool CharacterIsDirectionalMarker(TChar aChar); - - /** - * Determines if a character has strong LTR directionality - * - * @param aChar the character to be inspected - * @return ETrue if the character has bidi category of TChar::ELeftToRight - * or is an LRM - */ - TBool CharacterIsStrongLeftToRight(TChar aChar); - - /** - * Determines if a character has strong RTL directionality - * - * @param aChar the character to be inspected - * @return ETrue if the character has bidi category of TChar::ERightToLeft - * or is an RLM - */ - TBool CharacterIsStrongRightToLeft(TChar aChar); - - /** - * Determines if two characters share the same strong directionality - * - * @param aCh1 the first character to be compared - * @param aCh2 the second character to be compared - * @return ETrue if aCh1 and aCh2 share the same strong directionality - */ - TBool CharactersHaveSameStrongDirection(TChar aCh1, TChar aCh2); - - /** - * Determines if a character has weak directionality - * - * @param aChar the character to be inspected - * @return ETrue if the character has any of the following bidi categories - * TChar::EEuropeanNumber - * TChar::EEuropeanNumberSeparator - * TChar::EEuropeanNumberTerminator - * TChar::EArabicNumber - * TChar::ECommonNumberSeparator - */ - TBool CharacterIsWeaklyDirectional(TChar aChar); - - /** - * Determines if a character is a separator character - * - * @param aChar the character to be inspected - * @return ETrue if the character has any of the following bidi categories - * TChar::EParagraphSeparator - * TChar::ESegmentSeparator - */ - TBool CharacterIsSeparator(TChar aChar); - - /** - * Determines if a character has neutral directionlaity - * - * @param aChar the character to be inspected - * @return ETrue if the character has any of the following bidi categories - * TChar::EWhitespace - * TChar::EOtherNeutral - */ - TBool CharacterIsNeutral(TChar aChar); - -private: - void DecorateNeutralCharacters( - const TDesC& aInlineText, - TDes& aDecoratedText, - TInt& aPositionOfInsertionPointInInlineText, - TChar aPreviousCharacter, - TBool aRTLParagraph, - TBool aInputDirectionIsRTL); - }; - -#endif diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepKeyCatcher.h --- a/fep/aknfep/inc/AknFepKeyCatcher.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,163 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepKeyCatcher definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_INPUT_FEP_KEYCATCHER_H__ -#define __AKN_INPUT_FEP_KEYCATCHER_H__ - -#include //CCoeControl -#include -#include "AknFepGlobalEnums.h" - -class CAknFepManager; - -/** - * Interface class to allow ability to switch into a test mode, where a different - * key catcher is used, i.e. to print values of keys received on the screen. - */ -class CAknFepKeyCatcherInterface : public CCoeControl - { -public: - virtual void SetState(const TAknFepManagerState aState) = 0; - virtual ~CAknFepKeyCatcherInterface(); - virtual void HandleChangeInFocus(); - }; - -/** - * The Key Catcher sits sits on top of the control stack and does some basic, primary processing - * of all key presses. ` - */ -class CAknFepKeyCatcher : - -#ifdef RD_SCALABLE_UI_V2 - public MCoeMessageMonitorObserver, -#endif //RD_SCALABLE_UI_V2 - public CAknFepKeyCatcherInterface - { - -private: - /** - * values for the flags required to maintain the internal - * state of the Key Catcher during operation - */ - enum - { - EFlagLongKeyPressHandled =0x00000001, - EFlagBlockAllLongKeyPressEvents =0x00000002 - }; - -public: - /** - * First phase construction - * - * @param aFepMan the Fep Manager object which owns this key catcher object. - */ - static CAknFepKeyCatcher* NewL(CAknFepManager& aFepMan); - - /** - * Destructor - */ - virtual ~CAknFepKeyCatcher(); - - - /** - * from CCoeControl - * Key Catcher. Ignores keys when Fep is in null mode (no editor focused) - * and does first stage filtering - */ - virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode); - - /** - * interface for FepMan to set the Key Catcher's internal state object - */ - virtual void SetState(const TAknFepManagerState aState); - -private: - /** - * C++ Constructor - */ - CAknFepKeyCatcher(CAknFepManager& aFepMan); - - /** - * Second phase construction - */ - void ConstructL(); - - TKeyResponse HandleHashKeyJapaneseL(const TKeyEvent& aKeyEvent, TEventCode aEventCode); - - /** - * from CCoeControl - * Handles a change to the control's resources. - * @param aType A message UID value - */ - void HandleResourceChange(TInt aType); -#ifdef RD_SCALABLE_UI_V2 - void MonitorWsMessage(const TWsEvent& aEvent); -#endif - inline void SetFlag(TInt aFlag); - inline void ClearFlag(TInt aFlag); - inline TBool IsFlagSet(TInt aFlag) const; - TBool IsNaviKey(TUint aCode); -private: - // Data not owned - CAknFepManager& iFepMan; - - TAknFepManagerState iKeyCatcherState; - TUint iFlags; - TKeyPressLength iKeyPressLength; - TInt iLongPressedScanCode; - }; - -/** - * Sets aFlag bitfield in iFlags - */ -inline void CAknFepKeyCatcher::SetFlag(TInt aFlag) - { - iFlags|=aFlag; - } - -/** - * Clears aFlag bitfield in iFlags - */ -inline void CAknFepKeyCatcher::ClearFlag(TInt aFlag) - { - iFlags&=~aFlag; - } - -/** - * Returns ETrue if the aFlag bitfield in iFlags is set, EFalse if it - * is clear - */ -inline TBool CAknFepKeyCatcher::IsFlagSet(TInt aFlag) const - { - return iFlags&aFlag; - } - -#endif - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepLanguageManager.h --- a/fep/aknfep/inc/AknFepLanguageManager.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,274 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Declaration of core part of CAknFepLanguageManager class. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_LANGUAGE_MANAGER__H__ -#define __AKN_FEP_LANGUAGE_MANAGER__H__ - -// INCLUDES -#include -#include -#include - -#include "AknFepGlobalEnums.h" // TWidthChar - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATION -class CAknFepPenInputImePlugin; -class MInputMethodInterface; - -// CLASS DECLARATION -class MAknFepManagerInterface; -class MAknFepManagerUIInterface; -class CAknFepCaseManager; -class RPeninputServer; -class TImePlguinImplDetail; -class CAknFepPluginManager; - -/** - * CAknFepLanguageManager is a part of Japanese FEP. - * - * @lib AknFep.lib - * @since 2.6 - * @see CAknFepManager, other application - */ -class CAknFepLanguageManager : public CBase - { -private: // enum - enum - { - EUiManWestern, - EUiManChinese, - EUiManJapanese, - EUiManKorean, - EUiManMax - }; - -public: // Constructer and Destructor - /** - * first phase construction - * - * @since 2.6 - * @param aFepMan - * @param aCaseMan - * @param aLanguage - */ - static CAknFepLanguageManager* NewL(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan); - - /** - * Destructor. - * - * @since 2.6 - */ - virtual ~CAknFepLanguageManager(); - -public: // New Functions - /** - * get ui manager object. - * - * @since 2.6 - * @param aMode - * @param aCharacterWidth - * @param aPredictive - * @return - */ - MAknFepManagerInterface* GetFepUI(TInt aMode, TWidthChar aCharacterWidth, TBool aPredictive); - - /** - * set language id to ui manager. - * - * @since 2.6 - * @param aMode - * @param aCharacterWidth - * @param aPredictive - * @return - */ - void SetInputLanguageL(TInt aInputLanguage); - - TLanguage InputLanguage() - { - return (TLanguage)iInputLanguage; - } - - /** - * Get plugin UI manager object. - * - * @since S60 v3.2 - * - * @param aPreferedMode The prefered plugin input mode. If prefered mode is not available - * a substitute choice (according UI sepc) is returned. - * @param aPenInputLan Current pen input language. - * @param aDisplayLang Current phone display language - * @param aPenServer The pen input server object. - * @return Plugin UI manager. - */ - MAknFepManagerInterface* GetPluginInputFepUiL(TPluginInputMode aPreferedMode, - TInt aPenInputLang, - TInt aDisplayLang, - RPeninputServer* aPenServer); - - /** - * Test specified plugin UI mode is support or not - * - * @since S60 v3.2 - * - * @param aMode The plugin input mode to test. - * @param aPenInputLan Current pen input language. - * @param aPenServer The pen input server object. - * @return ETrue if support, EFalse otherwise. - */ - TBool IsPluginInputAvaiable(TPluginInputMode aMode, - TInt aPenInputLang, - RPeninputServer* aPenServer); - - /** - * Set split view flag - * - * @since S60 v3.2 - * - * @param aIsSplitView - * @return None - */ - void SetSplitView(TBool aIsSplitView); - - /** - * Get current IME plugin object. - * - * @since S60 v3.2 - * - * @return IME Plugin object. - */ - inline CAknFepPenInputImePlugin* CurrentImePlugin(); - - /** - * Get split view flag - * - * - * @since S60 v3.2 - * @return ETrue if split view flag is set - */ - inline TBool IsSplitView(); - -private: // New Functions - /** - * private c++ constructor. - * - * @since 2.6 - */ - CAknFepLanguageManager(MAknFepManagerUIInterface* aFepManager, - CAknFepCaseManager* aCaseManager); - - /** - * Second phase construction - * - * @since 2.6 - */ - void ConstructL(); - - void ConstructUiManagerL(); - - TInt UiManagerId(); - - - - /** - * Activate IME plugin by implemenation. - * If current IME plugin's impl id is equal to aImeImplId, then current - * IME plugin object is returned. - * - * @since S60 v3.2 - * - * @param aImeImplId The IME implementation ID. - * @param aPenServer The pen input server object. - * @return IME Plugin imeplementation ID. - */ - CAknFepPenInputImePlugin* ActivateImePlugin(TInt aImeImplId, RPeninputServer* aPenServer); - - /** - * Activate IME plugin's UI by mode. - * - * @since S60 v3.2 - * - * @param aImePlugin The IME plugin object. - * @param aMode The mode of layout UI. - * @return The Plugin UI interface. - */ - MAknFepManagerInterface* ActivateLayoutUiPluginL(CAknFepPenInputImePlugin* aImePlugin, - TInt aPenInputLang, - TPluginInputMode aMode); - - TBool IsPluginInputAvaiableL(TPluginInputMode aMode, - TInt aPenInputLang, - RPeninputServer* aPenServer); - - -private: // Data - CArrayPtr* iUiManArray; - TInt iInputLanguage; - MAknFepManagerUIInterface* iFepManager; - CAknFepCaseManager* iCaseManager; - CAknFepPluginManager* iPluginManager; - - /** - * Current IME plugin object. Own. - * @since S60 v3.2 - */ - CAknFepPenInputImePlugin* iCurImePlugin; - - /** - * Current layout UI object. Not own. - * @since S60 v3.2 - */ - MAknFepManagerInterface* iCurUiPlugIn; - - /** - * Is split view flag - * @since S60 v3.2 - */ - TBool iIsSplitView; - }; - -inline CAknFepPenInputImePlugin* CAknFepLanguageManager::CurrentImePlugin() - { - return iCurImePlugin; - } - -inline TBool CAknFepLanguageManager::IsSplitView() - { - return iIsSplitView; - } - -#endif // __AKN_FEP_LANGUAGE_MANAGER__H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepManager.h --- a/fep/aknfep/inc/AknFepManager.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3170 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepManager definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_MANAGER_H__ -#define __AKN_FEP_MANAGER_H__ - -#include "AknFepGlobalEnums.h" //TKeyPressLength -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepLanguageManager.h" //CAknFepLanguageManager -#include -#include "aknfepuiinterface.h" -#include "aknfepuimenus.h" -#include //CCoeFep -#include //TCoeInputCapabilities -#include //MFepInlineTextFormatRetriever -#include //MAknEdStateObserver -#include //TAknEditorNumericKeymap -#include //TAknEditingState -#include -#include -#include -#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#endif - -#include -#ifdef RD_SCALABLE_UI_V2 -#include -#endif //#ifdef RD_SCALABLE_UI_V2 - -#include // CAknNullService -#include // MAknServerAppExitObserver -#include -#include "avkon.hrh" -#ifdef RD_HINDI_PHONETIC_INPUT -#include -#endif -#ifdef RD_INTELLIGENT_TEXT_INPUT -// Predictive QWERTY (XT9) changes ----> -class MAknFepUiWordPopupContent; -#include "AknFepCandidatePopup.h" -#include "AknFepCandidatePopupCallback.h" -// Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT -class CAknFepPluginManager; -class CAknFepKeyCatcherInterface; -class MAknFepManagerInterface; -class CAknFepIndicator; -class CAknEdwinState; -class CPeriodic; -class MAknEditingStateIndicator; -class CAknFepCaseManager; -class CAknFepHashKeyManager; -class CAknKeySoundSystem; -class CPtiEngine; -class CAknFepSharedDataInterface; -class CApaDocument; // User Dictionary -class CAknFepInlineTextDecorator; -class CTextView; -class MPeninputServerEventHandler; -class MAknFepDocumentNavigation; -class CAknFepUIInterface; -#ifdef RD_INTELLIGENT_TEXT_INPUT -class CAknFepFnKeyManager; -#endif -//phrase creation -class CZhuyinKeyHandler; -class CAknFepZhuyinAnalyser; -class CZhuyinAnalyserDbFeed; -//User DB view -class CAknFepUserdbDlg; -class CAknFepThaiSCTSelector; -class CAknNavigationDecorator; -// This could be moved inside FepManager class? -enum TWesternNaviEvent - { - ENullNaviEvent, - ELeftNaviEvent, - ERightNaviEvent, - EBackspaceEvent, - EUpNaviEvent, - EDownNaviEvent - }; -enum TSpecialTextField - { - /** - * Constraints - */ - ESplAny, - ESplMailAddr, - ESplNumeric, - ESplPhoneNumber, - ESplUrl, - ESplDecimal, - /** - * Modifiers - */ - ESplPassword=0x10000, - ESplUneditable=0x20000, - ESplSensitive=0x40000, - ESplNonPredictive=0x80000, - ESPlInitialCapsWord=0x100000, - ESplInitialCapsWordSentence=0x200000, - ESplConstraintMask=0xFFFF - }; - -const TInt KChrKeyMultitapTimeout = 1000000; -/** - * Translates ET9Eng language codes into localised descriptors and command Id's - */ -class TFepLanguageTranslation - { - public: - void ReadFromResource(TResourceReader& aReader); - public: - TPtrC iName; - TInt iLanguageId; - TInt iCommandId; - }; -class CChrMultiTapTimer : public CTimer - { - public: - static CChrMultiTapTimer* NewL(TCallBack aCallback); - void After(TTimeIntervalMicroSeconds32 aInterval); - private: - CChrMultiTapTimer(TCallBack aCallback); - void ConstructL(); - // from CActive - virtual void RunL(); - private: - TCallBack iCallback; - }; -/** - * The CCoeFep derived class of AknFep - * Controls mode in the Fep. Handles all interaction with the editor - * Creates and owns the UI Manger, the Key Catcher and the edit state indicators - */ -class CAknFepManager : - public CCoeFep, - public MAknFepManagerUIInterface, - public MFepInlineTextFormatRetriever, - public MFepPointerEventHandlerDuringInlineEdit, - public MAknFepUiInterfaceMenuObserver, - public MAknServerAppExitObserver, //embedding - private MAknEdStateObserver, -#ifdef RD_SCALABLE_UI_V2 - public CAknExtendedInputCapabilities::MAknEventObserver, -#endif - private MFormCustomDraw -#ifdef RD_INTELLIGENT_TEXT_INPUT - ,public MAknFepCandidatePopupCallback // Predictive QWERTY (XT9) changes -#endif //RD_INTELLIGENT_TEXT_INPUT - { - -private: - class TTextDirectionalInfo - { - public: - - enum TTextDirectionalStatus - { - EUnknown, - ENotInDocument, - ENoDirectionalChunks, - ERightToLeft, - ELeftToRight - }; - - enum TDirectionalBlockEnvironment - { - EUndefined, - EInsideBlock, - EAtRightEndOfLine, - EAtLeftEndOfLine, - EAtRightEndOfBlockFacingOppositeDirectionalBlock, - EAtLeftEndOfBlockFacingOppositeDirectionalBlock, - EAtRightEndOfBlockFacingSameDirectionBlock, - EAtLeftEndOfBlockFacingSameDirectionBlock - }; - public: - // Constructor - TTextDirectionalInfo(); - void SetDirectionFromChunk( const CTmTextLayout::TTmChunkDescription& aChunk); - public: - TTextDirectionalStatus iDirectionalStatus; - TDirectionalBlockEnvironment iBlockEnvironment; - }; - -public: - /** - * values for the flags required to maintain the internal - * state of the Fep Manager during operation - */ - enum - { - EFlagInsideMultitapInlineEditingTransaction =0x00000001, - EFlagLaunchEditMenu =0x00000002, - EFlagLongShiftKeyPress =0x00000004, - EFlagNoActionDuringShiftKeyPress =0x00000008, - EFlagShiftKeyDepressed =0x00000010, - EFlagInsideInlineEditingTransaction =0x00000020, - EFlagPassNextKey =0x00000040, - EFlagQwertyChrKeyDepressed =0x00000080, // Not used. Qwerty mode is not supported. - EFlagLineFeedCharacter =0x00000100, - EFlagEditorFull =0x00000200, - EFlagNewSharedDataInputMode =0x00000400, - EFlagNoActionDuringChrKeyPress =0x00000800, - - EFlagSupressAutoUpdateAtEditorStart =0x00001000, - EFlagNoMatches =0x00002000, - EFlagSuppressInputStateChange =0x00004000, - EFlagCompoundWord =0x00008000, - EFlagChangeInputMode =0x00010000, - EFlagForegroundUIComponentVisible =0x00020000, - EFlagMenuPaneVisible =0x00040000, - EFlagRemoveMatchesMenuItem =0x00080000, - EFlagInlineEditInBackground =0x00100000, - EFlagNewSharedDataInputLanguage =0x00200000, - EFlagLastCharacterInEditor =0x00400000, - - EFlagSpaceCharacter =0x00800000, // adding for japanese - EFlagFullWidthSpaceCharacter =0x01000000, // adding for japanese - EFlagBidiCursorIsInitialized =0x02000000, - EFlagCursorPointsRightToLeft =0x04000000, - EFlagAtDirectionallyAmbiguousPoint =0x08000000, - EFlagCharacterAdded =0x10000000, - EFlagNoInlineEditFormatting =0x20000000, // Not really used yet! - EFlagQwertyShiftMode =0x40000000, // Not used. Qwerty mode is not supported. - EFlagSupressAutoUpdate =0x80000000 - }; - - enum - { - EExtendedFlagShortPressHashKey =0x00000001, - EExtendedFlagNoModeChange =0x00000002, - EExtendedFlagShiftReleasedOnPopup =0x00000004, - EExtendedFlagOkKeyPressOnCandidatePopup =0x00000008, - /* Flag to take care of graceful exit for FEP launched dialog when the underneath editor is closed */ - EExtendedFlagEdwinEditorDestroyed =0x00000010, - /* Flag to set decide when to set multiple observer for FEP. Set this flag whenever a FEP aware dialog is launched */ - EExtendedFlagFepAwareDialogLaunched =0x00000020, - /* Flag to specify that pointer event type EDrag has happened */ - EExtendedFlagPointerEventTypeEDrag =0x00000040 - }; - - //public constants - - enum - { - ESingleCharacter =1, - EMaximumFepWordLength =63 - }; - -private: - /** - * private constants - */ - enum - { - EShiftKeyRepeatDelay =800000, // 0.8s - EQueryBufferLength =63, - EDefaultNumericCharMapResId =0, - EDefaultSCTResourceId =-1, - ENoCharacters =0, - EAknFepUid =0x100056de, - EStarKeyUnicodeValue =0x2A, - EHashKeyUnicodeValue =0x23, - ELeftSoftkeyIndex =CAknFepUIInterface::ELeftSoftkeyIndex, - ERightSoftkeyIndex =CAknFepUIInterface::ERightSoftkeyIndex, - EMiddleSoftkeyIndex =CAknFepUIInterface::EMiddleSoftkeyIndex, - EWordConcatenationTimeout =2000000, // 2.0s - ELanguageArrayGranularity =20, - EChrKeyRepeatDelay =1000000, // 1.0s - EHalfQwertyChrKeyRepeatDelay =600000 //0.6 secs from Default actions UI spec - }; - - enum TChineseFepCursorType - { - EActive, - EPassive - }; - -public: - enum - { - ECcpuStateNone = 0, - ECcpuStateStartCopy = 0x01, - ECcpuStateCopy = 0x02, - ECcpuStateStartCut = 0x04, - ECcpuStateCut = 0x08, - ECcpuStateButton = 0x10, - ECcpuStatePosted = 0x20, - ECcpuStateHashDown = 0x40, - ECcpuStateSelectionEventPosted = 0x80, - ECcpuStateEdwinInSelectionMode = 0x100, - ECcpuStateIgnoreStarUp = 0x200, - ECcpuSupressEditMenuFromShiftUp = 0x400, - ECcpuStateCbaSymbol = 0x800, - ECcpuStateIgnoreNextFocusChange = 0x1000, - ECcpuStataCommitPredictiveWord = 0x2000, - ECcpuStateIgnoreNextEdwinSyncEvent = 0x4000, - ECcpuStateLosingFocus = 0x8000, - ECcpuStateUncommitWhenFocused = 0x10000, - ECcpuStateHashKeyDeleteDone = 0x20000, - ECcpuStateSupressCursorMoveToEnd = 0x40000, - ECcpuStateChangeToPredictionMode = 0x80000, - ECcpuStateNewPredictiveWord = 0x100000, - ECcpuStateShiftkeyWasPressedBeforeLosingFocus = 0x200000, - ECcpuStateCbaShown = 0x400000 - }; - - enum TShowSctMode - { - EShowSctFirst=0, - EShowPctFirst, - EShowSmileyFirst - }; - -private: - // These are needed to remember editor's ccpu state - // for editing options submenu. - enum - { - ECcpuStatusFlagCanCopy = 0x01, - ECcpuStatusFlagCanCut = 0x02, - ECcpuStatusFlagCanPaste = 0x04, - }; - - -private: - class TLanguageCapabilities - { - public: - TInt iInputLanguageCode; // Symbian language code. - TBool iLocalInputLanguageInUse; - TBool iArabicIndicDigitsAllowed; - TBool iEasternArabicIndicDigitsAllowed; - TBool iIndicDigitsAllowed; - TDigitType iLocalDigitType; - TDigitType iNumericEditorDigitType; - TBool iSupportsCase; - TBool iSupportsWesternPredictive; -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY changes ----> - TBool iSupportsWesternQwertyPredictive; // predicitve QWERTY - // Predictive QWERTY changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - TBool iRightToLeftLanguage; -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - TBool iSupportsWesternHalfQwertyPredictive; -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - }; - -public: - /** - * C++ Constructor - */ - CAknFepManager(CCoeEnv& aConeEnvironment); - - /** - * Second phase construction - */ - void ConstructL(const CCoeFepParameters& aFepParameters); - - /** - * destructor - */ - virtual ~CAknFepManager(); - - -public: //from MAknFepManagerUIInterface -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - Returns the keyboard layout - */ - TPtiKeyboardType KeyboardLayout() const; - /** - Returns the current keyboard layout in use. - */ - CAknFepFnKeyManager::TFnKeyState FnKeyState(); - void SetFnKeyState(CAknFepFnKeyManager::TFnKeyState aState); - /** - * Returns the resource ID of the numeric editor in use - */ - - TInt GetNumericSCTResID(); - - -#ifdef __REVERSE_FN_KEY_SUPPORTED - /** - Returns if the input is in reverse Fn key input mode. - */ - virtual TBool IsReverseFnkeyInput(); - - void SetReverseFnkeyInputMode(TBool iIsOn); - - /** - * Returns true if the aChar is allowed in the numeric editor - */ - TBool IsValidCharInNumericEditorL( TChar aChar ) const; - - /** - * Filter the char for Fn reverse mode in case of - * numeric editor. This function should call - * in case of numeric editor reverse mapping. - */ - TBool IsValidCharForNumericInFnReverseL(TInt aKey, TPtiTextCase aCase) ; - -#endif //__REVERSE_FN_KEY_SUPPORTED - virtual void AddOneSpaceOrMoveCursorL(); -#endif - virtual TBool IsAllowedKeymappingForNumberMode(TChar aChar) const; - /** - * closes the UI - * commits any character in multitap - */ - virtual TBool TryCloseUiL(); - - /** - * Used by the UI manager to inform the Fep Manager that the UI has activated. - */ - virtual void SendUIActivatedNotification(); - - /** - * Used by the UI manager to inform the Fep Manger that the UI has not activated. - */ - void SendUIDeActivatedNotification(); - - - /** - * Plays sound - */ - virtual void PlaySound(TAvkonSystemSID aSound) const; - - /** - * Set current long clear key press - */ - virtual void SetLongClearAfterCloseUI(TBool aLongClear); - - /** - * Align the Logical and Visual cursor positions. - * - * @since 3.2 - * @param aType Cursor type. - * @param aToLeft ETrue if the position to the left is to be found, - * EFalse if the position to the right is to be found. - * @return None - */ - void AlignLogicalAndVisualCursorL( TTmDocPosSpec::TType aType, TBool aToLeft ); - - /** - * This method removes the Repha character. The function goes to the - * start of the syllable, checks if repha character is present and - * removes it. - * - * @since 3.2 - * @param None. - * @return None. - */ - void RemoveRephaCharacterL(); - - /** - * Checks if the Repha character has been attached to the syllable - * - * @since 3.2 - * @param None. - * @return ETrue if present else EFalse. - */ - TBool IsRephaPresent(); - - /** - * Retrieve the Previous to previous character during multitapping. - * - * @since 3.2 - * @param aContextSensitive EFalse is the default parameter. - * ETrue is used for requesting the function - * to check for extraction of the character - * two positions before the seleted text. - * - * @return The previous to previous character if any. - */ - TText PreviousToPreviousChar( TBool aContextSensitive = EFalse ); - - /** - * This method is called for removing the Rakar character. The function - * checks if Rakar (Virama+Ra) is present. - * - * @since 3.2 - * @param None. - * @return None. - */ - void RemoveRakarCharacterL(); - - /** - * This method is called for removing the N characters from the - * specified position. If the text to be removed is not yet - * committed, it is updated with NULL descriptor and committed. - * - * @since 5.0 - * @param TInt aPos position to start searching from. By default - * Searching will start from the cursor position. - * @param TInt aNumOfCharacters Number of characters to remove. - * @param TBool Should cursor be positioned at the original location. - * @return None. - */ - void RemoveTextFromEditorL( TInt aNumOfCharacters, TInt aPos = 0, - TBool aIsToAlignCursor = ETrue ); - - /** - * Align the Logical and Visual cursor positions. - * Overloaded method which uses FindDocPos - * - * @since 5.0 - * @param None - * @return None - */ - void AlignLogicalAndVisualCursorL(); - - CAknFepPluginManager* PluginUIManager(); - //Phrase creation - MZhuyinKeyHandler* ZhuyinKeyHandler(); - CAknFepZhuyinAnalyser* ZhuyinAnalyser(); - void UpdateStickyState(); - -#ifdef RD_MARATHI - /** - * This function checks if the previous two characters are - * the combination of Chandra-A - * - * @since 5.0 - * @param None - * @return TBool. - */ - TBool IsChandraAPresentL(); - - /** - * This function checks if the previous Chandra-A is present - * before the cursor position - * - * @since 5.0 - * @param None - * @return TBool. - */ - TBool IsEyeLashRaPresentL(); -#endif // RD_MARATHI -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * This function returns the current case. - * Required for Shift key handling. - * - * @since 3.2 - * @param None - * @return TBool. - */ - TInt GetCurrentCase(); - - /** - * This function set the flag of chr composition key - * in mini qwerty - * - * @since 3.2 - * @param aFlag ETrue if it is chr composition key. - * @return None. - */ - void SetComposChrFlag( TBool aFlag ); - - /** - * This function get the flag of chr composition key - * in mini qwerty - * - * @since 3.2 - * @param None. - * @return ETrue if it is chr composition key.. - */ - TBool GetComposChrFlag(); - /** - * Hides the exact word popup. - */ - void HideExactWordPopUp(); - /** - * @return ETrue If the exact word pop up is shown. - */ - - TBool IsExactWordPopUpShown(); -#endif -#ifdef RD_HINDI_PHONETIC_INPUT - //hindi_phonetic_fixes - /* - * This functions toggles the case from upper to lower - * @since 5.0 - * @param None - * @return void - */ - virtual void HandleIndicCaseL(); -#endif - -public: //interface to the key catcher - /** - * Handles key events passed from the Key Catcher, excluding the shift key event - * which is dealt with separately in the HandleShiftKeyEventL function. - * State will always be Intital or UIActive. - */ - TKeyResponse HandleKeyEventL(TUint aCode, TKeyPressLength aLength, TEventCode aEventCode = EEventKey); - - /** - * Shift keys are dealt with in a different way to other keys, the action is on the up - * key event. - */ - TKeyResponse HandleShiftKeyEventL(TEventCode aEventCode); - - /** - * Thai 0 key is handled differently. If 0 key is up before long keypress, we show SCT. - */ - TKeyResponse HandleThai0KeyEvent(TEventCode aEventCode, TKeyPressLength aLength, - TBool& aThai0KeyHandling); - - /** - * Chr key handling - */ - TBool HandleQwertyChrKeyEventL( TEventCode aEventCode ); -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - /** - * Chr Key handling in half qwerty - */ - TKeyResponse HandleChrKeyForHalfQwertyL( TEventCode aEventCode); -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - /** - * Control key handling - */ - TKeyResponse HandleQwertyControlKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode); - - /** - * Handles key events for qwerty input mode. - * - * @since 3.0 - * @param aKeyEvent An event to be handled. - * @param aResponse Repsonse (consumed / not consumed) will be stored here. - * @return ETrue if evenat was handled by this method. - * EFalse otrherwise. - */ - TBool HandleQwertyKeyEventL(const TKeyEvent& aKeyEvent, TKeyResponse& aResponse); - - /** - * Returns boolean value indicating whether it is ok to set edwin into "copy/paste" - * mode. - * - * @since 3.1 - * @return ETrue if it is ok to editor into selectuion mode. - * EFalse otherwise. - */ - TBool OkToActivateSelectionMode() const; - - /** - * Returns the status of arabic-indic digit mode setting. - * - * @since 3.0 - */ - TBool ArabicIndicDigitsInUse() const; - - /** - * Returns the status of Eastern arabic-indic digit mode setting. - * - * @since 3.0 - */ - TBool EasternArabicIndicDigitsInUse() const; - void NumberModeChangeGSNotification(); - void DimInputmodeMenuItems(CAknFepUiInterfaceMenuPane* aMenuPane); - - /** - * Dims the item corresponding to the mode aMode, in the edit mode menu - * - * @param aMenuPane the edit menu pane - * @param aMode the mode to be dimmed - */ - void DimMenuItem(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aMode); - - TInt FepShowVkbPreviewStatus(); - - TInt PluginInputMode() const; -private: // from CCoeFep - /** - * from CCoeFep - not used - */ - virtual void CancelTransaction(); - - /** - * from CCoeFep - not used - */ - virtual void IsOnHasChangedState(); - - /** - * from CCoeFep - not used - */ - virtual void OfferKeyEventL(TEventResponse& aEventResponse, const TKeyEvent& aKeyEvent, - TEventCode aEventCode); - - /** - * from CCoeFep - not used - */ - virtual void OfferPointerEventL(TEventResponse& aEventResponse, - const TPointerEvent& aPointerEvent, - const CCoeControl* aWindowOwningControl); - - /** - * from CCoeFep - not used - */ - virtual void OfferPointerBufferReadyEventL(TEventResponse& aEventResponse, - const CCoeControl* aWindowOwningControl); - -private: // from MFepAttributeStorer (via CCoeFep) - /** - * from MFepAttributeStorer (via CCoeFep) - not used - */ - virtual TInt NumberOfAttributes() const; - - /** - * from MFepAttributeStorer (via CCoeFep) - not used - */ - virtual TUid AttributeAtIndex(TInt aIndex) const; - - /** - * from MFepAttributeStorer (via CCoeFep) - not used - */ - virtual void WriteAttributeDataToStreamL(TUid aAttributeUid, RWriteStream& aStream) const; - - /** - * from MFepAttributeStorer (via CCoeFep) - not used - */ - virtual void ReadAttributeDataFromStreamL(TUid aAttributeUid, RReadStream& aStream); - -private: // from MCoeForegroundObserver (via CCoeFep) - /** - * from MCoeForegroundObserver (via CCoeFep) - not used - */ - virtual void HandleGainingForeground(); - - /** - * from MCoeForegroundObserver (via CCoeFep) - not used - */ - virtual void HandleLosingForeground(); - -private: // from MCoeFocusObserver (via CCoeFep) - - virtual void HandleChangeInFocus(); - - /** - * in queries the editor is destroyed before the call to HandleChangeInFocus - * so NULL the iInputCapabilities variables to prevent trying to save to an unreferenced object - */ - virtual void HandleDestructionOfFocusedItem(); - -public: // from MAknEdStateObserver - /** - * from MAknEdStateObserver - not used - */ - virtual void HandleAknEdwinStateEventL(CAknEdwinState* aAknEdwinState, - EAknEdwinStateEvent aEventType); - -private: // from MEikCommandObserver (via MAknFepUiInterfaceMenuObserver) - /** - * from MEikCommandObserver - * Processes user commands, in this case only commands from the edit menu - */ - virtual void ProcessCommandL(TInt aCommandId); - - /** - * Constructs the component fully. This method is called when a - * fep aware editor is first time focused for text input. - */ - void ConstructFullyL(); - - /** - * Deletes the objects constructed with ConstructFullyL() method. - */ - void CommonDestroyFep(); - -private: // from MAknFepUiInterfaceMenuObserver - /* - * not used as DynInitMenuPaneL() is now called before SetEmphasis() and HandleChangeInFocus() - */ - virtual void SetEmphasis(CBase* aMenuControl,TBool aEmphasis); - - /** - * removes app menu panes and adds the FEP edit menu pane to the menu bar - */ - virtual void DynInitMenuBarL(TInt aResourceId,CAknFepUiInterfaceMenuBar* aMenuBar); - - /** - * dynamically changes the edit menu depending on fep and editor state - */ - virtual void DynInitMenuPaneL(TInt aResourceId,CAknFepUiInterfaceMenuPane* aMenuPane); - -private: //from MFepPointerEventHandlerDuringInlineEdit - /** - * from MFepPointerEventHandlerDuringInlineEdit - not needed, has to be implemented for MCoeFepAwareTextEditor interface - * No pointer in Chinese Series 60 - */ - virtual void HandlePointerEventInInlineTextL(TPointerEvent::TType aType, TUint aModifiers, - TInt aPositionInInlineText); - -private: //from MFepInlineTextFormatRetriever - /** - * from MFepInlineTextFormatRetriever - not needed, has to be implemented for MCoeFepAwareTextEditor interface - */ - virtual void GetFormatOfFepInlineText(TCharFormat& aFormat, - TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter) const; -#ifdef RD_INTELLIGENT_TEXT_INPUT - -// Predictive QWERTY changes (XT9) ----> -public: - //from MAknFepCandidatePopupCallback ----> - /** - * Callback the get the current set of candidates - * @param aArray An output parameter for the candidate strings - * @param aActiveIdx An output parameter for the index of the - * currently active candidate - */ - virtual void GetCandidatesL( CDesCArray& aArray, TInt& aActiveIdx ); - - /** - * Callback get new position for candidate list - * @param aRect New rect position for candidate list. - */ - virtual void GetUpdateCandidatePositionL(TRect& aRect); - - //from MAknFepManagerUIInterfaceWestern ----> - - /** - * Function to get the text direction for current language. - * @return ETrue if language id RTL, EFalse if it is not - */ - TBool IsRightToLeftLanguage(); - TBool IsLanguageSupportPrediction(); -// Predictive QWERTY changes (XT9) <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - -public: - - /** - * Launches the mode selection menu - */ - void LaunchSelectModeMenuL(); - - /** - * Launches the edit word query in western predictive text mode - */ - void LaunchEditWordQueryL(); - - /** - * Returns the status of given extended input capability flag. - */ - TUint ExtendedInputCapabilities() const; - - /** - * Exit plugin itut spell mode by press ok btn - */ - void ExitPluginSpellModeByOk(); - - /** - * Exit plugin itut spell mode by press cancel btn - */ - void ExitPluginSpellModeByCancel(); - - void SynCCPSoftKey(); - - /** - * checks that the editor the editor has free space to add another character - * An editor of unlimited length will return its maximum size as zero - */ - TBool EditorHasFreeSpace( TInt aNumberOfCharacter = 0 ) const; - TBool IsSpecialNumericEditor(); - -private: - - /** - * Handles notifications that the UI has changed focus - *

    - * <\li>When moving away from a fep aware text editor saves the mode of the old editor - * <\li>When moving to fep aware text editor gets the the mode if it has previously been saved - * and checks if the editor supports secret text - * <\ul> - */ - void HandleChangeInFocusL(); - - /** - * cleans up the fep after trapping a leave - */ - void CleanUpFep(); - - /** - * - * @param aKeyCode the value of the key to simulate - */ - void SimulateKeyEventL(TUint aKeyCode, TBool aActiveObj=EFalse); - - /** - * Tries to Reset the Shift Key Monitor - * Cleans up FEP if failed - * - * @return KErrNone if succeed, KErrDied if failed - */ - static TInt ResetShiftKeyMonitorCallback(TAny* aObj); - - /** - * Cancels the shift monitor - * tells the editor to up date its cba - * to enable copy/paste support on cba. We simulate via CCoeEnv - * to avoid fep SimulateL adding shift modifiers - */ - void ResetShiftKeyMonitorL(); - - /** - * Cancels the shift key and concatenation timers if they are active - */ - void CancelAllTimerActivity(); - - /** - * checks whether a mode is permitted by the current editor - * - * @return ETrue is aMode is permitted, EFalse if it is not - */ - TBool IsModePermitted(TInt aMode, TWidthChar aWidth = ENoneWidthChar) const; - - /** - * - * - * @return - */ - TUint EditorMode(TInt aMode, TWidthChar aWidth) const; - - /** - * Synchronises the states of the Fep Manager and the Key Catcher - * - * @return System wide error code. - */ - TInt SyncStates(TAknFepManagerState aState); - - /** - * Launches the matches popup list - */ - void LaunchMatchesPopupListL(); - -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - /** - * Launches the compact match candidate list which follows the inline editor. - * @param aFocusedIndex The index of the word focused by default. - * If KErrNotFound is given, the currently active - * word will be focused. - */ - void LaunchCandidatePopupListL( TInt aFocusedIndex = KErrNotFound ); - void StartInlineEditingWithSelectedWord(TDesC& aTextToUncommit); - /** - * Shows the exactly typed word above the inline editor if it differs from the - * best guess word shown inline. - */ - void ShowExactWordPopupIfNecessaryL(); - - /** - * Launches the predictive setting dialog. - */ - void LaunchPredictiveSettingDialogL(); -#ifdef FF_DUAL_LANGUAGE_SUPPORT - void LaunchWritingLanguageSettingDialogL(); - - void LaunchDualLanguageSettingDialogL(); -#endif //FF_DUAL_LANGUAGE_SUPPORT - - // Predictive QWERTY (XT9) changes <---- - - /** - * Handle shift loop in chinese variant for half qwerty - */ - - void HandleShiftHalfQwertyChineseL(TEventCode aEventCode); - - /** - * Handle shift key loop in chinese variant for qwerty and mini qwerty - */ - void HandleShiftQwertyChineseL(TEventCode aEventCode); -#endif //RD_INTELLIGENT_TEXT_INPUT - /** - * Launches the insert word query in western predictive text mode - */ - void LaunchInsertWordQueryL(const TDesC& aInitialText, TCursorSelection aTextSpanToReplace); - - /** - * Actual query dialog for LaunchInsertWordQueryL and LaunchEditWordQueryL - */ - void LaunchFepQueryDialogL(TInt aResourceId, const TDesC& aInitialText, - TCursorSelection aTextSpanToReplace); - - /** - * Inserts a text directly into the editor which previously had focus - */ - void InsertTextFromDialogL(const TDesC& aTextFromDialog, - TCursorSelection aExtentOfTextToReplace); - - /** - * Launch the KutenCodeQuery - */ - void LaunchKutenCodeQueryL(); - - /** - * Returns the resource ID for the numeric mode special character map - * available in the current editor. - */ - TInt NumericModeSCTResourceId() const; - - /** - * Handles the hash key - *
      - * <\li>a short hash cycles through the modes - * <\li>a long key press moves to number mode unless the mode is already number, in which case - * it goes to default - * <\ul> - */ - TKeyResponse HandleHashKeyL(TKeyPressLength aLength); - - /** - * - * @return Editor's numeric keymap for # and * keys of ITU-T mode. - */ - TInt EditorNumericKeymap() const; - - /** - * dims the item on the edit menu corresponding to the current mode - * the user can press cancel to remain in the same mode - * - * @param aMenuPane the edit menu pane - */ - void DimEditMenuModeItems(CAknFepUiInterfaceMenuPane* aMenuPane); - - /** - * Launch confirmation note. - * - * @param aResourceId Confirmation note resource Id. - */ - void LaunchConfirmationNoteL(TInt aResourceId); - - /** - * Enters a new character into the editing window - *

      Secret Text Editors do not use the MCoeFepAwareTextEditorInterface, - * they interact with the editor by simlulating key events. When in Multitap, simultating a - * numeric key event causes an extra key to be added to the control stack because the numeric - * keys exist on the Series 60 keypad; the flag EFlagPassNextKey is used to ignore this. - *

      When secret editing in multitap, a backspace is simulated to replace the last - * character in the editor. - */ - void NewCharacterL(const TDesC& aChar); - /** - * Enters a new phrase into the editing window - * - */ - void NewTextL(const TDesC& aText); - - /** - * Commits given string in the editing window. This function checks that - * the editor has enough space to insert given string. If it not, - * given string is cut, then it is committed. - */ - void CommitInlineEditL(const TDesC& aText, TInt aUncommitedTextChange); - - /** - * Cansel inline input. - */ - void CancelInlineEdit(); - - /** - * Used by editing window when it draws inline input characters. - */ - void GetScreenCoordinatesL(TPoint& aLeftSideOfBaseLine, TInt& aHeight, - TInt& aAscent, TInt aDocumentOffset); - - /** - * Used by Chinese UI to get cursor baseline position. - */ - void GetScreenCoordinatesL(TPoint& aLeftSideOfBaseLine,TInt& aHeight,TInt& aAscent); - - - - /** - * checks that the editor the editor has free space to add another character - * An editor of unlimited length will return its maximum size as zero - */ - TBool IsEditorHasFreeSpace()const; - - /** - * Returns the free space left in the Editor. - * - * @param aUnlimit. Set to EFalse in case of Editors with limited text - * size - * isToCountUncommittedTextLength. Pass ETrue if the lenght of - * Uncommitted text is to be counted. - * - * @return TInt. Free space left in the Editor. - */ - TInt EditorFreeSpace(TBool& aUnlimit, - TBool isToCountUncommittedTextLength = EFalse ) const; -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Returns the free space left in the Editor. ITI Specific Implementation - * - * @param aUnlimit. Set to EFalse in case of Editors with limited text - * size - * isToCountUncommittedTextLength. Pass ETrue if the lenght of - * Uncommitted text is to be counted. - * - * @return TInt. Free space left in the Editor. - */ - TInt EditorFreeSpaceForAutoWordCompletion(TBool& aUnlimit, - TBool isToCountUncommittedTextLength = EFalse ) const; -#endif - -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Gives the amount of characters in the document. - * @return The number of characters in the active editor. - */ - TInt DocumentLength() const; - - /** - * Tells if the given key event will replace the latest character in editor - * because of multitapping or long press handling. - */ - TBool KeyEventWillReplaceCharacter( const TKeyEvent& aKeyEvent ); - -#endif -#endif - - /** - * Uses TLocale to access the localized decimal separator in the kernel - */ - TChar CurrentDecimalSeparator() const; - - /** - * Sets up the FEP state from the Editor State - * Called by HandleChangeInFocusL() - */ - void ConfigureFEPFromEditorStateL(); - - /** - * Sets up the FEP State(character width) from the Editor Mode - * @return FepMode - */ - TInt ConfigureFepModeFromEditorMode(TInt aEditorMode); - - /** - * launch query which contains instructions on how to enter - * chinese text using the FEP - */ - void LaunchHelpTextQueryL(); - - /** - * ensure that the UI is aware of the current editor context - */ - void UpdateEditorContext() const; - - /** - * query whether the text is valid in the current editor - */ - TBool TextIsValidInEditor(const TDesC& aText); - - - /** - * Sets the style of the cursor to aType - */ - void SetCursorType(TChineseFepCursorType aType); - - /** - * Returns the current editing state indicator - */ - MAknEditingStateIndicator* EditingStateIndicator() const; - - /** - * Adds space at the end of the buffer if the feature is enabled. - */ - TBool TryHandleArrowRightEventL(TInt aDocumentLength); - - /** - * Remove spaces from the end of the buffer if the cursor - * is in last position. Only in Japanese variant. - * Opposite functionality of TryHandleArrowRightEventL(). - */ - TBool TryHandleArrowLeftEventL(TInt aDocumentLength); - - /** - * Adds enter to the buffer if the cursor is at the end of the buffer and - * feature KAknFepEnterWithScrollDown is enabled. - * - * @since 2.6 - * @param aDocumentLength Editor's document length - * @return Boolean if the down key event was handled. - */ - TBool TryHandleArrowDownEventL(TInt aDocumentLength); - - inline void ResetFlags(); - - /** - * Handle the Chr Key Monitor - * for Japanese variant only. - * - * @since 3.0 - * @return KErrNone if succeed, KErrDied if failed - */ - static TInt HandleChrKeyMonitorCallback(TAny* aObj); - - /** - * Enters a new ligature into the editing window. - * - * @since 3.2 - * @param aText Unicode value of the ligature. - * @return None - */ - void NewLigatureL( const TDesC& aText ); - /** - * Sets the current state to aState based on the input mode - * used to show the indicator - * @since 3.2 - */ - void SetPredictiveIndicatorState(TAknEditingState& aState); - static TInt HandleResourceChangedCallback(TAny* aObj); - - void ResourceChangedTimeroutL(); - /** - * Exit plugin itut spell mode by press ok btn - */ - void ExitPluginSpellModeByOkL(); - -#ifdef RD_SCALABLE_UI_V2 - /** - * Unregisters Fep as observer - */ - void UnregisterObserver(); - - /** - * Unregisters Fep as observer - */ - void RegisterObserver(); - -#endif // RD_SCALABLE_UI_V2 -private: - TUint EditorModeFromFepMode(TInt aFepMode); - - // returns sound system - CAknKeySoundSystem* SoundSystem() const; - - void SetHashKeyStyle(); - void ReadHashKeyLoopL(); - - TBool IsValidInLineCharacter(TChar aCharacter) const; - TBool HandleLoopingInNaviEventL(TWesternNaviEvent aNaviEvent); - - static TInt WordConcatenationTimerTimeoutCallback(TAny* aObj); - void WordConcatenationTimerTimeoutL(); - - void AddInputLanguageItemL(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex); - void SetQwertyModeToInputcapbility(); - void SetExtendedInputCapabilities( TUint aCapabilities); -#ifdef RD_INTELLIGENT_TEXT_INPUT - - // Predictive QWERTY (XT9) changes ----> - /** - * Adds the "Input Options" option and its sub menu to the given menu. - * @param aMenuPane The menu where the option should be added. - * @param aIndex The location in the menu where the option should be added. - */ - - void AddPredictiveModeOptionsL(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex) const; - - /** - * Adds the XT9 Edit menu options to the given menu. - * @param aMenuPane The menu where the option should be added. - * @param aIndex The location in the menu where the option should be added. - */ - - void AddPredictiveModeEditMenuL(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex) const; - - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - /* Sets default number mode when arabic language is used. - * @param aMode either Latin or Arabic - * @param aNbrModeType number mode type from GSLangPlugin.hrh - */ - void SetDefaultNumberMode( TInt aMode, TInt aNbrModeType ); - - /** - * Loads an icon from avkon bitmap file. - * @param aIcons The array into which the icon will be added. Icons will be - * owned by this array. - * @param aBitmapId ID of the actual bitmap. - * @param aMaskId ID of the mask. - */ - void LoadIconL( CArrayPtr* aIcons, TInt aBitmapId, TInt aMaskId ); - - /** - * Add a menu item for User DB management. - * phrase creation - * @since S60 5.0 S60_version - * @param aMenuPane The menu into which the mune item will be added. - * @param aIndex Index of the menu item to insert. - * @return none - */ - void AddUserDBDlgItemL( CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex ); - - /** - * Return wether ipnut mode is change by press shift+space. - * This is for half-qwerty. - * @return ETure is change by press shift+space, otherwise EFalse. - */ - TBool IsChangeModeByShiftAndSpace(); - - /** - * Set wether ipnut mode is change by press shift+space. - * This is for half-qwerty. - * @return none - */ - void SetChangeModeByShiftAndSpace( TBool aFlag ); - -public: - //Hash Key Manager Interface - TBool IsOnlyNumericPermitted() const; - void TryIncrementModeL(TInt aCurrentMode); - void TryIncrementModeChineseQwertyL(TInt aCurrentMode); - void TryIncrementChineseModeForQwertyL(TInt aCurrentMode); - void TryChangeToSharedDataModeL(); - void TryChangeToModeBeforeL(); - TBool TryChangeModeL(TInt aMode); - void ChangeInputLanguageL(TInt aInputLanguage); - void RemovePreviousCharacterL(); - void TryChangePredictiveInputModeL(TBool aFlag); - - /** - * To Handle Indic Hash key - * - * - * @since 3.2 - * @return the language id of the Input Language as in Cenral Repository (General Settings) - */ - TLanguage GetInputLanguageFromSharedDataInterface(); - - - /** - * To Handle Hash key - * - * - * @since 3.2 - * @return ETrue if the Last Key press was Hash key. - */ - TBool WasLastKeyPressAHashKey(); - - /** - * To Handle Hash key - * To set or Reset the status maintained to know if last key pressed was Hash Key - * - * @since 3.2 - * @return nothin - */ - void SetLastPressedHashKeyStatus(TBool aStatus); - - //Case Manager Interface - MCoeFepAwareTextEditor* FepAwareTextEditor() const; - - TBool IsFepAwareTextEditor() const; - - TCursorSelection UncommittedText() const; - void SetCase(TCase aCase); - - //made public for western - - /** - * Retreives the State of the current editor - * - * @return the current editors state object - */ - CAknEdwinState* EditorState() const; - - /** - * update the edit indicators when moving into a new input mode - */ - void UpdateIndicators(); - - /** - * Checks if the editor is in a state where a Special Character Table can be launched - */ - TBool IsAbleToLaunchSCT() const; - - /** - * Get current editor's SCT resource id - */ - TInt GetCurrentEditorSCTResId() const; - - /** - * Launch the Special Character Table - */ - void LaunchSpecialCharacterTableL(TInt aResourceId = EDefaultNumericCharMapResId, - TBool aLaunchedByTouchWin=EFalse, - TBool aSmileyFirst=EFalse); - - /** - * Checks if the editor is in a state where a Pictograph Character Table can be launched - */ - TBool IsAbleToLaunchPCT() const; - - /** - * Checks if the editor is in a state where a Pictograph Character Table can be launched - */ - TBool IsAbleToLaunchSmiley() const; - - /** - * Launch the Pictograph Character Table - */ - void LaunchPictographCharacterTableL(); - - //MAknFepManagerUIInterfaceWestern - virtual void UpdateInlineEditL(const TDesC& aNewInlineText, - TInt aPositionOfInsertionPointInInlineText); - virtual void StartInlineEditL(); - virtual void StartInlineEditL(const TDesC& aText); - virtual void StartInlineEditL(TCursorSelection aCursorSelection, - const TDesC& aInitialInlineText, - TInt aPositionOfInsertionPointInInlineText, - TBool aCursorVisibility); - - virtual TBool CloseUiIfWordDeletedL(); - virtual TBool TryGetTextToUncommitL(TDes& aText, TInt aCode, TBool& aComsumeKey); - - /** - * Addition for ITI features on FSQ. - * To check which characters will be underlined. - */ - TBool TryGetTextToUncommitL(TDes& aText, TBool& aComsumeKey); - - virtual void UpdateCbaL(TInt aResourceId); - virtual TBool TryRemoveNoMatchesIndicatorL(); - virtual TBool IsMoreGoodWordsComing(TInt aNewWordLength) const; -#ifndef RD_INTELLIGENT_TEXT_INPUT - virtual TBool IsMoreGoodAutoCompleteWordsComing(TInt aInputMode, TInt aPreviousWordLengh, - TInt aNewWordLength) const; -#endif //RD_INTELLIGENT_TEXT_INPUT - virtual void TryStartCompoundWord(); - virtual void AddCompoundWordToUdbL(); - - //MAknFepManagerUIInterfaceWestern made public for western - inline TBool IsFlagSet(TInt aFlag) const; - inline void SetFlag(TInt aFlag); - inline void ClearFlag(TInt aFlag); - - inline TBool IsExtendedFlagSet(TInt aExtendedFlag) const; - inline void SetExtendedFlag(TInt aExtendedFlag); - inline void ClearExtendedFlag(TInt aExtendedFlag); - inline void ResetExtendedFlags(); - - inline TCoeInputCapabilities& InputCapabilities(); - - void SetWesternPredictive( const TBool aWesternPredictive ); - void SetWesternAutoComplete( const TBool aWesternAutoComplete ); - void SetJapanesePredictive(const TBool aJapanesePredictive); - void SetQwertyMode(const TBool aQwertyMode); // Empty implementation. Qwerty mode is not supported. - - TBool WesternPredictive(TInt aMode = 0) const; - TBool IsPredictive(TInt aMode = 0) const; - TBool Japanese() const; - TBool IsOnlyFullWidthCharacterPermitted() const; - TBool IsOnlyHalfWidthCharacterPermitted() const; - TBool IsHalfAndFullKatakanaPermitted() const; - TBool IsHalfAndFullLatinPermitted() const; - TBool IsHalfAndFullNumberPermitted() const; - virtual TWidthChar CharacterWidth() const; - - virtual CPtiEngine* PtiEngine() const; - virtual void SetInlineEditingCursorVisibilityL(TBool aCursorVisibility); - - TInt InputMode() const; - TInt CangJieMode() const; - - TBool InputLanguageSupportsCaseChanges() const; - - /** - * Queries supportting of KAknFepScrollLatinPredictive feature - * - * @since 2.6 - * @return ETrue if ScrollLatinPredictive was supported - */ - TBool IsAbleScrollLatinPredictive() const; - - /** - * Previous case is returned. - * - * @since 2.6 - * @return TInt EAknEditorTextCase or EAknEditorUpperCase or EAknEditorLowerCase - * If case cannot be saved, 0 value is returned. - */ - inline TInt CaseBefore() const; - - /** - * @return true if current input language is one of Chinese input languages. - */ - inline TBool IsChineseInputLanguage() const; - - /** - * @return true if current input language is arabic input languages. - */ - inline TBool IsArabicInputLanguage() const; - - /** - * @return true if current input language is Korean input language. - */ - - inline TBool IsKoreanInputLanguage() const; - - /** - * Check Qwerty keypad - * - * @since 3.0 - * @return ETrue is Qwerty - */ - inline TBool IsQwerty() const; - - - /** - * Returns boolean value indicating whether hash key is in selection mode or - * in traditional mode. - * - * @since 3.1 - * @return ETrue if hash key is in text selection mode. - * EFalse otherwise. - */ - TBool HashKeySelectionInUse() const; - - /** - * Returns the UI interface implementation used in the current app. - * - * @since 3.2 - * @return The UI interface object used in the current app. - */ - CAknFepUIInterface* UiInterface(); - - /** - * Returns boolean value indicating whether edit submenu functionality is in use. - * - * @since 3.1 - * @return ETrue if edit submenu functionality is in use. - * EFalse otherwise. - */ - TBool EditSubmenuInUse() const; - - /** - * Set MultiTap Timer - * - * @since 3.0 - * @param aMultiTapTimer value of KAknFepMultiTapTimer setting - */ - void SetMultiTapTimer(const TInt aMultiTapTimer); - - /** - * Set Japanese Qwerty Flags - * - * @since 3.0 - * @param aJapaneseQwertyFlags value of KAknFepJapaneseSpecialCharFlag setting - */ - void SetJapaneseQwertyFlags(const TInt aJapaneseQwertyFlags); - - /** - * Calling this method will raise a flag which will cause predictive - * word to be commited during next call to TryCloseUiL-method. This - * is needed because of Japanese ReadingTextL. - * - * @since 3.1 - */ - void SetDelayedCommit(); - - /** - * from MAknFepManagerUIInterface - * query whether the special char is valid in the current editor - * - * @param aChar Checking a chracter - */ - TBool CharIsValidInEditor(TChar aChar); - - /** - * from MAknFepManagerUIInterface - * Returns the status of predictive input. - * - * @since 3.2 - * @return ETrue is available predictive input. - */ - TBool IsAbleToChangePrediction() const; - - /** - * Commits uncommitted text in the editing window. For secret text editors, - * only inline editing flags are changed - */ - void CommitInlineEditL(); - - TBool GetIndicatorImgID(TInt& aIndicatorImgID, TInt& aIndicatorTextID); - - inline TFepSymbolOfHardwareOne SymbolInfoOfHardKey1(); -public: -#ifdef RD_INTELLIGENT_TEXT_INPUT - /* - Sets the keyboard layout. - **/ - void SetKeyboardLayout(TPtiKeyboardType aType); -#endif - virtual TText PreviousChar( TBool aContextSensitive = EFalse ); - virtual TText NextChar(); - virtual TBool IsZWSCharacterPresent( TBool aLigaturePresent = EFalse ); - void RemoveZWSCharacterL( TBool aIsViramaInputted, - TBool aIsInMultitappingHalant = EFalse, - TBool aIsCharModifier = EFalse, - TBool aIsLigaturePresent = EFalse ); - void NewCharacterSequenceL(const TDesC& aText, TIndicInputResponse aResponse); - TBool IsValidInlineIndicCharacter(TChar aCharacter) const; -#ifdef RD_HINDI_PHONETIC_INPUT - TBool IsIndicPhoneticInputLanguage() const; - TInt SetPhoneticIndicator(TLanguage aInputLanguage); - void TryChangePhoneticModeL(); -#endif - TDigitType LocalDigit(); -public: - /** - * Auto word Completion is Enabled - * - * @since 3.2 - */ - void SetAutoCompletionState(TInt aValue); -#ifndef RD_INTELLIGENT_TEXT_INPUT - void RemoveSuggestedCompletionL(); -#endif //RD_PRED_AW_COMPLETION -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool IsFnKeyMappedL(TPtiKeyboardType aKeyboardType = EPtiKeyboardNone); - TBool IsFnKeyMapped(); - void SetFnKeyMappingState(); - TBool KeyMapsDifferentCharacterWithFn( TPtiKey aKey ) const; - - /** - * Setter for the advanced predictive typing correction. - * @param aLevel The level to be set. - */ - void SetTypingCorrectionLevel(TInt aLevel); - - /** - * Resetter for the advanced predictive Number Candidate setting. - * @param aValue The value to be set. - */ - void SetNumberCandidateState(TInt aValue); - - /** - * Setes the primary candidate from GS to the local state - */ - void SetPrimaryCandidate(TInt aValue); -#endif - - void SetStopProcessFocus(TBool aStop, TBool aClose = ETrue); - - TBool StopProcessFocus(); - - TBool CloseUiOnFocusChange(); - - -public: - void HandleOwnedSimulateKeyL(); - - TBool HandleCcpuModeKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode, - TKeyResponse& aRetCode, TBool aLongPressFlag = EFalse); - - /** - * Sets aFlag bitfield in iCcpuFlags - */ - inline void SetCcpuFlag(TInt aFlag); - - /** - * Clears aFlag bitfield in iCcpuFlags - */ - inline void ClearCcpuFlag(TInt aFlag); - - /** - * Clears all flags in iCcpuFlags - */ - inline void ResetCcpuFlags(); - - /** - * Returns ETrue if the aFlag bitfield in iCcpuFlags is set, EFalse if it - * is clear - */ - inline TBool IsCcpuFlagSet(TInt aFlag) const; - /** - * Check if Auto word Completion is Enabled - * - * @since 3.2 - * @return ETrue if Auto word Completion is enabled - */ - inline TBool IsAutoCompleteOn() const; -#ifdef RD_INTELLIGENT_TEXT_INPUT - - - - /** - * @return TInt Typing correction level. - */ - inline TInt AdvancedPredictiveTypingCorrectionLevel() const; - - /** - * @return ETrue If the number candidate shown. EFalse otherwise. - */ - inline TBool IsAdvancedPredictiveNumberCandidateShown() const; - - /** - * Cuts off the automatically completed tail of the suggested word candidate. - */ - virtual void RemoveSuggestedAdvanceCompletionL(); - - /** - * @return ETrue If the number candidate shown. EFalse otherwise. - */ - inline TBool AdvancedPredictivePrimaryCandidate() const; - TBool LongPressNumberEntryOnQwerty() const; - - // Predictive QWERTY (XT9) changs <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - /** - * Returns ETrue if Feature manager supports Japanese. - */ - inline TBool IsFeatureSupportedJapanese() const; - - /** - * Cancels shift key timer. - */ - void CancelShiftKeyTimer(); - - /** - * Queries supportting of SecretText - * - * @since 2.6 - * @return ETrue if SecretText was supported - */ - TBool IsSupportsSecretText() const; - - void SendEventsToPluginManL( TInt aEventType, TInt aEventData = 0 ); -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - Sends the key event received to the Fn key handler and sets the Fn key state. - */ - TKeyResponse HandleFnKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aEventCode ); -#endif - - MAknFepManagerInterface* FepUI() const; - - TTmDocPosSpec DocPos(); - - void HandleCopyCutEventL(TInt aCommandId); - - void LaunchPenSupportMenuL(); - -private: //navigation - void FindStartOfWord(TInt& aAnchorPos) const; - void FindEndOfWord(TInt& aCursorPos) const; - TBool CursorInsideWord(); - void MoveCursorToStartOfWordL(); - void MoveCursorToEndOfWordL(); - TKeyResponse HandleNaviEventOutsideInlineEditL(TUint aCode, TKeyPressLength aLength); - TKeyResponse HandleWesternPredictiveArrowKeyL(TInt aCode, TKeyPressLength aLength); - TBool TryHandleTextSelectedNaviEventL(TInt aCode, TKeyResponse& aResponse); - TBool TryHandleCommonArrowAndBackspaceFunctionalityL(TInt aCode, TKeyResponse& aResponse); - void TransferFepStateToEditorL(TBool aFnLockSync=ETrue); - inline MAknFepManagerInterface* InternalFepUI(); - - - void LaunchLanguagesPopupListL(TBool aLaunchedByTouchWin = EFalse); - void LaunchRecognitionWithDictionaryPopupListL(); - TBool IsInputModeAvailable(TInt aMode) const; - TInt NewInputModeAfterLanguageChange() const; - - /** - * Launch User DB dialog - * phrase creation - * @since S60 5.0 S60_version - * @param none - * @return none - */ - void LaunchUserDBDlgL(); - - /** - * Set current input language and the capabilities of the language to - * the iLanguageCapabilities member variable. - * - * @param aInputLanguage New (current) input language. - */ - void SetInputLanguageCapabilities(const TInt aInputLanguage); - - /** - * Returns input language code that corresponds to UI language. - * - * @param aUiLanguage Ui language code. - * @return Input language code that corresponds to the UI language code. - */ - TInt SubstituteSublanguageId(const TInt aUiLanguage) const; - - CTextView* TextView() const; - CTextLayout* TextLayout() const; - CPlainText* PlainText() const; - - void DoWesternMenu(CAknFepUiInterfaceMenuPane* aMenuPane); - void DoChineseMenu(CAknFepUiInterfaceMenuPane* aMenuPane); - void DoJapaneseMenu(CAknFepUiInterfaceMenuPane* aMenuPane); - void DoChineseSubMenu(CAknFepUiInterfaceMenuPane* aMenuPane); - - TBool IsRightToLeftParagraph(TTmDocPosSpec aPos) const; - void FindAdjacentChunks(const TTmDocPosSpec& aPos, - CTmTextLayout::TTmChunkDescription& aLeft, - CTmTextLayout::TTmChunkDescription& aRight) const; - - TBool GetNextVisualRightCharacter( TInt& aPosition ); - TBool GetNextVisualLeftCharacter( TInt& aPosition ); - void FindVisualRightOfWord(TInt& aPosition); - void FindVisualLeftOfWord(TInt& aPosition); - - // - // Remaining methods here are candidates for turning into TextViewUtility methods. Some - // have been made static already in anticipation of this. - // - /** - * Obtains the visual beginning of the document. This may be the left or right the right - * end of the first line, depending on first paragraph's direction. If the beginning of the document - * is currently not formatted, then EFalse is returned - * - * @param aEndPos DocPosSpec is returned for the visual beginning of the document. - * @return ETrue if the value is successfully calculated, that is the first line is formatted - */ - TBool GetVisualDocStart( TTmDocPosSpec& aStartPos ) const; - - /** - * Obtains the visual end of the document. This may be the left or right the right - * end of the last line, depending on last paragraphs direction. If the end of the document - * is currently not formatted, then EFalse is returned - * - * @param aEndPos DocPosSpec is returned for the visual end of the document. - * @return ETrue if the value is successfully calculated, that is the last line is formatted - */ - TBool GetVisualDocEnd( TTmDocPosSpec& aEndPos ) const; - - /** - * Get the document position of the visual extrem of the line in which the passed position - * is in. - * - * @param aPos A position within the line you are interested in - * @param aToRight ETrue if you want the right hand end. - * @param aExtreme Output value of the doc pos spec for the end of the line - * @return ETrue if the line was formatted. If False, the value of eExtreme - * cannot be trusted. - */ - TBool GetAknFepLineExtreme( const TTmDocPosSpec& aPos, TBool aToRight, - TTmDocPosSpec& aExtreme) const; - - /** - * This is a very general routine for finding the visual extreme (according to - * Avkon rules) of a piece of selected text. - * - Text may in general have many varying directional sections. - * - It may extend from one paragraph to another. - * - If the paragraph directions are different the current input language is - * - * @param aSelection Logical range for which the visual extreme is required - * @param aEvent The direction being navigated (Right/Left/Up/Down); eg. ELeftNaviEvent if moving to the left end - * @param aLimitPos returned position in document - * @param aEffectiveRightOrLeftEvent Pointer to TWesternNaviEvent, if passed from the client, will - * return either ERightNaviEvent or ELeftNaviEvent - */ - void GetAvkonDefinedVisualLimitsOfSelection( - const TCursorSelection& aSelection, - TWesternNaviEvent aEvent, - TTmDocPosSpec& aLimitPos, - TWesternNaviEvent* aEffectiveRightOrLeftEvent) const; - - /** - * Returns the position at the visual left extreme end for a logical range - * - * @param aStartPos Starting position for the search - * @param aMinPos minimum logical position of the logical range - * @param aMaxPos maximum logical position of the logical range - * @return TTmDocPosSpec for the visual left end - */ - TTmDocPosSpec LeftVisualExtremePos( const TTmDocPosSpec& aStartPos, - TInt aMinPos, TInt aMaxPos ) const; - - /** - * Returns the position at the visual right extreme end for a logical range. The range may consist - * of many directional chunks. They are iterated through until the visual end is found. - * - * @param aStartPos Starting position for the search - * @param aMinPos minimum logical position of the logical range - * @param aMaxPos maximum logical position of the logical range - * @return TTmDocPosSpec for the visual right end - */ - TTmDocPosSpec RightVisualExtremePos( const TTmDocPosSpec& aStartPos, - TInt aMinPos, TInt aMaxPos ) const; - - /** - * Gets the visual left-most position in a chunk within a logical range - */ - TBool LeftEndOfChunkWithinRange( const CTmTextLayout::TTmChunkDescription& aChunk, - TInt aMinPos, TInt aMaxPos, TTmDocPosSpec& aNewPos) const; - - /** - * Gets the visual right-most position in a chunk within a logical range - */ - TBool RightEndOfChunkWithinRange( const CTmTextLayout::TTmChunkDescription& aChunk, - TInt aMinPos, TInt aMaxPos, TTmDocPosSpec& aNewPos) const; - - /** - * Adjust the passed docpos to reflect the avkon principal that after a left navigation - * the cursor should adhere to the bordering directional run on the left of that point. - * This may mean that the logical position and leading/trailing feature of aPos are adjusted - * This method does not perform the navigation, but may be called after a navigation. - */ - void AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( TTmDocPosSpec& aPos, - TWesternNaviEvent aEvent ) const; - - /** - * Do not move the visual position, but ensure that the docpos passed is adhering to the left - * side of the right chunk passed in. - */ - static void AttachToRightChunk( TTmDocPosSpec& aPos, - const CTmTextLayout::TTmChunkDescription& aRightChunk ); - - /** - * Do not move the visual position, but ensure that the docpos passed is adhering to the - * right side of the left chunk passed in. - */ - static void AttachToLeftChunk( TTmDocPosSpec& aPos, - const CTmTextLayout::TTmChunkDescription& aRightChunk ); - - /** - * Modify the cursor position after a jump to the start or end of a document. - * The current input direction is used to modify the position, so as to avoid attaching the - * new cursor position to a block of the opposite input directionality - * - * @param aPos target position of the jump; may be modified by the routine. - * @param aEvent navigation event that caused the loop. - * @param aLoopToTop ETrue if the looping is from bottom to top; EFalse if from top to bottom - * - */ - void AdjustPosSpecForInputLanguageAfterDocumentLoop( TTmDocPosSpec& aPos, - TWesternNaviEvent aEvent, - TBool aLoopToTop ) const; - - /** - * Tests a chunk for validity. - * - * @return ETrue if the chunk is valid - is a real chunk. - */ - static TBool ChunkIsValid( const CTmTextLayout::TTmChunkDescription& aChunk ); - - /** - * Finds the current input direction. This is determined as best as it can using - * - iT9Interface as the preferred source of information - * if that is not active/defined then - * - shared data (via AknTextUtils) if that fails - * - localLanguage overrides may be in place - * - * - when fep is in numeric mode it returns LTR - * - if FEP is in an irelevant mode, then LTR is returned - * - * Note that secret alpha modes return LTR always, as entry is alwas LTR for these - * - * @return TDirectionality::ERightToLeft when in an alpha mode and direction is RTL; - * Otherwise returns ELeftToRight - */ - TBidiText::TDirectionality CurrentInputDirectionality() const; - - /** - * Access the local language if defined - * - * @param aLanguage - returns the Symbian OS language code for the local language - * @return EFalse iff no local language is in force - */ - TBool GetLocalLanguage( TLanguage& aLanguage ) const; - - /** - * Looks through the FEP aware editor's text starting at character aPos, looking for a - * strongly directional character. Direction of search can be set. - * Search is carried out until a strong character is found or the end (or beginning) - * of the editor text has been reached. - * The value returned in aIsRightToLeft should not be used unless the method returns ETrue - * @param aPos First character to look at - * @param aForward If EFalse, then search is backward (decreasing index) in logical buffer - * @param aIsRightToLeft Set to ETrue on return if first strong character found is RTL - * - * @return EFalse if no strong character was found. - */ - TBool GetExposedDirectionOfText( TInt aPos, TBool aForward, TBool& aIsRightToLeft ) const; - - /** - * Looks through the passed descriptor, looking for a strongly directional character. - * Direction of search can be set. Search starts at the begining if searching forward; - * starts at the end if searching backwards. - * - * Search is carried out until a strong character is found or the end (or beginning) - * of the descriptor has been reached. - * The value returned in aIsRightToLeft should not be used unless the method returns ETrue - * - * @param aText Descriptor to search. - * @param aForward If EFalse, then search is backward (decreasing index) in logical buffer - * @param aIsRightToLeft Set to ETrue on return if first strong character found is RTL - * - * @return EFalse if no strong character was found. - */ - TBool GetExposedDirectionOfTextInDescriptor( const TDesC& aText, TBool aForward, - TBool& aIsRightToLeft ) const; - - /** - * Access character in editor text at index aPos. - * - * @param aPos Index of character to access. Must be a valid index or panic may ensue. - * @return charater at index aPos; returns TChar(0) if cannot get at the text. - */ - TChar CharAt( TInt aPos ) const; - - /** - * Navigate off of selected text using an Up/Down/Right/Left navigation event - * - * The code takes account of the paragraph directionality that the passed selection is - * found in. - * - * The new cursor position is resolved for ambiguity and then set using SetCursorPosition, and - * so it has the same side-effects: - * iUncommittedText is set to the zero-width "cursor" state with the new cursor position - * iUncommittedText is set into the FepAwareTextEditor state - * iCaseManager is updated with a ENullNaviEvent - * the doc pos is set in TextView object if present - * - * @param aSelection currently selected text - * @param aNaviEvent navigation event. One of ERight/Left/Down/UpNaviEvent. Others are ignored - * @param aPos Ouput, new position of the cursor - * @return EKeyWasNotConsumed if the key is not consumed - */ - TKeyResponse NavigateFromSelectionL( - const TCursorSelection& aSelection, - TWesternNaviEvent aNaviEvent, - TTmDocPosSpec& aPos ); - - - /** - * This method is the standard way for the FEP to move the cursor when there is - * no inline edit or selection. - * Side effects: - * iUncommittedText is set to the zero-width "cursor" state with the passed position - * iUncommittedText is set into the FepAwareTextEditor state - * iCaseManager is updated with a ENullNaviEvent - * the doc post is set in TextView object if present - * - * @param aNewCursorPos - defines the position to set the cursor at, including leading/trailing - * @param aDragSelectOn - iff EFalse, do not keep old anchor position (that is, cancel any selection) - * properties. - */ - void SetCursorPositionL( const TTmDocPosSpec& aNewCursorPos, TBool aDragSelectOn = EFalse ); - - /** - * Returns ETrue if the passed position is formatted and is in the first line - */ - TBool InFirstLineAndFormatted( const TTmDocPosSpec& aPos ) const; - - /** - * Returns ETrue if the passed position is formatted and is in the last line - */ - TBool InLastLineAndFormatted( const TTmDocPosSpec& aPos ) const; - - /** - * Returns ETrue if the passed position is in the - * @param aCheckFirstLine if ETrue, check for first line; else check last line - * @return ETrue if the passed position is formatted and is first (or last - depending on switch) - */ - TBool DocPosInFirstOrLastLineAndFormatted( const TTmDocPosSpec& aPos, - TBool aCheckFirstLine ) const; - - /** - * Method to determine if the passed position is equivalent visually to the "canonical" - * value determined by the limit algorithms. The methods allow two visually equivalent, - * but logically different TTmDocPosSpecs to be be checked for equivalence. - * @param aCurrentPos Position in document as returned by GetDocPos - * @param aLimitPos Visual start of document as returned by GetVisualDocStart - * @returns ETrue if the positions are visully equivalent - */ - TBool AtVisualStart( const TTmDocPosSpec& aCurrentPos, const TTmDocPosSpec& aLimitPos ) const; - - /** - * Method to determine if the passed position is equivalent visually to the "canonical" - * value determined by the limit algorithms. The methods allow two visually equivalent, - * but logically different TTmDocPosSpecs to be be checked for equivalence. - * @param aCurrentPos Position in document as returned by GetDocPos - * @param aLimitPos The visual end of document as returned by GetVisualDocStart - * @returns ETrue if the positions are visully equivalent - */ - TBool AtVisualEnd( const TTmDocPosSpec& aCurrentPos, const TTmDocPosSpec& aLimitPos, - TInt aDocLength ) const; - - void SetCursorType(TBool aIsLeftToRight); - TBool DeviceSupportsRTLLanguageL(); - - /** - * Performs calculations of digit mode; - * used in UpdateLocalDigitMode() and in UpdateNumericEditorDigitType() - */ - void CalculateEditorDigitType(TDigitType& aDestination); - - void UpdateNumericEditorDigitType(); - - /** - * Updates FEP digit mode from global locale settings. - */ - void UpdateLocalDigitMode(); - - /** - * Checks to see if the cursor position is at an ambiguous point (one where the text blocks - * on either side are of different directionality) and potentially moves the cursor from - * one block to the other, depending on the key identity. - * - * To be called before key event is processed by the FEP in the usual way. - * If the key is acted upon to move the cursor, then the event is "eaten" and it is not - * to be passed on for processing. - * - * @param aCode Key code from standard TKeyEvent key event structure - * @return EKeyWasConsumed if a cursor adjustement was made; - * else EKeyWasNotConsumed - */ - // TKeyResponse AttemptCursorFlipAtAmbiguousPointL( const TKeyEvent& aKeyEvent, TEventCode aEventCode ); - TKeyResponse AttemptCursorFlipAtAmbiguousPointL( const TUint aCode ); - - /** - * Call back method for the "Post Event Check" mechanism. Called from a CIdle after - * any event that might required a check of the new cursor position or other invariant - */ - static TInt PostEventCheckCallback(TAny* aObj); - - /** - * Access method for whether bidirectional cursor is to be used - * - * @return EFalse iff the bidi cursor is not to be used - */ - TBool BidiCursorRequired() const; - - /** - * Since FEP does not complete the navigation of an event (editor and form do that), FEP - * has to ensure after all navigation is finished if the cursor is displayed correctly. - * - *

      This method, called from the post event callback, implements the action to check the - * current cursor directionality against the text directionality at the cursor position, - * and alters the cursor appearance as required. - */ - void DoCursorDirectionCheckL(); - - /** - * Check the directionality of text in the vicinity of the current document position - * and ensure that the cursor is indicated appropriately. - * - * This routine has no side-effect on the cursor position. It merely changes the - * appearance of the cursor. - */ - void AdjustCursorTypeForCurrentPosition(); - - /** - * Kicks off the post event check idle event - * - * @param aCode Key event code - */ - void SchedulePostEventCheckL(TUint aCode); - - /** - * Check the directionality of text in the vicinity of the supplied document position - * and ensure that the cursor is indicated appropriately. - * - * This routine has no side-effect on the cursor position. It merely changes the - * appearance of the cursor. - * - * @param aDocPos document position that is to be analysed and acted on - */ - void AdjustCursorTypeForPosition( const TTmDocPosSpec& aDocPos ); - - /** - * "Hook" method for managing a bidi cursor according to the text directionality at the cursor - * Only one of this method or SetCursorTypeForInputDirection will be in operation at any - * time. - * - * @param aLeftToRight Supply ETrue iff cursor required is LTR cursor - */ - void SetCursorTypeForTextDirection( TBool aLeftToRight ); - - /** - * "Hook" method for managing a bidi cursor according to the current input direction - * Only one of this method or SetCursorTypeForTextDirection will be in operation at any - * time. - * - * @param aLeftToRight Supply ETrue iff cursor required is LTR cursor - */ - void SetCursorTypeForInputDirection( TBool aLeftToRight ); - - /** - * Routine to analyse the directionalities surrounding the supplied document position - * and to return the results. - * - * @param aDocPos document position that is to be analysed - * @return Structure containing the results of the analysis - */ - TTextDirectionalInfo LocalTextDirectionalStatus( const TTmDocPosSpec& aDocPos ) const; - - - /** - * - * This method is used to add directional markers to protect neutrals that may be - * exposed to the opposite directional formatting to their situation before the deletion - * - * Redecoration is carried out if a neutral is exposed by the deletion to a directionality - * different to that which is was already marked. - * - * An inline edit may be stated and then committed. - * - * iUncommittedText is required to be set to the cursor position that existed after - * the deletion. - * - * iUncommittedText will be updated to the new cursor position. - * - * @param aTextThatWasDeleted Informs the method of what text has just been removed - */ - void RedecorateAfterDeletionL( const TDesC& aTextThatWasDeleted ); - - - TBool EditorSupportsNeutralProtection(); - - - /** - * Wrapper function for the MCoeFepAwareTextEditor commit method. - * This method terminates the inline by accepting the current inline edit into the buffer. - * - * At entry, iUncommittedText is required to have the span of the current inline edit. - * iAnchorPos should be the index of the first character in the inline edit. - * iCursorPos should be the index of the next character after the inline edit. - * - * At exit, iUncommittedText has 0-length and represents the current cursor position. - * That is, iAnchorPos = iCursorPos = index of the character next after the cursor - * - * These indices may be more easily though of as "gap indices" where gap 0 precedes - * character 0, gap 1 follows character 0, gap 2 follows charcacter 1, etc.. until gap - * N follows character (N-1). - * - * This routine does not attempt to consolidate any directional markers that may be - * extraneous in the new buffer. It is therefore used when it is important to know what - * span after the commit, e.g. to make it reversible. - * - * @param aFepAwareTextEditor Editor for which there is a current inline edit. - * @param aCursorVisibility EFalse if the cursor is to be suppressed during the commit. - */ - void CommitInlineEditWithoutResolutionL(MCoeFepAwareTextEditor& aFepAwareTextEditor, - TBool aCursorVisibility, TBool aClearPti = ETrue); - - - TKeyResponse HandlePredictiveNaviEventOutsideInlineEditL(TUint aCode, TKeyPressLength aLength); - - static TInt DoSimulateKey(TAny* aThisPtr); - - /** - * This method is that the label of CBA is updated by aTextResId. - * @param aPosition CBA position, either ELeftSoftkeyIndex or ERightSoftkeyIndex - * @param aCommandId command id for softkey - * @param aTextResId resource id to set string on label. - * @return TBool The return value is ETrue in case it is necessary to update CBA. - */ - TBool UpdateCBALabelL(TInt aPosition, TInt aCommandId, TInt aTextResId); - - /** - * Launches special character table (SCT) and pictograph character table (PCT). - * - * @param aResourceId Resource of SCT content. NULL if the default SCT content - * is used. At the moment only Thai language sets non-default - * content. - * @param aShowSctParam Set the show mode for sct. EShowSctFirst or EShowPctFirst or EShowSmileyFirst - */ - void DoLaunchSctAndPctL(TInt aResourceId, TShowSctMode aShowSctMode); - - /** - * Update CangJie mode - * - * @param aNewMode New CangJie mode - * @since 3.0 - */ - void UpdateCangJieState(TInt aNewMode); - - /** - * Launch CangJie setting dialog - * - * @since 3.0 - * @return Selected CangJie level or KErrGeneral if user cancel the selection - */ - TInt LaunchCangJieOptionDlgL(); - - - void AddEditSubmenuL(CAknFepUiInterfaceMenuPane* aMenuPane); - void DisableEditSubmenuItems(CAknFepUiInterfaceMenuPane* aMenuPane); - void StartCcpuModeL(TBool aCopyMode); - - /** - * Handle the Chr Key Monitor - * for Japanese variant only. - * - * @since 3.0 - */ - void HandleChrKeyMonitorL(); - - TBool IsCursorAtEndOfWord(); - - /* This method should be called after launching any dialog by FEP */ - void PrepareFepAfterDialogExitL(TUid aFepUid); - /* This method should be called before launching any fep aware dialog by FEP */ - void PrepareFepForFepAwareDialogLaunch(); - /* This method should be called after launching any fep aware dialog by FEP */ - void PrepareFepAfterFepAwareDialogExitL(TUid aFepUid); - -public: - - /** - * Handle layout change. - * When screen layout change, Key Catcher calls this method - * - */ - void HandleResourceChange(TInt aType); - - TBool IsHybridAplhaEditor() const; - TBool IsHybridAlphaModeChangedtoAplhanumeric() const; - - TBool QueryPredictiveState(const TAknEditingState aState); - TInt EvaluateState(TAknEditingState aState); - TBool QueryPredictiveAutoCompleteState(TAknEditingState aState); - CAknExtendedInputCapabilities::TEditorType EditorType() const; - TUint MIDPConstraint() const; - /** - * Tells if the current editor is phone number editor - * @return ETrue if the current editor is phone number editor - */ - TBool IsPhoneNumberEditor() const; - - -#ifdef RD_SCALABLE_UI_V2 - - /** - * Pen input support functions - */ -public: - - void HandlePointerEventL(const TPointerEvent &aPointerEvent); - - - /** - * Handle arrow key event when some chars have been selected - * - * @since S60 v3.2 - * @param aKeyEvent - * @param aEventCode - * @param aRetCode - */ - TBool HandleSelModeArrowKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode, - TKeyResponse& aRetCode); - - /** - * From CAknExtendedInputCapabilities::MAknEventObserver - * Handle an event - * - * @since S60 v3.2 - * @param aEvent An event, see TInputCapabilitiesEvent - * @param aParams Event dependent parameters - */ - void HandleInputCapabilitiesEventL( TInt aEvent, TAny* aParams ); - - void SubmitInlineTextL( const TDesC& aData ); - - inline TInt PermittedModes() const; - - inline void SetNotifyPlugin( TBool aNotifyFlag ); - - inline void RemeberEditorState(); - - inline TBool IsMfneEditor() const; - - inline TBool IsFindPaneEditor() const; - inline TBool IsSupportedAdaptiveSearch() const; - //for japanese - void NotifyJapaneseSetting(); - - - void ProcessEditorMenuCommand(TInt aCommand); - - TInt GetPermittedEditorMenu(TBool aOnlyCount = EFalse); - - void UpdateTouchCaseMode(); - - void DimInputmodeTouchMenuItems(CAknFepUiInterfaceMenuPane* aMenuPane); - - inline TLanguageCapabilities InputLanguageCapabilities() const; - - inline TAknFepManagerState& FepManState(); - - inline TBool IsSupportNativeNumber() const; - - void NeedDisableKeySound(const TKeyEvent& aKeyEvent, TEventCode aEventCode); - - inline void SetGainForeground( TBool aGainForeground ); - void HandleEndKeyL(); - inline void SetCancelPopupInQwerty( TBool aCancelPopupInQwerty ); - - /** - * Return the chinese input mode used last time - */ - inline TInt LastChineseInputMode() const; - -private: - - /** - * Checks if the current editor is fully FEP aware. - * - * @since 3.2 - * - * @return ETrue if editor if fully FEP aware. - */ - TBool FullyFepAwareTextEditor() const; - - /** - * Checks if the current editor is partially FEP aware. - * - * @since 3.2 - * - * @param aAtLeast if ETrue then ETrue is returned for also fully FEP aware editors. - * - * @return ETrue if editor is partially FEP aware. - */ - TBool SemiFepAwareTextEditor( TBool aAtLeast = EFalse ) const; - - void DoWesternTouchMenu(CAknFepUiInterfaceMenuPane* aMenuPane); - void DoChineseTouchMenu(CAknFepUiInterfaceMenuPane* aMenuPane); - - /** - * Checks if the current input mode belongs to chinese input modes. - * - * @param aMode The current input mode. - * - * @return ETrue if the current input mode belongs to chinese input mode.. - */ - TBool IsChineseInputMode( TInt aMode ); - -#endif //RD_SCALABLE_UI_V2 - - /** - * Returns the type of the focused editor. - * - * @since 3.2 - * - * @return Editor type. - */ - //CAknExtendedInputCapabilities::TEditorType EditorType() const; - - /** - * Get the MAknFepDocumentNavigation object - * - * @since 3.2 - * @return pointer to MAknFepDocumentNavigation accessed through - * the input capabilites object provider. - */ - MAknFepDocumentNavigation* AknFepDocumentNavigation() const; - - TInt GetPermittedEditorMenuL(TBool aOnlyCount = EFalse); - -private:// from MPeninputServerEventHandler - - void UpdateLatinIndicator( TAknEditingState& aNewState ); - void UpdateNumberIndicator( TAknEditingState& aNewState ); - void UpdateHindiIndicator( TAknEditingState& aNewState ); - void HandleCopyCutStateL(); - /** - * Returns ETrue if hash key selection is on and hash key mode selection should - * be blocked. - * - * @since 3.1 - */ - TBool HashKeyModeChangeBlockedInSearchField() const; - /** - * Set editor cursor selection according plugin UI - * cursor state - * - * @since 3.2 - * @param aCurSel Cursor position. - * @param aSyncCursor ETrue if plug in UI need update cursor, EFalse otherwise - * @return None - */ - void SetCursorSelectionL(const TCursorSelection& aCurSel, TBool aSyncCursor); - - /** - * An internal helper method for matches popup list. - * - * The index of currently selected prediction candidate. - * - * @since S60 3.2 - */ - TInt ResolveCurrentCandidateListIndex(CDesCArrayFlat* aCandList); - - /** - * Removes underlining from predictive word and moves cursor the end of the word. - * - * @since 3.2 - * @param aData Key data - * @return None - */ - void DeactivatePredicitveWordAndMoveCursorL(); - - /** - * Returns the Ccpu status of given editor state as a flag combination. - * - * @since 3.2 - * @param aEdwinState - * @return editor ccpu status - */ - TInt EditorCcpuStatus(CAknEdwinState* aEdwinState); - - /** - * Cancels editing options copy / paste mode initialted from editing options -submenu. - * - * @since 3.2 - */ - void CancelCcpuMode(); - -#ifdef RD_SCALABLE_UI_V2 - /** - * Launches stylus Ccpu-menu - * - * @since 5.0 - * @param aClickPoint Point where stylus was clicked. - */ - void LaunchStylusCcpuMenuL(TPoint &aClickPoint); - - void DynInitTouchMenuPaneL(CAknFepUiInterfaceMenuPane* aMenuPane); -#endif - - /** - * Has Japanese prediction input mode in PtiEngine - */ - TBool HasJapanesePredictionInputMode() const; - - - void InitPreviewMenuPane(CAknFepUiInterfaceMenuPane* aMenuPane); - -public: - void StopDisplayingMenuBar(); - -private: - void ConvertCharToKey(TChar aIn, TUint16& aKey) const; - -private: - // Data owned by this class - CAknFepKeyCatcherInterface* iKeyCatcher; - CAknFepIndicator* iIndicator; - CPeriodic* iShiftKeypressMonitor; - CAknFepLanguageManager* iLangMan; // own - MAknFepManagerInterface* iCurrentFepUI; // not own - CAknFepCaseManager* iCaseMan; - CAknFepInlineTextDecorator* iInlineTextDecorator; - - CAknFepHashKeyManager* iHashKeyMan; - CPeriodic* iConcatenationTimer; - //fep delay the resource changed message for getting the updated coordinate from editor. - CAsyncCallBack iAsyncResouceChanged; - - // shared data support - CAknFepSharedDataInterface* iSharedDataInterface; - - MAknEditingStateIndicator* iPreviousIndicator; - MAknEditingStateIndicator* iEditIndicatorAtLastUpdate; - TAknEditingState iPreviousEditingState; - - TLanguage iUiLanguage; // Symbian language code for UI language. - TLanguageCapabilities iLanguageCapabilities; // Input language and capabilities of the language. - TUint iFlags; - TUint iExtendedFlags; - TAknFepManagerState iFepManState; - TCoeInputCapabilities iInputCapabilities; - TInt iPermittedInputModes; - TInt iMode; - TInt iModeBefore; - TInt iCaseBefore; - TInt iResId; - TInt iVariantPermittedModes; - TInt iSpaceCharacterCode; // adding for japanese - TInt iFullWidthSpaceCharacterCode; // adding for japanese - TAknEditorNumericKeymap iAknEditorNumericKeymap; - TInt iAknEditorFlags; - TCursorSelection iUncommittedText; - RArray iHashKeyLoop; - TBool iWesternPredictive; - TKeyPressLength iKeyRepeat; - TBool iIsAutoCompleteOn; // for Auto Word Completion -#ifdef RD_INTELLIGENT_TEXT_INPUT - TInt iKeyBackSpaceHit; - TInt iTypingCorrectionLevel; // for typing correction level - TBool iIsNumberCandidateShown; // for number candidates - TBool iPrimaryCandidate; // for primary candidate - TBool iKeyPressedDuringShift; - TPtiKeyboardType iKeyboardType; // for checking the keyboard layout - TBool iSupressCursorMoveToEndChrKeyPressed; // For supressing cursor movement when SCT launched -#endif //RD_INTELLIGENT_TEXT_INPUT - TBool iJapanesePredictive; - TBool iDeviceSupportsRtlLanguage; // Could be removed - CIdle* iPostEventCheck; // Owned - - TWidthChar iCharWidth; // adding for japanese - CPtiEngine* iPtiEngine; // adding for japanese - - TUint iSimulateKey; - CApaDocument* iEmbedded; // User Dictionary - CAknNullService* iNullService; // User Dictionary - CAsyncCallBack iAsyncOwnSimulateKey; - TInt iFreeSpaceOfEditor; - TBool iQwertyInputMode; // Not used. The value is always EFalse. - TBool iLongThai0Key; - TBool iFepFullyConstructed; - CAknEdwinState* iRememberEditorState; // For "editing options" submenu - TInt iRememberLength; // For "editing options" submenu. - TInt iEditorCcpuStatus; // For "editing options" submenu. - TInt iCcpuMode; // For "editing options" submenu - TInt iMultiTapTimer; // for Japanese only: store MultiTap Timer - CAknFepUiInterfaceMenuBar* iEditMenuBar; // Remember menu bar instance for closing. - HBufC* iSctEditChars; // Buffer for characters selected in the edit menu - TPtr iEditCharsPtr; // Pointer to the buffer that holds all the selected characters. - TInt iStarScan; // Remember scan code for star key. - TInt iJapaneseQwertyFlags; // for Japanese only: store Japanese Qwerty Flags - - CPeriodic* iChrKeypressMonitor; // for Japanese only: Chr key monitor timer - TBool iLastKeyPressedWasHashKey; - TBool iStopProcessFocus; - TBool iClosePeninputUi; - /** - * User DB dialog - * Own, but doesn't need delete by myself - */ - CAknFepUserdbDlg* iUserdbdlg; - - CAknNavigationDecorator* iTapGroup; - - TInt iEditorCommandList[30]; - - TBool iComposChrFlag; - //User db view(phrase creation) - TInt iIsUserdbdlgActive; - /** - * * Used for handle key event for zhuyin method.(phrase creation) - * - */ - CZhuyinKeyHandler* iZhuyinKeyHandler; - CAknFepZhuyinAnalyser* iZhuyinAnalyser; - CZhuyinAnalyserDbFeed* iZhuyinAnalyserDb; - -#ifdef RD_SCALABLE_UI_V2 - - /** - * Used by itut spell mode, initial text in spell mode - */ - HBufC* iSpellInitText; - - /** - * Used by itut spell mode, initial text selection in spell mode, - * whose position is relative to whole text in original editor - */ - TCursorSelection iSpellInitCurSel; - - CAknFepPluginManager* iFepPluginManager; - - /** - * HKB predictive state before starting plugin IME - */ - TBool iT9UsedBeforePluginInput; - - - /** - * Stylus ccpu menu - */ - CAknFepUiInterfaceStylusPopUpMenu* iStylusCcpuMenu; - - /** - * Last known clik point, needed for stylus ccpu menu launch. - */ - TPoint iClickPoint; - - TBool iGainForeground; - - TBool iLoseForeAndGainFocus; - - TBool iNotifyPlugin; - - TBool iCancelPopupInQwerty; - - TBool iStarKeyPressed; - - TInt iLastChineseInputMode; - - // Indicate Stroke is used in QWERTY, when default input mode is Cangjie - TBool iStrokeUsedInQWERTY; - // Save that which editor use stroke - CAknEdwinState* iEditorStateStrokeUsed; - - // Indicated focus change has done in closing SCT, the call back from framework - // will not lead to another focus change. - TBool iDisalbleFocusChangeForSCT; -#endif //RD_SCALABLE_UI_V2 - - /** - * Long press clear key after close UI; - */ - TBool iLongClearAfterCloseUI; - - TBool iFeatureSupportedJapanese; // Save the value of KFeatureIdJapanese - - // stores a reference to previous editor state for pointer comparision - CAknEdwinState* iPreviousEditorState; - - CAknFepUIInterface* iUiInterface; -#ifdef RD_INTELLIGENT_TEXT_INPUT - CAknFepFnKeyManager *iFnKeyManager; // Owned - TBool iIsFnKeyMapped; -#ifdef __REVERSE_FN_KEY_SUPPORTED - TBool iIsReverseFnkeyInput; -#endif //__REVERSE_FN_KEY_SUPPORTED - - // Predictive QWERTY (XT9) changes ----> - //! The exact word tooptip shown above the inline editor when the exact word differs from the best guess candidate - // CAknPreviewPopUpController* iExactWordPopup; - - //! The contents of the exact word popup. - MAknFepUiWordPopupContent* iExactWordPopupContent; - MAknFepCandidatePopup* iCandidatePopup; - TBool iSListLaunchedFromMenu; - TInt iAutoCmptnTailLength; - TInt iIsLastResourceEditMenu; - // Predictive QWERTY (XT9) changes <---- -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - CAknFepUiInterfaceMenuBar* iOptionsMenuBar; -#endif -#endif //RD_INTELLIGENT_TEXT_INPUT - //phrase creation - TInt iPhraseCreation; - TInt iPinyinPhraseCreation; - TInt iKeyStar; - TInt iEntryPhrase; - TBool iPenSupportMenu; - TFepSymbolOfHardwareOne iSymbolData; - - /** - * Flag for wether input mode is changed by shift+space - */ - TBool iShiftAndSpace; - CAknFepThaiSCTSelector* iAknFepThaiSCTSelector; - -public: - - //the follow 8 functions for phrase creation - /** - * Set the state to pinyin phrase creation - */ - void PinyinPhraseCreation( TBool aPinyinPhraseCreation ); - - /** - * Is the state is in pinyin phrase creation - * - * @return if not enabled, return EFalse - */ - TBool IsPinyinPhraseCreation() const; - - /** - * Set the state to phrase creation - */ - void PhraseCreation( TBool aPhraseCreation ); - - /** - * Is the state is in phrase creation - * - * @return if not enabled, return EFalse - */ - TBool IsPhraseCreation() const; - - /** - * Set the state to input phrase - */ - void EntryPhrase( TBool aEntryPhrase ); - - /** - * Is the state is in input phrase - * - * @return if not enabled, return EFalse - */ - TBool IsEntryPhrase() const; - - /** - * Set the state to enable star key - */ - void EnableKeyStar( TBool aEnable ); - - /** - * Is the state is enable star key - * - * @return if not enabled, return EFalse - */ - TBool IsEnableKeyStar() const; -#ifdef RD_INTELLIGENT_TEXT_INPUT -public: - /** - * multitaps thru the chars in the SCT. - * @param aCallback, the callback when the timer expires - */ - void MultitapThroughSCTCharL(TCallBack aCallBack); -private: - TBool NumericResourceMultiTapTimerTimeoutL(); - - /** - * CAknFepManager::FindAndRemoveInputOptionsMenuItemL - * Helper method to check if the "Input options" menu item exists and - * if so, remove it from the menu pane. - * Params - - * aMenuPane : pointer to the menu pane to be checked for the resource id - */ - void FindAndRemoveInputOptionsMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane ); - - /** - * CAknFepManager::FindAndRemoveEditSubMenuItemL - * Helper method to check if the "Edit Text" menu item exists and - * if so, remove it from the menu pane. - * Params - - * aMenuPane : pointer to the menu pane to be checked for the resource id - */ - void FindAndRemoveEditSubMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane ); - - /** - * CAknFepManager::AddInputOptionsMenuItemL - * Helper method to add the "Input options" menu item in appropriate location - * Appropriate location is : - * - if Avkon Help command exists, then immediately above it - * - else if Avkon Exit command exists, then immediately above it - * - else if there are 3 or more items in the Options menu, then 3rd from last - * - else it is the last item. - * Params - - * aMenuPane : pointer to the menu pane to be checked for the resource id - */ - void AddInputOptionsMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane ); - -private: - CChrMultiTapTimer* iNumericResourceTimer; - HBufC* iResourceString; - TInt iChrCharIndex; -#ifdef __HALF_QWERTY_KEYPAD - TKeyEvent iHalfQwertyLastKeyEvent; -// this variable is set whenever a long key press of chr happens - TBool iChrLongKeyPress; - TBool iFnCharInsertedForShift; -#endif //__HALF_QWERTY_KEYPAD - TInt iNumericResourceId; -#endif //RD_INTELLIGENT_TEXT_INPUT - TBool iHybridAplphaChangedToAlphanumeric; - CAknEdwinState* iLastFocusedEditor; - CAknEdwinState* iFepAwareDialogParentEditor; - /** - * Indicate that the focused control is destroyed. - */ - TBool iFocusedItemDestroy; - }; - -/** - * Sets aFlag bitfield in iFlags - */ -inline void CAknFepManager::SetFlag(TInt aFlag) - { - iFlags|=aFlag; - } - -/** - * Clears aFlag bitfield in iFlags - */ -inline void CAknFepManager::ClearFlag(TInt aFlag) - { - iFlags&=~aFlag; - } - -/** - * Clears all flags down - */ -inline void CAknFepManager::ResetFlags() - { - iFlags=0; - } - -/** - * Returns ETrue if the aFlag bitfield in iFlags is set, EFalse if it - * is clear - */ -inline TBool CAknFepManager::IsFlagSet(TInt aFlag) const - { - return iFlags&aFlag; - } - -/** - * Sets aExtendedFlag bitfield in iExtendedFlags - */ -inline void CAknFepManager::SetExtendedFlag(TInt aExtendedFlag) - { - iExtendedFlags|=aExtendedFlag; - } - -/** - * Clears aExtendedFlag bitfield in iExtendedFlags - */ -inline void CAknFepManager::ClearExtendedFlag(TInt aExtendedFlag) - { - iExtendedFlags&=~aExtendedFlag; - } - -/** - * Clears all ExtendedFlags down - */ -inline void CAknFepManager::ResetExtendedFlags() - { - iExtendedFlags=0; - } - -/** - * Returns ETrue if the aExtendedFlag bitfield in iExtendedFlags is set, EFalse if it - * is clear - */ -inline TBool CAknFepManager::IsExtendedFlagSet(TInt aExtendedFlag) const - { - return iExtendedFlags&aExtendedFlag; - } - -/** - * Returns previous case information - */ -inline TInt CAknFepManager::CaseBefore() const - { - return iCaseBefore; - } - -inline TBool CAknFepManager::IsChineseInputLanguage() const - { - return ( iLanguageCapabilities.iInputLanguageCode == ELangPrcChinese || - iLanguageCapabilities.iInputLanguageCode == ELangHongKongChinese || - iLanguageCapabilities.iInputLanguageCode == ELangTaiwanChinese); - } - -inline TBool CAknFepManager::IsKoreanInputLanguage() const - { - return iLanguageCapabilities.iInputLanguageCode == ELangKorean; - } -inline TBool CAknFepManager::IsArabicInputLanguage() const - { - return ( iLanguageCapabilities.iInputLanguageCode == ELangArabic); - } -/** - * Returns the valid of Qwerty - */ -inline TBool CAknFepManager::IsQwerty() const - { - return iQwertyInputMode; - } - - -/** - * Sets aFlag bitfield in iCcpuFlags - */ -inline void CAknFepManager::SetCcpuFlag(TInt aFlag) - { - iCcpuMode|=aFlag; - } - -/** - * Clears aFlag bitfield in iCcpuFlags - */ -inline void CAknFepManager::ClearCcpuFlag(TInt aFlag) - { - iCcpuMode&=~aFlag; - } - -/** - * Clears all flags in iCcpuFlags - */ -inline void CAknFepManager::ResetCcpuFlags() - { - iCcpuMode=0; - } - -/** - * Returns ETrue if the aFlag bitfield in iCcpuFlags is set, EFalse if it - * is clear - */ -inline TBool CAknFepManager::IsCcpuFlagSet(TInt aFlag) const - { - return iCcpuMode&aFlag; - } - -inline MAknFepManagerInterface* CAknFepManager::InternalFepUI() - { - return iCurrentFepUI; - } - -#ifdef RD_SCALABLE_UI_V2 - -inline void CAknFepManager::SetNotifyPlugin( TBool aNotifyFlag ) - { - iNotifyPlugin = aNotifyFlag; - } -inline TInt CAknFepManager::PermittedModes() const - { - return iPermittedInputModes; - } - -inline void CAknFepManager::RemeberEditorState() - { - iRememberEditorState = EditorState(); - } - -inline TBool CAknFepManager::IsMfneEditor() const - { - return EditorType() == CAknExtendedInputCapabilities::EMFNEBased; - } - -inline TBool CAknFepManager::IsFindPaneEditor() const - { - return iAknEditorFlags & EAknEditorFlagFindPane; - } - -inline CAknFepManager::TLanguageCapabilities CAknFepManager::InputLanguageCapabilities() const - { - return iLanguageCapabilities; - } - -inline TAknFepManagerState& CAknFepManager::FepManState() - { - return iFepManState; - } - -inline void CAknFepManager::SetCancelPopupInQwerty( TBool aCancelPopupInQwerty ) - { - iCancelPopupInQwerty = aCancelPopupInQwerty; - } -inline TInt CAknFepManager::LastChineseInputMode() const - { - return iLastChineseInputMode; - }; -#endif //RD_SCALABLE_UI_V2 - -/** -* Returns ETrue if Feature manager supports Japanese. -*/ -inline TBool CAknFepManager::IsFeatureSupportedJapanese() const - { - return iFeatureSupportedJapanese; - } - -/** -* Returns ETrue if Auto Word Completion is enabled in the edtior -*/ -inline TBool CAknFepManager::IsAutoCompleteOn() const - { - return iIsAutoCompleteOn; - } -#ifndef RD_INTELLIGENT_TEXT_INPUT -/** -* Setes the current state from GS to the local state -*/ - -inline void CAknFepManager::SetAutoCompletionState(TInt aValue) -{ - iIsAutoCompleteOn = aValue; -} -#endif -#ifdef RD_INTELLIGENT_TEXT_INPUT -/** -* @return TInt Typing correction level. -*/ -inline TInt CAknFepManager::AdvancedPredictiveTypingCorrectionLevel() const - { - return iTypingCorrectionLevel; - } - -/** -* @return ETrue If the number candidate shown. EFalse otherwise. -*/ -inline TBool CAknFepManager::IsAdvancedPredictiveNumberCandidateShown() const - { - return iIsNumberCandidateShown; - } - -/** -* @return ETrue If the number candidate shown. EFalse otherwise. -*/ -inline TBool CAknFepManager::AdvancedPredictivePrimaryCandidate() const - { - return iPrimaryCandidate; - } -#endif //RD_INTELLIGENT_TEXT_INPUT - -inline TBool CAknFepManager::WasLastKeyPressAHashKey() - { - return iLastKeyPressedWasHashKey; - } - -inline void CAknFepManager::SetLastPressedHashKeyStatus(TBool aStatus) - { - iLastKeyPressedWasHashKey = aStatus; - } - -inline TCoeInputCapabilities& CAknFepManager::InputCapabilities() - { - return iInputCapabilities; - } - -inline TFepSymbolOfHardwareOne CAknFepManager::SymbolInfoOfHardKey1() - { - return iSymbolData; - } -inline TBool CAknFepManager::IsSupportNativeNumber() const - { - return ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic - || iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic - || iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ); -} - -inline TBool CAknFepManager::IsSupportedAdaptiveSearch() const - { - return iAknEditorFlags & EAknEditorFlagAdaptiveSearch; - } - -inline void CAknFepManager::SetGainForeground( TBool aGainForeground ) - { - iGainForeground = aGainForeground; - } -#endif - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepManagerInterface.h --- a/fep/aknfep/inc/AknFepManagerInterface.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,215 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Declaration of core part of CAknFepLanguageManager class. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_MANAGER_INTERFACE_H__ -#define __AKN_FEP_MANAGER_INTERFACE_H__ - -// INCLUDES -#include -#include -#include -#include -#include //TAknEditorNumericKeymap -#include -#include "AknFepGlobalEnums.h" - -#ifdef RD_INTELLIGENT_TEXT_INPUT -#include -#endif -// CONSTANTS - -// CLASS DECLARATION - -/** -* MAknFepManagerInterface is a part of Japanese FEP. -* -* -* @see CAknFepManager, other application -*/ -class MAknFepManagerInterface - { - public: // Constructors and destructor - virtual ~MAknFepManagerInterface(){} - -public: // New Functions - /** - * - * - * @since 2.6 - */ -#ifdef RD_INTELLIGENT_TEXT_INPUT - virtual void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode, - TInt aKeyboardType = EPtiKeyboardNone) = 0; -#else - virtual void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode) = 0; -#endif - - /** - * - * - * @since 2.6 - */ - virtual void SetCase(TCase aCase) = 0; - - /** - * - * - * @since 2.6 - */ - virtual void SetNumberModeKeyMappingL(TAknEditorNumericKeymap aAknEditorNumericKeymap) = 0; - - /** - * - * - * @since 2.6 - */ - virtual TBool HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey) = 0; - - /** - * - * - * @since 2.6 - */ - virtual void HandleCommandL(TInt aCommandId) = 0; - virtual void HandleCommandL(TInt aCommandId, TInt aParam) = 0; - - /** - * - * - * @since 2.6 - */ - virtual void CloseUI() = 0; - - /** - * - * - * @since 2.6 - */ - virtual void ExpireMultitapTimer() = 0; - - /** - * - * - * @since 2.6 - */ - virtual TBool IsValidNumericLongKeyPress(TInt aKey) const = 0; - - /** - * - * - * @since 2.6 - */ - virtual void AddTextToUserDictionaryL(const TDesC& aText) = 0; - - /** - * - * - * @since 2.6 - */ - virtual void GetFormatOfFepInlineText(TCharFormat& aFormat, - TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter) const = 0; - - /** - * - * - * @since 2.6 - */ - virtual TInt SupportLanguage(TInt aMode) const = 0; - - /** - * - * - * @since 2.6 - */ - virtual void SetInputLanguageL(TLanguage aLanguage) = 0; - - /** - * - * - * @since 2.6 - */ - virtual TBool IsValidShiftKeyPress() const = 0; -#ifdef RD_INTELLIGENT_TEXT_INPUT - virtual TBool IsValidFnKeyPress() const = 0; - virtual TBool IsValidLongChrKeyPress() const = 0; -#endif - - /** - * - * - * @since 2.6 - */ - virtual void SetEditorContext(TInt aContext) = 0; - - /** - * - * - * @since 2.6 - */ - virtual void ActivateUI() = 0; - - /** - * Set text to Fep aware editor - * - * @since 3.2 - */ - virtual void SetFepAwareEditorText(const TFepInputContextFieldData& /*aIcfData*/) = 0; - - /** - * Get max text length that Fep aware editor can contain - * - * @since 3.2 - */ - virtual TInt EditorMaxLength() = 0; - - /** - * Screen resolution or layout change notification - * - * @since 3.2 - */ - virtual void ResourceChanged(TInt aType) = 0; - - /** - * Set underlining FepUI interface - * - * @since 3.2 - */ - virtual void SetNextFepUI(MAknFepManagerInterface* /*aNextUi*/) = 0; - - /** - * Set the Star key flag - * - * @param aSet TBool. - * @return None - */ - virtual void SetStarKeyFlag( TBool aSet ) = 0; - - }; -#endif // __AKN_FEP_MANAGER_INTERFACE_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepManagerUIInterface.h --- a/fep/aknfep/inc/AknFepManagerUIInterface.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,760 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the MAknFepManagerUIInterface definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_MANAGER_UI_INTERFACE_H__ -#define __AKN_FEP_MANAGER_UI_INTERFACE_H__ - -// INCLUDES -#include - -#include -#include // TCursorSelection -#include -#ifdef RD_INTELLIGENT_TEXT_INPUT -#include -#endif -#include "AknFepGlobalEnums.h" -#include "AknFepUiIndicEnums.h" - -#ifdef RD_INTELLIGENT_TEXT_INPUT -#include "AknFepFnKeyManager.h" -#endif -// CLASS DECLARATION -class CPtiEngine; -class CAknFepUIInterface; -class CAknFepPluginManager; -// the follow 2 class for phrase creation -class MZhuyinKeyHandler; -class CAknFepZhuyinAnalyser; - -/** - * This interface describes the FEP Manager functionality that is required by western - * Input States only. It could potentially be conditionally compiled out if western - * predictive text is not required in a product - */ -class MAknFepManagerUIInterfaceWestern - { -public: - /* - *flags, all held in the FEP Manager - */ - virtual TBool IsFlagSet(TInt aFlag) const = 0; - virtual void SetFlag(TInt aFlag) = 0; - virtual void ClearFlag(TInt aFlag) = 0; - - virtual void SetCcpuFlag(TInt aFlag) = 0; - virtual void ClearCcpuFlag(TInt aFlag) = 0; - - /* - * Update the current inline edit - * @param aUncommitedTextChange, the change to the length of the inline edit - * i.e. 1 is a character added, 0 is no change, -1 is a character deleted - */ - virtual void UpdateInlineEditL(const TDesC& aText, TInt aUncommitedTextChange) = 0; - - /* - * Starts an inline edit - */ - virtual void StartInlineEditL() = 0; - - /* - * Starts an inline edit with a text string to uncommit - */ - virtual void StartInlineEditL(const TDesC& aText) = 0; - - /* - */ - virtual void StartInlineEditL(TCursorSelection aCursorSelection, - const TDesC& aInitialInlineText, - TInt aPositionOfInsertionPointInInlineText, - TBool aCursorVisibility) = 0; - - /* - * Closes the UI backspace event have completely deleted a word - */ - virtual TBool CloseUiIfWordDeletedL() = 0; - - /* - * gets the text to uncommit in the engine when moving onto a word - * - * @param aText the descriptor to fill with the text that should be uncommitted - * @param aCode the keycode, must be backspace or left or right arrow - * @param aComsumeKey ETrue if the key should be consumed - * @return True if we have successfully found text which can be uncommited - */ - virtual TBool TryGetTextToUncommitL(TDes& aText, TInt aCode, TBool& aComsumeKey) = 0; - - /* - * Update the CBA with a new resource - */ - virtual void UpdateCbaL(TInt aResourceId) = 0; - - /* - * Remove the character that is used to show to the user that the - * predictive text engine cannot match a word to the keys entered - * @return ETrue if the No Matches Indicator has been removed, EFalse - * if it was not there. - */ - virtual TBool TryRemoveNoMatchesIndicatorL() = 0; - - /* - * @return ETrue if the new word length is one character longer than - * the current uncommited text - */ - virtual TBool IsMoreGoodWordsComing(TInt aNewWordLength) const = 0; - - //the following 8 functions for creation - /** - * Set the state to Pinyin phrase creation - */ - virtual void PinyinPhraseCreation(TBool aPinyinPhraseCreation) = 0; - - /** - * Is the state is in pinyin phrase creation - * - * @return if not enabled, return EFalse - */ - virtual TBool IsPinyinPhraseCreation() const = 0; - - /** - * Set the state to phrase creation - */ - virtual void PhraseCreation(TBool aPhraseCreation) = 0; - - /** - * Is the state is in phrase creation - * - * @return if not enabled, return EFalse - */ - virtual TBool IsPhraseCreation() const = 0; - - /** - * Set the state to input phrase - */ - virtual void EntryPhrase(TBool aEntryPhrase) = 0; - - /** - * Is the state is in input phrase - * - * @return if not enabled, return EFalse - */ - virtual TBool IsEntryPhrase() const = 0; - - /** - * Set the state to enable star key - */ - virtual void EnableKeyStar(TBool aEnable) = 0; - - /** - * Is the state is enable star key - * - * @return if not enabled, return EFalse - */ - virtual TBool IsEnableKeyStar() const = 0; -#ifndef RD_INTELLIGENT_TEXT_INPUT - /* - * @return ETrue if inputmode is word completion and new word length is not equal to - * the current inputsequence length - */ - virtual TBool IsMoreGoodAutoCompleteWordsComing(TInt aInputMode, TInt aPreviousWordLengh, - TInt aNewWordLength) const =0; -#endif // RD_INTELLIGENT_TEXT_INPUT - - /* - * When starting a new word, checks the adjacent editor positions for - * valid inline editing characters. If these are present, we are starting a - * compound word and the flag EFlagCompoundWord is set - */ - virtual void TryStartCompoundWord() = 0; - - /* - * Calculates the span of the compound word that is made up of the - * current uncommitted text and the adjacent word. - * Adds this word to the User Database - */ - virtual void AddCompoundWordToUdbL() = 0; - - /** - * Sets delayed commit on (predicitve word will be commited in - * next call to TryCloseUiL. This is needed because of Japanese ReadingTextL). - * - * @since 3.1 - */ - virtual void SetDelayedCommit() = 0; - - /** - * Returns a boolean value indicating whether the curesor is at the end of a word. - */ - virtual TBool IsCursorAtEndOfWord() = 0; - }; - -class MAknFepManagerUIInterface : public MAknFepManagerUIInterfaceWestern - { -public: -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - virtual TBool KeyMapsDifferentCharacterWithFn( TPtiKey aKey ) const = 0; -#endif -#endif - /** - * Check western predictive mode. - * @param aMode input mode. - * @return ETrue if western predictive mode. - */ - virtual TBool WesternPredictive(TInt aMode = 0) const=0; - /** - * Check Qwerty keypad - * - * @since 3.0 - * @return ETrue is Qwerty - */ - virtual TBool IsQwerty() const=0; -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Launches the compact match candidate list which follows the inline editor. - * @param aFocusedIndex The index of the word focused by default. - * If KErrNotFound is given, the currently active - * word will be focused. - */ - virtual void LaunchCandidatePopupListL( TInt aFocusedIndex = KErrNotFound )=0; - /** - Returns the Fn key state - */ - virtual CAknFepFnKeyManager::TFnKeyState FnKeyState() = 0; - virtual void SetFnKeyState(CAknFepFnKeyManager::TFnKeyState aState) = 0; - /** - Returns the current keyboard layout in use. - */ - virtual TPtiKeyboardType KeyboardLayout() const = 0; -#ifdef __REVERSE_FN_KEY_SUPPORTED - /** - Returns if the input is in reverse Fn key input mode. - */ - virtual TBool IsReverseFnkeyInput() = 0; - - /** - * Returns true if the aChar is allowed in the numeric editor - */ - virtual TBool IsValidCharInNumericEditorL( TChar aChar ) const = 0; - - /** - * Filter the char for Fn reverse mode in case of - * numeric editor. This function should call - * in case of numeric editor reverse mapping. - */ - virtual TBool IsValidCharForNumericInFnReverseL(TInt aKey, TPtiTextCase aCase)=0; - -#endif //__REVERSE_FN_KEY_SUPPORTED - virtual void AddOneSpaceOrMoveCursorL() = 0; - -#endif - virtual TBool IsHybridAplhaEditor() const = 0 ; - virtual TBool IsHybridAlphaModeChangedtoAplhanumeric() const = 0; - /** - * Tells if the current editor is phone number editor - * @return ETrue if the current editor is phone number editor - */ - virtual TBool IsPhoneNumberEditor() const = 0; - - /** - * A request to close the UI. If the UI was not active (initial state) - * multitap characters are commited by calling ExpireMultitapTimer() - * on the ptiengine. - * @return ETrue if the UI was active, EFalse otherwise - */ - virtual TBool TryCloseUiL() = 0; - - /** - * A request to send a char to the editing window - */ - virtual void NewCharacterL(const TDesC& aChar) = 0; - - /** - * A request to send text to the editing window - */ - virtual void NewTextL(const TDesC& aChar) = 0; - - /** - * A request to commit the current char - */ - virtual void CommitInlineEditL() = 0; - - /** - * Commits given string in the editing window. This function checks that - * the editor has enough space to insert given string. If it not, - * given string is cut, then it is committed. - */ - virtual void CommitInlineEditL(const TDesC& aText, TInt aUncommitedTextChange) = 0; - - /** - * A request to cancel inline input to wditing window. - */ - virtual void CancelInlineEdit() =0; - - /** - * Called by Fep Manager when editing window draws inline input characters. - */ - virtual void GetScreenCoordinatesL(TPoint& aLeftSideOfBaseLine,TInt& aHeight, - TInt& aAscent,TInt aDocumentOffset) = 0; - - /** - * Called by Fep Manager when Chinese UI ask cursor baseline position. - */ - virtual void GetScreenCoordinatesL(TPoint& aLeftSideOfBaseLine, - TInt& aHeight,TInt& aAscent) = 0; - - /** - * A notification to the Fep Manager that the UI has been activated.. - * Should always be called by an Initial State Object when initiating - * a change to an Entry State - */ - virtual void SendUIActivatedNotification() = 0; - - /** - * A notification to the Fep Manager that the UI has not been activated. - */ - virtual void SendUIDeActivatedNotification() = 0; - - /** - * calulates if an SCT can be launched in the current editor at the present - * cursor position - * @return ETrue if an SCT can be launched, EFalse if not - */ - virtual TBool IsAbleToLaunchSCT() const = 0; - - /** - * Launch the Special Character Table - */ - virtual void LaunchSpecialCharacterTableL(TInt aResourceId=0, - TBool aLaunchedByTouchWin=EFalse, - TBool aSmileyFirst=EFalse) = 0; - - /** - * Play sound - */ - virtual void PlaySound(TAvkonSystemSID aSound) const = 0; - /** - * get uncommitted text - */ - virtual TCursorSelection UncommittedText() const = 0; - - /** - * Gets the previous character depnding on wheather language is - * contxet sensitve or not - * since 3.2: aContextSensitive not in use, since no real meaning found. - */ - virtual TText PreviousChar( TBool aContextSensitive = EFalse ) = 0; - /** - * Returns the next character to the current cursor position - */ - virtual TText NextChar() = 0; - virtual TBool IsZWSCharacterPresent( TBool aLigaturePresent = EFalse ) = 0; - /** - * Removes previous character to the current cursor position - */ - virtual void RemovePreviousCharacterL() = 0; - /** - * Removes Zero Width Space character from the inputted text. - */ - virtual void RemoveZWSCharacterL(TBool aIsViramaInputted, - TBool aIsInMultitappingHalant = EFalse, - TBool aIsCharModifier = EFalse, - TBool aIsLigaturePresent = EFalse) = 0; - /** - * Adds text to the editor and commits the text. - */ - virtual void NewCharacterSequenceL(const TDesC& aText, TIndicInputResponse aResponse) = 0; - - virtual TDigitType LocalDigit() = 0; - virtual TWidthChar CharacterWidth() const = 0; - virtual void SetInlineEditingCursorVisibilityL(TBool aCursorVisibility) = 0; - virtual CPtiEngine* PtiEngine() const = 0; - - /** - * checks that the editor the editor has free space to add another character - * An editor of unlimited length will return its maximum size as zero - */ - virtual TBool EditorHasFreeSpace( TInt aNumberOfCharacter = 0 ) const = 0; - - virtual void RedecorateAfterDeletionL( const TDesC& aTextThatWasDeleted ) = 0; - - /** - * - * - * @param aKeyCode the value of the key to simulate - */ - virtual void SimulateKeyEventL(TUint aKeyCode, TBool aActiveObj=EFalse) = 0; - - /** - * Queries supportting of ScrollLatinPredictive feature - * - * @since 2.6 - * @return ETrue if ScrollLatinPredictive was supported - */ - virtual TBool IsAbleScrollLatinPredictive() const = 0; - - virtual TBool IsOnlyNumericPermitted() const = 0; - - virtual TInt EditorNumericKeymap() const = 0; - - /** - * Queries supportting of SecretText - * - * @since 2.6 - * @return ETrue if SecretText was supported - */ - virtual TBool IsSupportsSecretText() const = 0; - - - /** - * Returns current input mode. - * - * @since 3.0 - * @return Integer value indicating current editor input mode. - */ - virtual TInt InputMode() const = 0; - - /** - * Returns current CangJie input mode. - * - * @since 3.0 - * @return Integer value indicating current CangJie input mode. - */ - virtual TInt CangJieMode() const = 0; - - /** - * Returns boolean value indicating whether edit submenu functionality is in use. - * - * @since 3.1 - * @return ETrue if edit submenu functionality is in use. - * EFalse otherwise. - */ - virtual TBool EditSubmenuInUse() const = 0; - - /** - * Launches the mode selection menu - * - * @since 3.1 - */ - virtual void LaunchSelectModeMenuL() = 0; - - /** - * @since 3.2 - */ - virtual void SetCursorSelectionL(const TCursorSelection& aCurSel, TBool aSyncCursor) = 0; - - /** - * Returns the status of arabic-indic digit mode setting. - * - * @since 3.0 - */ - virtual TBool ArabicIndicDigitsInUse() const = 0; - virtual TBool EasternArabicIndicDigitsInUse() const = 0; -#ifndef RD_INTELLIGENT_TEXT_INPUT - - /** - * Returns the status of auto word completion in the editor. - * - * @since 5.0 - */ - virtual TBool IsAutoCompleteOn() const = 0; - - /** - * Removes the suggested completion part - * - * @since 5.0 - */ - virtual void RemoveSuggestedCompletionL() = 0; -#endif // RD_INTELLIGENT_TEXT_INPUT - /** - * Set current long clear key press - * - * @since 3.2 - */ - virtual void SetLongClearAfterCloseUI(TBool aLongClear) = 0; - - /** - * Align the Logical and Visual cursor positions. - * - * @since 3.2 - * @param aType Cursor type. - * @param aToLeft ETrue if the position to the left is to be found, - * EFalse if the position to the right is to be found. - * @return None - */ - virtual void AlignLogicalAndVisualCursorL( TTmDocPosSpec::TType aType, - TBool aToLeft ) = 0; - - /** - * This method is called for removing the Repha character. The function - * goes to the start of the consonant or ligature, checks if repha - * character is present. - * - * @since 3.2 - * @param None. - * @return None. - */ - virtual void RemoveRephaCharacterL() = 0; - - /** - * Checks if the Repha character has been attached to the consonant or - * ligature. - * - * @since 3.2 - * @param None. - * @return ETrue if present else EFalse. - */ - virtual TBool IsRephaPresent() = 0; - - /** - * Retrieve the Previous to previous character during multitapping. - * - * @since 3.2 - * @param aContextSensitive EFalse is the default parameter. - * ETrue is used for requesting the function - * to check for extraction of the character - * two positions before the seleted text. - * - * @return The previous to previous character if any. - */ - virtual TText PreviousToPreviousChar( TBool aContextSensitive = EFalse ) = 0; - - /** - * This method is called for removing the Rakar character. The function - * checks if Rakar (Virama+Ra) is present. - * - * @since 3.2 - * @param None. - * @return None. - */ - virtual void RemoveRakarCharacterL() = 0; - - /** - * Returns the free space left in the Editor. - * - * @param aUnlimit. Set to EFalse in case of Editors with limited text - * size - * isToCountUncommittedTextLength. Pass ETrue if the lenght of - * Uncommitted text is to be counted. - * - * @return TInt. Free space left in the Editor. - */ - virtual TInt EditorFreeSpace(TBool& aUnlimit, - TBool isToCountUncommittedTextLength = EFalse ) const = 0; -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Returns the free space left in the Editor. ITI specific implementation - * - * @param aUnlimit. Set to EFalse in case of Editors with limited text - * size - * isToCountUncommittedTextLength. Pass ETrue if the lenght of - * Uncommitted text is to be counted. - * - * @return TInt. Free space left in the Editor. - */ - virtual TInt EditorFreeSpaceForAutoWordCompletion(TBool& aUnlimit, - TBool isToCountUncommittedTextLength = EFalse ) const = 0; -#endif -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Gives the amount of characters in the document. - * @return The number of characters in the active editor. - */ - virtual TInt DocumentLength() const = 0; - -#endif //RD_INTELLIGENT_TEXT_INPUT -#endif //__ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - /** - * from MAknFepManagerUIInterface - * query whether the special char is valid in the current editor - * - * @since 3.2 - * @param aChar Checking a chracter - * @return TBool. IF ETrue, the character is valid. - */ - virtual TBool CharIsValidInEditor(TChar aChar) = 0; - - /** - * Returns the status of predictive input. - * - * @since 3.2 - * @return TBool. IF ETrue, it is possible to change prediction ON. - */ - virtual TBool IsAbleToChangePrediction() const = 0; - - /** - * This method is called for removing the N characters from the - * specified position. If the text to be removed is not yet - * committed, it is updated with NULL descriptor and committed. - * - * @since 5.0 - * @param TInt aPos position to start searching from. By default - * Searching will start from the cursor position. - * @param TInt aNumOfCharacters Number of characters to remove. - * @param TBool Should cursor be positioned at the original location. - * @return None. - */ - virtual void RemoveTextFromEditorL( TInt aNumOfCharacters, TInt aPos = 0, - TBool aIsToAlignCursor = ETrue ) = 0; - - /** - * Align the Logical and Visual cursor positions. - * - * @since 5.0 - * @param None - * @return None - */ - virtual void AlignLogicalAndVisualCursorL() = 0; - -#ifdef RD_MARATHI - /** - * This function checks if the previous two characters are - * the combination of Chandra-A - * - * @since 5.0 - * @param None - * @return TBool. - */ - virtual TBool IsChandraAPresentL() = 0; -#endif // RD_MARATHI - - /** - * Returns boolean value indicating whether hash key is in selection mode or - * in traditional mode. - * - * @since 3.1 - * @return ETrue if hash key is in text selection mode. - * EFalse otherwise. - */ - virtual TBool HashKeySelectionInUse() const = 0; - - /** - * Returns the UI interface implementation used in the current app. - * - * @since 3.2 - * @return The UI interface object used in the current app. - */ - virtual CAknFepUIInterface* UiInterface() = 0; - -#ifdef RD_INTELLIGENT_TEXT_INPUT - - // Predictive QWERTY (XT9) changes ----> - /** - * Function to get the text direction for current language. - * @return ETrue if language id RTL, EFalse if it is not - */ - virtual TBool IsRightToLeftLanguage() = 0; - - /** - * @return ETrue If the auto completion is On. EFalse otherwise. - */ - virtual TBool IsAutoCompleteOn() const = 0; - - /** - * @return TInt Typing correction level. - */ - virtual TInt AdvancedPredictiveTypingCorrectionLevel() const = 0; - - /** - * @return ETrue If the number candidate shown. EFalse otherwise. - */ - virtual TBool IsAdvancedPredictiveNumberCandidateShown() const = 0; - - /** - * Cuts off the automatically completed tail of the suggested word candidate. - */ - virtual void RemoveSuggestedAdvanceCompletionL() = 0; - - /** - * @return ETrue If the primary candidate is suggested. EFalse otherwise. - */ - virtual TBool AdvancedPredictivePrimaryCandidate() const = 0; - - /** - * @Set the chr composition flag. - */ - virtual void SetComposChrFlag( TBool aFlag ) = 0; - - /** - * @return ETrue If it is chr composition key - */ - virtual TBool GetComposChrFlag() = 0; - - // Predictive QWERTY (XT9) changs <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - /** - * Returns plugin ui manager - * - * @since 3.2 - * @return The UI interface object used in the current app. - */ - virtual CAknFepPluginManager* PluginUIManager() = 0; -#ifdef RD_HINDI_PHONETIC_INPUT - //hindi_phonetic_fixes - /* - * This functions toggles the case from upper to lower - * @since 5.0 - * @param None - * @return void - */ - virtual void HandleIndicCaseL()=0; -#endif - - // the follow 2 functions for phrase creation - virtual MZhuyinKeyHandler* ZhuyinKeyHandler() = 0; - virtual CAknFepZhuyinAnalyser* ZhuyinAnalyser() = 0; - -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * @return ETrue If the number entry with long key press is supported on QWERTY keyboard. - */ - virtual TBool LongPressNumberEntryOnQwerty() const = 0; -#endif //RD_INTELLIGENT_TEXT_INPUT -#endif //__ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - virtual void MultitapThroughSCTCharL(TCallBack aCallBack) = 0; - virtual TBool IsLanguageSupportPrediction() = 0; - virtual TInt GetNumericSCTResID() = 0; - /** - * Hides the exact word pop up window. - */ - virtual void HideExactWordPopUp() = 0; - /** - * @return ETrue If the exact word pop up is shown. - */ - virtual TBool IsExactWordPopUpShown() = 0; -#endif //RD_INTELLIGENT_TEXT_INPUT - virtual CAknExtendedInputCapabilities::TEditorType EditorType() const = 0; - virtual TBool IsAllowedKeymappingForNumberMode(TChar aChar) const = 0; - }; -#endif // __AKN_FEP_MANAGER_UI_INTERFACE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepPanic.h --- a/fep/aknfep/inc/AknFepPanic.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Panic definitions. -* -*/ - - - - - - - - - - - - -#if !defined(__AKNFEPPANIC_H__) -#define __AKNFEPPANIC_H__ - -#include - -enum TAknFepPanic - { - EAknFepPanicCurrentSelectionOutsideVisibleCandidates_unused, - EAknFepPanicAttemptedSelectionOutsideVisibleCandidates_unused, - EAknFepPanicAttemptedSelectionOutsideMaxCandidates, - EAknFepPanicAttemptedSetItemTextOutsideMaxCandidates_unused, - EAknFepPanicAttemptedSetModeOutsideMaxCandidates_unused, - EAknFepPanicAttemptedLayoutOutsideMaxCandidates, - EAknFepPanicAttemptedLayoutOutsideVisibleCount_unused, - EAknFepPanicCurrentSelectionFallsOutsideNewVisibleCount, - EAknFepPanicCurrentSelectionFallsOutsideCandidates, - EAknFepPanicNewVisibleCountExceedsRange_unused, - EAknFepPanicCandidatesExceedVisibleCount, - EAknFepPanicCandidatesEmpty, - EAknFepPanicNonPermittedEditorMode, - EAknFepPanicSizeChangedOutsideRange, - EAknFepPanicNoPermittedEditorModesAvailable, - EAknFepPanicNotInChina, - EAknFepPanicNoHandleToFepAwareTextEditor, - EAknFepPanicFindModeSavedToNonFindEditor, - EAknFepPanicMoreCandidatesWithToneMarkThanWithout, - EAknFepPanicSelectionMustBeZeroIfInInputPane, - EAknFepPanicNotInsideInlineEdit, - EAknFepPanicNoCaseManager, - EAknFepPanicBadInputState, - EAknFepPanicNoUiManager, - EAknFepPanicNoCandidatePane_unused, - EAknFepPanicCandidatePaneNotSupportScrollDirection_unused, - EAknFepPanicNotSupportKey, - EAknFepPanicBadCase, - EAknFepPanicBadCursorNavigationState, - EAknFepPanicCharPosOutOfRange, - EAknFepPanicNotHandleHashKey, - EAknFepPanicSetWindowShapeFail, // for two line UI container window creation - EAknFepPanicIllegalNumberModeKeymapping, - EAknFepPanicInvalidEditorState -#ifdef RD_HINDI_PHONETIC_INPUT - ,EAknFepPanicNoValidPtiEngine, - EAknFepPanicNoValidFepManager -#endif - }; - -GLDEF_C void AknFepPanic(TAknFepPanic aPanic); - -#endif - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepPlugin.h --- a/fep/aknfep/inc/AknFepPlugin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CAknFepPlugin definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_PLUGIN_H__ -#define __AKN_FEP_PLUGIN_H__ - -#include - -class CAknFepPlugin : public CCoeFepPlugIn - { -public: - static CAknFepPlugin* NewL(); - -public: // From CCoeFepPlugIn - /** Creates a fully constructed object of CCoeFEP. - * @param aConeEnvironment A reference to the application's control environment. - * @param aFepParameters FEP parameters. - * @return A pointer to the newly created object. - */ - CCoeFep* NewFepL(CCoeEnv& aConeEnvironment, const CCoeFepParameters& aFepParameters); - - /** Runs the FEP settings dialog. - * - * @param aConeEnvironment A reference to the application's control environment. - */ - void SynchronouslyExecuteSettingsDialogL(CCoeEnv& aConeEnvironment); - }; - -#endif // __AKN_FEP_PLUGIN_H__ - -// End of file \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepPluginManager.h --- a/fep/aknfep/inc/AknFepPluginManager.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1153 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_PLUGIN_MANAGER__ -#define __AKN_FEP_PLUGIN_MANAGER__ - -// INCLUDES -#include -#include -#include -#include -#include -#include // for MEikEdwinObserver - -#include "AknFepGlobalEnums.h" -#include -#include "AknFepPluginMenuManager.h" -#include "AknFepSharedDataInterface.h" -#include "AknFepManager.h" -#include "AknFepCaseManager.h" -#include - -// FORWARD DECLARATIONS -//class MPeninputServerEventHandler; -class MAknFepManagerInterface; -class CAknFepUiSpellContainer; -class CPenInputGSInterface; - -// CLASS DECLARATION - - -/** - * Plugin command type - */ -enum TPluginCmd - { - EPluginCloseMode, - EPluginSyncFepAwareText, - EPluginSetDataQueryShown, - EPluginActivate, - EPluginMenuCmd, - EPluginFocusChanged, - EPluginResourceChanged, - EPluginFaseSwap, - EPluginKeyEvent, - EPluginUpdateIndicator, - EPluginActivateInGlobalNote, - EGainForeground, - ELostForeground, - EPluginEditorActivate, - EPluginForegroundChanged, - EPluginFocusItemDestroy, - EPluginLanguageChanged, - EPluginPreview, - EPluginPromptChanged, - EPluginShowCandidate, - EPluginShowTooltip, - EPluginHideTooltip - }; - -/** - * Plugin synchronization type - */ -enum TPluginSync - { - EPluginSyncCurSel, - EPluginSyncUpdatedText, - EPluginSyncAll - }; - -#ifdef RD_SCALABLE_UI_V2 - -/** - * CAknFepPluginManager class. - * - * @lib AknFep.lib - * @since 2.8 - */ -class CAknFepPluginManager : - public CBase, - public MAknFepPenSupportInterface, - public MPeninputServerEventHandler, - public MEikEdwinObserver - { -public: - - /** - * Simulate event mode - * @remark: Used in SubmitUiPluginTextL() - */ - enum TSimulateEventMode - { - EIgnor, - ERawEvent, - EKeyEvent - }; - - /** - * NewL first phase construction - * - * @param aFepMan fep manager - * - */ - static CAknFepPluginManager* NewL( CAknFepManager& aFepMan, - CAknFepSharedDataInterface& aSharedData, - CAknFepLanguageManager& aLangMan, - CAknFepCaseManager& aCaseMan ); - - /** - * Destructor - */ - virtual ~CAknFepPluginManager(); - -private: - - /** - * private constructor - */ - CAknFepPluginManager( CAknFepManager& aFepMan, - CAknFepSharedDataInterface& aSharedData, - CAknFepLanguageManager& aLangMan, - CAknFepCaseManager& aCaseMan ); - - /** - * Construct - * - * @param aFepMan fep manager - * - */ - void ConstructL(); - -public : - - enum TSpellCBA - { - ESpellCBANone, - ESpellCBACancelEmpty, - ESpellCBAOkCancel, - }; - -public: - -// From MAknFepPenSupportInterface - - /** - * From MAknFepPenSupportInterface - * Activate pen input method - * - * @since 3.2 - * @Return None - */ - void ActivatePenInputL(); - - /** - * From MAknFepPenSupportInterface - * Deactivate pen input method - * - * @since 3.2 - * @Return None - */ - void DeactivatePenInputL(); - -// From MPeninputServerEventHandler - - /** - * From MPeninputServerEventHandler - * Handle pen input server events. - * - * @since 3.2 - * @param aEventId Event to handle. - * @return ETrue If server event handled - */ - TBool HandleServerEventL(TInt aEventId); - - /** - * Handle events from FEP - * suggested mode. - * - * @since 3.2 - * @param aEventType, event type from FEP - * @param aEventData, event data from FEP - * @return ETrue successful, EFalse otherwise - */ - void HandleEventsFromFepL( TInt aEventType, TInt aEventData ); - - /** - * Change current input method to plugin input method with - * suggested mode. - * - * @since 3.2 - * @return ETrue successful, EFalse otherwise - */ - TBool TryChangePluginInputModeByModeL(TPluginInputMode aSuggestMode, TInt aOpenMode, - TInt aSuggestRange); - - /** - * Close plugin input mode, reset iPluginInputMode - * to EPluginInputModeNone - * - * @since 3.2 - * @param aRestore, If ETrue, restor rembered HKB mode - * @return None - */ - void ClosePluginInputModeL(TBool aRestore); - - /** - * Close plugin input UI, only close UI - * - * @param aResetState If ETrue, reset UI state - * to initial. - * @return None. - */ - void ClosePluginInputUiL(TBool aResetState); - - /** - * Handle resource change. - * - * @param aType The resource type - * @return None. - */ - void OnResourceChangedL(TInt aType); - - /** - * Synchronize plugin UI text with editor - * - * @since 3.2 - * @return None - */ - void SyncFepAwareText( TPluginSync aSyncType = EPluginSyncCurSel, TBool aSendNow = ETrue ); - - /** - * Processes commands from the edit menu - * - * @since 3.2 - * @param aCommandId The menu command id - * @return None. - */ - void ProcessMenuCommandL(TInt aCommandId); - - /** - * Handle key events - * - * @since 3.2 - * @param aCommandId The key id - * @return None. - */ - void HandleKeyEventL(TInt aKeyId); - - /** - * initialize the edit menu depending on fep and editor state - * - * @since 3.2 - * @param aMenuPane The pointer to menu pane - * @return None. - */ - void InitMenuPaneL( CAknEdwinState* aEditorState, - CAknFepUiInterfaceMenuPane* aMenuPane, TInt aResourceId ); - - /** - * Handles notifications that the UI has changed focus - * - * @since 3.2 - * @param aFepFullyConstructed The flag of fep fully constructed - * @return None. - */ - void OnFocusChangedL( TBool aGainForeground ); - - - /** - * Set ICF data - * - * @since 3.2 - * @param aTextChanged If editor text changed - * @param aIcfData ICF data - * @return None - */ - void SendIcfDataL( TPluginSync aSyncType = EPluginSyncCurSel ); - /** - * Set editor cursor selection according plugin UI - * cursor state - * - * @since 3.2 - * @param aCurSel Cursor position. - * @param aSyncCursor ETrue if plug in UI need update cursor, EFalse otherwise - * @return None - */ - void SetCursorSelectionL(const TCursorSelection& aCurSel, TBool aSyncCursor); - - HBufC* GetNumberKeymapResource(TInt aCaseMode); - - HBufC* DoGetNumberKeymapResourceL(TInt aCaseMode); - - MAknFepManagerInterface* CurrentFepInputUI(); - - void SetFingerMatchSelectionState(TBool aMatchStateOn); - TBool IsVisible(); - TBool DoNextCandidates(); - void DoPreviousCandidates(); - // send all predictive candidates at once - void ShowAllCandidates(); - - void ResetCandidateList(); - - void UpdateITUTIndicator(); - - void SetITUTSpellingStateL(TBool aState); - - void DisplaySpellEditor(const TInt aEditorFlag, const TDesC& aInitText, - TCursorSelection aCurSel); - void DisplaySpellEditorL(const TInt aEditorFlag, const TDesC& aInitText, - TCursorSelection aCurSel); - - void DestroySpellEditor(); - - HBufC* SpellTextInput(); - void SetTCursorSelection(); - - void HandleEdwinEventL(CEikEdwin* , TEdwinEvent aEventType); - - TInt GetSoftKeyResID(); - - void HasNoFreeSpace(); - - TBool EnterMatchSelectionState(); - - TPluginInputMode PluginInputMode(); - - void UpdateCaseMode(); - - TBool IsGlobleNotes(); - TBool IsDimed(); - /** - * Save the cursor visibility. This function is called from fep side, - * because of sync cursor visibility - * - * @since v5.0 - */ - void SetCursorVisibility(TBool aVisibility, TBool aReportPlugin = EFalse); - /** - * Get the correct indicator for VKB; - * - * @return The correct indicator state for VKB. - */ - TAknEditingState VKBIndicatorState( TAknEditingState aOldState ); - void ClosePeninputSetting(); - - /** - * Show tooltip on FSQ to show the best guess word shown inline, - * when it is necessary - * - * @param aText The tooltip text to be displayed - * @return None - */ - void ShowTooltipOnFSQL( TInt aSecondaryIdx ); - - /** - * Hide tooltip on FSQ if necessary - * - * @return None - */ - void HideTooltipOnFSQL(); - - /** - * Open a candidate list to show contents in aItemArray - * - * @param aCandidateList ITI candidate data - * @return None - */ - void ShowCandidateListL( TFepITICandidateList aCandidateList ); - - /** - * Hide candidate list - * - */ - void HideCandidateListL(); - - /** - * Commit candidate word on FSQ - * - * @param aIndex the index in candidate lists; - * @return None - */ - void CommitCandidateWordOnFSQL( TInt aIndex ); - - /** - * Check if ITI features is enabled when FSQ is opened. - */ - TBool EnableITIOnFSQ(); - - /** - * Check if ITI can be supported by FSQ. - */ - TBool IsSupportITIOnFSQ(); - - /** - * Restore some configuration after closing FSQ. - * - */ - void ResetItiStateL(); - -/* -#ifdef RD_TACTILE_FEEDBACK - TBool VKBIsOpened(); -#endif // RD_TACTILE_FEEDBACK -*/ - - void HandleiDimGainForeground(TBool aGain); - -public: // inline - - /** - * Get current plugin input UI - * - * @since 3.2 - * @return The pointer to MAknFepManagerInterface - */ - inline MAknFepManagerInterface* CurrentPluginInputFepUI(); - - /** - * Get current plugin input mode - * - * @since 3.2 - * @return current plugin input mode - */ - - inline TBool PluginNativeRange(); - - inline void SetPluginNativeRange( TBool aPluginNativeRange ); - - inline TBool SyncWithPluginRange(); - - inline RPointerArray& MatchCandidateList(); - - inline TBool IsMatchState(); - - inline TBool IsSpellVisible(); - - inline void SetCursorSelection(TCursorSelection& aCursorSel); - - inline TCursorSelection CursorSelection(); - - inline void SetCaseUpdatesSupressed(TBool aCaseUpdatesSupressed); - inline TBool CaseUpdatesSupressed(); - - inline void SetBeforeSpell(TBool aBeforeSpell); - inline TBool BeforeSpell(); - inline HBufC* GetSpellText(); - inline void SpellText(HBufC* aSpellText); - inline TBool IsNonLatinLanguage(TLanguage aLang); - inline TInt PreviousPermitMode(); - /** - * In T9 predictive text input, if user press "Spell" button, a edit word query dialog is opened. - * This Flag is set for this case to indicate whether edit wod query dialog is opened. - * @param aIsEditWordQueryDlg ETrue means dialog is open, - EFalse means dialog is not open. - * @since v5.0 - */ - inline void SetInEditWordQueryFlag(TBool aIsEditWordQueryDlg ); - void LaunchPenInputLanguageSelectionL( TBool aLaunchedByTouchWin = EFalse ); - void LaunchPenInputRecognitionWithDictionarySelectionL(); - inline TBool IsInGlobleNoteEditor(); - void SetMenuState(TBool aUpdateEditor = ETrue); - void ResetMenuState(TBool aUnDim = ETrue); - - /** - * When ITI setting opened, set this flag to ETrue - * - * @param aOpen ETrue means dialog is open, - * EFalse means dialog is not open. - * @return None - */ - inline void ITISettingDialogOpen( TBool aOpen ); - - /** - * Check if tooltip box on FSQ is opened. - * - * @return if ETrue: Tooltip box on FSQ is enabled. - */ - inline TBool IsTooltipOpenOnFSQ(); -private: - - /** - * Initialize plugin UI, set permitted ranges, primary - * range, case mode and etc. - * - * @since 3.2 - * @Return None - */ - void InitializePluginInputL(TInt aOpenMode, TInt aSuggestRange, TBool aCleanContent); - - /** - * Launch plugin menu - * - * @since 3.2 - * @param aResource Menu resource id. - * @return None - */ - void LaunchPenInputMenuL(TInt aResourceId, TBool aRemeber = ETrue); - - /** - * Show pen input language setting of general setting view - * - * @since 3.2 - * @return None - */ - - /** - * Show pen input setting of general setting view - * @since 3.2 - * @param aData Key data - * @return None - */ - void LaunchPenInputSettingL(); - - /** - * Parse editor text passed to plugin ICF - * Only return current paragraph of current cursor position. - * - * @since 3.2 - * @param aBuffer Editor text - * @param aCurrent Current cursor position. - * @param aFrom Returned paragraph start pos. - * @param aTo Returned paragraph end pos. - * @return None - */ - void ParseInputContextContent(TDes& aBuffer, TInt aCurrent, - TInt& aFrom, TInt& aTo); - - - /** - * Submit text input from plugin UI to editor - * - * @since 3.2 - * @param aData Key data - * @param aForcedMode Forced simluate event mode. - * @return None - */ - void SubmitUiPluginTextL(const TDesC& aData, - TSimulateEventMode aForcedMode = EIgnor); - - /** - * Handle key event sent from pen input server - * - * @since 3.2 - * @param aData Key data - * @return None - */ - void OnPenInputServerKeyEventL(const TDesC& aData); - - /** - * Sync indicator with plugin range - * - * @since 3.2 - * @Return None - */ - void SyncIndicatorWithPluginRangeL(); - - /** - * Get current suggest mode - * - * @since 3.2 - * @param aSuggestMode The mode suggested - * @Return None - */ - TBool GetCurSuggestMode( TPluginInputMode& aSuggestMode ); - - /** - * Connect server - * - * @since 3.2 - * @Return ETrue If connection sucess - */ - TBool ConnectServer(); - - /** - * Notify layout - * - * @since 3.2 - * @param aOpenMode The current input mode - * @param aSuggestRange The suggest range - * @Return None - */ - void NotifyLayoutL(TInt aOpenMode, TInt aSuggestRange, TBool aCleanContent); - - /** - * verify if mode switch button enable - * - * @since 3.2 - * @Return ETrue if mode switch button enable - */ - TBool IsEnableModeSwitchBtn(); - - /** - * verify if setting buttons enable - * - * @since 3.2 - * @Return ETrue if setting buttons enable - */ - TBool IsEnableSettingBtn(); - - /** - * Notify layout the editor's keymapping - * - * @since 3.2 - * @Return None - */ - void NotifyLayoutKeymappingL(); - - /** - * Test data query show status - * @since 3.2 - * - * @return ETrue if data query is showing now, EFalse otherwise - */ - TBool IsDisplayDataQuery(); - - /** - * Show pen input setting of general setting view - * - * @since 3.2 - * @param aForce ETrue means adjusting data query no matter current showing status, - EFalse means adjusting data query window only first time - * @return None - */ - void RepositionDataQuery(TBool aForce); - - /** - * Timer procedure for adjust data query position - * - * @param aPtr The pointer of CAknFepManager itself - * @since 3.2 - * @return 0.(meaningless) - */ - static TInt AdjustDataQueryCallBackL(TAny *aPtr); - - - static void FepObserverHandleCompletionOfTransactionL(MCoeFepObserver& aFepObserver); - - void CreateFingerItutChineseUiL(); - - /** - * Launch Hwr Training UI - * - * @since 3.2 - * @return None - */ - void LaunchHwrTrainUiL(); - - TBool GetIndicatorImgID(const TInt IndicatorUID,TInt &aImage, TInt &aMask); - TBool GetIndicatorImgIDL(const TInt IndicatorUID,TInt &aImage, TInt &aMask); - - void SetPromptText( TBool aCleanContent = ETrue ); - - void SetIcfAlignment(); - - void ConvertDigitToDigittype(TDigitType& digittype,TDes& aConvertedNumeral); - - void GetAllPredictiveCandidate(); - void GetAllPredictiveCandidateL(); - - void AddCurrentWinToOpenListL(); - - void AddWinToOpenListL( RDrawableWindow* aWin); - - void RemoveCurrentWinFromOpenList(); - - void RemoveLastFocusedWinFromOpenList(); - - TBool IsCurrentWindInOpenList(); - - TBool ExistInlineText(); - - TBool SetSyncCurSelIcfDataL( TFepInputContextFieldData& aIcfData ); - - TBool SetSyncIcfDataL( TFepInputContextFieldData& aIcfData, - const TDesC& aLastEditorContent, - const TDesC& aCurrentEditorContent ); - - TBool TextInlined( const TDesC& aLastEditorContent, const TDesC& aCurrentEditorContent); - - TBool TextInserted( const TDesC& aLastEditorContent, const TDesC& aCurrentEditorContent); - - TBool TextDeleted( const TDesC& aLastEditorContent, const TDesC& aCurrentEditorContent); - - TBool TextMultiTapped( const TDesC& aLastEditorContent, const TDesC& aCurrentEditorContent); - - void AdjustDataCase( TDes& aData ); - - TBool IsDimArrowKeys(); - - void LaunchHelpL(); - void DimAllModeAndCase(CAknFepUiInterfaceMenuPane* aMenuPane); - - TInt RepeatStringFromLeft(const TDesC& aSubmitData, TDes& aEditorData); - - void InformMfneUiStatusL( TBool aOpened ); - - void UpdatePredicState(); - - TBool NotifyInGlobalNoteEditorL(); - - TBool IsChineseIndicator( TAknEditingState aOldState ); - - TBool IsEditorCursorDisabled(); - - /** - * Check if the cusror in editor is visible. - * - * @return ETrue: the cursos in editor is visible. - * EFalse: the cursos in editor is invisible. - */ - TBool IsEditorCursorVisible(); - - - /** - * Check if curor selection in editor is visible. - * - * @return ETrue: the cursos in editor is visible. - * EFalse: the cursos in editor is invisible. - */ - TBool IsEditorCursorSelVisible(); - - /** - * Get scan code from hw keymapping. - * - * @param aKeyCode unicode of each virutal key text. - */ - TInt GetScanCodeFromHwKeymapping( TUint aKeyCode ); - - /** - * Check if those keys are IIT-supported keys - * - * @param aKeyEvent The keys to be checked. - */ - TBool IsITISupportedKey( const TKeyEvent& aKeyEvent ); - - TPtiTextCase CaseForMappedCharacter(TChar aCharacter); - - TBool IsNeedToChangeTextCase( const TPtiTextCase& aTextCase ); - - /** - * Do some configuration to make FSQ support ITI features - * - */ - void SetItiStateL(); - - /** - * Config keyboard layout for ITI - * - */ - void SetItiKeyboardLayoutL(); - - /** - * Restore keyboard layout after closing FSQ. - */ - void ResetItiKeyboardLayoutL(); - - /** - * Restore predict state. - */ - void RestorePredictStateL(); - - /** - * Check if the keycode belongs to dead keys. - * - * @param aKeyCode: key code to be checked - * @return ETrue: belongs to ETrue - * EFalse: doesn't belong to EFalse; - */ - TBool IsDeadKeyCode( TUint aKeyCode ); - - /** - * Notify app touch window state. - * - * @param aParam - * @return None - */ - void NotifyAppUiImeTouchWndState( const TBool aTouchState ); - - /** - * Check if current editor support partial screen IMEs - * - * @return ETrue if support - */ - TBool IsEditorSupportSplitIme(); - -private: // Data - - /** - * The reference of fep manager - */ - CAknFepManager& iFepMan; - - /** - * The reference of language manager - */ - CAknFepLanguageManager& iLangMan; - - /** - * The reference of case manager - */ - CAknFepCaseManager& iCaseMan; - - /** - * The reference of shared data manager - */ - CAknFepSharedDataInterface& iSharedData; - - - /** - * Current plugin UI interface - */ - MAknFepManagerInterface* iCurrentPluginInputFepUI; - - /** - * Current plugin input mode - */ - TPluginInputMode iPluginInputMode; - - /** - * Current plugin primary range - */ - TInt iPluginPrimaryRange; - - /** - * Update editor cursor timer - */ - CPeriodic* iAdjustDataQueryTimer; - - /** - * HKB predictive state before starting plugin IME - */ - TBool iT9UsedBeforePluginInput; - - /** - * Indicating connection state to pen input server - */ - TBool iAutoCompBeforePluginInput; - /** - * Indicating connection state to pen input server - */ - TBool iPenInputSvrConnected; - - /** - * flags of layout UI submit status - */ - TInt iLastSubmitCount; - - /** - * Data query showing status - */ - TBool iDataQueryAlreadyShow; - - /** - * Plugin menu manager object - */ - CAknFepPluginMenuManager* iPenInputMenu; - - /** - * Pen input server handle - */ - RPeninputServer iPenInputServer; - - /** - * flags of language has been changed by setting - */ - TInt iCurLanguage; - - /** - * flags of fast swap by menu - */ - TBool iFastSwapByMenu; - - MAknFepManagerInterface* iFingerItutChineseUI; - - TCursorSelection iCurSelPre; - - TCursorSelection iCurSelCur; - - TPluginSync iSyncType; - - HBufC* iIcfDataBuf; - - RPointerArray iCandidateList; - TInt iCandidateIndex; - - TFepInputCandidateList iSendList; - TFepInputAllCandidates iSendAllList; - - TBool iMatchState; - - TInt iIndicatorImgID; - CAknFepUiSpellContainer* iSpell; - - TBool iSpellOn; - - TCursorSelection iCursorSel; - - TInt iIndicatorTextID; - - TBool iCaseUpdatesSupressed; - - TBool iBeforeSpell; - - HBufC* iSpellText; - - TSpellCBA iSpellCba; - TBool iPenUiDimmed; - TBool iIsForeground; - - TInt iPreDocumentLengthForFep; - TInt iOpenPenUiFlag; - - TBool iPluginNativeRange; - - TBool iSyncWithPluginRange; - - RArray iOpenWindowList; - TInt iLastFocusedWin; - - HBufC* iLastEditorContentBuf; - - TBool iModeChanged; - - TInt iPreviousCoseMode; - - TBool iLaunchMenu; - TBool iInMenu; // need to check whether it can be replaced by iLaunchMenu - MCoeFepAwareTextEditor* iCurEditor; - MCoeFepAwareTextEditor* iOldFepAwareEditor; - - RDrawableWindow * iLastDataQueryWin; - - TInt iDefaultOrientation; - RBuf iEventData; - TBool iDisableSyncText; - TBool iPendingSyncReq; - TBool iHasSWEventCap; - TInt iCurPermitModes; - TBool isLanuchSCT; - TBool iInGlobleNoteEditor; - TBool iOrientationChanged; - TBool iInlineStateOn; - TInt iCharStartPostion; - /** - * Cursor Visibility - */ - TInt iEditorPriority; - TBool iDimGainForeground; - TBool iEnableIndicatorBtn; - TBool iEnableSettingBtn; - TBool iEnableArrowBtn; - TBool iCursorVisibility; - TBool iForegroundChange; - TBool iResourceChange; - - TBool iLaunchHelp; - TInt iCurPermittedModes; - MCoeFepAwareTextEditor* iMfne; - TBool iMfneChanged; - TBool iIsInEditWordQueryDlg; - - TBool iPreferredUiMode; - - CRepository* iAvkonRepository; - - TBool iClosePluginInputMode; - - TBool iOrientationChangedfromUI; - - CPenInputGSInterface* iGsInterface; - RBuf iPreCaption; - TBool iIsPassWord; - - /** - * Store the last keyboard layout. - */ - TInt iLastKeyboardLayout; - - - /** - * Indicate if predictive setting dialog opened. - */ - TBool iITISettingDialogOpen; - - /** - * Indicate if current input mode is qwerty mode. - */ - TBool iIsITIConfigured; - - /** - * Indicate if tooltip on FSQ is opened - */ - TBool iTooltipOpenOnFSQ; - - // Modify for bug ELZG-7WZC35 begin - TInt iAlignment; - // Modify for bug ELZG-7WZC35 end - }; - - - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::CurrentPluginInputFepUI -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -inline MAknFepManagerInterface* CAknFepPluginManager::CurrentPluginInputFepUI() - { - return iCurrentPluginInputFepUI; - } - -inline TBool CAknFepPluginManager::PluginNativeRange() - { - return iPluginNativeRange; - } - -inline TBool CAknFepPluginManager::SyncWithPluginRange() - { - return iSyncWithPluginRange; - } - -inline void CAknFepPluginManager::SetPluginNativeRange( TBool aPluginNativeRange ) - { - iPluginNativeRange = aPluginNativeRange; - } - -inline RPointerArray& CAknFepPluginManager::MatchCandidateList() - { - return iCandidateList; - } - -inline TBool CAknFepPluginManager::IsMatchState() - { - return iMatchState; - } - -inline TBool CAknFepPluginManager::IsSpellVisible() - { - return iSpellOn; - } - -inline void CAknFepPluginManager::SetCursorSelection(TCursorSelection& aCursorSel) - { - iCursorSel = aCursorSel; - } - -inline TCursorSelection CAknFepPluginManager::CursorSelection() - { - return iCursorSel; - } - -inline void CAknFepPluginManager::SetCaseUpdatesSupressed(TBool aCaseUpdatesSupressed) - { - iCaseUpdatesSupressed = aCaseUpdatesSupressed; - } - -inline TBool CAknFepPluginManager::CaseUpdatesSupressed() - { - return iCaseUpdatesSupressed; - } - -inline void CAknFepPluginManager::SetBeforeSpell(TBool aBeforeSpell) - { - iBeforeSpell = aBeforeSpell; - } - -inline TBool CAknFepPluginManager::BeforeSpell() - { - return iBeforeSpell; - } - -inline HBufC* CAknFepPluginManager::GetSpellText() - { - return iSpellText; - } - -inline void CAknFepPluginManager::SpellText(HBufC* aSpellText) - { - if (aSpellText) - { - delete iSpellText; - iSpellText = aSpellText->Alloc(); - } - else - { - delete iSpellText; - iSpellText = NULL; - } - } - -inline TBool CAknFepPluginManager::IsNonLatinLanguage(TLanguage aLang) - { - return (aLang == ELangRussian) || (aLang == ELangBulgarian ) || - (aLang == ELangUkrainian) || (aLang == ELangUrdu ) || - (aLang == ELangVietnamese) || (aLang == ELangThai ) || - (aLang == ELangArabic) || (aLang == ELangFarsi ) || - (aLang == ELangHebrew) ; - } - -inline TInt CAknFepPluginManager::PreviousPermitMode() - { - return iCurPermitModes; - } -inline void CAknFepPluginManager::SetInEditWordQueryFlag(TBool aIsEditWordQueryDlg ) - { - iIsInEditWordQueryDlg = aIsEditWordQueryDlg; - } - -inline TBool CAknFepPluginManager::IsInGlobleNoteEditor() - { - return iInGlobleNoteEditor; - } - -inline void CAknFepPluginManager::ITISettingDialogOpen( TBool aOpen ) - { - iITISettingDialogOpen = aOpen; - } - -inline TBool CAknFepPluginManager::IsTooltipOpenOnFSQ() - { - return iTooltipOpenOnFSQ; - } -#endif //RD_SCALABLE_UI_V2 - -#endif // __AKN_FEP_PLUGIN_MANAGER__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepPluginMenuManager.h --- a/fep/aknfep/inc/AknFepPluginMenuManager.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,135 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Plugin menu manager class header -* -*/ - - - - - - - - - - - - -#ifndef C_AKNFEPPLUGINMENUMANAGER_H -#define C_AKNFEPPLUGINMENUMANAGER_H - -//Include -#include - -//Foward declaration -class CAknFepManager; - -/** - * Class of management of menu launched by plugin IME - * - * @since S60 v3.2 - */ -class CAknFepPluginMenuManager: public CBase, public MAknFepUiInterfaceMenuObserver - { -public: - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @return Pointer to created CAknFepPluginMenuManager object - */ - static CAknFepPluginMenuManager* NewL(CAknFepManager* aManager); - - /** - * Destructor. - */ - ~CAknFepPluginMenuManager(); - -public: - /** - * Show speicfied menu pane - * - * @since S60 v3.2 - * @param aResourceId Menu resource id. - * @return - */ - void ShowL(TInt aResourceId); - - /** - * Get menu show status - * - * @since S60 v3.2 - * @return ETrue if show, otherwise EFalse. - */ - TBool IsShowing(); - - /** - * Hide current showed menu. - * - * @since S60 v3.2 - * @return None. - */ - void Hide(); - - /** - * Get current menu resource id. - * - * @since S60 v3.2 - * @return Resource id. - */ - TInt MenuPaneId(); - -public: - // MAknFepUiInterfaceMenuObserver - /** - * Called when menu get or lose focus. - * The function does nothing, for FEP will handle menu command anyway. - * @since S60 v3.2 - * @param aMenuControl The menu control - * @param aEmphasis ETrue to emphasize the menu, EFalse otherwise - * @return None. - */ - virtual void SetEmphasis(CBase* aMenuControl, TBool aEmphasis); - - /** - * Process command user selects. - * The function does nothing, for FEP will handle menu command anyway. - * @since S60 v3.2 - * @param - * @return None. - */ - virtual void ProcessCommandL(TInt aCommandId); - -private: - /** - * C++ default constructor. - * - * @param aFepManager Fep manager object. - */ - CAknFepPluginMenuManager(CAknFepManager* aFepManager); - -private: - /** - * Current menu bar. Own. - */ - CAknFepUiInterfaceMenuBar* iOptionMenuBar; - /** - * Fep manager. Not own. - */ - CAknFepManager* iFepManager; - }; - -#endif - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepSharedDataInterface.h --- a/fep/aknfep/inc/AknFepSharedDataInterface.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,714 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#ifndef _AKNFEP_SHARED_DATA_INT_H__ -#define _AKNFEP_SHARED_DATA_INT_H__ - -#include - -#include -#include -class CRepository; - -class CAknFepRepositoryWatcher : public CBase, public MCenRepNotifyHandlerCallback - { -public: - static CAknFepRepositoryWatcher* NewL( - const TUid aUid, - const TUint32 aKey, - CCenRepNotifyHandler::TCenRepKeyType aKeyType, - TCallBack aCallBack, - CRepository* aRepository); - - static CAknFepRepositoryWatcher* NewL( - const TUid aUid, - TCallBack aCallBack, - CRepository* aRepository); - - ~CAknFepRepositoryWatcher(); - - TUint32 ChangedKey(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - inline TBool IsGenericCenrepChange(){return iIsGeneric;} -#endif - -public: // from MCenRepNotifyHandlerCallback - void HandleNotifyInt (TUint32 aKey, TInt aNewValue); - void HandleNotifyError (TUint32 aKey, TInt aError, CCenRepNotifyHandler* aHandler); - void HandleNotifyGeneric(TUint32 aId); - -private: - CAknFepRepositoryWatcher( - const TUid aUid, - const TUint32 aKey, - TCallBack aCallBack, - CRepository* aRepository); - - void ConstructL(CCenRepNotifyHandler::TCenRepKeyType aKeyType); - - void ConstructL(); - -private: - TUid iUid; - TUint32 iKey; - TUint32 iChangedKey; - TCallBack iCallBack; - CRepository* iRepository; - CCenRepNotifyHandler* iNotifyHandler; -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool iIsGeneric; -#endif - }; - - -class CAknFepManager; - -class CAknFepSharedDataInterface : public CBase - { -public: - /** - * Two phase constructor for this class - */ - static CAknFepSharedDataInterface* NewL(CAknFepManager* aFepManager); - - /** - * C++ Destructor - */ - ~CAknFepSharedDataInterface(); - -public: - /** - * Queries the value of PredictiveTextOn from shared data - * - * @return 1 for on or 0 for off - */ - TInt PredictiveTextOn(); - - /** - * Queries the value of Japanese PredictiveTextOn from shared data - * - * @since 2.6 - * @return 1 for on or 0 for off - */ - TInt PredictiveTextJapaneseOn(); - - /** - * Queries the value of InputMode from shared data - * - * @since 2.6 - * @return value of current input mode - */ - TInt InputMode(); - - /** - * Sets the value of InputMode in shared data to the passed value - * - * @since 2.6 - * @param aValue new value set to InputMode shared data item which - * represents the input mode currently being used - */ - void SetInputMode(TInt aInputMode); - - /** - * Queries the value of CangJieMode from shared data - * - * @since 3.0 - * @return value of current input mode - */ - TInt CangJieMode(); - - /** - * Sets the value of CangJieMode in shared data to the passed value - * - * @since 3.0 - * @param aValue new value set to CangJieMode shared data item which - * represents the input mode currently being used - */ - void SetCangJieMode(TInt aNewCangJieMode); - - /** - * Queries the value of iInputTextLang from shared data - * - * @return language code of currently used language - */ - TInt InputTextLanguage(); - - /** - * Sets the value of InputTextLanguage in shared data to the passed value - * - * @param aValue new value set to InputTextLanguage shared data item which - * represents the language code currently being used - */ - void SetInputTextLanguage(TInt aValue); - - /** - * Queries the value of iDisplayLang from shared data - * - * @return language code of currently display language - */ - TInt DisplayLanguage(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Sets the Fn key state and copies it to Cenrep. - * - * @return Nothing - */ - void SetFnKeyState(TInt aState); - TInt GetFnKeyState(); -#ifdef FF_DUAL_LANGUAGE_SUPPORT - /** - * Queries the value of secondary input language from shared data - * - * @return language code of currently used language - */ - TInt InputTextLanguageSecondary(); - /** - * Sets the value of secondary input language in shared data to the passed value - * - * @param aValue new value set to InputTextLanguageSecondary shared data item - * which represents the language code currently being used - */ - void SetInputTextLanguageSecondary(TInt aValue); -#endif // FF_DUAL_LANGUAGE_SUPPORT -#endif - - /** - * Sets the value of PredictiveTextOn to 1 in shared data - this - * is used to represent predictive text being on - */ - void SetPredictiveTextOn(); - - /** - * Sets the value of PredictiveTextOn to 0 in shared data - this - * is used to represent predictive text being off - */ - void ResetPredictiveTextOn(); - - /** - * Sets the value of Japanese PredictiveTextOn to 1 in shared data - * - this is used to represent Japanese predictive text being on - * - * @since 2.6 - */ - void SetJapanesePredictiveTextOn(); - - /** - * Sets the value of Japanese PredictiveTextOn to 0 in shared data - * - this is used to represent Japanese predictive text being off - * - * @since 2.6 - */ - void ResetJapanesePredictiveTextOn(); - - /** - * Query if KAknFepScrollLatinPredictive feature is enabled in shared data. - * - * @since 2.6 - * @return Value of KAknFepScrollLatinPredictive setting. - */ - TInt ScrollLatinPredictiveCandidates() const; - - /** - * Query if KAknFepSpaceWithScrollRight feature is enabled in shared data. - * - * @since 2.6 - * @return Value of KAknFepSpaceWithScrollRight setting. - */ - TInt SpaceWithScrollRight() const; - - /** - * Query if KAknFepEnterWithScrollDown feature is enabled in shared data. - * - * @since 2.6 - * @return Value of KAknFepEnterWithScrollDown setting. - */ - TInt EntersWithScrollDown() const; - - /** - * Query Qwerty input mode. - * - * @since 2.6 - * @return Value of KAknQwertyInputModeActive setting. - */ - TInt QwertyInputMode() ; //const; -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Reads Cenrep and returns the keyboard layout - * - */ - TInt KeyboardLayout() ;//const -#endif - - - /** - * Returns a value indicating whether edit-submenu functionality should be - * used in options menu. - * - * @since 3.1 - * @return Value indicating whether edit submenu should be used. - */ - TInt EditSubmenuInUse() const; - - /** - * Returns a value indicating whether edit-submenu functionality should be - * used in options menu. - * - * @since 3.1 - * @return Value indicating whether edit submenu should be used. - */ - TInt HashKeySelectionInUse(); - - /** - * Multitap timer value. - * Replaces the constant KMultiTapTimeoutMS in Japanese variant. - * - * @since 3.0 - * @return Value of KAknFepMultiTapTimer setting. - */ - TInt MultiTapTimer() const; - /** - * Japanese Qwerty Flags value. - * Replaces the constant KAknFepJapaneseSpecialCharFlag in Japanese variant. - * - * @since 3.0 - * @return Value of KAknFepJapaneseSpecialCharFlag setting. - */ - TInt JapaneseQwertyFlags() const; - - /** - * Get the last used plugin input mode - * - * @since 3.2 - * @return Value of KAknFepLastUsedInput setting. - */ - TInt PluginInputMode() const; - - /** - * Replaces the last used plugin input mode - * - * @since 3.2 - * @return Replace value of KAknFepLastUsedInput setting. - */ - void SetPluginInputMode(TInt aId); - - - /** - * Get the last used plugin UI language - * - * @since 3.2 - * @return Value of KAknFepLastUsedUILanguage setting. - */ - TInt PluginUILanguage() const; - - /** - * Replaces the last used plugin UI language - * - * @since 3.2 - * @param aLanguage Replace value of KAknFepLastUsedUILanguage setting. - */ - void SetPluginUILanguage(TInt aLanguage); - - - /** - * Get current pen input language - * @since 3.0 - * - * @return Value of KSettingsPenInputLang - */ - TInt PenInputLanguage() const; - - /** - * Replaces the value of number input mode - * - * @since 3.2 - * @param aMode (KSettingsDefaultNumberMode or KSettingsIndicDefaultNumberMode) - * @param aValue a value - */ - void SetDefaultNumberMode( TInt aMode, TInt aValue ); - - /** - * Returns a value of current clear direction. - * - * @since 3.2 - * @return Value of KAknFepClearDirection setting. - */ - TInt ClearDirection() const; - - /** - * Set a value of current clear direction. - * - * @since 3.2 - * @param aValue new value set to Clear Direction shared data item which - * represents the direction currently being used - */ - void SetClearDirection(TInt aValue); - /** - * Queries the value of PredictiveText Auto Word Completion state to be On from shared data - * - * @return 1 for on or 0 for off - * Since 5.0 - */ - TInt CAknFepSharedDataInterface::PredictiveTextAutoCompleteOn(); - - - /** - * Sets the value of PredictiveText Auto Word Completion state to 1 in shared data - this - * is used to represent predictive text Auto Word Completion being on - * Since 5.0 - */ - void CAknFepSharedDataInterface::SetPredictiveTextAutoCompleteOn(); - - - /** - * Sets the value of PredictiveText Auto Word Completion state to 0 in shared data - this - * is used to represent predictive text Auto Word Completion being off - * Since 5.0 - */ - void CAknFepSharedDataInterface::ResetPredictiveTextAutoCompleteOn(); -#ifndef RD_INTELLIGENT_TEXT_INPUT - - /** - * Handles a change in predictive text Auto Word Completion setting from general settings - * Since 5.0 - */ - void CAknFepSharedDataInterface::HandlePredictiveTextAutoCompleteSettingGSChange(); -#endif -#ifdef RD_INTELLIGENT_TEXT_INPUT - - /** - * Handles a change in predictive text Auto Word Completion setting from general settings - * Since 5.0 - */ - void HandlePredictiveTextAutoCompleteSettingGSChange(); -#endif // - - /** - * Returns a value of Hwr conversion ON/OFF. - * - * @since 3.2 - * @return Value of KAknFepJapaneseHwrConversion value - */ - TInt JapaneseHwrConversion() const; - - /** - * Set a value of Hwr conversion ON/OFF. - * - * @since 3.2 - * @param aValue new value set to Hwr conversion ON/OFF shared data item which - * represents the conversion ON/OFF currently being used - */ - void SetJapaneseHwrConversion(TInt aValue); -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Queries the value of PredictiveText Typing Correction Level from shared data - * - * @return Typing Correction Level - */ - TInt PredictiveTextTypingCorrectionLevel(); - - - /** - * Sets the value of PredictiveText Typing Correction Level state to aCorrectionLevel in shared data - */ - void SetPredictiveTextTypingCorrectionLevel(TInt aCorrectionLevel); - - - /** - * Handles a change in predictive text Typing Correction Level setting. - */ - void HandlePredictiveTextTypingCorrectionLevelChange(); - - /** - * Queries the value of PredictiveText Number Candidate Shown state to be On from shared data - * - * @return 1 for shown or 0 for not shown - */ - TInt PredictiveTextNumberCandidateShown(); - - - /** - * Sets the value of PredictiveText Number Candidate Shown state to 1 in shared data - this - * is used to represent predictive text Number Candidate Shown being shown. - */ - void SetPredictiveTextNumberCandidateShown(); - - - /** - * Sets the value of PredictiveText Number Candidate Shown state to 0 in shared data - this - * is used to represent predictive text Number Candidate Shown being not shown. - */ - void ResetPredictiveTextNumberCandidateShown(); - - - /** - * Handles a change in predictive text NumberCandidateShown setting. - */ - void HandlePredictiveTextNumberCandidateSettingChange(); - - /** - * Queries the value of PredictiveText Primary candidate setting from shared data - * - * @return Primary candidate setting(0 for Exact or 1 for Suggested) - */ - TInt PredictiveTextPrimaryCandidate(); - - - /** - * Sets the value of PredictiveText Primary candidate setting state to aPrimaryCandidate in shared data - */ - void SetPredictiveTextPrimaryCandidate(TInt aPrimaryCandidate); - - - /** - * Handles a change in predictive text Primary candidate setting. - */ - void HandlePredictiveTextPrimaryCandidateChange(); -#endif // RD_INTELLIGENT_TEXT_INPUT - - TInt FepShowFsqPreviewStatus(); - - void SetFepShowFsqPreviewStatus(TInt aValue); - - TInt FepShowVkbPreviewStatus(); - - void SetFepShowVkbPreviewStatus(TInt aValue); - - TInt FepLastUseVkbModeForLandscape(); - - void SetFepLastUseVkbModeForLandscape(TInt aValue); - - TBool AutoRotateEnabled(); -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Queries if numbers (and other characters found behind Fn) can be entered with long key press on QWERTY. - */ - TBool LongPressNumberEntryOnQwerty() const; - /** - * Queries if copy-pasting with shift+softkeys is available also on QWERTY. - */ - TBool ShiftCopyPastingOnQwerty() const; -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_SCALABLE_UI_V2 - /** - * Get a value of current default on screen vkb. - * It depends on input lanage is PRC/HW/TW Chinese. - * - * @return Value of current default on screen vkb - */ - TInt DefaultOnScreenVKB(); -#endif - -private: - /** - * C++ Constructor - */ - CAknFepSharedDataInterface(CAknFepManager* aFepManager); - /** - * Second phase constructor for this class - */ - void ConstructL(); - -private: - - /** - * Handles a change in hash key selection setting - */ - static TInt HashKeySelectionNotification(TAny* aObj); - - /** - * Handles a change in input mode from general settings - */ - static TInt InputModeChangeGSNotification(TAny* aObj); - - /** - * Handles a change in input language from general settings - */ - static TInt InputTextLangGSNotification(TAny* aObj); - - /** - * Handles a change in predictive text setting from general settings - */ - static TInt PredictiveTextSettingChangeGSNotification(TAny* aObj); -#ifndef RD_INTELLIGENT_TEXT_INPUT - - /** - * Handles a change in predictive text Auto Word Completion setting from general settings - * Since 5.0 - */ - static TInt PredictiveTextAutoCompleteSettingChangeGSNotification(TAny* aObj); -#endif // RD_PRED_AW_COMPLETION -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - Handles the change in keyboard layout. - */ - void HandleKeyboardLayoutChange(); - /** - * Call back function to handle a change in keyboard layout. - */ - static TInt HandleKeyboardLayoutChangeNotification(TAny* aObj); -#endif -#ifdef RD_INTELLIGENT_TEXT_INPUT - - /** - * Handles a change in predictive text Auto Word Completion setting from general settings - * Since 3.2 - */ - static TInt PredictiveTextAutoCompleteSettingChangeGSNotification(TAny* aObj); -#endif // RD_INTELLIGENT_TEXT_INPUT - /** - * Handles a change in Japanese predictive text setting from general settings - */ - static TInt JapanesePredictiveTextSettingChangeGSNotification(TAny* aObj); -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Handles a change in predictive text Typing Correction Level setting. - */ - static TInt PredictiveTextTypingCorrectionLevelChangeNotification(TAny* aObj); - - /** - * Handles a change in predictive text Number Candidate setting. - */ - static TInt PredictiveTextNumberCandidateSettingChangeNotification(TAny* aObj); - - /** - * Handles a change in predictive text Primary Candidate setting. - */ - static TInt PredictiveTextPrimaryCandidateChangeNotification(TAny* aObj); -#endif // RD_INTELLIGENT_TEXT_INPUT - - /** - * Handles a change in qwerty input mode setting. - */ - static TInt QwertyModeChangeNotification(TAny* aObj); - - /** - * Handles a change in hash key selection - */ - void HandleHashKeySelectionChange(); - - /** - * Handles a change in input mode from general settings - */ - void HandleInputModeGSChange(); - - /** - * Handles a change in input language from general settings - */ - void HandleInputTextLanguageGSChange(); - - /** - * Handles a change in predictive text setting from general settings - */ - void HandlePredictiveTextSettingGSChange(); - - /** - * Handles a change in Japanese predictive text setting from general settings - */ - void HandleJapanesePredictiveTextSettingGSChange(); - - /** - * Call back function to handle a change in MultiTapTimer from general settings - */ - static TInt MultiTapTimerChangeGSNotification(TAny* aObj); - /** - * Handles a change in MultiTapTimer from general settings - */ - void HandleMultiTapTimerChangeGSNotification(); - - /** - * Call back function to handle a change in Japanese Qwerty Flags from general settings - */ - static TInt JapaneseQwertyFlagsChangeGSNotification(TAny* aObj); - /** - * Handle change notification for Japanese Qwerty Flags. - */ - void HandleJapaneseQwertyFlagsChangeGSNotification(); - - /** - * Handles a change in qwerty input mode setting. - */ - void HandleQwertyModeChangeNotification(); - TInt NumberModeChangesGSNotification(); - - static TInt HandleRepositoryCallBack(TAny* aPtr); -#ifdef RD_INTELLIGENT_TEXT_INPUT - static TInt HandleGenericRepositoryChange(TAny* aPtr); -#endif - static TInt HandleLocaleRepositoryCallBack(TAny* aPtr); - - class CSubscriber : public CActive - { - public: - CSubscriber(TCallBack aCallBack, RProperty& aProperty); - ~CSubscriber(); - - public: // New functions - void SubscribeL(); - void StopSubscribe(); - - private: // from CActive - void RunL(); - void DoCancel(); - - private: - TCallBack iCallBack; - RProperty& iProperty; - }; - - CSubscriber* iQwertyModeStatusSubscriber; - RProperty iQwertyModeStatusProperty; -#ifdef RD_INTELLIGENT_TEXT_INPUT - CSubscriber* iKeyboardLayoutStatusSubscriber; - RProperty iKeyboardLayoutStatusProperty; -#endif - - friend class CSubscriber; - -private: - CAknFepManager* iFepManager; //not owned - - CRepository* iCommonEngineRepository; - CRepository* iAknFepRepository; - CRepository* iGsPenSettings; //for global setting - CRepository* iLocaleRepository; // locale related settings - CRepository* iSensorRepository; - CAknFepRepositoryWatcher* iAknFepRepositoryWatcher; - CAknFepRepositoryWatcher* iAknFepLocaleRepositoryWatcher; - - TInt iSharedDataScrollLatinPredictive; - TInt iSharedDataSpaceWithScrollRight; - TInt iSharedDataEnterWithScrollDown; - - TInt iHashKeySelectionInUse; - }; - -#endif - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepThaiSCTSelector.h --- a/fep/aknfep/inc/AknFepThaiSCTSelector.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_THAI_SCT_SELECTOR__ -#define __AKN_FEP_THAI_SCT_SELECTOR__ - -#include -#include - -enum AknFepSCTThaiGlyphTypes - { - EAknFepThaiCharNon, - EAknFepThaiCharCons, - EAknFepThaiCharLV, - EAknFepThaiCharFV1, - EAknFepThaiCharFV2, - EAknFepThaiCharFV3, - EAknFepThaiCharBV1, - EAknFepThaiCharBV2, - EAknFepThaiCharBD, - EAknFepThaiCharTone, - EAknFepThaiCharAD1, - EAknFepThaiCharAD2, - EAknFepThaiCharAD3, - EAknFepThaiCharAV1, - EAknFepThaiCharAV2, - EAknFepThaiCharAV3, - EAknFepThaiCharNonThai, - }; - -class CAknFepThaiSCTSelector : public CBase - { - public: - - TInt ThaiSCRResourceId(TUint aPrevGlyph, TInt aKey); - - static CAknFepThaiSCTSelector* NewL(); - - ~CAknFepThaiSCTSelector(); - - private: - - CAknFepThaiSCTSelector(); - - AknFepSCTThaiGlyphTypes ThaiGlyphType(TUint aGlyph); - - TInt ThaiSctCharMap(enum AknFepSCTThaiGlyphTypes aGlyphType, TInt aKey); - - }; - -#endif // __AKN_FEP_UI_THAI_CHARACTER_MAP_SELECTOR__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUIInputStateEntryMiniQwertyCangJie.h --- a/fep/aknfep/inc/AknFepUIInputStateEntryMiniQwertyCangJie.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryMiniQwertyCangJie definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_MINIQWERTY_CANGJIE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_MINIQWERTY_CANGJIE_H__ - -#include "AknFepUiInputStateEntryQwertyBaseChinesePhrase.h" - -class TAknFepInputStateEntryMiniQwertyCangJie : -public TAknFepInputStateEntryQwertyBaseChinesePhrase - { -public: - TAknFepInputStateEntryMiniQwertyCangJie( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - - - - -#endif __AKN_FEP_UI_INPUT_STATE_ENTRY_MINIQWERTY_CANGJIE_H__ \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUIInputStateEntryMiniQwertyPinyinPhrase.h --- a/fep/aknfep/inc/AknFepUIInputStateEntryMiniQwertyPinyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryMiniQwertyPinyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_MINIQWERTY_PINYINPHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_MINIQWERTY_PINYINPHRASE_H__ - -#include "aknfepuiinputminiqwertypinyinphrasebase.h" -/** - * TAknFepInputStateEntryMiniQwertyPinyinPhrase class. - * - * Implementation of Pinyin phrase creation entry state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepInputStateEntryMiniQwertyPinyinPhrase: public TAknFepInputMiniQwertyPinyinPhraseBase - { -public: - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateEntryMiniQwertyPinyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ); - /** - * From TAknFepInputStateEntryMiniQwertyPinyinPhrase - * Handle system key press - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - -/** - * TAknFepInputStateEditinigMiniQwertyPinyinPhrase class. - * Implementation of Pinyin phrase creation editing state - * @lib avkonfep.dll - * @since S60 v3.2 - */ - -class TAknFepInputStateEditinigMiniQwertyPinyinPhrase: public TAknFepInputMiniQwertyPinyinPhraseBase - { -public: - - /** - * C++ default constructor - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateEditinigMiniQwertyPinyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ); - /** - * From TAknFepInputStateEditinigMiniQwertyPinyinPhrase - * Handle system key press - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey ,TKeyPressLength alength ); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_ENTRY_MINIQWERTY_PINYINPHRASE_H__ \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUIInputStateEntryThaiMultitap.h --- a/fep/aknfep/inc/AknFepUIInputStateEntryThaiMultitap.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialThaiMultitap definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_THAI_MULTITAP_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_THAI_MULTITAP_H__ - -#include "AknFepUIInputStateInitialMultitapBase.h" - -class TAknFepInputStateInitialThaiMultitap : public TAknFepInputStateInitialMultitapBase - { -public: - TAknFepInputStateInitialThaiMultitap(MAknFepUIManagerStateInterface* aOwner); - - TBool TAknFepInputStateInitialThaiMultitap::HandleKeyL(TInt aKey, TKeyPressLength aLength); - - }; - - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_THAI_MULTITAP_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUIInputStateInitialIndicMultitap.h --- a/fep/aknfep/inc/AknFepUIInputStateInitialIndicMultitap.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateInitialIndicMultitap definition. -* -*/ - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_INDIC_MULTITAP_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_INDIC_MULTITAP_H__ - -#include "AknFepUiInputStateInitialMultitapBase.h" -#include "AknFepUiIndicEnums.h" -/** -* This class handles the multitap input for Indic languages. -* @lib avkonfep.dll -* @since Series 60 3.1 -*/ -class TAknFepInputStateInitialIndicMultitap : public TAknFepInputStateInitialMultitapBase - { -public: - /** - * - * Constructor for TAknFepInputStateInitialIndicMultitap. - * @since 3.1M - * @return - */ - TAknFepInputStateInitialIndicMultitap(MAknFepUIManagerStateInterface* aOwner, - TLanguage aLanguage); -public: //from TAknFepInputStateBase - /** - * - * Returns the virama character depending on the input language. - * @since 3.1M - * @return Etrue if the Key is handled. - */ - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - -public: //from MptiObserver - /** - * - * Gets called when PTI Engine's timer expires. - * @since 3.1M - * @return - */ - - void KeyTimerExpired(); - - /** - * This function handles Indic key response codes - * - * @since 3.2 - * @param TInt The key code. - * @param TIndicInputResponse the key response. - * @param TPtrC Text obtained from PtiEngine - * @return TBool - */ - TBool HandleIndicKeyResponseL( TInt aKey, TIndicInputResponse aKeyResponse, TPtrC aPtiText ); - - /** - * This function checks if space is left in a limited space editor. - * - * @since 3.2 - * @param TIndicInputResponse the key response. - * @return TBool - */ - TBool IsFreeSpaceAvailable( TIndicInputResponse aKeyResponse ); - -#ifdef RD_MARATHI - /** - * This function handles Marathi specific code. - * - * @since 5.0 - * @return void - */ - void HandleKeyMarathiL(); -#endif // RD_MARATHI - }; - - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_INDIC_MULTITAP_H__ - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUIInputStateInitialThaiMultitap.h --- a/fep/aknfep/inc/AknFepUIInputStateInitialThaiMultitap.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialThaiMultitap definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_THAI_MULTITAP_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_THAI_MULTITAP_H__ - -#include "AknFepUiInputStateInitialMultitapBase.h" - -class TAknFepInputStateInitialThaiMultitap : public TAknFepInputStateInitialMultitapBase - { -public: - TAknFepInputStateInitialThaiMultitap(MAknFepUIManagerStateInterface* aOwner); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - void HandleCommandL(TInt aCommandId); - - }; - - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_THAI_MULTITAP_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUIInputStateInitialVietnameseMultitap.h --- a/fep/aknfep/inc/AknFepUIInputStateInitialVietnameseMultitap.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialVietnameseMultitap definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_VIETNAMESE_MULTITAP_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_VIETNAMESE_MULTITAP_H__ - -#include "AknFepUiInputStateInitialMultitapBase.h" - -class TAknFepInputStateInitialVietnameseMultitap : public TAknFepInputStateInitialMultitapBase - { -public: - TAknFepInputStateInitialVietnameseMultitap(MAknFepUIManagerStateInterface* aOwner); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - static TBool NeedsVietnameseBkDelSupport(TText aGlyphToDelete, TDes& aNewText); - - // Inherited from Base - void KeyTimerExpired(); - }; - - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_VIETNAMESE_MULTITAP_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUIManagerJapanese.h --- a/fep/aknfep/inc/AknFepUIManagerJapanese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,239 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepManagerJapanese definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_MANAGER_JAPANESE_H__ -#define __AKN_FEP_UI_MANAGER_JAPANESE_H__ - -// INCLUDES -#include -#include -#include //TAknEditorNumericKeymap - -#include "AknFepManagerInterface.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUiManagerBase.h" -#include "AknFepUiInputStateJapaneseBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepManagerUIInterface; -class MAknFepUIManagerStateInterface; -class CAknFepCaseManager; -class CPtiEngine; -class MAknFepUICtrlContainerJapanese; - -/** - * CAknFepUIManagerJapanese class. - * This class is mounted based on CAknFepUiManager. - * - * @lib AknFep.lib - * @since 2.6 - */ -class CAknFepUIManagerJapanese : public CAknFepUIManagerBase -{ -private: - /** - * private constants - */ - enum - { - EBaseLanguageNumericKeymapIndex = 0x00FF, - EMaskShiftOffset = 8 - }; - -public: // Constructors and destructor - /** - * - * - * @since 2.6 - */ - static CAknFepUIManagerJapanese* NewL(MAknFepManagerUIInterface* aFepMan, CAknFepCaseManager* aCaseMan, TLanguage aLanguage); - - /** - * - * - * @since 2.6 - */ - virtual ~CAknFepUIManagerJapanese(); - -public: // Functions from base classes - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void SetCase(TCase aCase); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void CloseUI(); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void GetFormatOfFepInlineText(TCharFormat& aFormat, TInt& aNumberOfCharactersWithSameFormat, TInt aPositionOfCharacter) const; - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TBool IsValidShiftKeyPress() const; - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TUIState ChangeState(TUIState aState); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - CDesCArrayFlat* CandidateArray(); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TBool IsPredictive() const; - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void SetInlineEditUnderlineVisibility(TBool aFlag); - - /** - * From MAknFepManagerInterface - * - * @since 2.8 - */ -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode, TInt aKeyboardType); -#else - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode); -#endif -#else - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode); -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - /** - * From MAknFepUIManagerStateInterface - * - * @since 3.0 - */ - TBool IsQwerty() const; - - /** - * From MAknFepManagerInterface - * this is in base class only - * @since 3.2 - */ - void HandleCommandL(TInt aCommandId); - - /** - * From MAknFepUIManagerStateInterface - * - * @since 3.2 - */ - void ResourceChanged(TInt aType); - -private: // Functions from base classes - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TAknFepInputStateBase* FepUIState(); - -public: // New Functions - /** - * - * - * @since 2.6 - */ - MAknFepUICtrlContainerJapanese* UIContainer() const; - -private: // New Functions - /** - * - * - * @since 2.6 - */ - CAknFepUIManagerJapanese(MAknFepManagerUIInterface* aFepMan, CAknFepCaseManager* aCaseMan); - - /** - * - * - * @since 2.6 - */ - void ConstructL(TLanguage aLanguage); - -private: // Data - - TAknFepUiInputStateJapaneseBase iFepUiState; - - MAknFepUICtrlContainerJapanese* iContainerPane; - - CDesCArrayFlat* iCandidateArray; //owned - - TBool iFlagInlineEditUnderline; // underline flag in Inline edit - - TBool iQwerty; - }; - -#endif //__AKN_FEP_UI_MANAGER_JAPANESE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUIManagerStateInterface.h --- a/fep/aknfep/inc/AknFepUIManagerStateInterface.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,204 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the MAknFepUIManagerStateInterface definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_MAN_STATE_INTERFACE_H__ -#define __AKN_FEP_UI_MAN_STATE_INTERFACE_H__ - -// INCLUDES -#include -#include //CDesCArrayFlat - -#include "AknFepGlobalEnums.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepManagerUIInterface; -class CPtiEngine; -class CAknFepCaseManager; - -//the follow class for phrase creation -class MZhuyinKeyHandler; -class CAknFepZhuyinAnalyser; - -/** - * CAknFepUIManagerBase class. - * - * @lib AknFep.lib - * @since 2.6 - * - */ -class MAknFepUIManagerStateInterface - { -public: // New Functions - /** - * - * - * @since 2.6 - */ - virtual TUIState State() const = 0; - - /** - * - * - * @since 2.6 - */ - virtual TUIState ChangeState(TUIState) = 0; - - /** - * - * - * @since 2.6 - */ - virtual MAknFepManagerUIInterface* FepMan() const = 0; - - /** - * - * - * @since 2.6 - */ - virtual CPtiEngine* PtiEngine() const = 0; - - /** - * zhuyin phrase creation - * - * @since 5.0 - */ - virtual MZhuyinKeyHandler* ZhuyinKeyHandler() = 0; - - /** - * zhuyin phrase creation - * - * @since 5.0 - */ - virtual CAknFepZhuyinAnalyser* ZhuyinAnalyser() = 0; - - - /** - * - * - * @since 2.6 - */ - virtual TBool IsValidChineseInputKey(TInt aKey) const = 0; - - /** - * - * - * @since 3.0 - */ - virtual TBool IsValidChineseInputKeyQwerty(TInt aKey) const = 0; - - /** - * - * - * @since 3.0 - */ - virtual TBool IsQwertyZhuyinToneMarkKey(TInt aKey) const = 0; - - /** - * - * - * @since 2.6 - */ - virtual TLanguage GetLanguage() const = 0; - - /** - * - * - * @since 2.6 - */ - virtual TPtr GetLatestDeliberateSelection() const = 0; - - /** - * - * - * @since 2.6 - */ - virtual CAknFepCaseManager* CaseMan() const = 0; - - /** - * - * - * @since 2.6 - */ - virtual TInt ThaiSCTResourceId(TUint aPrewChar, TInt aKey) = 0; - - /** - * - * - * @since 2.6 - */ - virtual CDesCArrayFlat* CandidateArray() = 0; - - /** - * - * - * @since 2.6 - */ - virtual TBool IsPredictive() const = 0; - - /** - * - * - * @since 2.6 - */ - virtual void SetInlineEditUnderlineVisibility(TBool aFlag) = 0; - - /** - * - * - * @since 2.6 - */ - virtual const TDesC& NumberModeKeyMapping() const = 0; - - /** - * Check Qwerty keypad - * - * @since 3.0 - */ - virtual TBool IsQwerty() const = 0; - - /** - * Check chinese symbol - */ - virtual TBool IsValidChineseSymbol(TInt aKey) const =0; - - }; - -#endif - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiIndicEnums.h --- a/fep/aknfep/inc/AknFepUiIndicEnums.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides global enumerations. -* -*/ - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INDIC_ENUMS_H__ -#define __AKN_FEP_UI_INDIC_ENUMS_H__ - -enum TIndicInputResponse - { - /*causes the default input. New Case will rather be applied*/ - EIndicInputResponseNone, - /*forces the input to the number. This will happen in case we - try to add modifier without the preceeding consonant being a vowel, - consonant or a modified consonant*/ - EIndicInputResponseNumber, - /*When VIRAMA is inserted in the already entered text between two consonants, - then to we need to insert ZWS (Zero Width Space U+200B) so as to prevent - the incorrect joining*/ - EIndicInputResponseInsertZWS, - /*When ligature is formed while editing in middle of the word with the help of "*" key - we need to handle it so that it should not form a ligature and a explicit halant - is entered in the text*/ - EIndicInputResponseInsertZWSandLigature, - /*causes the user to input ligature by explicitly appending VIRAMA*/ - EIndicInputResponseZWSandCharacter, - /*an error input. not currently used but can be used later*/ - EIndicInputResponseIgnore, - /*Response for Repha insertion*/ - EIndicInputResponseInsertRepha, - /*Response for Rakar insertion*/ - EIndicInputResponseInsertRakar, - /*Response for ligature insertion*/ - EIndicInputResponseInsertDirectLigature, - /*Response for Virama, ZWS and ligature insertion*/ - EIndicInputResponseInsertViramaZWSandDirectLigature, - /*Response for ZWS and ligature insertion*/ - EIndicInputResponseZWSandDirectLigature, - /*Response for invalid input*/ - EIndicInputResponseInvalid, -#ifdef RD_HINDI_PHONETIC_INPUT - /*causes the inputting of transliterated text returned by PtiEngine in Multitap mode*/ - EIndicInputResponsePhoneticMultitapText, - /*causes the inputting of transliterated text returned by PtiEngine in Qwerty mode*/ - EIndicInputResponsePhoneticQwertyText, -#endif - -#ifdef RD_MARATHI - /*Response for Eye Lash Ra insertion*/ - EIndicInputResponseInsertEyeLashRa, - /*Response for Chandra A insertion*/ - EIndicInputResponseInsertChandraA, -#endif // RD_MARATHI - - /* not used*/ - EindicInputResponseLast - }; - -enum TIndicBaseCharacter - { - EIndicBaseVowel, - EIndicBaseConsonant - }; -//Changing ZWS to ZWNJ for time being, Latter the variable names need to be changed. -#define ZERO_WIDTH_SPACE 0x200C -#define MAX_SYLABLE_BOUNDRY 12 -#define ZERO_WIDTH_JOINER 0x200D -#endif //__AKN_FEP_UI_INDIC_ENUMS_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiIndicInputManager.h --- a/fep/aknfep/inc/AknFepUiIndicInputManager.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,389 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiIndicInputManager definition. -* -*/ - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INDIC_INPUT_MANAGER_H__ -#define __AKN_FEP_UI_INDIC_INPUT_MANAGER_H__ - -#include "AknFepGlobalEnums.h" -#include "AknFepUiIndicEnums.h" - -#include -#include -#ifdef RD_HINDI_PHONETIC_INPUT -#include -#endif -/** -* This class provides Helper methods for Indic Multitap class. -* @lib avkonfep.dll -* @since Series 60 3.1 -*/ - -class TAknFepUiIndicInputManager - { - public: - - /** - * This method validates the input key and returns a correct response code. - * Depending on the code, the character is added. This method applies the rules of - * Language to the user Input. - * - * @since 3.1M - * @return TIndicInputResponse - */ - static TIndicInputResponse ValidateInput(TInt aKey, - TUint aPrevChar, - TUint aCurrChar, - TUint aNextChar, - TBool& aIsHalantAllowed, - TBool aIsStarKeyPressed, - TBool aIsKeyTimerExpired, - TPtiTextCase& aNewCase, - TKeyPressLength aLength, - TLanguage aLanguage, - TBool aIsRakarPresent = EFalse, - TBool aIsZWSPresent = EFalse -#ifdef RD_MARATHI - , TBool aIsChandraAPresent = EFalse -#endif // RD_MARATHI - ); - /** - * Checks wheather Character is Empty. - * @since 3.1M - * @return ETrue if the character is not present else EFalse - */ - static TBool IsCharEmpty(TUint aChar, TLanguage aLanguage); - /** - * Checks wheather Character is Other. Space is not supposed to be Other character. - * @since 3.1M - * @return ETrue if the character is any other character that doesn’t belong to Hindi (like digits) based on the given language else EFalse - */ - static TBool IsCharOther(TUint aChar, TLanguage aLanguage); - /** - * Checks wheather Character is Base consonant. - * @since 3.1M - * @return ETrue if the character is a base consonant based on - * the given language else Efalse - */ - static TBool IsCharBaseConsonant(TUint aChar, TLanguage aLanguage); - /** - * - * Checks wheather Character is Nukta. - * @since 3.1M - * @return ETrue if the character is a Nukta based on the - * given language else Efalse - */ - static TBool IsCharNukta(TUint aChar, TLanguage aLanguage); - /** - * - * Checks wheather Character is Matra. - * @since 3.1M - * @return ETrue if the character is a matra based on the - * given language else EFalse - */ - static TBool IsCharMatra(TUint aChar, TLanguage aLanguage); - /** - * - * Checks wheather Character is Vowel. - * @since 3.1M - * @return ETrue if the character is an vowel based on the - * given language else EFalse - */ - static TBool IsCharAnVowel(TUint aChar, TLanguage aLanguage); - /** - * - * Checks wheather Character is Modifier. - * @since 3.1M - * @return ETrue if the character is an modifier based on the - * given language else EFalse - */ - static TBool IsCharModifier(TUint aChar, TLanguage aLanguage); - /** - * - * Checks wheather Character is Virama. - * @since 3.1M - * @return ETrue if Character is virama. - */ - static TBool IsCharVirama(TUint aChar, TLanguage aLanguage); - /** - * - * Checks wheather Character is Space. - * @since 3.1M - * @return ETrue if Character is Space. - */ - static TBool IsCharSpace(TUint aChar); - /** - * - * Checks wheather it is possilble to enter Virama (Halant) as per the language rule. - * @since 3.1M - * @return - */ - static void SetHalantOrMatraAllowed(TUint aPrevChar,TBool& aViramaAllowed, - TBool aIsKeyTimerExpired,TLanguage aLanguage); - /** - * - * Returns the virama character depending on the input language. - * @since 3.1M - * @return Virama character for the langiage aLanguage - */ - static TUint Virama(TLanguage aLanguage); - /** - * - * Returns the True if the language is an Indic Language. - * @since 3.1M - * @param aInputLanguage current input language - * param aUiLanguage current UI language - * @return True for Indic language. - */ - static TBool IsIndicLangauge(TLanguage aInputLanguage); - /** - * - * Returns the True if the language supports Indic Digits. - * @since 3.1M - * @param aInputLanguage current input language - * param aUiLanguage current UI language - * - * @return True for digit support. - */ - static TBool IsIndicDigitsSupported(TLanguage aInputLanguage); - - /** - * Handles the logic of Indic Repha input. This function first checks - * the validity of the inputted Repha and then allows it to be entered - * - * @since 3.2 - * @param aChar The characer to be checked. - * @param aLanguage The input language - * @return ETrue if the character is allowed as governed by the rules - * of the language else EFalse. - */ - static TBool IsRephaAllowed( TUint aChar, TLanguage aLanguage ); - - /** - * This function checks whether the character is Repha (U0971). - * - * @since 3.2 - * @param aChar The character to be checked. - * @param aLanguage The input language - * @return ETrue if the character is repha else returns EFalse - */ - static TBool IsCharRepha( TUint aChar, TLanguage aLanguage ); - - /** - * This function returns the Ra character for the language specified. - * - * @since 3.2 - * @param aLanguage The input language - * @return TUint The ra character. - */ - static TUint RaCharacter( TLanguage aLanguage ); - - /** - * This function populates the Repha character into aRepha parameter. - * - * @since 3.2 - * @param aRepha A descriptor in which Repha is stored. - * @param aLanguage The input language - * @return void - */ - static void GetRepha( TDes& aRepha, TLanguage aLanguage ); - - /** - * This function checks whether the character is Rakar (U0972). - * - * @since 3.2 - * @param aChar The character to be checked. - * @param aLanguage The input language - * @return ETrue if the character is Rakar else returns EFalse - */ - static TBool IsCharRakar( TUint aChar, TLanguage aLanguage ); - - /** - * This function populates the Rakar character into aRakar parameter. - * - * @since 3.2 - * @param aRakar A descriptor in which Rakar is stored. - * @param aLanguage The input language - * @return void - */ - static void GetRakar( TDes& aRakar, TLanguage aLanguage ); - - /** - * This function populates the ligature into the buffer - * depending on the current input character. - * - * @since 3.2 - * @param aLigature A descriptor in which the ligature is stored. - * @param aCurrChar The current character from the key map. - * @param aLanguage The input language - * @return void - */ - static void GetLigature( TDes& aLigature, - TUint aCurrChar, - TLanguage aLanguage ); - - /** - * This function checks whether the character is a special ligature. - * - * @since 3.2 - * @param aChar The character to be checked. - * @param aLanguage The input language - * @return ETrue if the character is a special ligature else EFalse. - */ - static TBool IsCharLigature( TUint aChar, TLanguage aLanguage ); - - /** - * This function checks if entry of modifier is allowed. - * - * @since 3.2 - * @param aPrevChar The previous character. - * @param aIsKeyTimerExpired. Indicates if the multitap timer is alive - * @param aLanguage. The input language. - * @return void - */ - static TBool IsModifierAllowed( TUint aPrevChar, - TLanguage aLanguage ); - - /** - * - * Checks if the character is the first ligature. - * @since 3.2M - * @return ETrue if Character is the first ligature. - */ - static TBool IsCharAtStartOfLigature(TUint aChar, - TLanguage aLanguage); -#ifdef RD_HINDI_PHONETIC_INPUT - /** - * - * Returns the True if the language is Phonetic Language. - * @since 3.1M - * @param aInputLanguage current input language - * param aUiLanguage current UI language - * - * @return True if language is Phonetic. - */ - static TBool IsIndicPhoneticLanguage(TLanguage aInputLanguage); - /** @since 3.1M - * @param aInputLanguage current input language - * param aChar Indic Character - * - * @returns Key associated with char. - */ - static TInt MapCharacterToKeys(TUint aChar, TLanguage aLanguage); -#endif - - /** - * This function checks whether the script is Devanagari - * - * @since 5.0 - * @param aLanguage The input language - * @return ETrue if the script is Devanagari, - * else returns EFalse - */ - static TBool IsScriptDevanagari( TLanguage aInputLanguage ); - - /** - * This function checks the response code. AknFepManager calls - * this method with the response code to know if the CommitInlineEditL - * needs to be invoked. - * - * @since 5.0 - * @param aResponse The Current response code. - * @return ETrue if the inline text is to be committed - * else returns EFalse - */ - static TBool IsToCommitCharSeq( TIndicInputResponse aResponse ); - - /** - * This function checks whether the character is a Nukta Consonant. - * - * @since 5.0 - * @param aChar The character to be checked. - * @param aLanguage The input language - * @return ETrue if the character is a Nukta Consonant, - * else returns EFalse - */ - static TBool IsCharNuktaConsonant( TUint aChar, TLanguage aLanguage ); - -#ifdef RD_MARATHI - /** - * This function checks whether the character is Eye Lash Ra (U0977). - * - * @since 5.0 - * @param aChar The character to be checked. - * @param aLanguage The input language - * @return ETrue if the character is Eye Lash Ra, else returns EFalse - */ - static TBool IsCharEyeLashRa( TUint aChar, TLanguage aLanguage ); - - /** - * This function populates the Eye Lash Ra character into - * aEyeLashRa parameter. (0x0931+0x094D+0x200D) - * - * @since 5.0 - * @param aEyeLashRa A descriptor in which Eye Lash Ra is stored. - * @param aLanguage The input language - * @return void - */ - static void GetEyeLashRa( TDes& aEyeLashRa, - TLanguage aLanguage ); - - /** - * This function checks whether the character is a Chandra A (0x0978). - * - * @since 5.0 - * @param aChar The character to be checked. - * @return ETrue if the character is a Chandra A, - * else returns EFalse - */ - static TBool IsCharChandraA( TUint aChar ); - - /** - * This function populates the Chandra A character into - * aChandraA parameter. (0x0905+0x0945) - * - * @since 5.0 - * @param aChandraA A descriptor in which Chandra A is stored. - * @param aIsToGetSingleUnicodeValue. If ETrue, return 0x0978 - * @return void - */ - static void GetChandraA( TDes& aChandraA, - TBool aIsToGetSingleUnicodeValue = EFalse ); -#endif // RD_MARATHI -#ifndef RD_INTELLIGENT_TEXT_INPUT - /** - * - * Returns True if aChar is a mathra( Dependant vowel), Modifier or Virama. - * @since 5.0 - */ - static TBool IsIndicDependantCharacter(TUint aChar, TLanguage aLanguage); -#endif // RD_INTELLIGENT_TEXT_INPUT - - }; //__AKN_FEP_UI_INDIC_INPUT_MANAGER_H__ - -#endif - -//End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateBase.h --- a/fep/aknfep/inc/AknFepUiInputStateBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,219 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUTSTATE_BASE_H__ -#define __AKN_FEP_UI_INPUTSTATE_BASE_H__ - -// INCLUDES -#include -#include - -#include "AknFepGlobalEnums.h" -#include "AknFepManager.h" - -#include // MPtiObserver - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATION - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; - -/** - * TAknFepInputStateBase class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepInputStateBase : public MPtiObserver - { -public: // Constructors and destructor - /** - * C++ default constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterfa - */ - TAknFepInputStateBase(MAknFepUIManagerStateInterface* aOwner); - -public: // Functions from base classes - /** - * From MPtiObserver interface - * Call this function when Multitap timer of PtiEngine was time-out - * - * @since 2.6 - */ - virtual void KeyTimerExpired(); - - /** - * From MPtiObserver interface - * Call this function when getting last word in selection list - * - * @since 2.6 - */ - virtual void LastWordInSelectionList(); - - /** - * From MPtiObserver interface - * Call this function when getting first word in selection list - * - * @since 2.6 - */ - virtual void FirstWordInSelectionList(); - -public: // New functions - /** - * Hnadling Keypress events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - virtual TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @since 2.6 - * @param aCommandId Command ID value - */ - virtual void HandleCommandL(TInt aCommandId); - virtual void HandleCommandL(TInt aCommandId, TInt aParam); - /** - * return own input state. - * - * @since 2.6 - * @return own input sate - */ - virtual TUIState State() const; - - /** - * Processing of Closeing UI - * @since 2.6 - */ - virtual void CloseUI(); - - /** - * Initialize state - * @since 2.6 - */ - virtual void InitializeStateL(); - - /** - * A patch to force the vtable to be copied during an assignment. - * @since 2.6 - * @param aState TAknFepInputStateBase object - */ - virtual void operator=(const TAknFepInputStateBase& aState); - - /** - * Set the Star key flag - * - * @param aSet TBool. - * @return None - */ - virtual void SetStarKeyFlag( TBool aSet ); -#ifdef RD_HINDI_PHONETIC_INPUT - /** - * Gives the iPhoneticLatinChar - * - * @param aChar TChar iPhoneticLatinChar value. - * @since 5.0 - * @return None - */ - virtual void GetPhoneticLatinChar(TChar& aChar)const; -#endif -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Gets the length of the character of the short key press - * @return Lenght of the character - */ - virtual TInt GetShortKeyPressTxtLength(); - /** - * Set the text for short key press - * - * @param aText Teh text entered for short key press. - * @return None - */ - virtual void SetShortKeyPressText(const TDesC& aText); -#endif // RD_INTELLIGENT_TEXT_INPUT - -protected: // Data - TBool iFakeDelete; - TBool iCharKeyException; -protected: // Data - MAknFepUIManagerStateInterface* iOwner; - TUIState iState; - TWordMatchState iMatchState; - TInt iData; // data store for sub-classes... - TInt iCbaResourceID; -protected: -#ifdef RD_HINDI_PHONETIC_INPUT - TChar iPhoneticLatinChar; // Used for current Latin character to be transliterated on key timer expiry or on other key press - TBuf iIndicPhoneticBuffer; // Used to hold the uncommited word to append with latin character -#endif - //Used for Hindi - TBool iIsStarKeyPressed; - TBool iIsKeyTimerExpired; - TLanguage iIndicLanguage; - TBool iIsHalantAllowed; - TBool iZWSPresent; - TBool iKey1Pressed; - TBool iRephaPresent; - TBool iRakarPresent; - TBool iResponseInsertZWS; - TBool iLigaturePresent; - TBool iIsLastWord; - /** Stores the character which was present in the editor before - * multitapping started. Used for validation of current character. - */ - TUint iPreviousCommittedChar; - -#ifdef RD_MARATHI - TBool iEyeLashRaPresent; - TBool iChandraAPresent; -#endif // RD_MARATHI -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBuf iShortKeyPressText; -#endif - }; - -#endif - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidate.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidate.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidate definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_H__ - -#include "AknFepUiInputStateCandidateBase.h" - -class TAknFepInputStateCandidate : public TAknFepInputStateCandidateBase - { -public: - TAknFepInputStateCandidate(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateBase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_BASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_BASE_H__ - -#include "AknFepUiInputStateChineseBase.h" -#include - -class TAknFepInputStateCandidateBase : public TAknFepInputStateChineseBase - { -public: - void HandleCommandL(TInt aCommandId); - -protected: - TAknFepInputStateCandidateBase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - TBool HandleHorizontalNavigation(TInt aKey); - TBool HandleVerticalNavigation(TInt aKey); - inline TInt MapKeyToIndex(TInt aKey); - }; - -inline TInt TAknFepInputStateCandidateBase::MapKeyToIndex(TInt aKey) - { - TInt index = aKey - EPtiKey0; // get zero-based value first - return !index ? 9 : --index; // map it for one-based keys... - } - -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_BASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateBaseChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateBaseChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATECANDIDATEBASECHINESEPHRASE_H_ -#define T_AKNFEPUIINPUTSTATECANDIDATEBASECHINESEPHRASE_H_ - -#include "AknFepUiInputStateCandidateBase.h" -#include - -class TAknFepInputStateCandidateBaseChinesePhrase : public TAknFepInputStateCandidateBase - { -protected: - TAknFepInputStateCandidateBaseChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - void HandleCommandL(TInt aCommandId); - - /** - * Handle CBA1 or select event. - * - * @since S60 v3.2.3 - * @return None. - */ - void HandleCommitL(); - - TBool HandleHorizontalNavigation(TInt aKey); - TBool HandleVerticalNavigation(TInt aKey); - TBool HandleVerticalNavigation(TInt aKey, TKeyPressLength aLength); - void UpdateIndicator(); - //the follow 6 functions for creation - void GetValidkeystrokeL(); - TBool CheckSpellingOfPtiEngine(); - void GetKeystrokeCode( TInt& aKey, const TDesC& aKeystroke ); - void ClearPtiEngineKeystroke(); - void DeleteTonMarkFromInEffectKeytrokeArray(); - void CheckTonemarkL(); - TBool IsValid(const TDesC& aDesC, TInt aCount); - void GetNewCandidatesL(const TDesC& aSource, RPointerArray& aList); - }; - -#endif //T_AKNFEPUIINPUTSTATECANDIDATEBASECHINESEPHRASE_H_ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateBasePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateBasePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateBasePhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_BASE_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_BASE_PHRASE_H__ - -#include "AknFepUiInputStateCandidateBase.h" -#include - -class TAknFepInputStateCandidateBasePhrase : public TAknFepInputStateCandidateBase - { -protected: - TAknFepInputStateCandidateBasePhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - TBool HandleHorizontalNavigation(TInt aKey); - TBool HandleVerticalNavigation(TInt aKey); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_BASE_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateChinese.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateChinese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of Pinyin phrase predictive Qwerty state -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATECANDIDATECHINESE_H -#define T_AKNFEPUIINPUTSTATECANDIDATECHINESE_H - -// User includes -#include "AknFepUiInputStateCandidateBase.h" - -/** - * TAknFepInputStateCandidateChinese class. - * - * Implementation of Chinese candidate state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepInputStateCandidateChinese : public TAknFepInputStateCandidateBase - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - - TAknFepInputStateCandidateChinese(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * From TAknFepInputStateCandidate - * Handle system key press event - * - * @since S60 v3.2 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From MPtiObserver interface - * Call this function when getting last word in selection list - * - * @since S60 v3.2 - * @return None - */ - -protected: - - /** - * Handle horizontal navigation Key - * - * @since S60 v3.2 - * @param aKey System key - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleHorizontalNavigation(TInt aKey); - - /** - * Handle vertical navigation Key - * - * @since S60 v3.2 - * @param aKey System key - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleVerticalNavigation(TInt aKey); - - /** - * Update indicator - * - * @since S60 v3.2 - * @param aKey System key - * @return ETrue if handle, otherwise this class do not handle this key - */ - void UpdateIndicator(); - - }; - -#endif //T_AKNFEPUIINPUTSTATECANDIDATECHINESE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATECANDIDATECHINESEPHRASE_H_ -#define T_AKNFEPUIINPUTSTATECANDIDATECHINESEPHRASE_H_ - -#include "AknFepUiInputStateCandidateBaseChinesePhrase.h" - -class TAknFepInputStateCandidateChinesePhrase : public TAknFepInputStateCandidateBaseChinesePhrase - { -public: - TAknFepInputStateCandidateChinesePhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - //the follow 3 functions for phrase creation - TBool UpdateEEPContent(); - - void AddPhraseToDB( TDes& aPhrase ); - }; - -#endif //T_AKNFEPUIINPUTSTATECANDIDATECHINESEPHRASE_H_ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateHalfQwertyChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateHalfQwertyChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - -#ifndef AKNFEPUIINPUTSTATECANDIDATEHALFQWERTYCHINESEPHRASE_H_ -#define AKNFEPUIINPUTSTATECANDIDATEHALFQWERTYCHINESEPHRASE_H_ - -// User includes -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" - -/** - * TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase class. - * - * Implementation of Pinyin and Stroke phrase candidate state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepUiInputStateCandidateHalfQwertyChinesePhrase : - public TAknFepInputStateCandidateQwertyBaseChinesePhrase - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepUiInputStateCandidateHalfQwertyChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - -protected: - - /** - * From TAknFepInputStateCandidateBasePhrase - * Handle system key press - * - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; -#endif /*AKNFEPUIINPUTSTATECANDIDATEHALFQWERTYCHINESEPHRASE_H_*/ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateHiraganaKanji.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateHiraganaKanji.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,138 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateCandidateHiraganaKanji definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_HIRAGANA_KANJI_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_HIRAGANA_KANJI_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateEntryJapaneseMultitap.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -class CAknFepUICtrlJapaneseCandidatePane; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateCandidateHiraganaKanji class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateCandidateHiraganaKanji - :public TAknFepUiInputStateEntryJapaneseMultitap - { -public: // Constructors and destructor - /** - * C++ default constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterfa - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateCandidateHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public: // Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Initialize state - * - * @since 2.6 - */ - virtual void InitializeStateL(); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Processing of Closeing UI - * - * @since 2.6 - */ - virtual void CloseUI(); - -protected:// Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling short keypress events of the numeric and the star. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue - */ - virtual TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling navigate keypress events. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETure - */ - virtual TBool HandleNaviKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling auxiliary keypress events including OK and Backspace. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETure - */ - virtual TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Handling Command events. This Method is called by CAknFepUIManagerJapanese. - * - * @since 2.6 - * @param aCommandId Command ID value - */ - void HandleCommandL(TInt aCommandId); - -protected: // New Fanctions - virtual void UpdateCandidateListL(TInt aIndex = 0); - - }; -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_HIRAGANA_KANJI_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of Pinyin and Stroke phrase candidate state -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATECANDIDATEMINIQERTYPINYINANDSTROKE_PHRASE_H -#define T_AKNFEPUIINPUTSTATECANDIDATEMINIQERTYPINYINANDSTROKE_PHRASE_H - -// User includes -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" -#include "aknfepuiinputminiqwertypinyinphrasebase.h" - -/** - * TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase class. - * - * Implementation of Pinyin and Stroke phrase candidate state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase : - public TAknFepInputMiniQwertyPinyinPhraseBase - { -public: - - enum TAknFepStrokePhraseChange - { - EManualChangeState, - EAutoChangeStateFromInput, - EAutoChangeStateFromCandidate - }; - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - -protected: - - /** - * From TAknFepInputStateCandidateBasePhrase - * Handle system key press - * - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //T_AKNFEPUIINPUTSTATECANDIDATEPINYINANDSTROKE_PHRASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of zhuyin phrase candidate state -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_MINIQWERTY_ZHUYINPHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_MINIQWERTY_ZHUYINPHRASE_H__ - -// User includes -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" - -/** - * TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase class. - * - * Implementation of Pinyin and Stroke phrase candidate state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase : - public TAknFepInputStateCandidateQwertyBaseChinesePhrase - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - -protected: - - /** - * From TAknFepInputStateCandidateBasePhrase - * Handle system key press - * - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - - TBool HandleKeyForMiniQwertyL( TInt aKey, - TKeyPressLength aLength ); - - TBool HandleKeyForHalfAndCustomQwertyL( TInt aKey, - TKeyPressLength aLength ); - TBool HandleKeyL( TInt aKey,TKeyPressLength aLength ); - /** - *fill the phrase and keystorke array - * - * @since S60 V3.2 - * @param aText Pointer to the spelling - * @param aPhrase Pointer to phrase - */ - void FillPhraseAndStrokArrayL(const TDesC& aText, const TDesC& aPhrase); - /** - * get the key stroke count - * - * @since S60 V3.2 - * @param aBuf Pointer to the spelling - * - */ - TInt GetInputPaneKeyStrokeCount(const TDesC& aBuf); - /** - * commit the pharse created to editor - * - * @since S60 V3.2 - * - */ - TBool ComitPhraseCreatedToEditorL(); - /** - * Get the valid keystroke. - * ETure get the valid keystorke,else EFalse - */ - TBool CheckToneMarkBorderUpon(); - /** - * get the index of the tonemark - * - * @since S60 V3.2 - * @param aText Pointer to the spelling - * - */ - TInt GetIndexOfToneMark( const TDesC& aText); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_CANDIDATE_MINIQWERTY_ZHUYINPHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidatePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidatePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidatePhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_PHRASE_H__ - -#include "AknFepUiInputStateCandidateBasePhrase.h" - -class TAknFepInputStateCandidatePhrase : public TAknFepInputStateCandidateBasePhrase - { -public: - TAknFepInputStateCandidatePhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidatePinyinAndStrokePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidatePinyinAndStrokePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of Pinyin and Stroke phrase candidate state -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATECANDIDATEPINYINANDSTROKE_PHRASE_H -#define T_AKNFEPUIINPUTSTATECANDIDATEPINYINANDSTROKE_PHRASE_H - -// User includes -#include "AknFepUiInputStateCandidateBaseChinesePhrase.h" - -/** - * TAknFepUiInputStateCandidatePinyinAndStrokePhrase class. - * - * Implementation of Pinyin and Stroke phrase candidate state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepUiInputStateCandidatePinyinAndStrokePhrase : - public TAknFepInputStateCandidateBaseChinesePhrase - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepUiInputStateCandidatePinyinAndStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - void HandleCommandL(TInt aCommandID); - - -protected: - - /** - * From TAknFepInputStateCandidateBasePhrase - * Handle system key press - * - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //T_AKNFEPUIINPUTSTATECANDIDATEPINYINANDSTROKE_PHRASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateQwerty.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateQwerty.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwerty definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_H__ - -#include "AknFepUiInputStateCandidateQwertyBase.h" -#include "AknFepUIManagerStateInterface.h" - -class TAknFepInputStateCandidateQwerty : public TAknFepInputStateCandidateQwertyBase - { -public: - TAknFepInputStateCandidateQwerty(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateQwertyBase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateQwertyBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwertyBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_BASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_BASE_H__ - -#include "AknFepUiInputStateChineseBase.h" -#include - -class TAknFepInputStateCandidateQwertyBase : public TAknFepInputStateChineseBase - { -public: - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); -protected: - TAknFepInputStateCandidateQwertyBase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - TBool HandleHorizontalNavigation(TInt aKey); - TBool HandleVerticalNavigation(TInt aKey); - inline TInt MapKeyToIndex(TInt aKey); - }; - -inline TInt TAknFepInputStateCandidateQwertyBase::MapKeyToIndex(TInt aKey) - { - TInt index = aKey - EPtiKey0; // get zero-based value first - return !index ? 9 : --index; // map it for one-based keys... - } - -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_BASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATECANDIDATEQWERTYBASECHINESEPHRASE_H -#define T_AKNFEPUIINPUTSTATECANDIDATEQWERTYBASECHINESEPHRASE_H - -#include "AknFepUiInputStateChineseBase.h" -#include - -/** - * key struct. - * @since S60 v3.2.3 - */ -struct TMiniQwertyKeyMap - { - TUint16 iValue; - TInt iKeyCode; - }; - -/** - * Tone mark struct. - * @since S60 v3.2.3 - */ -struct TMiniQwertyToneMap - { - TUint16 iValue; - TInt iInputTone; - }; - -class TAknFepInputStateCandidateQwertyBaseChinesePhrase : public TAknFepInputStateChineseBase - { -public: - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); -protected: - TAknFepInputStateCandidateQwertyBaseChinesePhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - TBool HandleHorizontalNavigation(TInt aKey); - TBool HandleVerticalNavigation(TInt aKey); -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Check the select candidate numeric key is valid or not - * @since S60 v3.2 - * @return ETure if the select number is valid ,others is EFalse - */ - TBool MapKeyToIndexSelectCandidate( TInt aKey,TInt& aIndex ); -#endif - - inline TInt MapKeyToIndex(TInt aKey); - void UpdateIndicator(); - void GetNewCandidatesL(const TDesC& aSource, RPointerArray& aList); - }; - -inline TInt TAknFepInputStateCandidateQwertyBaseChinesePhrase::MapKeyToIndex(TInt aKey) - { - TInt index = aKey - EPtiKey0; // get zero-based value first - return !index ? 9 : --index; // map it for one-based keys... - } - -#endif //T_AKNFEPUIINPUTSTATECANDIDATEQWERTYBASECHINESEPHRASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateQwertyBasePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateQwertyBasePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwertyBasePhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_BASE_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_BASE_PHRASE_H__ - -#include "AknFepUiInputStateChineseBase.h" -#include - -class TAknFepInputStateCandidateQwertyBasePhrase : public TAknFepInputStateChineseBase - { - public: - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); -protected: - TAknFepInputStateCandidateQwertyBasePhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - TBool HandleHorizontalNavigation(TInt aKey); - TBool HandleVerticalNavigation(TInt aKey); - inline TInt MapKeyToIndex(TInt aKey); - }; - -inline TInt TAknFepInputStateCandidateQwertyBasePhrase::MapKeyToIndex(TInt aKey) - { - TInt index = aKey - EPtiKey0; // get zero-based value first - return !index ? 9 : --index; // map it for one-based keys... - } - -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_BASE_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateQwertyChinese.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateQwertyChinese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_CHINESE_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_CHINESE_H__ - -#include "AknFepUiInputStateCandidateQwertyChineseBase.h" -#include "AknFepUIManagerStateInterface.h" - -class TAknFepInputStateCandidateQwertyChinese : public TAknFepInputStateCandidateQwertyChineseBase - { -public: - TAknFepInputStateCandidateQwertyChinese(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_CHINESE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateQwertyChineseBase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateQwertyChineseBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_CHINESE_BASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_CHINESE_BASE_H__ - -#include "AknFepUiInputStateChineseBase.h" -#include - -class TAknFepInputStateCandidateQwertyChineseBase : public TAknFepInputStateChineseBase - { - public: - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); -protected: - TAknFepInputStateCandidateQwertyChineseBase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - TBool HandleHorizontalNavigation(TInt aKey); - TBool HandleVerticalNavigation(TInt aKey); - inline TInt MapKeyToIndex(TInt aKey); - void UpdateIndicator(); - }; - -inline TInt TAknFepInputStateCandidateQwertyChineseBase::MapKeyToIndex(TInt aKey) - { - TInt index = aKey - EPtiKey0; // get zero-based value first - return !index ? 9 : --index; // map it for one-based keys... - } - -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_CHINESE_BASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateQwertyChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateQwertyChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATECANDIDATEQWERTYCHINESEPHRASE_H_ -#define T_AKNFEPUIINPUTSTATECANDIDATEQWERTYCHINESEPHRASE_H_ - -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" -#include "AknFepUIManagerStateInterface.h" - -class TAknFepInputStateCandidateQwertyChinesePhrase : -public TAknFepInputStateCandidateQwertyBaseChinesePhrase - { -public: - TAknFepInputStateCandidateQwertyChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - -#endif //T_AKNFEPUIINPUTSTATECANDIDATEQWERTYCHINESEPHRASE_H_ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateQwertyPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateQwertyPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwertyPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_PHRASE_H__ - -#include "AknFepUiInputStateCandidateQwertyBasePhrase.h" -#include "AknFepUIManagerStateInterface.h" - -class TAknFepInputStateCandidateQwertyPhrase : public TAknFepInputStateCandidateQwertyBasePhrase - { -public: - TAknFepInputStateCandidateQwertyPhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_QWERTY_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateQwertyZhuyin.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateQwertyZhuyin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwertyZhuyin definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_INPUT_STATE_CANDIDATE_QWERTY_ZHUYIN_H__ -#define __AKN_FEP_INPUT_STATE_CANDIDATE_QWERTY_ZHUYIN_H__ - -#include "AknFepUiInputStateCandidateQwertyChinese.h" - -class TAknFepInputStateCandidateQwertyZhuyin : public TAknFepInputStateCandidateQwertyChinese - { -public: - TAknFepInputStateCandidateQwertyZhuyin(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_INPUT_STATE_CANDIDATE_QWERTY_ZHUYIN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateQwertyZhuyinPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateQwertyZhuyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwertyZhuyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_INPUT_STATE_CANDIDATE_QWERTY_ZHUYIN_PHRASE_H__ -#define __AKN_FEP_INPUT_STATE_CANDIDATE_QWERTY_ZHUYIN_PHRASE_H__ - -#include "AknFepUiInputStateCandidateQwertyChinesePhrase.h" - -class TAknFepInputStateCandidateQwertyZhuyinPhrase : -public TAknFepInputStateCandidateQwertyChinesePhrase - { -public: - TAknFepInputStateCandidateQwertyZhuyinPhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_INPUT_STATE_CANDIDATE_QWERTY_ZHUYIN_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCandidateRetroActive.h --- a/fep/aknfep/inc/AknFepUiInputStateCandidateRetroActive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateCandidateRetroActive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CANDIDATE_RETROACTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_CANDIDATE_RETROACTIVE_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateEntryJapaneseMultitap.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -class CAknFepUICtrlJapaneseCandidatePane; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateCandidateRetroActive class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateCandidateRetroActive - :public TAknFepUiInputStateEntryJapaneseMultitap - { -public: // Constructors and destructor - /** - * C++ default constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterfa - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateCandidateRetroActive( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public: // Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Processing of Closeing UI - * - * @since 2.6 - */ - void CloseUI(); - -protected:// Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling short keypress events of the numeric and the star. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling navigate keypress events. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETure - */ - TBool HandleNaviKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling auxiliary keypress events including OK and Backspace. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETure - */ - TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepInputStateBase - * Handling Command events. This Method is called by CAknFepUIManagerJapanese. - * - * @since 2.6 - * @param aCommandId Command ID value - */ - void HandleCommandL(TInt aCommandId); - -private: // New Functions - void ShowListL(TInt aCommandId, TInt aIndex = 0); - void ShowPredictiveListL(); - void DoSelectItemL(); - void DoCommitItemL(); - - }; -#endif //__AKN_FEP_UI_INPUT_STATE_CANDIDATE_RETROACTIVE_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateChineseBase.h --- a/fep/aknfep/inc/AknFepUiInputStateChineseBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateChineseBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUTSTATE_CHINESE_BASE_H__ -#define __AKN_FEP_UI_INPUTSTATE_CHINESE_BASE_H__ - -// INCLUDES -#include - -#include -#include -#include -#include "AknFepUiInputStateBase.h" -#include "AknFepUiCtrlContainerChinese.h" - -// CONSTANTS - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -//class TAknFepInputStateBase; -class MAknFepUIManagerStateInterface; -//class MAknFepUICtrlContainerChinese; - -/** -* TAknFepInputStateChineseBase class. -* -* @lib AknFep.lib -* @since 2.6 -*/ -class TAknFepInputStateChineseBase : public TAknFepInputStateBase - { -public: // Constructors and destructor - /** - * Constructor - * @since 2.6 - * @param aOwner - * @param aUIContainer - */ - TAknFepInputStateChineseBase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - -public: - // A patch to force the vtable to be copied during an assignment. - void operator=(const TAknFepInputStateBase& aState); - - /** - * A patch to force the vtable to be copied during an assignment. - * - * @param aState - */ - void operator=(const TAknFepInputStateChineseBase& aState); - /** - * Getting UI container object - * @since 2.6 - * @return Japanese UI container object - */ - MAknFepUICtrlContainerChinese* UIContainer(); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - -protected: - MAknFepUICtrlContainerChinese* iUIContainer; - - TBool iUseforResourcechange; - - }; -#endif//__AKN_FEP_UI_INPUTSTATE_CHINESE_BASE_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateChineseBaseQwerty.h --- a/fep/aknfep/inc/AknFepUiInputStateChineseBaseQwerty.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateChineseBaseQwerty definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CHINESE_BASE_QWERTY_H__ -#define __AKN_FEP_UI_INPUT_STATE_CHINESE_BASE_QWERTY_H__ - -#include "AknFepUIInputStateChineseBase.h" - -class TAknFepInputStateChineseBaseQwerty : public TAknFepInputStateChineseBase - { -public: - TAknFepInputStateChineseBaseQwerty(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - -protected: - TBool IsQwertyKey(const TInt aKey); - TBool IsNumberKey(const TInt aKey); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_CHINESE_BASE_QWERTY_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateChineseFindQwerty.h --- a/fep/aknfep/inc/AknFepUiInputStateChineseFindQwerty.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateFindQwerty definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_FIND_QWERTY_H__ -#define __AKN_FEP_UI_INPUT_STATE_FIND_QWERTY_H__ - -#include "AknFepUiInputStateChineseBase.h" - -class TAknFepInputStateChineseFindQwerty : public TAknFepInputStateChineseBase - { -public: - TAknFepInputStateChineseFindQwerty( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); -protected: - TBool IsQwertyKey(const TInt aKey); - TBool IsNumberKey(const TInt aKey); - - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_FIND_QWERTY_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCompletionHiraganaKanji.h --- a/fep/aknfep/inc/AknFepUiInputStateCompletionHiraganaKanji.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the AknFepUiInputStateCompletionHiraganaKanji definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_COMPLETION_HIRAGANA_KANJI_H__ -#define __AKN_FEP_UI_INPUT_STATE_COMPLETION_HIRAGANA_KANJI_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateCompletionJapaneseMultitap.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateCompletionHiraganaKanji class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateCompletionHiraganaKanji - :public TAknFepUiInputStateCompletionJapaneseMultitap - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateCompletionHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateCompletionJapaneseMultitap - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateCompletionJapaneseMultitap - * Handling numeric long-keypress events. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericLongKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateCompletionJapaneseMultitap - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepUiInputStateCompletionJapaneseMultitap - * Update inline editing string - * - * @since 2.6 - * @return ETrue If inline editing string was updated - */ - TBool UpdateInlineEditingCharacterL(); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_COMPLETION_HIRAGANA_KANJI_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCompletionJapaneseMultitap.h --- a/fep/aknfep/inc/AknFepUiInputStateCompletionJapaneseMultitap.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateCompletionJapaneseMultitap definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_COMPLETION_JAPANESE_MULTITAP_H__ -#define __AKN_FEP_UI_INPUT_STATE_COMPLETION_JAPANESE_MULTITAP_H__ -// INCLUDES -#include - -#include "AknFepUiInputStateJapaneseBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateCompletionJapaneseMultitap class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateCompletionJapaneseMultitap - :public TAknFepUiInputStateJapaneseBase - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateCompletionJapaneseMultitap( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public: // Functions from base classes - /** - * From TAknFepUiInputStateJapaneseBase - * Handling Command events. This Method is called by CAknFepUIManagerJapanese. - * - * @since 2.6 - * @param aCommandId Command ID value - */ - void HandleCommandL(TInt aCommandId); - -protected: // From TAknFepUiInputStateJapaneseBase - /** - * From TAknFepUiInputStateJapaneseBase - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateJapaneseBase - * Handling numeric long-keypress events. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericLongKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateJapaneseBase - * Handling navigate keypress events. HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleNaviKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepUiInputStateJapaneseBase - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepUiInputStateJapaneseBase - * Update inline editing string - * - * @since 2.6 - * @return ETrue If inline editing string was updated - */ - TBool UpdateInlineEditingCharacterL(); - - /** - * From TAknFepUiInputStateJapaneseBase - * Commit inline editing string - * - * @since 2.6 - * @return ETrue If inline editing string was updated - */ - TBool CommitInlineEditingCharacterL(); - -protected: // New Functions - /** - * - * - * @since 2.6 - * @param aKey - * @return ETrue - */ - virtual TBool ProcessNumericLongKeyPressL(TInt aKey); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_COMPLETION_JAPANESE_MULTITAP_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCompletionKatakana.h --- a/fep/aknfep/inc/AknFepUiInputStateCompletionKatakana.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateCompletionKatakana definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_COMPLETION_KATAKANA_H__ -#define __AKN_FEP_UI_INPUT_STATE_COMPLETION_KATAKANA_H__ -// INCLUDES -#include - -#include "AknFepUiInputStateCompletionJapaneseMultitap.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; - -/** - * TAknFepUiInputStateCompletionLatinJapanese class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateCompletionKatakana - :public TAknFepUiInputStateCompletionJapaneseMultitap - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateCompletionKatakana( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -protected: // Functions from base classes - /** - * From AknFepUiInputStateCompletionJapaneseMultitap - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateJapaneseBase - * Update inline editing string - * - * @since 3.0 - * @return ETrue If inline editing string was updated - */ - TBool UpdateInlineEditingCharacterL(); - - /** - * From TAknFepUiInputStateJapaneseBase - * Commit inline editing string - * - * @since 3.0 - * @return ETrue If inline editing string was updated - */ - TBool CommitInlineEditingCharacterL(); - - /** - * Check Full-width hiragana - * - * @since 3.0 - * @return ETrue If there are some hiragana characters - */ - TBool IsFullHiragana(const TChar aChr); - - /** - * From TAknFepUiInputStateJapaneseBase - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 3.1 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_COMPLETION_FULL_LATIN_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCompletionLatinJapanese.h --- a/fep/aknfep/inc/AknFepUiInputStateCompletionLatinJapanese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,106 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateCompletionLatinJapanese definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_COMPLETION_FULL_LATIN_H__ -#define __AKN_FEP_UI_INPUT_STATE_COMPLETION_FULL_LATIN_H__ -// INCLUDES -#include - -#include "AknFepUiInputStateCompletionJapaneseMultitap.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateCompletionLatinJapanese class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateCompletionLatinJapanese - :public TAknFepUiInputStateCompletionJapaneseMultitap - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateCompletionLatinJapanese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateCompletionJapaneseMultitap - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateCompletionJapaneseMultitap - * Commit inline editing string - * - * @since 2.6 - * @return ETrue If inline editing string was updated - */ - TBool CommitInlineEditingCharacterL(); - - /** - * From TAknFepUiInputStateJapaneseBase - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 3.1 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_COMPLETION_FULL_LATIN_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateCompletionPredictiveHiraganaKanji.h --- a/fep/aknfep/inc/AknFepUiInputStateCompletionPredictiveHiraganaKanji.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateCompletionPredictiveHiraganaKanji definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_COMPLETION_PREDICTIVE_HIRAGANA_KANJI_H__ -#define __AKN_FEP_UI_INPUT_STATE_COMPLETION_PREDICTIVE_HIRAGANA_KANJI_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateCompletionHiraganaKanji.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateCompletionHiraganaKanji class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateCompletionPredictiveHiraganaKanji - :public TAknFepUiInputStateCompletionHiraganaKanji - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateCompletionPredictiveHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateCompletionJapaneseMultitap - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateCompletionJapaneseMultitap - * Handling numeric long-keypress events. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericLongKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateCompletionJapaneseMultitap - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_COMPLETION_HIRAGANA_KANJI_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateConversionHiraganaKanji.h --- a/fep/aknfep/inc/AknFepUiInputStateConversionHiraganaKanji.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateConversionHiraganaKanji definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_CONVERSION_HIRAGANA_KANJI_H__ -#define __AKN_FEP_UI_INPUT_STATE_CONVERSION_HIRAGANA_KANJI_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateEntryJapaneseMultitap.h" - -// CONSTANTS - - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateConversionHiraganaKanji class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateConversionHiraganaKanji - :public TAknFepUiInputStateEntryJapaneseMultitap - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateConversionHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public:// Functions from base classes - /** - * From TAknFepUiInputStateJapaneseBase - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling navigate keypress events. HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleNaviKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - }; -#endif // __AKN_FEP_UI_INPUT_STATE_CONVERSION_HIRAGANA_KANJI_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryArabicHebrewPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryArabicHebrewPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryWesternPredictive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_ARABIC_HEBREW_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_ARABIC_HEBREW_PREDICTIVE_H__ - -#include "AknFepUiInputStateEntryWesternPredictive.h" - -class TAknFepInputStateEntryArabicHebrewPredictive : public TAknFepInputStateEntryWesternPredictive - { -public: - TAknFepInputStateEntryArabicHebrewPredictive(MAknFepUIManagerStateInterface* aOwner); - - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_ARABIC_HEBREW_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryHalfQwertyWesternPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryHalfQwertyWesternPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateEntryHalfQwertyWesternPredictive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_HALFQWERTY_WESTERN_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_HALFQWERTY_WESTERN_PREDICTIVE_H__ - -#include "AknFepUiInputStateBase.h" - -class TAknFepUiInputStateEntryHalfQwertyWesternPredictive : public TAknFepInputStateBase - { -public: - /** - * Constructor - * @param aOwner The UI manager that owns this input state - */ - TAknFepUiInputStateEntryHalfQwertyWesternPredictive(MAknFepUIManagerStateInterface* aOwner); - - /** - * The main handler function for the key presses. - * @param aKey The key to be handled. This may be either TKeyCode or TStdScanCode value. - * @param aLength Tells if the key press is short or long one. - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - -public: // Functions from MPtiObserver interface - /** - * Called when last word in the selection list is activated. Not relevant as we use the - * candidate popup. - */ - void LastWordInSelectionList(); - - /** - * Called when the first word in the selection list is activated. Not relevant as we use the - * candidate popup. - */ - void FirstWordInSelectionList(); - - /** - * Called when the Chr multitap timer expires. The case should be updated at that time. - */ - void KeyTimerExpired(); - -// void HandleCommandL(TInt aCommandId); - -protected: - /** - * Sets the shift state of the PtiEngine according the shift and chr states of the Fep. - * @param aKey The with which the shift state is used. This is needed because shift - * works differently with letter keys than with numbers and punctuation. - */ - void HandleShiftState(TInt aKey); - - /** - * Handles keys which cause the active word to be committed (like enter, space, tab,...). - * @param aKey The key to be handled. - */ - TBool HandleWordBreakingKeysL(TInt aKey); - - /** - * Handles the "normal" keys which (may) cause some character to be appended to the current word. - * @param aKey The key to be handled. - */ - TBool HandleQwertyKeysL(TInt aKey, TKeyPressLength aLength); - - /** - * Handles the keys which cause cursor movements (arrows, backspace). - * @param aKey The key to be handled - * @param aLength The key press length. - */ - TBool HandleNaviKeysL(TInt aKey, TKeyPressLength aLength); - - void ConvertDigitToDigittype(TDigitType& digittype,TDes& aConvertedNumeral); - - -/* TBool HandleStandardNumericKeysL(TInt aKey, TKeyPressLength aLength); - - void DoNextMatch(); - void DoPreviousMatch();*/ -}; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_HALFQWERTY_WESTERN_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryHiraganaKanji.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryHiraganaKanji.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateEntryHiraganaKanji definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_HIRAGANA_KANJI_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_HIRAGANA_KANJI_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateEntryJapaneseMultitap.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateEntryHiraganaKanji class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateEntryHiraganaKanji - :public TAknFepUiInputStateEntryJapaneseMultitap - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateEntryHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public:// Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Handling Command events. This Method is called by CAknFepUIManagerJapanese. - * - * @since 3.2 - * @param aCommandId Command ID value - */ - void HandleCommandL(TInt aCommandId); - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling navigate keypress events. HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleNaviKeyL(TInt aKey, TKeyPressLength aLength); - - TBool HandleNumericShortKeyL(TInt aKey); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_HIRAGANA_KANJI_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryIndicPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryIndicPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateEntryIndicPredictive definition. -* -*/ - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_INDIC_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_INDIC_PREDICTIVE_H__ - -#include "AknFepUiInputStateEntryWesternPredictive.h" - -/** -* This class handles the entry predictive state for Indic languages. -* @lib avkonfep.dll -* @since Series 60 3.1 -*/ -class TAknFepInputStateEntryIndicPredictive : public TAknFepInputStateEntryWesternPredictive - { -public: - /** - * - * Constructor for TAknFepInputStateEntryIndicPredictive. - * @since 3.1M - * @return - */ - TAknFepInputStateEntryIndicPredictive(MAknFepUIManagerStateInterface* aOwner, - TLanguage aLanguage); - void LastWordInSelectionList(); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_INDIC_PREDICTIVE_H__ -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryJapaneseMultitap.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryJapaneseMultitap.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,166 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateEntryJapaneseMultitap definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_JAPANESE_MULTITAP_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_JAPANESE_MULTITAP_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateJapaneseBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateEntryJapaneseMultitap class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateEntryJapaneseMultitap - :public TAknFepUiInputStateJapaneseBase - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateEntryJapaneseMultitap( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public: // Functions from base classes - /** - * From TAknFepUiInputStateJapaneseBase - * Call this function when Multitap timer of PtiEngine was time-out - * - * @since 2.6 - */ - void KeyTimerExpired(); - - /** - * From TAknFepUiInputStateJapaneseBase - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateJapaneseBase - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateJapaneseBase - * Handling numeric long-keypress events. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericLongKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateJapaneseBase - * Handling navigate keypress events. HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleNaviKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepUiInputStateJapaneseBase - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepUiInputStateJapaneseBase - * Update inline editing string - * - * @since 2.6 - * @return ETrue If inline editing string was updated - */ - TBool UpdateInlineEditingCharacterL(); - - /** - * From TAknFepUiInputStateJapaneseBase - * Commit inline editing string - * - * @since 2.6 - * @return ETrue If inline editing string was updated - */ - TBool CommitInlineEditingCharacterL(); - - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Handling Command events. This Method is called by CAknFepUIManagerJapanese. - * - * @since 3.2 - * @param aCommandId Command ID value - */ - void HandleCommandL(TInt aCommandId); - - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_JAPANESE_MULTITAP_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryKatakana.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryKatakana.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateEntryKatakana definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_KATAKANA_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_KATAKANA_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateEntryJapaneseMultitap.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateEntryKatakana class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateEntryKatakana - :public TAknFepUiInputStateEntryJapaneseMultitap - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateEntryKatakana( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public:// Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - -protected: // Functions from base classes - /** - * From AknFepUiInputStateEntryJapaneseMultitap - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_JAPANESE_MULTITAP_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryLatinJapanese.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryLatinJapanese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateEntryLatinJapanese definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_FULL_LATIN_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_FULL_LATIN_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateEntryJapaneseMultitap.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateEntryLatinJapanese class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateEntryLatinJapanese - :public TAknFepUiInputStateEntryJapaneseMultitap - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateEntryLatinJapanese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public: // Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Call this function when Multitap timer of PtiEngine was time-out - * - * @since 2.6 - */ - void KeyTimerExpired(); - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_FULL_LATIN_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryMiniQwertyZhuyinPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryMiniQwertyZhuyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryMiniQwertyZhuyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INPUT_MINIQWERTY_ZHUYIN_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INPUT_MINIQWERTY_ZHUYIN_PHRASE_H__ - -#include "AknFepUiInputStateEntryQwertyBaseChinesePhrase.h" - -class TAknFepInputStateEntryMiniQwertyZhuyinPhrase : -public TAknFepInputStateEntryQwertyBaseChinesePhrase - { -public: - TAknFepInputStateEntryMiniQwertyZhuyinPhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - TBool HandleKeyForMiniQwertyL( TInt aKey, - TKeyPressLength aLength ); - - TBool HandleKeyForHalfAndCustomQwertyL( TInt aKey, - TKeyPressLength aLength ); -public: // Functions from MPtiObserver interface - void KeyTimerExpired(); -private: - void DeliberatelyUpdateSelection(); - void ImplicitlyUpdateSelection(); - void ClearDeliberateSelection(); - void RefreshUI(TInt aSelection); - void InitializeStateL(); - void UpdateIndicator(); - - /** - * Check whether tone mark border upon. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue,if the tone mark border upon, EFalse otehrs. - */ - TBool CheckToneMarkBorderUpon(); - - void CommitToneMarkL( TInt aKey ); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_INPUT_MINIQWERTY_ZHUYIN_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryPinyin.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryPinyin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryPinyin definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INPUT_PINYIN_H__ -#define __AKN_FEP_UI_INPUT_STATE_INPUT_PINYIN_H__ - -#include "AknFepUiInputStateChineseBase.h" - -class TAknFepInputStateEntryPinyin : public TAknFepInputStateChineseBase - { -public: - TAknFepInputStateEntryPinyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - void InitializeStateL(); - - void HandleCommandL(TInt aCommandId); -private: - void DeliberatelyUpdateSelection(); - void ImplicitlyUpdateSelection(); - void ClearDeliberateSelection(); - void RefreshUI(TInt aSelection); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INPUT_PINYIN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryPinyinPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryPinyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,170 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryPinyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INPUT_PINYIN_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INPUT_PINYIN_PHRASE_H__ - -#include "AknFepUiInputStateChineseBase.h" - -class TAknFepInputStateEntryPinyinPhrase : public TAknFepInputStateChineseBase - { -public: - TAknFepInputStateEntryPinyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - void InitializeStateL(); - - void HandleCommandL(TInt aCommandId); -private: - void ClearDeliberateSelection(); - void DeliberatelyUpdateSelection(); - void ImplicitlyUpdateSelection(); - void RefreshUI(TInt aSelection); - void UpdateIndicator(); - - //the follow 12 functions for phrase creation - /** - * Optimize spelling. - * - * @since S60 v5.0. - * @param aOptimizeBefore the before spelling array be Optimized. - * @param aOptimizeAfter the after spelling array be Optimized.. - * @return None. - */ - void OptimizeSpellingL(CDesCArrayFlat& aOptimizeBefore, - CDesCArrayFlat& aOptimizeAfter); - - /** - * Delete current keystroke. - * - * @since S60 v5.0. - * @return None. - */ - void DeleteCurrentKeystroke(); - - /** - * Add current keystroke. - * - * @since S60 v5.0. - * @param keystroke input keystroke. - * @return None. - */ - void AddCurrentKeystrokeL(const TDesC& keystroke); - - /** - * Get the keystroke. - * - * @since S60 v5.0. - * @param aKey input key. - * @param aKeystroke the aKey's keytroke. - * @return None. - */ - void GetKeystrokeNum(TInt aKey, TDes& aKeystroke); - - /** - * Get the keystroke buf. - * - * @since S60 v5.0. - * @param aKeystrokeArray keytroke array. - * @param aKeystrokeBuf the keytroke buf. - * @return None. - */ - void GetKeystrokeBuf(const CDesCArrayFlat& aKeystrokeArray, - TDes& aKeystrokeBuf); - - /** - * clear keystroke. - * - * @since S60 v5.0. - * @return None. - */ - void ClearKeystrokeBuf(); - - /** - * Get tome mark. - * - * @since S60 v5.0. - * @param aKeystrokeArray keytroke array. - * @param aPinyinToneMark the tone mark. - * @return None. - */ - void GetPinyinToneMark(const CDesCArrayFlat& aKeystrokeArray, - TDes& aPinyinToneMark); - - /** - * Check keystroke. - * - * @since S60 v5.0. - * @param aKeystrokeArray keytroke array. - * @param aPinyinToneMark the tone mark. - * @return None. - */ - TBool CheckKeystroke(TInt aKey, const CDesCArrayFlat& aKeystrokeArray); - - /** - * Check tome mark. - * - * @since S60 v5.0. - * @return None. - */ - void CheckTonemarkL(); - - /** - * Get change state. - * - * @since S60 v5.0. - * @return ETrue change state, EFasle others. - */ - TBool GetChangeState(); - - /** - * Append show keystroke. - * - * @since S60 v5.0. - * @param aShowKeystrokeArray the show keytroke array. - * @param aKeystrokeArray the keytroke array. - * @param aPinyinToneMark the tome mark. - * @return None. - */ - void ShowKeystrokeAppendL(CDesCArrayFlat& aShowKeystrokeArray, - const CDesCArrayFlat& aKeystrokeArray, const TDesC& aPinyinToneMark); - - /** - * change CBA. - * - * @since S60 v5.0. - * @return None. - */ - void ChangeCbaL(); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INPUT_PINYIN_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryQwertyBase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryQwertyBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateQwertyBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_BASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_BASE_H__ - -#include "AknFepUiInputStateCandidateQwerty.h" -#include "AknFepUIManagerStateInterface.h" - -class TAknFepInputStateEntryQwertyBase : public TAknFepInputStateCandidateQwerty - { -public: - TAknFepInputStateEntryQwertyBase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - void InitializeStateL(); - -protected: - void RefreshUI(); - void SetInputPaneToneMark(); - - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_BASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryQwertyBaseChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryQwertyBaseChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEENTRYQWERTYBASECHINESEPHRASE_H_ -#define T_AKNFEPUIINPUTSTATEENTRYQWERTYBASECHINESEPHRASE_H_ - -#include "AknFepUiInputStateCandidateQwertyChinesePhrase.h" -#include "AknFepUIManagerStateInterface.h" - -class TAknFepInputStateEntryQwertyBaseChinesePhrase : -public TAknFepInputStateCandidateQwertyChinesePhrase - { -public: - TAknFepInputStateEntryQwertyBaseChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - void InitializeStateL(); - -protected: - void RefreshUI(); - void SetInputPaneToneMark(); - }; - -#endif //T_AKNFEPUIINPUTSTATEENTRYQWERTYBASECHINESEPHRASE_H_ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryQwertyBasePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryQwertyBasePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateQwertyBasePhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_BASE_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_BASE_PHRASE_H__ - -#include "AknFepUiInputStateCandidateQwertyPhrase.h" -#include "AknFepUIManagerStateInterface.h" - -class TAknFepInputStateEntryQwertyBasePhrase : public TAknFepInputStateCandidateQwertyPhrase - { -public: - TAknFepInputStateEntryQwertyBasePhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - void InitializeStateL(); - -protected: - void RefreshUI(); - void SetInputPaneToneMark(); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_BASE_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryQwertyCangJie.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryQwertyCangJie.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryQwertyCangJie definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_CANGJIE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_CANGJIE_H__ - -#include "AknFepUiInputStateEntryQwertyBase.h" -#include "AknFepUIManagerStateInterface.h" -#include - -class TAknFepInputStateEntryQwertyCangJie : public TAknFepInputStateEntryQwertyBase - { -public: -TAknFepInputStateEntryQwertyCangJie(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - -private: - inline TBool IsValidCangJieCode(TInt aKey) const; - }; - -inline TBool TAknFepInputStateEntryQwertyCangJie::IsValidCangJieCode(TInt aKey) const - { - return ((aKey >= EPtiKeyQwertyA) && (aKey <= EPtiKeyQwertyZ)); - } - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_CANGJIE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryQwertyPinyin.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryQwertyPinyin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwertyPinyin definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_PINYIN_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_PINYIN_H__ - -#include "AknFepUiInputStateEntryQwertyBase.h" -#include "AknFepUIManagerStateInterface.h" - -class TAknFepInputStateEntryQwertyPinyin : public TAknFepInputStateEntryQwertyBase - { -public: - TAknFepInputStateEntryQwertyPinyin(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); -protected: - void RefreshUI(); -private: - TBool HandleVerticalNavigation(TInt aKey); - TBool HandleHorizontalNavigation(TInt aKey); - void UpdateIndicator(); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_PINYIN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryQwertyPinyinPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryQwertyPinyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwertyPinyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_PINYIN_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_PINYIN_PHRASE_H__ - -#include "AknFepUiInputStateEntryQwertyBaseChinesePhrase.h" -#include "AknFepUIManagerStateInterface.h" - -class TAknFepInputStateEntryQwertyPinyinPhrase : -public TAknFepInputStateEntryQwertyBaseChinesePhrase - { -public: - TAknFepInputStateEntryQwertyPinyinPhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_PINYIN_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryQwertyStroke.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryQwertyStroke.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryQwertyStroke definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_STROKE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_STROKE_H__ - -#include "AknFepUiInputStateEntryQwertyBase.h" -#include "AknFepUIManagerStateInterface.h" - - -class TAknFepInputStateEntryQwertyStroke : public TAknFepInputStateEntryQwertyBase - { -public: - TAknFepInputStateEntryQwertyStroke(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); -protected: - void RefreshUI(); -private: - TBool HandleHorizontalNavigation(TInt aKey); - TBool HandleVerticalNavigation(TInt aKey); - void UpdateIndicator(); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_STROKE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryQwertyStrokePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryQwertyStrokePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of Stroke phrase Qwerty entry state -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEENTRYQWERTYSTROKE_PHRASE_H -#define T_AKNFEPUIINPUTSTATEENTRYQWERTYSTROKE_PHRASE_H - -// User includes -#include "AknFepUiInputStateEntryQwertyBaseChinesePhrase.h" - -/** - * TAknFepInputStateEntryQwertyStrokePhrase class. - * - * Implementation of Stroke phrase Qwerty entry state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepInputStateEntryQwertyStrokePhrase : - public TAknFepInputStateEntryQwertyBaseChinesePhrase - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateEntryQwertyStrokePhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - -protected: - - /** - * From TAknFepInputStateEntryQwertyBasePhrase - * Handle system key press event - * - * @since S60 v3.2 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepInputStateEntryQwertyBasePhrase - * Update popup window - * - * @since S60 v3.2 - * @return None - */ - void RefreshUI(); - }; - -#endif //T_AKNFEPUIINPUTSTATEENTRYQWERTYSTROKE_PHRASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryQwertyWesternPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryQwertyWesternPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryQwertyWesternPredictive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_WESTERN_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_WESTERN_PREDICTIVE_H__ - -#include "AknFepUiInputStateBase.h" - -class TAknFepInputStateEntryQwertyWesternPredictive : public TAknFepInputStateBase - { -public: - /** - * Constructor - * @param aOwner The UI manager that owns this input state - */ - TAknFepInputStateEntryQwertyWesternPredictive(MAknFepUIManagerStateInterface* aOwner); - - /** - * The main handler function for the key presses. - * @param aKey The key to be handled. This may be either TKeyCode or TStdScanCode value. - * @param aLength Tells if the key press is short or long one. - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - -public: // Functions from MPtiObserver interface - /** - * Called when last word in the selection list is activated. Not relevant as we use the - * candidate popup. - */ - void LastWordInSelectionList(); - - /** - * Called when the first word in the selection list is activated. Not relevant as we use the - * candidate popup. - */ - void FirstWordInSelectionList(); - - /** - * Called when the Chr multitap timer expires. The case should be updated at that time. - */ - void KeyTimerExpired(); - -protected: - /** - * Sets the shift state of the PtiEngine according the shift and chr states of the Fep. - * @param aKey The with which the shift state is used. This is needed because shift - * works differently with letter keys than with numbers and punctuation. - */ - void HandleShiftState(TInt aKey); - - /** - * Handles keys which cause the active word to be committed (like enter, space, tab,...). - * @param aKey The key to be handled. - */ - TBool HandleWordBreakingKeysL(TInt aKey); - - /** - * Handles the "normal" keys which (may) cause some character to be appended to the current word. - * @param aKey The key to be handled. - */ - TBool HandleQwertyKeysL(TInt aKey); - - /** - * Handles the keys which cause cursor movements (arrows, backspace). - * @param aKey The key to be handled - * @param aLength The key press length. - */ - TBool HandleNaviKeysL(TInt aKey, TKeyPressLength aLength); -}; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_QWERTY_WESTERN_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryQwertyZhuyin.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryQwertyZhuyin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryQwertyZhuyin definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INPUT_QWERTY_ZHUYIN_H__ -#define __AKN_FEP_UI_INPUT_STATE_INPUT_QWERTY_ZHUYIN_H__ - -#include "AknFepUiInputStateEntryQwertyBase.h" - -class TAknFepInputStateEntryQwertyZhuyin : public TAknFepInputStateEntryQwertyBase - { - public: - TAknFepInputStateEntryQwertyZhuyin(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - public: // Functions from MPtiObserver interface - void KeyTimerExpired(); - protected: - void RefreshUI(); - void UpdateIndicator(); - TBool HandleVerticalNavigation(TInt aKey); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INPUT_QWERTY_ZHUYIN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryQwertyZhuyinPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryQwertyZhuyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryQwertyZhuyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INPUT_QWERTY_ZHUYIN_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INPUT_QWERTY_ZHUYIN_PHRASE_H__ - -#include "AknFepUiInputStateEntryQwertyBaseChinesePhrase.h" - -class TAknFepInputStateEntryQwertyZhuyinPhrase : -public TAknFepInputStateEntryQwertyBaseChinesePhrase - { -public: - TAknFepInputStateEntryQwertyZhuyinPhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); -public: // Functions from MPtiObserver interface - void KeyTimerExpired(); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INPUT_QWERTY_ZHUYIN_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryStroke.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryStroke.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryStroke definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INPUT_STROKE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INPUT_STROKE_H__ - -#include "AknFepUiInputStateEntryZhuyinStrokeBase.h" - -class TAknFepInputStateEntryStroke : public TAknFepInputStateEntryZhuyinStrokeBase - { -public: - TAknFepInputStateEntryStroke(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - - void HandleCommandL(TInt aCommandId); - - void RefreshUI(); - - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INPUT_STROKE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryStrokePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryStrokePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,209 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of Stroke phrase entry state -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEENTRYSTROKEPHRASE_H -#define T_AKNFEPUIINPUTSTATEENTRYSTROKEPHRASE_H - -// User includes -#include "aknfepuiinputstatestrokephrasebase.h" - -/** - * TAknFepInputStateEntryStrokePhrase class. - * - * Implementation of Stroke phrase entry state - * - * @lib avkonfep.dll - * @since S60 v5.0 - */ -class TAknFepInputStateEntryStrokePhrase : - public TAknFepInputStateStrokePhraseBase - { -public: - - /** - * C++ default constructor - * - * @since S60 V5.0 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateEntryStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL(TInt aCommandId); - - /** - * From TAknFepInputStateEntryZhuyinStrokeBasePhrase - * Handle system key press event - * - * @since S60 V5.0 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); -private: - /** - * Commit phrase to the EEP ctrl. - * - * @since S60 v5.0 - * @param aText that need to commint to the EEP phrase. - * @return ETrue commit to the EEP phrase successful, EFalse other. - */ - TBool CommitInlineEEPL( const TDesC& aText ); - /** - * Handle CBA1,ok and select candidate phrase key press. - * - * @since S60 v5.0 - * @return None. - */ - void HandleCommitL(); - }; - -/** - * TAknFepInputStateEditStrokePhrase class. - * - * Implementation of Stroke phrase creation edit state - * - * @lib avkonfep.dll - * @since S60 v5.0 - */ -class TAknFepInputStateEditStrokePhrase : public TAknFepInputStateStrokePhraseBase - { -public: - - /** - * C++ construct. - * - * @since S60 v5.0. - * @return self object. - */ - TAknFepInputStateEditStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * HandleKeyL. - * - * @since S60 v5.0. - * @return ETrue. - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - }; - - -/** - * TAknFepInputStateEntryStrokePhraseCreation class. - * - * Implementation of Stroke phrase creation candidate state - * - * @lib avkonfep.dll - * @since S60 v5.0 - */ -class TAknFepInputStateCandidateStrokePhrase : - public TAknFepInputStateStrokePhraseBase - { -public: - - /** - * C++ default constructor - * - * @since S60 v5.0 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateCandidateStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * From TAknFepInputStateEntryZhuyinStrokeBasePhrase - * Handle system key press event - * - * @since S60 v5.0 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - -private: - - /** - * Handle Horizontal Navigation. - * - * @since S60 v5.0 - * @param aKey,key press. - * @return None - */ - void HandleHorizontalNavigation(TInt aKey); - - /** - * Commit phrase to the EEP ctrl. - * - * @since S60 v5.0 - * @param aText that need to commint to the EEP phrase. - * @return ETrue commit to the EEP phrase successful, EFalse other. - */ - TBool CommitInlineEEPL( const TDesC& aText ); - - /** - * Handle CBA1,ok and select candidate phrase key press. - * - * @since S60 v5.0 - * @return None. - */ - void HandleCommitL(); - - inline TInt MapKeyToIndex(TInt aKey); - - }; - -inline TInt TAknFepInputStateCandidateStrokePhrase::MapKeyToIndex( TInt aKey ) - { - TInt index = aKey - EPtiKey0; // get zero-based value first - return !index ? 9 : --index; // map it for one-based keys... - } - -#endif //T_AKNFEPUIINPUTSTATEENTRYSTROKEPHRASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryThaiPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryThaiPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryThaiPredictive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_THAI_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_THAI_PREDICTIVE_H__ - -#include "AknFepUiInputStateEntryWesternPredictive.h" - - -class TAknFepInputStateEntryThaiPredictive : public TAknFepInputStateEntryWesternPredictive - { -public: - TAknFepInputStateEntryThaiPredictive(MAknFepUIManagerStateInterface* aOwner); - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - -private: - TBool HandleDownKeyL(); - TBool HandleUpKeyL(); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_THAI_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryVietnamesePredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryVietnamesePredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateEntryVietnamesePredictive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_VIET_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_VIET_PREDICTIVE_H__ - -#include "AknFepUiInputStateEntryWesternPredictive.h" - -class TAknFepInputStateEntryVietnamesePredictive : public TAknFepInputStateEntryWesternPredictive - { -public: - TAknFepInputStateEntryVietnamesePredictive(MAknFepUIManagerStateInterface* aOwner); - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); -private: - TBool HandleStarKeyL(TKeyPressLength aLength); - TBool HandleDeleteKeysL(TInt aKey, TKeyPressLength /*aLength*/); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_VIET_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryWesternPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryWesternPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryWesternPredictive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_WESTERN_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_WESTERN_PREDICTIVE_H__ - -#include "AknFepUiInputStateBase.h" - -class TAknFepInputStateEntryWesternPredictive : public TAknFepInputStateBase - { -public: - TAknFepInputStateEntryWesternPredictive(MAknFepUIManagerStateInterface* aOwner); - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - void HandleCommandL(TInt aCommandId); - -public: // Functions from MPtiObserver interface - void LastWordInSelectionList(); - void FirstWordInSelectionList(); - void DoPreviousMatchL(); - void DoNextMatch(); -protected: - TBool HandleStandardNumericKeysL(TInt aKey, TKeyPressLength aLength); - TBool HandleNaviKeysL(TInt aKey, TKeyPressLength aLength); - virtual TBool HandleStarKeyL(TKeyPressLength aLength); - -private: - void ConvertDigitToDigittype(TDigitType& digittype,TDes& aConvertedNumeral); - TBool IsMoreCandidate(); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_WESTERN_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryWesternPredictiveJp.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryWesternPredictiveJp.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateEntryWesternPredictiveJp definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ENTRY_WESTERN_PREDICTIVE_JP_H__ -#define __AKN_FEP_UI_INPUT_STATE_ENTRY_WESTERN_PREDICTIVE_JP_H__ - -#include "AknFepUiInputStateEntryWesternPredictive.h" - -class TAknFepInputStateEntryWesternPredictiveJp : public TAknFepInputStateEntryWesternPredictive - { -public: - TAknFepInputStateEntryWesternPredictiveJp(MAknFepUIManagerStateInterface* aOwner); - -protected: - TBool HandleStarKeyL(TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ENTRY_WESTERN_PREDICTIVE_JP_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryZhuyin.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryZhuyin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryZhuyin definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INPUT_ZHUYIN_H__ -#define __AKN_FEP_UI_INPUT_STATE_INPUT_ZHUYIN_H__ - -#include "AknFepUiInputStateEntryZhuyinStrokeBase.h" - -class TAknFepInputStateEntryZhuyin : public TAknFepInputStateEntryZhuyinStrokeBase - { -public: - TAknFepInputStateEntryZhuyin(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - void HandleCommandL(TInt aCommandId); - -public: // Functions from MPtiObserver interface - void KeyTimerExpired(); -protected: - void RefreshUI(TBool aOrdinals); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INPUT_ZHUYIN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryZhuyinPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryZhuyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryZhuyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INPUT_ZHUYIN_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INPUT_ZHUYIN_PHRASE_H__ - -//#include "AknFepUIInputStateEntryZhuyinStrokeBasePhrase.h" -#include "aknfepuiinputstatezhuyinphrasecreationbase.h" - -class TAknFepInputStateEntryZhuyinPhrase : public TAknFepInputStateZhuyinPhraseCreationBase //TAknFepInputStateEntryZhuyinStrokeBasePhrase - { -public: - TAknFepInputStateEntryZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - void HandleCommandL(TInt aCommandId); - -public: // Functions from MPtiObserver interface - void KeyTimerExpired(); - void GetNewCandidatesL(const TDesC& aSource, RPointerArray& aList); - void AddPhraseToDB( TDes& aPhrase ); - /** - * Handle CBA1,ok and select candidate phrase key press. - * - * @since S60 v5.0 - * @return None. - */ - void HandleCommitL(); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INPUT_ZHUYIN_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryZhuyinStrokeBase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryZhuyinStrokeBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryZhuyinStrokeBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ZHUYIN_STROKE_BASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ZHUYIN_STROKE_BASE_H__ - -#include "AknFepUiInputStateChineseBase.h" - -/** - * Zhuyin and Stroke share a base class as there is commonality - * over most of their functionality - */ -class TAknFepInputStateEntryZhuyinStrokeBase : public TAknFepInputStateChineseBase - { -public: - TAknFepInputStateEntryZhuyinStrokeBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - virtual TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - void InitializeStateL(); - - void HandleCommandL(TInt aCommandId); - -public: // Functions from MPtiObserver interface - virtual void KeyTimerExpired(); - -protected: - void RefreshUI(TBool aOrdinals); - void SetInputPaneToneMark(); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ZHUYIN_STROKE_BASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateEntryZhuyinStrokeBasePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStateEntryZhuyinStrokeBasePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryZhuyinStrokeBasePhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ZHUYIN_STROKE_BASE_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_ZHUYIN_STROKE_BASE_PHRASE_H__ - -#include "AknFepUiInputStateChineseBase.h" - -/** - * Zhuyin and Stroke share a base class as there is commonality - * over most of their functionality - */ -class TAknFepInputStateEntryZhuyinStrokeBasePhrase : public TAknFepInputStateChineseBase - { -public: - enum - { - EPhoneticChanged = 0x0001 - }; - - TAknFepInputStateEntryZhuyinStrokeBasePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - virtual TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - void InitializeStateL(); - - void HandleCommandL(TInt aCommandId); - -public: // Functions from MPtiObserver interface - virtual void KeyTimerExpired(); - -protected: - void RefreshUI(); - void SetInputPaneToneMark(); - void UpdateIndicator(); - }; - - -#endif //__AKN_FEP_UI_INPUT_STATE_ZHUYIN_STROKE_BASE_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateHalfQwerty.h --- a/fep/aknfep/inc/AknFepUiInputStateHalfQwerty.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateHalfQwerty definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_HALF_QWERTY_H__ -#define __AKN_FEP_UI_INPUT_STATE_HALF_QWERTY_H__ - -#include -#include "AknFepUiInputStateBase.h" - -class TAknFepInputStateHalfQwerty : public TAknFepInputStateBase - { -public: - TAknFepInputStateHalfQwerty(MAknFepUIManagerStateInterface* aOwner); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - void HandleCaseChange(TInt aKey, TBool aIsCharacter); - TBool IsCharacterKey(const TInt aKey); - - -public: // Functions from MPtiObserver interface - void KeyTimerExpired(); - -protected: - TBool TryGetValidCharForKey(const TInt& aKey, TChar& aChar); - TBool TryGetValidCharForKeyAndCase(const TInt& aKey, TChar& aChar, TPtiTextCase aCase); - static TInt TimerExpire(TAny* aPtr); - TInt ChrKeyTimerExpired(); - TBool IsKeymapped(TInt aKey); - TBool CheckHasValidNumerKeyMappedL(TInt aKey, TBool &aLangChanged); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_HALF_QWERTY_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialArabicHebrewMultitap.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialArabicHebrewMultitap.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialArabicHebrewMultitap definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_ARABIC_HEBREW_MULTITAP_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_ARABIC_HEBREW_MULTITAP_H__ - -#include "AknFepUiInputStateInitialLatinMultitap.h" - -class TAknFepInputStateInitialArabicHebrewMultitap : public TAknFepInputStateInitialLatinMultitap - { -public: - TAknFepInputStateInitialArabicHebrewMultitap(MAknFepUIManagerStateInterface* aOwner); - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_ARABIC_HEBREW_MULTITAP_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialArabicHebrewPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialArabicHebrewPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialWesternPredictive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INITIAL_ARABIC_HEBREW_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INITIAL_ARABIC_HEBREW_PREDICTIVE_H__ - -#include "AknFepUiInputStateInitialWesternPredictive.h" - -class TAknFepInputStateInitialArabicHebrewPredictive : -public TAknFepInputStateInitialWesternPredictive - { -public: - TAknFepInputStateInitialArabicHebrewPredictive(MAknFepUIManagerStateInterface* aOwner); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INITIAL_ARABIC_HEBREW_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialChineseGeneric.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialChineseGeneric.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialChineseGeneric definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_CHIN_GEN_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_CHIN_GEN_H__ - -#include "AknFepUiInputStateInitialChineseMultitapBase.h" - -class TAknFepInputStateInitialChineseGeneric : public TAknFepInputStateInitialChineseMultitapBase - { -public: - TAknFepInputStateInitialChineseGeneric( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_CHIN_GEN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialChineseGenericHalfQwerty.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialChineseGenericHalfQwerty.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,101 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TAknFepInputStateInitialChineseGenericHalfQwerty definition. - * -*/ - - - - - - - - - - - -#ifndef AKNFEPUIINPUTSTATEINITIALCHINESEGENERICHALFQWERTY_H_ -#define AKNFEPUIINPUTSTATEINITIALCHINESEGENERICHALFQWERTY_H_ -#include "AknFepUiInputStateHalfQwerty.h" - -class TAknFepInputStateInitialChineseGenericHalfQwerty : -public TAknFepInputStateHalfQwerty - { -public: - /** - * C++ default constructor - * - * @since S60 v3.2.3 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateInitialChineseGenericHalfQwerty( - MAknFepUIManagerStateInterface* aOwner, TInt aMode ); - /** - * Handle system key press event - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); - -private: - /** - * to check whether the key stroke is the sct key or not - * - * @since S60 v3.2.3 - * @param aKey System key - * @return ETrue if it is the sct key , otherwise not - */ - TBool IsSCTKey( TInt aKey ); - /** - * to check whether the key stroke is a character key or not - * - * @since S60 v3.2.3 - * @param aKey System key - * @return ETrue if it is a character key , otherwise not - */ - TBool IsCharacter( TInt aKey ); - /** - * Handle the shift key envent - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyByShiftOrCharPressedL( TInt aKey, TKeyPressLength aLength ); - /** - * to check whether the key stroke is a emotion key or not - * - * @since S60 v3.2.3 - * @param aKey System key - * @return ETrue if it is a emotion key , otherwise not - */ - TBool HandleEmotionKeyL( TInt aKey, TKeyPressLength aLength ); - /** - * to check whether the key is a Multitap key or not - * - * @since S60 v3.2.3 - * @param aKey System key - * @return ETrue if it is a Multitap key , otherwise not - */ - TBool IsMultitapkey( TInt aKey ); - }; -#endif /*AKNFEPUIINPUTSTATEINITIALCHINESEGENERICHALFQWERTY_H_*/ - -//end of the file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialChineseGenericQwerty.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialChineseGenericQwerty.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialChineseGenericQwerty definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_CHIN_GEN_QWERTY_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_CHIN_GEN_QWERTY_H__ - -#include "AknFepUiInputStateQwerty.h" - -class TAknFepInputStateInitialChineseGenericQwerty : public TAknFepInputStateQwerty - { -public: - TAknFepInputStateInitialChineseGenericQwerty(MAknFepUIManagerStateInterface* aOwner, - TInt aMode); - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - void KeyTimerExpired(); -private: - TBool IsSCTKey(TInt aKey); - TBool IsCharacter(TInt aKey); - TBool HandleKeyByShiftOrCharPressed(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_CHIN_GEN_QWERTY_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialChineseMultitapBase.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialChineseMultitapBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialChineseMultitapBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_CHINESE_MULTITAP_BASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_CHINESE_MULTITAP_BASE_H__ - -#include "AknFepUiInputStateChineseBase.h" - -class MAknFepUICtrlContainerChinese; - -class TAknFepInputStateInitialChineseMultitapBase : public TAknFepInputStateChineseBase - { -public: - TAknFepInputStateInitialChineseMultitapBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - -public: // Functions from MPtiObserver interface - void KeyTimerExpired(); - - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_CHINESE_MULTITAP_BASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialFullNumber.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialFullNumber.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialFullNumber definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_FULL_NUMBER_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_FULL_NUMBER_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateInitialJapaneseBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; - -/** - * TAknFepUiInputStateInitialFullNumber class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateInitialFullNumber - :public TAknFepUiInputStateInitialJapaneseBase - { -public: // onstructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateInitialFullNumber( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - - -public:// Functions from base classes - /** - * From TAknFepUiInputStateInitialJapaneseBase - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - - /** - * From TAknFepInputStateBase - * Hnadling Keypress events. This Method is called by CAknFepUIManagerJapanese. - * - * @since 3.0 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - -public: // Functions from MPtiObserver interface - - virtual void KeyTimerExpired(); - -private: // New function - /** - * Handle ITUT-keypad characters (half-width only) - * - * @since 3.0 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleOwnKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Handle Qwerty characters - * - * @since 3.0 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleQwertyKeyL(TInt aKey, - TKeyPressLength aLength, - TWidthChar aWidth); - - - }; -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_FULL_NUMBER_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialHalfQwertyWesternPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialHalfQwertyWesternPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialHalfQwertyWesternPredictive definition. -* This state is active when the predictive Half QWERTY mode is used but no -* inline editing is yet ongoing. The entry state is activated when some -* character key press is gained. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INITIAL_HALFQWERTY_WESTERN_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INITIAL_HALFQWERTY_WESTERN_PREDICTIVE_H__ - -#include "AknFepUiInputStateBase.h" -#include "AknFepUiInputStateInitialMultitapBase.h" - -class TAknFepUiInputStateInitialHalfQwertyWesternPredictive : /*public TAknFepInputStateBase, */public TAknFepInputStateInitialMultitapBase - { -public: - /** - * Constructor - * @param aOwner The UI manager owning this state object. - */ - TAknFepUiInputStateInitialHalfQwertyWesternPredictive(MAknFepUIManagerStateInterface* aOwner); - - /** - * Handler for the key presses. - * @param aKey The key code to be handled - * @param aLength The lengyh of the key press - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Called when the Chr multitap timer expires. The case should be updated at that time. - */ - void KeyTimerExpired(); -private: - void HandleShiftState( TInt aKey ); - - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INITIAL_HALFQWERTY_WESTERN_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialHiragana.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialHiragana.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialHiragana definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_HIRAGANA_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_HIRAGANA_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateInitialJapaneseBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; - -/** - * TAknFepInputStateInitialHiragana class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateInitialHiragana - :public TAknFepUiInputStateInitialJapaneseBase - { -public: // onstructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateInitialHiragana( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public:// Functions from base classes - /** - * From TAknFepUiInputStateInitialJapaneseBase - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateInitialJapaneseBase - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_HIRAGANA_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialHiraganaKanji.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialHiraganaKanji.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialHiraganaKanji definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_HIRAGANA_KANJI_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_HIRAGANA_KANJI_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateInitialJapaneseBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateInitialHiraganaKanji class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateInitialHiraganaKanji - :public TAknFepUiInputStateInitialJapaneseBase - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateInitialHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public:// Functions from base classes - /** - * From TAknFepUiInputStateInitialJapaneseBase - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - -protected:// Functions from base classes - /** - * From TAknFepUiInputStateJapaneseBase - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_HIRAGANA_KANJI_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialIndicPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialIndicPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateInitialIndicPredictive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INITIAL_INDIC_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INITIAL_INDIC_PREDICTIVE_H__ - -#include "AknFepUiInputStateInitialMultitapBase.h" - - -/** -* This class handles the initial predictive state for Indic languages. -* @lib avkonfep.dll -* @since Series 60 3.1 -*/ - -class TAknFepInputStateInitialIndicPredictive : public TAknFepInputStateInitialMultitapBase - { -public: - /** - * - * Constructor for TAknFepInputStateInitialIndicPredictive. - * @since 3.1M - * @return - */ - TAknFepInputStateInitialIndicPredictive(MAknFepUIManagerStateInterface* aOwner, - TLanguage aLanguage); - -public: // from TAknFepInputStateBase - /** - * - * Returns the virama character depending on the input language. - * @since 3.1M - * @return Etrue if the Key is handled. - */ - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INITIAL_INDIC_PREDICTIVE_H__ -//End of File \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialJapaneseBase.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialJapaneseBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialJapaneseBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_JAPANESE_BASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_JAPANESE_BASE_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateJapaneseBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; -/** - * TAknFepUiInputStateInitialJapaneseBase class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateInitialJapaneseBase :public TAknFepUiInputStateJapaneseBase - { -public: // onstructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateInitialJapaneseBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public:// Functions from base classes - /** - * From TAknFepUiInputStateJapaneseBase - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - -protected:// Functions from base classes - /** - * From TAknFepUiInputStateJapaneseBase - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateJapaneseBase - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_JAPANESE_BASE_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialKatakana.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialKatakana.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialKatakana definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_KATAKANA_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_KATAKANA_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateInitialJapaneseBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; - -/** - * TAknFepUiInputStateInitialKatakana class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateInitialKatakana - :public TAknFepUiInputStateInitialJapaneseBase - { -public: // onstructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateInitialKatakana( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public: // Functions from base classes - /** - * From TAknFepUiInputStateInitialJapaneseBase - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - - /** - * From TAknFepUiInputStateInitialJapaneseBase - * Handling Command events. This Method is called by CAknFepUIManagerJapanese. - * - * @since 2.6 - * @param aCommandId Command ID value - */ - void HandleCommandL(TInt aCommandId); - -private: // New functions - /** - * Setting input mode to PtiEngine - * - * @since 3.0 - * @param aWidth Full or Half width - */ - void SetInputMode(const TWidthChar aWidth); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_KATAKANA_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialKoreanMultitap.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialKoreanMultitap.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialKoreanMultitap definition. -* -*/ - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_KOREAN_MULTITAP_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_KOREAN_MULTITAP_H__ - -#include "AknFepUiInputStateInitialMultitapBase.h" - -class TAknFepInputStateInitialKoreanMultitap : public TAknFepInputStateInitialMultitapBase - { -public: - TAknFepInputStateInitialKoreanMultitap(MAknFepUIManagerStateInterface* aOwner); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Decides whether text input should be commited or not. - * Function makes comparison between latest key input and korean keymappping data. - * if data match, then text is to be commited. - * @param aData TPtrC - * @param aKey TInt. - * @return TBool - */ - TBool CommitOrNot(TPtrC aData, TInt aKey); - - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_KOREAN_MULTITAP_H__ - -// End of file \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialLatinJapanese.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialLatinJapanese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialLatinJapanese definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_FULL_LATIN_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_FULL_LATIN_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateInitialJapaneseBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; - -/** - * TAknFepUiInputStateInitialLatinJapanese class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateInitialLatinJapanese - :public TAknFepUiInputStateInitialJapaneseBase - { -public: // onstructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateInitialLatinJapanese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public:// Functions from base classes - /** - * From TAknFepUiInputStateInitialJapaneseBase - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateInitialJapaneseBase - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 3.1 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - virtual TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_FULL_LATIN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialLatinMultitap.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialLatinMultitap.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialLatinMultitap definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_LATIN_MULTITAP_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_LATIN_MULTITAP_H__ - -#include "AknFepUiInputStateInitialMultitapBase.h" - -class TAknFepInputStateInitialLatinMultitap : public TAknFepInputStateInitialMultitapBase - { -public: - TAknFepInputStateInitialLatinMultitap(MAknFepUIManagerStateInterface* aOwner); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_LATIN_MULTITAP_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialMultitapBase.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialMultitapBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialMultitapBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_MULTITAP_BASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_MULTITAP_BASE_H__ - -#include "AknFepUiInputStateBase.h" - -class TAknFepInputStateInitialMultitapBase : public TAknFepInputStateBase - { -public: - TAknFepInputStateInitialMultitapBase(MAknFepUIManagerStateInterface* aOwner); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Set the Star key flag - * - * @param aSet TBool. - * @return None - */ - void SetStarKeyFlag( TBool aSet ); - -public: // Functions from MPtiObserver interface - - virtual void KeyTimerExpired(); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_MULTITAP_BASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialNumber.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialNumber.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialNumber definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INITIAL_NUMBER_H__ -#define __AKN_FEP_UI_INPUT_STATE_INITIAL_NUMBER_H__ - -#include "AknFepUiInputStateInitialMultitapBase.h" - -class TAknFepInputStateInitialNumber : public TAknFepInputStateInitialMultitapBase - { -public: - TAknFepInputStateInitialNumber(MAknFepUIManagerStateInterface* aOwner); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); -protected: - static TInt NumericResourceTimerTimeoutL(TAny* aPtr); - TInt NumericResourceKeyTimerTimeoutL(); - - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INITIAL_NUMBER_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialQwertyWesternPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialQwertyWesternPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialQwertyWesternPredictive definition. -* This state is active when the predictive QWERTY mode is used but no -* inline editing is yet ongoing. The entry state is activated when some -* character key press is gained. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INITIAL_QWERTY_WESTERN_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INITIAL_QWERTY_WESTERN_PREDICTIVE_H__ - -#include "AknFepUiInputStateBase.h" - -class TAknFepInputStateInitialQwertyWesternPredictive : public TAknFepInputStateBase - { -public: - /** - * Constructor - * @param aOwner The UI manager owning this state object. - */ - TAknFepInputStateInitialQwertyWesternPredictive(MAknFepUIManagerStateInterface* aOwner); - - /** - * Handler for the key presses. - * @param aKey The key code to be handled - * @param aLength The lengyh of the key press - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INITIAL_QWERTY_WESTERN_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialStrokeFind.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialStrokeFind.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialStrokeFind definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_STROKE_FIND_H__ -#define __AKN_FEP_UI_INPUT_STATE_STROKE_FIND_H__ - -#include "AknFepUiInputStateChineseBase.h" - -class TAknFepInputStateInitialStrokeFind : public TAknFepInputStateChineseBase - { -public: - TAknFepInputStateInitialStrokeFind( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_STROKE_FIND_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialThaiPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialThaiPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialThaiPredictive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INITIAL_THAI_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INITIAL_THAI_PREDICTIVE_H__ - -#include "AknFepUiInputStateInitialMultitapBase.h" - -class TAknFepInputStateInitialThaiPredictive : public TAknFepInputStateInitialMultitapBase - { -public: - TAknFepInputStateInitialThaiPredictive(MAknFepUIManagerStateInterface* aOwner); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - void HandleCommandL(TInt aCommandId); - - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INITIAL_THAI_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialWesternPredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialWesternPredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialWesternPredictive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INITIAL_WESTERN_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_INITIAL_WESTERN_PREDICTIVE_H__ - -#include "AknFepUiInputStateInitialMultitapBase.h" - -// Reverting the change of deriving from TAknFepInputStateBase to fix the bugs -// BSAN-7G4G3K and BSAN-7GD8ZW. -class TAknFepInputStateInitialWesternPredictive : public TAknFepInputStateInitialMultitapBase - { -public: - TAknFepInputStateInitialWesternPredictive(MAknFepUIManagerStateInterface* aOwner); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_INITIAL_WESTERN_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateInitialZhuyinFind.h --- a/fep/aknfep/inc/AknFepUiInputStateInitialZhuyinFind.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialZhuyinFind definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ZHUYIN_FIND_H__ -#define __AKN_FEP_UI_INPUT_STATE_ZHUYIN_FIND_H__ - -#include "AknFepUiInputStateInitialChineseMultitapBase.h" - -class TAknFepInputStateInitialZhuyinFind : public TAknFepInputStateInitialChineseMultitapBase - { -public: - TAknFepInputStateInitialZhuyinFind( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_ZHUYIN_FIND_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateJapaneseBase.h --- a/fep/aknfep/inc/AknFepUiInputStateJapaneseBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,261 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateJapaneseBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUTSTATE_JAPANESE_BASE_H__ -#define __AKN_FEP_UI_INPUTSTATE_JAPANESE_BASE_H__ - -// INCLUDES -#include -#include - -#include "AknFepUiInputStateBase.h" -#include "AknFepGlobalEnums.h" -#include "AknFepUICtrlContainerJapanese.h" - -#include // MPtiObserver - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; - -/** - * TAknFepUiInputStateJapaneseBase class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateJapaneseBase : public TAknFepInputStateBase - { -protected: - enum TStateEvent - { - EStateEventNone, - EStateEventCompleteCharacter, - EStateEventDeleteCharacter, - EStateEventScrollLeft, - EStateEventScrollRigth, - EStateEventScrollUp, - EStateEventScrollDown, - EStateEventCandidateOff, - EStateEventCandidateOn - }; - -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateJapaneseBase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - - -public: // Functions from base classes - /** - * From MPtiObserver - * Call this function when Multitap timer of PtiEngine was time-out - * - * @since 2.6 - */ - void KeyTimerExpired(); - - /** - * From MPtiObserver - * not-use Japanese state - * - * @since 2.6 - */ - void LastWordInSelectionList(); - - /** - * From MPtiObserver - * not-use Japanese state - * - * @since 2.6 - */ - void FirstWordInSelectionList(); - - /** - * From TAknFepInputStateBase - * Hnadling Keypress events. This Method is called by CAknFepUIManagerJapanese. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepInputStateBase - * Handling Command events. This Method is called by CAknFepUIManagerJapanese. - * - * @since 2.6 - * @param aCommandId Command ID value - */ - void HandleCommandL(TInt aCommandId); - - /** - * From TAknFepInputStateBase - * A patch to force the vtable to be copied during an assignment. - * - * @since 2.6 - */ - void operator=(const TAknFepInputStateBase& aState); - -protected: // New Functions - /** - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - virtual TBool HandleNumericShortKeyL(TInt aKey); - - /** - * Handling numeric long-keypress events. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - virtual TBool HandleNumericLongKeyL(TInt aKey); - - /** - * Handling Qwerty keypress events. - * HandleKeyEventL() call this method. - * - * @since 2.8 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - virtual TBool HandleQwertyShortKeyL(TInt aKey); - - /** - * Handling navigate keypress events. HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - virtual TBool HandleNaviKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - virtual TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Update inline editing string - * - * @since 2.6 - * @return ETrue If inline editing string was updated - */ - virtual TBool UpdateInlineEditingCharacterL(); - - /** - * Commit inline editing string - * - * @since 2.6 - * @return ETrue If inline editing string was updated - */ - virtual TBool CommitInlineEditingCharacterL(); - - /** - * Getting UI container object - * - * @since 2.6 - * @return Japanese UI container object - */ - MAknFepUICtrlContainerJapanese* UIContainer(); - - /** - * Update character case - * - * @since 2.6 - * @param aChar 1-character, Judgment data of character case - */ - void UpdateCase(TPtrC& aChar); - - TBool IsNumberKey(const TInt aKey); - TBool IsQwertyKey(const TInt aKey); - -private: // New Functions - /** - * Check whether last catacter case and current catacter case is same - * - * @since 2.6 - * @param aChar 1-character, Judgment data of character case - * @return ETrue If aChar case is diffrent from last character - */ - TBool IsDiffrentCase(TPtrC& aChar) const; - - /** - * Check a caracter case is upper - * - * @since 2.6 - * @param aChar 1-character, Judgment data of character case - * @return ETrue If aChar case is upper case - */ - TBool IsUpperCase(TPtrC& aChar) const; - - /** - * Check a caracter case is lower - * - * @since 2.6 - * @param aChar 1-character, Judgment data of character case - * @return ETrue If aChar case is lower case - */ - TBool IsLowerCase(TPtrC& aChar) const; - -protected: // Data - MAknFepUICtrlContainerJapanese* iUIContainer; // not owner - }; -#endif//__AKN_FEP_UI_INPUT_STATE_JAPANESE_BASE_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateJapanesePredictiveBase.h --- a/fep/aknfep/inc/AknFepUiInputStateJapanesePredictiveBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateJapanesePredictiveBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_JAPANESE_PREDICTIVE_BASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_JAPANESE_PREDICTIVE_BASE_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateJapaneseBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateJapanesePredictiveBase class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateJapanesePredictiveBase - :public TAknFepUiInputStateJapaneseBase - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateJapanesePredictiveBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public: // Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * - * @since 2.6 - */ - void CloseUI(); - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling numeric long-keypress events. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericLongKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling navigate keypress events. HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleNaviKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Update inline editing string - * - * @since 2.6 - * @return ETrue If inline editing string was updated - */ - TBool UpdateInlineEditingCharacterL(); - -protected: // New Fanctions - /** - * - * - * @since 2.6 - * @return ETrue - */ - virtual TBool UpdateCandidateListL(TInt aIndex = 0); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_JAPANESE_PREDICTIVE_BASE_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateNextWordJapanesePredictive.h --- a/fep/aknfep/inc/AknFepUiInputStateNextWordJapanesePredictive.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateNextWordJapanesePredictive definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_NEXTWORD_JAPANESE_PREDICTIVE_H__ -#define __AKN_FEP_UI_INPUT_STATE_NEXTWORD_JAPANESE_PREDICTIVE_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateJapanesePredictiveBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStateNextWordJapanesePredictive class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStateNextWordJapanesePredictive - :public TAknFepUiInputStateJapanesePredictiveBase - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStateNextWordJapanesePredictive( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public: // Functions from base classes - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Handling Command events. This Method is called by CAknFepUIManagerJapanese. - * - * @since 2.6 - * @param aCommandId Command ID value - */ - void HandleCommandL(TInt aCommandId); - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_NEXTWORD_JAPANESE_PREDICTIVE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveCandidate.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveCandidate.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidate definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_CAND_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_CAND_H__ - -#include "AknFepUiInputStateCandidateBase.h" - -class TAknFepInputStatePredictiveCandidate : public TAknFepInputStateCandidateBase - { -public: - TAknFepInputStatePredictiveCandidate( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_CAND_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEPREDCANDCHINESEPHRASE_H_ -#define T_AKNFEPUIINPUTSTATEPREDCANDCHINESEPHRASE_H_ - -#include "AknFepUiInputStateCandidateBaseChinesePhrase.h" - -class TAknFepInputStatePredictiveCandidateChinesePhrase : -public TAknFepInputStateCandidateBaseChinesePhrase - { -public: - TAknFepInputStatePredictiveCandidateChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif T_AKNFEPUIINPUTSTATEPREDCANDCHINESEPHRASE_H_ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateHalfQwertyChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateHalfQwertyChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -#ifndef AKNFEPUIINPUTSTATEPREDICTIVECANDIDATEHALFQWERTYCHINESEPHRASE_H_ -#define AKNFEPUIINPUTSTATEPREDICTIVECANDIDATEHALFQWERTYCHINESEPHRASE_H_/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidateMiniQwertyPinyinPhrase definition. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveInputQwertyChinesePhrase.h" - - - -class TAknFepInputStatePredictiveCandidateHalfQwertyChinesePhrase : - public TAknFepInputStatePredictiveInputQwertyChinesePhrase - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - - TAknFepInputStatePredictiveCandidateHalfQwertyChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - -protected: - - /** - * From TAknFepInputStatePredictiveInputQwertyPhrase - * Handle system key press event - * - * @since S60 v3.2 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif /*AKNFEPUIINPUTSTATEPREDICTIVECANDIDATEHALFQWERTYCHINESEPHRASE_H_*/ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateMiniQwertyChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateMiniQwertyChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidateMiniQwertyPinyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PREDICTIVECANDIDATE_MINIQWERTY_CHINESEPHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_PREDICTIVECANDIDATE_MINIQWERTY_CHINESEPHRASE_H__ - -#include "AknFepUiInputStatePredictiveInputQwertyChinesePhrase.h" - - - -class TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase : - public TAknFepInputStatePredictiveInputQwertyChinesePhrase - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - - TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); -protected: - - /** - * From TAknFepInputStatePredictiveInputQwertyPhrase - * Handle system key press event - * - * @since S60 v3.2 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - }; - - - -#endif __AKN_FEP_UI_INPUT_STATE_PREDICTIVECANDIDATE_MINIQWERTY_CHINESEPHRASE_H__ \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveCandidatePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveCandidatePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidatePhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_CAND_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_CAND_PHRASE_H__ - -#include "AknFepUiInputStateCandidateBasePhrase.h" - -class TAknFepInputStatePredictiveCandidatePhrase : public TAknFepInputStateCandidateBasePhrase - { -public: - TAknFepInputStatePredictiveCandidatePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_CAND_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveCandidatePinyin.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveCandidatePinyin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidatePinyin definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_CAND_PINYIN_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_CAND_PINYIN_H__ - -#include "AknFepUiInputStatePredictiveCandidate.h" - -class TAknFepInputStatePredictiveCandidatePinyin : public TAknFepInputStatePredictiveCandidate - { -public: - TAknFepInputStatePredictiveCandidatePinyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_CAND_PINYIN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveCandidatePinyinPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveCandidatePinyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidatePinyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_CAND_PINYIN_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_CAND_PINYIN_PHRASE_H__ - -#include "AknFepUiInputStatePredictiveCandidateChinesePhrase.h" - -class TAknFepInputStatePredictiveCandidatePinyinPhrase : -public TAknFepInputStatePredictiveCandidateChinesePhrase - { -public: - TAknFepInputStatePredictiveCandidatePinyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_CAND_PINYIN_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateQwertyZhuyin.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateQwertyZhuyin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidateQwertyZhuyin definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_CAND_QWERTY_ZHUYIN_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_CAND_QWERTY_ZHUYIN_H__ - -#include "AknFepUiInputStateCandidateQwertyChinese.h" - -class TAknFepInputStatePredictiveCandidateQwertyZhuyin : -public TAknFepInputStateCandidateQwertyChinese - { -public: - TAknFepInputStatePredictiveCandidateQwertyZhuyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_CAND_QWERTY_ZHUYIN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateQwertyZhuyinPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateQwertyZhuyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidateQwertyZhuyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_CAND_QWERTY_ZHUYIN_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_CAND_QWERTY_ZHUYIN_PHRASE_H__ - -#include "AknFepUiInputStateCandidateQwertyChinesePhrase.h" - -class TAknFepInputStatePredictiveCandidateQwertyZhuyinPhrase : -public TAknFepInputStateCandidateQwertyChinesePhrase - { -public: - TAknFepInputStatePredictiveCandidateQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_CAND_QWERTY_ZHUYIN_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateStroke.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateStroke.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidateStroke definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_CAND_STROKE_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_CAND_STROKE_H__ - -#include "AknFepUiInputStateCandidateChinese.h" - -class TAknFepInputStatePredictiveCandidateStroke : public TAknFepInputStateCandidateChinese - { -public: - TAknFepInputStatePredictiveCandidateStroke( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_CAND_STROKE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateStrokePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveCandidateStrokePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of Stroke phrase predictive state -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEPREDICTIVECANDIDATESTROKE_PHRASE_H -#define T_AKNFEPUIINPUTSTATEPREDICTIVECANDIDATESTROKE_PHRASE_H - -// User includes -#include "AknFepUiInputStatePredictiveCandidateChinesePhrase.h" - -/** - * TAknFepInputStatePredictiveCandidateStrokePhrase class. - * - * Implementation of Stroke phrase predictive state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepInputStatePredictiveCandidateStrokePhrase : - public TAknFepInputStatePredictiveCandidateChinesePhrase - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStatePredictiveCandidateStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - -protected: - - /** - * From TAknFepInputStatePredictiveCandidatePhrase - * Handle system key press event - * - * @since S60 v3.2 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif T_AKNFEPUIINPUTSTATEPREDICTIVECANDIDATESTROKE_PHRASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInput.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInput.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInput definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_H__ - -#include "AknFepUiInputStateCandidateBase.h" - -class TAknFepInputStatePredictiveInput : public TAknFepInputStateCandidateBase - { -public: - TAknFepInputStatePredictiveInput( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputChinese.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputChinese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of Pinyin phrase predictive Qwerty state -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEPREDINPUTCHINESE_H -#define T_AKNFEPUIINPUTSTATEPREDINPUTCHINESE_H - -// User includes -#include "AknFepUiInputStateCandidateChinese.h" - -/** - * TAknFepInputStatePredictiveInputChinese class. - * - * Implementation of Chinese predictive state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepInputStatePredictiveInputChinese : public TAknFepInputStateCandidateChinese - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - - TAknFepInputStatePredictiveInputChinese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * From TAknFepInputStateCandidateChinese - * Handle system key press event - * - * @since S60 v3.2 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif T_AKNFEPUIINPUTSTATEPREDINPUTCHINESE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEPREDINPUTCHINESEPHRASE_H_ -#define T_AKNFEPUIINPUTSTATEPREDINPUTCHINESEPHRASE_H_ - -#include "AknFepUiInputStateCandidateBaseChinesePhrase.h" - -class TAknFepInputStatePredictiveInputChinesePhrase : -public TAknFepInputStateCandidateBaseChinesePhrase - { -public: - TAknFepInputStatePredictiveInputChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif T_AKNFEPUIINPUTSTATEPREDINPUTCHINESEPHRASE_H_ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputJapanese.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputJapanese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStatePredictiveInputJapanese definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PREDICTIVE_INPUT_JAPANESE_H__ -#define __AKN_FEP_UI_INPUT_STATE_PREDICTIVE_INPUT_JAPANESE_H__ - -// INCLUDES -#include - -#include "AknFepUiInputStateJapanesePredictiveBase.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepUIManagerStateInterface; -enum TKeyPressLength; - -/** - * TAknFepUiInputStatePredictiveInputJapanese class. - * - * @lib AknFep.lib - * @since 2.6 - */ -class TAknFepUiInputStatePredictiveInputJapanese - :public TAknFepUiInputStateJapanesePredictiveBase - { -public: // Constructors and destructor - /** - * C++ default Constructor - * - * @since 2.6 - * @param aOwner Object derived MAknFepUIManagerStateInterface - * @param aUIContainer MAknFepUICtrlContainerJapanese object - */ - TAknFepUiInputStatePredictiveInputJapanese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer); - -public: // Functions from base classes - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Call this function when Multitap timer of PtiEngine was time-out - * - * @since 2.6 - */ - void KeyTimerExpired(); - - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Initialize state - * - * @since 2.6 - */ - void InitializeStateL(); - - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Handling Command events. This Method is called by CAknFepUIManagerJapanese. - * - * @since 2.6 - * @param aCommandId Command ID value - */ - void HandleCommandL(TInt aCommandId); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Close UI (Predictive popup) - * @since 2.6 - */ - void CloseUI(); - -protected: // Functions from base classes - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Handling short keypress events of the numeric and the star. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @return ETrue If aKey was handled - */ - TBool HandleNumericShortKeyL(TInt aKey); - - /** - * From TAknFepUiInputStateJapanesePredictiveBase - * Handling auxiliary keypress events including OK and Backspace. - * HandleKeyEventL() call this method. - * - * @since 2.6 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleAuxKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * From TAknFepUiInputStateEntryJapaneseMultitap - * Handling navigate keypress events. HandleKeyEventL() call this method. - * - * @since 3.2 - * @param aKey The event key code - * @param aLength The Length of keypress - * @return ETrue If aKey was handled - */ - TBool HandleNaviKeyL(TInt aKey, TKeyPressLength aLength); - -private: // New function - - /** - * TAknFepUiInputStatePredictiveInputJapanese::IsFullWidthAlphaChar - * Check full-width alphabet character - */ - TBool IsFullWidthAlphaChar(TPtrC aPtr); - - /** - * TAknFepUiInputStatePredictiveInputJapanese::ChangeStateToConversionL() - * Change state to conversion - */ - void ChangeStateToConversionL(); - - /** - * TAknFepUiInputStatePredictiveInputJapanese::ChangeStateToEntryL() - * Change state to Entry - */ - void ChangeStateToEntryL(); - }; -#endif //__AKN_FEP_UI_INPUT_STATE_PREDICTIVE_INPUT_JAPANESE_H__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputMiniQwertyChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputMiniQwertyChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEPREDINPUTMINIQWERTYCHINESEPHRASE_H_ -#define T_AKNFEPUIINPUTSTATEPREDINPUTMINIQWERTYCHINESEPHRASE_H_ - -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" - -class TAknFepInputStatePredictiveInputMiniQwertyChinesePhrase : -public TAknFepInputStateCandidateQwertyBaseChinesePhrase - { -public: - TAknFepInputStatePredictiveInputMiniQwertyChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - -#endif T_AKNFEPUIINPUTSTATEPREDINPUTCHINESEPHRASE_H_ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_PHRASE_H__ - -#include "AknFepUiInputStateCandidateBasePhrase.h" - -class TAknFepInputStatePredictiveInputPhrase : public TAknFepInputStateCandidateBasePhrase - { -public: - TAknFepInputStatePredictiveInputPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwerty.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwerty.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputQwerty definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_H__ - -#include "AknFepUiInputStateCandidateQwertyChineseBase.h" - -class TAknFepInputStatePredictiveInputQwerty : public TAknFepInputStateCandidateQwertyChineseBase - { -public: - TAknFepInputStatePredictiveInputQwerty( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyChinesePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyChinesePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEPREDINPUTQWERTYCHINESEPHRASE_H_ -#define T_AKNFEPUIINPUTSTATEPREDINPUTQWERTYCHINESEPHRASE_H_ - -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" - -class TAknFepInputStatePredictiveInputQwertyChinesePhrase : -public TAknFepInputStateCandidateQwertyBaseChinesePhrase - { -public: - TAknFepInputStatePredictiveInputQwertyChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif T_AKNFEPUIINPUTSTATEPREDINPUTQWERTYCHINESEPHRASE_H_ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputQwertyPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_PHRASE_H__ - -#include "AknFepUiInputStateCandidateQwertyBasePhrase.h" - -class TAknFepInputStatePredictiveInputQwertyPhrase : -public TAknFepInputStateCandidateQwertyBasePhrase - { -public: - TAknFepInputStatePredictiveInputQwertyPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyPinyin.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyPinyin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputQwerty definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_PINYIN__H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_PINYIN__H__ - -#include "AknFepUiInputStateCandidateQwertyChineseBase.h" - -class TAknFepInputStatePredictiveInputQwertyPinyin : -public TAknFepInputStateCandidateQwertyChineseBase - { -public: - TAknFepInputStatePredictiveInputQwertyPinyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); -private: - - TBool IsValidPinyinKey(TInt aKey); - TBool IsValidEntryKey(TInt aKey); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_PINYIN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyPinyinPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyPinyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of Pinyin phrase predictive Qwerty state -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEPREDICTIVEINPUTQWERTYPINYIN_PHRASE_H -#define T_AKNFEPUIINPUTSTATEPREDICTIVEINPUTQWERTYPINYIN_PHRASE_H - -// User includes -#include "AknFepUiInputStatePredictiveInputQwertyChinesePhrase.h" - -/** - * TAknFepInputStatePredictiveInputQwertyPinyinPhrase class. - * - * Implementation of Pinyin phrase predictive Qwerty state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepInputStatePredictiveInputQwertyPinyinPhrase : - public TAknFepInputStatePredictiveInputQwertyChinesePhrase - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - - TAknFepInputStatePredictiveInputQwertyPinyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); -protected: - - /** - * From TAknFepInputStatePredictiveInputQwertyPhrase - * Handle system key press event - * - * @since S60 v3.2 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - -private: - - /** - * Judge the kay is in the valid pinyin key group - * - * @since S60 v3.2 - * @param aKey System key - * @return ETrue if it is pinyin key, otherwise it is not - */ - TBool IsValidPinyinKey(TInt aKey); - - /** - * Judge the kay is in the valid entry key group - * - * @since S60 v3.2 - * @param aKey System key - * @return ETrue if it is pinyin key, otherwise it is not - */ - TBool IsValidEntryKey(TInt aKey); - }; - -#endif T_AKNFEPUIINPUTSTATEPREDICTIVEINPUTQWERTYPINYIN_PHRASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyStroke.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyStroke.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEPREDINPUTQWERTYSTROKE_H -#define T_AKNFEPUIINPUTSTATEPREDINPUTQWERTYSTROKE_H - -#include "AknFepUiInputStateCandidateQwertyChineseBase.h" - -class TAknFepInputStatePredictiveInputQwertyStroke : -public TAknFepInputStateCandidateQwertyChineseBase - { -public: - TAknFepInputStatePredictiveInputQwertyStroke( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - TBool IsValidEntryKey(TInt aKey); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - -#endif T_AKNFEPUIINPUTSTATEPREDINPUTQWERTYSTROKE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyStrokePhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyStrokePhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ?Description -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEPREDINPUTQWERTYSTROKEPHRASE_H -#define T_AKNFEPUIINPUTSTATEPREDINPUTQWERTYSTROKEPHRASE_H - -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" - -class TAknFepInputStatePredictiveInputQwertyStrokePhrase : -public TAknFepInputStateCandidateQwertyBaseChinesePhrase - { -public: - TAknFepInputStatePredictiveInputQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); -private: - TBool IsValidEntryKey(TInt aKey); - }; - -#endif T_AKNFEPUIINPUTSTATEPREDINPUTQWERTYSTROKEPHRASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyZhuyin.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyZhuyin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputQwertyZhuyin definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_ZHUYIN_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_ZHUYIN_H__ - -#include "AknFepUiInputStateCandidateBase.h" -#include "AknFepUiInputStateCandidateQwertyChinese.h" - -class TAknFepInputStatePredictiveInputQwertyZhuyin : public TAknFepInputStateCandidateQwertyChinese - { -public: - TAknFepInputStatePredictiveInputQwertyZhuyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_ZHUYIN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyZhuyinPhrase.h --- a/fep/aknfep/inc/AknFepUiInputStatePredictiveInputQwertyZhuyinPhrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputQwertyZhuyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_ZHUYIN_PHRASE_H__ -#define __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_ZHUYIN_PHRASE_H__ - -#include "AknFepUiInputStateCandidateBase.h" -#include "AknFepUiInputStateCandidateQwertyChinesePhrase.h" - -class TAknFepInputStatePredictiveInputQwertyZhuyinPhrase - : public TAknFepInputStateCandidateQwertyChinesePhrase - { -public: - TAknFepInputStatePredictiveInputQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif __AKN_FEP_UI_INPUT_STATE_PRED_INPUT_QWERTY_ZHUYIN_PHRASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateQwerty.h --- a/fep/aknfep/inc/AknFepUiInputStateQwerty.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateQwerty definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_QWERTY_H__ -#define __AKN_FEP_UI_INPUT_STATE_QWERTY_H__ - -#include -#include "AknFepUiInputStateBase.h" - -class TAknFepInputStateQwerty : public TAknFepInputStateBase - { -public: - TAknFepInputStateQwerty(MAknFepUIManagerStateInterface* aOwner); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - TBool IsNumberKey(const TInt aKey); - -public: // Functions from MPtiObserver interface - void KeyTimerExpired(); - -protected: - TBool IsCharacterKey(const TInt aKey); - TBool IsQwertyKey(const TInt aKey); - -// TBool IsAllowedKeymappingForNumberMode(TChar aChar); - void NumericCharacterForQwertyKey(TInt aInScanCode, - TKeyEvent& aEvent, - TBool aShifted, - TChar& aResult); - TBool IsExceptionChar(TUint16 aChar); - - - /** - * There are currently handled as a herdcoded special cases. - * This method is used for collecting and handling those cases. - */ - void CustomFilter(TPtrC aInput, TDes& aOutput, TInt aLanguage, - TInt aCurrentCase, TBool aShiftDown); - void HandleCaseChange(TInt aKey, TBool aIsCharacter); -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool IsCharacterNumber(TChar aChar); - TBool TryGetValidCharForKey(const TInt& aKey, TChar& aChar); - TBool TryGetValidCharForKeyAndCase(const TInt& aKey, TChar& aChar, TPtiTextCase aCase); -#endif - TBool CheckForValidNumberEntryForqwerty(TInt aKey); -private: - //TBool iFakeDelete; - //TBool iCharKeyException; -#ifdef RD_INTELLIGENT_TEXT_INPUT - - //IsLanguageSupportsCaseChanges() should return ETrue if the current input language - // does not support case changes. Eg - Arabic, Urdu, Farsi, Hindi, etc. - //It should return EFalse for other languages (eg - latin based languages) - TBool IsLanguageWithoutCaseChanges(); - - //IsSpecialNonLatinScript() should return ETrue if the current input language uses - // either Greek, Cyrillic or Hebrew script. Currently supported languages with Cyrillic - // script are Russian, Ukrainian and Bulgarian. - TBool IsSpecialNonLatinScript(); - -#endif - }; - -#endif //__AKN_FEP_UI_INPUT_STATE_QWERTY_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateQwertyKorean.h --- a/fep/aknfep/inc/AknFepUiInputStateQwertyKorean.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CAknFepInputStateQwertyKorean declaration -* -*/ - -#ifndef AKNFEPINPUTSTATEQWERTYKOREAN_H -#define AKNFEPINPUTSTATEQWERTYKOREAN_H - -// INCLUDES -#include -#include - -#include "AknFepUiInputStateQwerty.h" - -class CPtiEngine; - -class TAknFepInputStateQwertyKorean : public TAknFepInputStateQwerty - { -public: - - TAknFepInputStateQwertyKorean(MAknFepUIManagerStateInterface* aOwner); - - virtual ~TAknFepInputStateQwertyKorean(); - -private: - - virtual TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - void KeyTimerExpired(); - -private: - - }; - -#endif // AKNFEPINPUTSTATEQWERTYKOREAN_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStateZhuyinFindQwerty.h --- a/fep/aknfep/inc/AknFepUiInputStateZhuyinFindQwerty.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateZhuyinFindQwerty definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_ZHUYIN_FIND_QWERTY_H__ -#define __AKN_FEP_UI_INPUT_STATE_ZHUYIN_FIND_QWERTY_H__ - -#include "AknFepUiInputStateChineseFindQwerty.h" -#include "AknFepUiInputStateInitialChineseGenericQwerty.h" -#include "AknFepUiInputStateInitialChineseGenericHalfQwerty.h" - -class TAknFepInputStateZhuyinFindQwerty : public TAknFepInputStateChineseFindQwerty - { -public: - TAknFepInputStateZhuyinFindQwerty( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - }; - -#ifdef RD_INTELLIGENT_TEXT_INPUT -class TAknFepInputStateZhuyinFindMiniQwerty : public TAknFepInputStateInitialChineseGenericQwerty - { -public: - TAknFepInputStateZhuyinFindMiniQwerty( - MAknFepUIManagerStateInterface* aOwner, - TInt aMode); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - // Functions from MPtiObserver interface - void KeyTimerExpired(); - }; - -#ifdef __HALF_QWERTY_KEYPAD -class TAknFepInputStateZhuyinFindHalfQwerty : -public TAknFepInputStateInitialChineseGenericHalfQwerty - { -public: - TAknFepInputStateZhuyinFindHalfQwerty( - MAknFepUIManagerStateInterface* aOwner, - TInt aMode); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - // Functions from MPtiObserver interface - void KeyTimerExpired(); -private: - TBool IsValidZhuyinKey(TInt aKey); - }; - -#endif //__HALF_QWERTY_KEYPAD - -#endif //RD_INTELLIGENT_TEXT_INPUT - -#endif //__AKN_FEP_UI_INPUT_STATE_STROKE_FIND_QWERTY_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiInputStatelStrokeFindQwerty.h --- a/fep/aknfep/inc/AknFepUiInputStatelStrokeFindQwerty.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateStrokeFindQwerty definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_STROKE_FIND_QWERTY_H__ -#define __AKN_FEP_UI_INPUT_STATE_STROKE_FIND_QWERTY_H__ - -#include "AknFepUiInputStateChineseFindQwerty.h" -#include "AknFepUiInputStateInitialChineseGenericHalfQwerty.h" -#include "AknFepUiInputStateInitialChineseGenericQwerty.h" - -class TAknFepInputStateStrokeFindQwerty : public TAknFepInputStateChineseFindQwerty - { -public: - TAknFepInputStateStrokeFindQwerty( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - }; -#ifdef RD_INTELLIGENT_TEXT_INPUT -class TAknFepInputStateStrokeFindMiniQwerty : - public TAknFepInputStateInitialChineseGenericQwerty - { -public: - TAknFepInputStateStrokeFindMiniQwerty( - MAknFepUIManagerStateInterface* aOwner, - TInt aMode); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; -#ifdef __HALF_QWERTY_KEYPAD -class TAknFepInputStateStrokeFindHalfQwerty : - public TAknFepInputStateInitialChineseGenericHalfQwerty - { -public: - TAknFepInputStateStrokeFindHalfQwerty( - MAknFepUIManagerStateInterface* aOwner, - TInt aMode); - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif //__HALF_QWERTY_KEYPAD - -#endif //RD_INTELLIGENT_TEXT_INPUT - -#endif //__AKN_FEP_UI_INPUT_STATE_STROKE_FIND_QWERTY_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiManagerBase.h --- a/fep/aknfep/inc/AknFepUiManagerBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,479 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIManagerBase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_MANAGER_BASE_H__ -#define __AKN_FEP_UI_MANAGER_BASE_H__ - -// INCLUDES -#include //TAknEditorNumericKeymap - -#include "AknFepManagerUIInterface.h" -#include "AknFepManagerInterface.h" -#include "AknFepUIManagerStateInterface.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class CPtiEngine; -class TAknFepInputStateBase; - -/** - * CAknFepUIManagerBase class. - * - * @lib AknFep.lib - * @since 2.6 - * - */ -class CAknFepUIManagerBase : - public CBase, - public MAknFepManagerInterface, - public MAknFepUIManagerStateInterface - { -private: - /** - * private constants - */ - enum - { - EBaseLanguageNumericKeymapIndex = 0x00FF, - EMaskShiftOffset = 8 - }; - -public: // Constructors and destructor - /** - * - * - * @since 2.6 - */ - static CAknFepUIManagerBase* NewL(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan, TLanguage aLanguage); - - /** - * - * - * @since 2.6 - */ - virtual ~CAknFepUIManagerBase(); - -public: // Functions from base classes - /** - * From MAknFepManagerInterface - * - * @since 2.6 - */ -#ifdef RD_INTELLIGENT_TEXT_INPUT - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode, - TInt aKeyboardType = EPtiKeyboardNone); -#else - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode); -#endif - - /** - * From MAknFepManagerInterface - * - * @since 2.6 - */ - void SetCase(TCase aCase); - - /** - * From MAknFepManagerInterface - * - * @since 2.6 - */ - void SetNumberModeKeyMappingL(TAknEditorNumericKeymap aAknEditorNumericKeymap); - - /** - * From MAknFepManagerInterface - * - * @since 2.6 - */ - const TDesC& NumberModeKeyMapping() const; - - /** - * From MAknFepManagerInterface - * - * @since 2.6 - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey ); - - /** - * From MAknFepManagerInterface - * this is in base class only - * @since 2.6 - */ - void HandleCommandL(TInt aCommandId); - void HandleCommandL(TInt aCommandId, TInt aParam); - - /** - * From MAknFepManagerInterface - * this should be implemented in each ui manager - * - * @since 2.6 - */ - void CloseUI(); - - /** - * From MAknFepManagerInterface - * this is in base class only - * - * @since 2.6 - */ - void ExpireMultitapTimer(); - - /** - * From MAknFepManagerInterface - * this is in base class only - * - * @since 2.6 - */ - TBool IsValidNumericLongKeyPress(TInt aKey) const; - - /** - * From MAknFepManagerInterface - * this api use in chinese and western - * - * @since 2.6 - */ - void AddTextToUserDictionaryL(const TDesC& aText); - - /** - * From MAknFepManagerInterface - * this should be implemented in each ui manager - * - * @since 2.6 - */ - void GetFormatOfFepInlineText(TCharFormat& aFormat, TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter) const; - - /** - * From MAknFepManagerInterface - * - * @since 2.6 - */ - virtual TInt SupportLanguage(TInt aMode) const; - - /** - * From MAknFepManagerInterface - * - * @since 2.6 - */ - virtual void SetInputLanguageL(TLanguage aLanguage); - - /** - * From MAknFepManagerInterface - * - * @since 2.6 - */ - TBool IsValidShiftKeyPress() const; -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool IsValidFnKeyPress() const; - - virtual TBool IsValidLongChrKeyPress() const; - -#endif - - /** - * From MAknFepManagerInterface - * this api use in chinese ui only - * - * @since 2.6 - */ - void SetEditorContext(TInt aContext); - - /** - * - * - * @since 2.6 - */ - void ActivateUI(); - - /** - * From MAknFepUIManagerStateInterface - * this is in base class only - * - * @since 2.6 - */ - TUIState State() const; - - /** - * From MAknFepUIManagerStateInterface - * this should be implemented in each ui manager - * - * @since 2.6 - */ - TUIState ChangeState(TUIState aState); - - /** - * From MAknFepUIManagerStateInterface - * this is in base class only - * - * @since 2.6 - */ - MAknFepManagerUIInterface* FepMan() const; - - /** - * From MAknFepUIManagerStateInterface - * using instead of PtiEngine() - * - * @since 2.6 - */ - CPtiEngine* PtiEngine() const; - - // the follow function for phrase creation - MZhuyinKeyHandler* ZhuyinKeyHandler(); - CAknFepZhuyinAnalyser* ZhuyinAnalyser(); - - /** - * From MAknFepUIManagerStateInterface - * this api use in chinese input states only - * - * @since 2.6 - */ - TBool IsValidChineseInputKey(TInt aKey) const; - - /** - * From MAknFepUIManagerStateInterface - * this api use in chinese Qwerty input states only - * - * @since 3.0 - */ - TBool IsValidChineseInputKeyQwerty(TInt aKey) const; - - /** - * From MAknFepUIManagerStateInterface - * this api use in chinese Qwerty input states only - * - * @since 3.0 - */ - TBool IsQwertyZhuyinToneMarkKey(TInt aKey) const; - - /** - * this api use in HK Qwerty input states only - * - * @since 3.0 - */ - virtual void UpdateCangJieState(); - - /** - * From MAknFepUIManagerStateInterface - * this api use in chinese input states only - * - * @since 3.0 - */ - TBool IsValidChineseSymbol(TInt aKey) const; - /** - * From MAknFepUIManagerStateInterface - * this is in base class only - * TLanguage is Language identity enumeration defined in e32std.h - * - * @since 2.6 - */ - TLanguage GetLanguage() const; - - /** - * From MAknFepUIManagerStateInterface - * - * @since 2.6 - */ - CAknFepCaseManager* CaseMan() const; - - /** - * From MAknFepUIManagerStateInterface - * - * - * @since 2.6 - * this api use in chinese ui only - */ - TPtr GetLatestDeliberateSelection() const; - - /** - * From MAknFepUIManagerStateInterface - * Thai only - * - * @since 2.6 - */ - TInt ThaiSCTResourceId(TUint aPrewChar, TInt aKey); - - /** - * From MAknFepUIManagerStateInterface - * Japanese only - * - * @since 2.6 - */ - CDesCArrayFlat* CandidateArray(); - - /** - * From MAknFepUIManagerStateInterface - * Japanese only - * - * @since 2.6 - */ - TBool IsPredictive() const; - - /** - * From MAknFepUIManagerStateInterface - * Japanese only - * - * @since 2.6 - */ - void SetInlineEditUnderlineVisibility(TBool aFlag); - - /** - * From MAknFepUIManagerStateInterface - * - * @since 3.0 - */ - TBool IsQwerty() const; - - /** - * From MAknFepUIManagerStateInterface - * - * @since 3.2 - */ - void SetFepAwareEditorText(const TFepInputContextFieldData& /*aIcfData*/); - - /** - * From MAknFepUIManagerStateInterface - * - * @since 3.2 - */ - TInt EditorMaxLength(); - - /** - * From MAknFepUIManagerStateInterface - * - * @since 3.2 - */ - void ResourceChanged(TInt aType); - - /** - * From MAknFepUIManagerStateInterface - * - * @since 3.2 - */ - void SetNextFepUI(MAknFepManagerInterface* /*aNextUi*/); - - /** - * Set the Star key flag - * - * @param aSet TBool. - * @return None - */ - void SetStarKeyFlag( TBool aSet ); - -protected: // New Functions - /** - * - * - * @since 2.6 - */ - void ConstructL(TLanguage aLanguage); - - /** - * - * - * @since 2.6 - */ - CAknFepUIManagerBase(MAknFepManagerUIInterface* aFepMan, CAknFepCaseManager* aCaseMan); - - /** - * - * - * @since 2.6 - */ - virtual TAknFepInputStateBase* FepUIState(); -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Removes the character produced by the initial short key press and substitutes - * it with the character found behind Fn. If no no Fn-mapping is available, the - * function does nothing. Also, in non-QWERTY modes the function does nothing because - * ITU-T input states handle long press internally. - * @return ETrue if key was consumed and no further handling should be made. - * This is the case when editor is filled up and no more characters can be entered. - * EFalse if handling of the key event may continue. Either the mode has - * been changed to Fn mode for the next character or nothing has - * been done and normal key repeat should happen. - * @since 3.2 - */ - virtual TBool HandleLongKeyL( TInt aKey ); - - /** - * Removes the character produced by the last handled key press. Long press number - * entry uses this to remove the character which was entered when the key was pressed - * down ("the initially short press character") before the key press turned out to be - * a long press. - * @return ETrue if something was really removed - * EFalse if nothing was removed (the previous key press had produced no charcters) - * @since 3.2 - */ - virtual TBool RollbackPreviousCharL(); - -#endif //RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - -protected: // Data - TInt iMode; // - TInt iNumericKeymapResourceId; - HBufC* iNumericKeymapBuffer; - TLanguage iLanguage; // - - CPtiEngine* iPtiEngine; //owned - - TAknFepInputStateBase* iStatePtr; // gcc workaround to force compiler to use vtable lookup. - - MAknFepManagerUIInterface* iFepMan; //not owned - CAknFepCaseManager* iCaseMan; //not owned - TBool iPredictive; // ETrue: prediction is ON. -#ifdef RD_INTELLIGENT_TEXT_INPUT - // predictive QWERTY changes (e.g. XT9) ----> - TBool iQwertyInputMode; // ETrue: QWERTY mode is ON - // predictive QWERTY changes (e.g. XT9) <---- -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - TInt iPreviousInputSeqLen; - TInt iPreviousEditorTextLen; - TInt iInputSeqLenDeltaWithLastKey; - TInt iEditorTextLenDeltaWithLastKey; -#endif //__ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#endif //RD_INTELLIGENT_TEXT_INPUT - TUIState iInitialFepUIState; // - TInt iCaseBeforeLongKey; - }; - -#endif //__AKN_FEP_UI_MANAGER_BASE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiManagerChinese.h --- a/fep/aknfep/inc/AknFepUiManagerChinese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,312 +0,0 @@ -/* -* Copyright (c) 2003-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIManagerChinese definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_MANAGER_CHINESE_H__ -#define __AKN_FEP_UI_MANAGER_CHINESE_H__ - -// INCLUDES -#include //TAknEditorNumericKeymap -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiInputStateChineseBase.h" -#include - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class CAknFepUIManagerBase; -class MAknFepUICtrlContainerChinese; - -/** - * CAknFepUIManagerChinese class. - * - * @lib AknFep.lib - * @since 2.6 - * - */ -class CAknFepUIManagerChinese : public CAknFepUIManagerBase - { -private: - /** - * private constants - */ - enum - { - EBaseLanguageNumericKeymapIndex = 0x00FF, - EMaskShiftOffset = 8 , - ESupportPinyinPhrase = 0x0010, - ESupportZhuyinPhrase = 0x0020, - ESupportStrokePhrase = 0x0040, - EQueryPtiEngineAlready = 0x0080 - }; - -public: // Constructors and destructor - /** - * - * - * @since 2.6 - */ - static CAknFepUIManagerChinese* NewL(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan, TLanguage aLanguage); - - /** - * - * - * @since 2.6 - */ - virtual ~CAknFepUIManagerChinese(); - -public: // Functions from base classes - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength,TEventCode aEventCode = EEventKey); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void CloseUI(); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void GetFormatOfFepInlineText(TCharFormat& aFormat, TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter) const; - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TInt SupportLanguage(TInt aMode) const; - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void SetInputLanguageL(TLanguage aLanguage); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void SetEditorContext(TInt aContext); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TUIState ChangeState(TUIState aState); - - /** - * From CAknFepUIManagerBase - * - * @since 3.0 - */ - void ChangeStatetItut(TUIState aState); - - /** - * From CAknFepUIManagerBase - * - * @since 3.0 - */ - void ChangeStateQwerty(TUIState aState); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TBool IsValidChineseInputKey(TInt aKey) const; - /** - * From CAknFepUIManagerBase - * - * @since 3.0 - */ - TBool IsValidChineseInputKeyQwerty(TInt aKey) const; - - /** - * From CAknFepUIManagerBase - * - * @since 3.0 - */ - TBool IsQwertyZhuyinToneMarkKey(TInt aKey) const; - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TPtr GetLatestDeliberateSelection() const; - - /** - * From CAknFepUIManagerBase - * - * @since 3.0 - */ - void UpdateCangJieState(); - - /** - * From CAknFepUIManagerBase - * - * @since 3.0 - */ - TBool IsValidChineseSymbol(TInt aKey) const; - -private: // Functions from base classes - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TAknFepInputStateBase* FepUIState(); - - /** - * Clears all flags down - */ - inline void ResetFlags(); - - /** - * Clears aFlag bitfield in iFlags - */ - inline void ClearFlag(TInt aFlag); - - /** - * Sets aFlag bitfield in iFlags - */ - inline void SetFlag(TInt aFlag); - - /** - * Returns ETrue if the aFlag bitfield in iFlags is set, EFalse if it - * is clear - */ - inline TBool IsFlagSet(TInt aFlag) const; - /** - * Query PtiEngine for phrase input - */ - void QueryPtiEngine(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - /** - * Decide if the key mapped stroke - * - * since 3.2.3 - */ - TBool IsKeyMappedStroke(TInt aKey) const; -#endif -public: // New Fanctions - /** - * - * - * @since 2.6 - */ - MAknFepUICtrlContainerChinese* UIContainer() const; - - /** - * Check valid shift key press - */ - TBool IsValidShiftKeyPress() const; -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool IsValidFnKeyPress() const; - - TBool IsValidLongChrKeyPress() const; - -#endif -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT -protected: // from CAknFepUIManagerBase - TBool RollbackPreviousCharL(); -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -private: // New Fanctions - /** - * - * - * @since 2.6 - */ - CAknFepUIManagerChinese(MAknFepManagerUIInterface* aFepMan, CAknFepCaseManager* aCaseMan); - - /** - * - * - * @since 2.6 - */ - void ConstructL(TLanguage aLanguage); - -private: // Data - TAknFepInputStateChineseBase iFepUiState; - MAknFepUICtrlContainerChinese* iContainerPane; - - // note that this must be stored in the manager, as the input states cannot allocate any memory - TBufC iLatestDeliberateSelection; - TUint iFlags; - TInt iPrevMode; - TBool iQwertyMode; - }; - -inline void CAknFepUIManagerChinese::SetFlag(TInt aFlag) - { - iFlags |= aFlag; - } - -inline void CAknFepUIManagerChinese::ClearFlag(TInt aFlag) - { - iFlags &= ~aFlag; - } - -inline void CAknFepUIManagerChinese::ResetFlags() - { - iFlags = 0; - } - -inline TBool CAknFepUIManagerChinese::IsFlagSet(TInt aFlag) const - { - return iFlags & aFlag; - } - - -#endif //__AKN_FEP_UI_MANAGER_CHINESE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiManagerKorean.h --- a/fep/aknfep/inc/AknFepUiManagerKorean.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,146 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIManagerKorean definition. -* -*/ -#ifndef __AKN_FEP_UI_MANAGER_KOREAN_H__ -#define __AKN_FEP_UI_MANAGER_KOREAN_H__ - -// INCLUDES -#include //TAknEditorNumericKeymap - -#include "AknFepUiManagerBase.h" -#include "AknFepUiInputStateBase.h" - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepManagerInterface; -class MAknFepManagerUIInterface; -class MAknFepUIManagerStateInterface; -class MAknFepUIManagerStateInterface; - - -/** - * CAknFepUIManagerWestern class. - * This class is mounted based on CAknFepUiManager. - * - * @lib AknFep.lib - * @since 2.6 - */ -class CAknFepUIManagerKorean : public CAknFepUIManagerBase - { -private: - /** - * private constants - */ - enum - { - EBaseLanguageNumericKeymapIndex = 0x00FF, - EMaskShiftOffset = 8 - }; - -public: // Constructors and destructor - /** - * - * - * @since 2.6 - */ - static CAknFepUIManagerKorean* NewL(MAknFepManagerUIInterface* aFepMan, CAknFepCaseManager* aCaseMan, TLanguage aLanguage); - - /** - * - * - * @since 2.6 - */ - virtual ~CAknFepUIManagerKorean(); - -public: // Functions from base classes - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey ); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void CloseUI(); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TInt SupportLanguage(TInt aMode) const; - - /** - * Activates western predictive entry UI to inline editing state - * by changing input state to entry state. - * - * @since 2.6 - */ - void ActivateUI(); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TUIState ChangeState(TUIState aState); - -private: // New Functions - /** - * - * - * @since 2.6 - */ - void ConstructL(TLanguage aLanguage); - - /** - * - * - * @since 2.6 - */ - CAknFepUIManagerKorean(MAknFepManagerUIInterface* aFepMan, CAknFepCaseManager* aCaseMan); - - /** - * - * - * @since 2.6 - */ - - TAknFepInputStateBase* FepUIState(); - - - -private: // Data - - TAknFepInputStateBase iFepUiState; - - }; - -#endif //__AKN_FEP_UI_MANAGER_KOREAN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepUiManagerWestern.h --- a/fep/aknfep/inc/AknFepUiManagerWestern.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,193 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIManagerWestern definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_MANAGER_WESTERN_H__ -#define __AKN_FEP_UI_MANAGER_WESTERN_H__ - -// INCLUDES -#include //TAknEditorNumericKeymap - -#include "AknFepUiManagerBase.h" -#include "AknFepUiInputStateBase.h" - -// CONSTANTS -#ifndef RD_INTELLIGENT_TEXT_INPUT -#define KSLATEGRAY TRgb(112,138,144); // slate gray color used in AutoCompletion mode -#else // RD_PRED_AW_COMPLETION -#define KSLATEGRAY TRgb(112,138,144); // slate gray color used in AutoCompletion mode -#endif // RD_PRED_AW_COMPLETION - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class MAknFepManagerInterface; -class MAknFepManagerUIInterface; -class MAknFepUIManagerStateInterface; -class CAknFepThaiSCTSelector; -class CAknFepVietnameseToneManager; - -/** - * CAknFepUIManagerWestern class. - * This class is mounted based on CAknFepUiManager. - * - * @lib AknFep.lib - * @since 2.6 - */ -class CAknFepUIManagerWestern : public CAknFepUIManagerBase - { -private: - /** - * private constants - */ - enum - { - EBaseLanguageNumericKeymapIndex = 0x00FF, - EMaskShiftOffset = 8 - }; - -public: // Constructors and destructor - /** - * - * - * @since 2.6 - */ - static CAknFepUIManagerWestern* NewL(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan, TLanguage aLanguage); - - /** - * - * - * @since 2.6 - */ - virtual ~CAknFepUIManagerWestern(); - -public: // Functions from base classes - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey ); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void CloseUI(); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void AddTextToUserDictionaryL(const TDesC& aText); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - void GetFormatOfFepInlineText(TCharFormat& aFormat, TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter) const; - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TInt SupportLanguage(TInt aMode) const; - - /** - * Activates western predictive entry UI to inline editing state - * by changing input state to entry state. - * - * @since 2.6 - */ - void ActivateUI(); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TUIState ChangeState(TUIState aState); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - TInt ThaiSCTResourceId(TUint aPrewChar, TInt aKey); - - /** - * From CAknFepUIManagerBase - * - * @since 2.6 - */ - CAknFepVietnameseToneManager* VietnameseToneManager() const; - -private: // New Functions - /** - * - * - * @since 2.6 - */ - void ConstructL(TLanguage aLanguage); - - /** - * - * - * @since 2.6 - */ - CAknFepUIManagerWestern(MAknFepManagerUIInterface* aFepMan, CAknFepCaseManager* aCaseMan); - - /** - * - * - * @since 2.6 - */ - TAknFepInputStateBase* FepUIState(); - -private: // Data - - TAknFepInputStateBase iFepUiState; - CAknFepThaiSCTSelector* iAknFepThaiSCTSelector; - CAknFepVietnameseToneManager* iVietToneMarkMgr; // own, tone mark mgr for vietnamese - }; - -#endif //__AKN_FEP_UI_MANAGER_WESTERN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepVietnameseInputTables.h --- a/fep/aknfep/inc/AknFepVietnameseInputTables.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides global tables. -* -*/ - - - - - - - - - - - -#ifndef __AKN_FEP_VIET_TABLES_H__ -#define __AKN_FEP_VIET_TABLES_H__ - -// Vietnamese tone tables - -const TInt KNumberOfToneMarks = 5; // This equals the tone marks5 + mother vowel1 - -const TText VietVowelList[] = { - 0x0041, 0x0061, 0x0102, 0x0103, 0x00c2, - 0x00e2, 0x0045, 0x0065, 0x00ca, 0x00ea, - 0x0049, 0x0069, 0x004f, 0x006f, 0x00d4, - 0x00f4, 0x01a0, 0x01a1, 0x0055, 0x0075, - 0x01af, 0x01b0, 0x0059, 0x0079 - }; - -const TText VietToneMatrix[][KNumberOfToneMarks] = - { - 0x0301, 0x0300, 0x0309, 0x0303, 0x0323, // Tone Marks - 0x00c1, 0x00c0, 0x1ea2, 0x00c3, 0x1ea0, - 0x00e1, 0x00e0, 0x1ea3, 0x00e3, 0x1ea1, - 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, - 0x1eaf, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eb7, - 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac, - 0x1ea5, 0x1ea7, 0x1ea9, 0x1eab, 0x1ead, - 0x00c9, 0x00c8, 0x1eba, 0x1ebc, 0x1eb8, - 0x00e9, 0x00e8, 0x1ebb, 0x1ebd, 0x1eb9, - 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, - 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, - 0x00cd, 0x00cc, 0x1ec8, 0x0128, 0x1eca, - 0x00ed, 0x00ec, 0x1ec9, 0x0129, 0x1ecb, - 0x00d3, 0x00d2, 0x1ece, 0x00d5, 0x1ecc, - 0x00f3, 0x00f2, 0x1ecf, 0x00f5, 0x1ecd, - 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, - 0x1ed1, 0x1ed3, 0x1ed5, 0x1ed7, 0x1ed9, - 0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, - 0x1edb, 0x1edd, 0x1edf, 0x1ee1, 0x1ee3, - 0x00da, 0x00d9, 0x1ee6, 0x0168, 0x1ee4, - 0x00fa, 0x00f9, 0x1ee7, 0x0169, 0x1ee5, - 0x1ee8, 0x1eea, 0x1eec, 0x1eee, 0x1ef0, - 0x1ee9, 0x1eeb, 0x1eed, 0x1eef, 0x1ef1, - 0x00dd, 0x1ef2, 0x1ef6, 0x1ef8, 0x1ef4, - 0x00fd, 0x1ef3, 0x1ef7, 0x1ef9, 0x1ef5 - }; - -#endif // __AKN_FEP_VIET_TABLES_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepVietnameseToneManager.h --- a/fep/aknfep/inc/AknFepVietnameseToneManager.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,174 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_VIETNAMESE_TONE_MANAGER__ -#define __AKN_FEP_VIETNAMESE_TONE_MANAGER__ - -#include -#include - -#include "AknFepManager.h" -#include "AknFepVietnameseInputTables.h" - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION - -/** - * CAknFepVietnameseToneManager class. - * This class is mounted based on CAknFepUIManagerWestern. - * - * @lib AknFep.lib - * @since 2.8 - */ -class CAknFepVietnameseToneManager : public CBase - { -private: - /** - * Construct - * - * @param aFepManager fep manager - * - */ - void ConstructL(); - - /** - * private constructor - */ - CAknFepVietnameseToneManager(); - -public: - /** - * NewL first phase construction - * - * @param aFepManager fep manager - * - */ - static CAknFepVietnameseToneManager* NewL(); - - /** - * Destructor - */ - virtual ~CAknFepVietnameseToneManager(); - -public: - /** - * Start the tone mark looping - */ - TBool StartToneMarkLooping(); - - /** - * first phase construction - * - * @param aParent parent window - * @param aPaneLayout the required layout - * - */ - TText GetVowelWithToneMark() const; - - /** - * Increase the tone mark - */ - inline void IncrementToneMark(); - - /** - * stop tone marking looping, counterpart to StartToneMarkLooping - */ - void StopToneMarkLooping(); - - /** - * Set the fep manager pointer - * - * @param aFepManager Pointer to the fep manager - * - */ - inline void SetFepManager(MAknFepManagerUIInterface* aFepManager); - - /** - * Judge if the current state is looping or not - */ - inline TBool IsLooping() const; - - /** - * Judge if the current state is looping or not - */ - inline void SetDeletedVowel(TText aDeletedVowel); - - /** - * Judge if the current state is looping or not - */ - inline TText GetDeletedVowel() const; - -private: // Data - MAknFepManagerUIInterface* iFepMan; // not own - TInt iToneIndex; // Index of tone mark list - TInt iVowelIndex; // Index of vowel list - TBool iIsLooping; // Judge if input is in looping state - TText iPrevVowel; // Prev Vowel, used for undo the backdeletion - }; - -// Inline function implementation -inline TBool CAknFepVietnameseToneManager::IsLooping() const - { - return iIsLooping; - } - -inline void CAknFepVietnameseToneManager::SetFepManager(MAknFepManagerUIInterface* aFepManager) - { - iFepMan = aFepManager; - } - -inline void CAknFepVietnameseToneManager::IncrementToneMark() - { - if (iToneIndex+1 == KNumberOfToneMarks) - iToneIndex = 0; - else - ++iToneIndex; - } - -inline void CAknFepVietnameseToneManager::SetDeletedVowel(TText aDeletedVowel) - { - iPrevVowel = aDeletedVowel; - } - -inline TText CAknFepVietnameseToneManager::GetDeletedVowel() const - { - return iPrevVowel; - } - -#endif // __AKN_FEP_VIETNAMESE_TONE_MANAGER__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepZhuyinAnalyser.h --- a/fep/aknfep/inc/AknFepZhuyinAnalyser.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Pen input related enums -* -*/ - - - - - - - - - - - -#ifndef C_AKNFEPZHUYINANALYSER_H -#define C_AKNFEPZHUYINANALYSER_H - - -#include - -class TSpellBand; -class CZhuyinAnalyserDbFeed; - -/** - * Composition no chars ui state - * It provides key event handling and internal event handling in composition no chars state - * - * @lib peninputvkbcn.lib - * @since S60 v3.2 - */ -class CAknFepZhuyinAnalyser : public CBase - { -public: - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aDb The database file for pinyin or spell - * @return The pointer point to CAknFepVkbPinyinAnalyser type object - */ - static CAknFepZhuyinAnalyser* NewL( CZhuyinAnalyserDbFeed* aDb ); - - /** - * Destructor. - * - * @since S60 v3.2 - */ - virtual ~CAknFepZhuyinAnalyser(); - - /** - * Process key event - * - * @since S60 v3.2 - * @param aData Carry information of key pressed - * @return ETrue means event was responsed, otherwise EFalse - */ - - - TBool AnalyzeL(const TDesC& aInputString); - - HBufC* LastAnalysisResult(); - -private: - CAknFepZhuyinAnalyser(); - void ConstructL( CZhuyinAnalyserDbFeed* aDb ); - TBool DetailAnalyseL(const TDesC& aInputString); - TBool FindSpell(const TDesC& aSpell, TInt& aSameLength); - TInt Compare(const TDesC& aFirst, const TDesC& aSecond, TInt& aSameLength); - -private: - TSpellBand* iParagraph; - TPtrC* iSpellLibrary; - HBufC* iLastResult; - RArray iSeperators; - CZhuyinAnalyserDbFeed* iDb; - TBool iAnalysisFlag; - }; - -#endif // C_AKNFEPZHUYINANALYSER_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepZhuyinAnalyserDb.h --- a/fep/aknfep/inc/AknFepZhuyinAnalyserDb.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,129 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Pen input related enums -* -*/ - - - - - - - - - - - -#ifndef C_AKNFEPZHUYINANALYSERDB_H -#define C_AKNFEPZHUYINANALYSERDB_H - - -#include - -enum TPinyinAnalyserDbType - { - EPinyinAnalyserTypePinyin, - EPinyinAnalyserTypeZhuyin - }; - -enum TSpellType -{ - ESpellVowel, - ESpellConsonant, - ESpellSpecialConsonnant -}; -const TUint16 KProgramSeparator = 0x002e; -/** - * Composition no chars ui state - * It provides key event handling and internal event handling in composition no chars state - * - * @lib peninputvkbcn.lib - * @since S60 v3.2 - */ -class CZhuyinAnalyserDbFeed : public CBase - { -public: - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiStateMgr The vkb ui state manager - * @param aContext The vkb layout context - * @return The pointer point to CAknFepVkbPinyinAnalyser type object - */ - static CZhuyinAnalyserDbFeed* NewL( TPinyinAnalyserDbType aType ); - - /** - * Destructor. - * - * @since S60 v3.2 - */ - virtual ~CZhuyinAnalyserDbFeed(); - - /** - * Get the Number of whole spell set. - * - * @since S60 V4.0 - */ - TInt GetSpellCount() const; - - /** - * Get the Number of whole spell set. - * - * @since S60 V4.0 - * @param The index for the spell. - */ - const TPtrC GetSpellByIndex( TInt aIndex ) const; - - /** - * Get the Number of spell elements. - * - * @since S60 V4.0 - */ - TInt GetSpellElementCount() const; - - /** - * Get the unicode number for spell element index. - * - * @since S60 V4.0 - * @param The index for the spell element. - */ - TUint16 GetSpellElementByIndex( TInt aIndex ) const; - - TBool IsNormalElement( TUint16 aCode ) const; - - TSpellType GetSpellElementType( TUint16 aCode ) const; - - TBool IsFirstElement( TUint16 aCode ) const; - - TBool IsToneMark( TUint16 aCodeFirst, TUint16 aCodeSecond ); - -private: - CZhuyinAnalyserDbFeed(); - - void ConstructL( TPinyinAnalyserDbType aType ); - -private: - TPtrC iSpellBuf; - TPtrC iSpellLenBuf; - TUint16 iSpellElemBase; - TUint16 iSpellElemLen; - TPtrC iSpellTypeBuf; - TPtrC iNoFirstElements; - }; - -#include "AknFepZhuyinAnalyserDb.inl" - -#endif //C_AKNFEPZHUYINANALYSERDB_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/AknFepZhuyinAnalyserDb.inl --- a/fep/aknfep/inc/AknFepZhuyinAnalyserDb.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: vkb control pool inline function -* -*/ - - - - - - - - - - - - -inline TInt CZhuyinAnalyserDbFeed::GetSpellCount() const - { - return iSpellLenBuf.Length(); - } - -inline const TPtrC CZhuyinAnalyserDbFeed::GetSpellByIndex( TInt aIndex ) const - { - int offset = 0; - for ( TInt i = 0; i < aIndex; ++i ) - { - offset += iSpellLenBuf[i]; - } - return iSpellBuf.Mid( offset, iSpellLenBuf[aIndex] ); - } - -inline TInt CZhuyinAnalyserDbFeed::GetSpellElementCount() const - { - return iSpellElemLen; - } - -inline TUint16 CZhuyinAnalyserDbFeed::GetSpellElementByIndex( TInt aIndex ) const - { - return iSpellElemBase + aIndex; - } - -inline TBool CZhuyinAnalyserDbFeed::IsNormalElement( TUint16 aCode ) const - { - return aCode >= iSpellElemBase && aCode < iSpellElemBase + iSpellElemLen; - } - -inline TSpellType CZhuyinAnalyserDbFeed::GetSpellElementType( TUint16 aCode ) const - { - return ( TSpellType )iSpellTypeBuf[ aCode - iSpellElemBase ]; - } - -inline TBool CZhuyinAnalyserDbFeed::IsFirstElement( TUint16 aCode ) const - { - for ( TInt i = 0; i < iNoFirstElements.Length(); i++ ) - { - if ( iNoFirstElements[i] == aCode ) - { - return EFalse; - } - } - return ETrue; - } - - - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepinputstatecandidatepinyinphrasecreation.h --- a/fep/aknfep/inc/aknfepinputstatecandidatepinyinphrasecreation.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the aknfepinputstatecandidatepinyinphrasecreation definition. -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPINPUTSTATECANDIDATEPINYINPHRASECREATION_H -#define T_AKNFEPINPUTSTATECANDIDATEPINYINPHRASECREATION_H - -#include "aknfepinputstatepinyinphrasecreationbase.h" - -class TAknFepInputStateCandidatePinyinPhraseCreation : - public TAknFepInputStatePinyinPhraseCreationBase - { -public: - - /** - * C++ default constructor - * - * @since S60 V5.0 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - * @return self object - */ - TAknFepInputStateCandidatePinyinPhraseCreation( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - -protected: - - /** - * From TAknFepInputStateCandidateBasePhrase - * Handle system key press - * - * @since S60 V5.0 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Update indicator - * - * @since S60 V5.0 - * @return none. - */ - void UpdateIndicator(); - - /** - * Handle horizontal navigation - * - * @since S60 V5.0 - * @return ETrue if can move left or right,EFalse others. - */ - TBool HandleHorizontalNavigation(TInt aKey); - - /** - * Handle vertical navigation - * - * @since S60 V5.0 - * @return ETrue if can move up or down,EFalse others. - */ - TBool HandleVerticalNavigation(TInt aKey); - - /** - * Commit Inline to the EEP ctrl - * - * @since S60 V5.0 - * @param aText the commit info. - * @return ETrue if can move up or down,EFalse others. - */ - TBool CommitInlineEEPL( const TDesC& aText ); - -private: - - /** - * KeyBackspace. - * - * @since S60 V5.0 - * @return none. - */ - void KeyBackspace(); - - /** - * Key Up,Down,Left,RightArrow Or Key CBA1,OK. - * - * @since S60 V5.0 - * @return none. - */ - void HandleKeyUpDownLeftRightArrowOrKeyCBA1OKL( - TInt aKey, - TKeyPressLength aLength ); - /** - * the state change or not - * - * @since S60 V5.0 - * @return none. - */ - void ChangeStateOrNotL(); - }; - -#endif //T_AKNFEPINPUTSTATECANDIDATEPINYINPHRASECREATION_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepinputstateminiqwertyzhuyinkeymap.h --- a/fep/aknfep/inc/aknfepinputstateminiqwertyzhuyinkeymap.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: This file contains classes of phrase creation layout data management -* -*/ - - - - - - - - - - - - -#ifndef C_AKNFEPINPUTSTATEMINIQWERTYZHUYINKEYMAP_H -#define C_AKNFEPINPUTSTATEMINIQWERTYZHUYINKEYMAP_H - -#include -#include -#include "PtiEngine.h" - -//class CAknFepInputStateMiniQwertyZhuyinKeyMap; -/** - * CAknFepInputStateMiniQwertyZhuyinKeyMap - * This class provides mini-qwerty zhuyin key map - * zhuyin key map interface management - * to the program other component - */ -/** -* CAknFepInputStateMiniQwertyZhuyinKeyMap is a static fascade interface to the mini-qwerty zhuyin key map object. -* There is at most one CAknFepInputStateMiniQwertyZhuyinKeyMap per thread. This static interface ensures that this -* fact can not be changed. -*/ -class TAknFepInputStateMiniQwertyZhuyinKeyMap - { -public: - // General public API - - /** - * Get the show keystroke for the keytype. - * - * @param aPtiEngine, ptiengine. - * @param aKey, the input keystroke. - * @param aKeystroke, the keystroke. - * @since S60 v3.2.3. - * @return None. - */ - static void GetKeyStroke( CPtiEngine* aPtiEngine, TInt& aKey, TDes& aKeystroke ); - }; - -#endif // C_AKNFEPINPUTSTATEMINIQWERTYZHUYINKEYMAP_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepinputstatepinyinphrasecreationbase.h --- a/fep/aknfep/inc/aknfepinputstatepinyinphrasecreationbase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,296 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TAknFepInputStateEntryPinyinPhraseCreation methods. - * -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPINPUTSTATEPINYINPHRASECREATIONBASE_H -#define T_AKNFEPINPUTSTATEPINYINPHRASECREATIONBASE_H - -#include //keys - -#include "AknFepUiInputStateCandidateBase.h" - -enum TMkeyReturnValue - { - EKeyStrokeNull = -2, // neans the keystroke is null - EKeyDelimiter, // means the input key is delimiter - EkeyNumber // means the input key is the number( from 2 to 9 ) - }; - -class TAknFepInputStatePinyinPhraseCreationBase : public TAknFepInputStateCandidateBase - { -public: - - /** - * C++ constructor. - * - * @since S60 v5.0. - * @return self object. - */ - TAknFepInputStatePinyinPhraseCreationBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * Add keystroke. - * - * @param aKey the input keystroke. - * @since S60 v5.0. - * @return ETrue if that the key can add to the current keystroke, EFase others. - */ - TBool AddKeystroke( TInt aKey ); - - /** - * Add tone mark. - * - * @since S60 v5.0. - * @return ETrue if that the key can add to the current keystroke, EFase others. - */ - TBool AddToneMark(); - - /** - * get the valid keystroke. - * - * @since S60 v5.0. - * @return ETrue if valid keystroke happen change , EFase others. - */ - TBool GetValidKeystroke(); - - /** - * Delete current keystroke. - * - * @since S60 v5.0. - * @return ETrue if that can be deleted, EFase others. - */ - TBool DeleteCurrentKeystroke(); - - /** - * Revert the current chinse to keystroke. - * - * @since S60 v5.0. - * @return ETrue if that can be deleted, EFase others. - */ - TBool ChineseRevertKeystroke(); - - /** - * show info to the eep ctrl. - * - * @since S60 v5.0. - * @return none. - */ - void ShowInfo(); - - /** - * set the show info warning color. - * - * @since S60 v5.0. - * @return none. - */ - void SetWarningColor(); - - /** - * Get the candidate info. - * - * @since S60 v5.0. - * @return none. - */ - void GetCandidate( TInt aSelection = 0 ); - - /** - * Change CBA. - * - * @since S60 v5.0 - * @return None. - */ - void ChangeCba(); - - /** - * Refresh the candidate info. - * - * @since S60 v5.0. - * @return none. - */ - void RefreshCandidate(); - - /** - * Update Selection - * - * @since S60 v5.0 - * @param aSelection the index of selecion. - * @return None. - */ - void RefreshUI(TInt aSelection = 0); - - /** - * clear Selection - * - * @since S60 v5.0 - * @return None. - */ - void ClearDeliberateSelection(); - - /** - * Update indicator - * - * @since S60 v5.0 - * @return None. - */ - void UpdateIndicator(); - -private: - - /** - * clear the keystroke of PtiEngine. - * - * @since S60 v5.0. - * @return none. - */ - void ClearPtiEngineKeystroke(); - - /** - * Add keystroke. - * - * @param aKey the input keystroke. - * @since S60 v5.0. - * @return ETrue if that the key can add to the current keystroke, EFase others. - */ - TBool AddKeystrokeL( TInt aKey ); - - /** - * Add tone mark. - * - * @since S60 v5.0. - * @return ETrue if that the key can add to the current keystroke, EFase others. - */ - TBool AddToneMarkL(); - - /** - * check the keystroke. - * - * @param aInput the input keystroke. - * @since S60 v5.0. - * @return ETrue if the input param is tone mark, EFalse others. - */ - TBool IsToneMark( const TDesC& aInput ); - - /** - * check the keystroke. - * - * @since S60 v5.0. - * @return EFalse if that have invalid keystroke, ETrue others. - */ - TBool CheckKeystroke(); - - /** - * get the valid keystroke. - * - * @since S60 v5.0. - * @return ETrue if that have valid keystroke than happens change, EFase others. - */ - TBool GetValidKeystrokeL(); - - /** - * get the key code. - * - * @param aKey the TPtiKey. - * @param aKeystroke the input show key. - * - * @since S60 v5.0. - * @return -2 the aKeystroke is null,-1 if the input key is delimiter, - * 0 the input key is 2 - 9, others return tome mark. - */ - TInt GetKeystrokeCode( TPtiKey& aKey, - const TDesC& aKeystroke ); - - /** - * Append the key to the ptiengine. - * - * @param aKey the TPtiKey. - * @param aKey the add the spelling to the spelling array flag. - * @since S60 v5.0. - * @return ETrue if ptiengine can append keypress, others return EFalse. - */ - TBool AppendKeyPressL( TPtiKey& aKey, TBool aAddSpellingFlag ); - - - /** - * Append the tone mark to the ptiengine. - * - * @param aToneMark the tone mark. - * - * @since S60 v5.0. - * @return ETrue if ptiengine can append tone mark, others return EFalse. - */ - TBool AppendToneMarkL( TInt& aToneMark ); - - /** - * Revert the current chinse to keystroke. - * - * @since S60 v5.0. - * @return ETrue if that can be deleted, EFase others. - */ - TBool ChineseRevertKeystrokeL(); - - /** - * check the spelling delete the phrase spelling. - * - * @since S60 v5.0. - * @return none. - */ - void CheckSpellingL( CDesCArrayFlat* aTempSpelling, CDesCArrayFlat* aAfterCheck ); - - /** - * check the tone mark and delete the phrase spelling. - * - * @param aToneMark the tone mark. - * @since S60 v5.0. - * @return ETrue if the spelling is valid, EFalse others. - */ - TBool CheckToneMark( TInt& aToneMark ); - - /** - * Get the candidate info. - * - * @since S60 v5.0. - * @return none. - */ - void GetCandidateL( TInt aSelection ); - - /** - * Change CBA. - * - * @since S60 v5.0 - * @return None. - */ - void ChangeCbaL(); - - }; - -#endif /*T_AKNFEPINPUTSTATEPINYINPHRASECREATIONBASE_H*/ - -// End of file - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepinputstatespellingpinyinphrasecreation.h --- a/fep/aknfep/inc/aknfepinputstatespellingpinyinphrasecreation.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,139 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the aknfepinputstatespellingpinyinphrasecreation definition. -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPINPUTSTATESPELLINGPINYINPHRASECREATION_H -#define T_AKNFEPINPUTSTATESPELLINGPINYINPHRASECREATION_H - -#include "aknfepinputstatepinyinphrasecreationbase.h" - -class TAknFepInputStateSpellingPinyinPhraseCreation : public TAknFepInputStatePinyinPhraseCreationBase - { -public: - - /** - * C++ construct. - * - * @since S60 v5.0. - * @return self object. - */ - TAknFepInputStateSpellingPinyinPhraseCreation( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * HandleKeyL. - * - * @since S60 v5.0. - * @param aKey the input key. - * @param TKeyPressLength the key press length. - * @return ETrue. - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Initialize State. - * - * @since S60 v5.0. - * @return none. - */ - void InitializeStateL(); - -private: - - /** - * Implicity Show Info. - * - * @since S60 v5.0 - * @return None. - */ - void ImplicityShowInfo( TBool aGetScreenCoordinates = EFalse ); - - /** - * Refresh Show Info. - * - * @since S60 v5.0 - * @return None. - */ - void RefreshShowInfo(); - - /** - * KeyBackspace Or KeyUpArrow - * - * @since S60 v5.0 - * @param TKeyPressLength the key press length. - * @return None. - */ - void HandleKeyBackspaceOrKeyUpArrow( TKeyPressLength aLength ); - - - /** - * KeyBackspace And KeyUpArrow - * - * @since S60 v5.0 - * @param TKeyPressLength the key press length. - * @return None. - */ - void HandleKeyOKOrKeyDownArrowOrKeyCBA1( TKeyPressLength aLength ); - - /** - * KeyRightArrow. - * - * @since S60 v5.0 - * @return None. - */ - void HandleKeyRightArrow(); - - /** - * KeyLeftArrow. - * - * @since S60 v5.0 - * @return None. - */ - void HandleKeyLeftArrow(); - /** - * Refresh Valid Keystroke. - * - * @since S60 v5.0 - * @return ETrue refresh ok, others EFalse. - */ - TBool RefreshValidKeystroke(); - - /** - * Refresh Valid Keystroke. - * - * @since S60 v5.0 - * @return None. - */ - void RefreshValidKeystrokeL(); - - }; - -#endif //T_AKNFEPINPUTSTATESPELLINGPINYINPHRASECREATION_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfeppeninputimeplugin.h --- a/fep/aknfep/inc/aknfeppeninputimeplugin.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,248 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Input mode plugin interac -* -*/ - - - - - - - - - - - - - -#ifndef C_AKNFEPPENINPUTIMEPLUGIN_H -#define C_AKNFEPPENINPUTIMEPLUGIN_H - -//Include -#include - -//Forward declaration -class MAknFepManagerInterface; -class MAknFepManagerUIInterface; -class CAknFepUiInterfaceMenuPane; -class CPtiEngine; - -/** UID of IME plugin this interface */ -const TInt KImePluginInterfaceId = 0x10207363; - -/** Maxlength of IME plugin name */ -const TInt KMaxImePluginName = 20; - -/** - * Pen input mode plugin interface - * - * @since S60 v3.2 - */ -class CAknFepPenInputImePlugin: public CBase - { -public: - /** - * IME plugin implemetation detail struct - * - * @since S60 v3.2 - */ - class TImePlguinImplDetail - { - public: - TInt iImplementationId; - TInt iMode; - TInt iMeritValue; - TInt iLanguage; - TBuf iDisplayName; - }; - - /** - * IME plugin weight number, if there are more than one - * IME plugin for some language, the system select the - * biggest meritvalue one. - * - * @since S60 v3.2 - */ - enum TImePluginMerit - { - EImeMerit_NotUsed = 0, - EImeMerit_Normal = 100, - EImeMerit_Preferred = 200 - }; - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CAknFepPenInputImePlugin() - { - REComSession::DestroyedImplementation(iDtor_ID_Key); - } - -public: - /** - * Pure virtual functions to implement the interface. - */ - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLanguage Language that layout UI need to support - * @param aMode Speicifed layout UI mode to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - virtual MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TLanguage aLanguage, - TInt aMode, - const TDesC8& aData, - const TBool aIsSplitView = EFalse) = 0; - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLayoutId Speicifed layout UI id to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - virtual MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TInt aLayoutId, - const TDesC8& aData) = 0; - - /** - * Activate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - virtual void Activate() = 0; - - /** - * Deactivate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - virtual void DeActivate() = 0; - - /** - * Get current IME plugin implementation ID. - * - * @since S60 v3.2 - * - * @return IME plugin implementation id. - */ - virtual TInt ImeImplId() = 0; - - /** - * Get current layout UI implementation id. - * - * @since S60 v3.2 - * - * @return None. - */ - virtual TInt LayoutUiImplId() = 0; - - /** - * Handle pen input server event. - * - * @param aEventId The event id, defined in - * @param aData The event related data. - * @since S60 v3.2 - * - * @return None. - */ - virtual TBool HandleServerEventL(TInt aEventId, const TDesC& aData) = 0; - - /** - * Get suppored layout UI modes(VKB/HWR). - * - * @since S60 v3.2 - * - * @return Supported modes. - */ - virtual TInt SupportModes(CPtiEngine* aPtiEngine, - RArray& aSupportList) const = 0; - - /** - * Get current layout UI mode. - * - * @since S60 v3.2 - * - * @return Current layout UI mode. - */ - virtual TInt CurrentMode() const = 0; - - /** - * Handle the menu command.The menu is launched by FEP - * The menu command is first passed to IME plugin, if - * this function return EFalse, FEP handles it defaultly. - * - * @param aCommandId The menu command id - * @return ETrue if IME plugin handled the command; - * EFalse otherwise. - */ - virtual TBool HandleMenuCommandL(TInt aCommandId) = 0; - - /** - * Dynamiclly update menu items during it displays. - * - * aMenuPane The menu pane pointer. - * @return None. - */ - virtual void DynInitMenuPaneL(CAknFepUiInterfaceMenuPane* aMenuPane) = 0; - -protected: - /** - * C++ default constructor. - * - * @param aServer Pen input server pointer - */ - CAknFepPenInputImePlugin() - { - } - -public: - - /** - * Destructor key. - */ - TUid iDtor_ID_Key; - -protected: - /** - * Current language. - */ - TLanguage iLanguage; - - /** - * Fep manager UI interface. Not own. - */ - MAknFepManagerUIInterface* iFepManager; - }; - -#endif //C_AKNFEPPENINPUTIMEPLUGIN_H -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuifingeritutinputstategeneric.h --- a/fep/aknfep/inc/aknfepuifingeritutinputstategeneric.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUIFingerItutInputStateChineseGeneric definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_FINGERITUT_INPUT_STATE_INIT_CHIN_GEN_H__ -#define __AKN_FEP_UI_FINGERITUT_INPUT_STATE_INIT_CHIN_GEN_H__ - -// INCLUDES -#include "AknFepUiInputStateBase.h" - -/** - * TAknFepUIFingerItutInputStateChineseGeneric state machine - * - * This class handle the key event, which is not handled by finger ITUT ui. - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepUIFingerItutInputStateChineseGeneric : public TAknFepInputStateBase//TAknFepInputStateInitialChineseMultitapBase - { - -public: - - /** - * C++ default constructor - * - * @since S60 v3.2 - * @param aOwner Pointer to finger ITUT ui manager - * @param aUIContainer Pointer to ui container - * @return None - */ - TAknFepUIFingerItutInputStateChineseGeneric( - MAknFepUIManagerStateInterface* aOwner/*, - MAknFepUICtrlContainerChinese* aUIContainer*/); - - /** - * Handle key event - * - * @since S60 v3.2 - * @param aKey Event key - * @param aLength The length of key press - * @return ETrue for handling by state machine; otherwise EFalse - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Key timer expired called by ptiengine - * - * @since S60 v3.2 - * @return none - */ - void KeyTimerExpired(); - -private: - - /** - * Set Previous ptiengine observer - * - * @since S60 v3.2 - * @param aPreObserver Pointer to previous observer - * @return none - */ - void SetPreObserver(MPtiObserver* aPreObserver); - - /** - * Get Previous ptiengine observer - * - * @since S60 v3.2 - * @return Pointer to previous observer - */ - MPtiObserver* PreObserver(); - -private: - - /** - * Previous observer - */ - MPtiObserver* iPreObserver; - - }; - -#endif //__AKN_FEP_UI_FINGERITUT_INPUT_STATE_INIT_CHIN_GEN_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputminiqwertypinyinphrasebase.h --- a/fep/aknfep/inc/aknfepuiinputminiqwertypinyinphrasebase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,542 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputMiniQwertyPinyinPhraseBase definition. -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTMINIQWERTYPINYINPHRASEBASE_H -#define T_AKNFEPUIINPUTMINIQWERTYPINYINPHRASEBASE_H - -//#include "AknFepUiInputStateChineseBase.h" -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" - -class TAknFepInputMiniQwertyPinyinPhraseBase : public TAknFepInputStateCandidateQwertyBaseChinesePhrase - { -public: - - /** - * change state flag. - */ - enum TAknFepStrokePhraseChange - { - EManualChangeState, - EAutoChangeStateFromInput, - EAutoChangeStateFromCandidate - }; - - /** - * C++ default constructor - * - * @since S60 v3.2.3 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputMiniQwertyPinyinPhraseBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer - ); - - /** - * Handle system key press event - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); - /** - * get the spell of least delimiter - * - * @since S60 v3.2.3 - * @return the spell of least delimiter - */ - TPtrC getCurrentLeastDLTSpell(); - /** - * Update input window - * - * @since S60 v3.2.3 - * @param aRefresh, if ETRue need to get the screen position, other need not. - * @return None - */ - void RefreshUI( TBool aRefresh = EFalse ); - - /** - * check the first group stroke of keystroke. - * - * @since S60 v3.2.3 - * @param None - * @return ETrue if the first group stroke is valid, others return EFalse. - */ - TBool CheckFirstGroupStroke(); - - /** - * Add phrase to the UDB. - * - * @since S60 v3.2.3. - * @param aPhraseAdd that need to be added to the UDB. - * @return None. - */ - void AddPhraseToDB( const TDesC& aPhraseAdd ); - - - /** - * Refresh candidate - * - * @since S60 v3.2.3 - * @param None - * @return none - */ - void RefreshCandidate(); - - /** - * Check key whether need repeat. - * - * @since S60 v3.2.3 - * @param aLength, the key press length. - * @return ETrue if the key need repeat, EFalse others. - */ - TBool CheckKeyNeedRepeat( TKeyPressLength aLength ); - - /** - * Commint text to EEP or editor - * - * @since S60 V3.2.3 - * @param aDes Text had been select from candidate pane - * @return ETrue if keep state, otherwise need to change to pridictive or editor - */ - TBool CommitInlineEEPL( const TDesC& aDes ); - - /** - * Update indicator - * - * @since S60 v3.2.3 - * @param None - * @return None. - */ - void UpdateIndicator(); - - /** - * Do action afer commit, change state to predictive or not. - * - * @since S60 v3.2.3 - * @param None - * @return None. - */ - void DoActionAfterCommit(); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - -private: - - /** - * The pinyin tone mark. - */ - enum PinyinToneMark - { - EToneMark1 = 1, - EToneMark2 = 2, - EToneMark3 = 3, - EToneMark4 = 4, - EToneMark5 = 5, - EOthers = -1 - }; - - /** - * Get the cursor's pos of show keystroke. - * - * @since S60 v3.2.3 - * @param None - * @return cursor's pos of show keystroke. - */ - TInt GetCursorPos(); - - /** - * Handle Enter key press. - * - * @since S60 v3.2.3 - * @param None - * @return None - */ - void HandlEnterKeyL(); - - /** - * Handle space key press. - * - * @since S60 v3.2.3 - * @param None - * @return None - */ - void HandlSpaceKeyL(); - - /** - * Handle key from candidate. - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * return None - */ - void HandleKeyFromCandidateL(TInt aKey, TKeyPressLength aLength ); - - /** - * Handle tone mark key press. - * - * @since S60 v3.2.3 - * @param None - * @return None - */ - void HandlToneMarkL(); - - /** - * Check the delimiter that wether is manual delimiter. - * - * @since S60 v3.2.3 - * @param aCount the count of keystroke except delimiter. - * @param aKeystroke that put to the Pti keystroke. - * @return ETrue if the deimiter is manual delimiter, EFalse others. - */ - TBool CheckManualDelimiter( const TInt aCount, - const TDesC& aKeystroke ); - - /** - * Analyse Pinyin spelling. - * - * @since S60 v3.2.3 - * @param aKeystroke that put to the Pti keystroke. - * @param aSpelling get the spelling from Pti. - * @param the show keystroke array. - * @return None. - */ - void AnalyseSpellingL( const TDesC& aKeystroke, - const TDesC& aSpelling, - CDesCArrayFlat* aShowKeystroke ); - - /** - * Analyse spelling after user press tone mark. - * - * @since S60 v3.2.3 - * @param None. - * @return None. - */ - void AnalyseSpellingAddToneMarkL( - TInt aI, - TInt aToneMarkCount, - CDesCArrayFlat* aKeystroke, - CDesCArrayFlat* showKeystroke ); - - /** - * Analyse spelling after user press key that is not tone mark. - * - * @since S60 v3.2.3 - * @param None. - * @return None. - */ - void AnalyseSpellingAddKeyL( - TInt& aI, - TInt aDelimterPos, - CDesCArrayFlat* aKeystroke, - CDesCArrayFlat* aShowKeystroke ); - - /** - * Analyse spelling after user press key. - * - * @since S60 v3.2.3 - * @param None. - * @return None. - */ - void AnalyseL(); - - /** - * Handle CBA1 or select event. - * - * @since S60 v3.2.3 - * @param None. - * @return None. - */ - void HandleCommitL(); - - /** - * Handle KeyBackspace event. - * - * @since S60 v3.2.3 - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - void HandleKeyBackspaceL( TKeyPressLength aLength ); - - /** - * Handle default key press event. - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - void HandleDefaultKeyL( TInt aKey ); - - /** - * Show the showinfo on the EEP ctrl. - * - * @since S60 v3.2.3. - * @param None. - * @return None. - */ - void ShowInfoOnEEPPane(); - - /** - * Show the showinfo on the candidate ctrl. - * - * @since S60 v3.2.3. - * @param None. - * @return None. - */ - void ShowInfoOnCandidatePane(); - - /** - * get the show keystroke. - * - * @since S60 v3.2.3. - * @param aKey, the input keystroke. - * @param aKeystroke the show keystroke. - * @return None. - */ - void GetShowKeystroke( TInt aKey, TDes& aKeystroke ); - - /** - * Handle horizontal navigation. - * - * @since S60 v3.2.3. - * @param aKey the input keystroke. - * @return ETrue if high light can move, EFase others. - */ - TBool HandleHorizontalNavigation( TInt aKey ); - - /** - * Add keystroke. - * - * @since S60 v3.2.3. - * @param aKey the input keystroke. - * @return ETrue if that the key can add to the current keystroke, EFase others. - */ - TBool AddKeystrokeL( TInt aKey ); - - /** - * Add tone mark. - * - * @since S60 v3.2.3. - * @param None. - * @return ETrue if that the key can add to the current keystroke, EFase others. - */ - TBool AddToneMarkL(); - - /** - * Get the candidate info. - * - * @since S60 v3.2.3. - * @param None. - * @return none. - */ - void GetCandidateL(); - - /** - * Change CBA. - * - * @since S60 v3.2.3 - * @param None. - * @return None. - */ - void ChangeCbaL(); - - /** - * Delete more keystroke than max leng. - * - * @since S60 v3.2.3. - * @param None. - * @return None. - */ - void DeleteMoreKeystrokeL(); - - /** - * Delete current keystroke. - * - * @since S60 v3.2.3. - * @param None. - * @return ETrue if that can be deleted, EFase others. - */ - TBool DeleteKeystrokeL(); - - /** - * Clear Keystroke of PtiEngine. - * - * @since S60 v3.2.3. - * @param None. - * @return None. - */ - void ClearPtiEngineKeystroke(); - - /** - * get the key code. - * - * @since S60 v3.2.3 - * @param aKey, the keycode. - * @param aKeystroke, the show keystroke. - * @return none. - */ - void GetKeystrokeCode( TInt& aKey, const TDesC& aKeystroke ); - - /** - * Revert the phrase to keystroke. - * - * @since S60 v3.2.3 - * @param None. - * @return none. - */ - void RevertPhraseToKeystrokeL(); - - /** - * set warning color. - * - * @since S60 v3.2.3. - * @param aCount, the count of key. - * @param aIndex, the index of key. - * @param aPhraseCount, the count of phrase. - * @param aToneMark, the tone mark. - * @param aValid, the key whether is valid. - * @param aShowKeystroke, the show key stroke array. - * - * @return none. - */ - void SetWarningColor( - TInt aCount, - TInt aIndex, - TInt aI, - TInt aPhraseCount, - TInt aToneMark, - TBool aValid, - CDesCArrayFlat* aShowKeystroke ); - - /** - * set warning color. - * - * @since S60 v3.2.3. - * @param None. - * @return none. - */ - void SetWarningColor(); - - /** - * Move the cursor to Left. - * - * @since S60 v3.2.3. - * @param None. - * @return none. - */ - void MoveCursorLeft(); - - /** - * Move the cursor to Right. - * - * @since S60 v3.2.3. - * @param None. - * @return none. - */ - void MoveCursorRight(); - - /** - * Check the special keystroke( i,u,v ). - * - * @since S60 v3.2.3. - * @param aKeystroke the key code. - * @return ETrue if the param is special key, EFalse others. - */ - TBool CheckSpecialKey( const TInt aKeystroke ); - - /** - * Check the delimiter of spelling. - * - * @since S60 v3.2.3. - * @param aKeystroke the keystroke. - * @return ETrue if the param is delimiter, EFalse others. - */ - TBool CheckSpellingDLT( const TDesC& aKeystroke ); - - /** - * Get pinyin tone mark. - * - * @since S60 v3.2.3. - * @param aKeystroke,The tone mark. - * @return pinyin tone mark. - */ - TInt ToneMark( const TDesC& aKeystroke ); - - /** - * Check the spelling after add tone mark to the PTI. - * - * @since S60 v3.2.3. - * @param aToneMark,The tone mark. - * @return ETue,if the splling is not phrase spelling,EFalse others. - */ - TBool CheckSpellingAddToneMarkToPTIL( const TInt aToneMark ); - - /** - * Check the spelling after add key to the PTI. - * - * @since S60 v3.2.3. - * @param aToneMark,The tone mark. - * @return o,if the splling is not phrase spelling,other the position of delimiter. - */ - TInt CheckSpellingAddKeyToPTIL( const TDesC& aKeystroke ); - - /** - * check the all group stroke of keystroke. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue if the first group stroke is valid, others return EFalse. - */ - TBool CheckAllGroupStroke(); - - /** - * Do action afer commit, change state to predictive or not. - * - * @since S60 v3.2.3 - * @param None. - * @return None. - */ - void DoActionAfterCommitL(); - - }; - -#endif //T_AKNFEPUIINPUTMINIQWERTYPINYINPHRASEBASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputminiqwertystrokephrasebase.h --- a/fep/aknfep/inc/aknfepuiinputminiqwertystrokephrasebase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,342 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputMiniQwertyStrokePhraseBase definition. -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTMINIQWERTYSTROKEPHRASEBASE_H -#define T_AKNFEPUIINPUTMINIQWERTYSTROKEPHRASEBASE_H - -//#include "AknFepUiInputStateChineseBase.h" -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" - -/** - * key struct. - * @since S60 v3.2.3 - */ - -class TAknFepInputMiniQwertyStrokePhraseBase : public TAknFepInputStateCandidateQwertyBaseChinesePhrase - { -public: - /** - * change state flag. - */ - enum TAknFepStrokePhraseChange - { - EManualChangeState, - EAutoChangeStateFromInput, - EAutoChangeStateFromCandidate - }; - - /** - * C++ default constructor - * - * @since S60 v3.2.3 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputMiniQwertyStrokePhraseBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer - ); - - /** - * Handle system key press event - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); - - /** - * Update input window - * - * @since S60 v3.2.3 - * @param aRefresh, if ETRue need to get the screen position, other need not. - * @return None - */ - void RefreshUI(); - - /** - * check the first group stroke of keystroke. - * - * @since S60 v3.2.3 - * @return ETrue if the first group stroke is valid, others return EFalse. - */ - TBool CheckFirstGroupStroke(); - - /** - * Add phrase to the UDB. - * - * @param aPhraseAdd that need to be added to the UDB. - * @since S60 v3.2.3. - * @return None. - */ - void AddPhraseToDB( const TDesC& aPhraseAdd ); - - - /** - * Refresh candidate - * - * @since S60 v3.2.3 - * @return none - */ - void RefreshCandidate(); - - /** - * Check key whether need repeat. - * - * @since S60 v3.2.3 - * @return ETrue if the key need repeat, EFalse others. - */ - TBool CheckKeyNeedRepeat( TKeyPressLength aLength ); - - /** - * Commint text to EEP or editor - * - * @since S60 V3.2.3 - * @param aDes Text had been select from candidate pane - * @return ETrue if keep state, otherwise need to change to pridictive or editor - */ - TBool CommitInlineEEPL( const TDesC& aDes ); - - /** - * Update indicator - * - * @since S60 v3.2.3 - * @return None. - */ - void UpdateIndicator(); - - /** - * Do action afer commit, change state to predictive or not. - * - * @since S60 v3.2.3 - * @return None. - */ - void DoActionAfterCommit(); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); -private: - - /** - * Handle key from candidate. - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * return None - */ - void HandleKeyFromCandidateL(TInt aKey, TKeyPressLength aLength ); - - /** - * Handle CBA1 or select event. - * - * @since S60 v3.2.3 - * @return None. - */ - void HandleCommitL( TKeyPressLength aLength ); - - /** - * Auto change state. - * - * @since S60 v3.2.3 - * @return Etru auto change state,ohters don't change state. - */ - TBool HandleAutoChangeState(); - - /** - * Handle KeyBackspace event. - * - * @param aLength Key press length - * @since S60 v3.2.3 - * @return ETrue if handle, otherwise this class do not handle this key - */ - void HandleKeyBackspaceL( TKeyPressLength aLength ); - - /** - * Handle default event. - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleDefaultL( TInt aKey, TKeyPressLength aLength ); - - /** - * Handle default key press event. - * - * @since S60 v3.2.3 - * @param aKey System key - * @return none. - */ - void HandleDefaultKeyL( TInt aKey ); - - /** - * Show the showinfo on the EEP ctrl. - * - * @since S60 v3.2.3. - * @return None. - */ - void ShowInfoOnEEPPane(); - - /** - * Show the showinfo on the candidate ctrl. - * - * @since S60 v3.2.3. - * @return None. - */ - void ShowInfoOnCandidatePane(); - - /** - * Handle horizontal navigation. - * - * @param aKey the input keystroke. - * @since S60 v3.2.3. - * @return ETrue if high light can move, EFase others. - */ - TBool HandleHorizontalNavigation( TInt aKey ); - - /** - * Add keystroke. - * - * @param aKey the input keystroke. - * @since S60 v3.2.3. - * @return ETrue if that the key can add to the current keystroke, EFase others. - */ - TBool AddKeystrokeL( TInt aKey ); - - /** - * Get the candidate info. - * - * @since S60 v3.2.3. - * @return none. - */ - void GetCandidateL(); - - /** - * Change CBA. - * - * @since S60 v3.2.3 - * @return None. - */ - void ChangeCbaL(); - - /** - * Delete current keystroke. - * - * @since S60 v3.2.3. - * @return ETrue if that can be deleted, EFase others. - */ - TBool DeleteKeystroke(); - - /** - * Clear Keystroke of PtiEngine. - * - * @since S60 v3.2.3 - * @return None. - */ - void ClearPtiEngineKeystroke(); - - /** - * get the show keystroke. - * - * @param aKey, the input keystroke. - * @param aKeystroke the show keystroke. - * @since S60 v3.2.3. - * @return None. - */ - void GetShowKeystroke( TInt aKey, TDes& aKeystroke ); - - /** - * Revert the phrase to keystroke. - * @since S60 v3.2.3 - * @return none. - */ - void RevertPhraseToKeystrokeL(); - - /** - * set warning color. - * - * @since S60 v3.2.3. - * @return none. - */ - void SetWarningColor(); - - /** - * Move the cursor to Left. - * - * @since S60 v3.2.3. - * @return ETrue if cursor can be moved, other EFalse. - */ - TBool MoveCursorLeft(); - - /** - * Move the cursor to Right. - * - * @since S60 v3.2.3. - * @return ETrue if cursor can be moved, other EFalse. - */ - TBool MoveCursorRight(); - - /** - * check the all group stroke of keystroke. - * - * @since S60 v3.2.3 - * @return ETrue if the first group stroke is valid, others return EFalse. - */ - TBool CheckAllGroupStroke(); - - /** - * Do action afer commit, change state to predictive or not. - * - * @since S60 v3.2.3 - * @return None. - */ - void DoActionAfterCommitL(); - - /** - * check the delimeter - * @ aKeystroke the key stroke - * @@since S60 v3.2.3 - * @return ETrue if the key stoke is the delimeter ,otherwise return EFalse . - */ - TBool CheckSpellingDLT( const TDesC& aKeystroke ); - - }; - -#endif //T_AKNFEPUIINPUTMINIQWERTYSTROKEPHRASEBASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputminiqwertyzhuyinphrasebase.h --- a/fep/aknfep/inc/aknfepuiinputminiqwertyzhuyinphrasebase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,184 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputMiniQwertyZhuyinPhraseBase definition. -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTMINIQWERTYZHUYINPHRASEBASE_H -#define T_AKNFEPUIINPUTMINIQWERTYZHUYINPHRASEBASE_H - -//#include "AknFepUiInputStateChineseBase.h" -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" - -class TAknFepInputMiniQwertyZhuyinPhraseBase : public TAknFepInputStateCandidateQwertyBaseChinesePhrase - { -public: - - /** - * C++ default constructor - * - * @since S60 v3.2.3 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputMiniQwertyZhuyinPhraseBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer - ); - - /** - * Handle system key press event - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); - - /** - * Get the valid keystroke. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue,if the valid keystroke is not null, EFalse otehrs. - */ - TBool GetValidKeystroke(); - - /** - * Refresh editing pane - * - * @since S60 v3.2.3 - * @param None. - * @return None - */ - void RefreshEditPane(); - - /** - * Refresh spelling pane - * - * @since S60 v3.2.3 - * @param aClearSelection ETrue if need to clear current selection, otherwise EFalse. - * @return None - */ - void RefreshSpellingPane( TBool aClearSelection = EFalse ); - - /** - * Refresh candidate - * - * @since S60 v3.2.3 - * @param aClearSelection, if ETrue then clear selection of popup, others EFalse. - * @return none - */ - void RefreshCandidatePane( TBool aClearSelection = EFalse ); - - /** - * Get candidate info. - * - * @since S60 v3.2.3 - * @param aClearSelection, if ETrue then clear selection of popup, others EFalse. - * @return none - */ - void GetCandidate( TBool aClearSelection = EFalse ); - - /** - * Update indicator - * - * @since S60 v3.2.3 - * @param None - * @return None. - */ - void UpdateIndicator(); - - /** - * Change CBA. - * - * @since S60 v3.2.3 - * @param None. - * @return None. - */ - void ChangeCbaL(); - - /** - * clear Selection - * - * @since S60 v5.0 - * @return None. - */ - void ClearDeliberateSelection(); - -private: - - /** - * clear the ptiengine keystroke. - * - * @since S60 v3.2.3 - * @param None - * @return None - */ - void ClearPtiEngineKeystroke(); - - /** - * Check the spelling whether is phrase spelling. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue,if one of spelling of PtiEngine is not phrase spelling, - * EFalse others. - */ - TBool CheckPhraseSpellingL(); - - /** - * Get the valid keystroke. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue,if the valid keystroke is not null, EFalse otehrs. - */ - TBool GetValidKeystrokeL(); - - /** - * Check whether tone mark border upon. - * - * @since S60 v3.2.3 - * @param None. - * @return ETrue,if the tone mark border upon, EFalse otehrs. - */ - TBool CheckToneMarkBorderUpon(); - - /** - * Get candidate info. - * - * @since S60 v3.2.3 - * @param aClearSelection, if ETrue then clear selection of popup, others EFalse. - * @return none - */ - void GetCandidateL( TBool aClearSelection = EFalse ); - }; - -#endif //T_AKNFEPUIINPUTMINIQWERTYZHUYINPHRASEBASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputstateentryhalfqwertyphrase.h --- a/fep/aknfep/inc/aknfepuiinputstateentryhalfqwertyphrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,196 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TAknFepInputStateEntryHalfQwerty definition. - * -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPINPUTSTATEENTRYHALFQWERTYPINYINPHRASE_H -#define T_AKNFEPINPUTSTATEENTRYHALFQWERTYPINYINPHRASE_H - -#include "AknFepUiInputStateEntryQwertyBaseChinesePhrase.h" -#include "aknfepuiinputstateminiqwertystrokephrase.h" -#include "AknFepUiInputStateEntryZhuyinPhrase.h" -#include "AknFepUiInputStateChineseBase.h" - -// the entry of the pinyin inputmethod -class TAknFepInputStateEntryHalfQwertyPinyinPhrase : -public TAknFepInputStateEntryQwertyBaseChinesePhrase - { -public: - /** - * C++ default constructor - * - * @since S60 v3.2.3 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateEntryHalfQwertyPinyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ); - /** - * Handle system key press event - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); -private: - /** - * update the selection - * - * @since S60 v3.2.3 - */ - void DeliberatelyUpdateSelection( ); - /** - * update the selection - * - * @since S60 v3.2.3 - */ - void ImplicitlyUpdateSelection( ); - /** - * clear the deliberate selection - * - * @since S60 v3.2.3 - */ - void ClearDeliberateSelection( ); - /** - * refresh the ui - * - * @since S60 v3.2.3 - */ - void RefreshUI( TInt aSelection ); - /** - * change the cba - * - * @since S60 v3.2.3 - */ - void InitializeStateL( ); - /** - * update the indicator - * - * @since S60 v3.2.3 - */ - void UpdateIndicator( ); - /** - * to check whether the key stroke is a character key or not - * - * @since S60 v3.2.3 - * @param aKey System key - * @return ETrue if it is a character key , otherwise not - */ - TBool IsCharacterKey( const TInt aKey ); - }; - -// the entry state of the stroke inputmethod -class TAknFepInputStateEntryHalfQwertyStrokePhrase : -public TAknFepInputStateEntryQwertyBaseChinesePhrase - { -public: - /** - * C++ default constructor - * - * @since S60 v3.2.3 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateEntryHalfQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ); - /** - * Handle system key press event - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); -private: - /** - * change the cba - * - * @since S60 v3.2.3 - */ - void InitializeStateL( ); - /** - * to check whether the key stroke is a character key or not - * - * @since S60 v3.2.3 - * @param aKey System key - * @return ETrue if it is a character key , otherwise not - */ - TBool IsCharacterKey( const TInt aKey ); - - /** - * update the indicator - * - * @since S60 v3.2.3 - */ - void UpdateIndicator( ); - - }; -// the zhuyin inputmethod entry state -class TAknFepInputStateEntryHalfQwertyZhuyinPhrase : -public TAknFepInputStateEntryQwertyBaseChinesePhrase - { -public: - /** - * C++ default constructor - * - * @since S60 v3.2.3 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateEntryHalfQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ); - /** - * Handle system key press event - * - * @since S60 v3.2.3 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); - -public: - // Functions from MPtiObserver interface - void KeyTimerExpired( ); - -private: - /** - * update the indicator - * - * @since S60 v3.2.3 - */ - void UpdateIndicator( ); - }; -#endif T_AKNFEPINPUTSTATEENTRYHALFQWERTYPINYINPHRASE_H - -//end of the file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputstateentrypinyinphrasecreation.h --- a/fep/aknfep/inc/aknfepuiinputstateentrypinyinphrasecreation.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,158 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryPinyinPhraseCreation definition. -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATEENTRYPINYINPHRASECREATION_H -#define T_AKNFEPUIINPUTSTATEENTRYPINYINPHRASECREATION_H - - -#include "aknfepinputstatepinyinphrasecreationbase.h" - - -class TAknFepInputStateEntryPinyinPhraseCreation : public TAknFepInputStatePinyinPhraseCreationBase - { -public: - - /** - * C++ construct. - * - * @since S60 v5.0. - * @return self object. - */ - TAknFepInputStateEntryPinyinPhraseCreation( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * HandleKeyL. - * - * @param aKey input key. - * @param aLength TKeyPressLength. - * @since S60 v5.0. - * @return ETrue. - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); - - /** - * Initialize State. - * - * @since S60 v5.0. - * @return none. - */ - void InitializeState(); - -private: - - /** - * Implicity show the show info. - * - * @since S60 v5.0. - * @return none. - */ - void ImplicityShowInfo( TBool aGetScreenCoordinates = EFalse ); - - /** - * Implicity show the show info. - * - * @since S60 v5.0. - * @return none. - */ - void ImplicityShowInfoL( TBool aGetScreenCoordinates ); - - /** - * EKeyBackspace. - * - * @param aLength TKeyPressLength. - * @since S60 v5.0 - * @return None. - */ - void HandleKeyBackspace( TKeyPressLength aLength ); - - /** - * EKeyOK And EKeyCBA1L. - * - * @since S60 v5.0 - * @return None. - */ - void HandleKeyOKAndKeyCBA1L(); - - /** - * others key input. - * - * @param aKey input key. - * @since S60 v5.0 - * @return None. - */ - void HandleOthersKey( TInt aKey ); - - /** - * Judge that cursor can move. - * - * @since S60 v5.0 - * @return ETrue the cursor can move, EFalse the cursor can't move. - */ - TBool IsMoveCursor(); - - /** - * move cursor to left. - * - * @since S60 v5.0 - * @return none. - */ - void MoveCursorToLeft(); - - /** - * move cursor to left. - * - * @since S60 v5.0 - * @return none. - */ - void MoveCursorToRight(); - - /** - * Add phrase to DB. - * - * @since S60 v5.0 - * @param aPhraseAdd the phrase to be added to DB - * @return ETrue if the phrase is added to DB successfully, otherwise EFalse. - */ - TBool AddPhraseToDB( const TDesC& aPhraseAdd ); - - /** - * Try to close UI. - * - * @since S60 v5.0 - * @return ETrue close the UI. - */ - TBool TryCloseUI( TKeyPressLength aLength ); - - }; - -#endif //T_AKNFEPUIINPUTSTATEENTRYPINYINPHRASECREATION_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputstateentryzhuyinphrasecreation.h --- a/fep/aknfep/inc/aknfepuiinputstateentryzhuyinphrasecreation.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryZhuyinPhraseCreation methods. -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPINPUTSTATEENTRYZHUYINPHRASECREATION_H -#define T_AKNFEPINPUTSTATEENTRYZHUYINPHRASECREATION_H - - -//#include "AknFepUIInputStateChineseBase.h" -#include "aknfepuiinputstatezhuyinphrasecreationbase.h" - -class TAknFepInputStateEntryZhuyinPhraseCreation : public TAknFepInputStateZhuyinPhraseCreationBase - { -public: - /** - * C++ constructor. - * - * @since S60 v5.0. - * @param fepuimanagerstate interface - * @param uicontainer - * @return self object. - */ - TAknFepInputStateEntryZhuyinPhraseCreation( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * Handle Key function. - * - * @since S60 v5.0. - * - * @param the user input key. - * @param TKeyPressLength the key length. - * @return ETrue if handle key is dealed with, EFalse others. - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Initialize State. - * - * @since S60 v5.0. - * @return None. - */ - void InitializeState(); - -private: - - /** - * Set the show info high light. - * - * @since S60 v5.0. - * @return none. - */ - void SetHighLight(); - - /** - * Set the show info high light. - * - * @since S60 v5.0. - * @return none. - */ - void SetHighLightMoreThanMax(); - - /** - * move the index of the keystroke left. - * - * @since S60 v5.0. - * @return ETrue if move ok. - */ - TBool MoveIndexOfKeystrokeLeft(); - - /** - * move the index of the keystroke right. - * - * @since S60 v5.0. - * @return ETrue if move ok. - */ - TBool MoveIndexOfKeystrokeRight(); - - /** - * Add phrase to DB. - * - * @since S60 v5.0. - * @param aPhraseAdd the phrase to be added to DB - * @return ETrue if the phrase is added to DB successfully, otherwise EFalse. - */ - TBool AddPhraseToDB( const TDesC& aPhraseAdd ); - - /** - * Check auto change state. - * - * @since S60 v5.0. - * @return ETrue if need to auto change state,EFalse others. - */ - TBool AutoChangeState(); - - /** - * Check high light. - * - * @since S60 v5.0. - * @return ETrue if the hight light,EFalse others. - */ - TBool CheckHighLightL(); - - }; - -#endif //T_AKNFEPINPUTSTATEENTRYZHUYINPHRASECREATION_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputstateindicphoneticqwerty.h --- a/fep/aknfep/inc/aknfepuiinputstateindicphoneticqwerty.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* -* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateIndicPhoneticQwerty definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INDIC_PHONETIC_QWERTY_H__ -#define __AKN_FEP_UI_INPUT_STATE_INDIC_PHONETIC_QWERTY_H__ - -#include -#include -class TAknFepInputStateIndicPhoneticQwerty : public TAknFepInputStateQwerty - { -public: - /** - * Class Constructor. - * - * @since S60 4.0 - * @param UI Manager. - * Engine. - * @return Nothing - */ - - TAknFepInputStateIndicPhoneticQwerty(MAknFepUIManagerStateInterface* aOwner); - - /** - * Interface fuction from MAknFepManagerInterface, Used for handling events passes by FEP manager. - * - * @since S60 4.0 - * @param aKey- key code of the event. - * @param aLength- Signifies short key press or long key press. - * Engine. - * @return returns EKeyWasConsumed if the key event is handled else EKeyWasNotConsumed - */ - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Removes Halant added by Phonetic PtiENgine for North Indian Languages. - * - * @since S60 4.0 - * @param aLanguage- Current Phonetic input language is passed to this function. - * Engine. - * @return Nothing - */ - - void RemoveHalantL(TLanguage aLanguage); - - /** - * Checks wheather the current Phonetic Input Language follows North Indian style of editing. This is necessary for removal - * of Halant. - * @since S60 4.0 - * @param aLanguage- Current Phonetic input language is passed to this function. - * Engine. - * @return Returns True if the current language comes under North Indian style of writting. - */ - TBool IsToRemoveHalantForLanguage(TInt aLanguage); - -private: - - /** - * Checks wheather key code is valid QWERTY key for Phonetic FEP. - * - * @since S60 4.0 - * @param aKey- key code of the event. - * Engine. - * @return Returns ETrue if the key is valid Phonetic QWERTY Key. - */ - - TBool IsQwertyKey(const TInt aKey); - - }; - -#endif __AKN_FEP_UI_INPUT_STATE_INDIC_PHONETIC_QWERTY_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputstateinitialindicphoneticmultitap.h --- a/fep/aknfep/inc/aknfepuiinputstateinitialindicphoneticmultitap.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateInitialIndicPhoneticMultitap definition. -* -*/ - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_INIT_INDIC_PHONETIC_MULTITAP_H__ -#define __AKN_FEP_UI_INPUT_STATE_INIT_INDIC_PHONETIC_MULTITAP_H__ - -#include "AknFepUIInputStateInitialMultitapBase.h" -/** -* This class handles the multitap input for Indic languages. -* @lib avkonfep.dll -* @since Series 60 3.1 -*/ -class TAknFepInputStateInitialIndicPhoneticMultitap : public TAknFepInputStateInitialMultitapBase - { -public: - /** - * - * Constructor for TAknFepInputStateInitialIndicPhoneticMultitap. - * @since 5.0 - * @return - */ - TAknFepInputStateInitialIndicPhoneticMultitap(MAknFepUIManagerStateInterface* aOwner, - TInt aLanguage); -public: //from TAknFepInputStateBase - /** - * - * Returns the virama character depending on the input language. - * @since 5.0 - * @return Etrue if the Key is handled. - */ - - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); -#ifdef RD_HINDI_PHONETIC_INPUT - /** - * - * Populates iPhoneticLatinChar to aChar. - * @since 5.0 - * @return None. - */ - virtual void GetPhoneticLatinChar(TChar& aChar)const; -#endif - -public: //from MptiObserver - /** - * - * Gets called when PTI Engine's timer expires. - * @since 5.0 - * @return - */ - void KeyTimerExpired(); - /** - * Transliterate the current inputted character to language specific character - * of Halant. - * @since 5.0 - * @param Null - * @return Null - */ -private: - void TransliterateFromLatinL(); - /** - * Removes Halant added by Phonetic PtiENgine for North Indian Languages. - * - * @since 5.0 - * @param aLanguage- Current Phonetic input language is passed to this function. - * Engine. - * @return Nothing - */ - void RemoveHalantL(TLanguage aLanguage); - - /** - * Checks wheather the current Phonetic Input Language follows North Indian style of editing. This is necessary for removal - * of Halant. - * @since 5.0 - * @param aLanguage- Current Phonetic input language is passed to this function. - * Engine. - * @return Returns True if the current language comes under North Indian style of writting. - */ - TBool IsToRemoveHalantForLanguage(TInt aLanguage); - /** - * Checks if the character has phonetic equivallent to be Transliterated - * of Halant. - * @since 5.0 - * @param aChar character to be checked - * @return returns ETrue if the character can be transliterated - */ - inline TBool IsToTransliterate(TChar& aChar); - /** - * Checks if the current transliterated character can be inputted as per the language rule, if not then Question mark is inputted - * of Halant. - * @since 5.0 - * @param aChar character to be validated for inputting - * @return ETrue if the character is allowed - */ - TBool ValidatePhoneticInputL(const TDes& aBuf, TLanguage aLanguage); - /** - * Checks if the current inputted character is a fallback rendered character - * of Halant. - * @since 5.0 - * @param aChar Character to be checked - * @return ETrue is the character is a fallback rendered character - */ - TBool IsInvalidPhoneticCharacter( TUint aChar, TLanguage aLanguage ); - /** - * Handels the key timer expiry - * of Halant. - * @since 5.0 - * @param Null - * @return Null - */ - void HandleKeyTimerExpiryL(); - }; - - -#endif //__AKN_FEP_UI_INPUT_STATE_INIT_INDIC_MULTITAP_H__ - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputstateminiqwertystrokephrase.h --- a/fep/aknfep/inc/aknfepuiinputstateminiqwertystrokephrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,160 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryMiniQwertyStrokePhrase, -* TAknFepInputStateEditingMiniQwertyStrokePhrase, -* TAknFepUiInputStateCandidateMiniQwertyStrokePhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_INPUT_STATE_MINIQWERTY_STROKEPHRASECREATION_H__ -#define __AKN_FEP_UI_INPUT_STATE_MINIQWERTY_STROKEPHRASECREATION_H__ -//#include "aknfepuiinputminiqwertystrokephrasebase.h" -#include "aknfepuiinputminiqwertystrokephrasebase.h" -/** - * TAknFepInputStateEntryMiniQwertyStrokePhrase class. - * - * Implementation of Stroke phrase entry state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepInputStateEntryMiniQwertyStrokePhrase: public TAknFepInputMiniQwertyStrokePhraseBase - { -public: - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateEntryMiniQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ); - /** - * From TAknFepInputStateCandidateBasePhrase - * Handle system key press - * - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - -/** - * TAknFepInputStateEditingMiniQwertyStrokePhrase class. - * - * Implementation of Stroke phrase editing state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepInputStateEditingMiniQwertyStrokePhrase: public TAknFepInputMiniQwertyStrokePhraseBase - { -public: - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateEditingMiniQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ); - /** - * From TAknFepInputStateCandidateBasePhrase - * Handle system key press - * - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey ,TKeyPressLength alength ); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - }; - -/** - * TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase class. - * - * Implementation of Pinyin and Stroke phrase candidate state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepUiInputStateCandidateMiniQwertyStrokePhrase: public TAknFepInputMiniQwertyStrokePhraseBase - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepUiInputStateCandidateMiniQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); -protected: - - /** - * From TAknFepInputStateCandidateBasePhrase - * Handle system key press - * - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - }; - -#endif /*__AKN_FEP_UI_INPUT_STATE_MINIQWERTY_STROKEPHRASECREATION_H__*/ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputstateminiqwertyzhuyinphrase.h --- a/fep/aknfep/inc/aknfepuiinputstateminiqwertyzhuyinphrase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,293 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryMiniQwertyZhuyinPhrase, -* TAknFepInputStateEditingMiniQwertyZhuyinPhrase, -* TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase definition. -* -*/ - - - - - - - - - - - - -#ifndef AKNFEPUIINPUTSTATEMINIQWERTYZHUYINPHRASE_H_ -#define AKNFEPUIINPUTSTATEMINIQWERTYZHUYINPHRASE_H_ - -#include "aknfepuiinputminiqwertyzhuyinphrasebase.h" - -/** - * TAknFepInputStateEntryMiniQwertyZhuyinPhrase class. - * - * Implementation of Zhuyin phrase editing state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ - -class TAknFepInputStateEditingMiniQwertyZhuyinPhrase : public TAknFepInputMiniQwertyZhuyinPhraseBase - { -public: - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateEditingMiniQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ); - - /** - * From TAknFepInputStateCandidateBasePhrase - * Handle system key press - * - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - - /** - * Add keystroke. - * - * @since S60 v3.2.3. - * @param aKey the input keystroke. - * @return ETrue if that the key can add to the current keystroke, EFase others. - */ - TBool AddKeystrokeL( TInt aKey ); - - /** - * Revert the phrase to keystroke. - * - * @since S60 v3.2.3. - * @return None. - */ - void RevertPhraseToKeystrokeL(); - - /** - * Add phrase to DB. - * - * @since S60 v3.2.3. - * @param aPhraseAdd The phrase to be added - * @return None. - */ - void AddPhraseToDB( const TDesC& aPhraseAdd ); - - /** - * Move the cursor to Left. - * - * @since S60 v3.2.3. - * @return ETrue if cursor can be moved, other EFalse. - */ - TBool MoveCursorLeft(); - - /** - * Move the cursor to Right. - * - * @since S60 v3.2.3. - * @return ETrue if cursor can be moved, other EFalse. - */ - TBool MoveCursorRight(); - - /** - * Handle Key Backspace - * - * @since S60 v3.2.3. - * @return None. - */ - void HandleKeyBackspaceL( TKeyPressLength aLength ); - - /** - * Commit content - * - * @since S60 v3.2.3. - * param aAddUDB ETrue if the content need to be added to UDB, otherwise EFalse. - * @return None. - */ - void CommitContentL( TBool aAddUDB ); - - /** - * Handle commit action - * - * @since S60 v3.2.3. - * @return None. - */ - void HandleCommitL(); - - /** - * Refresh UI if necessary - * - * @since S60 v3.2.3. - * @return None. - */ - void RefreshUI(); - - /** - * Refresh UI if necessary - * - * @since S60 v3.2.3. - * @return None. - */ - void ImplicityShowInfo( TBool aGetScreenCoordinates ); - - /** - * Refresh UI if necessary - * - * @since S60 v3.2.3. - * @return None. - */ - void ImplicityShowInfoL( TBool aGetScreenCoordinates ); - - /** - * Show EEP Info - * - * @since S60 v3.2.3. - * @return None. - */ - void ShowEEPInfo(); - }; - -/** - * TAknFepInputStateSpellingMiniQwertyZhuyin class. - * - * Implementation of Zhuyin phrase spelling selection state - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class TAknFepInputStateSpellingMiniQwertyZhuyin: public TAknFepInputMiniQwertyZhuyinPhraseBase - { -public: - - /** - * C++ default constructor - * - * @since S60 V3.2 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateSpellingMiniQwertyZhuyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - -private: - /** - * From TAknFepInputStateCandidateBasePhrase - * Handle system key press - * - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Refresh UI if necessary - * - * @since S60 v3.2.3. - * @return None. - */ - void RefreshUI(); - - /** - * Refresh vaild key stroke length - * - * @since S60 v3.2.3. - * @return None. - */ - void RefreshVaildKeyStroke(); - }; - -class TAknFepInputStateCanindateSelectingMiniQwertyZhuyin : public TAknFepInputMiniQwertyZhuyinPhraseBase - { -public: - /** - * C++ default constructor - * - * @since S60 v3.2.3 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateCanindateSelectingMiniQwertyZhuyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer - ); - /** - * From TAknFepInputStateMiniQwertyZhuyinPhraseCreationBase - * Handle system key press - * - * @since S60 v3.2 - * @param aKey System key event - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength); - - /** - * Handling Command events. - * This Method is called by CAknFepUIManagerJapanese. - * - * @param aCommandId Command ID value - */ - void HandleCommandL( TInt aCommandId ); - - /** - * commit the selected character into the editor pane - * @since S60 v3.2 - * @return none - */ - void CommitCandidateL(); - - /** - * Check the select candidate numeric key is valid or not - * @since S60 v3.2 - * @return ETure if the select number is valid ,others is EFalse - */ - TBool SelectCandidate( TInt aKey ); - - /** - * the postion of the first tonemark appeared - * @since S60 v3.2 - */ - TInt GetIndexOfToneMark( const TDesC& aText); - }; - -#endif /*AKNFEPUIINPUTSTATEMINIQWERTYZHUYINPHRASE_H_*/ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputstatestrokephrasebase.h --- a/fep/aknfep/inc/aknfepuiinputstatestrokephrasebase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,310 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateStrokePhraseBase definition. -* -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPUIINPUTSTATESTROKEPHRASEBASE_H -#define T_AKNFEPUIINPUTSTATESTROKEPHRASEBASE_H - -#include "AknFepUiInputStateChineseBase.h" - -/** - * key struct. - * @since S60 v5.0 - */ - -struct TKeyMap - { - TUint16 iValue; - TInt iKeyCode; - }; - -class TAknFepInputStateStrokePhraseBase : public TAknFepInputStateChineseBase - { -public: - - /** - * C++ default constructor - * - * @since S60 v5.0 - * @param aOwner Pointer to UI manager state interface - * @param aUIContainer Pointer to Chinese UI container - */ - TAknFepInputStateStrokePhraseBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer - ); - - /** - * Handle system key press event - * - * @since S60 v5.0 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength ); - - /** - * Update input window - * - * @since S60 v5.0 - * @param aRefresh, if ETRue need to get the screen position, other need not. - * @return None - */ - void RefreshUI( TBool aRefresh = EFalse ); - - /** - * Update popup window - * - * @since S60 v5.0 - * @return ETrue if the first group stroke is valid, others return EFalse. - */ - TBool CheckFirstGroupStroke(); - - /** - * Add phrase to the UDB. - * - * @param aPhraseAdd that need to be added to the UDB. - * @since S60 v5.0. - * @return None. - */ - void AddPhraseToDB( const TDesC& aPhraseAdd ); - - - /** - * Refresh candidate - * - * @since S60 V5.0 - * @return none - */ - void RefreshCandidate(); - - /** - * Check key whether need repeat. - * - * @since S60 v5.0 - * @return ETrue if the key need repeat, EFalse others. - */ - TBool CheckKeyNeedRepeat( TKeyPressLength aLength ); - - /** - * Get new candidate. - * - * @since S60 v5.0 - * @return None. - */ - void GetNewCandidatesL(const TDesC& aSource, RPointerArray& aList); -private: - - /** - * Handle KeyBackspace event. - * - * @param aLength Key press length - * @since S60 v5.0 - * @return ETrue if handle, otherwise this class do not handle this key - */ - void HandleKeyBackspaceL( TKeyPressLength aLength ); - - /** - * Entry state handle CBA1 or OK key press event. - * - * @since S60 v5.0 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - void HandleKeyCBA1OrKeyOKEntry( TKeyPressLength aLength ); - - /** - * Edit state handle CBA1 or OK key press event. - * - * @since S60 v5.0 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - void HandleKeyCBA1OrKeyOKEditL(); - - /** - * Handle CBA1 or OK key press event. - * - * @since S60 v5.0 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - void HandleKeyCBA1OrKeyOKL( TKeyPressLength aLength ); - - /** - * Handle default key press event. - * - * @since S60 v5.0 - * @param aKey System key - * @param aLength Key press length - * @return ETrue if handle, otherwise this class do not handle this key - */ - void HandleDefaultKeyL( TInt aKey ); - - /** - * Show the showinfo on the EEP ctrl. - * - * @since S60 v5.0. - * @return None. - */ - void ShowInfoOnEEPPane(); - - /** - * Show the showinfo on the candidate ctrl. - * - * @since S60 v5.0. - * @return None. - */ - void ShowInfoOnCandidatePane(); - - /** - * get the show keystroke. - * - * @param aKey, the input keystroke. - * @param aKeystroke the show keystroke. - * @since S60 v5.0. - * @return None. - */ - void GetShowKeystroke( TInt aKey, TDes& aKeystroke ); - - /** - * Handle horizontal navigation. - * - * @param aKey the input keystroke. - * @since S60 v5.0. - * @return ETrue if high light can move, EFase others. - */ - TBool HandleHorizontalNavigation( TInt aKey ); - - /** - * Add keystroke. - * - * @param aKey the input keystroke. - * @since S60 v5.0. - * @return ETrue if that the key can add to the current keystroke, EFase others. - */ - TBool AddKeystrokeL( TInt aKey ); - - /** - * Get the candidate info. - * - * @since S60 v5.0. - * @return none. - */ - void GetCandidateL(); - - /** - * Change CBA. - * - * @since S60 v5.0 - * @return None. - */ - void ChangeCbaL(); - - /** - * Update indicator - * - * @since S60 v5.0 - * @return None. - */ - void UpdateIndicator(); - - /** - * Delete current keystroke. - * - * @since S60 v5.0. - * @return ETrue if that can be deleted, EFase others. - */ - TBool DeleteKeystroke(); - - /** - * Clear Keystroke of PtiEngine. - * - * @since S60 v5.0 - * @return None. - */ - void ClearPtiEngineKeystroke(); - - /** - * get the key code. - * - * @param aKey, the keycode. - * @param aKeystroke, the show keystroke. - * @since S60 v5.0 - * @return none. - */ - void GetKeystrokeCode( TInt& aKey, const TDesC& aKeystroke ); - - /** - * Check all the keystroke. - * - * @since S60 v5.0. - * @return True if All the keystroke is valid. - */ - TBool CheckAllKeystroke(); - - /** - * Revert the phrase to keystroke. - * @since S60 v5.0 - * @return none. - */ - void RevertPhraseToKeystrokeL(); - - /** - * set warning color. - * - * @since S60 v5.0. - * @return none. - */ - void SetWarningColor(); - - /** - * Move the cursor to Left. - * - * @since S60 v5.0. - * @return none. - */ - void MoveCursorLeft(); - - /** - * Move the cursor to Right. - * - * @since S60 v5.0. - * @return none. - */ - void MoveCursorRight(); - - }; - -#endif //T_AKNFEPUIINPUTSTATESTROKEPHRASEBASE_H - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuiinputstatezhuyinphrasecreationbase.h --- a/fep/aknfep/inc/aknfepuiinputstatezhuyinphrasecreationbase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,158 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TAknFepInputStateEntryZhuyinPhraseCreation methods. - * -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPINPUTSTATEZHUYINPHRASECREATIONBASE_H -#define T_AKNFEPINPUTSTATEZHUYINPHRASECREATIONBASE_H - -#include "AknFepUiInputStateCandidateBase.h" - -class TAknFepInputStateZhuyinPhraseCreationBase : public TAknFepInputStateCandidateBase - { -public: - - /** - * C++ constructor. - * - * @since S60 v5.0. - * @return self object. - */ - TAknFepInputStateZhuyinPhraseCreationBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer); - - /** - * Add keystroke. - * - * @param aKey the input keystroke. - * @since S60 v5.0. - * @return ETrue if that the key can add to the current keystroke, EFalse others. - */ - TBool AddKeystrokeL( TInt aKey ); - - /** - * Add tone mark. - * - * @since S60 v5.0. - * @return ETrue if that the key can add to the current keystroke, EFalse others. - */ - TBool AddToneMarkL(); - - /** - * Get the candidate info and refresh ui. - * - * @since S60 v5.0. - * @return ETrue if get candidate sucessful, EFalse others. - */ - TBool UpdateEEPContent(); - - /** - * Check the key stroke group more than max. - * - * @since S60 v5.0 - * - * @return value that more than max begine position. - */ - TInt BegPosOfMoreThanSeven(); - - /** - * Check the key stroke group more than max. - * - * @since S60 v5.0 - * @param aBegPos that more than max begine position. - * @return none. - */ - void HighlightMoreThanSeven( TInt aBegPos ); - - /** - * Check the keystroke count. - * - * @since S60 v5.0. - * @param aIndex the index of keystroke. - * @param aChineseCount the chinese character count. - * @param aSymbol the zhuyinsymbol. - * @param aZhuyinSymbol the zhuyin symbol array. - * @return ETure if keystroke count is not more than max,EFalse others. - */ - TBool ReplaceKeystrokeL( - TInt aIndex, - TInt aChineseCount, - const TDesC& aSymbol, - CDesCArrayFlat* aZhuyinSymbol ); - - /** - * Update Selection - * - * @since S60 v5.0 - * @param aSelection the index of selecion. - * @return None. - */ - void RefreshUI(); - - /** - * Update indicator - * - * @since S60 v5.0 - * @return None. - */ - void UpdateIndicator(); - - void HandleCommandL(TInt /*aCommandId*/); - - TBool DeleteZhuyinSymbolOrChinese(); - - - /** - * Change CBA. - * - * @since S60 v5.0. - * @return None. - */ - void ChangeCbaL(); - -private: - - /** - * Check the keystroke count. - * - * @since S60 v5.0. - * @param aChineseCount the chinese character count. - * @param aZhuyinSymbol the zhuyin symbol array. - * @return ETure if keystroke count is not more than max,EFalse others. - */ - TBool CheckKeystrokeCountL( TInt aChineseCount, CDesCArrayFlat* aZhuyinSymbol ); - - void CheckShowInfo( TDes& aOutDes, CDesCArrayFlat* aZhuyinSymbol ); - - void DeleteSeparatorWhenInvaild( TDes& aDes ); - - }; - -#endif /*T_AKNFEPINPUTSTATEZHUYINPHRASECREATIONBASE_H*/ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuimanagerfingeritutchinese.h --- a/fep/aknfep/inc/aknfepuimanagerfingeritutchinese.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,199 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the CAknFepUIManagerFingerItutChinese definition. -* -*/ - - - - - - - - - - - - -#ifndef __AKN_FEP_UI_MANAGER_FINGERITUT_CHINESE_H__ -#define __AKN_FEP_UI_MANAGER_FINGERITUT_CHINESE_H__ - -// INCLUDES -#include - -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUiInputStateChineseBase.h" - -// FORWARD DECLARATION -class CAknFepUIManagerBase; -class CAknFepPluginManager; - -/** - * CAknFepUIManagerFingerItutChinese ui class - * - * This class is Chinese finger ITUT ui manager. - * It manage the Chinese finger ITUT state class. - * - * @lib avkonfep.dll - * @since S60 v3.2 - */ -class CAknFepUIManagerFingerItutChinese : public CAknFepUIManagerBase - { - -public: - - /** - * Symbian constructor - * - * @since S60 v3.2 - * @param aFepMan Pointer to fep manager - * @param aCaseMan Pointer to case manager - * @param aLanguage Current language - * @param aPluginMager Pointer to plugin manager - * @return Pointer to created CAknFepUIManagerFingerItutChinese object - */ - static CAknFepUIManagerFingerItutChinese* NewL(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan, TLanguage aLanguage, CAknFepPluginManager* aPluginMager); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - virtual ~CAknFepUIManagerFingerItutChinese(); - -public: - -// From CAknFepUIManagerBase - - /** - * From CAknFepUIManagerBase - * Handle key event - * - * @since S60 v3.2 - * @param aKey Event key - * @param aLength The length of key press - * @return ETrue for handling by state machine; otherwise EFalse - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength,TEventCode aEventCode = EEventKey); - - /** - * From CAknFepUIManagerBase - * Close current Finger ITUT ui - * - * @since S60 v3.2 - * @return none - */ - void CloseUI(); - - /** - * From CAknFepUIManagerBase - * Input mode is supported by this ui - * - * @since S60 v3.2 - * @param aMode Input mode - * @return error code - */ - TInt SupportLanguage(TInt aMode) const; - - /** - * From CAknFepUIManagerBase - * Set current input language - * - * @since S60 v3.2 - * @param aLanguage Current language - * @return none - */ - void SetInputLanguageL(TLanguage aLanguage); - - /** - * From CAknFepUIManagerBase - * Change state machine - * - * @since S60 v3.2 - * @param aState ui state - * @return current ui state - */ - TUIState ChangeState(TUIState aState); - - /** - * From CAknFepUIManagerBase - * Change ITUT state machine - * - * @since S60 v3.2 - * @param aState ui state - * @return none - */ - void ChangeStatetItut(TUIState aState); - -private: - - /** - * From CAknFepUIManagerBase - * Get current fep ui state machine - * - * @since S60 v3.2 - * @return pointer to TAknFepInputStateBase - */ - TAknFepInputStateBase* FepUIState(); - - /** - * C++ default constructor - * - * @since S60 v3.2 - * @param aFepMan Pointer to fep manager - * @param aCaseMan Pointer to case manager - * @param aPluginMager Pointer to plugin manager - * @return None - */ - CAknFepUIManagerFingerItutChinese(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan, CAknFepPluginManager* aPluginMager); - - /** - * Symbian second-phase constructor - * - * @since S60 v3.2 - * @param aLanguage Current language - * @return None - */ - void ConstructL(TLanguage aLanguage); - -private: // Data - - /** - * Current state machine - */ - TAknFepInputStateBase iFepUiState;//TAknFepInputStateChineseBase iFepUiState; - - /** - * Current flag - */ - TUint iFlags; - - /** - * Previous mode - */ - TInt iPrevMode; - - /** - * Fep plugin manager (Not own) - */ - CAknFepPluginManager* iPluginMager; - - }; - -#endif //__AKN_FEP_UI_MANAGER_FINGERITUT_CHINESE_H__ - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuispellcontainer.h --- a/fep/aknfep/inc/aknfepuispellcontainer.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,129 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the CAknFepUiSpellContainer definition. -* -*/ - - - - - - - - - - - - -#ifndef AKNFEP_SPELLCONTAINER_H -#define AKNFEP_SPELLCONTAINER_H - -// INCLUDES -#include // for CCoeControl -#include // for MEikListBoxObserver -#include // for CDesCArray - - -// FORWARD DECLARATIONS -class CAknFepUiSpellInputPane; - -// CLASS DECLARATION - -/** -* CAknFepUiSpellContainer container control class. -*/ -class CAknFepUiSpellContainer : public CCoeControl -{ -public: // Constructors and destructor - - /** - * Two-phased constructor. - * @param aRect Frame rectangle for container. - * @param aModel Data model of the application. - * @return A Pointer to new dictionary container. - */ - static CAknFepUiSpellContainer* NewL(const TInt aEditorFlag, const TInt aEditorCase, - const TInt aEditorSCTResID); - - /** - * Destructor. - */ - virtual ~CAknFepUiSpellContainer(); - - CAknFepUiSpellInputPane* InputPane(); - - void SetInputWinObserver( MEikEdwinObserver* aObserver ); - -private: - - /** - * C++ default constructor. - */ - CAknFepUiSpellContainer(); - - /** - * EPOC default constructor. - * @param aRect Frame rectangle for container. - * @param aModel Data model of the application. - */ - void ConstructL(const TInt aEditorFlag, const TInt aEditorCase, const TInt aEditorSCTResID); - -private: // Functions from base classes - - /** - * From CoeControl, CountComponentControls. - */ - TInt CountComponentControls() const; - - /** - * From CCoeControl, ComponentControl. - */ - CCoeControl* ComponentControl( TInt aIndex ) const; - - /** - * From CCoeControl, Draw. - */ - void Draw( const TRect& aRect ) const; - - /** - * From CCoeControl, return the container's input capabilities. - */ - TCoeInputCapabilities InputCapabilities() const; - - /** - * From CCoeControl, handle key events. - */ - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); - - - void SetContainerRect(); - - HBufC* InputText(); - - -protected: - - void SizeChanged(); - - void FocusChanged(TDrawNow aDrawNow); - -private: // data - - CAknFepUiSpellInputPane* iInputPane; - - }; - -#endif // AKNFEP_SPELLCONTAINER_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuispellinputpane.h --- a/fep/aknfep/inc/aknfepuispellinputpane.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the CAknFepUiSpellInputPane definition. -* -*/ - - - - - - - - - - - - -#ifndef AKNFEP_SPELLINPUTPANE_H -#define AKNFEP_SPELLINPUTPANE_H - -#include // for CCoeControl - -// FORWARD DECLARATIONS -class CEikEdwin; -class MEikEdwinObserver; - -/** -* CDicInputPane input pane class. -*/ -class CAknFepUiSpellInputPane : public CCoeControl -{ -public: // Constructors and destructor - - /** - * Two-phased constructor. - * @param aParent Parent control for container. - * @param aRect Frame rectangle for container. - * @return A Pointer to new input pane. - */ - static CAknFepUiSpellInputPane* NewL( CCoeControl* aParent, - const TInt aEditorFlag, - const TInt aEditorCase, - const TInt aEditorSCTResID ); - - /** - * Destructor. - */ - virtual ~CAknFepUiSpellInputPane(); - -public: // New functions - - /** - * Return input win. - * @return A pointer to the input editor object. - */ - CEikEdwin* InputWin() const; - - /** - * Set input win observer - * @param aObserver input win observer - */ - void SetInputWinObserver( MEikEdwinObserver* aObserver ); - - /** - * Set the content of input win - * @param aDes the text to be set - */ - void SetInputWinTextL( const TDesC* aDes ); - - /** - * Selects the entire document of input win - */ - void SelectAllL(); - - /** - * SizeChanged resize the controls - **/ - void SizeChanged(); - -public: // Functions from base classes - - /** - * From CoeControl, return the container's input capabilities. - * @return The input capabilities of the container - */ - TCoeInputCapabilities InputCapabilities() const; - - /** - * From CoeControl, Handles key events. - * @param aKeyEvent The key event. - * @param aType The type of key event: EEventKey, - * EEventKeyUp or EEventKeyDown. - * @return The value to indicates whether or not - * the key event was used by this control - */ - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); - -private: - - /** - * C++ default constructor. - */ - CAknFepUiSpellInputPane(); - - /** - * EPOC default constructor. - * @param aParent Parent control for container. - * @param aRect Frame rectangle for container. - */ - void ConstructL( CCoeControl* aParent, const TInt aEditorFlag, - const TInt aEditorCase, const TInt aEditorSCTResID ); - -private: // Functions from base classes - - /** - * From CoeControl, CountComponentControls. - */ - TInt CountComponentControls() const; - - /** - * From CoeControl, ComponentControl. - */ - CCoeControl* ComponentControl( TInt aIndex ) const; - - /** - * From CoeControl, Draw. - */ - void Draw( const TRect& aRect ) const; - - /** - * From CoeControl, FocusChanged. - */ - void FocusChanged( TDrawNow aDrawNow ); - -private: // data - - CEikEdwin* iInputWin; -}; - -#endif // AKNFEP_SPELLINPUTPANE_H - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuserdbdlg.h --- a/fep/aknfep/inc/aknfepuserdbdlg.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,388 +0,0 @@ -/* -* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Define dialog for user DB management -* -*/ - - - - - - - - - - - - -#ifndef C_CAKNFEPUSERDBDLG_H -#define C_CAKNFEPUSERDBDLG_H - -// INCLUDES -#include -#include -#include //CAknMarkableListDialog -#include -#include // MEikListBoxObserver -#include //MListBoxItemChangeObserver - -const TInt KMaxInputSize(7); -const TInt KMaxCharSize(7); - -// CLASS DECLARATION -class CDBManagement; -class CPtiEngine; -class CAknFepManager; -class CAknProgressDialog; -class CEikProgressInfo; -class CAknFepUserDBQueryDlg; - -/** - * Dialog for user DB management - * In this Dialog of user DB management, it has add,remove, - * edit and mark/unmark function - * - * @code - * ?good_class_usage_example(s) - * @endcode - * - * @lib ?library - * @since S60 v3.1 - */ -class CAknFepUserdbDlg : public CAknMarkableListDialog, - public MListBoxItemChangeObserver - { -public: - // Constructors and destructor - - /** - * Destructor. - */ - ~CAknFepUserdbDlg(); - - /** - * Two-phased constructor. - * @param aOpenedItem Index of the item focusing on - * @param aSelectedItems Selected of list items - * @param aArray Content of list items - * @param aMenuBarResourceId Menu bar id - * @param aCommand Default value is zero - */ - static CAknFepUserdbDlg* NewL( TInt &aOpenedItem, - CArrayFix< TInt > *aSelectedItems, MDesCArray *aArray, - TInt aMenuBarResourceId, CPtiEngine* aPtiEngine, CAknFepManager* aOwner, - MEikCommandObserver *aObserver=0 ); - - /** - * Refresh user db view - * - * @since S60 v3.1 - * @param none - * @return none - */ - void OnChangeLanguageL( TInt aInputLanguage ); - - /** - * Refresh user db view when the screen size was changed. - * - * @since S60 vTB9.1 - * @param none - * @return none - */ - void SizeChanged(); - - /** - * Return control to application framework. - * - * @since S60 vTB9.2 - * @param TInt aIndex is the index of control - * @return CCoeControl object pointer - */ - CCoeControl* ComponentControl(TInt aIndex) const; - - /** - * Return number of controls in this dialog - * - * @since S60 vTB9.2 - * @param none - * @return number of controls - */ - TInt CountComponentControls() const; - -private: - - /** - * C++ constructor. - * @param aOpenedItem Index of the item focusing on - * @param aSelectedItems Selected of list items - * @param aArray Content of list items - * @param aCommand Default value is zero - */ - CAknFepUserdbDlg( TInt &aValue, CArrayFix< TInt > *aSelectedItems, - MDesCArray *aArray, CPtiEngine* aPtiEngine, CAknFepManager* aOwner, - MEikCommandObserver *aObserver ); - - /** - * Symbian second-phase constructor. - * @param aMenuBarResourceId Menu bar id - */ - void ConstructL( TInt aMenuBarResourceId ); - - /** - * Construct Context Menu - * - * @since S60 v3.1 - * @param None - * @return None - */ - void ConstructContextMenuL(); - - /** - * Init items in the list from user DB - * - * @since S60 v3.1 - * @param None - * @return Whether there are any items in list, ETrue is have items - */ - TBool InitListBoxItemL( ); - - /** - * Add phrase to listbox and user DB - * - * @since S60 v3.1 - * @param none - * @return none - */ - void AddItemL(); - - /** - * Delete phrase in listbox and user DB - * - * @since S60 v3.1 - * @param none - * @return none - */ - void RemoveItemL(); - - /** - * Edit phrase in listbox and user DB - * - * @@since S60 v3.1 - * @param none - * @return none - */ - void EditItemL(); - - /** - * Mark/Unmark phrase in listbox and user DB - * - * @since S60 v3.1 - * @param aItemIndex item's index which would be mark or unmark - * @return aMark set for the item mark - */ - void CmdMarkL( TInt aItemIndex, TBool aMark ); - - /** - * Change the current cba to the specific cba - * - * @since S60 v3.1 - * @param aCbaResourceId cba id - * @return none - */ - void ChangeCurrentCbaL ( TInt aCbaResourceId ); - - /** - * Show context menu - * - * @since S60 v3.1 - * @param none - * @return none - */ - void ShowContextMenuL(); - - /** - * Set the Search Field blank - * - * @since S60 v3.1 - * @param none - * @return none - */ - void ResetSearchFieldL(); - - /** - * Find item's real Index in list - * - * @since S60 v3.1 - * @param aItemIndex Item's index in the view which want to find the actual index - * @return The actual index of the item - */ - TInt FindActualIndex( const TInt aItemIndex ); - /** - * Mark or unmark item in list - * - * @since S60 v3.1 - * @param none - * @return none - */ - void MarkOrUnmarkItemL(); - - /** - * Add '\t' to item array - * - * @since S60 v3.1 - * @param aDataArray array which want to be inserted '\t' - * @return none - */ - void InsertIconL( CDesC16Array* aDataArray ); - - /** - * To update cba of dialg - * - * @since S60 v3.1 - * @param aCommandId command id from menu, 0 for command except mark - * @return none - */ - void UpdateListBoxL( TInt aCommandId = 0); - - //From base class CAknMarkableListDialog - /** - * From base class CAknMarkableListDialog - * Deal the commands that have recevied - * @param aCommandId Commands' Id - * @return None - */ - void ProcessCommandL( TInt aCommandId ); - - /** - * From base class CAknMarkableListDialog - * Deal the softkey event - * @param aButtonId softkey Id - * @return ETrue to validate and exit the dialog, EFalse to keep the dialog active. - */ - TBool OkToExitL( TInt aButtonId ); - - /** - * From base class CAknMarkableListDialog - * Dynamically initialises a menu pane. - * @param aResourceId Menu pane id - * @param aMenuPane The in-memory representation of the menu pane. - * @return None - */ - void DynInitMenuPaneL( TInt aResourceId,CEikMenuPane* aMenuPane ); - - void FocusChanged(TDrawNow aDrawNow); - - /** - * From base class CAknMarkableListDialog - * Initializes the dialog's controls after the - * dialog has been sized but before it has been activated - * @param None - * @return None - */ - void PostLayoutDynInitL(); - - /** - * From base class CAknMarkableListDialog - * @param aKeyEvent The key event. - * @param aType The type of key event: EEventKey, EEventKeyUp or EEventKeyDown - * @return Indicates whether or not the key event was used by this control - */ - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); - - //From base class MEikListBoxObserver - /** - * From base class MEikListBoxObserver - * Observer callback from the listbox.. - * @param aListBox ptr to listbox that is calling the method - * @param aEventType type of event; defined by MEikListBoxObserver - * @return None - */ - void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); - - //From base class MListBoxItemChangeObserver - /** - * From base class MListBoxItemChangeObserver - * Item change observer will be notified when list box items have been - * added or removed or the list box has been reset. - * @param aListBox ptr to listbox that is calling the method - * @return None - */ - void ListBoxItemsChanged( CEikListBox* aListBox ); - -private: //data - - /** - * Engine - * Own - */ - CDBManagement* iDBEngine; - - /** - * Progress dialog - * Own, but doesn't need delete by myself - */ - CAknProgressDialog* iProgressDialog; - - /** - * progress info - * Own, but doesn't need delete by myself - */ - CEikProgressInfo* iProgressInfo; - - /** - * Item array - * Own, but doesn't need delete by myself,listbox would free it automatic - */ - CDesC16Array* iItems; - - /** - * Pti Engine - * Not Own - */ - CPtiEngine* iPtiEngine; - - /** - * AknFepManager need by DBEngine - * Not own - */ - CAknFepManager* iOwner; - - /** - * Context menu bar - * Own - */ - CEikMenuBar* iContextMenuBar; - - /** - * Old highLight postion - */ - TInt iOldIndex; - - /** - * Old Language - */ - TInt iOldLanguage; - - /** - * Query for add and edit. Not Own. - */ - CAknFepUserDBQueryDlg* iQueryDlg; - - /** - * Old cba resouce - */ - TInt iOldCbaRes; - }; - -#endif // C_CAKNFEPUSERDBDLG_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepuserdbquerydlg.h --- a/fep/aknfep/inc/aknfepuserdbquerydlg.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -/* -* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Define query dialog for user DB management -* -*/ - - - - - - - - - - - - -#ifndef C_AKNFEPUSERDBQUERYDLG_H -#define C_AKNFEPUSERDBQUERYDLG_H - -// INCLUDES -#include -#include -#include - -// CLASS DECLARATION -class CDBManagement; - - -/** - * Query dialog for user DB management - * In this query dialog, it will check phrase and show note - * - * @code - * ?good_class_usage_example(s) - * @endcode - * - * @lib ?library - * @since S60 v3.1 - */ -class CAknFepUserDBQueryDlg : public CAknTextQueryDialog - { -public: - // Constructors and destructor - - /** - * Destructor. - */ - ~CAknFepUserDBQueryDlg(); - - /** - * Two-phased constructor. - * @param aDBEngine Pointer of DBEngine - * @param aText Text which for initialization of query dialog - * @param aPrompt Prompt for query - * @param aTone The tone played before the dialog is shown. - * Default No tone is played. - */ - static CAknFepUserDBQueryDlg* NewL( CDBManagement* aDBEngine, - TDes& aText, const TDesC& aPrompt, - const TTone& aTone = ENoTone ); - - /** - * Two-phased constructor. - * @param aDBEngine Pointer of DBEngine - * @param aText Text which for initialization of query dialog - * @param aPrompt Prompt for query - * @param aTone The tone played before the dialog is shown. - * Default No tone is played. - */ - static CAknFepUserDBQueryDlg* NewLC( CDBManagement* aDBEngine, - TDes& aText, const TDesC& aPrompt, - const TTone& aTone = ENoTone ); - -private: - - /** - * C++ constructor. - * @param aDBEngine Pointer of DBEngine - * @param aText Text which for initialization of query dialog - * @param aTone The tone played before the dialog is shown. - * Default No tone is played. - */ - CAknFepUserDBQueryDlg( CDBManagement* aDBEngine, - TDes& aText, - const TTone& aTone = ENoTone ); - - /** - * Symbian second-phase constructor. - * @param aPrompt Prompt for query - */ - void ConstructL( const TDesC& aPrompt ); - - // From base class CAknQueryDialog - /** - * From base class CAknQueryDialog - * Deal the softkey event - * @param aButtonId softkey Id - * @return ETrue to validate and exit the dialog, EFalse to keep the dialog active. - */ - TBool OkToExitL( TInt aButtonId ); - - /** - * From base class CAknQueryDialog - * Initializes the dialog's controls after the - * dialog has been sized but before it has been activated - * @param None - * @return None - */ - void PostLayoutDynInitL(); - -private: // data - - /** - * Engine - * Not own - */ - CDBManagement* iDBEngine; - - /** - * Text pointer in query - * Not own - */ - TDes* iptrbuf; - - /** - * Text in query - * Own - */ - HBufC* iItemText; - - }; - -#endif // C_AKNFEPUSERDBQUERYDLG_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepzhuyinconvertion.h --- a/fep/aknfep/inc/aknfepzhuyinconvertion.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,208 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TZhuyinSymbolsMethods definition - * -*/ - - - - - - - - - - - - -#ifndef T_AKNFEPZHUYINCONVERTION_H -#define T_AKNFEPZHUYINCONVERTION_H - -#include -#include -#include -#include "AknFepZhuyinAnalyser.h" - -class TZhuyinSymbolsMethods - { -public: - /** - * Convert aArray to a descriptor outputed through aOutDes - * - * @param aArray. the converted array. - * @param aOutDes. an output parameter for storing descriptor after converting. - * @return. the converted number of elements for aArray. - */ - static TInt Convert2Des ( CDesCArrayFlat* aArray, TDes& aOutDes ); - - /** - * Update the content in eep control. - * - * @since S60 v5.0 - * @param aPtiengine. used for getting candidate list. - * @param aAnylyser. used for analysing validity for zhuyin symbols. - * @param aZhuyinSymbols. zhuyin symbols' array. - * @param aChineseDisped. chinese characters' array. - * @param aCandidateList. an output parameter which will receive updated candidates. - * @param aOutDes. an output parameter for storing displayed text. - * @param aPhraseCreation. an out put parameter, ETrue for phrase creation, EFalse phrase input - * @return. whether zhuyin symbols is valid. ETrue for valid and EFalse for invalid. - */ - static TBool UpdateEEPContent( - CPtiEngine* aPtiengine, - CAknFepZhuyinAnalyser* aAnalyser, - CDesCArrayFlat* aZhuyinSymbols, - CDesCArrayFlat* aChineseDisped, - CDesCArrayFlat* aCandidateList, - TDes& aOutDes, - TBool& aPhraseCreation); - - /** - * Update the content in eep control. - * - * @since S60 v5.0 - * @param aPtiengine. used for getting candidate list. - * @param aAnylyser. used for analysing validity for zhuyin symbols. - * @param aZhuyinSymbols. zhuyin symbols' array. - * @param aChineseDisped. chinese characters' array. - * @param aCandidateList. an output parameter which will receive updated candidates. - * @param aOutDes. an output parameter for storing displayed text. - * @param aPhraseCreation. an out put parameter, ETrue for phrase creation, EFalse phrase input - * @return. whether zhuyin symbols is valid. ETrue for valid and EFalse for invalid. - */ - static TBool UpdateEEPContentL( - CPtiEngine* aPtiengine, - CAknFepZhuyinAnalyser* aAnalyser, - CDesCArrayFlat* aZhuyinSymbols, - CDesCArrayFlat* aChineseDisped, - CDesCArrayFlat* aCandidateList, - TDes& aOutDes, - TBool& aPhraseCreation); - - /** - * commit a chinese character from candidate list. - * After appending, the CDesCArrayFlat parameters will be updated for accordance. - * - * @since S60 v5.0 - * @param aChinese. the unicode for added chinese character. - * @param aAnalyser. the analyser for cecking the validity of aZhuyinSymbols. - * @param aZhuyinSymbols. the zhuyin symbols appeared in the eep control. - * @param aChineseDisped. the chinese character array aChinese should be added into. - * @param aZhuyinSymbolsForChinese. the corresponding symbols for chinese character array. - * @return. ETrue there are already 7 characters in eep control after appending. - * EFalse there are less than 7 characters in eep control. - */ - static TBool AppendChineseChar( - const TDes& aChinese, - CAknFepZhuyinAnalyser* aAnalyser, - CDesCArrayFlat* aZhuyinSymbols, - CDesCArrayFlat* aChineseDisped, - CDesCArrayFlat* aZhuyinSymbolsForChinese ); - - /** - * Delete a chinese character from aChineseDisped array - * and update related array in the meantime. - * - * @since S60 v5.0 - * @param aZhuyinSymbols.zhuyin symbols' array. - * @param aInputBuf. zhuyin symbols' buf. - * @return.ETrue for successful delete, EFalse for failed delete. - */ - static void GetZhuyinSymbolsL( - CDesCArrayFlat* aZhuyinSymbols, - const TDesC& aInputBuf ); - - /** - * Delete a chinese character from aChineseDisped array - * and update related array in the meantime. - * - * @since S60 v5.0 - * @param aZhuyinSymbols.zhuyin symbols' array. - * @param aChineseDisped. chinese caracters' array. - * @param aZhuyinSymbolsForChinese. corresponding zhuyin symbol sequences for - * chinese caracters stored in aChineseDisped. - * @return.ETrue for successful delete, EFalse for failed delete. - */ - static TBool DeleteChineseChar( - CDesCArrayFlat* aZhuyinSymbols, - CDesCArrayFlat* aChineseDisped, - CDesCArrayFlat* aZhuyinSymbolsForChinese ); - - /** - * Delete a zhuyin symbol stored in aZhuyinSymbols array. - * if the symbol after aKeyStroke is a tonemark, the tonemark should be deleted with zhuyin symbol. - * - * @since S60 v5.0 - * @param aZhuyinSymbols.zhuyin symbols' array. - * @param aKeyStroke. the key stroke position when deleting. - * @return. ETrue for success. EFalse for failure. - */ - static TBool DeleteZhuyinSymbol( - CDesCArrayFlat* aZhuyinSymbols, - TInt aKeyStroke - ); - - /** - * Refresh the cursor position according to the input parameters. - * - * @since S60 v5.0 - * @param aChineseNum. the number of chinese characters. - * @param aZhuyinShown. the displayed content. - * @param aKeyStrokePos. the key stroke position. - * @return. the new cursor position for displayed content. - */ - static TInt RefreshCursorPos ( - TInt aChineseNum, - const TDes& aShownContent, - TInt aKeyStrokePos ); - - /** - * Get the number of zhuyin symbol group. - * - * @since S60 v5.0 - * @param aShown. the displayed content. - * @return. the number of zhuyin symbol group. - */ - static TInt GetChineseCount ( const TDes& aShown ); - - /** - * Whether the aFirstPhrase is a Zhuyin symbol or not. - * - * @since S60 v5.0 - * @param aFirstPhrase.Phrase content. - * @return. ETrue for aFirstPhrase is Zhuyin symbol. EFalse for not. - */ - static TBool IsZhuyinSymbol( const TDesC& aFirstPhrase ); - - /** - * Whether is a Zhuyin spelling or not. - * - * @since S60 v5.0 - * @param aSymbol the first zhuyin symbol. - * @param index the zhuyin symbol that index of zhuyin symbol array. - * @return. ETrue the aSymbol and the symbol that index of zhuyin symbol - * array is zhuyin spelling, EFalse others. - */ - static TBool IsZhuyinSpelling( - const TDesC& aSymbol, - const TInt index, - CDesCArrayFlat* aZhuyinSymbols ); - - }; - -#endif /*T_AKNFEPZHUYINCONVERTION_H*/ - -//End of File - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepzhuyinkeyhandler.h --- a/fep/aknfep/inc/aknfepzhuyinkeyhandler.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,240 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - -#ifndef C_AKNFEPZHUYINKEYHANDLER_H -#define C_AKNFEPZHUYINKEYHANDLER_H - -#include // For CActive, link against: euser.lib -#include // For RTimer, link against: euser.lib -#include -#include "aknfepzhuyinkeyhandlerinterface.h" - -class ZhuyinKeyTable - { -public: - /** - * C++ constructor. - * - * @return state. - */ - ZhuyinKeyTable(); - - /** - * Cancel and destroy - * - * @return state. - */ - ~ZhuyinKeyTable(); - - /** - * Get butten loop length. - * - * @parameter aKey the input key. - * @return loop length. - */ - static TInt GetBtLoopLength( TPtiKey aKey ); - - /** - * Get zhuyin symbol. - * - * @parameter aKey the input key - * @parameter aClkCount input key count - * @parameter aOutput the zhuyin symbol - * @return state. - */ - static TBool GetUnicode( TPtiKey aKey, TInt aClkCount, TDes& aOutput ); - - }; - -class CZhuyinKeyHandler : public CActive, public MZhuyinKeyHandler - { -public: - - /** - * Cancel and destroy - * - * @return state. - */ - ~CZhuyinKeyHandler(); - - /** - * Two-phased constructor. - * - * @return state. - */ - static CZhuyinKeyHandler* NewL(); - - /** - * Two-phased constructor. - * - * @return state. - */ - static CZhuyinKeyHandler* NewLC(); - -public: - - /** - * Function for making the initial request. - * - * @return state. - */ - void Start(); - - /** - * Get Zhuyin symbol according to the input key. - * - * @param aKey. the input key. - * @param aOutBuf. an output parameter which will receive the zhuyin symbol unicode. - * @return 0 identify the output should replace the old symbol. - * 1 identify the output is a new symbol. - * -1 identify error - */ - TInt GetZhuyinSymbol( TPtiKey aKey, TDes& aOutBuf ); - - /** - * Reset all the member variables. - * @param None. - * @return None. - */ - void Reset(); - - /** - * Get tonemark according to symbol in front of cursor. - * - * @param. aBaseSymbol is the symbol in front of cursor. - * @param. aOutBuf is the output buffer for rcving tonemark. - * @return. 0 identify the output should replace symbol in front of cursor - * 1 identify the output should be added. - * -1 identify error - */ - TInt GetToneMark( const TDes& aBaseSymbol, TDes& aOutBuf ); - - /** - * Set whether state change from entry to spelling editing is automatical. - * - * @param aState.1 for automatical, 0 for manual. - * @return None. - */ - void SetState( TInt aState ); - - /** - * Get state change states. - * - * @return state. - */ - TInt GetState(); - - /** - * Set status change flag. - * this function is used to deal with long press on Down key or Clear key. - * - * @param aChgFlag. - * @return None. - */ - void SetStatusChgFlag( TStatusChgFlag aChgFlag ); - - /** - * Get the status change flag. - * @prama None. - * @return. - */ - TStatusChgFlag GetStatusChgFlag(); - -private: - - /** - * C++ constructor. - * @prama None. - * @return. - */ - CZhuyinKeyHandler(); - - /** - * Second-phase constructor. - * @prama None. - * @return. - */ - void ConstructL(); - -private: - - /** - * From CActive Handle completion. - * @prama None. - * @return. - */ - void RunL(); - - /** - * How to cancel me. - * @prama None. - * @return. - */ - void DoCancel(); - - /** - * Override to handle leaves from RunL(). Default implementation causes. - * the active scheduler to panic. - * @prama None. - * @return. - */ - TInt RunError( TInt aError ); - -private: - - /** - * Provides async timing service - */ - RTimer iTimer; - - /** - * Last pressed key. - */ - TPtiKey iLastKey; - - /** - * if ETrue, it identify you don't touch any key in the specified time. - */ - TBool iTimeOut; - /** - * the times you pressed current key. - */ - TInt iBtClickNum; - - /** - * the max loop length for pressed key. - */ - TInt iBtLoopLength; - - /** - * whether the state change from entry to spelling editing is automatical. - */ - TInt iState; - - /** - * state change flag.used to handle long press on down key and clear key currently. - */ - TStatusChgFlag iStatusChgFlag; - - }; - -#endif // C_AKNFEPZHUYINKEYHANDLER_H - -// End of file - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/aknfepzhuyinkeyhandlerinterface.h --- a/fep/aknfep/inc/aknfepzhuyinkeyhandlerinterface.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -/** - * aknfepzhuyinkeyhandlerinterface.h - * - */ -#ifndef M_AKNFEPZHUYINKEYHANDLERINTERFACE_H -#define M_AKNFEPZHUYINKEYHANDLERINTERFACE_H - -#include - -class MZhuyinKeyHandler - { -public: - enum TStatusChgFlag - { - EInit, - EFromSpellingEditingToEntry, - EFromCandidateToEntry - }; - virtual TInt GetZhuyinSymbol ( TPtiKey aKey, TDes& aOutBuf ) = 0; - virtual void Reset() = 0; - virtual TInt GetToneMark ( const TDes& aBaseSymbol, TDes& aOutBuf ) = 0; - virtual void SetState( TInt aState ) = 0; - virtual TInt GetState() = 0; - virtual void SetStatusChgFlag ( TStatusChgFlag aChgFlag ) = 0; - virtual TStatusChgFlag GetStatusChgFlag () = 0; - }; - -#endif /*M_AKNFEPZHUYINKEYHANDLERINTERFACE_H*/ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/inc/dbmanagement.h --- a/fep/aknfep/inc/dbmanagement.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,214 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: DB Engine -* -*/ - - - - - - - - - - - - -#ifndef C_CDBMANAGEMENT_H -#define C_CDBMANAGEMENT_H - -// CLASS DECLARATION -class CPtiEngine; -class CAknFepSharedDataInterface; -class CAknFepManager; - -// CONSTANTS -const TInt KErrorMsgMaxLength = 60; -/** - * CDBManagement - * User DB management view's DB Engine - * - * - * @lib peninputhwrboxcn.lib - * @since S60 v5.0 - */ -class CDBManagement : public CBase - { - -public: - - /** - * Symbian constructor. - * - * @since S60 v5.0 - * @return Pointer to created CDBManagement object - */ - static CDBManagement* NewL( CAknFepManager* aFepManager ); - - /** - * Destructor. - * - * @since S60 v5.0 - * @return None - */ - virtual ~CDBManagement(); - - /** - * Add phrase to DB. - * - * @since S60 v5.0 - * @param aPhraseAdd the phrase to be added to DB - * @return ETrue if the phrase is added to DB successfully, otherwise EFalse. - */ - TBool AddPhraseToDB( const TDesC& aPhraseAdd ); - - /** - * Edit phrase from DB. - * - * @since S60 v5.0 - * @param aPhraseOld the phrase to be edited before - * @param aPhraseNew the phrase to be edited after - * @return ETrue if the phrase is edited from DB successfully, otherwise EFalse. - */ - TBool EditPhraseFromDB( const TDesC& aPhraseOld, - const TDesC& aPhraseNew ); - - /** - * Remove phrase from DB. - * - * @since S60 v5.0 - * @param aPhraseRemove the phrase to be removed - * @return ETrue if the phrase is remove from DB successfully, otherwise EFalse. - */ - TBool RemovePhraseFromDB( const TDesC& aPhraseRemove ); - - /** - * Get phrases from DB. - * - * @since S60 v5.0 - * @param aPhraseGet the phrases are getde from DB - * @return ETrue if the phrases are geted from DB successfully, otherwise EFalse. - */ - TBool GetPhraseFromDBL( CDesCArray& aPhraseGet); - - /** - * Get Error Message. - * - * @since S60 v5.0 - * @param aErrMsg the Error Message - * @return None. - */ - void GetErrMsg( TDes& aErrMsg ); - - /** - * Check the input pharese. - * - * @since S60 v5.0 - * @param aPhraseInput the phrase to be checked - * @return ETrue if the input phrase are checked successfully, otherwise EFalse. - */ - TBool InputPhraseCheck( TDes& aPhraseInput ); - -private: - - /** - * C++ constructor - * - * @since S60 v5.0 - * @return None - */ - CDBManagement(); - - /** - * Second phase constructor. - * - * @since S60 v5.0 - * @return Pointer to created CDBManagement object - */ - void ConstructL( CAknFepManager* aFepManager ); - - /** - * set language - * - * @since S60 v5.0 - * @return none. - */ - void ActivateLanguageL(); - - /** - * set language - * - * @since S60 v5.0 - * @return none. - */ - void ActivateLanguageOfFepL(); - - /** - * set language - * - * @since S60 v5.0 - * @return none. - */ - void ActivateLanguage(); - - /** - * set input mode - * - * @since S60 v5.0 - * @return ETrue if set input mode successfully, otherwise EFalse. - */ - TBool SetInputMode( CPtiEngine* aPtiEngine ); - - /** - * get db error message - * - * @since S60 v5.0 - * @return none. - */ - void GetDBErrMsg( TInt aErrCode ); - -private: //private data - - /** - * CAknFepSharedDataInterface objcet - * Own - */ - CAknFepSharedDataInterface* iAknFepSharedDataInterface; - - /** - * CAknFepSharedDataInterface objcet - * Own - */ - CPtiEngine* iPtiEngine; - - /** - * CAknFepSharedDataInterface objcet - * not Own - */ - CPtiEngine* iPtiEngineOfFep; - - /** - * CAknFepSharedDataInterface objcet - * not Own - */ - CAknFepManager* iFepManager; - - /** - * Error message info - */ - TBuf iErrMsg; - }; - -#endif // C_CDBMANAGEMENT_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/data/E95A395D.rss --- a/fep/aknfep/peninputplugins/PeninputPluginKr/data/E95A395D.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource definitions for project peninputimeplugingeneric -* -*/ - -#include -#include -#include "PeninputPluginKr.hrh" // CPeninputPluginKr - -// Declares info for two implementations -RESOURCE REGISTRY_INFO theInfo - { - // UID for the DLL - dll_uid = KAknFepImePluginImplementationId; - // Declare array of interface info - interfaces = - { - INTERFACE_INFO - { - // UID of interface that is implemented - interface_uid = 0x10207363; - implementations = - { - // Info for CImplementation1 - IMPLEMENTATION_INFO - { - implementation_uid = KAknFepImePluginImplementationId; - version_no = 1; - display_name = "Korean touch input method plugin"; - //supported language - default_data = "1||65"; - } - }; - } - }; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/data/PeninputPluginKr.loc --- a/fep/aknfep/peninputplugins/PeninputPluginKr/data/PeninputPluginKr.loc Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -// LOCALISATION STRINGS - -#ifdef LANGUAGE_01 - -#define qtn_peninput_plugin_kr_doubleconsonent_setting "Custom Combination" - -#define STRING_r_aknexquery_selection_title "Custom Combination" - -#define qtn_peninput_plugin_kr_item1 "1\t"<0x3131>" + "<0x3131>" "<0x21D2>" "<0x3132> -#define qtn_peninput_plugin_kr_item2 "1\t"<0x3137>" + "<0x3137>" "<0x21D2>" "<0x3138> -#define qtn_peninput_plugin_kr_item3 "1\t"<0x3142>" + "<0x3142>" "<0x21D2>" "<0x3143> -#define qtn_peninput_plugin_kr_item4 "1\t"<0x3145>" + "<0x3145>" "<0x21D2>" "<0x3146> -#define qtn_peninput_plugin_kr_item5 "1\t"<0x3148>" + "<0x3148>" "<0x21D2>" "<0x3149> -#define qtn_peninput_plugin_kr_item6 "1\t"<0x3151>" + "<0x3163>" "<0x21D2>" "<0x3152> -#define qtn_peninput_plugin_kr_item7 "1\t"<0x3155>" + "<0x3163>" "<0x21D2>" "<0x3156> - -#endif - -#ifdef LANGUAGE_65 - -#define qtn_peninput_plugin_kr_doubleconsonent_setting <0xC790><0xBAA8>" "<0xC870><0xD569>" "<0xC124><0xC815> - -#define STRING_r_aknexquery_selection_title <0xC790><0xBAA8>" "<0xC870><0xD569>" "<0xC124><0xC815> - -#define qtn_peninput_plugin_kr_item1 "1\t"<0x3131>" + "<0x3131>" "<0x21D2>" "<0x3132> -#define qtn_peninput_plugin_kr_item2 "1\t"<0x3137>" + "<0x3137>" "<0x21D2>" "<0x3138> -#define qtn_peninput_plugin_kr_item3 "1\t"<0x3142>" + "<0x3142>" "<0x21D2>" "<0x3143> -#define qtn_peninput_plugin_kr_item4 "1\t"<0x3145>" + "<0x3145>" "<0x21D2>" "<0x3146> -#define qtn_peninput_plugin_kr_item5 "1\t"<0x3148>" + "<0x3148>" "<0x21D2>" "<0x3149> -#define qtn_peninput_plugin_kr_item6 "1\t"<0x3151>" + "<0x3163>" "<0x21D2>" "<0x3152> -#define qtn_peninput_plugin_kr_item7 "1\t"<0x3155>" + "<0x3163>" "<0x21D2>" "<0x3156> - -#endif - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/data/PeninputPluginKrRes.rss --- a/fep/aknfep/peninputplugins/PeninputPluginKr/data/PeninputPluginKrRes.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource definitions for project peninputgenericvkb -* -*/ - - -// Resource identifier -NAME PIPK - -// System includes -#include -#include -#include -#include -#include "PeninputPluginKr.loc" - -RESOURCE RSS_SIGNATURE - { - } - -RESOURCE TBUF - { - buf = "PeninputPluginKr"; - } - - -RESOURCE LBUF r_peninput_plugin_kr_doubleconsonent_setting - { - txt=qtn_peninput_plugin_kr_doubleconsonent_setting; - } - -//----------------------------------------------------------------------------- -// -// r_aknexquery_multi_selection_query -// Resource of Multi Selection Query. -// -//----------------------------------------------------------------------------- -// - -#define AKNEXQUERY_LISTBOX_HEIGHT 3 -#define AKNEXQUERY_LISTBOX_WIDTH 3 - -RESOURCE DIALOG r_aknexquery_multi_selection_query - { - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_OK_CANCEL; - items = - { - DLG_LINE - { - type = EAknCtListQueryControl; - id = EListQueryControl; - control = AVKON_LIST_QUERY_CONTROL - { - listtype = EAknCtSingleGraphicPopupMenuListBox; - listbox = LISTBOX - { - flags = EAknListBoxMultiselectionList; - height = AKNEXQUERY_LISTBOX_HEIGHT; - width = AKNEXQUERY_LISTBOX_WIDTH; - array_id = r_aknexquery_multi_selection_query_list_item; - }; - heading = STRING_r_aknexquery_selection_title; - }; - } - }; - } - -//----------------------------------------------------------------------------- -// -// r_aknexquery_multi_selection_query_list_item -// Items array for Multi Selection Query -// -//----------------------------------------------------------------------------- -// -RESOURCE ARRAY r_aknexquery_multi_selection_query_list_item - { - items = - { - LBUF - { - txt = qtn_peninput_plugin_kr_item1; - }, - LBUF - { - txt = qtn_peninput_plugin_kr_item2; - }, - LBUF - { - txt = qtn_peninput_plugin_kr_item3; - }, - LBUF - { - txt = qtn_peninput_plugin_kr_item4; - }, - LBUF - { - txt = qtn_peninput_plugin_kr_item5; - }, - LBUF - { - txt = qtn_peninput_plugin_kr_item6; - }, - LBUF - { - txt = qtn_peninput_plugin_kr_item7; - } - }; - } - -//----------------------------------------------------------------------------- -// -// r_aknexquery_multi_selection_list_query -// -//----------------------------------------------------------------------------- -// -RESOURCE AVKON_MULTISELECTION_LIST_QUERY r_aknexquery_multi_selection_list_query - { - flags = EGeneralQueryFlags; - softkeys = R_AVKON_SOFTKEYS_SELECT_CANCEL; - items = - { - AVKON_MULTISELECTION_LIST_QUERY_DLG_LINE - { - control = AVKON_LIST_QUERY_CONTROL - { - listtype = EAknCtSingleGraphicPopupMenuListBox; - listbox = AVKON_MULTISELECTION_LIST_QUERY_LIST - { - array_id=r_aknexquery_multi_selection_query_list_item; - }; - heading = STRING_r_aknexquery_selection_title; - }; - } - }; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/group/PeninputPluginKr.mmp --- a/fep/aknfep/peninputplugins/PeninputPluginKr/group/PeninputPluginKr.mmp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include - -TARGET PeninputPluginKr.dll -TARGETTYPE PLUGIN -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT -UID 0x10009D8D 0xE95A395D - -MW_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../../../inc -SYSTEMINCLUDE ../../../../../fep/aknfep/inc - -USERINCLUDE ../inc - -SOURCEPATH ../src - -SOURCE PeninputPluginKr.cpp -SOURCE PeninputPluginKrDllMain.cpp -SOURCE PeninputPluginKrProxy.cpp -SOURCE PluginKrFepManagerBase.cpp -SOURCE PluginKrFepManagerHwr.cpp -SOURCE PluginKrFepManagerVkb.cpp -SOURCE PluginKrFepManagerItut.cpp - -LANG sc 01 65 - -SOURCEPATH ../data -START RESOURCE E95A395D.rss - #ifdef SYMBIAN_SECURE_ECOM - TARGET PeninputPluginKr.rsc - #endif -END - -SOURCEPATH ../data -START RESOURCE PeninputPluginKrRes.rss - HEADER - TARGETPATH resource/fep -END - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY FeatMgr.lib -LIBRARY commonengine.lib -LIBRARY bafl.lib -LIBRARY cone.lib -#ifdef RD_SCALABLE_UI_V2 -LIBRARY peninputclient.lib -#else -LIBRARY peninputserverstub.lib -#endif -LIBRARY estor.lib -LIBRARY avkon.lib -LIBRARY eikcoctl.lib -LIBRARY centralrepository.lib - -DEBUGLIBRARY flogger.lib diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/group/bld.inf --- a/fep/aknfep/peninputplugins/PeninputPluginKr/group/bld.inf Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS - -PRJ_MMPFILES -PeninputPluginKr.mmp diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/group/peninputpluginkrproxy.d --- a/fep/aknfep/peninputplugins/PeninputPluginKr/group/peninputpluginkrproxy.d Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \Carbide\PeninputPluginKr\src\peninputpluginkrproxy.cpp -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\RVCT2_2\RVCT2_2.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \EPOC32\include\oem\feature_settings.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \EPOC32\include\oem\defaultcaps.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \EPOC32\include\oem\Symbian.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \EPOC32\include\oem\..\variant\Symbian_OS.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \EPOC32\include\oem\privateruntimeids.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \EPOC32\include\oem\publicruntimeids.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \EPOC32\include\oem\ncp_feature_consts.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \EPOC32\include\oem\ncp_consts.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\bldcodeline.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\bldprivate.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\bldpublic.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\bldregional.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\adaptation_features.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\ncp_feature_settings.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\hw_rapido_init_settings.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\hw_logical_pins.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\spp_feature_settings.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\dsw_feature_settings.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\productvariant.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\bldcustomsw.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\customswconsts.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\customswruntimeids.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\customswstaticfeatures.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\oem\bldnokia.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\RVCT2_2\../symcpp.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32std.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32cmn.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32const.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32err.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32def.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32lang.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32capability.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32des8.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32des16.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32cmn.inl -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32std.inl -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\ecom\ImplementationProxy.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \Carbide\PeninputPluginKr\inc\PeninputPluginKr.hrh -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \Carbide\PeninputPluginKr\inc\PeninputPluginKr.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32base.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32base.inl -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \s60\mw\inputmethods\inc\AknFepPenInputImePlugin.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\ECom\ECom.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\s32std.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\s32strm.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\s32strm.inl -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\s32std.inl -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\f32file.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32svr.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32hal.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\d32locd.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\partitions.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\d32locd.inl -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32notif.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32ldr.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32event.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32ktran.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32keys.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32debug.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\e32lmsg.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include\f32file.inl -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include/ecom/ecomerrorcodes.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include/ecom/ecomresolverparams.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include/ecom/ecomresolverparams.inl -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include/ecom/implementationinformation.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include/s32std.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include/f32file.h -\EPOC32\BUILD\Carbide\PeninputPluginKr\group\PENINPUTPLUGINKR\ARMV5\udeb\PeninputPluginKrProxy.o: \epoc32\include/ecom/implementationinformation.inl diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/inc/PeninputImePluginKr.h --- a/fep/aknfep/peninputplugins/PeninputPluginKr/inc/PeninputImePluginKr.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef PENINPUTIMEPLUGINKR_H -#define PENINPUTIMEPLUGINKR_H - -// INCLUDES -#include -#include - -// CLASS DECLARATION - -/** - * CPeninputImePluginKr - * - */ -class CPeninputImePluginKr : public CBase - { -public: - // Constructors and destructor - - /** - * Destructor. - */ - ~CPeninputImePluginKr(); - - /** - * Two-phased constructor. - */ - static CPeninputImePluginKr* NewL(); - - /** - * Two-phased constructor. - */ - static CPeninputImePluginKr* NewLC(); - -private: - - /** - * Constructor for performing 1st stage construction - */ - CPeninputImePluginKr(); - - /** - * EPOC default constructor for performing 2nd stage construction - */ - void ConstructL(); - - }; - -#endif // PENINPUTIMEPLUGINKR_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/inc/PeninputPluginKr.h --- a/fep/aknfep/peninputplugins/PeninputPluginKr/inc/PeninputPluginKr.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,228 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef __PENINPUTPLUGINKR_H__ -#define __PENINPUTPLUGINKR_H__ - -#include // CBase -#include // TBuf -#include -#include - -class RPeninputServer; -class CPtiEngine; -class CPluginKrFepManagerBase; - -class CPeninputPluginKr : public CAknFepPenInputImePlugin - { -public: - - static CPeninputPluginKr* NewLC(TAny* aInitParams); - - static CPeninputPluginKr* NewL(TAny* aInitParams); - - virtual ~CPeninputPluginKr(); - -private: - - CPeninputPluginKr(RPeninputServer* aServer); - - void ConstructL(); - -private: // from CAknFepPenInputImePlugin - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLanguage Language that layout UI need to support - * @param aMode Speicifed layout UI mode to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - virtual MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TLanguage aLanguage, - TInt aMode, - const TDesC8& aData, - const TBool aIsSplitView = EFalse); - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLayoutId Speicifed layout UI id to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - virtual MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TInt aLayoutId, - const TDesC8& aData); - - /** - * Activate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - virtual void Activate(); - - /** - * Deactivate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - virtual void DeActivate(); - - /** - * Get current IME plugin implementation ID. - * - * @since S60 v3.2 - * - * @return IME plugin implementation id. - */ - virtual TInt ImeImplId(); - - /** - * Get current layout UI implementation id. - * - * @since S60 v3.2 - * - * @return None. - */ - virtual TInt LayoutUiImplId(); - - /** - * Handle pen input server event. - * - * @param aEventId The event id, defined in - * @param aData The event related data. - * @since S60 v3.2 - * - * @return None. - */ - virtual TBool HandleServerEventL( - TInt aEventId, - const TDesC& aData); - - /** - * Get suppored layout UI modes(VKB/HWR). - * - * @since S60 v3.2 - * - * @return Supported modes. - */ - virtual TInt SupportModes( - CPtiEngine* aPtiEngine, - RArray& aSupportList) const; - - /** - * Get current layout UI mode. - * - * @since S60 v3.2 - * - * @return Current layout UI mode. - */ - virtual TInt CurrentMode() const; - - /** - * Handle the menu command.The menu is launched by FEP - * The menu command is first passed to IME plugin, if - * this function return EFalse, FEP handles it defaultly. - * - * @param aCommandId The menu command id - * @return ETrue if IME plugin handled the command; - * EFalse otherwise. - */ - virtual TBool HandleMenuCommandL(TInt aCommandId); - - /** - * Dynamiclly update menu items during it displays. - * - * aMenuPane The menu pane pointer. - * @return None. - */ - virtual void DynInitMenuPaneL( - CAknFepUiInterfaceMenuPane* aMenuPane); - - -private: - - void FindUiLayoutImplementationL(); - - CPluginKrFepManagerBase* GetPluginUiL( TInt aMode ); - - TInt SupportModesL( - CPtiEngine* /*aPtiEngine*/, - RArray& aSupportList) const; - - CPluginKrFepManagerBase* CPeninputPluginKr::GetCurrentUi(); - - /** - * Get VKB UI interface - * - * @return VKB UI pointer - */ - CPluginKrFepManagerBase* GetVkbUiL(); - - /** - * Get Itut UI interface - * - * @return Itut UI pointer - */ - CPluginKrFepManagerBase* GetItutUiL(); - - /** - * Get FSQ UI interface - * - * @return FSQ UI pointer - */ - CPluginKrFepManagerBase* GetFSQUiL(TInt aLang); - - void ShowListQueryL( const TInt aResourceId ); - -private: - - RPeninputServer& iPeninputServer; - - RArray iUiLayoutImpIdList; - - TInt iPenInputMode; - - /** - * Pen input server pointer. Not own. - */ - RPointerArray iAllUiManagers; - - CPluginKrFepManagerBase* iPluginKrFepManager; - - CRepository* iRepository; - - TInt iResId; - - }; - -#endif // __PENINPUTPLUGINKR_H__ - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/inc/PeninputPluginKr.hrh --- a/fep/aknfep/peninputplugins/PeninputPluginKr/inc/PeninputPluginKr.hrh Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef PENINPUTPLUGINKR_HRH_ -#define PENINPUTPLUGINKR_HRH_ - -#include - -#define KAknFepImePluginImplementationId 0xE95A395D -#define KHwrLayoutInterfaceId 0x102072FC - -enum TLayoutUiImplId - { - KVkbUiId = 0xEB339F5D, - KItutUiId = 0x2000b101, - KFsqUiId = 0xEB339F5E, - KFsqUiEngId = 0x2001114D - }; - -enum TPeninputPluginKrCmd - { - EPeninputPluginKrDoubleConsonentCmd=EAknCmdEnd - }; - - -#endif /* PENINPUTPLUGINKR_HRH_ */ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/inc/PeninputPluginKr.pan --- a/fep/aknfep/peninputplugins/PeninputPluginKr/inc/PeninputPluginKr.pan Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef __PENINPUTPLUGINKR_PAN__ -#define __PENINPUTPLUGINKR_PAN__ - -// Data Types - -enum TPeninputPluginKrPanic - { - EPeninputPluginKrNullPointer - }; - -// Function Prototypes - -GLREF_C void Panic(TPeninputPluginKrPanic aPanic); - -#endif // __PENINPUTPLUGINKR_PAN__ - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/inc/PeninputPluginKrDbg.h --- a/fep/aknfep/peninputplugins/PeninputPluginKr/inc/PeninputPluginKrDbg.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef __PENINPUTPLUGINKRDBG_H__ -#define __PENINPUTPLUGINKRDBG_H__ - -#ifdef _DEBUG -#include - #if __WINS__ - #define LOG_ASSERT(a) RDebug::Print(_L("PKQC: "a)); __ASSERT_DEBUG(EFalse,User::Panic(_L("PKQC: Not Implemented"),__LINE__)) - #define LOG(a) RDebug::Print(_L("PKQC: "a)) - #define LOG1(a,b) RDebug::Print(_L("PKQC: "a),b) - #define LOG2(a,b,c) RDebug::Print(_L("PKQC: "a),b,c) - #define LOG3(a,b,c,d) RDebug::Print(_L("PKQC: "a),b,c,d) - #define LOG4(a,b,c,d,e) RDebug::Print(_L("PKQC: "a),b,c,d,e) - #else - #define LOG_ASSERT(a) RDebug::Print(_L(a)); __ASSERT_DEBUG(EFalse,User::Panic(_L("PKQC: Not Implemented"),__LINE__)) - #define LOG(a) RDebug::Print(_L(a)) - #define LOG1(a,b) RDebug::Print(_L(a),b) - #define LOG2(a,b,c) RDebug::Print(_L(a),b,c) - #define LOG3(a,b,c,d) RDebug::Print(_L(a),b,c,d) - #define LOG4(a,b,c,d,e) RDebug::Print(_L(a),b,c,d,e) - #endif -#else - #define LOG_ASSERT(a) - #define LOG(a) - #define LOG1(a,b) - #define LOG2(a,b,c) - #define LOG3(a,b,c,d) - #define LOG4(a,b,c,d,e) -#endif - -#endif /* __PENINPUTPLUGINKRDBG_H__ */ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/inc/PluginKrFepManagerBase.h --- a/fep/aknfep/peninputplugins/PeninputPluginKr/inc/PluginKrFepManagerBase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,158 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef PLUGINKRFEPMANAGERBASE_H -#define PLUGINKRFEPMANAGERBASE_H - -#include -#include -#include -#include - -class CPeninputPluginKr; -class RPeninputServer; -class CRepository; -class CAknEdwinState; - -class CPluginKrFepManagerBase : public CBase, public MAknFepManagerInterface - { -public: - - virtual ~CPluginKrFepManagerBase(); - -protected: - - CPluginKrFepManagerBase( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer); - - void ConstructL(); - -private: - - virtual void SetMode( - TInt aMode, - TBool aPredictive, - TBool aQwertyInputMode, - TInt aKeyboardType = EPtiKeyboardNone); - - virtual void SetCase(TCase aCase); - - virtual void SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap); - - virtual TBool HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey); - - virtual void HandleCommandL(TInt aCommandId); - - virtual void HandleCommandL(TInt aCommandId, TInt aParam); - - virtual void CloseUI(); - - virtual void ExpireMultitapTimer(); - - virtual TBool IsValidNumericLongKeyPress(TInt aKey) const; - - virtual void AddTextToUserDictionaryL(const TDesC& aText); - - virtual void GetFormatOfFepInlineText( - TCharFormat& aFormat, - TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter) const; - - virtual TInt SupportLanguage(TInt aMode) const; - - virtual void SetInputLanguageL(TLanguage aLanguage); - - virtual TBool IsValidShiftKeyPress() const; - - virtual void SetEditorContext(TInt aContext); - - virtual void ActivateUI(); - - virtual void SetFepAwareEditorText(const TFepInputContextFieldData& /*aIcfData*/); - - virtual TInt EditorMaxLength(); - - virtual void ResourceChanged(TInt aType); - - virtual void SetNextFepUI(MAknFepManagerInterface* /*aNextUi*/); - - virtual void SetStarKeyFlag( TBool aSet ); - - virtual TBool IsValidFnKeyPress() const - { - return EFalse; - }; - virtual TBool IsValidLongChrKeyPress() const - { - return EFalse; - }; -public: - - virtual void OnInit(); - - virtual void RetrieveEditorMaxLength(); - - virtual void UpdateRange( TInt aRange ); - - virtual void UpdateCaseMode( TInt aCaseMode ); - -protected: - - void SendCommandToServer( TInt aCommandId ); - - void SendCommandToServer( TInt aCommandId, TInt aParam ); - - void SendCommandToServer(TInt aCommandId, const TDesC8& aParam); - - void SetLayoutRange(const CAknEdwinState* aEditorState); - - void SetLayoutPermitedRanges( TInt aPermittedMode ); - - TBool SupportNativeNumberRange(); - -protected: - - CPeninputPluginKr& iOwner; - - RPeninputServer& iPenInputServer; - - TInt iPermittedRange; - - TInt iHkbMode; - - TInt iSuggestedRange; - - TLanguage iLanguage; - -private: - - CRepository* iRepository; - - TInt iMaxEditorLength; - - TInt iLastCase; - - TInt iLastRange; - - MAknFepManagerInterface* iHkbUi; - - TInt iPermittedMode; - }; - -#endif // PLUGINKRFEPMANAGERBASE_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/inc/PluginKrFepManagerHwr.h --- a/fep/aknfep/peninputplugins/PeninputPluginKr/inc/PluginKrFepManagerHwr.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef PLUGINKRFEPMANAGERHWR_H -#define PLUGINKRFEPMANAGERHWR_H - -#include -#include -#include "PluginKrFepManagerBase.h" - -class CPluginKrFepManagerHwr : public CPluginKrFepManagerBase - { -public: - - static CPluginKrFepManagerHwr* NewLC( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer); - - static CPluginKrFepManagerHwr* NewL( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer); - - virtual ~CPluginKrFepManagerHwr(); - -private: - - CPluginKrFepManagerHwr( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer); - - void ConstructL(); - - }; - -#endif // PLUGINKRFEPMANAGERHWR_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/inc/PluginKrFepManagerItut.h --- a/fep/aknfep/peninputplugins/PeninputPluginKr/inc/PluginKrFepManagerItut.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef PLUGINKRFEPMANAGERITUT_H -#define PLUGINKRFEPMANAGERITUT_H - -#include -#include -#include "PluginKrFepManagerBase.h" - -class PeninputImePluginKr; - -class CPluginKrFepManagerItut : public CPluginKrFepManagerBase - { -public: - - static CPluginKrFepManagerItut* NewLC( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer); - - static CPluginKrFepManagerItut* NewL( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer); - - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength,TEventCode aEventCode = EEventKey); - - - virtual ~CPluginKrFepManagerItut(); - -private: - - CPluginKrFepManagerItut( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer); - - void ConstructL(); - - }; - -#endif // PLUGINKRFEPMANAGERVKB_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/inc/PluginKrFepManagerVkb.h --- a/fep/aknfep/peninputplugins/PeninputPluginKr/inc/PluginKrFepManagerVkb.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef PLUGINKRFEPMANAGERVKB_H -#define PLUGINKRFEPMANAGERVKB_H - -#include -#include -#include "PluginKrFepManagerBase.h" - -class CPluginKrFepManagerVkb : public CPluginKrFepManagerBase - { -public: - - static CPluginKrFepManagerVkb* NewLC( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer); - - static CPluginKrFepManagerVkb* NewL( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer); - - virtual ~CPluginKrFepManagerVkb(); - -private: - - CPluginKrFepManagerVkb( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer); - - void ConstructL(); - - }; - -#endif // PLUGINKRFEPMANAGERVKB_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_EKA2.pkg --- a/fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_EKA2.pkg Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -; -; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -; All rights reserved. -; This component and the accompanying materials are made available -; under the terms of "Eclipse Public License v1.0"" -; which accompanies this distribution, and is available -; at the URL "http://www.eclipse.org/legal/epl-v10.html". -; -; Initial Contributors: -; Nokia Corporation - initial contribution. -; -; Contributors: -; -; Description: -; -; Installation file for PeninputPluginKr dll -; -; This is an auto-generated PKG file by Carbide. -; This file uses variables specific to Carbide builds that will not work -; on command-line builds. If you want to use this generated PKG file from the -; command-line tools you will need to modify the variables with the appropriate -; values: $(EPOCROOT), $(PLATFORM), $(TARGET) - -; -; UID is the dll's UID -; -#{"PeninputPluginKr DLL"},(0xE95A395D),1,0,0 - - -;Localised Vendor name -%{"Vendor-EN"} - -;Unique Vendor name -:"Vendor" - -"\epoc32\release\ARMV5\UDEB\PeninputPluginKr.dll"-"!:\Sys\Bin\PeninputPluginKr.dll" -"\epoc32\data\Z\resource\fep\PeninputPluginKrRes.r01"-"!:\resource\fep\PeninputPluginKrRes.r01" -"\epoc32\data\Z\resource\fep\PeninputPluginKrRes.r65"-"!:\resource\fep\PeninputPluginKrRes.r65" diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_stub.pkg --- a/fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_stub.pkg Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -; -; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -; All rights reserved. -; This component and the accompanying materials are made available -; under the terms of "Eclipse Public License v1.0"" -; which accompanies this distribution, and is available -; at the URL "http://www.eclipse.org/legal/epl-v10.html". -; -; Initial Contributors: -; Nokia Corporation - initial contribution. -; -; Contributors: -; -; Description: -; -; Installation file for PeninputPluginKr dll -; -; This is an auto-generated PKG file by Carbide. -; This file uses variables specific to Carbide builds that will not work -; on command-line builds. If you want to use this generated PKG file from the -; command-line tools you will need to modify the variables with the appropriate -; values: $(EPOCROOT), $(PLATFORM), $(TARGET) - -; -; UID is the dll's UID -; -#{"PeninputPluginKr DLL"},(0xE95A395D),1,0,0, TYPE=SA - - -;Localised Vendor name -%{"Vendor-EN"} - -;Unique Vendor name -:"Vendor" - -"\epoc32\release\ARMV5\UDEB\PeninputPluginKr.dll"-"!:\Sys\Bin\PeninputPluginKr.dll" -"\epoc32\data\Z\resource\fep\PeninputPluginKrRes.r01"-"!:\resource\fep\PeninputPluginKrRes.r01" -"\epoc32\data\Z\resource\fep\PeninputPluginKrRes.r65"-"!:\resource\fep\PeninputPluginKrRes.r65" diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_stub.sis Binary file fep/aknfep/peninputplugins/PeninputPluginKr/sis/PeninputPluginKr_stub.sis has changed diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/src/PeninputPluginKr.cpp --- a/fep/aknfep/peninputplugins/PeninputPluginKr/src/PeninputPluginKr.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,640 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include - -#include "PeninputPluginKrDbg.h" -#include "PeninputPluginKr.hrh" // CPeninputPluginKr -#include "PeninputPluginKr.h" // CPeninputPluginKr -#include "PeninputPluginKr.pan" // panic codes -#include "PluginKrFepManagerBase.h" // panic codes -#include "PluginKrFepManagerHwr.h" -#include "PluginKrFepManagerVkb.h" -#include "PluginKrFepManagerItut.h" - -//_LIT(KFscImeName, "Korean FSC"); -//_LIT(KHwrImeName, "Korean HWR"); -_LIT(KVkbImeName, "Korean VKB"); -_LIT(KFsqImeName, "Korean FSQ"); -//_LIT(KFsqImeNameEng, "English FSQ"); -_LIT(KItutImeName, "Korean ITUT"); - -_LIT(KPeninputPluginKrResourceFileName, "z:\\resource\\fep\\PeninputPluginKrRes.rsc"); - -const TInt KItutUiIndex = 0; -const TInt KVkbUiIndex = 1; -const TInt KFSQUiIndex = 2; -//const TInt KFSQUiEngIndex = 3; -const TInt KInvalidImplId = 0; - -LOCAL_C void Cleanup( TAny* aAny ) - { - RImplInfoPtrArray* implArray = - reinterpret_cast< RImplInfoPtrArray*> ( aAny ); - implArray->ResetAndDestroy(); - implArray->Close(); - } - -// --------------------------------------------------------------------------- -// Constructors & Destructors -// --------------------------------------------------------------------------- -// - -CPeninputPluginKr* CPeninputPluginKr::NewLC(TAny* aInitParams) - { - CPeninputPluginKr* self = new (ELeave) CPeninputPluginKr( - static_cast(aInitParams)); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -CPeninputPluginKr* CPeninputPluginKr::NewL(TAny* aInitParams) - { - CPeninputPluginKr* self = CPeninputPluginKr::NewLC(aInitParams); - CleanupStack::Pop(self); - return self; - } - -CPeninputPluginKr::CPeninputPluginKr(RPeninputServer* aServer) - : iPeninputServer(*aServer) - { - } - -void CPeninputPluginKr::ConstructL() - { - /* - LOG("FEP.IMEPLG.KR.ConstructL"); - FindUiLayoutImplementationL(); - */ - FindUiLayoutImplementationL(); - //Append NULL to save HWR manager position - iAllUiManagers.Append(NULL); - //Append NULL to save VKB manager position - iAllUiManagers.Append(NULL); - //Append NULL to save ITUT manager position - iAllUiManagers.Append(NULL); - //Append NULL to save Mini ITUT manager position - iAllUiManagers.Append(NULL); - //Append NULL to save FSQ manager position - iAllUiManagers.Append(NULL); - - TFileName resourceName(KPeninputPluginKrResourceFileName); - CCoeEnv* coeEnv = CCoeEnv::Static(); - BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resourceName); - iResId = coeEnv->AddResourceFileL(resourceName); - - iRepository=CRepository::NewL(KCRUidPtiKoreanQwertyCore); - - } - -CPeninputPluginKr::~CPeninputPluginKr() - { - delete iRepository; - CCoeEnv::Static()->DeleteResourceFile(iResId); - DeActivate(); - iUiLayoutImpIdList.Close(); - delete iPluginKrFepManager; - iAllUiManagers.ResetAndDestroy(); - REComSession::FinalClose();//cleanup ecom - } - -// --------------------------------------------------------------------------- -// from CAknFepPenInputImePlugin -// --------------------------------------------------------------------------- -// - -MAknFepManagerInterface* CPeninputPluginKr::GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TLanguage aLanguage, - TInt aMode, - const TDesC8& /*aData*/, - const TBool /*aIsSplitView*/ ) - { - iFepManager = aFepManager; - iLanguage = aLanguage; - CPluginKrFepManagerBase* fepmanager = NULL; - - TUid layoutId; - TInt i; - - switch(aMode) - { - case EPluginInputModeVkb: - layoutId.iUid = KVkbUiId; - fepmanager = GetVkbUiL(); - break; - /* - case EPluginInputModeItut: - layoutId.iUid = KItutUiId; - fepmanager = GetItutUiL(); - break;*/ - - case EPluginInputModeFSQ: - { - /*if(iLanguage == ELangEnglish) - { - layoutId.iUid = KFsqUiEngId; - } - else*/ - { - layoutId.iUid = KFsqUiId; - } - fepmanager = GetFSQUiL(aLanguage); - } - break; - default: - return NULL; - } - - for(i = 0; i < iUiLayoutImpIdList.Count(); ++i) - { - if(iUiLayoutImpIdList[i] == layoutId.iUid ) - { - break; - } - } - - if( i < iUiLayoutImpIdList.Count() ) - { - iPenInputMode = aMode; - TInt errCode = iPeninputServer.SetUiLayoutId(layoutId); - if( errCode == KErrNone ) - { - fepmanager->OnInit(); - return fepmanager; - } - } - - return NULL; - } - -MAknFepManagerInterface* CPeninputPluginKr::GetInputMethodUiL( - MAknFepManagerUIInterface* /*aFepManager*/, - TInt /*aLayoutId*/, - const TDesC8& /*aData*/) - { - LOG("FEP.IMEPLG.KR.GetInputMethodUiL"); - MAknFepManagerInterface* ret(NULL); - return ret; - } - -void CPeninputPluginKr::Activate() - { - LOG("FEP.IMEPLG.KR.Activate"); - iPeninputServer.ActivateLayout(ETrue); - } - -void CPeninputPluginKr::DeActivate() - { - LOG("FEP.IMEPLG.KR.DeActivate"); - if (&iPeninputServer && iPeninputServer.IsVisible()) - { - iPeninputServer.ActivateLayout(EFalse); - } - } - -TInt CPeninputPluginKr::ImeImplId() - { - LOG("FEP.IMEPLG.KR.ImeImplId"); - return KAknFepImePluginImplementationId; - } - -TInt CPeninputPluginKr::LayoutUiImplId() - { - LOG("FEP.IMEPLG.KR.LayoutUiImplId"); - TInt id; - switch ( iPenInputMode ) - { - case EPluginInputModeVkb: - { - id = KVkbUiId; - } - break; - case EPluginInputModeFSQ: - { - id = KFsqUiId; - } - break; - case EPluginInputModeItut: - { - id = KItutUiId; - } - - break; - default: - { - id = KInvalidImplId; - } - break; - } - return id; - } - -TBool CPeninputPluginKr::HandleServerEventL( - TInt aEventId, - const TDesC& aData) - { - LOG1("FEP.IMEPLG.KR.HandleServerEventL %d",aEventId); - TBool bHandled = EFalse; - switch ( aEventId ) - { - case ESignalLayoutICFLengthChanged: - { - GetCurrentUi()->RetrieveEditorMaxLength(); - } - break; - case ESignalCaseMode: - { - TInt data = *(TInt*)( aData.Ptr() ); - if (data>=ECaseInvalide) - { - GetCurrentUi()->UpdateCaseMode( data ); - } - } - break; - default: - break; - } - - return bHandled; - } - -TInt CPeninputPluginKr::SupportModes( - CPtiEngine* aPtiEngine, - RArray& aSupportList) const - { - LOG("FEP.IMEPLG.KR.SupportModes"); - TRAPD( ret, SupportModesL( aPtiEngine, aSupportList ) ); - return ret; - } - -TInt CPeninputPluginKr::CurrentMode() const - { - LOG("FEP.IMEPLG.KR.CurrentMode"); - return iPenInputMode; - } - -TBool CPeninputPluginKr::HandleMenuCommandL(TInt aCommandId) - { - LOG("FEP.IMEPLG.KR.HandleMenuCommandL"); - TInt ret(EFalse); - if (aCommandId==EPeninputPluginKrDoubleConsonentCmd) - { - iRepository->Set(EDblConsonentOnSetting,1); - TRAP_IGNORE(ShowListQueryL(R_AKNEXQUERY_MULTI_SELECTION_LIST_QUERY)); - iRepository->Set(EDblConsonentOnSetting,0); - ret=ETrue; - } - return ret; - } - -void CPeninputPluginKr::DynInitMenuPaneL( - CAknFepUiInterfaceMenuPane* aMenuPane) - { - LOG("FEP.IMEPLG.KR.DynInitMenuPaneL"); - TInt index; - /* - if ((iPenInputMode == EPluginInputModeVkb || - iPenInputMode == EPluginInputModeFSQ) && - aMenuPane->MenuItemExists(EPenInputCmdSetting, index)) - { - aMenuPane->SetItemDimmed(EPenInputCmdSetting, EFalse); - } - aMenuPane->SetItemDimmed(EPenInputCmdHwrTraining, ETrue); - */ - if ( - ( iLanguage == ELangKorean ) && - (iPenInputMode == EPluginInputModeVkb || - iPenInputMode == EPluginInputModeFSQ)) - { - aMenuPane->MenuItemExists(EFepInputCmdHelp, index); - if (index!=KErrNotFound) - { - TBuf<255> menuStr; - StringLoader::Load(menuStr, R_PENINPUT_PLUGIN_KR_DOUBLECONSONENT_SETTING); - CAknFepUiInterfaceMenuPane::SItemData data; - data.iCommandId=EPeninputPluginKrDoubleConsonentCmd; - data.iCascadeId=0; - data.iFlags=0; - data.iText=menuStr.Mid(1, menuStr.Length() - 1); - aMenuPane->InsertMenuItemL(data,index); - } - } - } - -// --------------------------------------------------------------------------- -// Internal Utilities -// --------------------------------------------------------------------------- -// - -void CPeninputPluginKr::FindUiLayoutImplementationL() - { - RImplInfoPtrArray infoArray; - TUid id; - id.iUid = KHwrLayoutInterfaceId; - - iUiLayoutImpIdList.Reset(); - CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) ); - REComSession::ListImplementationsL(id, infoArray); - - LOG1("FEP.IMEPLG.KR.FindUiLayoutImplementationL %d",infoArray.Count()); - for (TInt i = 0; i < infoArray.Count(); ++i) - { - LOG1("FEP.IMEPLG.KR. 0x%08X",infoArray[i]->ImplementationUid().iUid); -#ifdef _DEBUG - TPtrC ptr(infoArray[i]->DisplayName()); - LOG1("FEP.IMEPLG.KR. %S",&ptr); -#endif - iUiLayoutImpIdList.AppendL(infoArray[i]->ImplementationUid().iUid); - - } - - CleanupStack::PopAndDestroy(&infoArray); // infoArray - } - -CPluginKrFepManagerBase* CPeninputPluginKr::GetPluginUiL( TInt /*aMode*/ ) - { - return NULL; - } - -TInt CPeninputPluginKr::SupportModesL( - CPtiEngine* /*aPtiEngine*/, - RArray& aSupportList) const - { - RImplInfoPtrArray infoArray; - TUid id; - id.iUid = KHwrLayoutInterfaceId; - //TBool hwr = EFalse; - TBool vkb = EFalse; - TBool itut = EFalse; - //TBool miniitut = EFalse; - TBool fsq = EFalse; - //TBool fsqEng = EFalse; - - CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) ); - REComSession::ListImplementationsL(id, infoArray); - - for (TInt i = 0; i < infoArray.Count(); ++i) - { - if(infoArray[i]->ImplementationUid().iUid == KVkbUiId ) - { - vkb = ETrue; - } - /* - if(infoArray[i]->ImplementationUid().iUid == KItutUiId ) - { - itut = ETrue; - }*/ - if(infoArray[i]->ImplementationUid().iUid == KFsqUiId ) - { - fsq = ETrue; - } - /*if(infoArray[i]->ImplementationUid().iUid == KFsqUiEngId ) - { - fsqEng = ETrue; - }*/ - } - - TImePlguinImplDetail detail; - - detail.iImplementationId = KAknFepImePluginImplementationId; - - if( vkb ) - { - detail.iMode = EPluginInputModeVkb; - detail.iMeritValue = EImeMerit_Preferred; - detail.iDisplayName.Copy(KVkbImeName()); - detail.iLanguage = ELangKorean; - aSupportList.Append(detail); - } - - if( itut ) - { - detail.iMode = EPluginInputModeItut; - detail.iMeritValue = EImeMerit_Preferred; - detail.iDisplayName.Copy(KItutImeName()); - detail.iLanguage = ELangKorean; - aSupportList.Append(detail); - } - - if( fsq ) - { - detail.iMode = EPluginInputModeFSQ; - detail.iMeritValue = EImeMerit_Preferred; - detail.iDisplayName.Copy(KFsqImeName()); - detail.iLanguage = ELangKorean; - aSupportList.Append(detail); - } - /*if( fsqEng ) - { - detail.iMode = EPluginInputModeFSQ; - detail.iMeritValue = EImeMerit_Preferred; - detail.iDisplayName.Copy(KFsqImeNameEng()); - detail.iLanguage = ELangEnglish; - aSupportList.Append(detail); - }*/ - - CleanupStack::PopAndDestroy(&infoArray); // infoArray - - return 0; - } - -inline CPluginKrFepManagerBase* CPeninputPluginKr::GetCurrentUi() - { - switch ( iPenInputMode ) - { - case EPluginInputModeVkb: - return iAllUiManagers[KVkbUiIndex]; - case EPluginInputModeItut: - return iAllUiManagers[KItutUiIndex]; - case EPluginInputModeFSQ: - { - /*if(iLanguage == ELangEnglish) - { - return iAllUiManagers[KFSQUiEngIndex]; - } - else*/ - { - return iAllUiManagers[KFSQUiIndex]; - } - } - default: - return NULL; - } - } - - -// ----------------------------------------------------------------------------- -// CPeninputPluginKr::GetVkbUi -// Get VKB UI interface. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginKrFepManagerBase* CPeninputPluginKr::GetVkbUiL() - { - if( !iAllUiManagers[KVkbUiIndex] ) - { - iAllUiManagers[KVkbUiIndex] = CPluginKrFepManagerVkb::NewL(*this, iPeninputServer); - } - - return iAllUiManagers[KVkbUiIndex]; - } - -// ----------------------------------------------------------------------------- -// CPeninputPluginKr::GetItutUi -// Get Itut UI interface. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginKrFepManagerBase* CPeninputPluginKr::GetItutUiL() - { - if( iAllUiManagers[KItutUiIndex] == NULL ) - { - iAllUiManagers[KItutUiIndex] = CPluginKrFepManagerItut::NewL(*this, iPeninputServer); - } - - return iAllUiManagers[KItutUiIndex]; - } - -// ----------------------------------------------------------------------------- -// CPeninputPluginKr::GetFSQUi -// Get FSQ UI interface. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginKrFepManagerBase* CPeninputPluginKr::GetFSQUiL(TInt aLang) - { - if( iAllUiManagers[KFSQUiIndex] == NULL ) - { - iAllUiManagers[KFSQUiIndex] = CPluginKrFepManagerVkb::NewL(*this, iPeninputServer); - } - - /* if( iAllUiManagers[KFSQUiEngIndex] == NULL ) - { - iAllUiManagers[KFSQUiEngIndex] = CPluginKrFepManagerVkb::NewL(*this, iPeninputServer); - }*/ - - /*if (aLang == ELangEnglish) - { - return iAllUiManagers[KFSQUiEngIndex]; - } - else*/ - { - return iAllUiManagers[KFSQUiIndex]; - } - } - -void CPeninputPluginKr::ShowListQueryL(const TInt aResourceId) - { - CArrayFixFlat* arraySelected= - new (ELeave) CArrayFixFlat(7); - CleanupStack::PushL(arraySelected); - CAknListQueryDialog* dlg= - new (ELeave) CAknListQueryDialog(arraySelected); - dlg->PrepareLC(aResourceId); - - TInt set; - if (iRepository->Get(EDblConsonentSsangKiyeok,set)==KErrNone) - { - if (set) arraySelected->AppendL(0); - } - if (iRepository->Get(EDblConsonentSsangTikeut,set)==KErrNone) - { - if (set) arraySelected->AppendL(1); - } - if (iRepository->Get(EDblConsonentSsangPieup,set)==KErrNone) - { - if (set) arraySelected->AppendL(2); - } - if (iRepository->Get(EDblConsonentSsangSios,set)==KErrNone) - { - if (set) arraySelected->AppendL(3); - } - if (iRepository->Get(EDblConsonentSsangCieuc,set)==KErrNone) - { - if (set) arraySelected->AppendL(4); - } - if (iRepository->Get(EDblConsonentYaPlusI,set)==KErrNone) - { - if (set) arraySelected->AppendL(5); - } - if (iRepository->Get(EDblConsonentYuPlusI,set)==KErrNone) - { - if (set) arraySelected->AppendL(6); - } - dlg->ListBox()->SetSelectionIndexesL(arraySelected); - - if (dlg->RunLD()) - { - iRepository->Set(EDblConsonentSsangKiyeok,0); - iRepository->Set(EDblConsonentSsangTikeut,0); - iRepository->Set(EDblConsonentSsangPieup,0); - iRepository->Set(EDblConsonentSsangSios,0); - iRepository->Set(EDblConsonentSsangCieuc,0); - iRepository->Set(EDblConsonentYaPlusI,0); - iRepository->Set(EDblConsonentYuPlusI,0); - - for (TInt i=0;iCount();i++) - { - switch (arraySelected->At(i)) - { - case 0: - iRepository->Set(EDblConsonentSsangKiyeok,1); - break; - case 1: - iRepository->Set(EDblConsonentSsangTikeut,1); - break; - case 2: - iRepository->Set(EDblConsonentSsangPieup,1); - break; - case 3: - iRepository->Set(EDblConsonentSsangSios,1); - break; - case 4: - iRepository->Set(EDblConsonentSsangCieuc,1); - break; - case 5: - iRepository->Set(EDblConsonentYaPlusI,1); - break; - case 6: - iRepository->Set(EDblConsonentYuPlusI,1); - break; - default: - break; - } - } - } - CleanupStack::PopAndDestroy(arraySelected); - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/src/PeninputPluginKrDllMain.cpp --- a/fep/aknfep/peninputplugins/PeninputPluginKr/src/PeninputPluginKrDllMain.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include // GLDEF_C -#include "PeninputPluginKr.pan" // panic codes - -// Global Functions - -GLDEF_C void Panic(TPeninputPluginKrPanic aPanic) -// Panics the thread with given panic code - { - User::Panic(_L("PeninputPluginKr"), aPanic); - } - -// Exported Functions - -#ifndef EKA2 // for EKA1 only -EXPORT_C TInt E32Dll(TDllReason /*aReason*/) -// Called when the DLL is loaded and unloaded. Note: have to define -// epoccalldllentrypoints in MMP file to get this called in THUMB. - { - return KErrNone; - } -#endif - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/src/PeninputPluginKrProxy.cpp --- a/fep/aknfep/peninputplugins/PeninputPluginKr/src/PeninputPluginKrProxy.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include - -// User includes -#include "PeninputPluginKr.hrh" -#include "PeninputPluginKr.h" - -// Map the interface UIDs to implementation factory functions -const TImplementationProxy ImplementationTable[] = - { - //lint !e611 - IMPLEMENTATION_PROXY_ENTRY( KAknFepImePluginImplementationId, CPeninputPluginKr::NewL ) - }; - -// Exported proxy for instantiation method resolution -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - - return ImplementationTable; - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerBase.cpp --- a/fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,587 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include -#include - -#include - -#include "PeninputPluginKrDbg.h" -#include "PeninputPluginKr.hrh" -#include "PluginKrFepManagerBase.h" - -// --------------------------------------------------------------------------- -// Constructors & Destructors -// --------------------------------------------------------------------------- -// - -CPluginKrFepManagerBase::CPluginKrFepManagerBase( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer) - : iOwner(aOwner), - iPenInputServer(aPenInputServer), - iSuggestedRange(ERangeInvalid), - iLastRange(ERangeInvalid) - { - } - -void CPluginKrFepManagerBase::ConstructL() - { - - } - -CPluginKrFepManagerBase::~CPluginKrFepManagerBase() - { - delete iRepository; - } - -// --------------------------------------------------------------------------- -// from MAknFepManagerInterface -// --------------------------------------------------------------------------- -// - -void CPluginKrFepManagerBase::SetMode( - TInt aMode, - TBool aPredictive, - TBool aQwertyInputMode, - TInt /*aKeyboardType*/ ) - { - LOG3("FEP.IMEPLG.KR.Base.SetMode %d %d %d",aMode,aPredictive,aQwertyInputMode); - iHkbUi->SetMode(aMode, aPredictive, aQwertyInputMode); - } - -void CPluginKrFepManagerBase::SetCase(TCase aCase) - { - LOG1("FEP.IMEPLG.KR.Base.SetCase %d",aCase); - iHkbUi->SetCase(aCase); - } - -void CPluginKrFepManagerBase::SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap) - { - LOG1("FEP.IMEPLG.KR.Base.SetNumberModeKeyMappingL %d",aAknEditorNumericKeymap); - SendCommandToServer(ECmdPenInputEditorNumericKeyMap, aAknEditorNumericKeymap); - } - -TBool CPluginKrFepManagerBase::HandleKeyL( - TInt aKey, - TKeyPressLength aLength, - TEventCode /*aEventCode*/ ) - { - LOG2("FEP.IMEPLG.KR.Base.HandleKeyL %d",aKey,aLength); - return iHkbUi->HandleKeyL( aKey, aLength ); - } - -void CPluginKrFepManagerBase::HandleCommandL( - TInt aCommandId) - { - LOG1("FEP.IMEPLG.KR.Base.HandleCommandL %d",aCommandId); - SendCommandToServer( aCommandId ); - } - -void CPluginKrFepManagerBase::HandleCommandL( - TInt aCommandId, - TInt aParam) - { - switch ( aCommandId ) - { - case ECmdPenInputRange: - { - LOG1("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputRange %d",iHkbMode); - if (aParam&EPRCFind) LOG("FEP.IMEPLG.KR.Base EPRCFind"); - if (aParam&ECangJie) LOG("FEP.IMEPLG.KR.Base ECangJie"); - if (aParam&EZhuyinFind) LOG("FEP.IMEPLG.KR.Base EZhuyinFind"); - if (aParam&EStrokeFind) LOG("FEP.IMEPLG.KR.Base EStrokeFind"); - if (aParam&EPinyin) LOG("FEP.IMEPLG.KR.Base EPinyin"); - if (aParam&EZhuyin) LOG("FEP.IMEPLG.KR.Base EZhuyin"); - if (aParam&EStroke) LOG("FEP.IMEPLG.KR.Base EStroke"); - if (aParam&ELatin) LOG("FEP.IMEPLG.KR.Base ELatin"); - if (aParam&ENumber) LOG("FEP.IMEPLG.KR.Base ENumber"); - if (aParam&EHiraganaKanji) LOG("FEP.IMEPLG.KR.Base EHiraganaKanji"); - if (aParam&EKatakana) LOG("FEP.IMEPLG.KR.Base EKatakana"); - if (aParam&EHiragana) LOG("FEP.IMEPLG.KR.Base EHiragana"); - if (aParam&EHindi) LOG("FEP.IMEPLG.KR.Base EHindi"); - if (aParam&ENativeNumber) LOG("FEP.IMEPLG.KR.Base ENativeNumber"); - if (aParam&EHangul) LOG("FEP.IMEPLG.KR.Base EHangul"); - if (aParam&ELatinText) LOG("FEP.IMEPLG.KR.Base ELatinText"); - if (aParam&ELatinUpper) LOG("FEP.IMEPLG.KR.Base ELatinUpper"); - if (aParam&ELatinLower) LOG("FEP.IMEPLG.KR.Base ELatinLower"); - if (aParam&ECangJieNormal) LOG("FEP.IMEPLG.KR.Base ECangJieNormal"); - if (aParam&ECangJieEasy) LOG("FEP.IMEPLG.KR.Base ECangJieEasy"); - if (aParam&ECangJieAdvanced) LOG("FEP.IMEPLG.KR.Base ECangJieAdvanced"); - iHkbMode = aParam; - } - break; - case ECmdPenInputPermittedRange: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputPermittedRange"); - if (aParam&EAknEditorTextInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorTextInputMode"); - if (aParam&EAknEditorNumericInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorNumericInputMode"); - if (aParam&EAknEditorSecretAlphaInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorSecretAlphaInputMode"); - if (aParam&EAknEditorKatakanaInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorKatakanaInputMode"); - if (aParam&EAknEditorFullWidthTextInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorFullWidthTextInputMode"); - if (aParam&EAknEditorFullWidthNumericInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorFullWidthNumericInputMode"); - if (aParam&EAknEditorFullWidthKatakanaInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorFullWidthKatakanaInputMode"); - if (aParam&EAknEditorHiraganaKanjiInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorHiraganaKanjiInputMode"); - if (aParam&EAknEditorHiraganaInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorHiraganaInputMode"); - if (aParam&EAknEditorHalfWidthTextInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorHalfWidthTextInputMode"); - if (aParam&EAknEditorHangulInputMode) LOG("FEP.IMEPLG.KR.Base EAknEditorHangulInputMode"); - iLastCase = ECaseInvalide; - SetLayoutPermitedRanges( aParam ); - } - break; - case ECmdPenInputEditorState: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputEditorState"); - SetLayoutRange(reinterpret_cast(aParam)); - } - break; - case ECmdPenInputSetWindowPos: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputSetWindowPos"); - //SetLayoutPosition(*reinterpret_cast(aParam)); - } - break; - case ECmdPenInputCaseMode: - LOG1("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputCaseMode %d",aParam); - //if( aParam != iLastCase ) - { - SendCommandToServer( ECmdPenInputCase, aParam ); - iLastCase = aParam; - } - break; - case ECmdPenInputEditorCustomNumericKeyMap: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputEditorCustomNumericKeyMap"); - TDesC* res = (TDesC*)aParam; - TPtrC8 param; - param.Set((TUint8*)res->Ptr(), res->Size()); - SendCommandToServer( aCommandId, param ); - SetNumberModeKeyMappingL((TAknEditorNumericKeymap)EKeymapFromResource); - } - break; - case ECmdPenInputSuggestRange: - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputSuggestRange"); - iSuggestedRange = aParam; - if( iSuggestedRange == ERangeAccent ) - { - iSuggestedRange = ERangeEnglish; - } - break; - case ECmdPenInputSendEditorTextAndCurPos: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputSendEditorTextAndCurPos"); - TFepInputContextFieldData* pIcfData = - reinterpret_cast( aParam ); - - TInt dataSize = sizeof( TFepInputContextFieldData ); - TInt textSize = pIcfData->iText.Size(); - - HBufC8* buf = HBufC8::NewLC(dataSize + textSize + 2*sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(dataSize); - writeStream.WriteInt32L(textSize); - - const TUint8* pData = reinterpret_cast( pIcfData ); - writeStream.WriteL( pData, dataSize ); - - const TUint8* pText = reinterpret_cast( pIcfData->iText.Ptr() ); - writeStream.WriteL( pText, textSize ); - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - case ECmdPenInputSetPromptText: - { - LOG("FEP.IMEPLG.KR.Base.HandleCommandL ECmdPenInputSetPromptText"); - TFepPromptText* pPromptData = - reinterpret_cast( aParam ); - - TInt dataSize = sizeof( TFepPromptText ); - TInt textSize = 0; - - if (pPromptData->iText.Length()) - { - textSize = pPromptData->iText.Size(); - } - - HBufC8* buf = HBufC8::NewLC(dataSize + textSize + 2*sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(dataSize); - writeStream.WriteInt32L(textSize); - - const TUint8* pData = reinterpret_cast( pPromptData ); - writeStream.WriteL( pData, dataSize ); - - if (textSize != 0) - { - const TUint16* pText = pPromptData->iText.Ptr(); - writeStream.WriteL( pText, textSize/2 ); - } - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - case ECmdPenInputFingerMatchIndicator: - { - if (aParam) // ITUT - { - TFepIndicatorInfo* pIndicatorData = - reinterpret_cast( aParam ); - - HBufC8* buf = HBufC8::NewLC(4 * sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(pIndicatorData->iIndicatorImgID); - writeStream.WriteInt32L(pIndicatorData->iIndicatorMaskID); - writeStream.WriteInt32L(pIndicatorData->iIndicatorTextImgID); - writeStream.WriteInt32L(pIndicatorData->iIndicatorTextMaskID); - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - else - { - SendCommandToServer( aCommandId, 0 ); - } - } - break; - default: - LOG2("FEP.IMEPLG.KR.Base.HandleCommandL %d 0x%08x",aCommandId,aParam); - SendCommandToServer( aCommandId, aParam ); - break; - } - } - -void CPluginKrFepManagerBase::CloseUI() - { - LOG("FEP.IMEPLG.KR.Base.CloseUI"); - if ( iPenInputServer.IsVisible() ) - { - iPenInputServer.ActivateLayout( EFalse ); - } - } - -void CPluginKrFepManagerBase::ExpireMultitapTimer() - { - LOG("FEP.IMEPLG.KR.Base.ExpireMultitapTimer"); - } - -TBool CPluginKrFepManagerBase::IsValidNumericLongKeyPress(TInt aKey) const - { - LOG1("FEP.IMEPLG.KR.Base.IsValidNumericLongKeyPress %d",aKey); - return EFalse; - } - -void CPluginKrFepManagerBase::AddTextToUserDictionaryL(const TDesC& aText) - { - TPtrC ptr(aText); - LOG1("FEP.IMEPLG.KR.Base.AddTextToUserDictionaryL %S",&ptr); - } - -void CPluginKrFepManagerBase::GetFormatOfFepInlineText( - TCharFormat& /*aFormat*/, - TInt& /*aNumberOfCharactersWithSameFormat*/, - TInt aPositionOfCharacter) const - { - LOG1("FEP.IMEPLG.KR.Base.GetFormatOfFepInlineText %S",aPositionOfCharacter); - } - -TInt CPluginKrFepManagerBase::SupportLanguage(TInt aMode) const - { - LOG2("FEP.IMEPLG.KR.Base.SupportLanguage %d - %d",aMode,iLanguage); - return iLanguage; - } - -void CPluginKrFepManagerBase::SetInputLanguageL(TLanguage aLanguage) - { - LOG1("FEP.IMEPLG.KR.Base.SetInputLanguageL %d",aLanguage); - iLanguage = aLanguage; - SendCommandToServer(ECmdPenInputLanguage, (TInt)aLanguage); - } - -TBool CPluginKrFepManagerBase::IsValidShiftKeyPress() const - { - LOG("FEP.IMEPLG.KR.Base.IsValidShiftKeyPress"); - return EFalse; - } - -void CPluginKrFepManagerBase::SetEditorContext(TInt aContext) - { - LOG1("FEP.IMEPLG.KR.Base.SetEditorContext %d",aContext); - } - -void CPluginKrFepManagerBase::ActivateUI() - { - LOG("FEP.IMEPLG.KR.Base.ActivateUI"); - iPenInputServer.ActivateLayout( ETrue ); - } - -void CPluginKrFepManagerBase::SetFepAwareEditorText( - const TFepInputContextFieldData& /*aIcfData*/) - { - LOG("FEP.IMEPLG.KR.Base.SetFepAwareEditorText"); - } - -TInt CPluginKrFepManagerBase::EditorMaxLength() - { - LOG1("FEP.IMEPLG.KR.Base.EditorMaxLength - %d",iMaxEditorLength); - return iMaxEditorLength; - } - -void CPluginKrFepManagerBase::ResourceChanged(TInt aType) - { - LOG1("FEP.IMEPLG.KR.Base.ResourceChanged - %d",aType); - iPenInputServer.ResourceChanged(aType); - } - -void CPluginKrFepManagerBase::SetNextFepUI( - MAknFepManagerInterface* aNextUi) - { - LOG("FEP.IMEPLG.KR.Base.SetNextFepUI"); - iHkbUi = aNextUi; - } - -void CPluginKrFepManagerBase::SetStarKeyFlag( TBool aSet ) - { - LOG1("FEP.IMEPLG.KR.Base.SetStarKeyFlag %d",aSet); - } - -// --------------------------------------------------------------------------- -// External Functions -// --------------------------------------------------------------------------- -// - -void CPluginKrFepManagerBase::OnInit() - { - - } - -void CPluginKrFepManagerBase::RetrieveEditorMaxLength() - { - - } - -void CPluginKrFepManagerBase::UpdateRange( TInt aRange ) - { - iLastRange=aRange; - } - -void CPluginKrFepManagerBase::UpdateCaseMode( TInt aCaseMode ) - { - iLastCase = aCaseMode; - } - -// --------------------------------------------------------------------------- -// Internal Functions -// --------------------------------------------------------------------------- -// - -void CPluginKrFepManagerBase::SendCommandToServer( TInt aCommandId ) - { - iPenInputServer.HandleCommand( aCommandId ); - } - -void CPluginKrFepManagerBase::SendCommandToServer( TInt aCommandId, TInt aParam ) - { - TBuf8 buf; - buf.Append( (TUint8*)&aParam, sizeof(TInt) ); - SendCommandToServer( aCommandId, buf ); - } - -void CPluginKrFepManagerBase::SendCommandToServer(TInt aCommandId, const TDesC8& aParam) - { - iPenInputServer.HandleCommand( aCommandId, aParam ); - } - -void CPluginKrFepManagerBase::SetLayoutRange(const CAknEdwinState* aEditorState) - { - //calculate permitted ranges - // TODO: Korean specific permitted range can be added - if (aEditorState) - { - if( aEditorState->Flags() & EAknEditorFlagLatinInputModesOnly ) - { - iPermittedRange &= ~ERangeNative; - iPermittedRange &= ~ERangeNativeNumber; - iPermittedRange &= ~ERangeSymbol; - } - /* - if ( iPermittedMode != EAknEditorNumericInputMode - && !( aEditorState->Flags() & EAknEditorFlagLatinInputModesOnly ) ) - { - iPermittedRange &= ~ERangeEnglish; - } - */ - } - else // for MFNE editor - { - if ( iPermittedMode == EAknEditorNumericInputMode ) - { - iPermittedRange &= ~ERangeSymbol; - if( iHkbMode == ENumber ) - { - iPermittedRange = ERangeNumber; - } - else if ( iHkbMode == ENativeNumber ) - { - iPermittedRange = ERangeNativeNumber; - } - } - } - - - SendCommandToServer( ECmdPenInputPermittedRange, iPermittedRange ); - - TInt priRange; - - switch( iHkbMode ) - { - case ECangJie: - case EStrokeFind: - case EStroke: - case EPinyin: - case EZhuyin: - case EZhuyinFind: - case EHindi: - case EHangul: - { - priRange = ERangeNative; - } - break; - case ENumber: - { - priRange = ERangeNumber; - } - break; - case ENativeNumber: - { - priRange = ERangeNativeNumber; - } - break; - case EPRCFind: - case ELatin: - case ELatinText: - case ELatinUpper: - case ELatinLower: - { - priRange = ERangeEnglish; - } - break; - default: - priRange = iPermittedRange & ERangeNative ? ERangeNative : ERangeEnglish; - break; - } - - if( iSuggestedRange != ERangeInvalid && (iSuggestedRange & iPermittedRange) ) - { - priRange = iSuggestedRange; - iSuggestedRange = ERangeInvalid; - } - - if (iLastRange) - { - priRange=iLastRange; - } - - SendCommandToServer( ECmdPenInputRange, priRange ); - } - -void CPluginKrFepManagerBase::SetLayoutPermitedRanges( TInt aPermittedMode ) - { - iPermittedMode = aPermittedMode; - - // Not derived from edwin - if ( aPermittedMode == EAknEditorNumericInputMode ) - { - if ( SupportNativeNumberRange() ) - { - iPermittedRange = ERangeNativeNumber; - } - iPermittedRange |= ERangeNumber; - } - - else if ( aPermittedMode & EAknEditorTextInputMode ) - { - // Derived from edwin and EAknEditorTextInputMode - iPermittedRange = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol | - ERangeNativeNumber; - } - else if ( aPermittedMode & EAknEditorSecretAlphaInputMode ) - { - // Derived from EAknEditorSecretAlphaInputMode - iPermittedRange = ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else - { - iPermittedRange = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol | - ERangeNativeNumber; - } - } - -TBool CPluginKrFepManagerBase::SupportNativeNumberRange() - { - if ( iLanguage == ELangArabic || iLanguage == ELangFarsi || - iLanguage == ELangUrdu || iLanguage == ELangHindi || - iLanguage == ELangThai ) - { - return ETrue; - } - - return EFalse; - } - - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerHwr.cpp --- a/fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerHwr.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include "PluginKrFepManagerHwr.h" - -CPluginKrFepManagerHwr* CPluginKrFepManagerHwr::NewLC( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer) - { - CPluginKrFepManagerHwr* self = - new (ELeave) CPluginKrFepManagerHwr(aOwner,aPenInputServer); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -CPluginKrFepManagerHwr* CPluginKrFepManagerHwr::NewL( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer) - { - CPluginKrFepManagerHwr* self = - CPluginKrFepManagerHwr::NewLC(aOwner,aPenInputServer); - CleanupStack::Pop(); // self; - return self; - } - -CPluginKrFepManagerHwr::CPluginKrFepManagerHwr( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer) - : CPluginKrFepManagerBase(aOwner,aPenInputServer) - { - } - -void CPluginKrFepManagerHwr::ConstructL() - { - } - -CPluginKrFepManagerHwr::~CPluginKrFepManagerHwr() - { - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerItut.cpp --- a/fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerItut.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include "PeninputImePluginKr.h" -#include "eikon.hrh" - -#include //CAknEdwinState -#include - - -#include "PluginKrFepManagerItut.h" - -CPluginKrFepManagerItut* CPluginKrFepManagerItut::NewLC( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer) - { - CPluginKrFepManagerItut* self = - new (ELeave) CPluginKrFepManagerItut(aOwner,aPenInputServer); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -CPluginKrFepManagerItut* CPluginKrFepManagerItut::NewL( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer) - { - CPluginKrFepManagerItut* self = - CPluginKrFepManagerItut::NewLC(aOwner,aPenInputServer); - CleanupStack::Pop(); // self; - return self; - } - -TBool CPluginKrFepManagerItut::HandleKeyL( TInt aKey, TKeyPressLength aLength, - TEventCode /*aEventCode*/) - { - TInt ret; - TPckgC msgdata(aKey); - - if (aLength == ELongKeyPress) - { - iPenInputServer.HandleCommand(ECmdPenInputFingerLongKeyPress, msgdata, ret); - } - else - { - iPenInputServer.HandleCommand(ECmdPenInputFingerKeyPress, msgdata, ret); - } - - return ret == KErrNone ? ETrue:EFalse; - } - -CPluginKrFepManagerItut::CPluginKrFepManagerItut( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer) - : CPluginKrFepManagerBase(aOwner,aPenInputServer) - { - } - -void CPluginKrFepManagerItut::ConstructL() - { - } - -CPluginKrFepManagerItut::~CPluginKrFepManagerItut() - { - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerVkb.cpp --- a/fep/aknfep/peninputplugins/PeninputPluginKr/src/PluginKrFepManagerVkb.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include "PluginKrFepManagerVkb.h" - -CPluginKrFepManagerVkb* CPluginKrFepManagerVkb::NewLC( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer) - { - CPluginKrFepManagerVkb* self = - new (ELeave) CPluginKrFepManagerVkb(aOwner,aPenInputServer); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -CPluginKrFepManagerVkb* CPluginKrFepManagerVkb::NewL( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer) - { - CPluginKrFepManagerVkb* self = - CPluginKrFepManagerVkb::NewLC(aOwner,aPenInputServer); - CleanupStack::Pop(); // self; - return self; - } - -CPluginKrFepManagerVkb::CPluginKrFepManagerVkb( - CPeninputPluginKr& aOwner, - RPeninputServer& aPenInputServer) - : CPluginKrFepManagerBase(aOwner,aPenInputServer) - { - } - -void CPluginKrFepManagerVkb::ConstructL() - { - } - -CPluginKrFepManagerVkb::~CPluginKrFepManagerVkb() - { - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/group/bld.inf --- a/fep/aknfep/peninputplugins/peninputimeplugincn/group/bld.inf Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Build information file for project peninputimeplugincn -* -*/ - - - - - - - - - - - - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS - -PRJ_MMPFILES - -../group/peninputimeplugincn.mmp - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/group/peninputimeplugincn.mmp --- a/fep/aknfep/peninputplugins/peninputimeplugincn/group/peninputimeplugincn.mmp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Project definition file for project peninputimeplugincn -* -*/ - - - - - - - - - - - - -#include -#include - -TARGET peninputimeplugincn.dll -TARGETTYPE plugin -UID 0x10009D8D 0x10207361 - -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - -SOURCEPATH ../src - -SOURCE peninputimeplugincnproxy.cpp -SOURCE peninputimeplugincn.cpp -SOURCE pluginfepmanagerbase.cpp -SOURCE pluginfepmanagerhwr.cpp -SOURCE pluginfepmanagervkb.cpp - -userinclude ../inc - -// This is a SYSTEMINCLUDE macro containing the middleware -// layer specific include directories -MW_LAYER_SYSTEMINCLUDE - -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../../../inc -SYSTEMINCLUDE ../../../inc - - -SOURCEPATH ../srcdata - -START RESOURCE 10207361.rss -#ifdef SYMBIAN_SECURE_ECOM -TARGET peninputimeplugincn.rsc -#endif -END - - -LIBRARY euser.lib -LIBRARY ECom.lib -LIBRARY centralrepository.lib -LIBRARY eikcoctl.lib -LIBRARY estor.lib -LIBRARY FeatMgr.lib // feature manager -#ifdef RD_SCALABLE_UI_V2 -LIBRARY peninputclient.lib -#else -LIBRARY peninputserverstub.lib -#endif - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/inc/peninputimeplugincn.h --- a/fep/aknfep/peninputplugins/peninputimeplugincn/inc/peninputimeplugincn.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,272 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: input mode plugin header file -* -*/ - - - - - - - - - - - -#ifndef C_PENINPUTIMEPLUGINCHN_H -#define C_PENINPUTIMEPLUGINCHN_H - -// System includes -#include -#include -#include -#include -#include -//#include -#include -#include - -// Forward declaration -class MAknFepManagerInterface; -class CAknEdwinState; -class CRepository; -class CPluginFepManagerBase; - -/** - * Pen input mode plugin chinese implementation - * - * @lib peninputimeplugincn.lib - * @since S60 v3.2 - */ -class CPenInputImePluginCn : public CAknFepPenInputImePlugin - { -public: - - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aInitParams Init data plugin, actually it is - * a pointer of RPeninputServer. - * @return Pointer to created CPenInputImePluginCn object - */ - static CPenInputImePluginCn* NewL(TAny* aInitParams); - - static CPenInputImePluginCn* NewLC(TAny* aInitParams); - - /** - * Destructor. - */ - ~CPenInputImePluginCn(); - -public: // From CAknFepPenInputImePlugin - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLanguage Language that layout UI need to support - * @param aMode Speicifed layout UI mode to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TLanguage aLanguage, - TInt aMode, - const TDesC8& aData, - const TBool aIsSplitView = EFalse); - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLayoutId Speicifed layout UI id to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TInt aLayoutId, - const TDesC8& aData); - - /** - * Activate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - void Activate(); - - /** - * Deactivate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - void DeActivate(); - - /** - * Get current IME plugin implementation ID. - * - * @since S60 v3.2 - * - * @return IME plugin implementation id. - */ - TInt ImeImplId(); - - /** - * Get current layout UI implementation id. - * - * @since S60 v3.2 - * - * @return None. - */ - TInt LayoutUiImplId(); - - /** - * Handle pen input server event. - * - * @param aEventId The event id, defined in - * @param aData The event related data. - * @since S60 v3.2 - * - * @return None. - */ - TBool HandleServerEventL(TInt aEventId, const TDesC& aData); - - /** - * Get suppored layout UI modes(VKB/HWR). - * - * @since S60 v3.2 - * - * @param aPtiEngine A pointer to ptiengine - * @param aSupportList A reference to result ime plugin list - * @return Meaningless. - */ - TInt SupportModes(CPtiEngine* aPtiEngine, - RArray& aSupportList) const; - - /** - * Get current layout UI mode. - * - * @since S60 v3.2 - * - * @return Current layout UI mode. - */ - TInt CurrentMode() const; - - /** - * Handle the menu command.The menu is launched by FEP - * The menu command is first passed to IME plugin, if - * this function return EFalse, FEP handles it defaultly. - * - * @param aCommandId The menu command id - * @return ETrue if IME plugin handled the command; - * EFalse otherwise. - */ - TBool HandleMenuCommandL(TInt aCommandId); - - /** - * Dynamiclly update menu items during it displays. - * - * aMenuPane The menu pane pointer. - * @return None. - */ - void DynInitMenuPaneL(CAknFepUiInterfaceMenuPane* aMenuPane); - -private: - - /** - * C++ default constructor. - * - * @param aServer Pen input server pointer - */ - CPenInputImePluginCn(RPeninputServer* aServer); - - /** - * By default Symbian 2nd phase constructor is private. - * - * @return None - */ - void ConstructL(); - - /** - * Enumuate all layout UI ids and save them to iUiLayoutImpIdList. - * - * @return None - */ - void FindUiLayoutImplementationL(); - - /** - * Get HWR UI interface - * - * @return HWR UI pointer - */ - CPluginFepManagerBase* GetPluginUiL( TInt aMode ); - - /** - * Get current UI interface - * - * @return current UI pointer - */ - inline CPluginFepManagerBase* GetCurrentUi(); - - /** - * Get suppored layout UI modes(VKB/HWR). - * - * @since S60 v3.2 - * - * @param aPtiEngine A pointer to ptiengine - * @param aSupportList A reference to result ime plugin list - * @return Meaningless. - */ - TInt SupportModesL(CPtiEngine* aPtiEngine, - RArray& aSupportList) const; - -private: - - /** - * Pen input server pointer. Not own. - */ - RPeninputServer* iPenInputServer; - - /** - * Pen input server pointer. Not own. - */ - RArray iUiLayoutImpIdList; - - /** - * Current layout UI mode. - */ - TInt iPenInputMode; - - /** - * Pen input server pointer. Not own. - */ - CPluginFepManagerBase* iPluginUiManager; - }; - -#include "peninputimeplugincn.inl" - -#endif //C_PENINPUTIMEPLUGINCHN_H - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/inc/peninputimeplugincn.inl --- a/fep/aknfep/peninputplugins/peninputimeplugincn/inc/peninputimeplugincn.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Inline file for Ime plugin China. -* -*/ - - - - - - - - - - - - -const TInt KHwrLayoutInterfaceId = 0x102072FC; // This is for layout interface -const TInt KInputMethodImplementationId = 0x10207361; -const TInt KHwrUiId = 0x10281856; -const TInt KFScUiId = 0x2000B132; -const TInt KVkbUiId = 0x1028185C; -const TInt KFsqUiId = 0x2001114E; -const TInt KFingerHwrUiId = 0x2001CB83; - -inline CPluginFepManagerBase* CPenInputImePluginCn::GetCurrentUi() - { - switch(iPenInputMode) - { - case EPluginInputModeHwr: - case EPluginInputModeVkb: - case EPluginInputModeFSc: - case EPluginInputModeFingerHwr: - case EPluginInputModeFSQ: - return iPluginUiManager; - default: - return NULL; - } - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/inc/peninputimeplugincndebug.h --- a/fep/aknfep/peninputplugins/peninputimeplugincn/inc/peninputimeplugincndebug.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Debug utils API -* -*/ - - - - - - - - - - - - -#ifndef PENINPUTIMEPLUGINCHSDEBUG_H -#define PENINPUTIMEPLUGINCHSDEBUG_H - -#ifdef _DEBUG - #define PRINT( txt ) RDebug::Print( txt ); - #define PRINTF( txt ) RDebug::Print txt; - #define PRINT1( txt, arg1 ) RDebug::Print( txt, arg1 ); - #define PRINT2( txt, arg1, arg2 ) RDebug::Print( txt, arg1, arg2 ); - #define PRINT3( txt, arg1, arg2, arg3 ) RDebug::Print( txt, arg1, arg2, arg3 ); -#else - #define PRINT( txt ) - #define PRINTF( txt ) - #define PRINT1( txt, arg1 ) - #define PRINT2( txt, arg1, arg2 ) - #define PRINT3( txt, arg1, arg2, arg3 ) -#endif - - -// Record into log files -#define USE_FILE_LOGGER - -#if defined (_DEBUG) && !defined(USE_FILE_LOGGER) - #define USE_SERIAL_LOGGER -#endif - -#if defined (USE_FILE_LOGGER) - #include - _LIT(KLogFile,"imepluginchn.txt"); - _LIT(KLogFolder,"peninputime"); - #define LOGTEXT(AAA) RFileLogger::Write(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - AAA) - #define LOGTEXT2(AAA,BBB) RFileLogger::WriteFormat(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - TRefByValue(AAA), \ - BBB) - #define LOGTEXT3(AAA,BBB,CCC) RFileLogger::WriteFormat(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - TRefByValue(AAA), \ - BBB, \ - CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) RFileLogger::HexDump(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - AAA,\ - BBB,\ - CCC,\ - DDD) -#elif defined (USE_SERIAL_LOGGER) - #include - #define LOGTEXT(AAA) RDebug::Print(AAA) - #define LOGTEXT2(AAA,BBB) RDebug::Print(AAA,BBB) - #define LOGTEXT3(AAA,BBB,CCC) RDebug::Print(AAA,BBB,CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) -#else - #define LOGTEXT(AAA) - #define LOGTEXT2(AAA,BBB) - #define LOGTEXT3(AAA,BBB,CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) -#endif - -#endif // PENINPUTIMEPLUGINCHSDEBUG - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/inc/pluginfepmanagerbase.h --- a/fep/aknfep/peninputplugins/peninputimeplugincn/inc/pluginfepmanagerbase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,473 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Layout UI interface base class -* -*/ - - - - - - - - - - - -#ifndef C_PLUGINFEPMANAGERBASE_H -#define C_PLUGINFEPMANAGERBASE_H - -// System includes -#include -#include -#include -#include -#include - -//Forward declaration -class CPenInputImePluginCn; -class RPeninputServer; -class CAknEdwinState; -class CRepository; -/** - * CPluginFepManagerBase is the layout UI interface base class. - * It is something like a "proxy" class of layout UI plugin, sending - * commands from FEP to layout UI plugin. - * - * @lib peninputimeplugincn.lib - * @since S60 v3.2 - */ -class CPluginFepManagerBase: public CBase, public MAknFepManagerInterface - { -public: - - /** - * Destructor. - */ - ~CPluginFepManagerBase(); - - /** - * Initalize UI when first time starting up. - * The first time means when the instance created. - * - * @since S60 v3.2 - * - * @return None. - */ - virtual void OnInit(); - - /** - * Explicitly get ICF max length from layout UI and save the - * value to iMaxEditorLength. - * - * @since S60 v3.2 - * - * @return None. - */ - void RetrieveEditorMaxLength(); - - /** - * Update local copy of case mode when - * user change case in layout UI. - * - * @since S60 v3.2 - * - * @param aCaseMode The case mode to save locally. - * @return None. - */ - void UpdateCaseMode( TInt aCaseMode ); - -// From MAknFepManagerInterface - - /** - * Set layout UI current number mode key mapping. - * For example, 0-9 ; 0-9,*,# and etc. - * - * @since S60 v3.2 - * - * @param aAknEditorNumericKeymap Key mapping enum value. - * @return None. - */ - void SetNumberModeKeyMappingL( TAknEditorNumericKeymap aAknEditorNumericKeymap ); - - /** - * Handle key event. - * Since most plugin layout UIs are based on animation, they receive - * key and process key events before this function. - * - * @since S60 v3.2 - * - * @param aKey Key event code. - * @param aLength Key press length. - * @return ETrue if processed, EFalse otherwise. - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey ); - - /** - * Handle command come from FEP. - * - * @since S60 v3.2 - * - * @param aCommandId Command id. - * @return None - */ - void HandleCommandL( TInt aCommandId ); - - /** - * Handle command come from FEP. - * - * @since S60 v3.2 - * - * @param aCommandId Command id. - * @param aParam Command parameter. - * @return None. - */ - void HandleCommandL( TInt aCommandId, TInt aParam ); - - /** - * Close plugin layout UI. - * - * @since S60 v3.2 - * - * @return None. - */ - void CloseUI(); - - /** - * Activate plugin layout UI. - * - * @since S60 v3.2 - * - * @return None. - */ - void ActivateUI(); - - /** - * Get max text length of layout UI ICF control. - * - * @since S60 v3.2 - * @return Max ICF text length. - */ - TInt EditorMaxLength(); - - /** - * When screen size changes, SizeChanged is called by FEP. - * - * @since S60 v3.2 - * @return None. - */ - void ResourceChanged( TInt aType ); - - /** - * Set underlining UI. - * Since plugin layout UI and HKB can be used at same time, - * HKB UI layout need to be notified after plugin layout UI - * processes some events - * - * @since S60 v3.2 - * @param aNextUI The underlining UI pointer. - * @return None. - */ - void SetNextFepUI( MAknFepManagerInterface* aNextUi ); - - /** - * Get support language in sepecfied mode. - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aMode Input mode. - * @return Language supported. - */ - TInt SupportLanguage( TInt aMode ) const; - - /** - * Set current language, which is required by editor - * - * @since S60 v3.2 - * - * @param aLanguage Language to set. - * @return None. - */ - void SetInputLanguageL( TLanguage aLanguage ); - - /** - * Set editor text and cursor information to layout UI - * ICF control. - * - * @since S60 v3.2 - * @param aTotalTextLen Total text length in eidtor. - * @param aStartPos Offset of aText to the start of editor text. - * @param aCursorSel Cursor position. - * @param aText A part of editor text start from aStartPos. - * - * @return None. - */ - void SetFepAwareEditorText( const TFepInputContextFieldData& aIcfData ); - - /** - * Set layout UI mode. - * The method leaves here only for compatibility - * - * @since S60 v3.2 - * - * @param aMode Mode to set. - * @param aPredictive Whether the current mode support predictive. - * @param aWwertyInputMode Whether the current HKB is qwerty. - * @return None. - */ -#ifdef RD_INTELLIGENT_TEXT_INPUT - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode, TInt aKeyboardType); -#else - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode); -#endif - -#ifdef RD_INTELLIGENT_TEXT_INPUT - virtual TBool IsValidFnKeyPress() const; - virtual TBool IsValidLongChrKeyPress() const; -#endif - - /** - * Set layout UI current case. - * The method leaves here only for compatibility. Since plugin layout - * UI is different from HKB tranditional UI, they use something like - * "case mode" other than case which is set by a FEP command. - * - * @since S60 v3.2 - * - * @param aCase Case to set. - * @return None. - */ - void SetCase( TCase aCase ); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return None. - */ - void ExpireMultitapTimer(); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aKey The key presssed. - * @return ETrue if long press, EFalse otherwise. - */ - TBool IsValidNumericLongKeyPress( TInt aKey ) const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aText Text to add to user dictionary. - * @return None. - */ - void AddTextToUserDictionaryL( const TDesC& aText ); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aFormat On return, contains the formatting to - * apply to the inline text (or to a portion of it). - * @param aNumberOfCharactersWithSameFormat On return, - contains the number of characters in the inline - text (starting at aPositionOfCharacter) - which have the same formatting - * @param aPositionOfCharacter Start position within the inline text - * @return None. - */ - void GetFormatOfFepInlineText( TCharFormat& aFormat, - TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter ) const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return ETrue if valid, EFalse otherwise. - */ - TBool IsValidShiftKeyPress() const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return None. - */ - void SetEditorContext( TInt aContext ); - - /** - * Set the Star key flag - * - * @param aSet TBool. - * @return None - */ - void SetStarKeyFlag( TBool aSet ); -protected: - - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin pointer. - * @param aPenInputServer Pen input server pointer - */ - CPluginFepManagerBase(CPenInputImePluginCn& aOwner, - RPeninputServer* aPenInputServer); - - /** - * By default Symbian 2nd phase constructor. - * - * @since S60 v3.2 - * @return None - */ - void BaseConstructL(); - - /** - * Set layout permited ranges. - * - * @param aPermittedMode Ranges of current editor allowed. - * @return None - */ - virtual void SetLayoutPermitedRanges( TInt aPermittedRanges ); - - /** - * Set layout primary range. - * - * @since S60 v3.2 - * @param aEditorState Current editor state. - * @return None - */ - virtual void SetLayoutRange( const CAknEdwinState* aEditorState ); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @return None - */ - void SendCommandToServer( TInt aCommandId ); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @param aParam The command param. - * @return None - */ - void SendCommandToServer( TInt aCommandId, TInt aParam ); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @param aParam The command param. - * @return None - */ - void SendCommandToServer( TInt aCommandId, const TDesC8& aParam ); - - /** - * Get layout UI last used range. - * - * @since S60 v3.2 - * @return Range last used. - */ - TInt LayoutLastUsedRange(); - - /** - * Set layout UI position. - * Move layout UI not to overlap with some editors. - * - * @since S60 v3.2 - * @param aBottomRight The bottom right position of layout UI. - * The value is only a suggest value, layout UI may adjust it. - * @return None. - */ - void SetLayoutPosition( const TRect& aParam ); - - /** - * Get Editor's local language. - * - * @since S60 v3.2 - * @param aEditorState The editor's .CAknEdwinState pointer - * @return Language code the editor requires. - */ - TLanguage GetLocalLanguage( const CAknEdwinState* aEditorState ) const; - -protected: - - /** - * IME plugin reference. - */ - CPenInputImePluginCn& iOwner; - - /** - * Pen input server pointer. Not own. - */ - RPeninputServer* iPenInputServer; - - /** - * The premitted range of current editor. - */ - TInt iPermittedRange; - - TInt iHkbMode; - /** - * The fep suggested range. The suggested value comes from - * previous touch input method. - */ - TInt iSuggestedRange; - - /** - * Current language. - */ - TLanguage iLanguage; - -private: - - /** - * Repository object used to get last used range. - */ - CRepository* iRepository; - - /** - * Local copy of ICF max text length. - */ - TInt iMaxEditorLength; - - /** - * Local copy of layout current case mode - */ - TInt iLastCase; - - /** - * Underlineing UI interface - */ - MAknFepManagerInterface* iHkbUi; - }; -#endif // C_PLUGINFEPMANAGERBASE_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/inc/pluginfepmanagerhwr.h --- a/fep/aknfep/peninputplugins/peninputimeplugincn/inc/pluginfepmanagerhwr.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: HWR layout UI class header -* -*/ - - - - - - - - - - - - -#ifndef C_PLUGINFEPMANAGERHWR_H -#define C_PLUGINFEPMANAGERHWR_H - -// System includes -#include - -// User includes -#include "pluginfepmanagerbase.h" - -//Forward declaration -class CPenInputImePluginCn; -class RPeninputServer; - -/** - * CPluginFepManagerHwr is the chinese HWR layout UI interface - * "proxy" class. - * - * @lib peninputimeplugincn.lib - * @since S60 v3.2 - */ -class CPluginFepManagerHwr : public CPluginFepManagerBase - { -public: - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - * @return Pointer to created CPluginFepManagerHwr object - */ - static CPluginFepManagerHwr* NewL(CPenInputImePluginCn& aOwner, - RPeninputServer* aPenInputServer); - - /** - * Set layout UI current number mode key mapping. - * For example, 0-9 ; 0-9,*,# and etc. - * - * @since S60 v3.2 - * - * @param aAknEditorNumericKeymap Key mapping enum value. - * @return None. - */ - void SetNumberModeKeyMappingL( TAknEditorNumericKeymap aAknEditorNumericKeymap ); - - /** - * Handle command come from FEP. - * - * @since S60 v3.2 - * - * @param aCommandId Command id. - * @param aParam Command parameter. - * @return None. - */ - void HandleCommandL( TInt aCommandId, TInt aParam ); - -private: - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - */ - CPluginFepManagerHwr(CPenInputImePluginCn& aOwner, - RPeninputServer* aPenInputServer); - - /** - * Set layout primary range. - * - * @since S60 v3.2 - * @param aEditorState Current editor state. - * @return None - */ - void SetLayoutRange(const CAknEdwinState* aEditorState); - - /** - * Flag to skin set number key mapping. - */ - TInt iNumberKeyMapping; - }; - -#endif // C_PLUGINFEPMANAGERHWR_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/inc/pluginfepmanagervkb.h --- a/fep/aknfep/peninputplugins/peninputimeplugincn/inc/pluginfepmanagervkb.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: VKB layout UI class header -* -*/ - - - - - - - - - - - -#ifndef C_PLUGINFEPMANAGERVKB_H -#define C_PLUGINFEPMANAGERVKB_H - -// System includes -#include - -// User includes -#include "pluginfepmanagerbase.h" - -class CPenInputImePluginCn; - -/** - * CPluginFepManagerHwr is the chinese VKB layout UI interface - * "proxy" class. - * - * @lib peninputimeplugincn.lib - * @since S60 v3.2 - */ -class CPluginFepManagerVkb : public CPluginFepManagerBase - { -public: - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - * @return Pointer to created CPluginFepManagerHwr object - */ - static CPluginFepManagerVkb* NewL( CPenInputImePluginCn& aOwner, - RPeninputServer* aPenInputServer); - -private: - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - */ - - CPluginFepManagerVkb(CPenInputImePluginCn& aOwner, - RPeninputServer* aPenInputServer); - }; -#endif // C_PLUGINFEPMANAGERVKB_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/src/peninputimeplugincn.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugincn/src/peninputimeplugincn.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,630 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Input mode plugin implementation file -* -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include -#include -#include -#include -#include -#include - -// User includes -#include "peninputimeplugincn.h" -#include "peninputimeplugincndebug.h" -#include "pluginfepmanagerhwr.h" -#include "pluginfepmanagervkb.h" -#include "aknfepuiinterface.h" - - - -const TInt KInvalidImplId = 0; - -_LIT(KFscImeName, "Chinese FSC"); -_LIT(KHwrImeName, "Chinese HWR"); -_LIT(KVkbImeName, "Chinese VKB"); -_LIT(KFsqImeName, "Chinese FSQ"); -_LIT(KFingerHwrImeName, "Chinese Fingerhwr"); - -//lint -esym( 960, 58, * ) lint notes: break used outside of a switch - -// Implementation of Class CPenInputImePluginCn - -// ----------------------------------------------------------------------------- -// RImplInfoPtrArray cleanup function -// ----------------------------------------------------------------------------- -// -void Cleanup( TAny* aAny ) - { - RImplInfoPtrArray* implArray = - reinterpret_cast< RImplInfoPtrArray*> ( aAny ); - implArray->ResetAndDestroy(); - implArray->Close(); - } - -// ======== MEMBER FUNCTIONS ======== - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginCn* CPenInputImePluginCn::NewL(TAny* aInitParams) - { - CPenInputImePluginCn* self = new(ELeave)CPenInputImePluginCn( - static_cast(aInitParams)); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::NewLC -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginCn* CPenInputImePluginCn::NewLC(TAny* aInitParams) - { - CPenInputImePluginCn* self = new(ELeave) CPenInputImePluginCn( - static_cast(aInitParams)); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::~CPenInputImePluginCn -// destructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginCn::~CPenInputImePluginCn() - { - DeActivate(); - iUiLayoutImpIdList.Close(); - delete iPluginUiManager; - REComSession::FinalClose();//cleanup ecom - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::GetInputMethodUiL -// Create layout UI interface -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -MAknFepManagerInterface* CPenInputImePluginCn::GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TLanguage aLanguage, - TInt aMode, - const TDesC8& /*aData*/, - const TBool aIsSplitView) - { - iFepManager = aFepManager; - iLanguage = aLanguage; - CPluginFepManagerBase* fepmanager = NULL; - - TUid layoutId; - TInt i; - - switch(aMode) - { - case EPluginInputModeFSc: - { - layoutId.iUid = KFScUiId; - } - break; - case EPluginInputModeHwr: - { - layoutId.iUid = KHwrUiId; - } - break; - case EPluginInputModeVkb: - { - layoutId.iUid = KVkbUiId; - } - break; - case EPluginInputModeFSQ: - { - layoutId.iUid = KFsqUiId; - } - break; - case EPluginInputModeFingerHwr: - { - layoutId.iUid = KFingerHwrUiId; - } - break; - default: - return NULL; - } - fepmanager = GetPluginUiL( aMode ); - - for(i = 0; i < iUiLayoutImpIdList.Count(); ++i) - { - if(iUiLayoutImpIdList[i] == layoutId.iUid ) - { - break; - } - } - - if( i < iUiLayoutImpIdList.Count() ) - { - iPenInputMode = aMode; - TInt errCode = iPenInputServer->SetUiLayoutId(layoutId); - if( errCode == KErrNone ) - { - fepmanager->OnInit(); - return fepmanager; - } - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::GetInputMethodUiL -// Create layout UI interface -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -MAknFepManagerInterface* CPenInputImePluginCn::GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TInt aLayoutId, - const TDesC8& /*aData*/) - { - iFepManager = aFepManager; - CPluginFepManagerBase* fepmanager = NULL; - TInt i; - TInt mode; - - if ( aLayoutId == KHwrUiId ) - { - mode = EPluginInputModeHwr; - } - else if( aLayoutId == KVkbUiId ) - { - mode = EPluginInputModeVkb; - } - else if (aLayoutId == KFScUiId) - { - mode = EPluginInputModeFSc; - } - else if( aLayoutId == KFsqUiId ) - { - mode = EPluginInputModeFSQ; - } - else if( aLayoutId == KFingerHwrUiId ) - { - mode = EPluginInputModeFingerHwr; - } - else - { - return NULL; - } - fepmanager = GetPluginUiL( mode ); - - for ( i = 0; i < iUiLayoutImpIdList.Count(); ++i ) - { - if ( iUiLayoutImpIdList[i] == aLayoutId ) - { - break; - } - } - - if ( i < iUiLayoutImpIdList.Count() ) - { - iPenInputMode = mode; - iPenInputServer->SetUiLayoutId(TUid::Uid(aLayoutId)); - fepmanager->OnInit(); - return fepmanager; - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::Activate -// Activate current IME plugin. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginCn::Activate() - { - if(iPenInputServer) - { - iPenInputServer->ActivateLayout(ETrue); - } - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::DeActivate -// Deactivate current IME plugin. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginCn::DeActivate() - { - if (iPenInputServer && iPenInputServer->IsVisible()) - { - iPenInputServer->ActivateLayout(EFalse); - } - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::ImeImplId -// Get current IME plugin implementation ID. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginCn::ImeImplId() - { - return KInputMethodImplementationId; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::LayoutUiImplId -// Get current layout UI implementation id. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginCn::LayoutUiImplId() - { - TInt id; - switch ( iPenInputMode ) - { - case EPluginInputModeHwr: - { - id = KHwrUiId; - } - break; - case EPluginInputModeVkb: - { - id = KVkbUiId; - } - break; - case EPluginInputModeFSc: - { - id = KFScUiId; - } - break; - case EPluginInputModeFSQ: - { - id = KFsqUiId; - } - break; - case EPluginInputModeFingerHwr: - { - id = KFingerHwrUiId; - } - break; - default: - { - id = KInvalidImplId; - } - break; - } - return id; - } - - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::SupportModes -// Get suppored layout UI modes(VKB/HWR). -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginCn::SupportModes(CPtiEngine* aPtiEngine, - RArray& aSupportList) const - { - TInt ret = 0; - TRAP_IGNORE( ret = SupportModesL( aPtiEngine, aSupportList ) ); - return ret; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::SupportModesL -// Get suppored layout UI modes(VKB/HWR). -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginCn::SupportModesL(CPtiEngine* /*aPtiEngine*/, - RArray& aSupportList) const - { - RImplInfoPtrArray infoArray; - TUid id; - id.iUid = KHwrLayoutInterfaceId; - TBool hwr = EFalse; - TBool vkb = EFalse; - TBool fsc = EFalse; - TBool fsq = EFalse; - TBool fingerhwr = EFalse; - - CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) ); - REComSession::ListImplementationsL(id, infoArray); - - for (TInt i = 0; i < infoArray.Count(); ++i) - { - if(infoArray[i]->ImplementationUid().iUid == KHwrUiId ) - { - hwr = ETrue; - } - - if (infoArray[i]->ImplementationUid().iUid == KVkbUiId - && FeatureManager::FeatureSupported(KFeatureIdVirtualKeyboardInput)) - { - vkb = ETrue; - } - if(infoArray[i]->ImplementationUid().iUid == KFScUiId ) - { - fsc = ETrue; - } - if (infoArray[i]->ImplementationUid().iUid == KFsqUiId - && FeatureManager::FeatureSupported(KFeatureIdVirtualFullscrQwertyInput)) - { - fsq = ETrue; - } - if (infoArray[i]->ImplementationUid().iUid == KFingerHwrUiId ) - { - fingerhwr = ETrue; - } - } - - TImePlguinImplDetail detail; - - detail.iImplementationId = KInputMethodImplementationId; - if( fsc ) - { - detail.iMode = EPluginInputModeFSc; - detail.iMeritValue = EImeMerit_Preferred; - detail.iDisplayName.Copy(KFscImeName()); - detail.iLanguage = ELangTaiwanChinese; - aSupportList.Append(detail); - detail.iLanguage = ELangHongKongChinese; - aSupportList.Append(detail); - detail.iLanguage = ELangPrcChinese; - aSupportList.Append(detail); - //detail.iLanguage = ELangEnglish; - //detail.iMeritValue = EImeMerit_NotUsed; - //aSupportList.Append(detail); - } - if( hwr ) - { - detail.iMode = EPluginInputModeHwr; - detail.iMeritValue = EImeMerit_Preferred; - detail.iDisplayName.Copy(KHwrImeName()); - detail.iLanguage = ELangTaiwanChinese; - aSupportList.Append(detail); - detail.iLanguage = ELangHongKongChinese; - aSupportList.Append(detail); - detail.iLanguage = ELangPrcChinese; - aSupportList.Append(detail); - //detail.iLanguage = ELangEnglish; - //detail.iMeritValue = EImeMerit_NotUsed; - //aSupportList.Append(detail); - } - - if( vkb ) - { - detail.iMode = EPluginInputModeVkb; - detail.iMeritValue = EImeMerit_Preferred; - detail.iDisplayName.Copy(KVkbImeName()); - detail.iLanguage = ELangTaiwanChinese; - aSupportList.Append(detail); - detail.iLanguage = ELangHongKongChinese; - aSupportList.Append(detail); - detail.iLanguage = ELangPrcChinese; - aSupportList.Append(detail); - //detail.iLanguage = ELangEnglish; - //detail.iMeritValue = EImeMerit_NotUsed; - //aSupportList.Append(detail); - } - - if( fsq ) - { - detail.iMode = EPluginInputModeFSQ; - detail.iMeritValue = EImeMerit_Preferred; - detail.iDisplayName.Copy(KFsqImeName()); - detail.iLanguage = ELangTaiwanChinese; - aSupportList.Append(detail); - detail.iLanguage = ELangHongKongChinese; - aSupportList.Append(detail); - detail.iLanguage = ELangPrcChinese; - aSupportList.Append(detail); - //detail.iLanguage = ELangEnglish; - //detail.iMeritValue = EImeMerit_NotUsed; - //aSupportList.Append(detail); - } - if( fingerhwr ) - { - detail.iMode = EPluginInputModeFingerHwr; - detail.iMeritValue = EImeMerit_Preferred; - detail.iDisplayName.Copy(KFingerHwrImeName()); - detail.iLanguage = ELangTaiwanChinese; - aSupportList.Append(detail); - detail.iLanguage = ELangHongKongChinese; - aSupportList.Append(detail); - detail.iLanguage = ELangPrcChinese; - aSupportList.Append(detail); - } - - CleanupStack::PopAndDestroy(&infoArray); // infoArray - - return 0; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::CurrentMode -// Get current layout UI mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginCn::CurrentMode() const - { - return iPenInputMode; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::HandleServerEventL -// Handle pen input server event.. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPenInputImePluginCn::HandleServerEventL(TInt aEventId, const TDesC& aData) - { - TBool bHandled = EFalse; - switch( aEventId ) - { - case ESignalLayoutICFLengthChanged: - { - GetCurrentUi()->RetrieveEditorMaxLength(); - } - break; - case ESignalCaseMode: - { - GetCurrentUi()->UpdateCaseMode(*(TInt*)(aData.Ptr())); //lint !e728 - } - break; - default: - break; - } - - return bHandled; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::HandleMenuCommandL -// Handle the menu command. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPenInputImePluginCn::HandleMenuCommandL(TInt /*aCommandId*/) - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::DynInitMenuPaneL -// Dynamiclly update menu items during it displays. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginCn::DynInitMenuPaneL(CAknFepUiInterfaceMenuPane* aMenuPane) - { - TInt index; - - if ((iPenInputMode == EPluginInputModeVkb || - iPenInputMode == EPluginInputModeFSQ) && - aMenuPane->MenuItemExists(EPenInputCmdSetting, index)) - { - aMenuPane->SetItemDimmed(EPenInputCmdSetting, EFalse); - } - aMenuPane->SetItemDimmed(EPenInputCmdHwrTraining, ETrue); - } - - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::CPenInputImePluginCn -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginCn::CPenInputImePluginCn(RPeninputServer* aHwrServer) -:iPenInputServer(aHwrServer) - { - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::ConstructL -// 2nd phase constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginCn::ConstructL() - { - FindUiLayoutImplementationL(); - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::FindUiLayoutImplementationL -// Enumuate all layout UI ids. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginCn::FindUiLayoutImplementationL() - { - RImplInfoPtrArray infoArray; - TUid id; - id.iUid = KHwrLayoutInterfaceId; - - iUiLayoutImpIdList.Reset(); - CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) ); - REComSession::ListImplementationsL(id, infoArray); - - for (TInt i = 0; i < infoArray.Count(); ++i) - { - iUiLayoutImpIdList.AppendL(infoArray[i]->ImplementationUid().iUid); - } - - CleanupStack::PopAndDestroy(&infoArray); // infoArray - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginCn::GetPluginUiL -// Get HWR UI interface. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase* CPenInputImePluginCn::GetPluginUiL( TInt aMode ) - { - delete iPluginUiManager; - iPluginUiManager = NULL; - - switch ( aMode ) - { - case EPluginInputModeFingerHwr: - case EPluginInputModeFSc: - case EPluginInputModeHwr: - { - return iPluginUiManager = CPluginFepManagerHwr::NewL(*this, iPenInputServer); - } - case EPluginInputModeVkb: - case EPluginInputModeFSQ: - { - return iPluginUiManager = CPluginFepManagerVkb::NewL(*this, iPenInputServer); - } - default: - { - return NULL; - } - } - } -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/src/peninputimeplugincnmain.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugincn/src/peninputimeplugincnmain.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation to E32Dll -* -*/ - - - - - - - - - - - - -#include - -/** DLL Entry point */ -#ifndef EKA2 -GLDEF_C TInt E32Dll( TDllReason /*aReason*/ ) - { - return( KErrNone ); - } -#endif - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/src/peninputimeplugincnproxy.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugincn/src/peninputimeplugincnproxy.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation to Proxy -* -*/ - - - - - - - - - - - - -// System includes -#include -#include - -// User includes -#include "peninputimeplugincn.h" - -// Map the interface UIDs to implementation factory functions -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(0x10207361, CPenInputImePluginCn::NewL) //lint !e611 - }; - -// Exported proxy for instantiation method resolution -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - - return ImplementationTable; - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagerbase.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagerbase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,743 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Layout UI interface base class implementation -* -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include // CAknEdwinState -#include -#include -#include -#include - -// User includes -#include "pluginfepmanagerbase.h" -#include "peninputimeplugincn.h" - -// ======== MEMBER FUNCTIONS ======== - - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CPluginFepManagerBase -// Destructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase::~CPluginFepManagerBase() - { - delete iRepository; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::OnInit -// Initalize UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::OnInit() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::RetrieveEditorMaxLength -// Explicitly get ICF max length from layout UI . -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::RetrieveEditorMaxLength() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::UpdateCaseMode -// Update local copy of case mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::UpdateCaseMode( TInt aCaseMode ) - { - iLastCase = aCaseMode; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetNumberModeKeyMappingL -// Set layout UI current number mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap) - { - SendCommandToServer(ECmdPenInputEditorNumericKeyMap, aAknEditorNumericKeymap); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleKeyL -// Handle key event. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::HandleKeyL( TInt aKey, TKeyPressLength aLength, TEventCode /*aEventCode*/ ) - { - return iHkbUi->HandleKeyL( aKey, aLength ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::HandleCommandL( TInt aCommandId ) - { - SendCommandToServer( aCommandId ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::HandleCommandL(TInt aCommandId,TInt aParam) - { - switch ( aCommandId ) - { - case ECmdPenInputRange: - { - iHkbMode = aParam; - } - break; - case ECmdPenInputPermittedRange: - { - iLastCase = ECaseInvalide; - SetLayoutPermitedRanges( aParam ); - } - break; - case ECmdPenInputEditorState: - { - SetLayoutRange(reinterpret_cast(aParam)); - } - break; - case ECmdPenInputSetWindowPos: - { - SetLayoutPosition(*reinterpret_cast(aParam)); - } - break; - case ECmdPenInputCaseMode: - //if( aParam != iLastCase ) - { - SendCommandToServer( ECmdPenInputCase, aParam ); - iLastCase = aParam; - } - break; - case ECmdPenInputEditorCustomNumericKeyMap: - { - TDesC* res = (TDesC*)aParam; - TPtrC8 param; - param.Set((TUint8*)res->Ptr(), res->Size()); - SendCommandToServer( aCommandId, param ); - SetNumberModeKeyMappingL((TAknEditorNumericKeymap)EKeymapFromResource); - } - break; - case ECmdPenInputSuggestRange: - iSuggestedRange = aParam; - if( iSuggestedRange == ERangeAccent ) - { - iSuggestedRange = ERangeEnglish; - } - break; - case ECmdPenInputSendEditorTextAndCurPos: - { - TFepInputContextFieldData* pIcfData = - reinterpret_cast( aParam ); - - TInt dataSize = sizeof( TFepInputContextFieldData ); - TInt textSize = pIcfData->iText.Size(); - - HBufC8* buf = HBufC8::NewLC(dataSize + textSize + 2*sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(dataSize); - writeStream.WriteInt32L(textSize); - - const TUint8* pData = reinterpret_cast( pIcfData ); - writeStream.WriteL( pData, dataSize ); - - const TUint8* pText = reinterpret_cast( pIcfData->iText.Ptr() ); - writeStream.WriteL( pText, textSize ); - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - case ECmdPenInputSetPromptText: - { - TFepPromptText* pPromptData = - reinterpret_cast( aParam ); - - TInt dataSize = sizeof( TFepPromptText ); - TInt textSize = 0; - - if (pPromptData->iText.Length()) - { - textSize = pPromptData->iText.Size(); - } - - HBufC8* buf = HBufC8::NewLC(dataSize + textSize + 2*sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(dataSize); - writeStream.WriteInt32L(textSize); - - const TUint8* pData = reinterpret_cast( pPromptData ); - writeStream.WriteL( pData, dataSize ); - - if (textSize != 0) - { - const TUint16* pText = pPromptData->iText.Ptr(); - writeStream.WriteL( pText, textSize/2 ); - } - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - case ECmdPenInputPopupTooltip: - { - TPtrC* tooltipTextPtr = reinterpret_cast( aParam ); - if ( tooltipTextPtr ) - { - HBufC8* buf8 = HBufC8::NewLC - ( sizeof( TInt ) + tooltipTextPtr->Size() ); - TPtr8 buf8Ptr = buf8->Des(); - RDesWriteStream writeStream; - CleanupClosePushL(writeStream); - writeStream.Open( buf8Ptr ); - writeStream.WriteInt32L( tooltipTextPtr->Size() ); - writeStream.WriteL( tooltipTextPtr->Ptr(), tooltipTextPtr->Length() ); - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - SendCommandToServer( aCommandId, buf8Ptr ); - CleanupStack::PopAndDestroy( buf8 ); - } - } - break; - case ECmdPenInputPopupCandidateList: - { - TFepITICandidateList* candidatelist - = reinterpret_cast( aParam ); - if ( candidatelist ) - { - CDesCArray* itemArray = candidatelist->iItemArray; - if ( itemArray ) - { - TInt sumSize = 0; - for ( TInt i = 0; i < itemArray->Count(); i++ ) - { - sumSize += (*itemArray)[i].Size(); - } - HBufC8* buf8 = HBufC8::NewLC( sizeof(TInt) // For active index - + sizeof(TInt) // For the count of item array - + sizeof(TInt)*( itemArray->Count() ) // For the size of each item - + sumSize// For all of char data - ); - TPtr8 buf8Ptr = buf8->Des(); - RDesWriteStream writeStream; - CleanupClosePushL(writeStream); - writeStream.Open( buf8Ptr ); - writeStream.WriteInt32L( candidatelist->iActiveIndex ); - writeStream.WriteInt32L( itemArray->Count() ); - for ( TInt i = 0; i < itemArray->Count(); i++ ) - { - writeStream.WriteInt32L( (*itemArray)[i].Size() ); - writeStream.WriteL( (*itemArray)[i].Ptr(), (*itemArray)[i].Length() ); - } - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - SendCommandToServer( aCommandId, buf8Ptr ); - CleanupStack::PopAndDestroy( buf8 ); - } - } - } - break; - default: - SendCommandToServer( aCommandId, aParam ); - break; - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CloseUI -// Close plugin layout UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::CloseUI() - { - iPenInputServer->ActivateLayout( EFalse ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::ActivateUI -// Activate plugin layout UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ActivateUI() - { - iPenInputServer->ActivateLayout( ETrue ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::EditorMaxLength -// Get max text length of layout UI ICF control. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::EditorMaxLength() - { - return iMaxEditorLength; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SizeChanged -// Handle screen size changed. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ResourceChanged(TInt aType) - { - iPenInputServer->ResourceChanged(aType); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetNextFepUI -// Set underlining UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetNextFepUI( MAknFepManagerInterface* aNextUi ) - { - iHkbUi = aNextUi; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SupportLanguage -// Get support language in sepecfied mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::SupportLanguage( TInt /*aMode*/ ) const - { - return iLanguage; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetInputLanguageL -// Set current language. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetInputLanguageL(TLanguage aLanguage) - { - iLanguage = aLanguage; - - if(iLanguage == ELangTaiwanChinese || - iLanguage == ELangHongKongChinese || - iLanguage == ELangPrcChinese) - { - SendCommandToServer(ECmdPenInputLanguage, (TInt)aLanguage); - } - else - { - // other language except chinese, will treated as English - iLanguage = ELangEnglish; - SendCommandToServer(ECmdPenInputLanguage, (TInt)ELangEnglish); - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetFepAwareEditorText -// Set editor text and cursor information to layout UI ICF control. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetFepAwareEditorText(const TFepInputContextFieldData& /*aIcfData*/) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Set layout UI mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CPluginFepManagerBase::SetMode( TInt aMode, TBool aPredictive, - TBool aQwertyInputMode, TInt /*aKeyboardType*/) -#else -void CPluginFepManagerBase::SetMode( TInt aMode, TBool aPredictive, - TBool aQwertyInputMode ) -#endif - { - iHkbUi->SetMode(aMode, aPredictive, aQwertyInputMode); - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool CPluginFepManagerBase::IsValidFnKeyPress() const - { - return EFalse; - } - TBool CPluginFepManagerBase::IsValidLongChrKeyPress() const - { - return EFalse; - } -#endif -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Set layout UI current case. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetCase(TCase aCase) - { - iHkbUi->SetCase(aCase); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::ExpireMultitapTimer -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ExpireMultitapTimer() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsValidNumericLongKeyPress -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsValidNumericLongKeyPress( TInt /*aKey*/ ) const - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::AddTextToUserDictionaryL -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::AddTextToUserDictionaryL( const TDesC& /*aText*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::GetFormatOfFepInlineText -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::GetFormatOfFepInlineText( - TCharFormat& /*aFormat*/, - TInt& /*aNumberOfCharactersWithSameFormat*/, - TInt /*aPositionOfCharacter*/ ) const - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsValidShiftKeyPress -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsValidShiftKeyPress() const - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetEditorContext -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetEditorContext( TInt /*aContext*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetEditorContext -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetStarKeyFlag( TBool /*aSet*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CPluginFepManagerBase -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase::CPluginFepManagerBase(CPenInputImePluginCn& aOwner, - RPeninputServer* aPenInputServer ) - :iOwner( aOwner ), iPenInputServer( aPenInputServer ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::BaseConstructL -// Symbian 2nd phase constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::BaseConstructL() - { - iRepository = CRepository::NewL( KCRUidAknFep ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutPermitedRanges -// Set layout permited ranges. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutPermitedRanges( TInt aPermittedMode ) - { - // Not derived from edwin - if ( aPermittedMode == EAknEditorNumericInputMode ) - { - iPermittedRange = ERangeNumber; - } - else if ( aPermittedMode & EAknEditorTextInputMode ) - { - // Derived from edwin and EAknEditorTextInputMode - iPermittedRange = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else if ( aPermittedMode & EAknEditorSecretAlphaInputMode ) - { - // Derived from EAknEditorSecretAlphaInputMode - iPermittedRange = ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else - { - iPermittedRange = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutRange -// Set layout primary range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutRange(const CAknEdwinState* aEditorState) - { - //calculate permitted ranges - if(aEditorState) - { - if( aEditorState->Flags() & EAknEditorFlagLatinInputModesOnly && - iPermittedRange & ERangeNative ) - { - iPermittedRange &= ~ERangeNative; - } - } - - SendCommandToServer( ECmdPenInputPermittedRange, iPermittedRange ); - - TInt priRange; - - switch( iHkbMode ) - { - case ECangJie: - case EStrokeFind: - case EStroke: - case EPinyin: - case EZhuyin: - case EZhuyinFind: - { - priRange = ERangeNative; - } - break; - case ENumber: - { - priRange = ERangeNumber; - } - break; - case EPRCFind: - case ELatin: - case ELatinText: - case ELatinUpper: - case ELatinLower: - default: - { - priRange = ERangeEnglish; - } - break; - } - - if ((iLanguage == ELangEnglish) && (priRange == ERangeNative)) - { - // when language switch button switch to English, if original range is Native, - // then it need to be changed to ERangeEnglish - priRange = ERangeEnglish; - } - - if( iSuggestedRange != ERangeInvalid && (iSuggestedRange & iPermittedRange) ) - { - priRange = iSuggestedRange; - iSuggestedRange = ERangeInvalid; - } - - SendCommandToServer( ECmdPenInputRange, priRange ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer( TInt aCommandId ) - { - iPenInputServer->HandleCommand( aCommandId ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer( TInt aCommandId, TInt aParam ) - { - TBuf8 buf; - buf.Append( (TUint8*)&aParam, sizeof(TInt) ); - SendCommandToServer( aCommandId, buf ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer(TInt aCommandId, const TDesC8& aParam) - { - iPenInputServer->HandleCommand( aCommandId, aParam ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::LayoutLastUsedRange -// Get layout UI last used range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::LayoutLastUsedRange() - { - TInt value = 0; - if( iRepository ) - { - iRepository->Get( KAknFepLastUsedRange, value ); - } - - return value; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutPosition -// Set layout UI position. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutPosition( const TRect& pParam ) - { - TBuf8 buf; - buf.Append((TUint8*)&pParam, sizeof(pParam)); - - SendCommandToServer( ECmdPenInputSetWindowPos, buf ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::GetLocalLanguage -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TLanguage CPluginFepManagerBase::GetLocalLanguage( - const CAknEdwinState* aEditorState ) const - { - TLanguage language = ELangTest; - // Check for a local language override - if ( aEditorState ) - { - TInt aknEditorFlags = aEditorState->Flags() ; - if ( aknEditorFlags & EAknEditorFlagLatinInputModesOnly ) - { - language = ELangEnglish; - } - else - { - language = aEditorState->LocalLanguage(); - } - } - - return language; - } - - // End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagerhwr.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagerhwr.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: HWR layout UI class implementation file. -* -*/ - - - - - - - - - - - - -// System includes -#include -#include //CAknEdwinState - -// User includes -#include "pluginfepmanagerhwr.h" -#include "peninputimeplugincn.h" - -// ======== MEMBER FUNCTIONS ======== -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerHwr* CPluginFepManagerHwr::NewL(CPenInputImePluginCn& aOwner, - RPeninputServer* aPenInputServer) - { - CPluginFepManagerHwr* self = new(ELeave)CPluginFepManagerHwr(aOwner, aPenInputServer); - CleanupStack::PushL(self); - self->BaseConstructL(); - CleanupStack::Pop(self); - return self; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::SetNumberModeKeyMappingL -// Set layout UI current number mode key mapping. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerHwr::SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap) - { - //don't send number key map here, the key mapping is only meaningful - //in ENumber range - iNumberKeyMapping = aAknEditorNumericKeymap; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerHwr::HandleCommandL(TInt aCommandId,TInt aParam) - { - if( aCommandId == ECmdPenInputSetWindowPos) - { - return; - } - CPluginFepManagerBase::HandleCommandL(aCommandId, aParam); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::CPluginFepManagerHwr -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerHwr::CPluginFepManagerHwr(CPenInputImePluginCn& aOwner, - RPeninputServer* aPenInputServer) - :CPluginFepManagerBase(aOwner, aPenInputServer) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::SetLayoutRange -// Set layout primary range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerHwr::SetLayoutRange(const CAknEdwinState* aEditorState) - { - CPluginFepManagerBase::SetLayoutRange(aEditorState); - - //set number key mapping - if( iPermittedRange == ERangeNumber ) - { - SendCommandToServer(ECmdPenInputEditorNumericKeyMap, iNumberKeyMapping); - } - else - { - //for not number only editor, we set plain number and - //second range handles other characters - SendCommandToServer(ECmdPenInputEditorNumericKeyMap, - EAknEditorPlainNumberModeKeymap); - } - } - - // End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagervkb.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugincn/src/pluginfepmanagervkb.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: VKB layout UI class implementation file. -* -*/ - - - - - - - - - - - - -// System includes -#include // CAknEdwinState -#include - -// User includes -#include "pluginfepmanagervkb.h" -#include "peninputimeplugincn.h" - -// ======== MEMBER FUNCTIONS ======== - - -// ----------------------------------------------------------------------------- -// CPluginFepManagerVkb::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerVkb* CPluginFepManagerVkb::NewL(CPenInputImePluginCn& aOwner, - RPeninputServer* aPenInputServer) - { - CPluginFepManagerVkb* self = new(ELeave)CPluginFepManagerVkb(aOwner, aPenInputServer); - CleanupStack::PushL(self); - self->BaseConstructL(); - CleanupStack::Pop(self); - return self; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerVkb::CPluginFepManagerVkb -// constructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerVkb::CPluginFepManagerVkb(CPenInputImePluginCn& aOwner, - RPeninputServer* aPenInputServer) - :CPluginFepManagerBase(aOwner, aPenInputServer) - { - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugincn/srcdata/10207361.rss --- a/fep/aknfep/peninputplugins/peninputimeplugincn/srcdata/10207361.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 1020 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource definitions for project peninputimeplugincn -* -*/ - - - - - - - - - - - - -#include "registryinfo.rh" - -// Declares info for two implementations -RESOURCE REGISTRY_INFO theInfo - { - // UID for the DLL - dll_uid = 0x10207361; - // Declare array of interface info - interfaces = - { - INTERFACE_INFO - { - // UID of interface that is implemented - interface_uid = 0x10207363; - implementations = - { - // Info for CImplementation1 - IMPLEMENTATION_INFO - { - implementation_uid = 0x10207361; - version_no = 1; - display_name = "Chinese Hwr input method plugin"; - //supported language - default_data = "1||29-31"; - //supported IME impl id - opaque_data= "29-31"; - } - }; - } - }; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/group/bld.inf --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/group/bld.inf Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Build information file for project peninputimeplugingeneric -* -*/ - - - - - - - - - - - - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS - -PRJ_MMPFILES - -../group/peninputimeplugingeneric.mmp - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/group/peninputimeplugingeneric.mmp --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/group/peninputimeplugingeneric.mmp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Project definition file for project peninputimeplugingeneric -* -*/ - - - - - - - - - - - - -#include -#include - -TARGET peninputimeplugingeneric.dll -TARGETTYPE plugin -UID 0x10009D8D 0x1028235F - -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - -SOURCEPATH ../src - -SOURCE peninputimeplugingenericproxy.cpp -SOURCE peninputimeplugingeneric.cpp -SOURCE pluginfepmanagerbase.cpp -SOURCE pluginfepmanagerhwr.cpp -SOURCE pluginfepmanagervkb.cpp - -USERINCLUDE ../inc - -// This is a SYSTEMINCLUDE macro containing the middleware -// layer specific include directories -MW_LAYER_SYSTEMINCLUDE - -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../../../inc - -SOURCEPATH ../srcdata - -START RESOURCE 1028235F.rss -#ifdef SYMBIAN_SECURE_ECOM -TARGET peninputimeplugingeneric.rsc -#endif -END - - -LIBRARY euser.lib -LIBRARY ECom.lib -LIBRARY centralrepository.lib -LIBRARY eikcoctl.lib -LIBRARY cone.lib -LIBRARY efsrv.lib -LIBRARY estor.lib -LIBRARY FeatMgr.lib // feature manager -LIBRARY avkon.lib -LIBRARY eikcore.lib - -#ifdef RD_SCALABLE_UI_V2 -LIBRARY peninputclient.lib -#else -LIBRARY peninputserverstub.lib -#endif - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/peninputimeplugingeneric.h --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/peninputimeplugingeneric.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,272 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: input mode plugin header file -* -*/ - - - - - - - - - - - -#ifndef C_PENINPUTIMEPLUGINGENERIC_H -#define C_PENINPUTIMEPLUGINGENERIC_H - -// System includes -#include -#include -#include -#include -#include -//#include -#include -#include - -// Forward declaration -class MAknFepManagerInterface; -class CAknEdwinState; -class CRepository; -class CPluginFepManagerBase; - -/** - * Pen input mode plugin chinese implementation - * - * @lib peninputimeplugingeneric.lib - * @since S60 v3.2 - */ -class CPenInputImePluginGeneric : public CAknFepPenInputImePlugin - { -public: - - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aInitParams Init data plugin, actually it is - * a pointer of RPeninputServer. - * @return Pointer to created CPenInputImePluginGeneric object - */ - static CPenInputImePluginGeneric* NewL( TAny* aInitParams ); - - static CPenInputImePluginGeneric* NewLC( TAny* aInitParams ); - - /** - * Destructor. - */ - ~CPenInputImePluginGeneric(); - -public: // From CAknFepPenInputImePlugin - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLanguage Language that layout UI need to support - * @param aMode Speicifed layout UI mode to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TLanguage aLanguage, - TInt aMode, - const TDesC8& aData, - const TBool aIsSplitView = EFalse); - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLayoutId Speicifed layout UI id to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TInt aLayoutId, - const TDesC8& aData ); - - /** - * Activate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - void Activate(); - - /** - * Deactivate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - void DeActivate(); - - /** - * Get current IME plugin implementation ID. - * - * @since S60 v3.2 - * - * @return IME plugin implementation id. - */ - TInt ImeImplId(); - - /** - * Get current layout UI implementation id. - * - * @since S60 v3.2 - * - * @return None. - */ - TInt LayoutUiImplId(); - - /** - * Handle pen input server event. - * - * @param aEventId The event id, defined in - * @param aData The event related data. - * @since S60 v3.2 - * - * @return None. - */ - TBool HandleServerEventL( TInt aEventId, const TDesC& aData ); - - /** - * Get suppored layout UI modes(VKB/HWR). - * - * @since S60 v3.2 - * - * @param aPtiEngine A pointer to ptiengine - * @param aSupportList A reference to result ime plugin list - * @return Meaningless. - */ - TInt SupportModes(CPtiEngine* aPtiEngine, - RArray& aSupportList) const; - - /** - * Get current layout UI mode. - * - * @since S60 v3.2 - * - * @return Current layout UI mode. - */ - TInt CurrentMode() const; - - /** - * Handle the menu command.The menu is launched by FEP - * The menu command is first passed to IME plugin, if - * this function return EFalse, FEP handles it defaultly. - * - * @param aCommandId The menu command id - * @return ETrue if IME plugin handled the command; - * EFalse otherwise. - */ - TBool HandleMenuCommandL( TInt aCommandId ); - - /** - * Dynamiclly update menu items during it displays. - * - * aMenuPane The menu pane pointer. - * @return None. - */ - void DynInitMenuPaneL( CAknFepUiInterfaceMenuPane* aMenuPane ); - -private: - - /** - * C++ default constructor. - * - * @param aServer Pen input server pointer - */ - CPenInputImePluginGeneric( RPeninputServer* aServer ); - - /** - * By default Symbian 2nd phase constructor is private. - * - * @return None - */ - void ConstructL(); - - /** - * Enumuate all layout UI ids and save them to iUiLayoutImpIdList. - * - * @return None - */ - void FindUiLayoutImplementationL(); - - /** - * Get plugin UI interface - * - * @return plugin UI pointer - */ - CPluginFepManagerBase* GetPluginUiL( TInt aMode ); - - /** - * Get current UI interface - * - * @return current UI pointer - */ - inline CPluginFepManagerBase* GetCurrentUi(); - - /** - * Get suppored layout UI modes(VKB/HWR). - * - * @since S60 v3.2 - * - * @param aPtiEngine A pointer to ptiengine - * @param aSupportList A reference to result ime plugin list - * @return Meaningless. - */ - TInt SupportModesL(CPtiEngine* aPtiEngine, - RArray& aSupportList) const; - -private: - - /** - * Pen input server pointer. Not own. - */ - RPeninputServer* iPenInputServer; - - /** - * Pen input server pointer. Not own. - */ - RArray iUiLayoutImpIdList; - - /** - * Current layout UI mode. - */ - TInt iPenInputMode; - - /** - * Pen input server pointer. Not own. - */ - CPluginFepManagerBase* iPluginUiManager; - }; - -#include "peninputimeplugingeneric.inl" - -#endif // C_PENINPUTIMEPLUGINGENERIC_H - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/peninputimeplugingeneric.inl --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/peninputimeplugingeneric.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Inline file for Ime plugin China. -* -*/ - - - - - - - - - - - - -const TInt KHwrLayoutInterfaceId = 0x102072FC; // This is for layout interface -const TInt KInputMethodImplementationId = 0x1028235F; -const TInt KHwrUiId = 0x1028235B; -const TInt KHwrArabicUiId = 0x20019599; -const TInt KVkbUiId = 0x10282359; -const TInt KFsqUiId = 0x2001114D; -const TInt KSsqUiId = 0x2001E2BB; - -inline CPluginFepManagerBase* CPenInputImePluginGeneric::GetCurrentUi() - { - switch ( iPenInputMode ) - { - case EPluginInputModeHwr: - case EPluginInputModeVkb: - case EPluginInputModeFSQ: - return iPluginUiManager; - default: - return NULL; - } - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/peninputimeplugingenericdebug.h --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/peninputimeplugingenericdebug.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Debug utils API -* -*/ - - - - - - - - - - - - -#ifndef PENINPUTIMEPLUGINCHSDEBUG_H -#define PENINPUTIMEPLUGINCHSDEBUG_H - -#ifdef _DEBUG - #define PRINT( txt ) RDebug::Print( txt ); - #define PRINTF( txt ) RDebug::Print txt; - #define PRINT1( txt, arg1 ) RDebug::Print( txt, arg1 ); - #define PRINT2( txt, arg1, arg2 ) RDebug::Print( txt, arg1, arg2 ); - #define PRINT3( txt, arg1, arg2, arg3 ) RDebug::Print( txt, arg1, arg2, arg3 ); -#else - #define PRINT( txt ) - #define PRINTF( txt ) - #define PRINT1( txt, arg1 ) - #define PRINT2( txt, arg1, arg2 ) - #define PRINT3( txt, arg1, arg2, arg3 ) -#endif - - -// Record into log files -#define USE_FILE_LOGGER - -#if defined (_DEBUG) && !defined(USE_FILE_LOGGER) - #define USE_SERIAL_LOGGER -#endif - -#if defined (USE_FILE_LOGGER) - #include - _LIT(KLogFile,"imepluginchn.txt"); - _LIT(KLogFolder,"peninputime"); - #define LOGTEXT(AAA) RFileLogger::Write(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - AAA) - #define LOGTEXT2(AAA,BBB) RFileLogger::WriteFormat(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - TRefByValue(AAA), \ - BBB) - #define LOGTEXT3(AAA,BBB,CCC) RFileLogger::WriteFormat(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - TRefByValue(AAA), \ - BBB, \ - CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) RFileLogger::HexDump(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - AAA,\ - BBB,\ - CCC,\ - DDD) -#elif defined (USE_SERIAL_LOGGER) - #include - #define LOGTEXT(AAA) RDebug::Print(AAA) - #define LOGTEXT2(AAA,BBB) RDebug::Print(AAA,BBB) - #define LOGTEXT3(AAA,BBB,CCC) RDebug::Print(AAA,BBB,CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) -#else - #define LOGTEXT(AAA) - #define LOGTEXT2(AAA,BBB) - #define LOGTEXT3(AAA,BBB,CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) -#endif - -#endif // PENINPUTIMEPLUGINCHSDEBUG - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/pluginfepmanagerbase.h --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/pluginfepmanagerbase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,482 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Layout UI interface base class -* -*/ - - - - - - - - - - - -#ifndef C_PLUGINFEPMANAGERBASE_H -#define C_PLUGINFEPMANAGERBASE_H - -// System includes -#include -#include -#include -#include -#include - -//Forward declaration -class CPenInputImePluginGeneric; -class RPeninputServer; -class CAknEdwinState; -class CRepository; -/** - * CPluginFepManagerBase is the layout UI interface base class. - * It is something like a "proxy" class of layout UI plugin, sending - * commands from FEP to layout UI plugin. - * - * @lib peninputimeplugingeneric.lib - * @since S60 v3.2 - */ -class CPluginFepManagerBase: public CBase, public MAknFepManagerInterface - { -public: - - /** - * Destructor. - */ - ~CPluginFepManagerBase(); - - /** - * Initalize UI when first time starting up. - * The first time means when the instance created. - * - * @since S60 v3.2 - * - * @return None. - */ - virtual void OnInit(); - - /** - * Explicitly get ICF max length from layout UI and save the - * value to iMaxEditorLength. - * - * @since S60 v3.2 - * - * @return None. - */ - void RetrieveEditorMaxLength(); - - /** - * Update local copy of case mode when - * user change case in layout UI. - * - * @since S60 v3.2 - * - * @param aCaseMode The case mode to save locally. - * @return None. - */ - void UpdateCaseMode( TInt aCaseMode ); - -// From MAknFepManagerInterface - - /** - * Set layout UI current number mode key mapping. - * For example, 0-9 ; 0-9,*,# and etc. - * - * @since S60 v3.2 - * - * @param aAknEditorNumericKeymap Key mapping enum value. - * @return None. - */ - void SetNumberModeKeyMappingL( TAknEditorNumericKeymap aAknEditorNumericKeymap ); - - /** - * Handle key event. - * Since most plugin layout UIs are based on animation, they receive - * key and process key events before this function. - * - * @since S60 v3.2 - * - * @param aKey Key event code. - * @param aLength Key press length. - * @return ETrue if processed, EFalse otherwise. - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey ); - - /** - * Handle command come from FEP. - * - * @since S60 v3.2 - * - * @param aCommandId Command id. - * @return None - */ - void HandleCommandL( TInt aCommandId ); - - /** - * Handle command come from FEP. - * - * @since S60 v3.2 - * - * @param aCommandId Command id. - * @param aParam Command parameter. - * @return None. - */ - void HandleCommandL( TInt aCommandId, TInt aParam ); - - /** - * Close plugin layout UI. - * - * @since S60 v3.2 - * - * @return None. - */ - void CloseUI(); - - /** - * Activate plugin layout UI. - * - * @since S60 v3.2 - * - * @return None. - */ - void ActivateUI(); - - /** - * Get max text length of layout UI ICF control. - * - * @since S60 v3.2 - * @return Max ICF text length. - */ - TInt EditorMaxLength(); - - /** - * When screen size changes, SizeChanged is called by FEP. - * - * @since S60 v3.2 - * @return None. - */ - void ResourceChanged( TInt aType ); - - /** - * Set underlining UI. - * Since plugin layout UI and HKB can be used at same time, - * HKB UI layout need to be notified after plugin layout UI - * processes some events - * - * @since S60 v3.2 - * @param aNextUI The underlining UI pointer. - * @return None. - */ - void SetNextFepUI( MAknFepManagerInterface* aNextUi ); - - /** - * Get support language in sepecfied mode. - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aMode Input mode. - * @return Language supported. - */ - TInt SupportLanguage( TInt aMode ) const; - - /** - * Set current language, which is required by editor - * - * @since S60 v3.2 - * - * @param aLanguage Language to set. - * @return None. - */ - void SetInputLanguageL( TLanguage aLanguage ); - - TInt InputLanguage(); - - /** - * Set editor text and cursor information to layout UI - * ICF control. - * - * @since S60 v3.2 - * @param aTotalTextLen Total text length in eidtor. - * @param aStartPos Offset of aText to the start of editor text. - * @param aCursorSel Cursor position. - * @param aText A part of editor text start from aStartPos. - * - * @return None. - */ - void SetFepAwareEditorText( const TFepInputContextFieldData& aIcfData ); - - /** - * Set layout UI mode. - * The method leaves here only for compatibility - * - * @since S60 v3.2 - * - * @param aMode Mode to set. - * @param aPredictive Whether the current mode support predictive. - * @param aWwertyInputMode Whether the current HKB is qwerty. - * @return None. - */ -#ifdef RD_INTELLIGENT_TEXT_INPUT - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode, - TInt aKeyboardType = EPtiKeyboardNone) ; -#else - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode); -#endif - -#ifdef RD_INTELLIGENT_TEXT_INPUT - virtual TBool IsValidFnKeyPress() const; - virtual TBool IsValidLongChrKeyPress() const; -#endif - - /** - * Set layout UI current case. - * The method leaves here only for compatibility. Since plugin layout - * UI is different from HKB tranditional UI, they use something like - * "case mode" other than case which is set by a FEP command. - * - * @since S60 v3.2 - * - * @param aCase Case to set. - * @return None. - */ - void SetCase( TCase aCase ); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return None. - */ - void ExpireMultitapTimer(); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aKey The key presssed. - * @return ETrue if long press, EFalse otherwise. - */ - TBool IsValidNumericLongKeyPress( TInt aKey ) const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aText Text to add to user dictionary. - * @return None. - */ - void AddTextToUserDictionaryL( const TDesC& aText ); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aFormat On return, contains the formatting to - * apply to the inline text (or to a portion of it). - * @param aNumberOfCharactersWithSameFormat On return, - contains the number of characters in the inline - text (starting at aPositionOfCharacter) - which have the same formatting - * @param aPositionOfCharacter Start position within the inline text - * @return None. - */ - void GetFormatOfFepInlineText( TCharFormat& aFormat, - TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter ) const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return ETrue if valid, EFalse otherwise. - */ - TBool IsValidShiftKeyPress() const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return None. - */ - void SetEditorContext( TInt aContext ); - - /** - * Set the Star key flag - * - * @param aSet TBool. - * @return None - */ - void SetStarKeyFlag( TBool aSet ); -protected: - - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin pointer. - * @param aPenInputServer Pen input server pointer - */ - CPluginFepManagerBase( CPenInputImePluginGeneric& aOwner, - RPeninputServer* aPenInputServer ); - - /** - * By default Symbian 2nd phase constructor. - * - * @since S60 v3.2 - * @return None - */ - void BaseConstructL(); - - /** - * Set layout permited ranges. - * - * @param aPermittedMode Ranges of current editor allowed. - * @return None - */ - virtual void SetLayoutPermitedRanges( TInt aPermittedRanges ); - - /** - * Set layout primary range. - * - * @since S60 v3.2 - * @param aEditorState Current editor state. - * @return None - */ - virtual void SetLayoutRange( const CAknEdwinState* aEditorState ); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @return None - */ - void SendCommandToServer( TInt aCommandId ); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @param aParam The command param. - * @return None - */ - void SendCommandToServer( TInt aCommandId, TInt aParam ); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @param aParam The command param. - * @return None - */ - void SendCommandToServer( TInt aCommandId, const TDesC8& aParam ); - - /** - * Get layout UI last used range. - * - * @since S60 v3.2 - * @return Range last used. - */ - TInt LayoutLastUsedRange(); - - /** - * Set layout UI position. - * Move layout UI not to overlap with some editors. - * - * @since S60 v3.2 - * @param aBottomRight The bottom right position of layout UI. - * The value is only a suggest value, layout UI may adjust it. - * @return None. - */ - void SetLayoutPosition( const TRect& aParam ); - - /** - * Get Editor's local language. - * - * @since S60 v3.2 - * @param aEditorState The editor's .CAknEdwinState pointer - * @return Language code the editor requires. - */ - TLanguage GetLocalLanguage( const CAknEdwinState* aEditorState ) const; - - TBool SupportLatinRange(); - - TBool SupportNativeNumberRange(); - -protected: - - /** - * IME plugin reference. - */ - CPenInputImePluginGeneric& iOwner; - - /** - * Pen input server pointer. Not own. - */ - RPeninputServer* iPenInputServer; - - /** - * The premitted range of current editor. - */ - TInt iPermittedRange; - - TInt iHkbMode; - - /** - * The fep suggested range. The suggested value comes from - * previous touch input method. - */ - TInt iSuggestedRange; - /** - * Current language. - */ - TLanguage iLanguage; - -private: - - /** - * Repository object used to get last used range. - */ - CRepository* iRepository; - - /** - * Local copy of ICF max text length. - */ - TInt iMaxEditorLength; - - /** - * Local copy of layout current case mode - */ - TInt iLastCase; - - /** - * Underlineing UI interface - */ - MAknFepManagerInterface* iHkbUi; - - TInt iPermittedMode; - }; -#endif // C_PLUGINFEPMANAGERBASE_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/pluginfepmanagerhwr.h --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/pluginfepmanagerhwr.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: HWR layout UI class header -* -*/ - - - - - - - - - - - - -#ifndef C_PLUGINFEPMANAGERHWR_H -#define C_PLUGINFEPMANAGERHWR_H - -// System includes -#include - -// User includes -#include "pluginfepmanagerbase.h" - -//Forward declaration -class CPenInputImePluginGeneric; -class RPeninputServer; - -/** - * CPluginFepManagerHwr is the chinese HWR layout UI interface - * "proxy" class. - * - * @lib peninputimeplugingeneric.lib - * @since S60 v3.2 - */ -class CPluginFepManagerHwr : public CPluginFepManagerBase - { -public: - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - * @return Pointer to created CPluginFepManagerHwr object - */ - static CPluginFepManagerHwr* NewL( CPenInputImePluginGeneric& aOwner, - RPeninputServer* aPenInputServer ); - - /** - * Set layout UI current number mode key mapping. - * For example, 0-9 ; 0-9,*,# and etc. - * - * @since S60 v3.2 - * - * @param aAknEditorNumericKeymap Key mapping enum value. - * @return None. - */ - void SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap ); - - /** - * Handle command come from FEP. - * - * @since S60 v3.2 - * - * @param aCommandId Command id. - * @param aParam Command parameter. - * @return None. - */ - void HandleCommandL( TInt aCommandId, TInt aParam ); - -private: - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - */ - CPluginFepManagerHwr( CPenInputImePluginGeneric& aOwner, - RPeninputServer* aPenInputServer ); - - /** - * Set layout primary range. - * - * @since S60 v3.2 - * @param aEditorState Current editor state. - * @return None - */ - void SetLayoutRange( const CAknEdwinState* aEditorState ); - - TInt iNumberKeyMapping; - }; - -#endif // C_PLUGINFEPMANAGERHWR_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/pluginfepmanagervkb.h --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/inc/pluginfepmanagervkb.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: VKB layout UI class header -* -*/ - - - - - - - - - - - -#ifndef C_PLUGINFEPMANAGERVKB_H -#define C_PLUGINFEPMANAGERVKB_H - -// System includes -#include - -// User includes -#include "pluginfepmanagerbase.h" - -class CPenInputImePluginGeneric; - -/** - * CPluginFepManagerHwr is the chinese VKB layout UI interface - * "proxy" class. - * - * @lib peninputimeplugingeneric.lib - * @since S60 v3.2 - */ -class CPluginFepManagerVkb : public CPluginFepManagerBase - { -public: - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - * @return Pointer to created CPluginFepManagerHwr object - */ - static CPluginFepManagerVkb* NewL( CPenInputImePluginGeneric& aOwner, - RPeninputServer* aPenInputServer ); - -private: - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - */ - - CPluginFepManagerVkb( CPenInputImePluginGeneric& aOwner, - RPeninputServer* aPenInputServer ); - }; -#endif // C_PLUGINFEPMANAGERVKB_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/src/peninputimeplugingeneric.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/peninputimeplugingeneric.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,753 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Input mode plugin implementation file -* -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// User includes -#include "peninputimeplugingeneric.h" -#include "peninputimeplugingenericdebug.h" -#include "pluginfepmanagerhwr.h" -#include "pluginfepmanagervkb.h" -#include "truisupportedlanguageid.h" - -const TInt KInvalidImplId = 0; - -_LIT(KHwrImeName, "Generic HWR"); -_LIT(KVkbImeName, "Generic VKB"); -_LIT(KFSQImeName, "Generic FSQ"); -_LIT(KSSQImeName, "Split View Qwerty"); - -_LIT(KHwrResourceFormatPattern, "peninputhwrwindowconfiginfo_*.rsc"); -_LIT(KVkbResourceFormatPattern, "peninputvkbwindowconfiginfo_*.rsc"); -_LIT(KSsqResourceFormatPattern, "peninputssqwinconfiginfo_*.rsc"); - -_LIT(KPluginResourcePath, "z:\\RESOURCE\\Plugins\\"); - -class TLangMeritPair - { -public: - TInt iLangStart; - TInt iLangEnd; - TInt iMerit; - }; - -const TLangMeritPair KSupportLanguages[] = - { - {ELangEnglish, ELangAmerican, CAknFepPenInputImePlugin::EImeMerit_Preferred}, //01-10 - {ELangPortuguese, ELangDutch, CAknFepPenInputImePlugin::EImeMerit_Preferred},//13-18 - {ELangCzech, ELangSlovenian, CAknFepPenInputImePlugin::EImeMerit_Preferred}, //25-28 - {ELangThai, ELangThai, CAknFepPenInputImePlugin::EImeMerit_Preferred},//33 - {ELangArabic, ELangArabic, CAknFepPenInputImePlugin::EImeMerit_Preferred},//37 - {ELangTagalog, ELangTagalog, CAknFepPenInputImePlugin::EImeMerit_Preferred},//39 - {ELangBulgarian, ELangBulgarian, CAknFepPenInputImePlugin::EImeMerit_Preferred},//42 - {ELangCatalan, ELangCatalan, CAknFepPenInputImePlugin::EImeMerit_Preferred},//44 - {ELangCroatian, ELangCroatian, CAknFepPenInputImePlugin::EImeMerit_Preferred},//45 - {ELangEstonian, ELangCanadianFrench, CAknFepPenInputImePlugin::EImeMerit_Preferred},//49-51 - {ELangGreek, ELangGreek, CAknFepPenInputImePlugin::EImeMerit_Preferred},//54 - {ELangHebrew, ELangIndonesian, CAknFepPenInputImePlugin::EImeMerit_Preferred},//57-59 - {ELangLatvian, ELangLithuanian, CAknFepPenInputImePlugin::EImeMerit_Preferred},//67 -68 - {ELangMalay, ELangMalay, CAknFepPenInputImePlugin::EImeMerit_Preferred},//70 -#ifdef RD_MARATHI - {ELangMarathi, ELangMarathi, CAknFepPenInputImePlugin::EImeMerit_Preferred},//72 -#endif - {ELangBrazilianPortuguese, ELangBrazilianPortuguese, CAknFepPenInputImePlugin::EImeMerit_Preferred},//76 - {ELangRomanian, ELangSerbian, CAknFepPenInputImePlugin::EImeMerit_Preferred},//78 -79 - {ELangLatinAmericanSpanish, ELangLatinAmericanSpanish, CAknFepPenInputImePlugin::EImeMerit_Preferred},//83 - {ELangUkrainian, ELangUrdu, CAknFepPenInputImePlugin::EImeMerit_Preferred},//93-94 - {ELangVietnamese, ELangVietnamese, CAknFepPenInputImePlugin::EImeMerit_Preferred},//96 - {KLangBasque, KLangGalician, CAknFepPenInputImePlugin::EImeMerit_Preferred},//401,402 - {ELangKorean, ELangKorean, CAknFepPenInputImePlugin::EImeMerit_Preferred} // 65 tp teleca add-on - }; - -// ----------------------------------------------------------------------------- -// RImplInfoPtrArray cleanup function -// ----------------------------------------------------------------------------- -// -void Cleanup( TAny* aAny ) - { - RImplInfoPtrArray* implArray = - reinterpret_cast< RImplInfoPtrArray*> ( aAny ); - implArray->ResetAndDestroy(); - implArray->Close(); - } - -//lint -esym( 960, 58, * ) lint notes: break used outside of a switch - -// ======== MEMBER FUNCTIONS ======== - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::NewL -// Factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginGeneric* CPenInputImePluginGeneric::NewL(TAny* aInitParams) - { - CPenInputImePluginGeneric* self = new ( ELeave ) CPenInputImePluginGeneric( - static_cast( - aInitParams ) ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::NewLC -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginGeneric* CPenInputImePluginGeneric::NewLC( - TAny* aInitParams ) - { - CPenInputImePluginGeneric* self = new ( ELeave ) CPenInputImePluginGeneric( - static_cast( - aInitParams ) ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::~CPenInputImePluginGeneric -// Destructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginGeneric::~CPenInputImePluginGeneric() - { - DeActivate(); - iUiLayoutImpIdList.Close(); - delete iPluginUiManager; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::GetInputMethodUiL -// Create layout UI interface -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -MAknFepManagerInterface* CPenInputImePluginGeneric::GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TLanguage aLanguage, - TInt aMode, - const TDesC8& /*aData*/, - const TBool aIsSplitView) - { - iFepManager = aFepManager; - iLanguage = aLanguage; - CPluginFepManagerBase* fepmanager = NULL; - - TUid layoutId; - TInt i; - - switch ( aMode ) - { - case EPluginInputModeHwr: - { - if(aLanguage == ELangArabic) - { - layoutId.iUid = KHwrArabicUiId; - } - else - { - layoutId.iUid = KHwrUiId; - } - } - break; - case EPluginInputModeVkb: - { - layoutId.iUid = KVkbUiId; - } - break; - case EPluginInputModeFSQ: - { - if(aIsSplitView) - { - layoutId.iUid = KSsqUiId; - } - else - { - layoutId.iUid = KFsqUiId; - } - } - break; - default: - return NULL; - } - fepmanager = GetPluginUiL( aMode ); - - for ( i = 0; i < iUiLayoutImpIdList.Count(); ++i ) - { - if( iUiLayoutImpIdList[i] == layoutId.iUid ) - { - break; - } - } - - if ( i < iUiLayoutImpIdList.Count() ) - { - iPenInputMode = aMode; - TPtrC8 ptr( (TUint8*)&aMode ); - - TInt errCode; - errCode = iPenInputServer->SetUiLayoutId( layoutId ); - - if ( errCode == KErrNone ) - { - fepmanager->OnInit(); - return fepmanager; - } - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::GetInputMethodUiL -// Create layout UI interface -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -MAknFepManagerInterface* CPenInputImePluginGeneric::GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TInt aLayoutId, - const TDesC8& aData ) - { - iFepManager = aFepManager; - CPluginFepManagerBase* fepmanager = NULL; - TInt i; - TInt mode; - - if ( aLayoutId == KHwrUiId ) - { - mode = EPluginInputModeHwr; - } - else if( aLayoutId == KVkbUiId ) - { - mode = EPluginInputModeVkb; - } - else if( aLayoutId == KFsqUiId ) - { - mode = EPluginInputModeFSQ; - } - else - { - return NULL; - } - - fepmanager = GetPluginUiL( mode ); - for ( i = 0; i < iUiLayoutImpIdList.Count(); ++i ) - { - if ( iUiLayoutImpIdList[i] == aLayoutId ) - { - break; - } - } - - if ( i < iUiLayoutImpIdList.Count() ) - { - iPenInputMode = mode; - iPenInputServer->SetUiLayoutId( TUid::Uid( aLayoutId ), aData ); - fepmanager->OnInit(); - return fepmanager; - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::Activate -// Activate current IME plugin. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginGeneric::Activate() - { - if(iPenInputServer) - { - iPenInputServer->ActivateLayout(ETrue); - } - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::DeActivate -// Deactivate current IME plugin. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginGeneric::DeActivate() - { - if (iPenInputServer && iPenInputServer->IsVisible()) - { - iPenInputServer->ActivateLayout(EFalse); - } - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::ImeImplId -// Get current IME plugin implementation ID. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginGeneric::ImeImplId() - { - return KInputMethodImplementationId; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::LayoutUiImplId -// Get current layout UI implementation id. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginGeneric::LayoutUiImplId() - { - TInt id; - switch ( iPenInputMode ) - { - case EPluginInputModeHwr: - { - id = KHwrUiId; - } - break; - case EPluginInputModeVkb: - { - id = KVkbUiId; - } - break; - case EPluginInputModeFSQ: - { - id = KFsqUiId; - } - break; - default: - { - id = KInvalidImplId; - } - break; - } - return id; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::SupportModes -// Get suppored layout UI modes(VKB/HWR). -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginGeneric::SupportModes(CPtiEngine* aPtiEngine, - RArray& aSupportList) const - { - TInt ret = 0; - TRAP_IGNORE( ret = SupportModesL( aPtiEngine, aSupportList ) ); - return ret; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::SupportModesL -// Get suppored layout UI modes(VKB/HWR). -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool IsFileInDir( CDir* aDir, const TDesC& aFileName ) - { - if( aDir ) - { - for( TInt k = 0; k < aDir->Count(); ++k ) - { - if( aFileName.CompareF( (*aDir)[k].iName ) == 0 ) - { - return ETrue; - } - } - } - return EFalse; - } - -inline void HwrResNameFromLangId( TFileName& aFileName, TInt aLang ) - { - if( aLang < 10 ) - { - _LIT(KHwrResourceFormat1, "peninputhwrwindowconfiginfo_%02d.rsc"); - aFileName.Format(KHwrResourceFormat1, aLang); - } - else - { - _LIT(KHwrResourceFormat, "peninputhwrwindowconfiginfo_%d.rsc"); - aFileName.Format(KHwrResourceFormat, aLang); - } - } - -inline void VkbResNameFromLangId( TFileName& aFileName, TInt aLang ) - { - if( aLang < 10 ) - { - _LIT(KVkbResourceFormat1, "peninputvkbwindowconfiginfo_%02d.rsc"); - aFileName.Format(KVkbResourceFormat1, aLang); - } - else - { - _LIT(KVkbResourceFormat, "peninputvkbwindowconfiginfo_%d.rsc"); - aFileName.Format(KVkbResourceFormat, aLang); - } - } - -inline void SsqResNameFromLangId( TFileName& aFileName, TInt aLang ) - { - if( aLang < 10 ) - { - _LIT(KSsqResourceFormat1, "peninputssqwinconfiginfo%02d.rsc"); - aFileName.Format(KSsqResourceFormat1, aLang); - } - else - { - _LIT(KSsqResourceFormat, "peninputssqwinconfiginfo%d.rsc"); - aFileName.Format(KSsqResourceFormat, aLang); - } - } - -TInt CPenInputImePluginGeneric::SupportModesL(CPtiEngine* /*aPtiEngine*/, - RArray& aSupportList) const - { - RImplInfoPtrArray infoArray; - TUid id; - id.iUid = KHwrLayoutInterfaceId; - TBool hwr = EFalse; - TBool vkb = EFalse; - TBool fsq = EFalse; - TBool ssq = EFalse; - - CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) ); - REComSession::ListImplementationsL(id, infoArray); - - for (TInt i = 0; i < infoArray.Count(); ++i) - { - if(infoArray[i]->ImplementationUid().iUid == KHwrUiId ) - { - hwr = ETrue; - } - - if (infoArray[i]->ImplementationUid().iUid == KVkbUiId - && FeatureManager::FeatureSupported(KFeatureIdVirtualKeyboardInput)) - { - vkb = ETrue; - } - - if (infoArray[i]->ImplementationUid().iUid == KFsqUiId - && FeatureManager::FeatureSupported(KFeatureIdVirtualFullscrQwertyInput)) - { - fsq = ETrue; - } - - if (infoArray[i]->ImplementationUid().iUid == KSsqUiId - && FeatureManager::FeatureSupported(KFeatureIdVirtualFullscrQwertyInput)) - { - ssq = ETrue; - } - } - - TImePlguinImplDetail detail; - - detail.iImplementationId = KInputMethodImplementationId; - if( hwr ) - { - detail.iMode = EPluginInputModeHwr; - detail.iDisplayName.Copy(KHwrImeName()); - TFindFile fileFinder(CCoeEnv::Static()->FsSession()); - TFileName resName; - CDir* dir = NULL; - TInt result = fileFinder.FindWildByDir( KHwrResourceFormatPattern, - KPluginResourcePath, dir ); - if( result == KErrNone ) - { - for(TInt i = 0; i < sizeof(KSupportLanguages)/sizeof(TLangMeritPair); ++i ) - { - for(TInt j = KSupportLanguages[i].iLangStart; - j <= KSupportLanguages[i].iLangEnd; ++j) - { - HwrResNameFromLangId( resName, j); - if( IsFileInDir( dir, resName ) ) - { - detail.iLanguage = j; - detail.iMeritValue = KSupportLanguages[i].iMerit; - aSupportList.Append(detail); - } - } - } - - } - delete dir; - } - - if( vkb || fsq ) - { - TFindFile fileFinder(CCoeEnv::Static()->FsSession()); - TFileName resName; - CDir* dir = NULL; - TInt result = fileFinder.FindWildByDir( KVkbResourceFormatPattern, - KPluginResourcePath, dir ); - - if( vkb ) - { - detail.iMode = EPluginInputModeVkb; - detail.iDisplayName.Copy(KVkbImeName()); - for(TInt i = 0; i < sizeof(KSupportLanguages)/sizeof(TLangMeritPair); ++i ) - { - for(TInt j = KSupportLanguages[i].iLangStart; - j <= KSupportLanguages[i].iLangEnd; ++j) - { - VkbResNameFromLangId( resName, j); - if( IsFileInDir( dir, resName ) ) - { - detail.iLanguage = j; - detail.iMeritValue = KSupportLanguages[i].iMerit; - aSupportList.Append(detail); - } - } - } - } - - if( fsq ) - { - detail.iMode = EPluginInputModeFSQ; - detail.iDisplayName.Copy(KFSQImeName()); - for(TInt i = 0; i < sizeof(KSupportLanguages)/sizeof(TLangMeritPair); ++i ) - { - for(TInt j = KSupportLanguages[i].iLangStart; - j <= KSupportLanguages[i].iLangEnd; ++j) - { - VkbResNameFromLangId( resName, j); - if( IsFileInDir( dir, resName ) ) - { - detail.iLanguage = j; - detail.iMeritValue = KSupportLanguages[i].iMerit; - aSupportList.Append(detail); - } - } - } - } - - delete dir; - } - - if( ssq ) - { - detail.iMode = EPluginInputModeFSQ; - detail.iDisplayName.Copy(KSSQImeName()); - TFindFile fileFinder(CCoeEnv::Static()->FsSession()); - TFileName resName; - CDir* dir = NULL; - TInt result = fileFinder.FindWildByDir( KSsqResourceFormatPattern, - KPluginResourcePath, dir ); - - for(TInt i = 0; i < sizeof(KSupportLanguages)/sizeof(TLangMeritPair); ++i ) - { - for(TInt j = KSupportLanguages[i].iLangStart; - j <= KSupportLanguages[i].iLangEnd; ++j) - { - SsqResNameFromLangId( resName, j); - if( IsFileInDir( dir, resName ) ) - { - detail.iLanguage = j; - detail.iMeritValue = KSupportLanguages[i].iMerit; - aSupportList.Append(detail); - } - } - } - delete dir; - } - - CleanupStack::PopAndDestroy(&infoArray); // infoArray - - return 0; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::CurrentMode -// Get current layout UI mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginGeneric::CurrentMode() const - { - return iPenInputMode; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::HandleServerEventL -// Handle pen input server event.. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPenInputImePluginGeneric::HandleServerEventL( TInt aEventId, const TDesC& aData ) - { - TBool bHandled = EFalse; - switch ( aEventId ) - { - case ESignalLayoutICFLengthChanged: - { - GetCurrentUi()->RetrieveEditorMaxLength(); - } - break; - case ESignalCaseMode: - { - TInt data = *(TInt*)( aData.Ptr() ); - ASSERT( data >= 0 ); - //lint !e728 - GetCurrentUi()->UpdateCaseMode( data ); - } - break; - default: - break; - } - - return bHandled; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::HandleMenuCommandL -// Handle the menu command. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPenInputImePluginGeneric::HandleMenuCommandL( TInt /*aCommandId*/ ) - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::DynInitMenuPaneL -// Dynamiclly update menu items during it displays. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginGeneric::DynInitMenuPaneL( CAknFepUiInterfaceMenuPane* aMenuPane ) - { - TInt currentLanguage = iPluginUiManager->InputLanguage(); - TBool isDimTraining = ETrue; - TInt count = sizeof(KTruiSupportedLanguages)/sizeof(TInt); - for(TInt i = 0; i < count; i++) - { - if(currentLanguage == KTruiSupportedLanguages[i]) - { - isDimTraining = EFalse; - break; - } - } - if(isDimTraining) - { - aMenuPane->SetItemDimmed(EPenInputCmdHwrTraining, ETrue); - } - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::CPenInputImePluginGeneric -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginGeneric::CPenInputImePluginGeneric( RPeninputServer* aHwrServer ) - :iPenInputServer( aHwrServer ) - { - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::ConstructL -// 2nd phase constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginGeneric::ConstructL() - { - FindUiLayoutImplementationL(); - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::FindUiLayoutImplementationL -// Enumuate all layout UI ids. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginGeneric::FindUiLayoutImplementationL() - { - RImplInfoPtrArray infoArray; - TUid id; - id.iUid = KHwrLayoutInterfaceId; - - iUiLayoutImpIdList.Reset(); - CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) ); - REComSession::ListImplementationsL( id, infoArray ); - - for ( TInt i = 0; i < infoArray.Count(); ++i ) - { - iUiLayoutImpIdList.AppendL( infoArray[i]->ImplementationUid().iUid ); - } - - CleanupStack::PopAndDestroy( &infoArray ); // infoArray - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginGeneric::GetPluginUiL -// Get HWR UI interface. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase* CPenInputImePluginGeneric::GetPluginUiL( TInt aMode ) - { - delete iPluginUiManager; - iPluginUiManager = NULL; - - switch ( aMode ) - { - case EPluginInputModeHwr: - { - return iPluginUiManager = CPluginFepManagerHwr::NewL(*this, iPenInputServer); - } - case EPluginInputModeVkb: - case EPluginInputModeFSQ: - { - return iPluginUiManager = CPluginFepManagerVkb::NewL(*this, iPenInputServer); - } - default: - { - return NULL; - } - } - } -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/src/peninputimeplugingenericmain.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/peninputimeplugingenericmain.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation to E32Dll -* -*/ - - - - - - - - - - - - -#include - -/** DLL Entry point */ -#ifndef EKA2 -GLDEF_C TInt E32Dll( TDllReason /*aReason*/ ) - { - return( KErrNone ); - } -#endif - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/src/peninputimeplugingenericproxy.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/peninputimeplugingenericproxy.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation to Proxy -* -*/ - - - - - - - - - - - - -// System includes -#include -#include - -// User includes -#include "peninputimeplugingeneric.h" - -// Map the interface UIDs to implementation factory functions -const TImplementationProxy ImplementationTable[] = - { - //lint !e611 - IMPLEMENTATION_PROXY_ENTRY( 0x1028235F, CPenInputImePluginGeneric::NewL ) - }; - -// Exported proxy for instantiation method resolution -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - - return ImplementationTable; - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerbase.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerbase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,824 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Layout UI interface base class implementation -* -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include // CAknEdwinState -#include -#include - -#include -#include -#include -#include - -// User includes -#include "pluginfepmanagerbase.h" -#include "peninputimeplugingeneric.h" - -// ======== MEMBER FUNCTIONS ======== - - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CPluginFepManagerBase -// Destructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase::~CPluginFepManagerBase() - { - delete iRepository; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::OnInit -// Initalize UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::OnInit() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::RetrieveEditorMaxLength -// Explicitly get ICF max length from layout UI . -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::RetrieveEditorMaxLength() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::UpdateCaseMode -// Update local copy of case mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::UpdateCaseMode( TInt aCaseMode ) - { - iLastCase = aCaseMode; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetNumberModeKeyMappingL -// Set layout UI current number mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap ) - { - SendCommandToServer( ECmdPenInputEditorNumericKeyMap, - aAknEditorNumericKeymap ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleKeyL -// Handle key event. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::HandleKeyL( TInt aKey, TKeyPressLength aLength, TEventCode /*aEventCode*/ ) - { - return iHkbUi->HandleKeyL( aKey, aLength ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::HandleCommandL( TInt aCommandId ) - { - SendCommandToServer( aCommandId ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::HandleCommandL(TInt aCommandId,TInt aParam) - { - switch ( aCommandId ) - { - case ECmdPenInputRange: - { - iHkbMode = aParam; - if ( iHkbMode == ENativeNumber && !SupportNativeNumberRange() ) - { - iHkbMode = ENumber; - } - } - break; - case ECmdPenInputPermittedRange: - { - iLastCase = ECaseInvalide; - SetLayoutPermitedRanges( aParam ); - } - break; - case ECmdPenInputEditorState: - { - CAknEdwinState* state = - reinterpret_cast( aParam ); - SetLayoutRange( state ); - } - break; - case ECmdPenInputSetWindowPos: - { - TRect* rect = reinterpret_cast( aParam ); - ASSERT( rect ); - SetLayoutPosition( *rect ); - } - break; - case ECmdPenInputCaseMode: - //if( aParam != iLastCase ) - { - SendCommandToServer( ECmdPenInputCase, aParam ); - iLastCase = aParam; - } - break; - case ECmdPenInputEditorCustomNumericKeyMap: - { - TDesC* res = (TDesC*)aParam; - TPtrC8 param; - param.Set((TUint8*)res->Ptr(), res->Size()); - SendCommandToServer( aCommandId, param ); - SetNumberModeKeyMappingL((TAknEditorNumericKeymap)EKeymapFromResource); - } - break; - case ECmdPenInputSuggestRange: - iSuggestedRange = aParam; - if( iSuggestedRange == ERangeAccent ) - { - iSuggestedRange = ERangeEnglish; - } - break; - case ECmdPenInputSendEditorTextAndCurPos: - { - TFepInputContextFieldData* pIcfData = - reinterpret_cast( aParam ); - - TInt dataSize = sizeof( TFepInputContextFieldData ); - TInt textSize = pIcfData->iText.Size(); - - HBufC8* buf = HBufC8::NewLC(dataSize + textSize + 2*sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(dataSize); - writeStream.WriteInt32L(textSize); - - const TUint8* pData = reinterpret_cast( pIcfData ); - writeStream.WriteL( pData, dataSize ); - - const TUint8* pText = reinterpret_cast( pIcfData->iText.Ptr() ); - writeStream.WriteL( pText, textSize ); - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - case ECmdPenInputSetPromptText: - { - TFepPromptText* pPromptData = - reinterpret_cast( aParam ); - - TInt dataSize = sizeof( TFepPromptText ); - TInt textSize = 0; - - if (pPromptData->iText.Length()) - { - textSize = pPromptData->iText.Size(); - } - - HBufC8* buf = HBufC8::NewLC(dataSize + textSize + 2*sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(dataSize); - writeStream.WriteInt32L(textSize); - - const TUint8* pData = reinterpret_cast( pPromptData ); - writeStream.WriteL( pData, dataSize ); - - if (textSize != 0) - { - const TUint16* pText = pPromptData->iText.Ptr(); - writeStream.WriteL( pText, textSize/2 ); - } - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - case ECmdPenInputPopupTooltip: - { - TPtrC* tooltipTextPtr = reinterpret_cast( aParam ); - HBufC8* buf8 = HBufC8::NewLC - ( sizeof( TInt ) + tooltipTextPtr->Size() ); - TPtr8 buf8Ptr = buf8->Des(); - RDesWriteStream writeStream; - CleanupClosePushL(writeStream); - writeStream.Open( buf8Ptr ); - writeStream.WriteInt32L( tooltipTextPtr->Size() ); - writeStream.WriteL( tooltipTextPtr->Ptr(), tooltipTextPtr->Length() ); - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - SendCommandToServer( aCommandId, buf8Ptr ); - CleanupStack::PopAndDestroy( buf8 ); - break; - } - case ECmdPenInputPopupCandidateList: - { - TFepITICandidateList* candidatelist - = reinterpret_cast( aParam ); - CDesCArray* itemArray = candidatelist->iItemArray; - if ( itemArray ) - { - TInt sumSize = 0; - for ( TInt i = 0; i < itemArray->Count(); i++ ) - { - sumSize += (*itemArray)[i].Size(); - } - HBufC8* buf8 = HBufC8::NewLC( sizeof(TInt) // For active index - + sizeof(TInt) // For the count of item array - + sizeof(TInt)*( itemArray->Count() ) // For the size of each item - + sumSize// For all of char data - ); - TPtr8 buf8Ptr = buf8->Des(); - RDesWriteStream writeStream; - CleanupClosePushL(writeStream); - writeStream.Open( buf8Ptr ); - writeStream.WriteInt32L( candidatelist->iActiveIndex ); - writeStream.WriteInt32L( itemArray->Count() ); - for ( TInt i = 0; i < itemArray->Count(); i++ ) - { - writeStream.WriteInt32L( (*itemArray)[i].Size() ); - writeStream.WriteL( (*itemArray)[i].Ptr(), (*itemArray)[i].Length() ); - } - writeStream.CommitL(); - CleanupStack::PopAndDestroy( &writeStream ); - SendCommandToServer( aCommandId, buf8Ptr ); - CleanupStack::PopAndDestroy( buf8 ); - } - break; - } - default: - SendCommandToServer( aCommandId, aParam ); - break; - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CloseUI -// Close plugin layout UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::CloseUI() - { - iPenInputServer->ActivateLayout( EFalse ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::ActivateUI -// Activate plugin layout UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ActivateUI() - { - iPenInputServer->ActivateLayout( ETrue ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::EditorMaxLength -// Get max text length of layout UI ICF control. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::EditorMaxLength() - { - return iMaxEditorLength; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SizeChanged -// Handle screen size changed. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ResourceChanged(TInt aType) - { - iPenInputServer->ResourceChanged(aType); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetNextFepUI -// Set underlining UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetNextFepUI( MAknFepManagerInterface* aNextUi ) - { - iHkbUi = aNextUi; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SupportLanguage -// Get support language in sepecfied mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::SupportLanguage( TInt /*aMode*/ ) const - { - return iLanguage; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetInputLanguageL -// Set current language. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetInputLanguageL( TLanguage aLanguage ) - { - iLanguage = aLanguage; - //maybe language check is needed. - TInt lang = (TInt)aLanguage; - ASSERT( lang >=0 ); - SendCommandToServer( ECmdPenInputLanguage, lang ); - } - -TInt CPluginFepManagerBase::InputLanguage() - { - return iLanguage; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetFepAwareEditorText -// Set editor text and cursor information to layout UI ICF control. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetFepAwareEditorText( - const TFepInputContextFieldData& aIcfData ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Set layout UI mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CPluginFepManagerBase::SetMode( TInt aMode, TBool aPredictive, - TBool aQwertyInputMode, TInt aKeyboardType) -#else -void CPluginFepManagerBase::SetMode( TInt aMode, TBool aPredictive, - TBool aQwertyInputMode ) -#endif - { - iHkbUi->SetMode( aMode, aPredictive, aQwertyInputMode ); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool CPluginFepManagerBase::IsValidFnKeyPress() const - { - return EFalse; - } - TBool CPluginFepManagerBase::IsValidLongChrKeyPress() const - { - return EFalse; - } -#endif - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Set layout UI current case. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetCase( TCase aCase ) - { - iHkbUi->SetCase( aCase ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::ExpireMultitapTimer -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ExpireMultitapTimer() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsValidNumericLongKeyPress -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsValidNumericLongKeyPress( TInt /*aKey*/ ) const - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::AddTextToUserDictionaryL -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::AddTextToUserDictionaryL( const TDesC& /*aText*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::GetFormatOfFepInlineText -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::GetFormatOfFepInlineText( - TCharFormat& /*aFormat*/, - TInt& /*aNumberOfCharactersWithSameFormat*/, - TInt /*aPositionOfCharacter*/ ) const - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsValidShiftKeyPress -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsValidShiftKeyPress() const - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetEditorContext -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetEditorContext( TInt /*aContext*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetEditorContext -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetStarKeyFlag( TBool /*aSet*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CPluginFepManagerBase -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase::CPluginFepManagerBase( CPenInputImePluginGeneric& aOwner, - RPeninputServer* aPenInputServer ) - :iOwner( aOwner ), iPenInputServer( aPenInputServer ) - { - iSuggestedRange = ERangeInvalid; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::BaseConstructL -// Symbian 2nd phase constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::BaseConstructL() - { - iRepository = CRepository::NewL( KCRUidAknFep ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutPermitedRanges -// Set layout permited ranges. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutPermitedRanges( TInt aPermittedMode ) - { - iPermittedMode = aPermittedMode; - - // Not derived from edwin - if ( aPermittedMode == EAknEditorNumericInputMode ) - { - if ( SupportNativeNumberRange() ) - { - iPermittedRange = ERangeNativeNumber; - } - iPermittedRange |= ERangeNumber; - } - - else if ( aPermittedMode & EAknEditorTextInputMode ) - { - // Derived from edwin and EAknEditorTextInputMode - iPermittedRange = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol | - ERangeNativeNumber; - } - else if ( aPermittedMode & EAknEditorSecretAlphaInputMode ) - { - // Derived from EAknEditorSecretAlphaInputMode - iPermittedRange = ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else - { - iPermittedRange = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol | - ERangeNativeNumber; - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutRange -// Set layout primary range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutRange( - const CAknEdwinState* aEditorState ) - { - //calculate permitted ranges - if(aEditorState) - { - if( aEditorState->Flags() & EAknEditorFlagLatinInputModesOnly ) - { - iPermittedRange &= ~ERangeNative; - iPermittedRange &= ~ERangeNativeNumber; - } - if ( iPermittedMode != EAknEditorNumericInputMode - && !SupportLatinRange() - && !( aEditorState->Flags() & EAknEditorFlagLatinInputModesOnly ) ) - { - iPermittedRange &= ~ERangeEnglish; - } - } - else - { - if ( iPermittedMode == EAknEditorNumericInputMode ) - { - if( iHkbMode == ENumber ) - { - iPermittedRange = ERangeNumber; - } - else if ( iHkbMode == ENativeNumber ) - { - iPermittedRange = ERangeNativeNumber; - } - } - } - - SendCommandToServer( ECmdPenInputPermittedRange, iPermittedRange ); - - TInt priRange; - - switch( iHkbMode ) - { - case ECangJie: - case EStrokeFind: - case EStroke: - case EPinyin: - case EZhuyin: - case EZhuyinFind: - case EHindi: - { - priRange = ERangeNative; - } - break; - case ENumber: - { - priRange = ERangeNumber; - } - break; - case ENativeNumber: - { - priRange = ERangeNativeNumber; - } - break; - case EPRCFind: - case ELatin: - case ELatinText: - case ELatinUpper: - case ELatinLower: - if ( iLanguage == ELangHindi) - { - priRange = ERangeEnglish; - } - else - { - priRange = iPermittedRange & ERangeNative ? ERangeNative : ERangeEnglish; - } - break; - default: - { - priRange = iPermittedRange & ERangeNative ? ERangeNative : ERangeEnglish; - } - break; - } - - if( iSuggestedRange != ERangeInvalid && (iSuggestedRange & iPermittedRange) ) - { - priRange = iSuggestedRange; - iSuggestedRange = ERangeInvalid; - } - SendCommandToServer( ECmdPenInputRange, priRange ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer( TInt aCommandId ) - { - iPenInputServer->HandleCommand( aCommandId ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer( TInt aCommandId, TInt aParam ) - { - TBuf8 buf; - buf.Append( (TUint8*)&aParam, sizeof(TInt) ); - SendCommandToServer( aCommandId, buf ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer( TInt aCommandId, - const TDesC8& aParam ) - { - iPenInputServer->HandleCommand( aCommandId, aParam ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::LayoutLastUsedRange -// Get layout UI last used range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::LayoutLastUsedRange() - { - TInt value = 0; - if ( iRepository ) - { - iRepository->Get( KAknFepLastUsedRange, value ); - } - - return value; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutPosition -// Set layout UI position. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutPosition( const TRect& pParam ) - { - TBuf8 buf; - buf.Append( (TUint8*)&pParam, sizeof( pParam ) ); - - SendCommandToServer( ECmdPenInputSetWindowPos, buf ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::GetLocalLanguage -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TLanguage CPluginFepManagerBase::GetLocalLanguage( - const CAknEdwinState* aEditorState ) const - { - TLanguage language = ELangTest; - // Check for a local language override - if ( aEditorState ) - { - TInt aknEditorFlags = aEditorState->Flags() ; - if ( aknEditorFlags & EAknEditorFlagLatinInputModesOnly ) - { - language = ELangEnglish; - } - else - { - language = aEditorState->LocalLanguage(); - } - } - - return language; - } - -TBool CPluginFepManagerBase::SupportLatinRange() - { - if ( iLanguage == ELangRussian || iLanguage == ELangBulgarian || - iLanguage == ELangUkrainian || iLanguage == ELangHebrew ) - { - return EFalse; - } - - if ( iLanguage == ELangGreek ) - { - return EFalse; - } - - if ( iLanguage == ELangArabic || iLanguage == ELangFarsi || - iLanguage == ELangUrdu || iLanguage == ELangThai ) - { - return EFalse; - } - - if ( iLanguage == ELangHindi || iLanguage == ELangMarathi ) - { - return ETrue; - } - - return ETrue; - } - - -TBool CPluginFepManagerBase::SupportNativeNumberRange() - { - if ( iLanguage == ELangArabic || iLanguage == ELangFarsi || - iLanguage == ELangUrdu || iLanguage == ELangHindi || - iLanguage == ELangThai ) - { - return ETrue; - } - - return EFalse; - } - // End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerhwr.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagerhwr.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: HWR layout UI class implementation file. -* -*/ - - - - - - - - - - - - -// System includes -#include -#include // CAknEdwinState - -// User includes -#include "pluginfepmanagerhwr.h" -#include "peninputimeplugingeneric.h" - - -// ======== MEMBER FUNCTIONS ======== -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::NewL -// Factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerHwr* CPluginFepManagerHwr::NewL( - CPenInputImePluginGeneric& aOwner, RPeninputServer* aPenInputServer ) - { - CPluginFepManagerHwr* self = new ( ELeave ) CPluginFepManagerHwr( aOwner, - aPenInputServer ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - CleanupStack::Pop( self ); - - return self; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::SetNumberModeKeyMappingL -// Set layout UI current number mode key mapping. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerHwr::SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap ) - { - iNumberKeyMapping = aAknEditorNumericKeymap; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerHwr::HandleCommandL( TInt aCommandId, TInt aParam ) - { - if( aCommandId == ECmdPenInputSetWindowPos ) - { - return; - } - CPluginFepManagerBase::HandleCommandL( aCommandId, aParam ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::CPluginFepManagerHwr -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerHwr::CPluginFepManagerHwr( CPenInputImePluginGeneric& aOwner, - RPeninputServer* aPenInputServer ) - :CPluginFepManagerBase( aOwner, aPenInputServer ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::SetLayoutRange -// Set layout primary range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerHwr::SetLayoutRange( const CAknEdwinState* aEditorState ) - { - CPluginFepManagerBase::SetLayoutRange( aEditorState ); - - //set number key mapping - #if 0 - if ( iPermittedRange == ERangeNumber) - { - SendCommandToServer( ECmdPenInputEditorNumericKeyMap, - iNumberKeyMapping ); - } - else - { - //for alphanumeric editor, always use EAknEditorAlphanumericNumberModeKeymap - SendCommandToServer( ECmdPenInputEditorNumericKeyMap, - EAknEditorAlphanumericNumberModeKeymap ); - } - #endif - SendCommandToServer( ECmdPenInputEditorNumericKeyMap, - iNumberKeyMapping ); - } - - // End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagervkb.cpp --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/src/pluginfepmanagervkb.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: VKB layout UI class implementation file. -* -*/ - - - - - - - - - - - - -// System includes -#include // CAknEdwinState - -// User includes -#include "pluginfepmanagervkb.h" -#include "peninputimeplugingeneric.h" -#include "eikon.hrh" - -// ======== MEMBER FUNCTIONS ======== - - -// ----------------------------------------------------------------------------- -// CPluginFepManagerVkb::NewL -// Factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerVkb* CPluginFepManagerVkb::NewL( - CPenInputImePluginGeneric& aOwner, RPeninputServer* aPenInputServer ) - { - CPluginFepManagerVkb* self = new ( ELeave ) CPluginFepManagerVkb( - aOwner, aPenInputServer ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerVkb::CPluginFepManagerVkb -// constructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerVkb::CPluginFepManagerVkb( CPenInputImePluginGeneric& aOwner, - RPeninputServer* aPenInputServer ) - :CPluginFepManagerBase( aOwner, aPenInputServer ) - { - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimeplugingeneric/srcdata/1028235F.rss --- a/fep/aknfep/peninputplugins/peninputimeplugingeneric/srcdata/1028235F.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 1028 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource definitions for project peninputimeplugingeneric -* -*/ - - - - - - - - - - - - -#include "registryinfo.rh" - -// Declares info for two implementations -RESOURCE REGISTRY_INFO theInfo - { - // UID for the DLL - dll_uid = 0x1028235F; - // Declare array of interface info - interfaces = - { - INTERFACE_INFO - { - // UID of interface that is implemented - interface_uid = 0x10207363; - implementations = - { - // Info for CImplementation1 - IMPLEMENTATION_INFO - { - implementation_uid = 0x1028235F; - version_no = 1; - display_name = "Generic touch input method plugin"; - //supported language - default_data = "1||16||33||37||42||50||54||57||93||94||96"; - //supported IME impl id - opaque_data= "16||33||37||42||50||54||57||93||94||96"; - } - }; - } - }; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/group/bld.inf --- a/fep/aknfep/peninputplugins/peninputimepluginitut/group/bld.inf Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Build information file for project peninputimeplugingeneric -* -*/ - - - - - - - - - - - - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS - -PRJ_MMPFILES - -../group/peninputimepluginitut.mmp - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/group/peninputimepluginitut.mmp --- a/fep/aknfep/peninputplugins/peninputimepluginitut/group/peninputimepluginitut.mmp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Project definition file for project peninputimepluginitut -* -*/ - - - - - - - - - - - - -#include -#include - -TARGET peninputimepluginitut.dll -TARGETTYPE plugin -UID 0x10009D8D 0x2000B133 - -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - -SOURCEPATH ../src - -SOURCE peninputimepluginitutproxy.cpp -SOURCE peninputimepluginitut.cpp -SOURCE pluginfepmanagerbase.cpp -SOURCE pluginfepmanageritut.cpp - -USERINCLUDE ../inc - -// This is a SYSTEMINCLUDE macro containing the middleware -// layer specific include directories -MW_LAYER_SYSTEMINCLUDE - -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../../../inc - -SOURCEPATH ../srcdata - -START RESOURCE 2000B133.rss -#ifdef SYMBIAN_SECURE_ECOM -TARGET peninputimepluginitut.rsc -#endif -END - - -LIBRARY euser.lib -LIBRARY ECom.lib -LIBRARY centralrepository.lib -LIBRARY eikcoctl.lib -LIBRARY cone.lib -LIBRARY efsrv.lib -LIBRARY estor.lib - -#ifdef RD_SCALABLE_UI_V2 -LIBRARY peninputclient.lib -#else -LIBRARY peninputserverstub.lib -#endif - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/inc/peninputimepluginitut.h --- a/fep/aknfep/peninputplugins/peninputimepluginitut/inc/peninputimepluginitut.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,293 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: input mode plugin header file -* -*/ - - - - - - - - - - - - -#ifndef C_PENINPUTIMEPLUGINITUT_H -#define C_PENINPUTIMEPLUGINITUT_H - -// System includes -#include -#include -#include -#include -#include -//#include -#include -#include - -// Forward declaration -class MAknFepManagerInterface; -class CAknEdwinState; -class CRepository; -class CPluginFepManagerBase; - -/** - * Pen input mode plugin chinese implementation - * - * @lib peninputimeplugingeneric.lib - * @since S60 v3.2 - */ -class CPenInputImePluginItut : public CAknFepPenInputImePlugin - { -public: - - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aInitParams Init data plugin, actually it is - * a pointer of RPeninputServer. - * @return Pointer to created CPenInputImePluginItut object - */ - static CPenInputImePluginItut* NewL( TAny* aInitParams ); - - static CPenInputImePluginItut* NewLC( TAny* aInitParams ); - - /** - * Destructor. - */ - ~CPenInputImePluginItut(); - -public: // From CAknFepPenInputImePlugin - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLanguage Language that layout UI need to support - * @param aMode Speicifed layout UI mode to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TLanguage aLanguage, - TInt aMode, - const TDesC8& aData, - const TBool aIsSplitView = EFalse ); - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLayoutId Speicifed layout UI id to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TInt aLayoutId, - const TDesC8& aData ); - - /** - * Activate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - void Activate(); - - /** - * Deactivate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - void DeActivate(); - - /** - * Get current IME plugin implementation ID. - * - * @since S60 v3.2 - * - * @return IME plugin implementation id. - */ - TInt ImeImplId(); - - /** - * Get current layout UI implementation id. - * - * @since S60 v3.2 - * - * @return None. - */ - TInt LayoutUiImplId(); - - /** - * Handle pen input server event. - * - * @param aEventId The event id, defined in - * @param aData The event related data. - * @since S60 v3.2 - * - * @return None. - */ - TBool HandleServerEventL( TInt aEventId, const TDesC& aData ); - - /** - * Get suppored layout UI modes(VKB/HWR). - * - * @since S60 v3.2 - * - * @param aPtiEngine A pointer to ptiengine - * @param aSupportList A reference to result ime plugin list - * @return Meaningless. - */ - TInt SupportModes(CPtiEngine* aPtiEngine, - RArray& aSupportList) const; - - /** - * Get current layout UI mode. - * - * @since S60 v3.2 - * - * @return Current layout UI mode. - */ - TInt CurrentMode() const; - - /** - * Handle the menu command.The menu is launched by FEP - * The menu command is first passed to IME plugin, if - * this function return EFalse, FEP handles it defaultly. - * - * @param aCommandId The menu command id - * @return ETrue if IME plugin handled the command; - * EFalse otherwise. - */ - TBool HandleMenuCommandL( TInt aCommandId ); - - /** - * Dynamiclly update menu items during it displays. - * - * aMenuPane The menu pane pointer. - * @return None. - */ - void DynInitMenuPaneL( CAknFepUiInterfaceMenuPane* aMenuPane ); - -public: - - enum TScriptIndex - { - ELatinLang, - ECyrillicLang, - EGreekLang, - EHebrewLang, - EArabicLang, - EFarsiLang, - EUrduLang, - EThaiLang, - EChnLang, - EIndicLang - }; - -private: - - /** - * C++ default constructor. - * - * @param aServer Pen input server pointer - */ - CPenInputImePluginItut( RPeninputServer* aServer ); - - /** - * By default Symbian 2nd phase constructor is private. - * - * @return None - */ - void ConstructL(); - - /** - * Enumuate all layout UI ids and save them to iUiLayoutImpIdList. - * - * @return None - */ - void FindUiLayoutImplementationL(); - - /** - * Get plugin UI interface - * - * @return plugin UI pointer - */ - CPluginFepManagerBase* GetPluginUiL( TInt aMode ); - - /** - * Get current UI interface - * - * @return current UI pointer - */ - inline CPluginFepManagerBase* GetCurrentUi(); - - /** - * Get suppored layout UI modes(VKB/HWR). - * - * @since S60 v3.2 - * - * @param aPtiEngine A pointer to ptiengine - * @param aSupportList A reference to result ime plugin list - * @return Meaningless. - */ - TInt SupportModesL(CPtiEngine* aPtiEngine, - RArray& aSupportList) const; - - static const TDesC& ResFileNameByScriptIdx(const TScriptIndex aIndex); - - static const TDesC& ResFileNameByScriptIdxForSplit(const TScriptIndex aIndex); - -private: - - /** - * Pen input server pointer. Not own. - */ - RPeninputServer* iPenInputServer; - - /** - * Pen input server pointer. Not own. - */ - RArray iUiLayoutImpIdList; - - /** - * Current layout UI mode. - */ - TInt iPenInputMode; - - /** - * Pen input server pointer. Not own. - */ - CPluginFepManagerBase* iPluginUiManager; - }; - -#include "peninputimepluginitut.inl" - -#endif // C_PENINPUTIMEPLUGINITUT_H - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/inc/peninputimepluginitut.inl --- a/fep/aknfep/peninputplugins/peninputimepluginitut/inc/peninputimepluginitut.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Inline file for Ime plugin China. -* -*/ - - - - - - - - - - - - -const TInt KHwrLayoutInterfaceId = 0x102072FC; // This is for layout interface -const TInt KInputMethodImplementationId = 0x2000B133; -// modified by txin in 2007.06.04, change vkb's implementation uid to finger's -const TInt KItutUiId = 0x2000b101; -const TInt KSplitItutUiId = 0x2001E2BA; -// end modifying - - -inline CPluginFepManagerBase* CPenInputImePluginItut::GetCurrentUi() - { - switch ( iPenInputMode ) - { - case EPluginInputModeHwr: - case EPluginInputModeVkb: - case EPluginInputModeItut: - return iPluginUiManager; - default: - return NULL; - } - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/inc/peninputimepluginitutdebug.h --- a/fep/aknfep/peninputplugins/peninputimepluginitut/inc/peninputimepluginitutdebug.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Debug utils API -* -*/ - - - - - - - - - - - - -#ifndef PENINPUTIMEPLUGINCHSDEBUG_H -#define PENINPUTIMEPLUGINCHSDEBUG_H - -#ifdef _DEBUG - #define PRINT( txt ) RDebug::Print( txt ); - #define PRINTF( txt ) RDebug::Print txt; - #define PRINT1( txt, arg1 ) RDebug::Print( txt, arg1 ); - #define PRINT2( txt, arg1, arg2 ) RDebug::Print( txt, arg1, arg2 ); - #define PRINT3( txt, arg1, arg2, arg3 ) RDebug::Print( txt, arg1, arg2, arg3 ); -#else - #define PRINT( txt ) - #define PRINTF( txt ) - #define PRINT1( txt, arg1 ) - #define PRINT2( txt, arg1, arg2 ) - #define PRINT3( txt, arg1, arg2, arg3 ) -#endif - - -// Record into log files -#define USE_FILE_LOGGER - -#if defined (_DEBUG) && !defined(USE_FILE_LOGGER) - #define USE_SERIAL_LOGGER -#endif - -#if defined (USE_FILE_LOGGER) - #include - _LIT(KLogFile,"imepluginchn.txt"); - _LIT(KLogFolder,"peninputime"); - #define LOGTEXT(AAA) RFileLogger::Write(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - AAA) - #define LOGTEXT2(AAA,BBB) RFileLogger::WriteFormat(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - TRefByValue(AAA), \ - BBB) - #define LOGTEXT3(AAA,BBB,CCC) RFileLogger::WriteFormat(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - TRefByValue(AAA), \ - BBB, \ - CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) RFileLogger::HexDump(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - AAA,\ - BBB,\ - CCC,\ - DDD) -#elif defined (USE_SERIAL_LOGGER) - #include - #define LOGTEXT(AAA) RDebug::Print(AAA) - #define LOGTEXT2(AAA,BBB) RDebug::Print(AAA,BBB) - #define LOGTEXT3(AAA,BBB,CCC) RDebug::Print(AAA,BBB,CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) -#else - #define LOGTEXT(AAA) - #define LOGTEXT2(AAA,BBB) - #define LOGTEXT3(AAA,BBB,CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) -#endif - -#endif // PENINPUTIMEPLUGINCHSDEBUG - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/inc/pluginfepmanagerbase.h --- a/fep/aknfep/peninputplugins/peninputimepluginitut/inc/pluginfepmanagerbase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,474 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Layout UI interface base class -* -*/ - - - - - - - - - - - -#ifndef C_PLUGINFEPMANAGERBASE_H -#define C_PLUGINFEPMANAGERBASE_H - -// System includes -#include -#include -#include -#include -#include - -//Forward declaration -class CPenInputImePluginItut; -class RPeninputServer; -class CAknEdwinState; -class CRepository; -/** - * CPluginFepManagerBase is the layout UI interface base class. - * It is something like a "proxy" class of layout UI plugin, sending - * commands from FEP to layout UI plugin. - * - * @lib peninputimepluginitut.lib - * @since S60 v3.2 - */ -class CPluginFepManagerBase: public CBase, public MAknFepManagerInterface - { -public: - - /** - * Destructor. - */ - ~CPluginFepManagerBase(); - - /** - * Initalize UI when first time starting up. - * The first time means when the instance created. - * - * @since S60 v3.2 - * - * @return None. - */ - virtual void OnInit(); - - /** - * Explicitly get ICF max length from layout UI and save the - * value to iMaxEditorLength. - * - * @since S60 v3.2 - * - * @return None. - */ - void RetrieveEditorMaxLength(); - - /** - * Update local copy of case mode when - * user change case in layout UI. - * - * @since S60 v3.2 - * - * @param aCaseMode The case mode to save locally. - * @return None. - */ - void UpdateCaseMode( TInt aCaseMode ); - -// From MAknFepManagerInterface - - /** - * Set layout UI current number mode key mapping. - * For example, 0-9 ; 0-9,*,# and etc. - * - * @since S60 v3.2 - * - * @param aAknEditorNumericKeymap Key mapping enum value. - * @return None. - */ - void SetNumberModeKeyMappingL( TAknEditorNumericKeymap aAknEditorNumericKeymap ); - - /** - * Handle key event. - * Since most plugin layout UIs are based on animation, they receive - * key and process key events before this function. - * - * @since S60 v3.2 - * - * @param aKey Key event code. - * @param aLength Key press length. - * @return ETrue if processed, EFalse otherwise. - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey ); - - /** - * Handle command come from FEP. - * - * @since S60 v3.2 - * - * @param aCommandId Command id. - * @return None - */ - void HandleCommandL( TInt aCommandId ); - - /** - * Handle command come from FEP. - * - * @since S60 v3.2 - * - * @param aCommandId Command id. - * @param aParam Command parameter. - * @return None. - */ - void HandleCommandL( TInt aCommandId, TInt aParam ); - - /** - * Close plugin layout UI. - * - * @since S60 v3.2 - * - * @return None. - */ - void CloseUI(); - - /** - * Activate plugin layout UI. - * - * @since S60 v3.2 - * - * @return None. - */ - void ActivateUI(); - - /** - * Get max text length of layout UI ICF control. - * - * @since S60 v3.2 - * @return Max ICF text length. - */ - TInt EditorMaxLength(); - - /** - * When screen size changes, SizeChanged is called by FEP. - * - * @since S60 v3.2 - * @return None. - */ - void ResourceChanged( TInt aType ); - - /** - * Set underlining UI. - * Since plugin layout UI and HKB can be used at same time, - * HKB UI layout need to be notified after plugin layout UI - * processes some events - * - * @since S60 v3.2 - * @param aNextUI The underlining UI pointer. - * @return None. - */ - void SetNextFepUI( MAknFepManagerInterface* aNextUi ); - - /** - * Get support language in sepecfied mode. - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aMode Input mode. - * @return Language supported. - */ - TInt SupportLanguage( TInt aMode ) const; - - /** - * Set current language, which is required by editor - * - * @since S60 v3.2 - * - * @param aLanguage Language to set. - * @return None. - */ - void SetInputLanguageL( TLanguage aLanguage ); - - /** - * Set editor text and cursor information to layout UI - * ICF control. - * - * @since S60 v3.2 - * @param aTotalTextLen Total text length in eidtor. - * @param aStartPos Offset of aText to the start of editor text. - * @param aCursorSel Cursor position. - * @param aText A part of editor text start from aStartPos. - * - * @return None. - */ - void SetFepAwareEditorText( const TFepInputContextFieldData& aIcfData ); - - /** - * Set layout UI mode. - * The method leaves here only for compatibility - * - * @since S60 v3.2 - * - * @param aMode Mode to set. - * @param aPredictive Whether the current mode support predictive. - * @param aWwertyInputMode Whether the current HKB is qwerty. - * @return None. - */ -#ifdef RD_INTELLIGENT_TEXT_INPUT - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode, - TInt aKeyboardType = EPtiKeyboardNone) ; -#else - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode); -#endif - -#ifdef RD_INTELLIGENT_TEXT_INPUT - virtual TBool IsValidFnKeyPress() const; - virtual TBool IsValidLongChrKeyPress() const; -#endif - - /** - * Set layout UI current case. - * The method leaves here only for compatibility. Since plugin layout - * UI is different from HKB tranditional UI, they use something like - * "case mode" other than case which is set by a FEP command. - * - * @since S60 v3.2 - * - * @param aCase Case to set. - * @return None. - */ - void SetCase( TCase aCase ); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return None. - */ - void ExpireMultitapTimer(); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aKey The key presssed. - * @return ETrue if long press, EFalse otherwise. - */ - TBool IsValidNumericLongKeyPress( TInt aKey ) const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aText Text to add to user dictionary. - * @return None. - */ - void AddTextToUserDictionaryL( const TDesC& aText ); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aFormat On return, contains the formatting to - * apply to the inline text (or to a portion of it). - * @param aNumberOfCharactersWithSameFormat On return, - contains the number of characters in the inline - text (starting at aPositionOfCharacter) - which have the same formatting - * @param aPositionOfCharacter Start position within the inline text - * @return None. - */ - void GetFormatOfFepInlineText( TCharFormat& aFormat, - TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter ) const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return ETrue if valid, EFalse otherwise. - */ - TBool IsValidShiftKeyPress() const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return None. - */ - void SetEditorContext( TInt aContext ); - - /** - * Set the Star key flag - * - * @param aSet TBool. - * @return None - */ - void SetStarKeyFlag( TBool aSet ); -protected: - - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin pointer. - * @param aPenInputServer Pen input server pointer - */ - CPluginFepManagerBase( CPenInputImePluginItut& aOwner, - RPeninputServer* aPenInputServer ); - - /** - * By default Symbian 2nd phase constructor. - * - * @since S60 v3.2 - * @return None - */ - void BaseConstructL(); - - /** - * Set layout permited ranges. - * - * @param aPermittedMode Ranges of current editor allowed. - * @return None - */ - virtual void SetLayoutPermitedRanges( TInt aPermittedRanges ); - - /** - * Set layout primary range. - * - * @since S60 v3.2 - * @param aEditorState Current editor state. - * @return None - */ - virtual void SetLayoutRange( const CAknEdwinState* aEditorState ); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @return None - */ - void SendCommandToServer( TInt aCommandId ); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @param aParam The command param. - * @return None - */ - void SendCommandToServer( TInt aCommandId, TInt aParam ); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @param aParam The command param. - * @return None - */ - void SendCommandToServer( TInt aCommandId, const TDesC8& aParam ); - - /** - * Get layout UI last used range. - * - * @since S60 v3.2 - * @return Range last used. - */ - TInt LayoutLastUsedRange(); - - /** - * Set layout UI position. - * Move layout UI not to overlap with some editors. - * - * @since S60 v3.2 - * @param aBottomRight The bottom right position of layout UI. - * The value is only a suggest value, layout UI may adjust it. - * @return None. - */ - void SetLayoutPosition( const TRect& aParam ); - - /** - * Get Editor's local language. - * - * @since S60 v3.2 - * @param aEditorState The editor's .CAknEdwinState pointer - * @return Language code the editor requires. - */ - TLanguage GetLocalLanguage( const CAknEdwinState* aEditorState ) const; - -protected: - - /** - * IME plugin reference. - */ - CPenInputImePluginItut& iOwner; - - /** - * Pen input server pointer. Not own. - */ - RPeninputServer* iPenInputServer; - - /** - * The premitted range of current editor. - */ - TInt iPermittedRange; - - TInt iHkbMode; - - /** - * The fep suggested range. The suggested value comes from - * previous touch input method. - */ - TInt iSuggestedRange; - /** - * Current language. - */ - TLanguage iLanguage; - -private: - - /** - * Repository object used to get last used range. - */ - CRepository* iRepository; - - /** - * Local copy of ICF max text length. - */ - TInt iMaxEditorLength; - - /** - * Local copy of layout current case mode - */ - TInt iLastCase; - - /** - * Underlineing UI interface - */ - MAknFepManagerInterface* iHkbUi; - }; -#endif // C_PLUGINFEPMANAGERBASE_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/inc/pluginfepmanageritut.h --- a/fep/aknfep/peninputplugins/peninputimepluginitut/inc/pluginfepmanageritut.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ITUT layout UI class header -* -*/ - - - - - - - - - - - -#ifndef C_PLUGINFEPMANAGERITUT_H -#define C_PLUGINFEPMANAGERITUT_H - -// System includes -#include - -// User includes -#include "pluginfepmanagerbase.h" - -class CPenInputImePluginItut; - -/** - * CPluginFepManagerItut is the ITUT layout UI interface - * "proxy" class. - * - * @lib peninputimepluginitut.lib - * @since S60 v3.2 - */ -class CPluginFepManagerItut : public CPluginFepManagerBase - { -public: - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - * @return Pointer to created CPluginFepManagerItut object - */ - static CPluginFepManagerItut* NewL( CPenInputImePluginItut& aOwner, - RPeninputServer* aPenInputServer ); - - /** - * Handle key event. - * Since most plugin layout UIs are based on animation, they receive - * key and process key events before this function. - * - * @since S60 v3.2 - * - * @param aKey Key event code. - * @param aLength Key press length. - * @return ETrue if processed, EFalse otherwise. - */ - TBool HandleKeyL( TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey ); - -private: - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - */ - - CPluginFepManagerItut( CPenInputImePluginItut& aOwner, - RPeninputServer* aPenInputServer ); - }; -#endif // C_PLUGINFEPMANAGERITUT_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/src/peninputimepluginitut.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginitut/src/peninputimepluginitut.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,685 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Input mode plugin implementation file -* -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include -#include - -// User includes -#include "peninputimepluginitut.h" -#include "peninputimepluginitutdebug.h" -#include "pluginfepmanageritut.h" - -const TInt KInvalidImplId = 0; - -_LIT(KItutImeName,"vitut Itut"); -_LIT(KSplitItutImeName, "split vitut Itut"); - -class TScriptPair - { -public: - const TInt* iData; - TInt iLen; - CPenInputImePluginItut::TScriptIndex iScriptIdx; - }; - -const TInt LatinLangs[] = - { - 65, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 39, 44, 45, 46, - 47, 48, 49, 51, 59, 67, 68, 70, 76, 78, - 79, 82, 83, 85, 91, 96, 102, 103, 401, 402 - }; -const TInt CyrillicLangs[] = {16, 42, 93,}; -const TInt GreekLangs[] = {54, 55,}; -const TInt HebrewLangs[] = {57,}; -const TInt ArabicLangs[] = {37,}; -const TInt FarsiLangs[] = {50,}; -const TInt UrduLangs[] = {94,}; -const TInt ThaiLangs[] = {33,}; -const TInt ChnLangs[] = {29, 30, 31,}; -const TInt IndicLangs[] = {58, 72}; - -_LIT(KPluginResourcePath, "z:\\RESOURCE\\Plugins\\"); -_LIT(KResFilePattern, "peninputitutconfig_*.rsc"); -_LIT(KResFilePatternSplit, "peninputsplititutconfig_*.rsc"); - -_LIT(KLatinResFile, "peninputitutconfig_latin.rsc"); -_LIT(KLatinResFileSplit, "peninputsplititutconfig_latin.rsc"); -_LIT(KCyrillicResFile, "peninputitutconfig_cyrillic.rsc"); -_LIT(KCyrillicResFileSplit, "peninputsplititutconfig_cyrillic.rsc"); -_LIT(KGreekResFile, "peninputitutconfig_greek.rsc"); -_LIT(KGreekResFileSplit, "peninputsplititutconfig_greek.rsc"); -_LIT(KHebrewResFile, "peninputitutconfig_hebrew.rsc"); -_LIT(KHebrewResFileSplit, "peninputsplititutconfig_hebrew.rsc"); -_LIT(KArabicResFile, "peninputitutconfig_arabic.rsc"); -_LIT(KArabicResFileSplit, "peninputsplititutconfig_arabic.rsc"); -_LIT(KFarsiResFile, "peninputitutconfig_farsi.rsc"); -_LIT(KFarsiResFileSplit, "peninputsplititutconfig_farsi.rsc"); -_LIT(KUrduResFile, "peninputitutconfig_urdu.rsc"); -_LIT(KUrduResFileSplit, "peninputsplititutconfig_urdu.rsc"); -_LIT(KThaiResFile, "peninputitutconfig_thai.rsc"); -_LIT(KThaiResFileSplit, "peninputsplititutconfig_thai.rsc"); -_LIT(KChnResFile, "peninputitutconfig_chinese.rsc"); -_LIT(KChnResFileSplit, "peninputsplititutconfig_chinese.rsc"); - -_LIT(KDevanagiriResFile, "peninputitutconfig_devanagari.rsc"); -_LIT(KDevanagiriResFileSplit, "peninputsplititutconfig_devanagari.rsc"); -const TScriptPair KSupportScripts[] = - { - {LatinLangs, 50, CPenInputImePluginItut::ELatinLang}, - {CyrillicLangs, 3, CPenInputImePluginItut::ECyrillicLang}, - {GreekLangs, 2, CPenInputImePluginItut::EGreekLang}, - {HebrewLangs, 1, CPenInputImePluginItut::EHebrewLang}, - {ArabicLangs, 1, CPenInputImePluginItut::EArabicLang}, - {FarsiLangs, 1, CPenInputImePluginItut::EFarsiLang}, - {UrduLangs, 1, CPenInputImePluginItut::EUrduLang}, - {ThaiLangs, 1, CPenInputImePluginItut::EThaiLang}, - {ChnLangs, 3, CPenInputImePluginItut::EChnLang}, - {IndicLangs, 2, CPenInputImePluginItut::EIndicLang} - }; - -// ----------------------------------------------------------------------------- -// RImplInfoPtrArray cleanup function -// ----------------------------------------------------------------------------- -// -void Cleanup( TAny* aAny ) - { - RImplInfoPtrArray* implArray = - reinterpret_cast< RImplInfoPtrArray*> ( aAny ); - implArray->ResetAndDestroy(); - implArray->Close(); - } - -//lint -esym( 960, 58, * ) lint notes: break used outside of a switch - -// ======== MEMBER FUNCTIONS ======== - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::NewL -// Factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginItut* CPenInputImePluginItut::NewL(TAny* aInitParams) - { - CPenInputImePluginItut* self = new ( ELeave ) CPenInputImePluginItut( - static_cast( - aInitParams ) ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::NewLC -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginItut* CPenInputImePluginItut::NewLC( - TAny* aInitParams ) - { - CPenInputImePluginItut* self = new ( ELeave ) CPenInputImePluginItut( - static_cast( - aInitParams ) ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::~CPenInputImePluginItut -// Destructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginItut::~CPenInputImePluginItut() - { - DeActivate(); - iUiLayoutImpIdList.Close(); - delete iPluginUiManager; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::GetInputMethodUiL -// Create layout UI interface -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -MAknFepManagerInterface* CPenInputImePluginItut::GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TLanguage aLanguage, - TInt aMode, - const TDesC8& /*aData*/, - const TBool aIsSplitView) - { - iFepManager = aFepManager; - iLanguage = aLanguage; - CPluginFepManagerBase* fepmanager = NULL; - - TUid layoutId; - TInt i; - - switch ( aMode ) - { - case EPluginInputModeItut: - { - if(aIsSplitView) - { - layoutId.iUid = KSplitItutUiId; - } - else - { - layoutId.iUid = KItutUiId; - } - } - break; - default: - return NULL; - } - fepmanager = GetPluginUiL( aMode ); - - for ( i = 0; i < iUiLayoutImpIdList.Count(); ++i ) - { - if( iUiLayoutImpIdList[i] == layoutId.iUid ) - { - break; - } - } - - if ( i < iUiLayoutImpIdList.Count() ) - { - iPenInputMode = aMode; - TInt errCode = iPenInputServer->SetUiLayoutId( layoutId ); - if ( errCode == KErrNone ) - { - fepmanager->OnInit(); - return fepmanager; - } - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::GetInputMethodUiL -// Create layout UI interface -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -MAknFepManagerInterface* CPenInputImePluginItut::GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TInt aLayoutId, - const TDesC8& aData ) - { - iFepManager = aFepManager; - CPluginFepManagerBase* fepmanager = NULL; - TInt i; - TInt mode; - - if ( aLayoutId == KItutUiId || aLayoutId == KSplitItutUiId) - { - mode = EPluginInputModeItut; - } - else - { - mode = EPluginInputModeNone; - return NULL; - } - - fepmanager = GetPluginUiL( mode ); - for ( i = 0; i < iUiLayoutImpIdList.Count(); ++i ) - { - if ( iUiLayoutImpIdList[i] == aLayoutId ) - { - break; - } - } - - if ( i < iUiLayoutImpIdList.Count() ) - { - iPenInputMode = mode; - iPenInputServer->SetUiLayoutId( TUid::Uid( aLayoutId ), aData ); - fepmanager->OnInit(); - return fepmanager; - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::Activate -// Activate current IME plugin. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginItut::Activate() - { - if(iPenInputServer) - { - iPenInputServer->ActivateLayout(ETrue); - } - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::DeActivate -// Deactivate current IME plugin. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginItut::DeActivate() - { - if (iPenInputServer && iPenInputServer->IsVisible()) - { - iPenInputServer->ActivateLayout(EFalse); - } - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::ImeImplId -// Get current IME plugin implementation ID. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginItut::ImeImplId() - { - return KInputMethodImplementationId; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::LayoutUiImplId -// Get current layout UI implementation id. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginItut::LayoutUiImplId() - { - TInt id; - switch ( iPenInputMode ) - { - case EPluginInputModeItut: - { - id = KItutUiId; - } - break; - default: - { - id = KInvalidImplId; - } - break; - } - return id; - } - - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::SupportModes -// Get suppored layout UI modes(VKB/HWR). -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginItut::SupportModes(CPtiEngine* aPtiEngine, - RArray& aSupportList) const - { - TInt ret = KErrNone; - TRAP_IGNORE( ret = SupportModesL( aPtiEngine, aSupportList ) ); - return ret; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::SupportModesL -// Get suppored layout UI modes(VKB/HWR). -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool IsFileInDir( CDir* aDir, const TDesC& aFileName ) - { - if( aDir ) - { - for( TInt k = 0; k < aDir->Count(); ++k ) - { - if( aFileName.CompareF( (*aDir)[k].iName ) == 0 ) - { - return ETrue; - } - } - } - return EFalse; - } - - -TInt CPenInputImePluginItut::SupportModesL(CPtiEngine* /*aPtiEngine*/, - RArray& aSupportList) const - { - RImplInfoPtrArray infoArray; - TUid id; - id.iUid = KHwrLayoutInterfaceId; - TBool itut = EFalse; - TBool splititut = EFalse; - - CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) ); - REComSession::ListImplementationsL(id, infoArray); - - for (TInt i = 0; i < infoArray.Count(); ++i) - { - if (infoArray[i]->ImplementationUid().iUid == KItutUiId) - { - itut = ETrue; - } - - if (infoArray[i]->ImplementationUid().iUid == KSplitItutUiId) - { - splititut = ETrue; - } - } - - TImePlguinImplDetail detail; - - detail.iImplementationId = KInputMethodImplementationId; - - if (itut) - { - detail.iMode = EPluginInputModeItut; - detail.iDisplayName.Copy(KItutImeName()); - detail.iMeritValue = EImeMerit_Preferred; - - TFindFile fileFinder(CCoeEnv::Static()->FsSession()); - - CDir* dir = NULL; - TInt result = fileFinder.FindWildByDir( KResFilePattern, KPluginResourcePath, dir ); - if( result == KErrNone ) - { - for (TInt i = 0; i < sizeof(KSupportScripts)/sizeof(KSupportScripts[0]); i++) - { - if ( IsFileInDir( dir, ResFileNameByScriptIdx(KSupportScripts[i].iScriptIdx) ) ) - { - TInt* data = const_cast(KSupportScripts[i].iData); - for (TInt j = 0; j < KSupportScripts[i].iLen; j++) - { - detail.iLanguage = *(data); - data++; - aSupportList.AppendL(detail); - } - } - } - } - delete dir; - } - - if (splititut) - { - detail.iMode = EPluginInputModeItut; - detail.iDisplayName.Copy(KSplitItutImeName()); - detail.iMeritValue = EImeMerit_Preferred; - - TFindFile fileFinder(CCoeEnv::Static()->FsSession()); - - CDir* dir = NULL; - TInt result = fileFinder.FindWildByDir( KResFilePatternSplit, KPluginResourcePath, dir ); - if( result == KErrNone ) - { - for (TInt i = 0; i < sizeof(KSupportScripts)/sizeof(KSupportScripts[0]); i++) - { - if ( IsFileInDir( dir, ResFileNameByScriptIdxForSplit(KSupportScripts[i].iScriptIdx) ) ) - { - TInt* data = const_cast(KSupportScripts[i].iData); - for (TInt j = 0; j < KSupportScripts[i].iLen; j++) - { - detail.iLanguage = *(data); - data++; - aSupportList.AppendL(detail); - } - } - } - } - delete dir; - } - - CleanupStack::PopAndDestroy(&infoArray); // infoArray - - return 0; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::CurrentMode -// Get current layout UI mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginItut::CurrentMode() const - { - return iPenInputMode; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::HandleServerEventL -// Handle pen input server event.. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPenInputImePluginItut::HandleServerEventL( TInt aEventId, const TDesC& aData ) - { - TBool bHandled = EFalse; - switch ( aEventId ) - { - case ESignalLayoutICFLengthChanged: - { - GetCurrentUi()->RetrieveEditorMaxLength(); - } - break; - case ESignalCaseMode: - { - TInt data = *(TInt*)( aData.Ptr() ); - ASSERT( data >= 0 ); - //lint !e728 - GetCurrentUi()->UpdateCaseMode( data ); - } - break; - default: - break; - } - - return bHandled; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::HandleMenuCommandL -// Handle the menu command. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPenInputImePluginItut::HandleMenuCommandL( TInt /*aCommandId*/ ) - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::DynInitMenuPaneL -// Dynamiclly update menu items during it displays. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginItut::DynInitMenuPaneL( CAknFepUiInterfaceMenuPane* /*aMenuPane*/ ) - { - } - - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::CPenInputImePluginItut -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginItut::CPenInputImePluginItut( RPeninputServer* aHwrServer ) - :iPenInputServer( aHwrServer ) - { - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::ConstructL -// 2nd phase constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginItut::ConstructL() - { - FindUiLayoutImplementationL(); - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::FindUiLayoutImplementationL -// Enumuate all layout UI ids. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginItut::FindUiLayoutImplementationL() - { - RImplInfoPtrArray infoArray; - TUid id; - id.iUid = KHwrLayoutInterfaceId; - - iUiLayoutImpIdList.Reset(); - CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) ); - REComSession::ListImplementationsL( id, infoArray ); - - for ( TInt i = 0; i < infoArray.Count(); ++i ) - { - iUiLayoutImpIdList.AppendL( infoArray[i]->ImplementationUid().iUid ); - } - - CleanupStack::PopAndDestroy( &infoArray ); // infoArray - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::GetPluginUiL -// Get HWR UI interface. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase* CPenInputImePluginItut::GetPluginUiL( TInt aMode ) - { - switch ( aMode ) - { - case EPluginInputModeItut: - { - delete iPluginUiManager; - iPluginUiManager = NULL; - iPluginUiManager = CPluginFepManagerItut::NewL(*this, iPenInputServer); - return iPluginUiManager; - } - default: - { - return NULL; - } - } - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginItut::ResFileNameByScriptIdx -// Get HWR UI interface. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -const TDesC& CPenInputImePluginItut::ResFileNameByScriptIdx(const TScriptIndex aIndex) - { - switch (aIndex) - { - case ELatinLang: - return KLatinResFile; - case ECyrillicLang: - return KCyrillicResFile; - case EGreekLang: - return KGreekResFile; - case EHebrewLang: - return KHebrewResFile; - case EArabicLang: - return KArabicResFile; - case EFarsiLang: - return KFarsiResFile; - case EUrduLang: - return KUrduResFile; - case EThaiLang: - return KThaiResFile; - case EChnLang: - return KChnResFile; - case EIndicLang: - return KDevanagiriResFile; - default: - break; - } - - return KNullDesC; - } - -const TDesC& CPenInputImePluginItut::ResFileNameByScriptIdxForSplit(const TScriptIndex aIndex) - { - switch (aIndex) - { - case ELatinLang: - return KLatinResFileSplit; - - case ECyrillicLang: - return KCyrillicResFileSplit; - - case EGreekLang: - return KGreekResFileSplit; - - case EHebrewLang: - return KHebrewResFileSplit; - - case EArabicLang: - return KArabicResFileSplit; - - case EFarsiLang: - return KFarsiResFileSplit; - - case EUrduLang: - return KUrduResFileSplit; - - case EThaiLang: - return KThaiResFileSplit; - - case EChnLang: - return KChnResFileSplit; - - case EIndicLang: - return KDevanagiriResFileSplit; - - default: - break; - } - - return KNullDesC; - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/src/peninputimepluginitutmain.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginitut/src/peninputimepluginitutmain.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation to E32Dll -* -*/ - - - - - - - - - - - - -#include - -/** DLL Entry point */ -#ifndef EKA2 -GLDEF_C TInt E32Dll( TDllReason /*aReason*/ ) - { - return( KErrNone ); - } -#endif - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/src/peninputimepluginitutproxy.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginitut/src/peninputimepluginitutproxy.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation to Proxy -* -*/ - - - - - - - - - - - - -// System includes -#include -#include - -// User includes -#include "peninputimepluginitut.h" - -// Map the interface UIDs to implementation factory functions -const TImplementationProxy ImplementationTable[] = - { - //lint !e611 - IMPLEMENTATION_PROXY_ENTRY( 0x2000B133, CPenInputImePluginItut::NewL ) - }; - -// Exported proxy for instantiation method resolution -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy ); - - return ImplementationTable; - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/src/pluginfepmanagerbase.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginitut/src/pluginfepmanagerbase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,751 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Layout UI interface base class implementation -* -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include // CAknEdwinState -#include -#include -#include -#include -#include - -// User includes -#include "pluginfepmanagerbase.h" -#include "peninputimepluginitut.h" - -// ======== MEMBER FUNCTIONS ======== - - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CPluginFepManagerBase -// Destructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase::~CPluginFepManagerBase() - { - delete iRepository; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::OnInit -// Initalize UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::OnInit() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::RetrieveEditorMaxLength -// Explicitly get ICF max length from layout UI . -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::RetrieveEditorMaxLength() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::UpdateCaseMode -// Update local copy of case mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::UpdateCaseMode( TInt aCaseMode ) - { - iLastCase = aCaseMode; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetNumberModeKeyMappingL -// Set layout UI current number mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap ) - { - SendCommandToServer( ECmdPenInputEditorNumericKeyMap, - aAknEditorNumericKeymap ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleKeyL -// Handle key event. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::HandleKeyL( TInt aKey, TKeyPressLength aLength, TEventCode /*aEventCode*/ ) - { - return iHkbUi->HandleKeyL( aKey, aLength ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::HandleCommandL( TInt aCommandId ) - { - SendCommandToServer( aCommandId ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::HandleCommandL(TInt aCommandId,TInt aParam) - { - switch ( aCommandId ) - { - case ECmdPenInputRange: - { - iHkbMode = aParam; - } - break; - case ECmdPenInputPermittedRange: - { - iLastCase = ECaseInvalide; - SetLayoutPermitedRanges( aParam ); - } - break; - case ECmdPenInputEditorState: - { - CAknEdwinState* state = - reinterpret_cast( aParam ); - SetLayoutRange( state ); - } - break; - case ECmdPenInputSetWindowPos: - { - TRect* rect = reinterpret_cast( aParam ); - ASSERT( rect ); - SetLayoutPosition( *rect ); - } - break; - case ECmdPenInputCaseMode: - //if( aParam != iLastCase ) - { - SendCommandToServer( ECmdPenInputCase, aParam ); - iLastCase = aParam; - } - break; - case ECmdPenInputEditorCustomNumericKeyMap: - { - TDesC* res = (TDesC*)aParam; - TPtrC8 param; - param.Set((TUint8*)res->Ptr(), res->Size()); - SendCommandToServer( aCommandId, param ); - SetNumberModeKeyMappingL - ( ( TAknEditorNumericKeymap )EKeymapFromResource ); - } - break; - case ECmdPenInputSuggestRange: - iSuggestedRange = aParam; - if( iSuggestedRange == ERangeAccent ) - { - iSuggestedRange = ERangeEnglish; - } - break; - case ECmdPenInputSendEditorTextAndCurPos: - { - TFepInputContextFieldData* pIcfData = - reinterpret_cast( aParam ); - TInt dataSize = sizeof( TFepInputContextFieldData ); - TInt textSize = pIcfData->iText.Size(); - - HBufC8* buf = HBufC8::NewLC(dataSize + textSize + 2*sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(dataSize); - writeStream.WriteInt32L(textSize); - - const TUint8* pData = reinterpret_cast( pIcfData ); - writeStream.WriteL( pData, dataSize ); - - const TUint8* pText = reinterpret_cast( pIcfData->iText.Ptr() ); - writeStream.WriteL( pText, textSize ); - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - case ECmdPenInputFingerMatchList: - { - TFepInputAllCandidates* pCanData = reinterpret_cast(aParam); - TInt count = (*pCanData).iCandidates.Count(); - - TInt transferSize = 2 * sizeof(TInt); - RArray sizeArray; - for (TInt i = 0; i < count; i++) - { - sizeArray.Append((*pCanData).iCandidates[i].Size()); - transferSize += sizeArray[i] + sizeof(TInt); - } - - HBufC8* buf = HBufC8::NewLC(transferSize); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(count); - writeStream.WriteInt32L(transferSize); - - for (TInt i = 0; i < count; i++) - { - writeStream.WriteInt32L(sizeArray[i]); - const TUint16* piData = (*pCanData).iCandidates[i].Ptr(); - writeStream.WriteL(piData, sizeArray[i]/2); - } - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - sizeArray.Close(); - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - - } - break; - case ECmdPenInputSetPromptText: - { - TFepPromptText* pPromptData = - reinterpret_cast( aParam ); - - TInt dataSize = sizeof( TFepPromptText ); - TInt textSize = 0; - - if (pPromptData->iText.Length()) - { - textSize = pPromptData->iText.Size(); - } - - HBufC8* buf = HBufC8::NewLC(dataSize + textSize + 2*sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(dataSize); - writeStream.WriteInt32L(textSize); - - const TUint8* pData = reinterpret_cast( pPromptData ); - writeStream.WriteL( pData, dataSize ); - - if (textSize != 0) - { - const TUint16* pText = pPromptData->iText.Ptr(); - writeStream.WriteL( pText, textSize/2 ); - } - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - case ECmdPenInputFingerMatchIndicator: - { - TFepIndicatorInfo* pIndicatorData = - reinterpret_cast( aParam ); - - HBufC8* buf = HBufC8::NewLC(4 * sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(pIndicatorData->iIndicatorImgID); - writeStream.WriteInt32L(pIndicatorData->iIndicatorMaskID); - writeStream.WriteInt32L(pIndicatorData->iIndicatorTextImgID); - writeStream.WriteInt32L(pIndicatorData->iIndicatorTextMaskID); - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - case ECmdPenInputSendEditMenuData: - { - TInt* commandList = reinterpret_cast( aParam ); - - HBufC8* buf = HBufC8::NewLC( (*commandList+1) * sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(*commandList); - for (TInt i=1;i<=*commandList;i++) - { - writeStream.WriteInt32L(*(commandList+i)); - } - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - - case ECmdPenInputSymbolOfHardKeyOne: - { - TFepSymbolOfHardwareOne* pIndicatorData = - reinterpret_cast( aParam ); - - HBufC8* buf = HBufC8::NewLC(3 * sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(pIndicatorData->iSymbol1); - writeStream.WriteInt32L(pIndicatorData->iSymbol2); - writeStream.WriteInt32L(pIndicatorData->iSymbol3); - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - default: - SendCommandToServer( aCommandId, aParam ); - break; - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CloseUI -// Close plugin layout UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::CloseUI() - { - iPenInputServer->ActivateLayout( EFalse ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::ActivateUI -// Activate plugin layout UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ActivateUI() - { - iPenInputServer->ActivateLayout( ETrue ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::EditorMaxLength -// Get max text length of layout UI ICF control. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::EditorMaxLength() - { - return iMaxEditorLength; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SizeChanged -// Handle screen size changed. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ResourceChanged(TInt aType) - { - iPenInputServer->ResourceChanged(aType); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetNextFepUI -// Set underlining UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetNextFepUI( MAknFepManagerInterface* aNextUi ) - { - iHkbUi = aNextUi; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SupportLanguage -// Get support language in sepecfied mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::SupportLanguage( TInt /*aMode*/ ) const - { - return iLanguage; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetInputLanguageL -// Set current language. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetInputLanguageL( TLanguage aLanguage ) - { - iLanguage = aLanguage; - //maybe language check is needed. - TInt lang = (TInt)aLanguage; - ASSERT( lang >=0 ); - SendCommandToServer( ECmdPenInputLanguage, lang ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetFepAwareEditorText -// Set editor text and cursor information to layout UI ICF control. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetFepAwareEditorText( - const TFepInputContextFieldData& /*aIcfData*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Set layout UI mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CPluginFepManagerBase::SetMode( TInt aMode, TBool aPredictive, - TBool aQwertyInputMode, TInt aKeyboardType) -#else -void CPluginFepManagerBase::SetMode( TInt aMode, TBool aPredictive, - TBool aQwertyInputMode ) -#endif - { - iHkbUi->SetMode( aMode, aPredictive, aQwertyInputMode ); - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool CPluginFepManagerBase::IsValidFnKeyPress() const - { - return EFalse; - } - TBool CPluginFepManagerBase::IsValidLongChrKeyPress() const - { - return EFalse; - } -#endif -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Set layout UI current case. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetCase( TCase aCase ) - { - iHkbUi->SetCase( aCase ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::ExpireMultitapTimer -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ExpireMultitapTimer() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsValidNumericLongKeyPress -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsValidNumericLongKeyPress( TInt /*aKey*/ ) const - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::AddTextToUserDictionaryL -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::AddTextToUserDictionaryL( const TDesC& /*aText*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::GetFormatOfFepInlineText -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::GetFormatOfFepInlineText( - TCharFormat& /*aFormat*/, - TInt& /*aNumberOfCharactersWithSameFormat*/, - TInt /*aPositionOfCharacter*/ ) const - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsValidShiftKeyPress -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsValidShiftKeyPress() const - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetEditorContext -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetEditorContext( TInt /*aContext*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetEditorContext -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetStarKeyFlag( TBool /*aSet*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CPluginFepManagerBase -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase::CPluginFepManagerBase( CPenInputImePluginItut& aOwner, - RPeninputServer* aPenInputServer ) - :iOwner( aOwner ), iPenInputServer( aPenInputServer ) - { - iSuggestedRange = ERangeInvalid; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::BaseConstructL -// Symbian 2nd phase constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::BaseConstructL() - { - iRepository = CRepository::NewL( KCRUidAknFep ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutPermitedRanges -// Set layout permited ranges. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutPermitedRanges( TInt aPermittedMode ) - { - // Not derived from edwin - SendCommandToServer( ECmdPenInputPermittedRange, aPermittedMode == EAknEditorNumericInputMode ); - - /*if ( aPermittedMode == EAknEditorNumericInputMode ) - { - iPermittedRange = ERangeNumber; - } - else if ( aPermittedMode & EAknEditorTextInputMode ) - { - // Derived from edwin and EAknEditorTextInputMode - iPermittedRange = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else if ( aPermittedMode & EAknEditorSecretAlphaInputMode ) - { - // Derived from EAknEditorSecretAlphaInputMode - iPermittedRange = ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else - { - iPermittedRange = ERangeNative | - ERangeNumber | - ERangeEnglish | - ERangeSymbol; - }*/ - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutRange -// Set layout primary range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutRange( - const CAknEdwinState* aEditorState ) - { - if ( aEditorState ) - { - SendCommandToServer( ECmdPenInputRange, - aEditorState->Flags() & EAknEditorFlagLatinInputModesOnly ); - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer( TInt aCommandId ) - { - iPenInputServer->HandleCommand( aCommandId ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer( TInt aCommandId, TInt aParam ) - { - TBuf8 buf; - buf.Append( (TUint8*)&aParam, sizeof(TInt) ); - SendCommandToServer( aCommandId, buf ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer( TInt aCommandId, - const TDesC8& aParam ) - { - iPenInputServer->HandleCommand( aCommandId, aParam ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::LayoutLastUsedRange -// Get layout UI last used range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::LayoutLastUsedRange() - { - TInt value = 0; - if ( iRepository ) - { - iRepository->Get( KAknFepLastUsedRange, value ); - } - - return value; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutPosition -// Set layout UI position. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutPosition( const TRect& pParam ) - { - TBuf8 buf; - buf.Append( (TUint8*)&pParam, sizeof( pParam ) ); - - SendCommandToServer( ECmdPenInputSetWindowPos, buf ); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::GetLocalLanguage -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TLanguage CPluginFepManagerBase::GetLocalLanguage( - const CAknEdwinState* aEditorState ) const - { - TLanguage language = ELangTest; - // Check for a local language override - if ( aEditorState ) - { - TInt aknEditorFlags = aEditorState->Flags() ; - if ( aknEditorFlags & EAknEditorFlagLatinInputModesOnly ) - { - language = ELangEnglish; - } - else - { - language = aEditorState->LocalLanguage(); - } - } - - return language; - } - - // End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/src/pluginfepmanageritut.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginitut/src/pluginfepmanageritut.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: ITUT layout UI class implementation file. -* -*/ - - - - - - - - - - - - -// System includes -#include // CAknEdwinState -#include - -// User includes -#include "pluginfepmanageritut.h" -#include "peninputimepluginitut.h" -#include "eikon.hrh" - -// ======== MEMBER FUNCTIONS ======== - - -// ----------------------------------------------------------------------------- -// CPluginFepManagerItut::NewL -// Factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerItut* CPluginFepManagerItut::NewL( - CPenInputImePluginItut& aOwner, RPeninputServer* aPenInputServer ) - { - CPluginFepManagerItut* self = new ( ELeave ) CPluginFepManagerItut( - aOwner, aPenInputServer ); - CleanupStack::PushL( self ); - self->BaseConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerItut::CPluginFepManagerItut -// constructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerItut::CPluginFepManagerItut( CPenInputImePluginItut& aOwner, - RPeninputServer* aPenInputServer ) - :CPluginFepManagerBase( aOwner, aPenInputServer ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerItut::HandleKeyL -// Handle key event. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerItut::HandleKeyL( TInt aKey, TKeyPressLength aLength, TEventCode /*aEventCode*/ ) - { - TInt ret; - TPckgC msgdata(aKey); - - if (aLength == ELongKeyPress) - { - iPenInputServer->HandleCommand(ECmdPenInputFingerLongKeyPress, msgdata, ret); - } - else - { - iPenInputServer->HandleCommand(ECmdPenInputFingerKeyPress, msgdata, ret); - } - - return ret == KErrNone ? ETrue:EFalse; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginitut/srcdata/2000B133.rss --- a/fep/aknfep/peninputplugins/peninputimepluginitut/srcdata/2000B133.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 1028 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource definitions for project peninputimepluginitut -* -*/ - - - - - - - - - - - - -#include "registryinfo.rh" - -// Declares info for two implementations -RESOURCE REGISTRY_INFO theInfo - { - // UID for the DLL - dll_uid = 0x2000B133; - // Declare array of interface info - interfaces = - { - INTERFACE_INFO - { - // UID of interface that is implemented - interface_uid = 0x10207363; - implementations = - { - // Info for CImplementation1 - IMPLEMENTATION_INFO - { - implementation_uid = 0x2000B133; - version_no = 1; - display_name = "vitut touch input method plugin"; - //supported language - default_data = "1||16||33||37||42||50||54||57||65||93||94||96"; - //supported IME impl id - opaque_data= "16||33||37||42||50||54||57||93||94||96"; - } - }; - } - }; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/group/bld.inf --- a/fep/aknfep/peninputplugins/peninputimepluginjp/group/bld.inf Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Build information file for project peninputimepluginjp -* -*/ - - - - - - - - - - - - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS - -PRJ_MMPFILES - -../group/peninputimepluginjp.mmp - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/group/peninputimepluginjp.mmp --- a/fep/aknfep/peninputplugins/peninputimepluginjp/group/peninputimepluginjp.mmp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Project definition file for project peninputimepluginjp -* -*/ - - - - - - - - - - - - -#include -#include - -TARGET peninputimepluginjp.dll -TARGETTYPE plugin -UID 0x10009D8D 0x10282419 - -CAPABILITY CAP_ECOM_PLUGIN -VENDORID VID_DEFAULT - -SOURCEPATH ../src - -SOURCE peninputimepluginjpproxy.cpp -SOURCE peninputimepluginjp.cpp -SOURCE pluginfepmanagerbase.cpp -SOURCE pluginfepmanagerhwr.cpp -SOURCE pluginfepmanagervkb.cpp - -userinclude ../inc - -// This is a SYSTEMINCLUDE macro containing the middleware -// layer specific include directories -MW_LAYER_SYSTEMINCLUDE - -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../../../inc -SYSTEMINCLUDE ../../../inc - -SOURCEPATH ../srcdata - -START RESOURCE 10282419.rss -#ifdef SYMBIAN_SECURE_ECOM -TARGET peninputimepluginjp.rsc -#endif -END - -LIBRARY euser.lib -LIBRARY ECom.lib -LIBRARY centralrepository.lib -LIBRARY eikcoctl.lib -LIBRARY cone.lib -LIBRARY efsrv.lib -LIBRARY estor.lib -LIBRARY FeatMgr.lib // feature manager - -#ifdef RD_SCALABLE_UI_V2 -LIBRARY peninputclient.lib -#else -LIBRARY peninputserverstub.lib -#endif - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/inc/peninputimepluginjp.h --- a/fep/aknfep/peninputplugins/peninputimepluginjp/inc/peninputimepluginjp.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,280 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: input mode plugin header file -* -*/ - - - - - - - - - - - -#ifndef C_PENINPUTIMEPLUGINCHN_H -#define C_PENINPUTIMEPLUGINCHN_H - -// INCLUDES -#include -#include -#include -#include -#include -//#include -#include -#include - -// Forward declaration -class MAknFepManagerInterface; -class CAknEdwinState; -class CRepository; -class CPluginFepManagerBase; - -/** - * Pen input mode plugin Japanese implementation - * - * @lib peninputimepluginjp.lib - * @since S60 v3.2 - */ -class CPenInputImePluginJp : public CAknFepPenInputImePlugin - { -public: - - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aInitParams Init data plugin, actually it is - * a pointer of RPeninputServer. - * @return Pointer to created CPenInputImePluginJp object - */ - static CPenInputImePluginJp* NewL(TAny* aInitParams); - - static CPenInputImePluginJp* NewLC(TAny* aInitParams); - - /** - * Destructor. - */ - ~CPenInputImePluginJp(); - -public: // From CAknFepPenInputImePlugin - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLanguage Language that layout UI need to support - * @param aMode Speicifed layout UI mode to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TLanguage aLanguage, - TInt aMode, - const TDesC8& aData, - const TBool aIsSplitView = EFalse); - - /** - * Get layout UI interface - * - * @since S60 v3.2 - * @param aFepManager Fep manager interface pointer - * @param aLayoutId Speicifed layout UI id to create - * @param aData Initialization data. - * - * @return The layout UI interface.. - */ - MAknFepManagerInterface* GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TInt aLayoutId, - const TDesC8& aData); - - /** - * Activate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - void Activate(); - - /** - * Deactivate current IME plugin. - * - * @since S60 v3.2 - * - * @return None. - */ - void DeActivate(); - - /** - * Get current IME plugin implementation ID. - * - * @since S60 v3.2 - * - * @return IME plugin implementation id. - */ - TInt ImeImplId(); - - /** - * Get current layout UI implementation id. - * - * @since S60 v3.2 - * - * @return None. - */ - TInt LayoutUiImplId(); - - /** - * Handle pen input server event. - * - * @param aEventId The event id, defined in - * @param aData The event related data. - * @since S60 v3.2 - * - * @return None. - */ - TBool HandleServerEventL(TInt aEventId, const TDesC& aData); - - /** - * Get suppored layout UI modes(VKB/HWR). - * - * @since S60 v3.2 - * - * @param aPtiEngine A pointer to ptiengine - * @param aSupportList A reference to result ime plugin list - * @return Meaningless. - */ - TInt SupportModes(CPtiEngine* aPtiEngine, - RArray& aSupportList) const; - - /** - * Get current layout UI mode. - * - * @since S60 v3.2 - * - * @return Current layout UI mode. - */ - TInt CurrentMode() const; - - /** - * Handle the menu command.The menu is launched by FEP - * The menu command is first passed to IME plugin, if - * this function return EFalse, FEP handles it defaultly. - * - * @param aCommandId The menu command id - * @return ETrue if IME plugin handled the command; - * EFalse otherwise. - */ - TBool HandleMenuCommandL(TInt aCommandId); - - /** - * Dynamiclly update menu items during it displays. - * - * aMenuPane The menu pane pointer. - * @return None. - */ - void DynInitMenuPaneL(CAknFepUiInterfaceMenuPane* aMenuPane); - -private: - - /** - * C++ default constructor. - * - * @param aServer Pen input server pointer - */ - CPenInputImePluginJp(RPeninputServer* aServer); - - /** - * By default Symbian 2nd phase constructor is private. - * - * @return None - */ - void ConstructL(); - - /** - * Enumuate all layout UI ids and save them to iUiLayoutImpIdList. - * - * @return None - */ - void FindUiLayoutImplementationL(); - - /** - * Get HWR UI interface - * - * @return HWR UI pointer - */ - CPluginFepManagerBase* GetHwrUiL(); - - /** - * Get VKB UI interface - * - * @return VKB UI pointer - */ - CPluginFepManagerBase* GetVkbUiL(); - - /** - * Get current UI interface - * - * @return current UI pointer - */ - inline CPluginFepManagerBase* GetCurrentUi(); - - /** - * Get suppored layout UI modes(VKB/HWR). - * - * @since S60 v3.2 - * - * @param aPtiEngine A pointer to ptiengine - * @param aSupportList A reference to result ime plugin list - * @return Meaningless. - */ - TInt SupportModesL(CPtiEngine* aPtiEngine, - RArray& aSupportList) const; - -private: - - /** - * Pen input server pointer. Not own. - */ - RPeninputServer* iPenInputServer; - - /** - * Pen input server pointer. Not own. - */ - RArray iUiLayoutImpIdList; - - /** - * Current layout UI mode. - */ - TInt iPenInputMode; - - /** - * Pen input server pointer. Not own. - */ - RPointerArray iAllUiManagers; - - }; - -#include "peninputimepluginjp.inl" - -#endif //C_PENINPUTIMEPLUGINCHN_H - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/inc/peninputimepluginjp.inl --- a/fep/aknfep/peninputplugins/peninputimepluginjp/inc/peninputimepluginjp.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Inline file for Ime plugin Japan. -* -*/ - - - - - - - - - - - - -const TInt KHwrLayoutInterfaceId = 0x102072FC; //this is for layout interface -const TInt KInputMethodImplementationId = 0x10282419; -const TInt KHwrUiId = 0x1028241B; -const TInt KVkbUiId = 0x1028241A; -const TInt KHwrUiIndex = 0; -const TInt KVkbUiIndex = 1; - -inline CPluginFepManagerBase* CPenInputImePluginJp::GetCurrentUi() - { - switch(iPenInputMode) - { - case EPluginInputModeHwr: - return iAllUiManagers[KHwrUiIndex]; - case EPluginInputModeVkb: - return iAllUiManagers[KVkbUiIndex]; - default: - return NULL; - } - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/inc/peninputimepluginjpdebug.h --- a/fep/aknfep/peninputplugins/peninputimepluginjp/inc/peninputimepluginjpdebug.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Debug utils API -* -*/ - - - - - - - - - - - - -#ifndef PENINPUTIMEPLUGINCHSDEBUG_H -#define PENINPUTIMEPLUGINCHSDEBUG_H - -#ifdef _DEBUG - #define PRINT( txt ) RDebug::Print( txt ); - #define PRINTF( txt ) RDebug::Print txt; - #define PRINT1( txt, arg1 ) RDebug::Print( txt, arg1 ); - #define PRINT2( txt, arg1, arg2 ) RDebug::Print( txt, arg1, arg2 ); - #define PRINT3( txt, arg1, arg2, arg3 ) RDebug::Print( txt, arg1, arg2, arg3 ); -#else - #define PRINT( txt ) - #define PRINTF( txt ) - #define PRINT1( txt, arg1 ) - #define PRINT2( txt, arg1, arg2 ) - #define PRINT3( txt, arg1, arg2, arg3 ) -#endif - - -// Record into log files -#define USE_FILE_LOGGER - -#if defined (_DEBUG) && !defined(USE_FILE_LOGGER) - #define USE_SERIAL_LOGGER -#endif - -#if defined (USE_FILE_LOGGER) - #include - _LIT(KLogFile,"imepluginchn.txt"); - _LIT(KLogFolder,"peninputime"); - #define LOGTEXT(AAA) RFileLogger::Write(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - AAA) - #define LOGTEXT2(AAA,BBB) RFileLogger::WriteFormat(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - TRefByValue(AAA), \ - BBB) - #define LOGTEXT3(AAA,BBB,CCC) RFileLogger::WriteFormat(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - TRefByValue(AAA), \ - BBB, \ - CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) RFileLogger::HexDump(KLogFolder(), \ - KLogFile(), \ - EFileLoggingModeAppend, \ - AAA,\ - BBB,\ - CCC,\ - DDD) -#elif defined (USE_SERIAL_LOGGER) - #include - #define LOGTEXT(AAA) RDebug::Print(AAA) - #define LOGTEXT2(AAA,BBB) RDebug::Print(AAA,BBB) - #define LOGTEXT3(AAA,BBB,CCC) RDebug::Print(AAA,BBB,CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) -#else - #define LOGTEXT(AAA) - #define LOGTEXT2(AAA,BBB) - #define LOGTEXT3(AAA,BBB,CCC) - #define LOGHEXDUMP(AAA,BBB,CCC,DDD) -#endif - -#endif // PENINPUTIMEPLUGINCHSDEBUG - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/inc/pluginfepmanagerbase.h --- a/fep/aknfep/peninputplugins/peninputimepluginjp/inc/pluginfepmanagerbase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,519 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Layout UI interface base class -* -*/ - - - - - - - - - - - -#ifndef C_PLUGINFEPMANAGERBASE_H -#define C_PLUGINFEPMANAGERBASE_H - -//Include -#include -#include -#include -#include -#include - -//Forward declaration -class CPenInputImePluginJp; -class RPeninputServer; -class CAknEdwinState; -class CRepository; -/** - * CPluginFepManagerBase is the layout UI interface base class. - * It is something like a "proxy" class of layout UI plugin, sending - * commands from FEP to layout UI plugin. - * - * @lib peninputimepluginjp.lib - * @since S60 v3.2 - */ -class CPluginFepManagerBase: public CBase, public MAknFepManagerInterface - { -public: - - /** - * Destructor. - */ - ~CPluginFepManagerBase(); - - /** - * Initalize UI when first time starting up. - * The first time means when the instance created. - * - * @since S60 v3.2 - * - * @return None. - */ - virtual void OnInit(); - - /** - * Explicitly get ICF max length from layout UI and save the - * value to iMaxEditorLength. - * - * @since S60 v3.2 - * - * @return None. - */ - void RetrieveEditorMaxLength(); - - /** - * Update local copy of case mode when - * user change case in layout UI. - * - * @since S60 v3.2 - * - * @param aCaseMode The case mode to save locally. - * @return None. - */ - void UpdateCaseMode(TInt aCaseMode); - -// From MAknFepManagerInterface - - /** - * Set layout UI current number mode key mapping. - * For example, 0-9 ; 0-9,*,# and etc. - * - * @since S60 v3.2 - * - * @param aAknEditorNumericKeymap Key mapping enum value. - * @return None. - */ - void SetNumberModeKeyMappingL(TAknEditorNumericKeymap aAknEditorNumericKeymap); - - /** - * Handle key event. - * Since most plugin layout UIs are based on animation, they receive - * key and process key events before this function. - * - * @since S60 v3.2 - * - * @param aKey Key event code. - * @param aLength Key press length. - * @return ETrue if processed, EFalse otherwise. - */ - TBool HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode aEventCode = EEventKey); - - /** - * Handle command come from FEP. - * - * @since S60 v3.2 - * - * @param aCommandId Command id. - * @return None - */ - void HandleCommandL(TInt aCommandId); - - /** - * Handle command come from FEP. - * - * @since S60 v3.2 - * - * @param aCommandId Command id. - * @param aParam Command parameter. - * @return None. - */ - void HandleCommandL(TInt aCommandId, TInt aParam); - - /** - * Close plugin layout UI. - * - * @since S60 v3.2 - * - * @return None. - */ - void CloseUI(); - - /** - * Activate plugin layout UI. - * - * @since S60 v3.2 - * - * @return None. - */ - void ActivateUI(); - - /** - * Get max text length of layout UI ICF control. - * - * @since S60 v3.2 - * @return Max ICF text length. - */ - TInt EditorMaxLength(); - - /** - * When screen size changes, SizeChanged is called by FEP. - * - * @since S60 v3.2 - * @return None. - */ - void ResourceChanged(TInt aType); - - /** - * Set underlining UI. - * Since plugin layout UI and HKB can be used at same time, - * HKB UI layout need to be notified after plugin layout UI - * processes some events - * - * @since S60 v3.2 - * @param aNextUI The underlining UI pointer. - * @return None. - */ - void SetNextFepUI(MAknFepManagerInterface* aNextUi); - - /** - * Get support language in sepecfied mode. - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aMode Input mode. - * @return Language supported. - */ - TInt SupportLanguage(TInt aMode) const; - - /** - * Set current language, which is required by editor - * - * @since S60 v3.2 - * - * @param aLanguage Language to set. - * @return None. - */ - void SetInputLanguageL(TLanguage aLanguage); - - /** - * Set editor text and cursor information to layout UI - * ICF control. - * - * @since S60 v3.2 - * @param aTotalTextLen Total text length in eidtor. - * @param aStartPos Offset of aText to the start of editor text. - * @param aCursorSel Cursor position. - * @param aText A part of editor text start from aStartPos. - * - * @return None. - */ - void SetFepAwareEditorText(const TFepInputContextFieldData& aIcfData); - - /** - * Set layout UI mode. - * The method leaves here only for compatibility - * - * @since S60 v3.2 - * - * @param aMode Mode to set. - * @param aPredictive Whether the current mode support predictive. - * @param aWwertyInputMode Whether the current HKB is qwerty. - * @return None. - */ -#ifdef RD_INTELLIGENT_TEXT_INPUT - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode, - TInt aKeyboardType = EPtiKeyboardNone) ; -#else - void SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode); -#endif - -#ifdef RD_INTELLIGENT_TEXT_INPUT - virtual TBool IsValidFnKeyPress() const; - virtual TBool IsValidLongChrKeyPress() const; -#endif - - /** - * Set layout UI current case. - * The method leaves here only for compatibility. Since plugin layout - * UI is different from HKB tranditional UI, they use something like - * "case mode" other than case which is set by a FEP command. - * - * @since S60 v3.2 - * - * @param aCase Case to set. - * @return None. - */ - void SetCase(TCase aCase); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return None. - */ - void ExpireMultitapTimer(); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aKey The key presssed. - * @return ETrue if long press, EFalse otherwise. - */ - TBool IsValidNumericLongKeyPress(TInt aKey) const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aText Text to add to user dictionary. - * @return None. - */ - void AddTextToUserDictionaryL(const TDesC& aText); - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @param aFormat On return, contains the formatting to - * apply to the inline text (or to a portion of it). - * @param aNumberOfCharactersWithSameFormat On return, - contains the number of characters in the inline - text (starting at aPositionOfCharacter) - which have the same formatting - * @param aPositionOfCharacter Start position within the inline text - * @return None. - */ - void GetFormatOfFepInlineText(TCharFormat& aFormat, - TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter) const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return ETrue if valid, EFalse otherwise. - */ - TBool IsValidShiftKeyPress() const; - - /** - * The method leaves here only for compatibility. - * - * @since S60 v3.2 - * - * @return None. - */ - void SetEditorContext(TInt aContext); - - /** - * Set the Star key flag - * - * @param aSet TBool. - * @return None - */ - void SetStarKeyFlag( TBool aSet ); - - /** - * Check the character width. - * - * @since S60 v3.2 - * - * @return ETrue is Full-width. - */ - TBool IsCharWidth() const; - - /** - * Check the Japanese predictive. - * - * @since S60 v3.2 - * - * @return ETrue is predictive on. - */ - TBool IsJapanesePredictive() const; - - /** - * Check the Japanese HWR conversion. - * - * @since S60 v3.2 - * - * @return ETrue is Japanese HWR conversion on. - */ - TBool IsJapaneseHwrConversion() const; - -protected: - - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin pointer. - * @param aPenInputServer Pen input server pointer - */ - CPluginFepManagerBase(CPenInputImePluginJp& aOwner, - RPeninputServer* aPenInputServer); - - /** - * By default Symbian 2nd phase constructor. - * - * @since S60 v3.2 - * @return None - */ - void BaseConstructL(); - - /** - * Set layout permited ranges. - * - * @param aPermittedMode Ranges of current editor allowed. - * @return None - */ - virtual void SetLayoutPermitedRanges(TInt aPermittedRanges); - - /** - * Set layout primary range. - * - * @since S60 v3.2 - * @param aEditorState Current editor state. - * @return None - */ - virtual void SetLayoutRange(const CAknEdwinState* aEditorState); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @return None - */ - void SendCommandToServer(TInt aCommandId); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @param aParam The command param. - * @return None - */ - void SendCommandToServer(TInt aCommandId, TInt aParam); - - /** - * Send command to pen input server utility function. - * - * @since S60 v3.2 - * @param aCommandId The command id to sent. - * @param aParam The command param. - * @return None - */ - void SendCommandToServer(TInt aCommandId, const TDesC8& aParam); - - /** - * Get layout UI last used range. - * - * @since S60 v3.2 - * @return Range last used. - */ - TInt LayoutLastUsedRange(); - - /** - * Set layout UI position. - * Move layout UI not to overlap with some editors. - * - * @since S60 v3.2 - * @param aBottomRight The bottom right position of layout UI. - * The value is only a suggest value, layout UI may adjust it. - * @return None. - */ - void SetLayoutPosition(const TRect& aParam); - - TLanguage GetLocalLanguage(const CAknEdwinState* aEditorState) const; - - /** - * Save the current information. - * - * @since S60 v3.2 - * @param aParam - */ - void SaveCurrentInfo(const TInt aParam); - -protected: - - /** - * IME plugin reference. - */ - CPenInputImePluginJp& iOwner; - - /** - * Pen input server pointer. Not own. - */ - RPeninputServer* iPenInputServer; - - /** - * The premitted range of current editor. - */ - TInt iPermittedRange; - - TInt iHkbMode; - - /** - * Current language. - */ - TLanguage iLanguage; - - /** - * The width of character, Full-width(ETrue) - * or Half-width(EFalse) - */ - TBool iCharWidth; - - /** - * Predictive is ON(ETrue) or OFF(EFalse). - */ - TBool iPredictive; - - /** - * Conversion is ON(ETrue) or OFF(EFalse). - */ - TBool iConversion; - -private: - - /** - * Repository object used to get last used range. - */ - CRepository* iRepository; - - /** - * Local copy of ICF max text length. - */ - TInt iMaxEditorLength; - - /** - * Local copy of layout current case mode - */ - TInt iLastCase; - - /** - * Underlineing UI interface - */ - MAknFepManagerInterface* iHkbUi; - - /** - * subrage for ERangeNative - */ - TInt iSubRange; - }; -#endif // C_PLUGINFEPMANAGERBASE_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/inc/pluginfepmanagerhwr.h --- a/fep/aknfep/peninputplugins/peninputimepluginjp/inc/pluginfepmanagerhwr.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,109 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: HWR layout UI class header -* -*/ - - - - - - - - - - - - -#ifndef C_PLUGINFEPMANAGERHWR_H -#define C_PLUGINFEPMANAGERHWR_H - -//Include -#include -#include "pluginfepmanagerbase.h" - -//Forward declaration -class CPenInputImePluginJp; -class RPeninputServer; - -/** - * CPluginFepManagerHwr is the Japanese HWR layout UI interface - * "proxy" class. - * - * @lib peninputimepluginjp.lib - * @since S60 v3.2 - */ -class CPluginFepManagerHwr : public CPluginFepManagerBase - { -public: - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - * @return Pointer to created CPluginFepManagerHwr object - */ - static CPluginFepManagerHwr* NewL(CPenInputImePluginJp& aOwner, - RPeninputServer* aPenInputServer); - - /** - * Set layout UI current number mode key mapping. - * For example, 0-9 ; 0-9,*,# and etc. - * - * @since S60 v3.2 - * - * @param aAknEditorNumericKeymap Key mapping enum value. - * @return None. - */ - void SetNumberModeKeyMappingL(TAknEditorNumericKeymap aAknEditorNumericKeymap); - - /** - * Handle command come from FEP. - * - * @since S60 v3.2 - * - * @param aCommandId Command id. - * @param aParam Command parameter. - * @return None. - */ - void HandleCommandL(TInt aCommandId,TInt aParam); - -private: - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - */ - CPluginFepManagerHwr(CPenInputImePluginJp& aOwner, - RPeninputServer* aPenInputServer); - - /** - * Set layout primary range. - * - * @since S60 v3.2 - * @param aEditorState Current editor state. - * @return None - */ - void SetLayoutRange(const CAknEdwinState* aEditorState); - -private: - TInt iNumberKeyMapping; - }; - -#endif // C_PLUGINFEPMANAGERHWR_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/inc/pluginfepmanagervkb.h --- a/fep/aknfep/peninputplugins/peninputimepluginjp/inc/pluginfepmanagervkb.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: VKB layout UI class header -* -*/ - - - - - - - - - - - -#ifndef C_PLUGINFEPMANAGERVKB_H -#define C_PLUGINFEPMANAGERVKB_H - -#include -#include "pluginfepmanagerbase.h" - -class CPenInputImePluginJp; - -/** - * CPluginFepManagerHwr is the Japanese VKB layout UI interface - * "proxy" class. - * - * @lib peninputimepluginjp.lib - * @since S60 v3.2 - */ -class CPluginFepManagerVkb : public CPluginFepManagerBase - { -public: - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - * @return Pointer to created CPluginFepManagerHwr object - */ - static CPluginFepManagerVkb* NewL(CPenInputImePluginJp& aOwner, - RPeninputServer* aPenInputServer); - -private: - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aOwner IME plugin reference - * @param aPenInputServer The pointer of RPeninputServer. - */ - - CPluginFepManagerVkb(CPenInputImePluginJp& aOwner, - RPeninputServer* aPenInputServer); - }; -#endif // C_PLUGINFEPMANAGERVKB_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/src/peninputimepluginjp.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginjp/src/peninputimepluginjp.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,539 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Input mode plugin implementation file -* -*/ - - - - - - - - - - - - - -#include "peninputimepluginjp.h" -#include -#include -#include -#include -#include -#include -#include - -#include "peninputimepluginjpdebug.h" -#include "pluginfepmanagerhwr.h" -#include "pluginfepmanagervkb.h" -#include "pluginfepmanagerbase.h" - - -const TInt KInvalidImplId = 0; - -_LIT(KHwrImeName, "Japanese HWR"); -_LIT(KVkbImeName, "Japanese VKB"); - -// Implementation of Class CPenInputImePluginJp - -// ----------------------------------------------------------------------------- -// RImplInfoPtrArray cleanup function -// ----------------------------------------------------------------------------- -// -void Cleanup( TAny* aAny ) - { - RImplInfoPtrArray* implArray = - reinterpret_cast< RImplInfoPtrArray*> ( aAny ); - implArray->ResetAndDestroy(); - implArray->Close(); - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginJp* CPenInputImePluginJp::NewL(TAny* aInitParams) - { - CPenInputImePluginJp* self = new(ELeave)CPenInputImePluginJp( - static_cast(aInitParams)); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::NewLC -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginJp* CPenInputImePluginJp::NewLC(TAny* aInitParams) - { - CPenInputImePluginJp* self = new(ELeave) CPenInputImePluginJp( - static_cast(aInitParams)); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::~CPenInputImePluginJp -// destructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginJp::~CPenInputImePluginJp() - { - DeActivate(); - iUiLayoutImpIdList.Close(); - iAllUiManagers.ResetAndDestroy(); - REComSession::FinalClose();//cleanup ecom - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::GetInputMethodUiL -// Create layout UI interface -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -MAknFepManagerInterface* CPenInputImePluginJp::GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TLanguage aLanguage, - TInt aMode, - const TDesC8& /*aData*/, - const TBool aIsSplitView) - { - iFepManager = aFepManager; - iLanguage = aLanguage; - CPluginFepManagerBase* fepmanager = NULL; - - TUid layoutId; - TInt i; - - switch(aMode) - { - case EPluginInputModeHwr: - layoutId.iUid = KHwrUiId; - fepmanager = GetHwrUiL(); - break; - case EPluginInputModeVkb: - layoutId.iUid = KVkbUiId; - fepmanager = GetVkbUiL(); - break; - default: - return NULL; - } - - for(i = 0; i < iUiLayoutImpIdList.Count(); ++i) - { - if(iUiLayoutImpIdList[i] == layoutId.iUid ) - { - break; - } - } - - if( i < iUiLayoutImpIdList.Count() ) - { - iPenInputMode = aMode; - TInt errCode = iPenInputServer->SetUiLayoutId(layoutId); - if( errCode == KErrNone ) - { - fepmanager->OnInit(); - return fepmanager; - } - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::GetInputMethodUiL -// Create layout UI interface -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -MAknFepManagerInterface* CPenInputImePluginJp::GetInputMethodUiL( - MAknFepManagerUIInterface* aFepManager, - TInt aLayoutId, - const TDesC8& /*aData*/) - { - iFepManager = aFepManager; - CPluginFepManagerBase* fepmanager = NULL; - TInt i; - TInt mode; - - if( aLayoutId == KHwrUiId) - { - mode = EPluginInputModeHwr; - fepmanager = GetHwrUiL(); - } - else if( aLayoutId == KVkbUiId) - { - mode = EPluginInputModeVkb; - fepmanager = GetVkbUiL(); - } - else - { - return NULL; - } - - for(i = 0; i < iUiLayoutImpIdList.Count(); ++i) - { - if(iUiLayoutImpIdList[i] == aLayoutId ) - { - break; - } - } - - if( i < iUiLayoutImpIdList.Count() ) - { - iPenInputMode = mode; - iPenInputServer->SetUiLayoutId(TUid::Uid(aLayoutId)); - fepmanager->OnInit(); - return fepmanager; - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::Activate -// Activate current IME plugin. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginJp::Activate() - { - if(iPenInputServer) - { - iPenInputServer->ActivateLayout(ETrue); - } - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::DeActivate -// Deactivate current IME plugin. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginJp::DeActivate() - { - if (iPenInputServer && iPenInputServer->IsVisible()) - { - iPenInputServer->ActivateLayout(EFalse); - } - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::ImeImplId -// Get current IME plugin implementation ID. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginJp::ImeImplId() - { - return KInputMethodImplementationId; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::LayoutUiImplId -// Get current layout UI implementation id. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginJp::LayoutUiImplId() - { - TInt id; - switch(iPenInputMode) - { - case EPluginInputModeHwr: - id = KHwrUiId; - break; - case EPluginInputModeVkb: - id = KVkbUiId; - break; - default: - id = KInvalidImplId; - break; - } - return id; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::SupportModes -// Get suppored layout UI modes(VKB/HWR). -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginJp::SupportModes(CPtiEngine* aPtiEngine, - RArray& aSupportList) const - { - TInt ret = 0; - TRAP_IGNORE( ret = SupportModesL( aPtiEngine, aSupportList ) ); - return ret; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::SupportModesL -// Get suppored layout UI modes(VKB/HWR). -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginJp::SupportModesL(CPtiEngine* /*aPtiEngine*/, - RArray& aSupportList) const - { - RImplInfoPtrArray infoArray; - TUid id; - id.iUid = KHwrLayoutInterfaceId; - TBool hwr = EFalse; - TBool vkb = EFalse; - - CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) ); - REComSession::ListImplementationsL(id, infoArray); - - for (TInt i = 0; i < infoArray.Count(); ++i) - { - if(infoArray[i]->ImplementationUid().iUid == KHwrUiId ) - { - hwr = ETrue; - } - if(infoArray[i]->ImplementationUid().iUid == KVkbUiId - && FeatureManager::FeatureSupported(KFeatureIdVirtualKeyboardInput)) - { - vkb = ETrue; - } - } - - TImePlguinImplDetail detail; - - detail.iImplementationId = KInputMethodImplementationId; - if( hwr ) - { - detail.iMode = EPluginInputModeHwr; - detail.iMeritValue = EImeMerit_Preferred; - detail.iDisplayName.Copy(KHwrImeName()); - detail.iLanguage = ELangJapanese; - aSupportList.Append(detail); - detail.iLanguage = ELangEnglish; - detail.iMeritValue = EImeMerit_NotUsed; - aSupportList.Append(detail); - } - - if( vkb ) - { - detail.iMode = EPluginInputModeVkb; - detail.iMeritValue = EImeMerit_Preferred; - detail.iDisplayName.Copy(KVkbImeName()); - detail.iLanguage = ELangJapanese; - aSupportList.Append(detail); - detail.iLanguage = ELangEnglish; - detail.iMeritValue = EImeMerit_NotUsed; - aSupportList.Append(detail); - } - CleanupStack::PopAndDestroy(&infoArray); // infoArray - - return 0; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::CurrentMode -// Get current layout UI mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPenInputImePluginJp::CurrentMode() const - { - return iPenInputMode; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::HandleServerEventL -// Handle pen input server event.. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPenInputImePluginJp::HandleServerEventL(TInt aEventId, const TDesC& aData) - { - TBool bHandled = EFalse; - switch( aEventId ) - { - case ESignalLayoutICFLengthChanged: - GetCurrentUi()->RetrieveEditorMaxLength(); - break; - case ESignalCaseMode: - { - GetCurrentUi()->UpdateCaseMode(*(TInt*)(aData.Ptr())); - } - break; - default: - break; - } - - return bHandled; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::HandleMenuCommandL -// Handle the menu command. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPenInputImePluginJp::HandleMenuCommandL(TInt aCommandId) - { - TBool ret = EFalse; - switch(aCommandId) - { - // not handle the following command ids. - case EPenInputJpCmdFullWidth: - case EPenInputJpCmdHalfWidth: - break; - case EPenInputJpCmdConversionOn: - case EPenInputJpCmdConversionOff: - break; - case EPenInputJpCmdPredictiveOn: - case EPenInputJpCmdPredictiveOff: - break; - case EPenInputJpCmdSaveWord: - case EPenInputJpCmdKutenCode: - default: - break; - } - return ret; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::DynInitMenuPaneL -// Dynamiclly update menu items during it displays. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginJp::DynInitMenuPaneL(CAknFepUiInterfaceMenuPane* aMenuPane) - { - TBool dimmmenu; - CPluginFepManagerBase* manager = GetCurrentUi(); - if (manager) - { - dimmmenu = (manager->IsCharWidth())? ETrue: EFalse; - aMenuPane->SetItemDimmed(EPenInputJpCmdFullWidth, dimmmenu); - aMenuPane->SetItemDimmed(EPenInputJpCmdHalfWidth, !dimmmenu); - if (iPenInputMode == EPluginInputModeHwr) - { - dimmmenu = (manager->IsJapaneseHwrConversion())? ETrue: EFalse; - aMenuPane->SetItemDimmed(EPenInputJpCmdConversionOn, dimmmenu); - aMenuPane->SetItemDimmed(EPenInputJpCmdConversionOff, !dimmmenu); - } - else - { - aMenuPane->SetItemDimmed(EPenInputJpCmdConversionOn, ETrue); - aMenuPane->SetItemDimmed(EPenInputJpCmdConversionOff, ETrue); - } - dimmmenu = (manager->IsJapanesePredictive())? ETrue: EFalse; - aMenuPane->SetItemDimmed(EPenInputJpCmdPredictiveOn, dimmmenu); - aMenuPane->SetItemDimmed(EPenInputJpCmdPredictiveOff, !dimmmenu); - - aMenuPane->SetItemDimmed(EPenInputJpCmdSaveWord, EFalse); - aMenuPane->SetItemDimmed(EPenInputJpCmdKutenCode, EFalse); - } - aMenuPane->SetItemDimmed(EPenInputCmdHwrTraining, ETrue); - } - - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::CPenInputImePluginJp -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPenInputImePluginJp::CPenInputImePluginJp(RPeninputServer* aHwrServer) -: iPenInputServer(aHwrServer) - { - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::ConstructL -// 2nd phase constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginJp::ConstructL() - { - FindUiLayoutImplementationL(); - //Append NULL to save HWR manager position - iAllUiManagers.Append(NULL); - //Append NULL to save VKB manager position - iAllUiManagers.Append(NULL); - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::FindUiLayoutImplementationL -// Enumuate all layout UI ids. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPenInputImePluginJp::FindUiLayoutImplementationL() - { - RImplInfoPtrArray infoArray; - TUid id; - id.iUid = KHwrLayoutInterfaceId; - - iUiLayoutImpIdList.Reset(); - CleanupStack::PushL( TCleanupItem( Cleanup, &infoArray ) ); - REComSession::ListImplementationsL(id, infoArray); - - for (TInt i = 0; i < infoArray.Count(); ++i) - { - iUiLayoutImpIdList.AppendL(infoArray[i]->ImplementationUid().iUid); - } - - CleanupStack::PopAndDestroy(&infoArray); // infoArray - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::GetHwrUi -// Get HWR UI interface. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase* CPenInputImePluginJp::GetHwrUiL() - { - if( !iAllUiManagers[KHwrUiIndex] ) - { - iAllUiManagers[KHwrUiIndex] = CPluginFepManagerHwr::NewL(*this, iPenInputServer); - } - - return iAllUiManagers[KHwrUiIndex]; - } - -// ----------------------------------------------------------------------------- -// CPenInputImePluginJp::GetVkbUi -// Get VKB UI interface. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase* CPenInputImePluginJp::GetVkbUiL() - { - if( !iAllUiManagers[KVkbUiIndex] ) - { - iAllUiManagers[KVkbUiIndex] = CPluginFepManagerVkb::NewL(*this, iPenInputServer); - } - - return iAllUiManagers[KVkbUiIndex]; - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/src/peninputimepluginjpmain.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginjp/src/peninputimepluginjpmain.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation to E32Dll -* -*/ - - - - - - - - - - - - -#include - -/** DLL Entry point */ -#ifndef EKA2 -GLDEF_C TInt E32Dll(TDllReason /*aReason*/) - { - return(KErrNone); - } -#endif - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/src/peninputimepluginjpproxy.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginjp/src/peninputimepluginjpproxy.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation to Proxy -* -*/ - - - - - - - - - - - - - -#include -#include - -#include "peninputimepluginjp.h" - -// Map the interface UIDs to implementation factory functions -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(0x10282419, CPenInputImePluginJp::NewL) - }; - -// Exported proxy for instantiation method resolution -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - - return ImplementationTable; - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/src/pluginfepmanagerbase.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginjp/src/pluginfepmanagerbase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,762 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Layout UI interface base class implementation -* -*/ - - - - - - - - - - - - -#include -#include -#include //CAknEdwinState -#include - -#include "pluginfepmanagerbase.h" -#include "peninputimepluginjp.h" -#include -#include -#include - -// Implementation of Class CPluginFepManagerBase - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CPluginFepManagerBase -// destructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase::~CPluginFepManagerBase() - { - delete iRepository; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::OnInit -// Initalize UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::OnInit() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::RetrieveEditorMaxLength -// Explicitly get ICF max length from layout UI . -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::RetrieveEditorMaxLength() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::UpdateCaseMode -// Update local copy of case mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::UpdateCaseMode(TInt aCaseMode) - { - iLastCase = aCaseMode; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetNumberModeKeyMappingL -// Set layout UI current number mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap) - { - SendCommandToServer(ECmdPenInputEditorNumericKeyMap, aAknEditorNumericKeymap); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleKeyL -// Handle key event. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode /*aEventCode*/) - { - return iHkbUi->HandleKeyL(aKey, aLength); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::HandleCommandL(TInt aCommandId) - { - SendCommandToServer(aCommandId); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::HandleCommandL(TInt aCommandId,TInt aParam) - { - switch(aCommandId) - { - case ECmdPenInputRange: - iHkbMode = aParam; - break; - case ECmdPenInputPermittedRange: - iLastCase = ECaseInvalide; - SetLayoutPermitedRanges(aParam); - break; - case ECmdPenInputEditorState: - SetLayoutRange(reinterpret_cast(aParam)); - break; - case ECmdPenInputSetWindowPos: - SetLayoutPosition(*reinterpret_cast(aParam)); - break; - case ECmdPenInputCaseMode: - { - SendCommandToServer(ECmdPenInputCase, aParam); - iLastCase = aParam; - } - break; - case ECmdPenInputEditorCustomNumericKeyMap: - { - TDesC* res = (TDesC*)aParam; - TPtrC8 param; - param.Set((TUint8*)res->Ptr(), res->Size()); - SendCommandToServer( aCommandId, param ); - SetNumberModeKeyMappingL((TAknEditorNumericKeymap)EKeymapFromResource); - } - break; - case ECmdPenInputJapaneseSetting: - { - SaveCurrentInfo(aParam); - SendCommandToServer(aCommandId, aParam); - } - break; - case ECmdPenInputJapaneseSetSubRange: - { - iSubRange = aParam; - } - break; - case ECmdPenInputJapaneseGetModeOfSubRange: - { - TInt newMode = *((TInt*)aParam); - if(iSubRange == ERangeFullWidthEnglish) - { - newMode = ELatin; - } - else if( iSubRange == ERangeFullWidthNumeric ) - { - newMode = ENumber; - } - else if( iSubRange == ERangeKatakana || - iSubRange == ERangeFullWidthKatakana ) - { - newMode = EKatakana; - } - - else if( iSubRange == ERangeHiraganaKanji ) - { - newMode = EHiraganaKanji; - } - else if( iSubRange == ERangeHiraganaOnly ) - { - newMode = EHiragana; - } - *((TInt*)aParam) = newMode; - } - break; - case ECmdPenInputSendEditorTextAndCurPos: - { - TFepInputContextFieldData* pIcfData = - reinterpret_cast( aParam ); - - TInt dataSize = sizeof( TFepInputContextFieldData ); - TInt textSize = pIcfData->iText.Size(); - - HBufC8* buf = HBufC8::NewLC(dataSize + textSize + 2*sizeof(TInt)); - TPtr8 bufPtr = buf->Des(); - - RDesWriteStream writeStream; - writeStream.Open(bufPtr); - CleanupClosePushL(writeStream); - - writeStream.WriteInt32L(dataSize); - writeStream.WriteInt32L(textSize); - - const TUint8* pData = reinterpret_cast( pIcfData ); - writeStream.WriteL( pData, dataSize ); - - const TUint8* pText = reinterpret_cast( pIcfData->iText.Ptr() ); - writeStream.WriteL( pText, textSize ); - - writeStream.CommitL(); - - SendCommandToServer( aCommandId, bufPtr ); - - CleanupStack::PopAndDestroy(&writeStream); - CleanupStack::PopAndDestroy(buf); - } - break; - default: - SendCommandToServer(aCommandId, aParam); - break; - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CloseUI -// Close plugin layout UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::CloseUI() - { - if (iPenInputServer->IsVisible()) - { - iPenInputServer->ActivateLayout(EFalse); - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::ActivateUI -// Activate plugin layout UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ActivateUI() - { - iPenInputServer->ActivateLayout(ETrue); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::EditorMaxLength -// Get max text length of layout UI ICF control. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::EditorMaxLength() - { - return iMaxEditorLength; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::ResourceChanged -// Handle screen size changed. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ResourceChanged(TInt aType) - { - iPenInputServer->ResourceChanged(aType); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetNextFepUI -// Set underlining UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetNextFepUI(MAknFepManagerInterface* aNextUi) - { - iHkbUi = aNextUi; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SupportLanguage -// Get support language in sepecfied mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::SupportLanguage(TInt /*aMode*/) const - { - return iLanguage; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetInputLanguageL -// Set current language. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetInputLanguageL(TLanguage aLanguage) - { - iLanguage = aLanguage; - if( iLanguage == ELangJapanese ) - { - SendCommandToServer(ECmdPenInputLanguage, (TInt)aLanguage); - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetFepAwareEditorText -// Set editor text and cursor information to layout UI ICF control. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetFepAwareEditorText(const TFepInputContextFieldData& aIcfData) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Set layout UI mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CPluginFepManagerBase::SetMode( TInt aMode, TBool aPredictive, - TBool aQwertyInputMode, TInt aKeyboardType) -#else -void CPluginFepManagerBase::SetMode( TInt aMode, TBool aPredictive, - TBool aQwertyInputMode ) -#endif - { - iHkbUi->SetMode(aMode, aPredictive, aQwertyInputMode); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool CPluginFepManagerBase::IsValidFnKeyPress() const - { - return EFalse; - } - TBool CPluginFepManagerBase::IsValidLongChrKeyPress() const - { - return EFalse; - } -#endif -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Set layout UI current case. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetCase(TCase aCase) - { - iHkbUi->SetCase(aCase); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetMode -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::ExpireMultitapTimer() - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsValidNumericLongKeyPress -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsValidNumericLongKeyPress(TInt /*aKey*/) const - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::AddTextToUserDictionaryL -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::AddTextToUserDictionaryL(const TDesC& /*aText*/) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::GetFormatOfFepInlineText -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::GetFormatOfFepInlineText( - TCharFormat& /*aFormat*/, - TInt& /*aNumberOfCharactersWithSameFormat*/, - TInt /*aPositionOfCharacter*/) const - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsValidShiftKeyPress -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsValidShiftKeyPress() const - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetEditorContext -// Compatibile with HKB UI. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetEditorContext(TInt /*aContext*/) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetStarKeyFlag -// Set the Star key flag. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetStarKeyFlag( TBool /*aSet*/ ) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::CPluginFepManagerBase -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerBase::CPluginFepManagerBase(CPenInputImePluginJp& aOwner, - RPeninputServer* aPenInputServer) - :iOwner(aOwner), iPenInputServer(aPenInputServer), iSubRange(ERangeInvalid) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::BaseConstructL -// Symbian 2nd phase constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::BaseConstructL() - { - iRepository = CRepository::NewL(KCRUidAknFep); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutPermitedRanges -// Set layout permited ranges. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutPermitedRanges(TInt aPermittedMode) - { - //not derived from edwin - if ( aPermittedMode == EAknEditorNumericInputMode ) - { - iPermittedRange = ERangeNumber; - } - else if (aPermittedMode & EAknEditorTextInputMode) - { - //derived from edwin and EAknEditorTextInputMode - iPermittedRange = ERangeHiraganaKanji | - ERangeKatakana | - ERangeFullWidthKatakana | - ERangeFullWidthEnglish | - ERangeFullWidthNumeric | - ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else if (aPermittedMode & EAknEditorSecretAlphaInputMode ) - { - //derived from EAknEditorSecretAlphaInputMode - iPermittedRange = ERangeNumber | - ERangeEnglish | - ERangeSymbol; - } - else - { - iPermittedRange = ERangeInvalid; - if (aPermittedMode & EAknEditorNumericInputMode ) - { - iPermittedRange |= ERangeNumber | ERangeSymbol; - } - if (aPermittedMode & EAknEditorKatakanaInputMode ) - { - iPermittedRange |= ERangeKatakana; - } - if (aPermittedMode & EAknEditorFullWidthTextInputMode ) - { - iPermittedRange |= ERangeFullWidthEnglish; - } - if (aPermittedMode & EAknEditorFullWidthNumericInputMode ) - { - iPermittedRange |= ERangeFullWidthNumeric; - } - if (aPermittedMode & EAknEditorFullWidthKatakanaInputMode ) - { - iPermittedRange |= ERangeFullWidthKatakana; - } - if (aPermittedMode & EAknEditorHiraganaKanjiInputMode ) - { - iPermittedRange |= ERangeHiraganaKanji; - } - if (aPermittedMode & EAknEditorHiraganaInputMode ) - { - iPermittedRange |= ERangeHiraganaOnly; - } - if (aPermittedMode & EAknEditorHalfWidthTextInputMode ) - { - iPermittedRange |= ERangeEnglish; - } - } - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutRange -// Set layout primary range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutRange(const CAknEdwinState* aEditorState) - { - //calculate permitted ranges - if(aEditorState) - { - if( aEditorState->Flags() & EAknEditorFlagLatinInputModesOnly ) - { - iPermittedRange &= (ERangeNumber | - ERangeEnglish | - ERangeSymbol); - } - } - - SendCommandToServer(ECmdPenInputPermittedRange, iPermittedRange); - - TInt priRange; - if( !aEditorState ) - { - //if editor state is null,which indicates that - //the editor is not derived from edwin - priRange = ERangeNumber; - } - else - { - //if still not get, then set according to default input mode - switch(iHkbMode) - { - case ELatin: - priRange = (iCharWidth)? ERangeFullWidthEnglish: ERangeEnglish; - break; - case ENumber: - priRange = (iCharWidth)? ERangeFullWidthNumeric : ERangeNumber; - break; - case EHiraganaKanji: - priRange = ERangeHiraganaKanji; - break; - case EKatakana: - priRange = (iCharWidth)? ERangeFullWidthKatakana : ERangeKatakana; - break; - case EHiragana: - priRange = ERangeHiraganaOnly; - break; - default: - { - TInt defaultInputMode = aEditorState->DefaultInputMode(); - switch(defaultInputMode) - { - case EAknEditorNumericInputMode: - priRange = ERangeNumber ; - break; - case EAknEditorTextInputMode: - { - TLanguage editorLan = GetLocalLanguage(aEditorState); - priRange = ERangeEnglish; - - if( editorLan == ELangTest) - { - editorLan = iLanguage; - } - if( editorLan == ELangJapanese ) - { - //load last use range - TInt lastUsedRange = LayoutLastUsedRange(); - if( lastUsedRange != ELangJapanese ) - { - //invalid repository key value or first time use HWR, - priRange = ERangeHiraganaKanji; - } - else - { - priRange = lastUsedRange; - } - } - } - break; - default: - priRange = ERangeEnglish ; - break; - } - } - } - } - - SendCommandToServer(ECmdPenInputRange, priRange); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer(TInt aCommandId) - { - iPenInputServer->HandleCommand(aCommandId); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer(TInt aCommandId, TInt aParam) - { - TBuf8 buf; - buf.Append((TUint8*)&aParam,sizeof(TInt)); - SendCommandToServer(aCommandId, buf); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SendCommandToServer -// Send command to pen input server utility function. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SendCommandToServer(TInt aCommandId, const TDesC8& aParam) - { - iPenInputServer->HandleCommand(aCommandId, aParam); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::LayoutLastUsedRange -// Get layout UI last used range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPluginFepManagerBase::LayoutLastUsedRange() - { - TInt value = 0; - if( iRepository ) - { - iRepository->Get(KAknFepLastUsedRange, value); - } - - return value; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SetLayoutPosition -// Set layout UI position. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SetLayoutPosition(const TRect& pParam) - { - TBuf8 buf; - buf.Append((TUint8*)&pParam, sizeof(pParam)); - - SendCommandToServer(ECmdPenInputSetWindowPos, buf); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::GetLocalLanguage -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TLanguage CPluginFepManagerBase::GetLocalLanguage( - const CAknEdwinState* aEditorState) const - { - TLanguage language = ELangTest; - // Check for a local language override - if (aEditorState) - { - TInt aknEditorFlags = aEditorState->Flags() ; - if (aknEditorFlags & EAknEditorFlagLatinInputModesOnly) - { - language = ELangEnglish; - } - else - { - language = aEditorState->LocalLanguage(); - } - } - return language; - } - - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::SaveCurrentInfo -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerBase::SaveCurrentInfo(const TInt aParam) - { - iCharWidth = (aParam & EPenInputJapaneseSettingCharacterWidth)? - ETrue : EFalse; - iPredictive = (aParam & EPenInputJapaneseSettingPredictive)? - ETrue : EFalse; - iConversion = (aParam & EPenInputJapaneseSettingConversion)? - ETrue : EFalse; - - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsCharWidth -// Check the character width. -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsCharWidth() const - { - return iCharWidth; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsJapanesePredictive -// Check the Japanese predictive. -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsJapanesePredictive() const - { - return iPredictive; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerBase::IsJapaneseHwrConversion -// Check the Japanese HWR conversion. -// ----------------------------------------------------------------------------- -// -TBool CPluginFepManagerBase::IsJapaneseHwrConversion() const - { - return iConversion; - } - - // End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/src/pluginfepmanagerhwr.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginjp/src/pluginfepmanagerhwr.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: HWR layout UI class implementation file. -* -*/ - - - - - - - - - - - - -#include "pluginfepmanagerhwr.h" -#include "peninputimepluginjp.h" -#include -#include //CAknEdwinState - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerHwr* CPluginFepManagerHwr::NewL(CPenInputImePluginJp& aOwner, - RPeninputServer* aPenInputServer) - { - CPluginFepManagerHwr* self = new(ELeave)CPluginFepManagerHwr(aOwner, aPenInputServer); - CleanupStack::PushL(self); - self->BaseConstructL(); - CleanupStack::Pop(self); - return self; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::SetNumberModeKeyMappingL -// Set layout UI current number mode key mapping. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerHwr::SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap ) - { - iNumberKeyMapping = aAknEditorNumericKeymap; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::HandleCommandL -// Handle command come from FEP. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerHwr::HandleCommandL(TInt aCommandId,TInt aParam) - { - if( aCommandId == ECmdPenInputSetWindowPos) - { - return; - } - CPluginFepManagerBase::HandleCommandL(aCommandId, aParam); - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::CPluginFepManagerHwr -// C++ default constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerHwr::CPluginFepManagerHwr(CPenInputImePluginJp& aOwner, - RPeninputServer* aPenInputServer) - :CPluginFepManagerBase(aOwner, aPenInputServer) - { - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerHwr::SetLayoutRange -// Set layout primary range. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPluginFepManagerHwr::SetLayoutRange(const CAknEdwinState* aEditorState) - { - CPluginFepManagerBase::SetLayoutRange(aEditorState); - - //set number key mapping - if ( iPermittedRange == ERangeNumber) - { - SendCommandToServer( ECmdPenInputEditorNumericKeyMap, - iNumberKeyMapping ); - } - else - { - //for alphanumeric editor, always use EAknEditorAlphanumericNumberModeKeymap - SendCommandToServer( ECmdPenInputEditorNumericKeyMap, - EAknEditorAlphanumericNumberModeKeymap ); - } - } - - // End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/src/pluginfepmanagervkb.cpp --- a/fep/aknfep/peninputplugins/peninputimepluginjp/src/pluginfepmanagervkb.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: VKB layout UI class implementation file. -* -*/ - - - - - - - - - - - - -#include "pluginfepmanagervkb.h" -#include "peninputimepluginjp.h" -#include "eikon.hrh" - -#include //CAknEdwinState - -// ----------------------------------------------------------------------------- -// CPluginFepManagerVkb::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerVkb* CPluginFepManagerVkb::NewL(CPenInputImePluginJp& aOwner, - RPeninputServer* aPenInputServer) - { - CPluginFepManagerVkb* self = new(ELeave)CPluginFepManagerVkb(aOwner, aPenInputServer); - CleanupStack::PushL(self); - self->BaseConstructL(); - CleanupStack::Pop(self); - return self; - } - -// ----------------------------------------------------------------------------- -// CPluginFepManagerVkb::CPluginFepManagerVkb -// constructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPluginFepManagerVkb::CPluginFepManagerVkb(CPenInputImePluginJp& aOwner, - RPeninputServer* aPenInputServer) - :CPluginFepManagerBase(aOwner, aPenInputServer) - { - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/peninputplugins/peninputimepluginjp/srcdata/10282419.rss --- a/fep/aknfep/peninputplugins/peninputimepluginjp/srcdata/10282419.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 1028 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource definitions for project peninputimepluginjp -* -*/ - - - - - - - - - - - - -#include "registryinfo.rh" - -// Declares info for two implementations -RESOURCE REGISTRY_INFO theInfo - { - // UID for the DLL - dll_uid = 0x10282419; - // Declare array of interface info - interfaces = - { - INTERFACE_INFO - { - // UID of interface that is implemented - interface_uid = 0x10207363; - implementations = - { - // Info for CImplementation1 - IMPLEMENTATION_INFO - { - implementation_uid = 0x10282419; - version_no = 1; - display_name = "Japanese Hwr input method plugin"; - //supported language - default_data = "1||32||160"; - //supported IME impl id - opaque_data= "32||160"; - } - }; - } - }; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/resource/100056de.rss --- a/fep/aknfep/resource/100056de.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) 1000 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* AknFep ecom resource file. -* -*/ - - - - - - - - - - - -#include -#include - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = 0x100056de; - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x1020233F; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x101FD65A; - version_no = 1; - display_name = "AknFEP"; - } - }; - } - }; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/resource/AknFep.rss --- a/fep/aknfep/resource/AknFep.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1937 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Resource file. -* -*/ - - - - - - - - - - - - -#include -#include -#ifdef FF_DUAL_LANGUAGE_SUPPORT -#include -#endif //FF_DUAL_LANGUAGE_SUPPORT - -#include "AknFepGlobalEnums.h" - -#include -#include -#include - -#include -#include "AknFep.hrh" - -NAME AKFP - -RESOURCE RSS_SIGNATURE { } - -#define qtn_aknfep_text_case_character_set ".!?¿¡"<0xFF0E><0xFF01><0xFF1F><0x3002><0x3001> - -// Number mode star key mappings -#define aknfep_number_mode_keymap_standard "*+pw" -#define aknfep_number_mode_keymap_plain "" -#define aknfep_number_mode_keymap_calculator "+-*/" -#define aknfep_number_mode_keymap_converter "+-E" -#define aknfep_number_mode_keymap_to_field "+" -#define aknfep_number_mode_keymap_fixed_dialling "*+pw?" -#define aknfep_number_mode_keymap_sat "*+" -#define aknfep_number_mode_keymap_sat_hidden "*" - -#define qtn_aknfep_thai_sct_av1 <0x0e34> -#define qtn_aknfep_thai_sct_av2 <0x0e31><0x0e36> -#define qtn_aknfep_thai_sct_av3 <0x0e35><0x0e37> -#define qtn_aknfep_thai_sct_bv1 <0x0e38> -#define qtn_aknfep_thai_sct_bv2 <0x0e39> -#define qtn_aknfep_thai_sct_tone <0x0e48><0x0e49><0x0e4a><0x0e4b> -#define qtn_aknfep_thai_sct_bd <0x0e3a> -#define qtn_aknfep_thai_sct_ad1 <0x0e4c><0x0e4d> -#define qtn_aknfep_thai_sct_ad2 <0x0e47> -#define qtn_aknfep_thai_sct_ad3 <0x0e4e> -#define qtn_aknfep_thai_sct_non <0x0e2f><0x0e3f><0x0e46><0x0e4f> -#define qtn_aknfep_thai_sct_non_thai_digit <0x0e50><0x0e51><0x0e52><0x0e53><0x0e54><0x0e55><0x0e56><0x0e57><0x0e58><0x0e59> -#define qtn_aknfep_thai_sct_lv <0x0e40><0x0e41><0x0e42><0x0e43><0x0e44> -#define qtn_aknfep_thai_sct_fv1 <0x0e30><0x0e32><0x0e33> -#define qtn_aknfep_thai_sct_fv2 <0x0e45> -#define qtn_aknfep_thai_sct_fv3 <0x0e24><0x0e26> -#define qtn_aknfep_thai_sct_extra_zero_character <0x0030><0x0020><0x000a> - - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_numeric_mode_chars_standard - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = aknfep_number_mode_keymap_standard; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_numeric_mode_chars_calculator - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = aknfep_number_mode_keymap_calculator; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_numeric_mode_chars_converter - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = aknfep_number_mode_keymap_converter; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_numeric_mode_chars_fixed_dialling - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = aknfep_number_mode_keymap_fixed_dialling; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_numeric_mode_chars_sat - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = aknfep_number_mode_keymap_sat; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_numeric_mode_chars_to_field - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = aknfep_number_mode_keymap_to_field; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_thai_star_common - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = qtn_aknfep_thai_sct_non qtn_aknfep_thai_sct_non_thai_digit qtn_sct_special_characters_lower ; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_thai_0_common - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = qtn_aknfep_thai_sct_lv qtn_aknfep_thai_sct_fv1 qtn_aknfep_thai_sct_fv2 qtn_aknfep_thai_sct_fv3 qtn_aknfep_thai_sct_extra_zero_character; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_thai_star_cons - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = qtn_aknfep_thai_sct_av1 qtn_aknfep_thai_sct_av2 qtn_aknfep_thai_sct_av3 qtn_aknfep_thai_sct_bv1 qtn_aknfep_thai_sct_bv2 qtn_aknfep_thai_sct_tone qtn_aknfep_thai_sct_bd qtn_aknfep_thai_sct_ad1 qtn_aknfep_thai_sct_ad2 qtn_aknfep_thai_sct_ad3 qtn_aknfep_thai_sct_non qtn_aknfep_thai_sct_non_thai_digit qtn_sct_special_characters_lower ; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_thai_0_cons - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = qtn_aknfep_thai_sct_lv qtn_aknfep_thai_sct_fv1 qtn_aknfep_thai_sct_fv2 qtn_aknfep_thai_sct_fv3 qtn_aknfep_thai_sct_extra_zero_character; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_thai_star_av1_bv1 - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = qtn_aknfep_thai_sct_tone qtn_aknfep_thai_sct_ad1 qtn_aknfep_thai_sct_non qtn_aknfep_thai_sct_non_thai_digit qtn_sct_special_characters_lower ; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_thai_0_av1_bv1 - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = qtn_aknfep_thai_sct_lv qtn_aknfep_thai_sct_fv1 qtn_aknfep_thai_sct_fv2 qtn_aknfep_thai_sct_fv3 qtn_aknfep_thai_sct_extra_zero_character; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_thai_star_av2_bv2 - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = qtn_aknfep_thai_sct_tone qtn_aknfep_thai_sct_non qtn_aknfep_thai_sct_non_thai_digit qtn_sct_special_characters_lower ; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_thai_0_av2_bv2 - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = qtn_aknfep_thai_sct_lv qtn_aknfep_thai_sct_fv1 qtn_aknfep_thai_sct_fv2 qtn_aknfep_thai_sct_fv3 qtn_aknfep_thai_sct_extra_zero_character; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_thai_star_av3 - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = qtn_aknfep_thai_sct_tone qtn_aknfep_thai_sct_ad2 qtn_aknfep_thai_sct_non qtn_aknfep_thai_sct_non_thai_digit qtn_sct_special_characters_lower ; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_thai_0_av3 - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = qtn_aknfep_thai_sct_lv qtn_aknfep_thai_sct_fv1 qtn_aknfep_thai_sct_fv2 qtn_aknfep_thai_sct_fv3 qtn_aknfep_thai_sct_extra_zero_character; - } - }; - } - -//these are used by general settings... - -RESOURCE NUMBER_INT16 r_chinfep_chinese_input_modes_PRC - { - value = EPinyin | EStroke; - } - -RESOURCE NUMBER_INT16 r_chinfep_chinese_input_modes_HK - { - value = EStroke; - } - -RESOURCE NUMBER_INT16 r_chinfep_chinese_input_modes_Taiwan - { - value = EZhuyin; - } - -/// - - -RESOURCE DIALOG r_aknfep_help_text - { - flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow; - buttons = R_AVKON_SOFTKEYS_BACK; - items= - { - DLG_LINE - { - type = EAknCtPopupHeadingPane; - id = EAknMessageQueryHeaderId; - control = AVKON_HEADING - { - label = qtn_chi_heading_instr; - headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE; - }; - }, - DLG_LINE - { - type = EAknCtMessageQuery; - id = EAknMessageQueryContentId; - control = AVKON_MESSAGE_QUERY - { - message = qtn_chi_input_help_instr; - }; - } - }; - } - - -// --------------------------------------------------------------------------- -// r_aknfep_text_kuten_invalid_error -// This string is used for Kuten input for Japanese variant -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_aknfep_softkeys_empty_cancel_empty - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyEmpty;txt=text_softkey_empty;}, - CBA_BUTTON {id=EAknSoftkeyCancel; txt=text_softkey_cancel;}, - CBA_BUTTON {id=EAknSoftkeyEmpty;txt=text_softkey_empty;} - }; - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -//---------------------------------------------------------------------------- -//r_aknfep_softkeys_ok_select_cancel -// -//---------------------------------------------------------------------------- -// - -RESOURCE CBA r_aknfep_softkeys_ok_select_cancel - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeySelect;txt=text_softkey_select;}, - CBA_BUTTON {id=EAknSoftkeyCancel; txt=text_softkey_cancel;}, - CBA_BUTTON {id=EAknSoftkeySelect;txt=text_softkey_select;} - }; - } -RESOURCE CBA r_aknfep_softkeys_ok_cancel_select - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyOk;txt=text_softkey_ok;}, - CBA_BUTTON {id=EAknSoftkeyCancel; txt=text_softkey_cancel;}, - CBA_BUTTON {id=EAknSoftkeySelect;txt=text_softkey_select;} - }; - } -#endif -// --------------------------------------------------------------------------- -// r_aknfepuictrljapanesekuten_query -// This query dialog is used for Kuten input for Japanese variant -// --------------------------------------------------------------------------- -// -RESOURCE DIALOG r_aknfepuictrljapanesekuten_query - { - flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow; - buttons = r_aknfep_softkeys_empty_cancel_empty; - items = - { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_DATA_QUERY - { - layout = EDataLayout; - label = qtn_japin_prmpt_kuten_code; - control = EDWIN - { - flags = EEikEdwinNoHorizScrolling; - width = 5; // AKNTAQUERY_EDWIN_WIDTH; - //lines = AKNTAQUERY_EDWIN_LINES; - maxlength = 4; // AKNTAQUERY_EDWIN_MAXLENGTH; - allowed_input_modes=EAknEditorNumericInputMode; - default_input_mode=EAknEditorNumericInputMode; - special_character_table=0; - avkon_flags = EAknEditorFlagNoLRNavigation | EAknEditorFlagSupressShiftMenu; - // added to limit expanding in forms. - // If you want full screen use 6 here - max_view_height_in_lines = 5; // AKNTAQUERY_EDWIN_LINES; - // if you have the line above, you must have this. - // It's calculable from LAF - base_line_delta = 21; - }; - }; - } - }; - } - -STRUCT HASH_KEY_LOOP - { - STRUCT modes[]; - } - - -// -// TEXT BUFFERS -// -RESOURCE LBUF r_aknfep_text_case_character_set - { - txt=qtn_aknfep_text_case_character_set; - } - -// User DB view option -RESOURCE LBUF r_aknfep_options_user_db_dlg - { - txt = qtn_chi_chinese_user_db_management; - } - -RESOURCE LBUF r_aknfep_options_input_language - { - txt = text_pup_option_input_language; - } - -// Chinese input mode option -RESOURCE LBUF r_aknfep_options_input_mode_chi - { - txt = qtn_chi_pup_option_input_method; - } - -// Chinese CangJie mode selection option -RESOURCE LBUF r_aknfep_options_cangjie_mode - { - txt = qtn_chi_pup_option_cangjie_mode; - } - - -RESOURCE LBUF r_aknfep_options_edit_submenu_title - { - txt = qtn_options_edit; - } - - -RESOURCE LBUF r_aknfep_softkey_ccpu_cancel - { - txt = text_softkey_cancel; - } - - - -RESOURCE LBUF r_aknfep_softkey_ccpu_start - { - txt = text_softkey_start; - } - - -RESOURCE LBUF r_aknfep_softkey_copy - { - txt = text_softkey_copy; - } - - -RESOURCE LBUF r_aknfep_softkey_cut - { - txt = text_pup_option_cut; - } - - -RESOURCE LBUF r_aknfep_options_edit_menu_copy_text - { - txt = qtn_editing_shift_menu_copy; - } - - -RESOURCE LBUF r_aknfep_options_edit_menu_cut_text - { - txt = qtn_editing_shift_menu_cut; - } - -RESOURCE LBUF r_aknfep_chinese_user_db_note_only_chinese_text - { - txt = qtn_chi_chinese_user_db_note_only_chinese; - } - -RESOURCE LBUF r_aknfep_chinese_user_db_note_too_short_text - { - txt = qtn_chi_chinese_user_db_note_too_short; - } - -RESOURCE LBUF r_aknfep_chinese_user_db_note_invalid_phrase_text - { - txt = qtn_chi_chinese_user_db_note_invalid_phrase; - } - -RESOURCE LBUF r_aknfep_chinese_user_db_note_phrase_existed_text - { - txt = qtn_chi_chinese_user_db_note_already_in_db; // change "qtn_chi_chinese_user_db_note_phrase_existed "to qtn_chi_chinese_user_db_note_already_in_db - } - -RESOURCE LBUF r_aknfep_chinese_user_db_note_not_existed_text - { - txt = qtn_chi_chinese_user_db_note_phrase_not_existed; - } - -RESOURCE LBUF r_aknfep_chinese_user_db_note_db_have_no_space_text - { - txt = qtn_chi_chinese_user_db_note_db_have_no_space; - } - -RESOURCE LBUF r_aknfep_chinese_user_db_phrase_too_long_text - { - txt = qtn_chi_chinese_user_db_note_phrase_too_long; - } - - -// -// CBA SOFTKEYS -// -RESOURCE CBA r_aknfep_softkeys_empty_previous - { - buttons = - { - CBA_BUTTON {txt=text_softkey_empty;}, - CBA_BUTTON {id=EAknFepSoftkeyPrevious; txt=text_softkey_previous;}, - CBA_BUTTON {txt=text_softkey_empty;} - }; - } - -RESOURCE CBA r_aknfep_softkeys_spell_previous - { - buttons = - { - CBA_BUTTON {id=EAknFepSoftkeySpell; txt=text_softkey_spell;}, - CBA_BUTTON {id=EAknFepSoftkeyPrevious; txt=text_softkey_previous;}, - CBA_BUTTON {id=EAknFepSoftkeySpell; txt=text_softkey_spell;} - }; - } - -RESOURCE CBA r_aknfep_softkeys_symbol_previous - { - buttons = - { - CBA_BUTTON {id=EAknFepSoftkeySymbol; txt=text_softkey_symbol;}, - CBA_BUTTON {id=EAknFepSoftkeyPrevious; txt=text_softkey_previous;}, - CBA_BUTTON {id=EAknFepSoftkeySymbol; txt=text_softkey_symbol;} - }; - } - -RESOURCE CBA r_aknfep_softkeys_spell_empty - { - buttons = - { - CBA_BUTTON {id=EAknFepSoftkeySpell; txt=text_softkey_spell;}, - CBA_BUTTON {txt=text_softkey_empty;}, - CBA_BUTTON {txt=text_softkey_empty;} - }; - } - -// --------------------------------------------------------------------------- -// r_aknfep_softkeys_empty_cancel_select -// This CBA is used for Next word prediction popup for Japanese variant -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_aknfep_softkeys_empty_cancel_select - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyEmpty; txt=text_softkey_empty;}, - CBA_BUTTON {id=EAknFepSoftkeyCloseWindow;txt=qtn_japin_edit_predict_stopprediction;}, - CBA_BUTTON {id=EAknFepSoftkeySelectCandidate;txt=qtn_msk_selectcandidate;} - }; - } - -// --------------------------------------------------------------------------- -// r_aknfep_softkeys_convert_empty_select -// This CBA is used for Prediction popup for Japanese variant -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_aknfep_softkeys_convert_other_select - { - buttons = - { - CBA_BUTTON {id=EAknFepSoftkeyConvert; txt=text_softkey_convert;}, - CBA_BUTTON {id=EAknFepSoftkeyOtherModes; txt=qtn_japin_edit_othermodes;}, - CBA_BUTTON {id=EAknFepSoftkeySelectCandidate;txt=qtn_msk_selectcandidate;} - }; - } - -// --------------------------------------------------------------------------- -// r_aknfep_softkeys_predict_other_commit -// This CBA is used for transitory input without showing candidate -// and being available predictive input for Japanese variant -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_aknfep_softkeys_predict_other_commit - { - buttons = - { - CBA_BUTTON {id=EAknFepSoftkeyPredictiveOn; txt=qtn_japin_edit_predict_startprediction;}, - CBA_BUTTON {id=EAknFepSoftkeyOtherModes; txt=qtn_japin_edit_othermodes;}, - CBA_BUTTON {id=EAknFepSoftkeyCommit;txt=qtn_msk_commit;} - }; - } - -// --------------------------------------------------------------------------- -// r_aknfep_softkeys_predict_other_commit -// This CBA is used for transitory input without showing candidate -// and being not available predictive input for Japanese variant -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_aknfep_softkeys_empty_other_commit - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyEmpty;txt=text_softkey_empty;}, - CBA_BUTTON {id=EAknFepSoftkeyOtherModes; txt=qtn_japin_edit_othermodes;}, - CBA_BUTTON {id=EAknFepSoftkeyCommit;txt=qtn_msk_commit;} - }; - } - -// --------------------------------------------------------------------------- -// r_aknfep_softkeys_empty_empty_commit -// This CBA is used for Candidate popup for Japanese variant -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_aknfep_softkeys_empty_empty_commit - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyEmpty;txt=text_softkey_empty;}, - CBA_BUTTON {id=EAknSoftkeyEmpty;txt=text_softkey_empty;}, - CBA_BUTTON {id=EAknFepSoftkeyCommit;txt=qtn_msk_commit;} - }; - } - -// --------------------------------------------------------------------------- -// r_aknfep_softkeys_retroactive_half_width -// This CBA is used for Retroactive popup for Japanese variant -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_aknfep_softkeys_retroactive_half_width - { - buttons = - { - CBA_BUTTON {id=EAknFepSoftkeyRetroActiveHalf; txt=qtn_japin_edit_half_width;}, - CBA_BUTTON {id=EAknSoftkeyEmpty; txt=text_softkey_empty;}, - CBA_BUTTON {id=EAknFepSoftkeyCommit;txt=qtn_msk_commit;} - }; - } - -// --------------------------------------------------------------------------- -// r_aknfep_softkeys_retroactive_full_width -// This CBA is used for Retroactive popup for Japanese variant -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_aknfep_softkeys_retroactive_full_width - { - buttons = - { - CBA_BUTTON {id=EAknFepSoftkeyRetroActiveFull; txt=qtn_japin_edit_full_width;}, - CBA_BUTTON {id=EAknSoftkeyEmpty; txt=text_softkey_empty;}, - CBA_BUTTON {id=EAknFepSoftkeyCommit;txt=qtn_msk_commit;} - }; - } - -// --------------------------------------------------------------------------- -// r_aknfep_text_kuten_invalid_error -// This string is used for Kuten input for Japanese variant -// --------------------------------------------------------------------------- -// -RESOURCE LBUF r_aknfep_text_kuten_invalid_error - { - txt = qtn_japin_text_kuten_code_invalid_error; - } - -RESOURCE HASH_KEY_LOOP r_hash_key_loop_all_input_modes - { - modes = - { - NUMBER_INT32 - { - value = EHiraganaKanji; - }, - NUMBER_INT32 - { - value = EKatakana; - }, - NUMBER_INT32 - { - value = EPRCFind; - }, - NUMBER_INT32 - { - value = EPinyin; - }, - NUMBER_INT32 - { - value = EZhuyinFind; - }, - NUMBER_INT32 - { - value = EZhuyin; - }, - NUMBER_INT32 - { - value = EStrokeFind; - }, - NUMBER_INT32 - { - value = EStroke; - }, - NUMBER_INT32 - { - value = ECangJie; - }, - NUMBER_INT32 - { - value = EHangul; - }, - NUMBER_INT32 - { - value = ELatin; - }, - NUMBER_INT32 - { - value = ENumber; - }, - NUMBER_INT32 - { - value = EHindi; - }, - NUMBER_INT32 - { - value = ENativeNumber; - } - }; - } - - -RESOURCE TBUF r_aknfep_number_mode_keymap_standard { buf = aknfep_number_mode_keymap_standard; } -RESOURCE TBUF r_aknfep_number_mode_keymap_plain { buf = aknfep_number_mode_keymap_plain; } -RESOURCE TBUF r_aknfep_number_mode_keymap_calculator { buf = aknfep_number_mode_keymap_calculator; } -RESOURCE TBUF r_aknfep_number_mode_keymap_converter { buf = aknfep_number_mode_keymap_converter; } -RESOURCE TBUF r_aknfep_number_mode_keymap_to_field { buf = aknfep_number_mode_keymap_to_field; } -RESOURCE TBUF r_aknfep_number_mode_keymap_fixed_dialling { buf = aknfep_number_mode_keymap_fixed_dialling; } -RESOURCE TBUF r_aknfep_number_mode_keymap_sat { buf = aknfep_number_mode_keymap_sat; } -RESOURCE TBUF r_aknfep_number_mode_keymap_sat_hidden { buf = aknfep_number_mode_keymap_sat_hidden; } - - -RESOURCE MENU_PANE r_aknfep_edit_submenu - { - items= - { - MENU_ITEM - { - command = EAknEditMenuCmdCopyText; - txt = qtn_editing_shift_menu_copy; - }, - MENU_ITEM - { - command = EAknEditMenuCmdCutText; - txt = qtn_editing_shift_menu_cut; - }, - MENU_ITEM - { - command = EEikCmdEditCopy; - txt = text_pup_option_copy; - }, - MENU_ITEM - { - command = EEikCmdEditCut; - txt = text_pup_option_cut; - }, - MENU_ITEM - { - command = EEikCmdEditPaste; - txt = text_pup_option_paste; - } - }; - } - - -// For stylus ccpu-menu. -RESOURCE LBUF r_aknfep_stylus_ccpu_menu_paste - { - txt = text_pup_option_paste; - } - -RESOURCE CBA r_aknfep_softkeys_finger - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyOptions; txt=text_softkey_option;}, - CBA_BUTTON {id=EAknSoftkeyOk; txt=text_softkey_ok;}, - CBA_BUTTON {id=EAknSoftkeyEmpty; txt=text_softkey_empty;} - }; - } - -RESOURCE CBA r_aknfep_softkeys_finger_option_previous - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyOptions; txt=text_softkey_option;}, - CBA_BUTTON {id=EAknFepSoftkeyPrevious; txt=text_softkey_previous;}, - CBA_BUTTON {id=EAknSoftkeyEmpty; txt=text_softkey_empty;} - }; - } - -RESOURCE CBA r_aknfep_softkeys_finger_spell_previous - { - buttons = - { - CBA_BUTTON {id=EAknFepSoftkeySpell; txt=text_softkey_spell;}, - CBA_BUTTON {id=EAknFepSoftkeyPrevious; txt=text_softkey_previous;}, - CBA_BUTTON {id=EAknSoftkeyEmpty; txt=text_softkey_empty;} - }; - } - -RESOURCE CBA r_aknfep_softkeys_finger_ok_cancel - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyOk; txt=text_softkey_ok;}, - CBA_BUTTON {id=EAknSoftkeyCancel; txt=text_softkey_cancel;}, - CBA_BUTTON {id=EAknSoftkeyEmpty; txt=text_softkey_empty;} - }; - } - -RESOURCE CBA r_aknfep_softkeys_finger_cancel - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyEmpty; txt=text_softkey_empty;}, - CBA_BUTTON {id=EAknSoftkeyCancel; txt=text_softkey_cancel;}, - CBA_BUTTON {id=EAknSoftkeyEmpty; txt=text_softkey_empty;} - }; - } - -RESOURCE TBUF r_aknfep_prompt_text - { - buf = text_t9_edit_query; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - -RESOURCE TBUF r_aknfep_pred_input_settings_title - { - buf = qtn_pred_input_settings_title; - } - - -RESOURCE TBUF r_aknfep_pred_options_input_options - { - buf = qtn_pred_options_input_options; - } - -// -// CBA SOFTKEYS -// -RESOURCE CBA r_aknfep_softkeys_spell_cancel_select - { - buttons= - { - CBA_BUTTON {id=EAknFepSoftkeySpell; txt=text_softkey_spell;}, - CBA_BUTTON {id=EAknSoftkeyCancel; txt=text_softkey_cancel;}, - CBA_BUTTON {id=EAknSoftkeySelect; txt=text_softkey_select;} - }; - } - -RESOURCE CBA r_aknfep_softkeys_options_back_change - { - buttons= - { - CBA_BUTTON {id=EAknSoftkeyOptions; txt=text_softkey_option;}, - CBA_BUTTON {id=EAknSoftkeyBack; txt=text_softkey_back;}, - CBA_BUTTON {id=EAknSoftkeyChange; txt=qtn_msk_change;} - }; - } - -RESOURCE CBA r_aknfep_softkeys_options_back__context_options - { - buttons= - { - CBA_BUTTON {id=EAknSoftkeyOptions; txt=text_softkey_option;}, - CBA_BUTTON {id=EAknSoftkeyBack; txt=text_softkey_back;}, - CBA_BUTTON {id=EAknSoftkeyContextOptions; txt=text_softkey_option;} - }; - } - -// For Input Ooption Menu -RESOURCE MENU_PANE r_aknfep_pred_input_options_submenu -{ -items= - { - MENU_ITEM - { - command = EAknFepCmdPredActivate; - txt = qtn_pred_options_predictive_input_activate; - }, - MENU_ITEM - { - command = EAknFepCmdPredDeactivate; - txt = qtn_pred_options_predictive_input_deactivate; - }, -#ifdef __USER_DICTIONARY_EDITING__ - MENU_ITEM - { - command = EAknFepCmdPredEditUserDictionary; - txt = qtn_pred_options_user_dictionary; - }, -#endif //__USER_DICTIONARY_EDITING__ - MENU_ITEM - { - command = EAknFepCmdPredSettings; - txt = qtn_pred_options_settings; - }, - MENU_ITEM - { - command = EAknFepCmdPredInputLanguage; - txt = qtn_pred_options_input_language; - }, - MENU_ITEM - { - command = EAknFepCmdPredHelp; - txt = qtn_pred_suboption_help; - } - }; -} - - -// For Setting Dialog -// --------------------------------------------------------- -// -// r_predictivesettingdialog_menubar -// Menubar for predictive setting dialog -// -// --------------------------------------------------------- -// -RESOURCE MENU_BAR r_predictivesettingdialog_menubar - { - titles = - { - MENU_TITLE - { - menu_pane = r_predictivesettingdialog_menu; - } - }; - } - - -// --------------------------------------------------------- -// -// r_predictivesettingdialog_menu -// Menu for "Options" -// -// --------------------------------------------------------- -// -RESOURCE MENU_PANE r_predictivesettingdialog_menu - { - items = - { - // added the new Options menu command here - MENU_ITEM - { - command = EAknFepCmdPredSettingChange; - txt = qtn_options_change; - }, - MENU_ITEM - { - command = EAknCmdHelp; - txt = qtn_options_help; - }, - MENU_ITEM - { - command = EAknCmdExit; - txt = qtn_options_exit; - } - }; - } - - - -RESOURCE DIALOG r_predictivesetting_dialog -{ - flags = EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect | - EEikDialogFlagWait | EEikDialogFlagCbaButtons; - - //Buttons are Select and Back - buttons = r_aknfep_softkeys_options_back_change; - - items = - { - DLG_LINE - { - // This is the control type - its our own setting item list custom control - type = EAknCtLastControlId; - - // This is the dialog id - any value can be used as there are no - // other controls on the dialog - id = 12; - - itemflags = EEikDlgItemTakesEnterKey; - - // the control data is a setting item list - control = AVKON_SETTING_ITEM_LIST - { - - // These are the settings we want to edit - items = - { - AVKON_SETTING_ITEM - { - identifier = EAknFepCmdPredAutoComplSetting; - setting_page_resource = r_autowordcompl_page; - associated_resource = r_autowordcompl_setting_texts; - name = qtn_pred_word_completion; - }, - AVKON_SETTING_ITEM - { - identifier = EAknFepCmdPredAutoComplMultiSetting; - setting_page_resource = r_autowordcomplmulti_page; - name = qtn_pred_word_completion; - }, - AVKON_SETTING_ITEM - { - identifier = EAknFepCmdPredTypingCorrectionSetting; - setting_page_resource = r_typingcorrection_page; - associated_resource = r_typingcorrection_page_texts; // gives available options - name = qtn_pred_typing_correction; - }, - AVKON_SETTING_ITEM - { - identifier = EAknFepCmdPredNumberCandidateSetting; - setting_page_resource = r_numbercandidates_page; - associated_resource = r_numbercandidates_setting_texts; - name = qtn_pred_number_candidates; - }, - - AVKON_SETTING_ITEM - { - identifier = EAknFepCmdPredPrimaryCandidateSetting; - setting_page_resource = r_primarycandidate_page; - associated_resource = r_primarycandidate_setting_texts; - name = qtn_pred_primary_candidate; - } - }; - }; - } - }; -} -// --------------------------------------------------------- -// -// Settings Pages -// -// defines the AVKON_SETTING_PAGE structures referred to in -// setting_page_resource fields above. -// -// --------------------------------------------------------- -// - -RESOURCE AVKON_SETTING_PAGE r_autowordcompl_page - { - label=qtn_pred_word_completion; - type = EAknCtPopupSettingList; - editor_resource_id = r_autowordcompl; - } - -RESOURCE AVKON_SETTING_PAGE r_autowordcomplmulti_page - { - label=qtn_pred_word_completion; - type = EAknCtPopupSettingList; - editor_resource_id = r_autowordcomplmulti; - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__MARK; - } - -RESOURCE AVKON_SETTING_PAGE r_typingcorrection_page - { - label=qtn_pred_typing_correction; - type = EAknCtPopupSettingList; - editor_resource_id = r_typingcorrection; - } - -RESOURCE AVKON_SETTING_PAGE r_numbercandidates_page - { - label=qtn_pred_number_candidates; - type = EAknCtPopupSettingList; - editor_resource_id = r_numbercandidates; - } - -RESOURCE AVKON_SETTING_PAGE r_primarycandidate_page - { - label=qtn_pred_primary_candidate; - type = EAknCtPopupSettingList; - editor_resource_id = r_primarycandidate; - } - - -// --------------------------------------------------------- -// -// Editor Controls -// -// This section defines the controls referred to from the -// editor_resource_id sections of the AVKON_SETTING_PAGE -// resources above. -// -// --------------------------------------------------------- -// - -RESOURCE POPUP_SETTING_LIST r_autowordcompl - { - } - -RESOURCE POPUP_SETTING_LIST r_autowordcomplmulti - { - } - -RESOURCE POPUP_SETTING_LIST r_typingcorrection - { - } - -RESOURCE POPUP_SETTING_LIST r_numbercandidates - { - } - -RESOURCE POPUP_SETTING_LIST r_primarycandidate - { - } - -// --------------------------------------------------------- -// -// Second level structures used from settings pages -// Defines - text strings to be used in display, -// and their mapping to enumerated values. -// -// --------------------------------------------------------- -// - - -RESOURCE AVKON_POPUP_SETTING_TEXTS r_autowordcompl_setting_texts - { - setting_texts_resource = r_autowordcompl_settingitem_texts; - } - -RESOURCE ARRAY r_autowordcompl_settingitem_texts - { - items = - { - AVKON_ENUMERATED_TEXT - { - value = 1; - text = qtn_pred_autocompl_on; - }, - AVKON_ENUMERATED_TEXT - { - value = 0; - text = qtn_pred_autocompl_off; - } - }; - } - -RESOURCE AVKON_POPUP_SETTING_TEXTS r_autowordcomplmulti_setting_texts - { - setting_texts_resource = r_autowordcomplmulti_settingitem_texts; - popped_up_texts_resource = r_autowordcomplmulti_editor_texts; - } - -RESOURCE ARRAY r_autowordcomplmulti_settingitem_texts - { - items = - { - AVKON_ENUMERATED_TEXT - { - value = 0; - text = qtn_pred_setting_itut; - }, - AVKON_ENUMERATED_TEXT - { - value = 1; - text = qtn_pred_setting_qwerty; - }, - AVKON_ENUMERATED_TEXT - { - value = 2; - text = qtn_pred_setting_half_qwerty; - } - }; - } - -RESOURCE TBUF r_aknfep_pred_setting_itut - { - buf = qtn_pred_setting_itut; - } - -RESOURCE TBUF r_aknfep_pred_setting_qwerty - { - buf = qtn_pred_setting_qwerty; - } -RESOURCE TBUF r_aknfep_pred_setting_half_qwerty - { - buf = qtn_pred_setting_half_qwerty; - } -RESOURCE ARRAY r_autowordcomplmulti_editor_texts - { - items = - { - LBUF { txt = qtn_pred_setting_itut;}, - LBUF { txt = qtn_pred_setting_qwerty;} - }; - } - -RESOURCE AVKON_POPUP_SETTING_TEXTS r_typingcorrection_page_texts - { - setting_texts_resource = r_typingcorrection_item_texts; - popped_up_texts_resource = r_typingcorrection_editor_texts; - } - -RESOURCE ARRAY r_typingcorrection_item_texts - { - items = - { - AVKON_ENUMERATED_TEXT - { - value = 2; - text = qtn_pred_correction_high; - }, - AVKON_ENUMERATED_TEXT - { - value = 1; - text = qtn_pred_correction_medium; - }, - AVKON_ENUMERATED_TEXT - { - value = 0; - text = qtn_pred_correction_off; - } - }; - } - -RESOURCE ARRAY r_typingcorrection_editor_texts - { - items = - { - LBUF { txt = qtn_pred_correction_high;}, - LBUF { txt = qtn_pred_correction_medium;}, - LBUF { txt = qtn_pred_correction_off;} - }; - } - - - -RESOURCE AVKON_POPUP_SETTING_TEXTS r_numbercandidates_setting_texts - { - setting_texts_resource = r_numbercandidates_settingitem_texts; - } - -RESOURCE ARRAY r_numbercandidates_settingitem_texts - { - items = - { - AVKON_ENUMERATED_TEXT - { - value = 1; - text = qtn_pred_number_cand_shown; - }, - AVKON_ENUMERATED_TEXT - { - value = 0; - text = qtn_pred_number_cand_not_shown; - } - }; - } - - -RESOURCE AVKON_POPUP_SETTING_TEXTS r_primarycandidate_setting_texts - { - setting_texts_resource = r_primarycandidate_settingitem_texts; - } - -RESOURCE ARRAY r_primarycandidate_settingitem_texts - { - items = - { - AVKON_ENUMERATED_TEXT - { - value = 0; - text = qtn_pred_primary_cand_suggested; - }, - AVKON_ENUMERATED_TEXT - { - value = 1; - text = qtn_pred_primary_cand_actually_entered; - } - }; - } - - -RESOURCE DIALOG r_predictivetextoff_confirmation_query - { - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_YES_NO; - items = - { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_CONFIRMATION_QUERY - { - layout = EConfirmationQueryLayout; - label = qtn_pred_turn_input_on_query; - }; - } - }; - } -RESOURCE TBUF r_aknfep_pred_settings_closed - { - buf = qtn_pred_settings_closed; - } - -#ifdef __USER_DICTIONARY_EDITING__ -// For User Dictionary editing -> - -RESOURCE MENU_BAR r_udb_edit_options_menubar - { - titles = - { - MENU_TITLE { menu_pane = r_udb_edit_options_help_exit; }, - MENU_TITLE { menu_pane = R_AVKON_MENUPANE_MARKABLE_LIST; }, - MENU_TITLE { menu_pane = r_udb_edit_options_menupane; } - }; - } - -RESOURCE MENU_PANE r_udb_edit_options_menupane - { - items= - { - MENU_ITEM - { - command = EAknFepPredDictionaryCmdEdit; - txt = qtn_pred_dictionary_option_edit; - }, - MENU_ITEM - { - command=EAknFepPredDictionaryCmdAdd; - txt=qtn_pred_dictionary_option_add; - }, - MENU_ITEM - { - command=EAknFepPredDictionaryCmdDelete; - txt=qtn_pred_dictionary_option_delete; - } - - }; - } - -RESOURCE MENU_PANE r_udb_edit_options_help_exit - { - items= - { - MENU_ITEM - { - command = EAknCmdHelp; - txt = qtn_options_help; - }, - MENU_ITEM - { - command = EAknCmdExit; - txt = qtn_options_exit; - } - }; - } - -RESOURCE DIALOG r_user_dictionary_editing_dialog - { - flags = EEikDialogFlagWait | EEikDialogFlagFillAppClientRect | EAknDialogMarkableList; - buttons = r_aknfep_softkeys_options_back__context_options; - items = - { - DLG_LINE - { - type = EAknCtSingleGraphicListBox; - id = ESelectionListControl; - itemflags = EEikDlgItemTakesEnterKey; - control = LISTBOX - { - flags = EAknListBoxMarkableList; - }; - }, - DLG_LINE - { - itemflags = EEikDlgItemNonFocusing; - id = EFindControl; - type = EAknCtSelectionListFixedFind; - } - }; - } - -RESOURCE DIALOG r_aknfep_pred_delete_confirmation_query - { - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_YES_NO; - items = - { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_CONFIRMATION_QUERY - { - layout = EConfirmationQueryLayout; - }; - } - }; - } - -RESOURCE DIALOG r_aknfep_pred_user_dictionary_word_query - { - flags=EGeneralQueryFlags; - buttons=R_AVKON_SOFTKEYS_OK_CANCEL; - items= - { - DLG_LINE - { - type=EAknCtQuery; - id=EGeneralQuery; - control= AVKON_DATA_QUERY - { - layout = EDataLayout; - control=EDWIN - { - default_case = EAknEditorLowerCase; - allowed_case_modes = EAknEditorLowerCase | EAknEditorUpperCase; - }; - }; - } - }; - } - -RESOURCE TBUF r_aknfep_pred_userdict_editing_title - { - buf = qtn_pred_input_dictionary_editing_title; - } -RESOURCE TBUF r_aknfep_pred_user_dictionary_heading_empty - { - buf = qtn_pred_dictionary_editing_heading_empty; - } -RESOURCE TBUF r_aknfep_pred_user_dictionary_empty - { - buf = qtn_pred_dictionary_editing_empty; - } -RESOURCE TBUF r_aknfep_pred_edit_query - { - buf = text_t9_edit_query; - } -RESOURCE TBUF r_aknfep_pred_add_query - { - buf = text_t9_spell_query; - } -RESOURCE TBUF r_aknfep_pred_delete_1_query - { - buf = qtn_pred_dictionary_option_confirm_1_deletion; - } -RESOURCE TBUF r_aknfep_pred_delete_many_query - { - buf = qtn_pred_dictionary_option_confirm_deletions; - } -RESOURCE TBUF r_aknfep_pred_msk_add_new - { - buf = qtn_msk_pred_add_new; - } -RESOURCE TBUF r_aknfep_pred_msk_edit - { - buf = qtn_msk_edit; - } -RESOURCE TBUF r_aknfep_pred_msk_context_options - { - buf = text_softkey_option; - } -#endif //__USER_DICTIONARY_EDITING__ - -#ifdef FF_DUAL_LANGUAGE_SUPPORT -RESOURCE TBUF r_secondary_writing_lang_none - { - buf = qtn_set_secondary_writing_lang_none; - } - -RESOURCE TBUF r_input_language_settings_title - { - buf = qtn_set_title_settings_writing_language; - } -RESOURCE AVKON_POPUP_SETTING_TEXTS r_language_setting_texts - { - setting_texts_resource = r_language_settingitem_texts; - } - -RESOURCE ARRAY r_language_settingitem_texts - { - items = - { - AVKON_ENUMERATED_TEXT - { - value = 0; - text = qtn_set_secondary_writing_lang_none; - } - }; - } -RESOURCE DIALOG r_inputlanguage_dialog -{ - flags = EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect | - EEikDialogFlagWait | EEikDialogFlagCbaButtons; - - buttons = r_aknfep_softkeys_options_back_change; - - items = - { - DLG_LINE - { - // This is the control type - its our own setting item list custom control - type = EAknCtLastControlId; - - // This is the dialog id - any value can be used as there are no - // other controls on the dialog - id = 12; - - itemflags = EEikDlgItemTakesEnterKey; - - // the control data is a setting item list - control = AVKON_SETTING_ITEM_LIST - { - - // These are the settings we want to edit - items = - { - AVKON_SETTING_ITEM - { - identifier = EAknFepDualLanguageSettingDualInputPrimary; - setting_page_resource = r_primary_input_language_setting_page; - associated_resource = r_language_setting_texts; - name = qtn_set_primary_writing_language; - }, - AVKON_SETTING_ITEM - { - identifier = EAknFepDualLanguageSettingDualInputSecondary; - setting_page_resource = r_secondary_input_language_setting_page; - associated_resource = r_language_setting_texts; - name = qtn_set_secondary_writing_language; - } - }; - }; - } - }; -} - -RESOURCE POPUP_SETTING_LIST r_lang_editor - { - } - -RESOURCE AVKON_SETTING_PAGE r_primary_input_language_setting_page - { - // don't show setting number in setting page - number = EAknSettingPageNoOrdinalDisplayed; - label = qtn_set_primary_writing_language; //localised string for setting page label - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; // softkeys for setting page - type = EAknCtPopupSettingList; // setting page type - editor_resource_id = r_lang_editor; // setting page editor - } - -RESOURCE AVKON_SETTING_PAGE r_secondary_input_language_setting_page - { - // don't show setting number in setting page - number = EAknSettingPageNoOrdinalDisplayed; - label = qtn_set_secondary_writing_language; //localised string for setting page label - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK; // softkeys for setting page - type = EAknCtPopupSettingList; // setting page type - editor_resource_id = r_lang_editor; // setting page editor - } -#endif //FF_DUAL_LANGUAGE_SUPPORT -// Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT -// ----------------------------------------------------------------------------- -// -// r_aknfep_userdb_dlg_menubar -// Main menubar for use DB management dialog -// -// ----------------------------------------------------------------------------- -// -RESOURCE MENU_BAR r_aknfep_userdb_dlg_menubar - { - titles = - { - MENU_TITLE - {menu_pane = r_aknfep_userdb_dlg_menu;} - }; - } - -// ----------------------------------------------------------------------------- -// -// r_aknfep_userdb_dlg_menu -// Menu for "Options in user DB management dialog" -// -// ----------------------------------------------------------------------------- -// -RESOURCE MENU_PANE r_aknfep_userdb_dlg_menu - { - items = - { - MENU_ITEM - { - command = EAknCmdUserDBAdd; - txt = qtn_chi_chinese_user_db_options_new;// change "qtn_chi_chinese_user_db_options_add" to "qtn_chi_chinese_user_db_options_new"; - }, - MENU_ITEM - { - command = EAknCmdUserDBEdit; - txt = qtn_chi_chinese_user_db_options_edit; - }, - MENU_ITEM - { - command = EAknCmdUserDBDelete; - txt = qtn_chi_chinese_user_db_delete; - }, - MENU_ITEM - { - command = EAknCmdMarkOrUnmark; - txt = qtn_options_list; - cascade = r_aknfep_mark_unmark_menupane; - } - }; - } - - -RESOURCE MENU_PANE r_aknfep_mark_unmark_menupane - { - items = - { - MENU_ITEM - { - command = EAknCmdMark; - txt = qtn_options_list_mark_one; - }, - MENU_ITEM - { - command = EAknCmdUnmark; - txt = qtn_options_list_unmark_one; - }, - MENU_ITEM - { - command = EAknMarkAll; - txt = qtn_options_list_mark_all; - }, - MENU_ITEM - { - command = EAknUnmarkAll; - txt = qtn_options_list_unmark_all; - } - }; - } - -// ----------------------------------------------------------------------------- -// -// r_aknfep_listbox_data_query_dialog -// Data query for add phrase. -// -// ----------------------------------------------------------------------------- -// -RESOURCE DIALOG r_aknfep_listbox_data_query_dialog - { - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_OK_CANCEL__OK; - items = - { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_DATA_QUERY - { - layout = EDataLayout; -// label = STRING_r_listbox_add_item_dialog; - control = EDWIN - { - flags = EEikEdwinNoHorizScrolling | EEikEdwinResizable; - maxlength = 7; - }; - }; - } - }; - } - -// ----------------------------------------------------------------------------- -// -// r_aknfep_listdlg_dialog -// Dialog for user DB management -// -// ----------------------------------------------------------------------------- -// -RESOURCE DIALOG r_aknfep_listdlg_dialog - { - flags = EAknDialogSelectionList | EEikDialogFlagNotifyEsc; - buttons = r_aknfep_softkeys_list_options_exit_context; - items = - { - DLG_LINE - { - type = EAknCtSingleGraphicListBox; - id = ESelectionListControl; - control= LISTBOX - { - flags = EAknListBoxMarkableList|EEikDialogFlagFillAppClientRect; - }; - }, - DLG_LINE - { - itemflags = EEikDlgItemNonFocusing; - id = EFindControl; - type = EAknCtSelectionListFixedFind; - } - }; - } - -RESOURCE CBA r_aknfep_softkeys_list_options_exit_context - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyOptions; txt=text_softkey_option;}, - CBA_BUTTON {id=EAknSoftkeyExit; txt=text_softkey_exit;}, - CBA_BUTTON {id=EAknSoftkeyContextOptions; txt=text_softkey_option;} - }; - } - -// for context -RESOURCE MENU_BAR r_aknfep_userdb_dlg_context_menubar - { - titles = - { - MENU_TITLE - {menu_pane = r_aknfep_userdb_dlg_context_menu;} - }; - } - -RESOURCE MENU_PANE r_aknfep_userdb_dlg_context_menu - { - items = - { - MENU_ITEM - { - command = EAknCmdUserDBEdit; - txt = qtn_chi_chinese_user_db_options_edit; - }, - MENU_ITEM - { - command = EAknCmdUserDBDelete; - txt = qtn_chi_chinese_user_db_delete; - }, - MENU_ITEM - { - command = EAknCmdMarkOrUnmark; - txt = qtn_options_list; - cascade = r_aknfep_mark_unmark_menupane; - } - }; - } - -RESOURCE TBUF r_aknfep_delete_confirmation_text - { - buf = "Delete %N Phrase?"; //change "qtn_chi_chinese_user_db_query_delete_phrases" to "qtn_chi_chinese_user_db_query_delete_phrase" - } - -RESOURCE TBUF r_aknfep_user_db_management_title - { - buf =qtn_chi_chinese_user_db_title; // change "qtn_chi_chinese_user_db_management_title" to "qtn_chi_chinese_user_db_title"; - } - -RESOURCE TBUF r_aknfep_user_db_list_no_item_text - { - buf = qtn_chi_chinese_user_db_empty; - } - -RESOURCE TBUF r_aknfep_user_db_list_add_item_text - { - buf = qtn_chi_chinese_user_db_query_add; //change the "STRING_r_listbox_add_item_dialog" to " qtn_chi_chinese_user_db_query_add" - } - -RESOURCE TBUF r_aknfep_user_db_list_edit_item_text - { - buf = qtn_chi_chinese_user_db_options_edit; //change the "STRING_r_listbox_edit_item_dialog" to "qtn_chi_chinese_user_db_options_edit" - } - -RESOURCE DIALOG r_aknfep_delete_query_dialog - { - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_YES_NO; - items = - { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_CONFIRMATION_QUERY - { - layout = EConfirmationQueryLayout; - }; - } - }; - } - -//CBA add-add-exit -RESOURCE CBA r_aknfep_softkeys_list_add_exit - { - buttons = - { - CBA_BUTTON {id=EAknCmdUserDBAdd;txt=qtn_chi_chinese_user_db_softkey_new;},// change "qtn_chi_chinese_user_db_options_add" to "qtn_chi_chinese_user_db_softkey_new" ;}, - CBA_BUTTON {id=EAknSoftkeyExit; txt=text_softkey_exit;}, - CBA_BUTTON {id=EAknCmdUserDBAdd;txt=qtn_chi_chinese_user_db_softkey_new;} //change "qtn_chi_chinese_user_db_options_add" to "qtn_chi_chinese_user_db_softkey_new" - }; - } - -//CBA options-mark/unmark-exit -RESOURCE CBA r_aknfep_softkeys_list_options_exit_unmark - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyOptions;txt=text_softkey_option;}, - CBA_BUTTON {id=EAknSoftkeyExit; txt=text_softkey_exit;}, - CBA_BUTTON {id=EAknSoftkeyUnmark;} - }; - } - -RESOURCE CBA r_aknfep_softkeys_list_options_exit_mark - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyOptions;txt=text_softkey_option;}, - CBA_BUTTON {id=EAknSoftkeyExit; txt=text_softkey_exit;}, - CBA_BUTTON {id=EAknSoftkeyMark;} - }; - } - -RESOURCE DIALOG r_aknfep_wait_dialog - { - flags = EAknProgressNoteFlags; - buttons = R_AVKON_SOFTKEYS_EMPTY; - items = - { - DLG_LINE - { - type = EAknCtNote; - id = EProgressNoteId; - control = AVKON_NOTE - { - layout = EProgressLayout; - singular_label = qtn_chi_chinese_user_db_note_deleting_phrases; - imagefile = "z:\\resource\apps\avkon2.mbm"; - imageid = EMbmAvkonQgn_note_erased; - imagemask = EMbmAvkonQgn_note_erased_mask; - }; - } - }; - } - -//CBA Done-Done-Cancel -RESOURCE CBA r_aknfep_softkeys_done_cancel_done - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyDone;txt=text_softkey_done;}, - CBA_BUTTON {id=EAknSoftkeyCancel;txt=text_softkey_cancel;}, - CBA_BUTTON {id=EAknSoftkeyDone;} - }; - } - -RESOURCE DIALOG r_aknfep_quit_phrase_creation_query_dialog - { - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_YES_NO; - items = - { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_CONFIRMATION_QUERY - { - layout = EConfirmationQueryLayout; - }; - } - }; - } - -RESOURCE CBA r_aknfep_softkeys__phrase_creation_empty_cancel_empty - { - buttons = - { - CBA_BUTTON {id=EAknSoftkeyEmpty;txt=text_softkey_empty;}, - CBA_BUTTON {id=EAknSoftkeyCancel; txt=text_softkey_cancel;}, - CBA_BUTTON {id=EAknSoftkeyEmpty;} - }; - } - -RESOURCE CBA r_aknfep_softkeys_phrase_creation_select_cancel_select - { - buttons = - { - // This prevents EAknSoftkeySelect operating on a long keypress - AVKON_CBA_BUTTON{id=EAknSoftkeySelect; longpressid=0; txt= text_softkey_select; }, - CBA_BUTTON{id=EAknSoftkeyCancel; txt= text_softkey_cancel; }, - AVKON_CBA_BUTTON{id=EAknSoftkeySelect; longpressid=0; txt= qtn_msk_select; } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_numeric_mode_chars_plain - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = aknfep_number_mode_keymap_plain; - } - }; - } - -RESOURCE SPECIAL_CHAR_TABLE r_aknfep_sct_numeric_mode_chars_sat_hidden - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTChiLatinInputModes; - chars = aknfep_number_mode_keymap_sat_hidden; - } - }; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/rom/PeninputPluginKr.iby --- a/fep/aknfep/rom/PeninputPluginKr.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Image description file for project PeninputPluginKr -* -*/ - -#ifndef __PENINPUTPLUGINKR_IBY__ -#define __PENINPUTPLUGINKR_IBY__ - -ECOM_PLUGIN(PeninputPluginKr.dll,E95A395D.rsc) -data=DATAZ_\FEP_RESOURCES_DIR\PeninputPluginKrRes.r01 FEP_RESOURCES_DIR\PeninputPluginKrRes.r01 -data=DATAZ_\FEP_RESOURCES_DIR\PeninputPluginKrRes.r65 FEP_RESOURCES_DIR\PeninputPluginKrRes.r65 -data=ZSYSTEM\install\PeninputPluginKr_stub.sis System\Install\PeninputPluginKr_stub.sis - -#endif // __PENINPUTPLUGINKR_IBY__ diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/rom/aknfepResources.iby --- a/fep/aknfep/rom/aknfepResources.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - -#ifndef __AKNFEP_RESOURCES_IBY__ -#define __AKNFEP_RESOURCES_IBY__ - -data=DATAZ_\FEP_RESOURCES_DIR\aknfep.rsc FEP_RESOURCES_DIR\aknfep.rsc - -#endif \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/rom/aknfep_variant.iby --- a/fep/aknfep/rom/aknfep_variant.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* IBY file for AknFep -* -*/ - - - - - - - - - - - - -#ifndef __AKNFEP_VARIANT_IBY__ -#define __AKNFEP_VARIANT_IBY__ - -// ChinipFep Component -ECOM_PLUGIN(avkonfep.dll,100056de.rsc) -SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,aknfepuictrls) -ECOM_PLUGIN(AknFepUiAvkonPlugin.dll,AknFepUiAvkonPlugin.rsc) - -#endif - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/rom/aknfepuiinterface.iby --- a/fep/aknfep/rom/aknfepuiinterface.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* IBY file for AknFepUiInterface -* -*/ - - - - - - - - - - - - -#ifndef __AKNFEPUIINTERFACE_IBY__ -#define __AKNFEPUIINTERFACE_IBY__ - -file=ABI_DIR\BUILD_DIR\aknfepuiinterface.dll System\Libs\aknfepuiinterface.dll - -#endif - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/rom/peninputimeplugincn_Variant.iby --- a/fep/aknfep/rom/peninputimeplugincn_Variant.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Image description file for project peninputimeplugincn -* -*/ - - - - - - - - - - - - -#ifndef PENINPUTIMEPLUGINCN_VARIANT_IBY -#define PENINPUTIMEPLUGINCN_VARIANT_IBY - -#include -#include - -#ifdef __PEN_SUPPORT -#ifdef RD_SCALABLE_UI_V2 -#ifdef __CHINESE - -ECOM_PLUGIN(peninputimeplugincn.dll,peninputimeplugincn.rsc) - -#endif // __CHINESE -#endif // RD_SCALABLE_UI_V2 -#endif // __PEN_SUPPORT - -#endif // PENINPUTIMEPLUGINCN_VARIANT_IBY diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/rom/peninputimeplugingeneric.iby --- a/fep/aknfep/rom/peninputimeplugingeneric.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Image description file for project peninputimeplugingeneric -* -*/ - - - - - - - - - - - - -#ifndef PENINPUTIMEPLUGINGENERIC_IBY -#define PENINPUTIMEPLUGINGENERIC_IBY - -#include -#include - -#ifdef __PEN_SUPPORT -#ifdef RD_SCALABLE_UI_V2 - -ECOM_PLUGIN(peninputimeplugingeneric.dll,peninputimeplugingeneric.rsc) - -#endif // RD_SCALABLE_UI_V2 -#endif // __PEN_SUPPORT - -#endif // PENINPUTIMEPLUGINGENERIC_IBY diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/rom/peninputimepluginitut_Variant.iby --- a/fep/aknfep/rom/peninputimepluginitut_Variant.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Image description file for project peninputimepluginitut -* -*/ - - - - - - - - - - - - -#ifndef PENINPUTIMEPLUGINITUT_IBY -#define PENINPUTIMEPLUGINITUT_IBY - -#include -#include - -#ifdef __PEN_SUPPORT -#ifdef RD_SCALABLE_UI_V2 - -ECOM_PLUGIN(peninputimepluginitut.dll,peninputimepluginitut.rsc) - -#endif // RD_SCALABLE_UI_V2 -#endif // __PEN_SUPPORT - -#endif // PENINPUTIMEPLUGINITUT_IBY diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/rom/peninputimepluginjp_Variant.iby --- a/fep/aknfep/rom/peninputimepluginjp_Variant.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Image description file for project peninputimepluginjp -* -*/ - - - - - - - - - - - - -#ifndef PENINPUTIMEPLUGINJP_VARIANT_IBY -#define PENINPUTIMEPLUGINJP_VARIANT_IBY - -#include -#include - -#ifdef __PEN_SUPPORT -#ifdef RD_SCALABLE_UI_V2 -#ifdef __JAPANESE - -ECOM_PLUGIN(peninputimepluginjp.dll,peninputimepluginjp.rsc) - -#endif // __JAPANESE -#endif // RD_SCALABLE_UI_V2 -#endif // __PEN_SUPPORT - -#endif // PENINPUTIMEPLUGINJP_VARIANT_IBY diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepCaseManager.cpp --- a/fep/aknfep/src/AknFepCaseManager.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1062 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#include "AknFepCaseManager.h" -#include "AknFepPanic.h" -#include "aknfeppeninputenums.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -const TText KSpaceCharacter=' '; -const TText KInvertedExclamationMarkCharacter = 0x00A1; -const TText KInvertedQuestionMarkCharacter = 0x00BF; - -/* Teleca change begin, 18.08.2009 ssal */ -const TInt KSBase = 0xac00; // base address for hangul syllables -const TInt KCBase = 0x3131; // base address for hangul compatibility jamo - -const TInt KLCount = 19; // count of L-jamos -const TInt KVCount = 21; // count of V-jamos -const TInt KTCount = 28; // count of T-jamos -const TInt KNCount = KVCount * KTCount; // count of V&T-jamo combinations -const TInt KSCount = KLCount * KNCount; // total count of hangul syllables - -// Conversion table for hangul compatibility jamo -const TUint16 conversionTableFromCompatibilityJamoToJamo[] = { -0x1100, -0x1101, -0x11AA, -0x1102, -0x11AC, -0x11AD, -0x1103, -0x1104, -0x1105, -0x11B0, -0x11B1, -0x11B2, -0x11B3, -0x11B4, -0x11B5, -0x11B6, -0x1106, -0x1107, -0x1108, -0x11B9, -0x1109, -0x110A, -0x110B, -0x110C, -0x110D, -0x110E, -0x110F, -0x1110, -0x1111, -0x1112, -0x1161, -0x1162, -0x1163, -0x1164, -0x1165, -0x1166, -0x1167, -0x1168, -0x1169, -0x116A, -0x116B, -0x116C, -0x116D, -0x116E, -0x116F, -0x1170, -0x1171, -0x1172, -0x1173, -0x1174, -0x1175, -}; - -#define KCCount (sizeof(conversionTableFromCompatibilityJamoToJamo) / sizeof(TUint16)) -/* Teleca change end, 18.08.2009 ssal */ - -// 0x2029 is the paragraph seperator. When the user inputs a -// new line character, 0x2029 is inserted. -const TText KParagraphSeperator = 0x2029; -// 0x000A is line feed character -const TText KLineFeed = 0x000A; - -//for chinese unicode ox4E00 to 0x9FA5 -const TText KChineseLowerUnicode = 0x4E00; -const TText KChineseUpperUnicode = 0x9FA5; -CAknFepCaseManager* CAknFepCaseManager::NewL(CAknFepManager& aFep) - { - CAknFepCaseManager* self = new (ELeave) CAknFepCaseManager(aFep); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); //self - return self; - } - - -CAknFepCaseManager::~CAknFepCaseManager() - { - delete iPictoInterface; - } - - - - -void CAknFepCaseManager::ConfigureCaseStateFromEditorState() - { - CAknEdwinState* editorState = iFep.EditorState(); - if (!editorState) - { - return; - } - - iCurrentCase = editorState->CurrentCase(); - iPreviousCase = editorState->CaseState().PreviousCase(); - - SetFixedCase(editorState->Flags() & EAknEditorFlagFixedCase); - - iPreviousCase = iCurrentCase; - - if (CurrentEditorIsFixedCase()) - { - SetCurrentCase(editorState->DefaultCase()); - iPreviousCase = iCurrentCase; - __ASSERT_DEBUG(IsCasePermitted(iCurrentCase), - AknFepPanic(EAknFepPanicNonPermittedEditorMode)); - } - - //determine it based on position - UpdateCase(ENullNaviEvent); - - // if still there is no current case set - use the default - if (!iCurrentCase) - { - SetCurrentCase(editorState->DefaultCase()); - if (!IsCasePermitted(iCurrentCase)) - { - SetCurrentCase(editorState->CurrentCase()); - } - - iPreviousCase = iCurrentCase; - __ASSERT_DEBUG(IsCasePermitted(iCurrentCase), - AknFepPanic(EAknFepPanicNonPermittedEditorMode)); - } - - // if the current is not allowed stay where we are - else if (!IsCasePermitted(iCurrentCase)) - { - if (!iPreviousCase) - { - SetCurrentCase(editorState->DefaultCase()); - iPreviousCase = iCurrentCase; - __ASSERT_DEBUG(IsCasePermitted(iCurrentCase), - AknFepPanic(EAknFepPanicNonPermittedEditorMode)); - } - else - { - if (IsCasePermitted(iPreviousCase)) - { - SetCurrentCase(iPreviousCase); - } - else - { - SetCurrentCase(editorState->DefaultCase()); - iPreviousCase = iCurrentCase; - __ASSERT_DEBUG(IsCasePermitted(iCurrentCase), - AknFepPanic(EAknFepPanicNonPermittedEditorMode)); - } - } - } - } - - -void CAknFepCaseManager::UpdateCase(TWesternNaviEvent aNaviEvent) - { - TBool applyCaseNeeded = ETrue; - if ( iFep.IsFlagSet(CAknFepManager::EFlagSupressAutoUpdate) ) - { - return; - } - CAknEdwinState* editorState = iFep.EditorState(); - if (!CurrentEditorIsFixedCase() && editorState - && editorState->PermittedCases() & EAknEditorTextCase) - { - // lets figure out where the cursor will be when the case needs to be checked - TInt cursorPos = FindCursorPositionAtCaseCheck(aNaviEvent); - - if (!(cursorPos == 0 - && iFep.IsFlagSet(CAknFepManager::EFlagSupressAutoUpdateAtEditorStart) )) - { - TInt defaultCase = editorState->DefaultCase(); - if ( cursorPos == 0 && - (defaultCase == EAknEditorLowerCase || defaultCase == EAknEditorUpperCase )) - { - SetCurrentCase(defaultCase); - } - // UPPER CASE : If in upper case & inside sentence, stay in upper. - else if (!(iCurrentCase == EAknEditorUpperCase && - CapsLockRequired(cursorPos, iCurrentCase) && - aNaviEvent != EBackspaceEvent)) - { - const TBool textCaseRequired = TextCaseRequired(cursorPos); - // UPPER CASE : If upper case & inside sentence & backspace event, stay in upper. - if (!(iCurrentCase == EAknEditorUpperCase && aNaviEvent == EBackspaceEvent && - !textCaseRequired && cursorPos != 0)) - { - // TEXT CASE : set if at start of editor or following a full stop / text case character - if (cursorPos == 0 || textCaseRequired) - { - TInt inputMode = iFep.InputMode(); - if (iFep.IsChineseInputLanguage() && - inputMode != ELatin && - iCurrentCase != EAknEditorLowerCase) - { - SetCurrentCase(iCurrentCase); - } -#ifdef RD_HINDI_PHONETIC_INPUT - - else if(iFep.IsIndicPhoneticInputLanguage()) - { - if(CurrentCase() != EAknEditorUpperCase) - SetCurrentCase(EAknEditorLowerCase); - } -#endif - else - { - /* Teleca change begin, 27.08.2008 ssal - original code: - SetCurrentCase(EAknEditorTextCase); */ - - if(iFep.IsKoreanInputLanguage() && inputMode == EHangul ) - { - SetCurrentCase(EAknEditorLowerCase); - } - else - { - SetCurrentCase(EAknEditorTextCase); - } - /* Teleca change end, 27.08.2008 ssal */ - } - applyCaseNeeded = EFalse; - } - else // OTHERWISE LOWER - { - SetCurrentCase(EAknEditorLowerCase); - applyCaseNeeded = EFalse; - } - } - } - } - else - { - iFep.ClearFlag(CAknFepManager::EFlagSupressAutoUpdateAtEditorStart); - } - } - if (applyCaseNeeded) - { - ApplyCase(); - } - } - - -void CAknFepCaseManager::ManualCaseUpdate() - { - if (!CurrentEditorIsFixedCase()) - { - if (IsCasePermitted(iCurrentCase)) - { - DoManualCaseUpdate(); - iFep.ClearFlag(CAknFepManager::EFlagSupressAutoUpdate); - } - } - } - - -void CAknFepCaseManager::RevertCaseChange() - { - if (!CurrentEditorIsFixedCase()) - { - if (IsCasePermitted(iPreviousCase)) - { - SetCurrentCase(iPreviousCase); - } - } - } - - -void CAknFepCaseManager::SetCurrentCase(TInt aCase, TBool aOverrideNumericTest) - { - if ( ( iFep.InputMode() == ENumber || iFep.InputMode() == ENativeNumber ) && - !aOverrideNumericTest) - { - if ( iFep.EditorState() && - (iFep.EditorState()->NumericKeymap() == EAknEditorConverterNumberModeKeymap) ) - { - // Converter number mode keymap for '*' key requires upper case 'E'. - iCurrentCase = EAknEditorUpperCase; - } - else - { - // Number mode keymappings for '*' -key uses lower case letters (pw). - iCurrentCase = EAknEditorLowerCase; - } - } - else - { - if ( aCase == ECaseInverseText ) - { - iCurrentCase = ECaseUpper; - iInverseCase = ETrue; - } - else - { - iCurrentCase = aCase; - iInverseCase = EFalse; - } - } - ApplyCase(); - } - - -TInt CAknFepCaseManager::CurrentCase() const - { - return iCurrentCase; - } - -TBool CAknFepCaseManager::IsAbleChangeCase() const - { - TBool isable = ETrue; - - CAknEdwinState* editorState = iFep.EditorState(); - if (editorState) - { - const TInt permittedCases = editorState->PermittedCases(); - - if (permittedCases == EAknEditorUpperCase || - permittedCases == EAknEditorLowerCase ) - { - isable = EFalse; - } - else if ((editorState->Flags() & EAknEditorFlagForceTransparentFepModes) - && iFep.IsChineseInputLanguage()) - { - isable = EFalse; - } - else if ( editorState->Flags() & EAknEditorFlagFixedCase ) - { - isable = EFalse; - } - else if (!iFep.InputLanguageSupportsCaseChanges()) - { - isable = EFalse; - } - } - else - { - isable = EFalse; - } - return isable; - } - -CAknFepCaseManager::CAknFepCaseManager(CAknFepManager& aFep) : - iFep(aFep) - { - } - - -void CAknFepCaseManager::ConstructL() - { - // Set text case character set from resource - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, R_AKNFEP_TEXT_CASE_CHARACTER_SET); - iTextCaseCharacters=reader.ReadTPtrC(); - - // Create PictographInterface - CCoeControl* control = NULL; - MAknPictographAnimatorCallBack* callback = NULL; - iPictoInterface = CAknPictographInterface::NewL(*control,*callback); - - CleanupStack::PopAndDestroy(); // reader*/ - } - - -TInt CAknFepCaseManager::FindCursorPositionAtCaseCheck(TWesternNaviEvent aNaviEvent) - { - TCursorSelection curCursSel; - iFep.FepAwareTextEditor()->GetCursorSelectionForFep(curCursSel); - - TInt docLength = iFep.FepAwareTextEditor()->DocumentLengthForFep(); - TInt returnedPosition = -1; - - TCursorSelection uncommittedText = iFep.UncommittedText(); - - switch (aNaviEvent) - { - case ENullNaviEvent: - if (iFep.IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - returnedPosition = uncommittedText.HigherPos(); - } - else - { - // In case of non-predictive mode, following condition - // check text is selceted mode or not? - // In selected mode, character always being inserted - // anchor position - if( curCursSel.Length() >0 ) - { - returnedPosition = curCursSel.LowerPos(); - } - else - { - returnedPosition = curCursSel.HigherPos(); - } - } - break; - case ERightNaviEvent: - if (iFep.IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - returnedPosition = uncommittedText.HigherPos(); - } - else - { - if (curCursSel.Length()) - { - returnedPosition = curCursSel.HigherPos(); - } - else - { - if (curCursSel.iCursorPos == docLength) - { - returnedPosition = 0; - } - else - { - returnedPosition = curCursSel.HigherPos() + 1; - } - } - } - break; - case ELeftNaviEvent: - if (iFep.IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - returnedPosition = uncommittedText.LowerPos(); - } - else - { - if (curCursSel.Length()) - { - returnedPosition = curCursSel.LowerPos(); - } - else - { - if (curCursSel.iCursorPos == 0) - { - returnedPosition = docLength; - } - else - { - returnedPosition = curCursSel.LowerPos() - 1; - } - } - } - break; - case EBackspaceEvent: - if (iFep.IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - returnedPosition = uncommittedText.HigherPos(); - } - else - { - if (curCursSel.Length()) - { - returnedPosition = curCursSel.LowerPos(); - } - else - { - returnedPosition = curCursSel.LowerPos() - 1; - } - } - break; - default: - break; - } - - if (returnedPosition < 0) - { - returnedPosition = 0; - } - else if (returnedPosition > docLength) - { - returnedPosition = docLength; - } - return returnedPosition; - } - - -TBool CAknFepCaseManager::TextCaseRequired(TInt aCursorPos) - { - TBool textCaseRequired = EFalse; - TInt charPosToCheck = aCursorPos - 1; - TChar ch = KSpaceCharacter; - TBuf editorText; - TInt nonEnterSpaceCharCount = 0; - - if (charPosToCheck >= 0) - { - // Get the character just before the cursor. - iFep.FepAwareTextEditor()->GetEditorContentForFep(editorText, - charPosToCheck, CAknFepManager::ESingleCharacter); - ch = editorText[0]; - if ( ch == KInvertedQuestionMarkCharacter || ch == KInvertedExclamationMarkCharacter ) - { - // Text case is required imediatelly after 'spanich' question and exclamation mark that begins a sentence. - textCaseRequired = ETrue; - } - // for chinese uncode limit - if ( ch >= KChineseLowerUnicode && ch<= KChineseUpperUnicode) - { - textCaseRequired = ETrue; - } - - if( ( TUint )ch == KParagraphSeperator || ( TUint )ch == KLineFeed ) - { - // When we have enter key, we need to decide the case after: - // we reach some non space characters (OR) - // we reach the beginning of the editor - while (charPosToCheck > 0 && !textCaseRequired) - { - charPosToCheck--; - iFep.FepAwareTextEditor()->GetEditorContentForFep(editorText, - charPosToCheck, CAknFepManager::ESingleCharacter); - ch = editorText[0]; - - // IsSpace returns true for ParagraphSeperator. - if (!(ch.IsSpace() || ch == EKeyEnter) && nonEnterSpaceCharCount <= 1) - { - if (IsTextCaseCharacter(ch)) - { - textCaseRequired = ETrue; - } - break; - } - else - { - if(!( ( TUint )ch == KParagraphSeperator || ( TUint )ch == EKeyEnter || ( TUint )ch == KLineFeed ) ) - { - // Incrementing the count if we have - // IsSpace() returns True AND - // the character is not a ParagraphSeparator or Enter or Line Feed - nonEnterSpaceCharCount++; - } - if (charPosToCheck <= 0 && !nonEnterSpaceCharCount) - { - //Reached the beginning of the Editor. Text case should be ON - textCaseRequired = ETrue; - } - } - } - charPosToCheck = aCursorPos - 1; - - if (charPosToCheck <= 0 && !nonEnterSpaceCharCount) - { - // If Enter is pressed as the first character. Text case is ON - textCaseRequired = ETrue; - } - - } - - /* Teleca change begin, 27.08.2008 ssal */ - if (IsKoreanCharacter(ch)) - { - textCaseRequired = ETrue; - } - /* Teleca change end, 27.08.2008 ssal */ - } - - - if (charPosToCheck > 0 && !textCaseRequired) - { - if (iFep.IsFeatureSupportedJapanese()) - { - // The character case is changed to text case when the left side - // character is Japanese character. - if (IsJapaneseCharacter(ch)) - { - textCaseRequired = ETrue; - } - else if (ch.IsSpace() || ch == EKeyEnter || - ch == (TUint)KPuaCodeSpaceSymbol) - { - while (charPosToCheck > 0) - { - charPosToCheck--; - // Get the character before the previous character. - iFep.FepAwareTextEditor()->GetEditorContentForFep(editorText, - charPosToCheck, CAknFepManager::ESingleCharacter); - ch = editorText[0]; - if (!(ch.IsSpace() || ch == EKeyEnter || ch == (TUint)KPuaCodeSpaceSymbol)) - { - if (IsTextCaseCharacter(ch)) - { - // One space between the cursor and the punctuation character => text case needed - textCaseRequired = ETrue; - } - break; - } - else if (charPosToCheck <= 0) - { - // reached the start of the editor => text case needed - textCaseRequired = ETrue; - } - } - } - } - else - { - if ( charPosToCheck > 0 && !textCaseRequired && !nonEnterSpaceCharCount) - { - if ( ch.IsSpace() || ch == EKeyEnter || - ch == ( TUint )KPuaCodeSpaceSymbol ) - { - while ( charPosToCheck > 0 ) - { - charPosToCheck--; - - // Get the character before the previous character. - iFep.FepAwareTextEditor()->GetEditorContentForFep(editorText, - charPosToCheck, CAknFepManager::ESingleCharacter); - - ch = editorText[0]; - - // This condition is added to keep Text case ON when space is - // entered after a "New line" character. - if( ( TUint )ch == KParagraphSeperator ) - { - textCaseRequired = ETrue; - break; - } - - if ( !( ch == EKeyEnter || - ch == ( TUint )KPuaCodeSpaceSymbol ) ) - { - if ( IsTextCaseCharacter( ch ) ) - { - textCaseRequired = ETrue; - } - break; - } - else if ( charPosToCheck <= 0 ) - { - // reached the start of the editor => text case needed - textCaseRequired = ETrue; - } - } - } - } - } - } - else if (charPosToCheck < 0) - { - // reached the start of the editor => text case needed - textCaseRequired = ETrue; - } - else // if (charPosToCheck == 0) - { - if (!textCaseRequired && iFep.IsFeatureSupportedJapanese()) - { - if (IsJapaneseCharacter(ch) - || ch.IsSpace() - || ch == EKeyEnter - || ch == (TUint)KPuaCodeSpaceSymbol) - { - // reached the start of the editor => text case needed - textCaseRequired = ETrue; - } - } - } - - return textCaseRequired; - } - - -TBool CAknFepCaseManager::CapsLockRequired(TInt aCursorPos, TInt aCurCase) - { - TBool capsLocked = iForceUpperCase; - TInt charPosToCheck = aCursorPos - 1; - TChar ch = KSpaceCharacter; - TBuf editorText; - - // is the previous character alphabetical? - if (charPosToCheck >= 0) - { - iFep.FepAwareTextEditor()->GetEditorContentForFep(editorText, - charPosToCheck, CAknFepManager::ESingleCharacter); - if( editorText.Length()>0 ) - { - ch = editorText[0]; - } - - if (IsAlpha(ch) || - ((aCurCase == EAknEditorUpperCase || aCurCase == ECaseInverseText) && - !TextCaseRequired(aCursorPos))) - { - // Caps lock (upper case mode) is kept up if we are currently in upper case mode - // and previous character is alpha character or for example full stop. - // If the cursor and full stop is separated with space, text case is restored. - capsLocked = ETrue; - } - } - - return capsLocked; - } - - -void CAknFepCaseManager::DoManualCaseUpdate() - { - TBool applyCaseNeeded = ETrue; - iPreviousCase = iCurrentCase; - TCursorSelection currentSelection; - iFep.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelection); - - switch (iCurrentCase) - { - case EAknEditorLowerCase: - if (CapsLockRequired(currentSelection.iCursorPos, iCurrentCase) - && IsCasePermitted(EAknEditorUpperCase)) - { - SetCurrentCase(EAknEditorUpperCase); - } - else if (!IsCasePermitted(EAknEditorTextCase) -#ifdef RD_HINDI_PHONETIC_INPUT - - || iFep.IsIndicPhoneticInputLanguage() -#endif - ) - { - if( IsCasePermitted(EAknEditorUpperCase) ) - SetCurrentCase(EAknEditorUpperCase); - } - else - { - SetCurrentCase(EAknEditorTextCase); - } - applyCaseNeeded = EFalse; - break; - case EAknEditorTextCase: - if (iForceUpperCase && IsCasePermitted(EAknEditorUpperCase)) - { - SetCurrentCase(EAknEditorUpperCase); - applyCaseNeeded = EFalse; - break; - } - case EAknEditorUpperCase: - SetCurrentCase(EAknEditorLowerCase); - applyCaseNeeded = EFalse; - break; - default: - break; - } - - if (!(IsCasePermitted(iCurrentCase))) - { - DoManualCaseUpdate(); - } - else - { - if (applyCaseNeeded) - { - ApplyCase(); - } - } - } - - -void CAknFepCaseManager::ApplyCase() - { - // update engine... - switch (iCurrentCase) - { - case EAknEditorUpperCase: // fall through - case EAknEditorTextCase: - iFep.SetCase(EUpperCase); - break; - case EAknEditorLowerCase: // fall through - default: - iFep.SetCase(ELowerCase); - break; - } - if(iFep.EditorState()) - { - iFep.EditorState()->SetCurrentCase(iCurrentCase); - } - iFep.UpdateIndicators(); - -#ifdef RD_SCALABLE_UI_V2 - iFep.UpdateTouchCaseMode(); -#endif - } - - -void CAknFepCaseManager::SetFixedCase(TBool aFixedCase) - { - iFixedCase = aFixedCase; - } - - -TBool CAknFepCaseManager::CurrentEditorIsFixedCase() const - { - return iFixedCase; - } - - -TBool CAknFepCaseManager::IsCasePermitted(TInt aCase) const - { - // if current is permitted or current is lower and text is permitted - CAknEdwinState* editorState = iFep.EditorState(); - return ( editorState && ( !editorState->PermittedCases() || - (aCase & editorState->PermittedCases() || - (aCase == EAknEditorLowerCase && - (EAknEditorTextCase & editorState->PermittedCases())))) ); - } - -TBool CAknFepCaseManager::IsTextCaseCharacter(TChar aChar) const - { - TBool ret = EFalse; - if (iTextCaseCharacters.Locate(aChar)!=KErrNotFound) - { - ret = ETrue; - } - else if (JPLangUtil::IsKanji((TText)aChar) - || JPLangUtil::IsHiragana((TText)aChar) - || JPLangUtil::IsKatakana((TText) aChar)) - { - ret = ETrue; - } - return ret; - } - -TBool CAknFepCaseManager::IsAlpha(TChar aChar) const - { - TBool ret = EFalse; - TBool isPicto = EFalse; - - if (iPictoInterface && iPictoInterface->Interface()) - { - isPicto = iPictoInterface->Interface()->IsPictograph((TText)aChar); - } - - if (!( JPLangUtil::IsHiragana((TText)aChar) - || JPLangUtil::IsKanji((TText)aChar) - || JPLangUtil::IsKatakana((TText)aChar) - /* Teleca change begin, 18.08.2009 ssal */ - || IsKoreanCharacter(aChar) - /* Teleca change end, 18.08.2009 ssal */ - || isPicto )) - { - TChar ch = aChar; - if (iFep.IsFeatureSupportedJapanese() && - JPLangUtil::IsFullWidth((TText) ch)) - { - TBuf fullChar; - TBuf halfChar; - fullChar.Append(ch); - if (JPLangUtil::ConvertFullToHalfWidth(fullChar, halfChar)) - { - ch = halfChar[0]; - ret = ch.IsAlpha(); - } - } - else - { - ret = ch.IsAlpha(); - } - } - return ret; - } - -TInt CAknFepCaseManager::PluginPermittedCases() - { - TInt allowedCases = ECaseInvalide; - if ( !(iFep.EditorState()) ) - { - return allowedCases; - } - - TInt editorCases = iFep.EditorState()->PermittedCases(); - - if( editorCases == 0 ) - { - allowedCases = ECaseUpper | ECaseLower | ECaseText | ECaseInverseText; - } - else - { - allowedCases = editorCases; - - if( (editorCases & EAknEditorUpperCase) && - (editorCases & EAknEditorTextCase) ) - { - allowedCases |= ECaseInverseText; - } - } - - return allowedCases; - } - - -// ----------------------------------------------------------------------------- -// CAknFepCaseManager::CapsLockRequired -// -// -// ----------------------------------------------------------------------------- -// -TBool CAknFepCaseManager::CapsLockRequired(TInt aCurrentCase) - { - TCursorSelection currentSelection; - - if (iFep.FepAwareTextEditor()) - { - iFep.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelection); - return CapsLockRequired(currentSelection.iCursorPos, aCurrentCase); - } - - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CAknFepCaseManager::IsJapaneseCharacter -// Determines whether a character is one of Japanese characters -// ----------------------------------------------------------------------------- -// -TBool CAknFepCaseManager::IsJapaneseCharacter(TChar aChar) const - { - TBool ret = EFalse; - // The character case is changed to text case when the left side - // character is Japanese character (Hiragana, Katakana, Kanji, - // Full-width Symbol). - if (JPLangUtil::IsKanji((TText)aChar) - || JPLangUtil::IsHiragana((TText)aChar) - || JPLangUtil::IsKatakana((TText)aChar)) - { - // Hiragana, Katakana, Kanji - ret = ETrue; - } - else if (JPLangUtil::IsFullWidth((TText)aChar) - && aChar != KPuaCodeSpaceSymbol - && aChar != KPuaCodeLineFeedSymbol) - { - if (iFep.InputMode() == ELatin - && iFep.CharacterWidth() == EFullWidthChar) - { - TBuf fullChar; - TBuf halfChar; - fullChar.Append(aChar); - if (JPLangUtil::ConvertFullToHalfWidth(fullChar, halfChar)) - { - TChar ch2 = halfChar[0]; - if (!ch2.IsAlpha()) - { - // Full width Symbol or Number - ret = ETrue; - } - } - else - { - // The character which isn't converted to half is - // special Japanese Symbols. - ret = ETrue; - } - } - else - { - ret = ETrue; - } - } - return ret; - } - -/* Teleca change begin, 18.08.2009 ssal */ -// ----------------------------------------------------------------------------- -// CAknFepCaseManager::IsKoreanCharacter -// Determines whether a character is one of Korean characters -// ----------------------------------------------------------------------------- -// -TBool CAknFepCaseManager::IsKoreanCharacter(TChar aChar) const - { - if ( IsHangulSyllable( aChar) || IsHangulCompatibilityJamo( aChar ) ) - { - return ETrue; - } - return EFalse; - } - -// --------------------------------------------------------------------------- -// Checks that is given character hangul syllable or not. -// --------------------------------------------------------------------------- -// -TBool CAknFepCaseManager::IsHangulSyllable( TChar aChar ) const - { - // Character is 'hangul syllable' - // if it's numeric value is between KSBase and KSBase + KSCount. - TInt index = static_cast ( aChar ) - KSBase; - if ( index < 0 || index >= KSCount ) - { - return EFalse; - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// Checks that is given character hangul syllable or not. -// --------------------------------------------------------------------------- -// -TBool CAknFepCaseManager::IsHangulCompatibilityJamo( TChar aChar ) const - { - // Character is 'hangul compatibility jamo' - // if it's numeric value is between KCBase and KCBase + KCCount. - TInt index = static_cast ( aChar ) - KCBase; - if ( index < 0 || index >= KCCount ) - { - return EFalse; - } - return ETrue; - } - -/* Teleca change end, 18.08.2009 ssal */ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepFnKeyManager.cpp --- a/fep/aknfep/src/AknFepFnKeyManager.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,621 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides CAknFepManager definition -* -*/ - - - - - - - - - - - - -#ifdef _DEBUG -#include -#endif - -#include -#include -#include //CAknEdwinState - -#include "AknFepFnKeyManager.h" -#include "AknFepManager.h" -#include -#include -#include "PtiEngine.h" - - -/*this part is removed -const TUid KPhoneUidAppPhone = { 0x100058B3 }; -const TUid KUidCalc = { 0x10005902 }; -const TUid KUidIdle = { 0x101fd64c }; -*/ -const TStdScanCode stdFnKeyCode(EStdKeyRightFunc); // Defines the std key code for Fn key - -//////////////////////////////////////////////////////////// -// CAknFepFnKeyManager implementation -//////////////////////////////////////////////////////////// -CAknFepFnKeyManager::CAknFepFnKeyManager( CAknFepManager& aFepMan, - CAknFepSharedDataInterface* aSharedDataInterface) -:iFepMan( aFepMan ), - iFnKeyState( EFnKeyNone ), - iIsQwertyMode (EFalse), - iSharedDataInterface(aSharedDataInterface), - iShiftKeyPressed( EFalse ) - { - iIsQwertyMode = iSharedDataInterface->QwertyInputMode(); -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - iWasPreviousModePredictive = iFepMan.WesternPredictive(); -#endif // RD_INTELLIGENT_TEXT_INPUT -#else - iWasPreviousModePredictive = iSharedDataInterface->PredictiveTextOn(); -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - // The CR key KAknFepFnKeyState is reset the Fn key state NONE - iSharedDataInterface->SetFnKeyState(0); - } - -CAknFepFnKeyManager* CAknFepFnKeyManager::NewL( CAknFepManager& aFepMan, - CAknFepSharedDataInterface* aSharedDataInterface) - { - CAknFepFnKeyManager* self = new(ELeave) CAknFepFnKeyManager( aFepMan,aSharedDataInterface ); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -CAknFepFnKeyManager::~CAknFepFnKeyManager() - { - iFnKeyState=EFnKeyNone; - } - -void CAknFepFnKeyManager::ConstructL() - { - } - -void CAknFepFnKeyManager::SetQwertyInputMode(TBool aQwertyState) - { - iIsQwertyMode = aQwertyState; - } -void CAknFepFnKeyManager::ClearFnKeyState() - { - iFnKeyState = EFnKeyNone; - iFepMan.UpdateIndicators(); - } - -CAknFepFnKeyManager::TFnKeyState CAknFepFnKeyManager::FnKeyState() - { - return iFnKeyState; - } - -void CAknFepFnKeyManager::SetFnKeyState(CAknFepFnKeyManager::TFnKeyState aState) - { - TPtiKeyboardType keyboardType = iFepMan.KeyboardLayout(); - //This function is only supported for EFnKeyNext and half Qwerty keypad at the moment. - if(keyboardType == EPtiKeyboardHalfQwerty && EFnKeyNext == iFnKeyState && - aState == EFnKeyNone) - { - - //if(aState == EFnKeyNext && keyboardType == EPtiKeyboardHalfQwerty) - // { - // iFepMan.PtiEngine()->CancelTimerActivity(); - // } - iFnKeyState = aState; - iFepMan.SetCase( (TCase)iPreviousCase ); - iFepMan.UpdateIndicators(); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - else if(keyboardType == EPtiKeyboardQwerty3x11 && EFnKeyNone == iFnKeyState && - aState == EFnKeyLock) - { - UpdatePreviousCase(); - iFnKeyState = aState; - iFepMan.SetCase(EFnKeyLowerCase); - iFepMan.UpdateIndicators(); - } -#endif // RD_INTELLIGENT_TEXT_INPUT -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - //Half QWERTY state uses this to change from EFnKeyNext aFnKeyNone - else if ( iFnKeyState == EFnKeyNone && aState == EFnKeyNext ) - { - // QWERTY long press implementation uses this function to set the Fn state. - UpdatePreviousCase(); - iFnKeyState=EFnKeyNext; - } - -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - // TODO: above piece of code should be simplify. - // Set the Fn Key state - else - { - iFnKeyState = aState; - } - } -TKeyResponse CAknFepFnKeyManager::HandleFnKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType, - TCoeInputCapabilities aInputCapabilities ) - { - - TKeyResponse keyResponse = EKeyWasNotConsumed; - TPtiKeyboardType keyboardType = iFepMan.KeyboardLayout(); - - if(!iIsQwertyMode) - { - return keyResponse; - } - - if(!iFepMan.IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed) && - !iFepMan.IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress) - && iShiftKeyPressed ) - { - iShiftKeyPressed = EFalse; - } - - TInt caseFromFep = iFepMan.GetCurrentCase(); - - TBool lockLater = EFalse; - if( EEventKeyDown == aType ) - { - if( stdFnKeyCode == aKeyEvent.iScanCode ) - { - iFepMan.PtiEngine()->CancelTimerActivity(); - if( iPreviousKeyWasFnKey ) - { - lockLater = ETrue; - } - iPreviousKeyWasFnKey = ETrue; - } - else - { - iPreviousKeyWasFnKey = EFalse; - } - } - if(aKeyEvent.iRepeats && stdFnKeyCode != aKeyEvent.iScanCode && - iFnKeyState == EFnKeyNext) - { - // To fix the bug : Long press of number at the begin of editor. Then enter any character. - // The character is shown in upper case. - if (ELowerCase == caseFromFep) - { - iFepMan.SetCase( (TCase)caseFromFep ); - } - // To Fix Error: Character is NOT entered as per the input mode - // when the character is entered after pressing Shift + Fn + Shift keys - else if(!(EStdKeyRightShift == aKeyEvent.iScanCode || - EStdKeyLeftShift == aKeyEvent.iScanCode)) - { - iFepMan.SetCase( (TCase)iPreviousCase ); - } - -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - // For QWERTY Predictive ----> - if(iWasPreviousModePredictive) - { - // We usually end up here when using the long key press to enter Fn symbols - iFepMan.SetWesternPredictive(ETrue); - iFepMan.TryChangeModeL(ELatin); - } - // For QWERTY Predictive <---- - -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - iFnKeyState = EFnKeyNone; - iFepMan.UpdateIndicators(); - } - - if( stdFnKeyCode == aKeyEvent.iScanCode ) - { - // Consume the function key events. - keyResponse = EKeyWasConsumed; - } - if (iFepMan.IsHybridAplhaEditor()) - keyResponse = EKeyWasNotConsumed; - - - // check for the case when in Half Qwerty and both shift and fn keys are - // pressed and fn key is released while shift is still down - if( EEventKeyUp == aType && - stdFnKeyCode == aKeyEvent.iScanCode && - iShiftKeyPressed && - EPtiKeyboardHalfQwerty == keyboardType ) - { - ClearFnKeyState(); - } - - if( EStdKeyRightShift == aKeyEvent.iScanCode || EStdKeyLeftShift == aKeyEvent.iScanCode ) - { - if( EEventKeyDown == aType ) - { - iShiftKeyPressed = ETrue; - } - if( EEventKeyUp == aType ) - { - iShiftKeyPressed = EFalse; - } - } - - // For Shift key handling. - // Shift Key should be ignored in locked state. - - if( ( EFnKeyNext == iFnKeyState ) - && EEventKeyDown == aType && - ( EStdKeyRightShift == aKeyEvent.iScanCode || EStdKeyLeftShift == aKeyEvent.iScanCode)) - { - // Fnkey event+ shift key event. Change to FnKey Upper case - iFepMan.SetCase( EFnKeyUpperCase ); - if( keyboardType == EPtiKeyboardHalfQwerty ) - { - iFepMan.SetCase( EFnKeyLowerCase ); - } - return EKeyWasNotConsumed; - } - //=================================================== - - // GQF clarification Fn+Shift - // If shift key is hold on, So fn key state should be EFnKeyNext - // So next text mode goes to function upper - if( aType == EEventKeyUp && iShiftKeyPressed && stdFnKeyCode == aKeyEvent.iScanCode) - { - if( EFnKeyPressed == iFnKeyState) - { - iFepMan.PtiEngine()->CancelTimerActivity(); - iFnKeyState=EFnKeyNext; - iFepMan.SetCase( EFnKeyUpperCase ); - } - else if (EFnKeyPressedAgain == iFnKeyState ) - { - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState = EFnKeyLock")); - iFnKeyState = EFnKeyLock; - UpdatePreviousCase(); - iFepMan.SetCase( EFnKeyUpperCase ); - } - else if(EFnKeyDown == iFnKeyState) - { - iFnKeyState = EFnKeyNone; - UpdatePreviousCase(); - iFepMan.SetCase( EUpperCase ); - } - iFepMan.UpdateIndicators(); - } - // Holding shift key, press key just after releasing fn key, - // Fn key state goes to EFnKeyNone mode. - if( aType == EEventKeyUp && iShiftKeyPressed && iFnKeyState==EFnKeyNext && stdFnKeyCode != aKeyEvent.iScanCode && !(EStdKeyRightShift == aKeyEvent.iScanCode || EStdKeyLeftShift == aKeyEvent.iScanCode)) - { - iFnKeyState=EFnKeyNone; - iFepMan.SetCase( EUpperCase ); - iFepMan.UpdateIndicators(); - } - - //==================================================== - - // Fnkey event+ shift key event -> when fn and shift key are kept pressed. - if( (iShiftKeyPressed && EFnKeyNone != iFnKeyState ) ) - { - if( (EFnKeyPressed == iFnKeyState) && - (stdFnKeyCode != aKeyEvent.iScanCode) && - !( EStdKeyRightShift == aKeyEvent.iScanCode || EStdKeyLeftShift == aKeyEvent.iScanCode )) - { - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState = EFnKeyDown")); - iFnKeyState=EFnKeyDown; - } - - // Thre is no Functin shift reverse mode - // So, In shift key press if fn key state is not none - // text case stte is function upper. - if( aType == EEventKeyDown && stdFnKeyCode == aKeyEvent.iScanCode) - { - if ( EFnKeyNext == iFnKeyState ) - { - if(lockLater) - { - //CEikonEnv::Static()->InfoMsg(_L("iFnKeyState = EFnKeyPressedAgain ")); - iFnKeyState=EFnKeyPressedAgain; - } - } - else if ( EFnKeyLock == iFnKeyState ) - { - //CEikonEnv::Static()->InfoMsg(_L("iFnKeyState = EFnKeyDown")); - iFnKeyState=EFnKeyDown; - } - } - iFepMan.SetCase( EFnKeyUpperCase ); - if( keyboardType == EPtiKeyboardHalfQwerty ) - { - iFepMan.SetCase( EFnKeyLowerCase ); - } - iFepMan.UpdateIndicators(); - return EKeyWasNotConsumed; - } - - // Check the input mode of the currently focused editor (when available) - MCoeFepAwareTextEditor* fepAwareTextEditor = aInputCapabilities.FepAwareTextEditor(); - - if ( fepAwareTextEditor && fepAwareTextEditor->Extension1() ) - { - if( EAknEditorNumericInputMode == - ( static_cast( fepAwareTextEditor->Extension1()->State( KNullUid ) ) )->CurrentInputMode() ) - // If number input mode is detected, handle it as number input - // capability with greatest available variation of letters - { - // Use EDialableCharacters since it provides most flexibility for number input - aInputCapabilities.SetCapabilities( TCoeInputCapabilities::EDialableCharacters ); - } - } - - if ( EFnKeyForced != iFnKeyState ) - { - // Handling of Fn key events. - // If Fn key is held down while characters are typed, all following key - // events are exchanged. - // If Fn key is only pressed (key down + key up, not held down), only - // the very next key event is exchanged. - // If the next key event after Fn key is another Fn key event, the - // Fn lock mode is activated. Then all following key events are - // exchanged until the Fn key is pressed again. - - if( EEventKeyDown == aType && stdFnKeyCode == aKeyEvent.iScanCode ) - { - if ( EFnKeyNext == iFnKeyState ) - { - if(lockLater) - { - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState=EFnKeyPressedAgain")); - iFnKeyState=EFnKeyPressedAgain; - } - else - { - iFnKeyState=EFnKeyPressed; - } - } - else if ( EFnKeyLock == iFnKeyState ) - { - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState=EFnKeyDown")); - iFnKeyState=EFnKeyDown; - } - //else - // Sahoo - else if ( EFnKeyDown != iFnKeyState ) - { - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState=EFnKeyPressed")); - iFnKeyState=EFnKeyPressed; - } - iFepMan.UpdateIndicators(); - return keyResponse; - } - // Sahoo - if( EEventKeyDown == aType && EFnKeyPressed == iFnKeyState ) - { - iFnKeyState=EFnKeyDown; - iFepMan.SetCase( EFnKeyLowerCase ); - } -#ifdef __WINS - // NOTE: This following HACK is to ensure working in emulator environment, - // where Alt Gr key seems to send always two separate key events: - // EStdKeyRightFunc and EStdKeyLeftCtrl - if ( EStdKeyLeftCtrl == aKeyEvent.iScanCode ) - { - return; - } - // HACK ends -#endif - - if( EEventKeyUp == aType && stdFnKeyCode == aKeyEvent.iScanCode ) - { - if ( EFnKeyPressedAgain == iFnKeyState ) - { - if(! iFepMan.IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)) - { - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState = EFnKeyLock")); - iFnKeyState = EFnKeyLock; - } - else - { - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState = EFnKeyNext")); - iFepMan.PtiEngine()->CancelTimerActivity(); - iFnKeyState = EFnKeyNext; - } - UpdatePreviousCase(); - iFepMan.ClearFlag(CAknFepManager::EFlagQwertyShiftMode); - iFepMan.SetCase( EFnKeyLowerCase ); - } - else if ( EFnKeyPressed == iFnKeyState ) - { - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState = EFnKeyNext")); - iFepMan.PtiEngine()->CancelTimerActivity(); - iFnKeyState = EFnKeyNext; - - UpdatePreviousCase(); - - // After pressing shift key Press Fn key, - // So its goes to function upper mode - if( iFepMan.IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)) - iFepMan.SetCase( EFnKeyUpperCase ); - else - iFepMan.SetCase( EFnKeyLowerCase ); - } - else - { - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState = EFnKeyNone")); - - // For Shift key handling. - if( EFnKeyDown == iFnKeyState || EFnKeyNext == iFnKeyState ) - { - iFepMan.SetCase( (TCase)iPreviousCase ); - } - iFnKeyState = EFnKeyNone; - } - if( EEventKeyUp == aType && iFnKeyState == EFnKeyNone ) - { - // To fix the bug :Fn key lock. then type a number with short press at begin of - // editor. Now press Fn key to go to Fn none state. - // Press a character. The char is in upper case - if (ELowerCase == caseFromFep) - { - iFepMan.SetCase( (TCase)caseFromFep ); - } - // To Fix Error: Character is NOT entered as per the input mode - // when the character is entered after pressing Shift + Fn + Shift keys - else if(!(EStdKeyRightShift == aKeyEvent.iScanCode || - EStdKeyLeftShift == aKeyEvent.iScanCode)) - { - iFepMan.SetCase( (TCase)iPreviousCase ); - } - } - iFepMan.UpdateIndicators(); - return keyResponse; - } - } - - // Now detect the input mode for telephone and calculator apps -/* if ( aInputCapabilities.IsNone() ) - { // Idle and Calculator do not provide input capabilities at all. - if ( KPhoneUidAppPhone == aCurrentTopAppUid || KUidIdle == aCurrentTopAppUid ) - { - aInputCapabilities.SetCapabilities( TCoeInputCapabilities::EDialableCharacters ); - } - if ( aCurrentTopAppUid == KUidCalc ) - { - aInputCapabilities.SetCapabilities( TCoeInputCapabilities::EWesternNumericReal ); - } - } -*/ - // Now handle the automatic number mode - if ((iFnKeyState != EFnKeyForced) && - ( aInputCapabilities.SupportsWesternNumericIntegerPositive() || - aInputCapabilities.SupportsWesternNumericIntegerNegative() || - aInputCapabilities.SupportsWesternNumericReal() || - aInputCapabilities.SupportsDialableCharacters() ) - ) - { - // If input mode is numeric, Fn key is automated (=forced) - iFnKeyState = EFnKeyForced; - - UpdatePreviousCase(); - - iFepMan.SetCase( EFnKeyLowerCase ); - iFepMan.UpdateIndicators(); - //Forced input mode - // The CR key KAknFepFnKeyState set to Locked - iSharedDataInterface->SetFnKeyState(EFnKeyForced/*=6*/); - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState = EFnKeyForced")); - } -#ifdef __REVERSE_FN_KEY_SUPPORTED - //Reverse Fn Key mapping! - //Just one of the cases for Reverse Fn key mapping! - // There are manu more of these! - if((EFnKeyForced == iFnKeyState && aKeyEvent.iModifiers & EModifierRightFunc ) ) - { - iFepMan.SetCase( (TCase)iPreviousCase ); - iFepMan.SetReverseFnkeyInputMode(ETrue); - } - else if(iFepMan.IsReverseFnkeyInput()) - { - iFepMan.SetReverseFnkeyInputMode(EFalse); - iFepMan.SetCase(EFnKeyLowerCase); - } -#endif //__REVERSE_FN_KEY_SUPPORTED - - // If any of the following states apply, the key event should be exchanged. - if ( EFnKeyPressed == iFnKeyState || - EFnKeyDown == iFnKeyState || - EFnKeyNext == iFnKeyState || - EFnKeyPressedAgain == iFnKeyState || - EFnKeyLock == iFnKeyState || - EFnKeyForced == iFnKeyState ) - { - // For telephone number editor key events for w, p and + must be accepted as is - if( aInputCapabilities.SupportsDialableCharacters() && ( 'W' == aKeyEvent.iScanCode || - 'P' == aKeyEvent.iScanCode || - '+' == aKeyEvent.iScanCode || - 'w' == aKeyEvent.iCode || - 'p' == aKeyEvent.iCode || - '+' == aKeyEvent.iCode) ) - { - return keyResponse; - } - - if( EEventKeyUp == aType ) - { - if ( EFnKeyPressed == iFnKeyState || EFnKeyPressedAgain == iFnKeyState ) - { - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState = EFnKeyDown")); - iFnKeyState = EFnKeyDown; - UpdatePreviousCase(); - - // Fn key hold on and press any key - if( iFepMan.IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)) - iFepMan.SetCase( EFnKeyUpperCase ); - else - iFepMan.SetCase( EFnKeyLowerCase ); - } - - // Debasish MT error fixing - else if( EFnKeyNext == iFnKeyState && iFepMan.IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)) - { - // keep the sate as it is - UpdatePreviousCase(); - iFepMan.SetCase( EFnKeyUpperCase ); - - if( keyboardType == EPtiKeyboardHalfQwerty ) - { - iFepMan.SetCase( EFnKeyLowerCase ); - } - } - else if ( EFnKeyNext == iFnKeyState ) - { - //This has to be done if the keyboard type is not half Qwerty - if(keyboardType == EPtiKeyboardHalfQwerty) - return keyResponse; - CEikonEnv::Static()->InfoMsg(_L("iFnKeyState = EFnKeyNone")); - - // To fix the bug : At begin of editor, press Fn key. Now press a number. - // Now state is FnKeyNone. Type any char. The case is upper. - // For Shift key handling. - if( EFnKeyDown == iFnKeyState || EFnKeyNext == iFnKeyState ) - { - if (ELowerCase == caseFromFep) - { - iFepMan.SetCase( (TCase)caseFromFep ); - } - // To Fix Error: Character is NOT entered as per the input mode - // when the character is entered after pressing Shift + Fn + Shift keys - else if(!(EStdKeyRightShift == aKeyEvent.iScanCode || - EStdKeyLeftShift == aKeyEvent.iScanCode)) - { - iFepMan.SetCase( (TCase)iPreviousCase ); - } - } - iFnKeyState = EFnKeyNone; - } - iFepMan.UpdateIndicators(); - } - } - - return keyResponse; - } - -void CAknFepFnKeyManager::UpdatePreviousCase() - { - iPreviousCase = iFepMan.GetCurrentCase(); - } -// End of File - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepHashKeyManager.cpp --- a/fep/aknfep/src/AknFepHashKeyManager.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1549 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -#include "AknFepHashKeyManager.h" -#include "AknFepManager.h" -#include "AknFepCaseManager.h" -#include "AknFepUiIndicInputManager.h" - -#include -#include -#include - -#include - -//move to class definition -#define EHashKeyTimeout 700000 // 0.7s - -CAknFepHashKeyManager* CAknFepHashKeyManager::NewL(CAknFepManager& aFepMan, - CAknFepCaseManager* aCaseMan) - { - CAknFepHashKeyManager* self = new(ELeave) CAknFepHashKeyManager(aFepMan, aCaseMan); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -CAknFepHashKeyManager::~CAknFepHashKeyManager() - { - delete iHashKeyTimer; - } - -TKeyResponse CAknFepHashKeyManager::HandleKeyEventL(TKeyPressLength aLength) - { - TKeyResponse response = EKeyWasNotConsumed; - - switch (iHashKeyStyle) - { - case EHashKeyStyleWestern: - response = HandleKeyWesternL(aLength); - break; - case EHashKeyStyleChineseWithWestern: - response = HandleKeyWesternWithChineseL(aLength); - break; - case EHashKeyStyleJapanese: - response = HandleKeyJapaneseL(aLength); - break; - case EHashKeyStyleKoreanWithWestern: - response = HandleKeyWesternWithKoreanL(aLength); - break; - default: - break; - } - return response; - } - -void CAknFepHashKeyManager::SetMode(TInt aMode, TBool aWesternPredictive) - { - iMode = aMode; - iWesternPredictive = aWesternPredictive; - } - -void CAknFepHashKeyManager::SetHashKeyStyle(THashKeyStyle aHashKeyStyle) - { - iHashKeyStyle = aHashKeyStyle; - } - -void CAknFepHashKeyManager::CancelHashKeyTimer() - { - if (iHashKeyTimer->IsActive()) - { - iHashKeyTimer->Cancel(); - } - } - -CAknFepHashKeyManager::CAknFepHashKeyManager(CAknFepManager& aFepMan, CAknFepCaseManager* aCaseMan) - :iHashKeyStyle(EHashKeyStyleWestern), - iFepMan(aFepMan), - iCaseMan(aCaseMan) - { - iLanguageChangedOrChangeFromNumberMode = EFalse; - iIndicSelectionLoopIndex = -1; // Cannot use 'iFepMan.WesternPredictive(ELatin);' since FepMan is not completely constructed at the construction of this - } - -void CAknFepHashKeyManager::ConstructL() - { - iHashKeyTimer = CPeriodic::NewL(CActive::EPriorityStandard); - } - -TInt CAknFepHashKeyManager::HashKeyTimerTimeoutCallback(TAny* aObj) - { - STATIC_CAST(CAknFepHashKeyManager*, aObj)->HashKeyTimerTimeout(); - return KErrNone; - } - -void CAknFepHashKeyManager::HashKeyTimerTimeout() - { - iHashKeyTimer->Cancel(); - } - -void CAknFepHashKeyManager::RevertPredictiveTextSettingChangeL() - { - if ( !iFepMan.InputLanguageSupportsCaseChanges() && iFepMan.EditorState()&& - !( iFepMan.EditorState()->Flags() & EAknEditorFlagNoT9) ) - { - // Reverts predictive text settings change made with short key press. - iFepMan.SetWesternPredictive( !iFepMan.WesternPredictive(ELatin) ); - iFepMan.TryChangeModeL(ELatin); - } - } - -TKeyResponse CAknFepHashKeyManager::HandleKeyWesternL(TKeyPressLength aLength) - { - TKeyResponse response = EKeyWasNotConsumed; - TBool phoneIdle = (iFepMan.EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor); - if(phoneIdle) - { - return response; - } - iLastModeNumber = (iMode == ENumber || iMode == ENativeNumber); - - if ( (iMode == ENumber || iMode == ENativeNumber) && !iFepMan.HashKeySelectionInUse()) - { - if (aLength == ELongKeyPress) - { - // Clear the EExtendedFlagShortPressHashKey, only for non numeric only editors - // so as to indicate we are in a long press of hash key event. - // In case of numeric only editor, we should re-simulate hash and let application - // handle it. - - if ( !iFepMan.IsOnlyNumericPermitted() ) - { - iFepMan.ClearExtendedFlag(CAknFepManager::EExtendedFlagShortPressHashKey); - - // Long press of hash key switches to alpha mode - // if it is permitted mode in the editor. - iFepMan.TryChangeToModeBeforeL(); - ResetIndicHashKeyStateL(); - } - response = EKeyWasConsumed; - } - else if (!iFepMan.IsExtendedFlagSet(CAknFepManager::EExtendedFlagShortPressHashKey)) - { - // Set the flag to indicate its a short press of key event - iFepMan.SetExtendedFlag(CAknFepManager::EExtendedFlagShortPressHashKey); - response = EKeyWasConsumed; - } - else - { - // We are not suppose to be here. Just a fail safe check to guard us against - // erroneous situations. - - iFepMan.ClearExtendedFlag(CAknFepManager::EExtendedFlagShortPressHashKey); - } - } - else - { - if ( aLength == EShortKeyPress ) - { - if (iFepMan.HashKeySelectionInUse()) - { - // New style hash key loop when long hash-key press is used for text selection. -#ifndef RD_INTELLIGENT_TEXT_INPUT - // To rip off suggested word completion when user wants to - // switch to number or multitap mode - if(iFepMan.IsAutoCompleteOn()) - { - iFepMan.RemoveSuggestedCompletionL(); - } -#endif //RD_INTELLIGENT_TEXT_INPUT - return HandleKeyWesternSelectionStyleL(aLength); - } - - if ( iLastModeNumber ) - { - // The key should not be consumed in number mode? FEP Manager may - // put special chars into the editor or the key event - // is passed to the editor. - - // But now the event is consumed. Same happens also in - // Chinese languages because # key is reserved for - // other purpose. - response = EKeyWasConsumed; - } - - if(IsIndicHashKeyStyleRequired()) - { - return (SetIndicStateL()); - } - // Traditional hash key loop - if ( iFepMan.InputLanguageSupportsCaseChanges() ) - { - if (iHashKeyTimer->IsActive()) - { - iHashKeyTimer->Cancel(); - iCaseMan->RevertCaseChange(); - // Toggle predictive setting. -#ifndef RD_INTELLIGENT_TEXT_INPUT - // To rip off suggested word completion when user wants to - // switch to number or multitap mode - if(iFepMan.IsAutoCompleteOn()) - { - iFepMan.RemoveSuggestedCompletionL(); - } - -#endif //RD_INTELLIGENT_TEXT_INPUT - iFepMan.SetCcpuFlag(CAknFepManager::ECcpuStataCommitPredictiveWord); - iFepMan.SetWesternPredictive( !iFepMan.WesternPredictive(ELatin) ); - iFepMan.TryChangeModeL(ELatin); - } - else - { - iCaseMan->ManualCaseUpdate(); - iHashKeyTimer->Start(EHashKeyTimeout, EHashKeyTimeout, - TCallBack(HashKeyTimerTimeoutCallback, this)); - } - } - else // Case changes are not allowed. - { - if (iHashKeyTimer->IsActive()) - { - iHashKeyTimer->Cancel(); - // Double press of hash key does not have functionality. - } - else - { - // Toggle predictive setting. -#ifndef RD_INTELLIGENT_TEXT_INPUT - // AutoComplete - Fix - Begin - if(iFepMan.IsAutoCompleteOn()) - { - iFepMan.RemoveSuggestedCompletionL(); - } - // AutoComplete - Fix - End - -#endif //RD_INTELLIGENT_TEXT_INPUT - iFepMan.SetWesternPredictive( !iFepMan.WesternPredictive(ELatin) ); - iFepMan.TryChangeModeL(ELatin); - iHashKeyTimer->Start(EHashKeyTimeout, EHashKeyTimeout, - TCallBack(HashKeyTimerTimeoutCallback, this)); - } - } - response = EKeyWasConsumed; - } - else // Long key press of hash key - { - // Clear EExtendedFlagShortPressHashKey flag as soon as long press happens - iFepMan.ClearExtendedFlag(CAknFepManager::EExtendedFlagShortPressHashKey); - - // Toggle number mode / alpha mode - if (iLastModeNumber && !IsIndicHashKeyStyleRequired() && - !iFepMan.HashKeySelectionInUse()) // For Indic it is handled in SetIndicPreviousStateL() - { - // If short hash key press event is passed to the editor, it - // needs to be removed here from the editor. - - iFepMan.TryChangeToModeBeforeL(); - } - else - { - // Input mode is incremented. - if (!iFepMan.HashKeySelectionInUse()) - { -#ifndef RD_INTELLIGENT_TEXT_INPUT - // To rip off suggested word completion when user wants to switch to number mode - if(iFepMan.IsAutoCompleteOn()) - { - iFepMan.RemoveSuggestedCompletionL(); - } - -#endif //RD_INTELLIGENT_TEXT_INPUT - if(IsIndicHashKeyStyleRequired()) - { - SetIndicPreviousStateL(); - } - else - { - RevertPredictiveTextSettingChangeL(); - } - if( iFepMan.IsSupportNativeNumber()) - { - iFepMan.TryChangeModeL( ENativeNumber ); - } - else - { - iFepMan.TryChangeModeL( ENumber ); - } - } - else if (!iFepMan.IsCcpuFlagSet(CAknFepManager::ECcpuStateEdwinInSelectionMode) && - iFepMan.OkToActivateSelectionMode()) - { - // User wants to select and not to change mode, so cancel the mode change - // caused by initial hash key press. - if(iLastModeNumber && !IsIndicHashKeyStyleRequired()) - { - iFepMan.TryChangeToModeBeforeL(); - } - else - { - SetPreviousSelectionStyleModeL(); - } - iFepMan.SetCcpuFlag(CAknFepManager::ECcpuStateHashDown | - CAknFepManager::ECcpuStateEdwinInSelectionMode | - CAknFepManager::ECcpuStateHashKeyDeleteDone ); - TKeyEvent ccpuStart = {EKeyF21, EStdKeyF21, 0, 0}; - // to enable copy/paste support on cba. We simulate via CCoeEnv - // to avoid fep SimulateKeyEventL adding shift modifiers - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKey); - } - } - response = EKeyWasConsumed; - } - } - return response; - } - - -TKeyResponse CAknFepHashKeyManager::HandleKeyWesternWithChineseL(TKeyPressLength aLength) - { - TKeyResponse response = EKeyWasNotConsumed; - if ( iFepMan.IsOnlyNumericPermitted() ) - { - if ( aLength == ELongKeyPress ) - { - response = EKeyWasConsumed; - if ( iFepMan.HashKeySelectionInUse() ) - { - TText prevCh = iFepMan.PreviousChar(); - if (prevCh == '#') - { - iFepMan.RemovePreviousCharacterL(); - } - } - - iFepMan.SetCcpuFlag( CAknFepManager::ECcpuStateHashDown | - CAknFepManager::ECcpuStateEdwinInSelectionMode ); - TKeyEvent ccpuStart = { EKeyF21, EStdKeyF21, 0, 0 }; - // to enable copy/paste support on cba. We simulate via CCoeEnv - // to avoid fep SimulateKeyEventL adding shift modifiers - CCoeEnv::Static()->SimulateKeyEventL( ccpuStart, EEventKey ); - } - //else let the FEP Man put special chars into the editor - } - else - { - if (aLength == EShortKeyPress) - { - if (iMode == ENumber || iMode == ENativeNumber) - { - iLastModeNumber = ETrue; - } - else - { - iLastModeNumber = EFalse; - } - CAknEdwinState* editorState = iFepMan.EditorState(); - TInt permittedCases = editorState->PermittedCases(); - permittedCases = permittedCases == 0 ? - EAknEditorLowerCase | EAknEditorUpperCase : permittedCases; - if ( iMode == ELatin && (permittedCases & EAknEditorTextCase)) - { - // Latin case update is changed back to automatic if latin - // text case is allowed and the case is changed manually from #-key. - iFepMan.ClearFlag(CAknFepManager::EFlagSupressAutoUpdate); - } - TInt currentCase = iCaseMan->CurrentCase(); - - // Is current latin case last available case. - TBool lastCase = ( ( !(permittedCases & EAknEditorTextCase) && - (( currentCase == EAknEditorLowerCase) || - ( currentCase == EAknEditorUpperCase && - !(permittedCases & EAknEditorLowerCase)) ) || - ( editorState->Flags() & EAknEditorFlagFixedCase) ) || - ( editorState->Flags() & EAknEditorFlagForceTransparentFepModes) ); - - if (iMode == ELatin && - !iFepMan.IsFlagSet(CAknFepManager::EFlagChangeInputMode) && - !lastCase ) - { - // Input mode is still Latin. Only case is updated. - if (permittedCases & EAknEditorTextCase) - { - iCaseMan->ManualCaseUpdate(); - } - else - { - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - } - - // Next time input mode is changed if any text is not entered before. - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - else - { - // Input mode is incremented. - iFepMan.TryIncrementModeL(iMode); - - iFepMan.ClearFlag(CAknFepManager::EFlagChangeInputMode); - - if (iMode == ELatin) // New mode after Increment. - { - if (editorState->Flags() & EAknEditorFlagFixedCase) - { - // Only one fixed case is available. Use it. - iCaseMan->ConfigureCaseStateFromEditorState(); - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - else if (editorState->Flags() & EAknEditorFlagForceTransparentFepModes) - { - // Only lower case is used with find pane. - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - iFepMan.SetFlag(CAknFepManager::EFlagSupressAutoUpdate); - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - else if (permittedCases & EAknEditorTextCase) - { - iCaseMan->SetCurrentCase(EAknEditorTextCase); - iCaseMan->UpdateCase(ENullNaviEvent); - } - else - { - if (permittedCases & EAknEditorUpperCase) - { - iCaseMan->SetCurrentCase(EAknEditorUpperCase); - if ( !(permittedCases & EAknEditorLowerCase)) - { - // We need to move to next input mode since only upper case - // is permitted in Latin input mode. - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - } - else - { - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - } - } - } - } - else // Long keypress - { - if (!iFepMan.HashKeySelectionInUse()) - { - if (iLastModeNumber) - { - iFepMan.TryChangeToModeBeforeL(); - } - else - { - if( iFepMan.IsSupportNativeNumber()) - { - iFepMan.TryChangeModeL( ENativeNumber ); - } - else - { - iFepMan.TryChangeModeL(ENumber); - } - } - } - else if (!iFepMan.IsCcpuFlagSet(CAknFepManager::ECcpuStateEdwinInSelectionMode) && - iFepMan.OkToActivateSelectionMode()) - { - // User wants to select and not to change mode, so cancel the mode change - // caused by initial hash key press. - MPtiLanguage* lang = iFepMan.PtiEngine()->CurrentLanguage(); - TInt inputLang = ELangTest; - if (lang) - { - inputLang = lang->LanguageCode(); - } - const TInt inputMode = iFepMan.InputMode(); - - if ((inputLang == ELangPrcChinese && inputMode == EPinyin) || - (inputLang == ELangTaiwanChinese && inputMode == EZhuyin) || - (inputLang == ELangHongKongChinese && inputMode == EStroke)) - { - // Hash key selection was initiated from number mode, - // return there. - iFepMan.TryChangeModeL(ENumber); - } - else - { - iFepMan.TryChangeToModeBeforeL(); - } - - iFepMan.SetCcpuFlag(CAknFepManager::ECcpuStateHashDown | - CAknFepManager::ECcpuStateEdwinInSelectionMode ); - TKeyEvent ccpuStart = {EKeyF21, EStdKeyF21, 0, 0}; - // to enable copy/paste support on cba. We simulate via CCoeEnv - // to avoid fep SimulateKeyEventL adding shift modifiers - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKey); - } - } - response = EKeyWasConsumed; - } - return response; - } - - -TKeyResponse CAknFepHashKeyManager::HandleKeyJapaneseL(TKeyPressLength aLength) - { - TKeyResponse response = EKeyWasNotConsumed; - if (aLength == ELongKeyPress) - { - response = HandleLongKeypressJapaneseL(); - } - else - { - response = HandleSortKeypressJapaneseL(); - } - return response; - } - -TKeyResponse CAknFepHashKeyManager::HandleLongKeypressJapaneseL() - { - TKeyResponse response = EKeyWasConsumed; - - if (iFepMan.IsOnlyNumericPermitted()) - { - if (iFepMan.HashKeySelectionInUse()) - { - TText prevCh = iFepMan.PreviousChar(); - if (prevCh == '#') - { - iFepMan.RemovePreviousCharacterL(); - } - } - } - - if (iMode == EHiraganaKanji || iMode == ELatin) - { - // predictive input is turned on/off - // Commit string on transitory input - iFepMan.TryCloseUiL(); - - if(iWesternPredictive) - { - iFepMan.TryChangePredictiveInputModeL(EFalse); - } - else - { - iFepMan.TryChangePredictiveInputModeL(ETrue); - } - iFepMan.SetCcpuFlag(CAknFepManager::ECcpuStateChangeToPredictionMode); - } - else if (iMode == EHiragana) - { - // nothing to do - } - else - { - // Input mode is incremented. - iFepMan.TryIncrementModeL(iMode); - if ( iMode == ELatin ) - { - if (iCaseMan->IsAbleChangeCase()) - { - CAknEdwinState* editorState = iFepMan.EditorState(); - TInt permittedCases = editorState->PermittedCases(); - if (permittedCases & EAknEditorTextCase) - { - iCaseMan->SetCurrentCase(EAknEditorTextCase); - iCaseMan->UpdateCase(ENullNaviEvent); - } - else - { - if ( iFepMan.CaseBefore() ) - { - iCaseMan->SetCurrentCase(iFepMan.CaseBefore()); - } - else if (permittedCases & EAknEditorUpperCase) - { - iCaseMan->SetCurrentCase(EAknEditorUpperCase); - if ( !(permittedCases & EAknEditorLowerCase)) - { - // We need to move to next input mode since only upper case - // is permitted in Latin input mode. - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - } - else - { - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - } - } - } - iFepMan.SetCcpuFlag(CAknFepManager::ECcpuStateChangeToPredictionMode); - } - - if (iFepMan.HashKeySelectionInUse() - && !iFepMan.IsCcpuFlagSet(CAknFepManager::ECcpuStateEdwinInSelectionMode) - && iFepMan.OkToActivateSelectionMode()) - { - // User wants to select and not to change mode, so cancel the mode change - // caused by initial hash key press. - SetPreviousSelectionStyleModeL(); - - iFepMan.SetCcpuFlag(CAknFepManager::ECcpuStateHashDown | - CAknFepManager::ECcpuStateEdwinInSelectionMode ); - TKeyEvent ccpuStart = {EKeyF21, EStdKeyF21, 0, 0}; - // to enable copy/paste support on cba. We simulate via CCoeEnv - // to avoid fep SimulateKeyEventL adding shift modifiers - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKey); - } - - return response; - } - -TKeyResponse CAknFepHashKeyManager::HandleSortKeypressJapaneseL() - { - TKeyResponse response = EKeyWasConsumed; - if (iFepMan.IsOnlyNumericPermitted()) - { - response = EKeyWasNotConsumed; - } - else if (iMode == EHiragana) - { - response = EKeyWasConsumed; - } - else if (iFepMan.HashKeySelectionInUse() - && iPreviousSelection) - { - // User wants to select and not to change mode, so not change to input mode - response = EKeyWasConsumed; - iPreviousSelection = EFalse; - } - else - { - CancelHashKeyTimer(); - if ( iMode == ELatin && iCaseMan->IsAbleChangeCase()) - { - // Input mode is incremented. - iFepMan.TryIncrementModeL(iMode); - if (iFepMan.IsQwerty()) - { - if ( iMode == ELatin ) - { - iFepMan.TryIncrementModeL(ENumber); - } - } - } - else if ( iMode == ELatin && !iCaseMan->IsAbleChangeCase() && iFepMan.IsQwerty()) - { - // In Qwerty input and not be able to change case mode, - // Number mode must be skipped. - iFepMan.TryIncrementModeL(ENumber); - } - else - { - // Input mode is incremented. - iFepMan.TryIncrementModeL(iMode); - if ( iMode == ELatin ) - { - if (iCaseMan->IsAbleChangeCase()) - { - CAknEdwinState* editorState = iFepMan.EditorState(); - TInt permittedCases = editorState->PermittedCases(); - if (permittedCases & EAknEditorTextCase) - { - iCaseMan->SetCurrentCase(EAknEditorTextCase); - iCaseMan->UpdateCase(ENullNaviEvent); - } - else - { - if ( iFepMan.CaseBefore() ) - { - iCaseMan->SetCurrentCase(iFepMan.CaseBefore()); - } - else if (permittedCases & EAknEditorUpperCase) - { - iCaseMan->SetCurrentCase(EAknEditorUpperCase); - if ( !(permittedCases & EAknEditorLowerCase)) - { - // We need to move to next input mode since only upper case - // is permitted in Latin input mode. - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - } - else - { - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - } - } - } - } - } - - return response; - } - - -enum - { - EHashPredictionBit = 0x01, - EHashTextCaseBit = 0x02, - EHashUpperCaseBit = 0x04, - EHashLowerCaseBit = 0x08, - EHashNumberModeBit = 0x10, - }; - -enum - { - EHashLatinLowerMode = EHashLowerCaseBit, - EHashLatinUpperMode = EHashUpperCaseBit, - EHashLatinTextMode = EHashTextCaseBit, - EHashPredLowerMode = EHashLowerCaseBit | EHashPredictionBit, - EHashPredUpperMode = EHashUpperCaseBit | EHashPredictionBit, - EHashPredTextMode = EHashTextCaseBit | EHashPredictionBit - }; - -enum - { - EHashIndicMultitapMode, - EHashIndicPredictiveMode, -#ifdef RD_HINDI_PHONETIC_INPUT - EHashIndicPhoneticLowerMode, - EHashIndicPhoneticUpperMode, -#endif - EHashIndicLatinTextMode, - EHashIndicLatinLowerMode, - EHashIndicLatinUpperMode, - EHashNumberMode - - }; -// Here we enumerate possible mode sequences for selection style has key loop. -// Number mode is handled as a special case. This only consumes 24 bytes. -const TInt KNumModesInLoop = 4; -const TUint8 allHashKeyLoops[] = - { - EHashLatinLowerMode, EHashLatinUpperMode, EHashPredLowerMode, EHashPredUpperMode, - EHashLatinUpperMode, EHashLatinLowerMode, EHashPredUpperMode, EHashPredLowerMode, - EHashLatinTextMode, EHashLatinLowerMode, EHashPredTextMode, EHashPredLowerMode, - EHashPredLowerMode, EHashPredUpperMode, EHashLatinLowerMode, EHashLatinUpperMode, - EHashPredUpperMode, EHashPredLowerMode, EHashLatinUpperMode, EHashLatinLowerMode, - EHashPredTextMode, EHashPredLowerMode, EHashLatinTextMode, EHashLatinLowerMode - }; - - -TKeyResponse CAknFepHashKeyManager::HandleKeyWesternSelectionStyleL(TKeyPressLength aLength) - { - TKeyResponse response = EKeyWasNotConsumed; - - if (aLength == EShortKeyPress) - { - if (iFepMan.IsOnlyNumericPermitted()) - { - if (!iFepMan.IsExtendedFlagSet(CAknFepManager::EExtendedFlagShortPressHashKey)) - { - // Set the flag to indicate its a short press of key event - iFepMan.SetExtendedFlag(CAknFepManager::EExtendedFlagShortPressHashKey); - response = EKeyWasConsumed; - } - else - { - iFepMan.ClearExtendedFlag(CAknFepManager::EExtendedFlagShortPressHashKey); - } - return response; - } - - if(IsIndicHashKeyStyleRequired()) - { - return (SetIndicStateL()); - } - - if (!iSelectionLoop) - { - TInt index = 0; - if (iFepMan.WesternPredictive(ELatin)) - { - index += (3 * KNumModesInLoop); - } - - switch (iCaseMan->CurrentCase()) - { - case EAknEditorUpperCase: - index += KNumModesInLoop; - break; - case EAknEditorTextCase: - index += (2 * KNumModesInLoop); - break; - default: - break; - } - - iSelectionLoop = &allHashKeyLoops[index]; - - if (iMode == ENumber || iMode == ENativeNumber) - { - iSelectionLoopIndex = -1; - } - } - - if (!iFepMan.InputLanguageSupportsCaseChanges()) - { - // Jumping by 2 always ignores case change. - iSelectionLoopIndex += 2; - } - else - { - iSelectionLoopIndex++; - } - - if (iSelectionLoopIndex >= 0 && (iSelectionLoop[iSelectionLoopIndex] & EHashPredictionBit) != 0) - { - MPtiLanguage* curLang = iFepMan.PtiEngine()->CurrentLanguage(); - if(!iFepMan.InputLanguageSupportsCaseChanges()) - { - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - if(edit && edit->DocumentLengthForFep() > 0) - { - edit->GetCursorSelectionForFep(iPreviousIndicCursorPosition); - } - - } - if ((curLang && curLang->HasInputMode(EPtiEnginePredictive) == EFalse) || - (iFepMan.EditorState()->Flags() & EAknEditorFlagNoT9)) - { - // If next one would be prediction, but prediction is not allowed, - // skip modes. - iSelectionLoopIndex += 2; - } - } - - if (iSelectionLoopIndex >= KNumModesInLoop) - { - iSelectionLoopIndex = -1; - } - - SetSelectionStyleModeL(); - - response = EKeyWasConsumed; - } - - return response; - } - - -void CAknFepHashKeyManager::SetPreviousSelectionStyleModeL() - { - if(IsIndicHashKeyStyleRequired()) - { - SetIndicPreviousStateL(); - return; - } - if (iFepMan.IsOnlyNumericPermitted() || !iSelectionLoop) - { - // iSelectionLoop is not used in Japanese variant, - // so, it keeps previous selection. - if (!iSelectionLoop) - { - iPreviousSelection = ETrue; - } - return; - } - - if (!iFepMan.InputLanguageSupportsCaseChanges()) - { - // Jumping by 2 always ignores case change. - iSelectionLoopIndex -= 2; - if (iSelectionLoopIndex >= 0 && - (iSelectionLoop[iSelectionLoopIndex] & EHashPredictionBit) == 0 ) - { - - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - if(edit && edit->DocumentLengthForFep() > 0) - { - edit->SetCursorSelectionForFepL(iPreviousIndicCursorPosition); - } - } - } - else - { - iSelectionLoopIndex--; - } - - if (iSelectionLoopIndex >= 0 && - (iSelectionLoop[iSelectionLoopIndex] & EHashPredictionBit) != 0 && - (iFepMan.EditorState()->Flags() & EAknEditorFlagNoT9)) - { - // If next one would be prediction, but prediction is not allowed, - // skip modes. - iSelectionLoopIndex -= 2; - } - - if (iSelectionLoopIndex < -1) - { - // Jump over to the end of list - iSelectionLoopIndex = KNumModesInLoop - 1; - } - - SetSelectionStyleModeL(); - } - - - -void CAknFepHashKeyManager::SetSelectionStyleModeL() - { - TBool wasPredictive = iFepMan.WesternPredictive(); - TBool willBePredictive = EFalse; - - if (iSelectionLoopIndex == -1) - { - // Set number mode. - if( iFepMan.IsSupportNativeNumber()) - { - iFepMan.TryChangeModeL( ENativeNumber ); - } - else - { - iFepMan.TryChangeModeL(ENumber); - } - } - else - { - willBePredictive = (iSelectionLoop[iSelectionLoopIndex] & EHashPredictionBit) != 0; - iFepMan.SetWesternPredictive(willBePredictive); - if (iSelectionLoop[iSelectionLoopIndex] & EHashLowerCaseBit) - { - iCaseMan->SetCurrentCase(EAknEditorLowerCase, ETrue); - } - else if (iSelectionLoop[iSelectionLoopIndex] & EHashUpperCaseBit) - { - // Let case manager to decide whether we use text case or - // upper case. - CAknEdwinState* editorState = iFepMan.EditorState(); - TInt permittedCases = EAknEditorAllCaseModes; - if(editorState) - permittedCases = editorState->PermittedCases(); - if (!(permittedCases&EAknEditorTextCase ) || - iCaseMan->CapsLockRequired(EAknEditorLowerCase)) - { - iCaseMan->SetCurrentCase(EAknEditorUpperCase, ETrue); - } - else - { - iCaseMan->SetCurrentCase(EAknEditorTextCase, ETrue); - } - } - else - { - iCaseMan->SetCurrentCase(EAknEditorTextCase, ETrue); - } - iFepMan.SetFlag(CAknFepManager::EFlagSupressAutoUpdate); - if (!(wasPredictive && willBePredictive)) - { - // Do not do this if this is just case change inside predictive mode, - // otherwise active word will be committed. - iFepMan.SetCcpuFlag(CAknFepManager::ECcpuStataCommitPredictiveWord); - iFepMan.TryChangeModeL(ELatin); - } - iFepMan.ClearFlag(CAknFepManager::EFlagSupressAutoUpdate); - } - } -void CAknFepHashKeyManager::UpdateCaseForIndicHashLoop() - { - switch (iCaseMan->CurrentCase()) - { - case EAknEditorUpperCase: - iIndicSelectionLoopIndex = EHashIndicLatinUpperMode; - break; - case EAknEditorTextCase: - iIndicSelectionLoopIndex = EHashIndicLatinTextMode; - break; - case EAknEditorLowerCase: - iIndicSelectionLoopIndex = EHashIndicLatinLowerMode; - break; - default: - break; - } - } - - -TBool CAknFepHashKeyManager::IsIndicHashKeyStyleRequired() - { - if(TAknFepUiIndicInputManager::IsIndicLangauge(iFepMan.GetInputLanguageFromSharedDataInterface()) -#ifdef RD_HINDI_PHONETIC_INPUT - || TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage( - iFepMan.GetInputLanguageFromSharedDataInterface()) -#endif - ) - { - CAknEdwinState* editorState = iFepMan.EditorState(); - if (editorState && !(editorState->Flags() & EAknEditorFlagLatinInputModesOnly)) - { - return ETrue; - } - } - return EFalse; - } - - -TKeyResponse CAknFepHashKeyManager::SetIndicPreviousStateL() - { - TKeyResponse response = EKeyWasNotConsumed; - if (iFepMan.IsOnlyNumericPermitted()) - { - return response; - } - switch(iIndicSelectionLoopIndex) - { - case EHashIndicMultitapMode: - case EHashIndicPredictiveMode: // fall through - if(iLanguageChangedOrChangeFromNumberMode) - { - if(iFepMan.HashKeySelectionInUse()) - { - iIndicSelectionLoopIndex = EHashNumberMode; - } - else - { - iFepMan.ChangeInputLanguageL(ELangEnglish); - if(iIndicSelectionLoopIndex) // if hindi predictive is on, turn off for english - { - iFepMan.SetWesternPredictive(EFalse); - iFepMan.TryChangeModeL(ELatin); - } - UpdateCaseForIndicHashLoop(); - } - } - else - { - // Reverts predictive text settings change made with short key press. - if(iIndicSelectionLoopIndex) // Meaning predictive state - { - iIndicSelectionLoopIndex = EHashIndicMultitapMode; // change to multitap - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - if(edit && edit->DocumentLengthForFep() > 0) - { - edit->SetCursorSelectionForFepL(iPreviousIndicCursorPosition); - } - } - else - { - iIndicSelectionLoopIndex = EHashIndicPredictiveMode; // change to predictive - } - } - break; -#ifdef RD_HINDI_PHONETIC_INPUT - case EHashIndicPhoneticLowerMode: - case EHashIndicPhoneticUpperMode: - if(iFepMan.WasLastKeyPressAHashKey()) - { - iFepMan.ChangeInputLanguageL(ELangEnglish); - iFepMan.SetWesternPredictive(EFalse); - iFepMan.TryChangeModeL(ELatin); - iLanguageChangedOrChangeFromNumberMode = ETrue; - iIndicSelectionLoopIndex = EHashIndicLatinLowerMode; - } - else - { - if(iIndicSelectionLoopIndex == EHashIndicPhoneticUpperMode) - { - iIndicSelectionLoopIndex = EHashIndicPhoneticLowerMode; - } - else if(iIndicSelectionLoopIndex == EHashIndicPhoneticLowerMode) - { - iIndicSelectionLoopIndex = EHashIndicPhoneticUpperMode; - } - } - break; -#endif - case EHashIndicLatinTextMode: // Text Case - case EHashIndicLatinUpperMode: // Upper Case - case EHashIndicLatinLowerMode: // Lower Case - if(iLanguageChangedOrChangeFromNumberMode) - { - iFepMan.ChangeInputLanguageL(iFepMan.GetInputLanguageFromSharedDataInterface()); - iIndicSelectionLoopIndex = iIndicPredictiveState; - } - else - { - if (iIndicSelectionLoopIndex == EHashIndicLatinLowerMode) - { - iIndicSelectionLoopIndex = EHashIndicLatinUpperMode; - } - else - { - iIndicSelectionLoopIndex = EHashIndicLatinLowerMode; - } - iCaseMan->UpdateCase(ENullNaviEvent); - if(iCaseMan->CurrentCase() == EAknEditorTextCase) - { - iIndicSelectionLoopIndex = EHashIndicLatinTextMode; - } - else - { - iCaseMan->RevertCaseChange(); - } - } - break; - - case EHashNumberMode: - if(iFepMan.HashKeySelectionInUse()) - { - iFepMan.ChangeInputLanguageL(ELangEnglish); - iFepMan.SetWesternPredictive(EFalse); - iFepMan.TryChangeModeL(ELatin); - UpdateCaseForIndicHashLoop(); - } - break; - } - SetIndicSelectionStateL(); - return EKeyWasConsumed; - } - -void CAknFepHashKeyManager::ResetIndicHashKeyStateL() - { - if(IsIndicHashKeyStyleRequired()) - { - TInt editorMode = iFepMan.EditorState()->CurrentInputMode(); - if(editorMode == EAknEditorNumericInputMode) - { - iIndicSelectionLoopIndex = EHashNumberMode; - } - else - { - MPtiLanguage* curLang = iFepMan.PtiEngine()->CurrentLanguage(); - if(curLang && curLang->LanguageCode()!=ELangEnglish ) - { -#ifdef RD_HINDI_PHONETIC_INPUT - if(iFepMan.IsIndicPhoneticInputLanguage()) - { - if(iCaseMan->CurrentCase() == EAknEditorUpperCase) - iIndicSelectionLoopIndex = EHashIndicPhoneticUpperMode; - else - iIndicSelectionLoopIndex = EHashIndicPhoneticLowerMode; - } - else - { -#endif - iIndicPredictiveState = iIndicSelectionLoopIndex = iFepMan.WesternPredictive(ELatin); -#ifdef RD_HINDI_PHONETIC_INPUT - } -#endif - } - else - { - UpdateCaseForIndicHashLoop(); - } - } - } - } - -TKeyResponse CAknFepHashKeyManager::SetIndicStateL() - { - TKeyResponse response = EKeyWasNotConsumed; - - if (iFepMan.IsOnlyNumericPermitted()) - { - return response; - } - - iLanguageChangedOrChangeFromNumberMode = EFalse; - if(iIndicSelectionLoopIndex == -1) - { - iIndicPredictiveState = iIndicSelectionLoopIndex = - (iFepMan.WesternPredictive(ELatin) && - (!( iFepMan.EditorState()->Flags() & EAknEditorFlagNoT9))); - // Cannot be done in constructor as FepMan is not completely initialized - } - - switch(iIndicSelectionLoopIndex) - { - case EHashIndicMultitapMode: - case EHashIndicPredictiveMode: //fall through - - iIndicPredictiveState = iIndicSelectionLoopIndex; // 0 for multitap and 1 for predictive - if(iFepMan.WasLastKeyPressAHashKey() || - ( iFepMan.EditorState()->Flags() & EAknEditorFlagNoT9)) - { - //iFepMan.ChangeInputLanguageL(ELangEnglish); - iFepMan.SetWesternPredictive(EFalse); - iFepMan.TryChangeModeL(ELatin); - iLanguageChangedOrChangeFromNumberMode = ETrue; - iIndicSelectionLoopIndex = EHashIndicLatinLowerMode; - iCaseMan->UpdateCase(ENullNaviEvent); - if(iCaseMan->CurrentCase() == EAknEditorTextCase) - { - iIndicSelectionLoopIndex = EHashIndicLatinTextMode; - } - else - { - iCaseMan->RevertCaseChange(); - } - } - else - { - if(iIndicSelectionLoopIndex) // Meaning predictive state - { - iIndicSelectionLoopIndex = EHashIndicMultitapMode; // change to multitap - } - else - { - if(!( iFepMan.EditorState()->Flags() & EAknEditorFlagNoT9)) - { - iIndicSelectionLoopIndex = EHashIndicPredictiveMode; // change to predictive - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - if(edit && edit->DocumentLengthForFep() > 0) - { - edit->GetCursorSelectionForFep(iPreviousIndicCursorPosition); - } - } - } - } - break; -#ifdef RD_HINDI_PHONETIC_INPUT - case EHashIndicPhoneticLowerMode: - case EHashIndicPhoneticUpperMode: - if(iFepMan.WasLastKeyPressAHashKey()) - { - //iFepMan.ChangeInputLanguageL(ELangEnglish); - iFepMan.SetWesternPredictive(EFalse); - iFepMan.TryChangeModeL(ELatin); - iLanguageChangedOrChangeFromNumberMode = ETrue; - iIndicSelectionLoopIndex = EHashIndicLatinLowerMode; - } - else - { - if(iIndicSelectionLoopIndex == EHashIndicPhoneticUpperMode) - { - iIndicSelectionLoopIndex = EHashIndicPhoneticLowerMode; - } - else if(iIndicSelectionLoopIndex == EHashIndicPhoneticLowerMode) - { - iIndicSelectionLoopIndex = EHashIndicPhoneticUpperMode; - } - } - break; -#endif - case EHashIndicLatinTextMode: // Text Case - case EHashIndicLatinLowerMode: // Lower Case - case EHashIndicLatinUpperMode: // Upper Case - if(iFepMan.WasLastKeyPressAHashKey()) - { - //iFepMan.ChangeInputLanguageL(iFepMan.GetInputLanguageFromSharedDataInterface()); - iLanguageChangedOrChangeFromNumberMode = ETrue; - if(iFepMan.HashKeySelectionInUse()) - { - iIndicSelectionLoopIndex = EHashNumberMode; // change to number - } - else - { -#ifdef RD_HINDI_PHONETIC_INPUT - if(TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage( - iFepMan.GetInputLanguageFromSharedDataInterface())) - { - iIndicSelectionLoopIndex = EHashIndicPhoneticLowerMode; - } - else - { -#endif - iIndicSelectionLoopIndex = iIndicPredictiveState; // change to hindi [multitap or predictive based on previous setting] -#ifdef RD_HINDI_PHONETIC_INPUT - } -#endif - } - } - else - { - switch (iCaseMan->CurrentCase()) - { - case EAknEditorUpperCase: - case EAknEditorTextCase: //fall through - iIndicSelectionLoopIndex = EHashIndicLatinLowerMode; - break; - case EAknEditorLowerCase: - iIndicSelectionLoopIndex = EHashIndicLatinUpperMode; - break; - default: - break; - } - } - break; - - case EHashNumberMode: - if(iFepMan.HashKeySelectionInUse()) - { - iLanguageChangedOrChangeFromNumberMode = ETrue; -#ifdef RD_HINDI_PHONETIC_INPUT - if(TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage( - iFepMan.GetInputLanguageFromSharedDataInterface())) - { - iIndicSelectionLoopIndex = EHashIndicPhoneticLowerMode; - iFepMan.TryChangeModeL(ELatin); - } - else - { -#endif - iIndicSelectionLoopIndex = iIndicPredictiveState; // change to hindi [multitap or predictive based on previous setting] -#ifdef RD_HINDI_PHONETIC_INPUT - } -#endif - } - break; - - default: - break; - } - - SetIndicSelectionStateL(); - return EKeyWasConsumed; - } - - - - -void CAknFepHashKeyManager::SetIndicSelectionStateL() - { - switch(iIndicSelectionLoopIndex) - { - - case EHashIndicMultitapMode: - { - iFepMan.SetWesternPredictive(EFalse); - iFepMan.TryChangeModeL(EHindi); - } - break; - - case EHashIndicPredictiveMode: - if(!( iFepMan.EditorState()->Flags() & EAknEditorFlagNoT9)) // make sure predictive is supported for editor - { - iFepMan.SetWesternPredictive(ETrue); - iFepMan.TryChangeModeL(EHindi); - } - break; -#ifdef RD_HINDI_PHONETIC_INPUT - case EHashIndicPhoneticLowerMode: - iCaseMan->SetCurrentCase(EAknEditorLowerCase, ETrue); - break; - - case EHashIndicPhoneticUpperMode: - iCaseMan->SetCurrentCase(EAknEditorUpperCase, ETrue); - break; -#endif - case EHashIndicLatinTextMode: - iCaseMan->SetCurrentCase(EAknEditorTextCase, ETrue); - break; - - case EHashIndicLatinUpperMode: - iCaseMan->SetCurrentCase(EAknEditorUpperCase, ETrue); - break; - - case EHashIndicLatinLowerMode: - iCaseMan->SetCurrentCase(EAknEditorLowerCase, ETrue); - break; - - case EHashNumberMode: - if( iFepMan.IsSupportNativeNumber()) - { - iFepMan.TryChangeModeL(ENativeNumber); - } - else - { - iFepMan.TryChangeModeL(ENumber); - } - break; - default: - break; - } - } - -void CAknFepHashKeyManager::ResetPreviousSelectionStyleMode() - { - iPreviousSelection = EFalse; - } -#ifdef RD_HINDI_PHONETIC_INPUT -void CAknFepHashKeyManager::HandleSetIndicStateL() - { - //calling SetIndicStateL only if currently it is in upper mode - if(iIndicSelectionLoopIndex == EHashIndicPhoneticUpperMode) - SetIndicStateL(); - } -#endif - -TKeyResponse CAknFepHashKeyManager::HandleKeyWesternWithKoreanL(TKeyPressLength aLength) - { - TKeyResponse response = EKeyWasNotConsumed; - - if(iMode == ELatin) - { - iFepMan.SetWesternPredictive(EFalse); - } - - if (iFepMan.IsOnlyNumericPermitted()) - { - if (aLength == ELongKeyPress) - { - TText prevCh = iFepMan.PreviousChar(); - if (prevCh == '#') - { - iFepMan.RemovePreviousCharacterL(); - } - - response = EKeyWasConsumed; - } - //else let the FEP Man put special chars into the editor - } - else - { - if (aLength == EShortKeyPress) - { - if (iMode == ENumber) - { - response = EKeyWasNotConsumed; - return response; - } - } - else // Long keypress - { - if (iMode == ENumber) - { - iLastModeNumber = ETrue; - - TText prevCh = iFepMan.PreviousChar(); - if (prevCh == '#') - { - iFepMan.RemovePreviousCharacterL(); - } - } - else - { - iLastModeNumber = EFalse; - } - - CAknEdwinState* editorState = iFepMan.EditorState(); - TInt permittedCases = editorState->PermittedCases(); - permittedCases = permittedCases == 0 ? - EAknEditorLowerCase | EAknEditorUpperCase : permittedCases; - if ( iMode == ELatin && (permittedCases & EAknEditorTextCase)) - { - // Latin case update is changed back to automatic if latin - // text case is allowed and the case is changed manually from #-key. - iFepMan.ClearFlag(CAknFepManager::EFlagSupressAutoUpdate); - } - TInt currentCase = iCaseMan->CurrentCase(); - - // Is current latin case last available case. - TBool lastCase = ( ( !(permittedCases & EAknEditorTextCase) && - (( currentCase == EAknEditorLowerCase) || - ( currentCase == EAknEditorUpperCase && - !(permittedCases & EAknEditorLowerCase)) ) || - ( editorState->Flags() & EAknEditorFlagFixedCase) ) || - ( editorState->Flags() & EAknEditorFlagForceTransparentFepModes) ); - - if (iMode == ELatin && - !iFepMan.IsFlagSet(CAknFepManager::EFlagChangeInputMode) && - !lastCase ) - { - // Input mode is still Latin. Only case is updated. - if (permittedCases & EAknEditorTextCase) - { - iCaseMan->ManualCaseUpdate(); - } - else - { - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - } - - // Next time input mode is changed if any text is not entered before. - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - else - { - // Do not change mode, if text selection is ongoing. - if(!iFepMan.IsCcpuFlagSet(CAknFepManager::ECcpuStateEdwinInSelectionMode)) - { - // Input mode is incremented. - iFepMan.TryIncrementModeL(iMode); - - - iFepMan.ClearFlag(CAknFepManager::EFlagChangeInputMode); - - if (iMode == ELatin) // New mode after Increment. - { - if (editorState->Flags() & EAknEditorFlagFixedCase) - { - // Only one fixed case is available. Use it. - iCaseMan->ConfigureCaseStateFromEditorState(); - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - else if (editorState->Flags() & EAknEditorFlagForceTransparentFepModes) - { - // Only lower case is used with find pane. - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - iFepMan.SetFlag(CAknFepManager::EFlagSupressAutoUpdate); - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - else if (permittedCases & EAknEditorTextCase) - { - iCaseMan->SetCurrentCase(EAknEditorTextCase); - iCaseMan->UpdateCase(ENullNaviEvent); - } - else - { - if (permittedCases & EAknEditorUpperCase) - { - iCaseMan->SetCurrentCase(EAknEditorUpperCase); - if ( !(permittedCases & EAknEditorLowerCase)) - { - // We need to move to next input mode since only upper case - // is permitted in Latin input mode. - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - } - else - { - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - iFepMan.SetFlag(CAknFepManager::EFlagChangeInputMode); - } - } - } - } - } - } - response = EKeyWasConsumed; - } - return response; - } -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepInlineTextDecorator.cpp --- a/fep/aknfep/src/AknFepInlineTextDecorator.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,229 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -// CAknFepInlineTextDecorator class -// -#include - -#include "AknFepInlineTextDecorator.h" -#include "AknFepManager.h" - -#ifdef _DEBUG -#include "AknFepPanic.h" -#endif - -void CAknFepInlineTextDecorator::DecorateInlineText( - const TDesC& aInlineText, - TDes& aDecoratedText, - TInt& aPositionOfInsertionPointInInlineText, - TChar aPreviousCharacter, - TBool aRTLParagraph, - TBool aInputDirectionIsRTL) - { - DecorateNeutralCharacters(aInlineText, aDecoratedText, aPositionOfInsertionPointInInlineText, - aPreviousCharacter, aRTLParagraph, aInputDirectionIsRTL); - } - -/** -* This routine performs a consolidation of directional markers in the region around text being committed. -* It returns EFalse if no change has been made to the buffer. -*/ -TBool CAknFepInlineTextDecorator::ResolveDecoratedText( - TDes& aDecoratedTextPlusSurroundings, - TCursorSelection aDecoratedTextSpan) - { - TBool needsResolving(EFalse); // Return value - - // Note that this is a copy of a part of the buffer and that aNewTextSpan is relative to this - // new buffer, not the whole text buffer. - // aNewTextSpan must fit within the descriptor; that is from 0 to length-1 - // But remember that span is a span; indices refer to positions between characters. 0 is position just before 0 - // 1 is a position between 0 and character 1. - __ASSERT_DEBUG(aDecoratedTextSpan.LowerPos() >= 0, - AknFepPanic(EAknFepPanicCharPosOutOfRange) ); - __ASSERT_DEBUG(aDecoratedTextSpan.HigherPos() <= aDecoratedTextPlusSurroundings.Length(), - AknFepPanic(EAknFepPanicCharPosOutOfRange) ); - - // Examine the decorated text for real content - TBool cont = EFalse; - TInt ii = 0; - for (ii = aDecoratedTextSpan.LowerPos(); ii < aDecoratedTextSpan.HigherPos(); ii++) - { - if (!CharacterIsDirectionalMarker(aDecoratedTextPlusSurroundings[ii])) - cont = ETrue; - } - // if all we have entered are directional markers we want - // to keep them so do nothing and return - if (!cont) - return needsResolving; // Uses initialized value of return value. Please maintain. - - ii = 0; - while (ii < aDecoratedTextPlusSurroundings.Length()) - { - TChar prevCh = ENullChar; - if (ii > 0) - prevCh = aDecoratedTextPlusSurroundings[ii-1]; - TChar ch = aDecoratedTextPlusSurroundings[ii]; - TChar nextCh = ENullChar; - if (ii < aDecoratedTextPlusSurroundings.Length()-1) - nextCh = aDecoratedTextPlusSurroundings[ii+1]; - - if (CharacterIsDirectionalMarker(ch)) - { - // Remove a marker if : - // - // 1. previous character is strong and has the same directionality - // 2. next character is a marker of the same type (remove both) - // 3. next character is strong and has the same directionality - // - if (CharactersHaveSameStrongDirection(ch, prevCh)) - { - aDecoratedTextPlusSurroundings.Delete(ii, ESingleCharacter); - ii--; - needsResolving = ETrue; - } - else if (CharacterIsDirectionalMarker(nextCh) && CharactersHaveSameStrongDirection(ch, nextCh)) - { - aDecoratedTextPlusSurroundings.Delete(ii, ETwoCharacters); - ii--; - needsResolving = ETrue; - } - else if (CharactersHaveSameStrongDirection(ch, nextCh)) - { - aDecoratedTextPlusSurroundings.Delete(ii, ESingleCharacter); - ii--; - needsResolving = ETrue; - } - } - ii++; - } - return needsResolving; - } - - -TBool CAknFepInlineTextDecorator::CharacterIsDirectionalMarker(TChar aChar) - { - return (aChar == ELeftToRightMark || aChar == ERightToLeftMark); - } - -TBool CAknFepInlineTextDecorator::CharacterIsStrongLeftToRight(TChar aChar) - { - return (aChar.GetBdCategory() == TChar::ELeftToRight || - aChar == ELeftToRightMark); - } - -TBool CAknFepInlineTextDecorator::CharacterIsStrongRightToLeft(TChar aChar) - { - return ((aChar.GetBdCategory() == TChar::ERightToLeft) || - (aChar.GetBdCategory() == TChar::ERightToLeftArabic) || - aChar == ERightToLeftMark); - } - -TBool CAknFepInlineTextDecorator::CharactersHaveSameStrongDirection(TChar aCh1, TChar aCh2) - { - return ((CharacterIsStrongLeftToRight(aCh1) && CharacterIsStrongLeftToRight(aCh2)) || - (CharacterIsStrongRightToLeft(aCh1) && CharacterIsStrongRightToLeft(aCh2))); - } - -TBool CAknFepInlineTextDecorator::CharacterIsWeaklyDirectional(TChar aChar) - { - return ((aChar.GetBdCategory() == TChar::EEuropeanNumber) || - (aChar.GetBdCategory() == TChar::EEuropeanNumberSeparator) || - (aChar.GetBdCategory() == TChar::EEuropeanNumberTerminator) || - (aChar.GetBdCategory() == TChar::EArabicNumber) || - (aChar.GetBdCategory() == TChar::ECommonNumberSeparator)); - } - -TBool CAknFepInlineTextDecorator::CharacterIsSeparator(TChar aChar) - { - return ((aChar.GetBdCategory() == TChar::EParagraphSeparator) || - (aChar.GetBdCategory() == TChar::ESegmentSeparator)); - } - -TBool CAknFepInlineTextDecorator::CharacterIsNeutral(TChar aChar) - { - return ((aChar.GetBdCategory() == TChar::EWhitespace) || - (aChar.GetBdCategory() == TChar::EOtherNeutral)); - } - -void CAknFepInlineTextDecorator::DecorateNeutralCharacters( - const TDesC& aInlineText, - TDes& aDecoratedText, - TInt& aPositionOfInsertionPointInInlineText, - TChar aPreviousCharacter, - TBool aRTLParagraph, - TBool aInputDirectionIsRTL) - { - - TChar curCh; - TChar prevCh = aPreviousCharacter; - TBuf insertBuf(ESingleCharacter); - - for (TInt ii = 0; ii < aInlineText.Length(); ii++) - { - curCh = aInlineText[ii]; - aDecoratedText.Append(curCh); - - if (CharacterIsNeutral(curCh)) - { - // mark the neutral character with appropriate direction markers if : - // - // 1. the input mode (lang) is opposed to the paragraph direction and - // previous character is not neutral - // 2. the input mode (lang) is opposed to the previous char direction - // (=> charcater is entered inside existing block) - // - // Note that we need to increment the insertion point by 2 if the - // markers are inserted before it - // - if ((aInputDirectionIsRTL && !aRTLParagraph && !CharacterIsNeutral(prevCh)) || - (aInputDirectionIsRTL && CharacterIsStrongLeftToRight(prevCh))) - { // mark neutral with RLM - insertBuf[0]=ERightToLeftMark; - aDecoratedText.Insert(aDecoratedText.Length() -1, insertBuf); - aDecoratedText.Append(insertBuf); - - if (aPositionOfInsertionPointInInlineText > ii) - aPositionOfInsertionPointInInlineText+=ETwoCharacters; - } - - else if ((!aInputDirectionIsRTL && aRTLParagraph && !CharacterIsNeutral(prevCh)) || - (!aInputDirectionIsRTL && CharacterIsStrongRightToLeft(prevCh))) - { // mark neutral with LRM - insertBuf[0]=ELeftToRightMark; - aDecoratedText.Insert(aDecoratedText.Length() -1, insertBuf); - aDecoratedText.Append(insertBuf); - - if (aPositionOfInsertionPointInInlineText > ii) - aPositionOfInsertionPointInInlineText+=ETwoCharacters; - } - } - prevCh = curCh; - } - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepInputStateInitialChineseGenericHalfQwerty.cpp --- a/fep/aknfep/src/AknFepInputStateInitialChineseGenericHalfQwerty.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,456 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the AknFepUiInputStateInitialChineseGenericHalfQwerty methods. -* -*/ - - - - - - - - - - - -#include "AknFepUiInputStateInitialChineseGenericHalfQwerty.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" //FepMan flag - -#include -#include - -const TInt KFnMappedCharacters = 5; -_LIT(KEmotionSmile, "\x003A\x0029");//:) -_LIT(KEmotionLaugh, "\x003A\x0050");//:P -_LIT(KEmotionSad, "\x003A\x0028");//:( -_LIT(KSpace," "); - -// --------------------------------------------------------------------------- -// TAknFepInputStateInitialChineseGenericHalfQwerty::TAknFepInputStateInitialChineseGenericHalfQwerty -// the construt funtion -// --------------------------------------------------------------------------- -// -TAknFepInputStateInitialChineseGenericHalfQwerty -::TAknFepInputStateInitialChineseGenericHalfQwerty(MAknFepUIManagerStateInterface* aOwner, TInt /*aMode*/) - :TAknFepInputStateHalfQwerty(aOwner) - { - iState = EInitial; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TPtiTextCase caseMode = ptiengine->Case(); - ptiengine->ClearCurrentWord(); - ptiengine->SetInputMode(EPtiEngineHalfQwerty); - ptiengine->SetCase(caseMode); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateInitialChineseGenericHalfQwerty::HandleKeyL -// handle key event -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateInitialChineseGenericHalfQwerty::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - if ( !fepMan->EditorHasFreeSpace() && fnKeyState ) - { - return EFalse; - } - - if ( aKey == EPtiKeyQwerty0 ) - { - aKey = EPtiKeyQwertySpace; - } - - if (iData && (iData != aKey) && aKey != EStdKeyBackspace ) - { - ptiengine->CancelTimerActivity(); - ptiengine->ClearCurrentWord(); - fepMan->ClearFlag( CAknFepManager::EFlagInsideMultitapInlineEditingTransaction ); - iData = 0; - if ( fnKeyState == CAknFepFnKeyManager::EFnKeyNext ) - { - fepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone ); - fnKeyState = CAknFepFnKeyManager::EFnKeyNone; - } - } - - if( aKey == EStdKeyLeftFunc && !fnKeyState) //chr key - { - fepMan->LaunchSelectModeMenuL(); - } - else if ( HandleEmotionKeyL( aKey, aLength ) ) - { - return ETrue; - } - else if ( fnKeyState == CAknFepFnKeyManager::EFnKeyNone && (aKey - == EPtiKeyQwertyLeftShift || aKey == EStdKeyF21 ) ) - { - return EFalse; - } - else if ( aKey == EStdKeyLeftArrow || aKey == EStdKeyRightArrow || aKey - == EStdKeyUpArrow || aKey == EStdKeyDownArrow || aKey - == EStdKeyBackspace ) - { - if ( fepMan->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed ) - && fnKeyState ) - { - return ETrue; - } - else - { - if ( fnKeyState == CAknFepFnKeyManager::EFnKeyNext ) - { - fepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone ); - } - return EFalse; - } - } - else if ( aKey == EStdKeyDevice0 || aKey == EStdKeyDevice1 || - aKey == EStdKeyDevice2 ) - { - return EFalse; - } - else if ( aLength == EShortKeyPress - && fepMan->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed ) - && aKey != EStdKeyLeftShift ) - { - return ETrue; - } - else if ( ( IsCharacter( aKey ) && aLength == EShortKeyPress ) - && !fepMan->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) - && !fepMan->IsFlagSet( CAknFepManager::EFlagQwertyShiftMode ) - && !fnKeyState ) - { - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - if ( iOwner->IsValidChineseInputKeyQwerty( aKey ) ) - { - if(iOwner->ChangeState(EEntry) == EEntry) - { - iOwner->FepMan()->SendUIActivatedNotification(); - } - } - else if( aLength == EShortKeyPress ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - } - else if ( fepMan->IsFlagSet( CAknFepManager::EFlagQwertyShiftMode ) - && fepMan->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) ) - { - ret = ETrue; - } - else if ( aKey == EPtiKeyQwertyApostrophe && aLength == ELongKeyPress ) - { - ret = ETrue; - } - else if (IsSCTKey(aKey)) - { - HandleKeyByShiftOrCharPressedL(aKey,aLength); - if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringChrKeyPress); - } - ret = ETrue; - } - else if( aKey == EStdKeySpace ) - { - if ( aLength == EShortKeyPress) - { - fepMan->StartInlineEditL(); - fepMan->UpdateInlineEditL( KSpace, 0 ); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - } - } - else - { - TPtrC text; - TBuf allFnMappedCharacters; - ptiengine->MappingDataForKey( (TPtiKey)aKey, - allFnMappedCharacters, EPtiCaseFnLower ); - text.Set( allFnMappedCharacters ); - if ( text.Length() > 0 ) - { - TBuf<1> chr; - chr.Append( text[0] ); - fepMan->RemovePreviousCharacterL(); - fepMan->NewCharacterL( chr ); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - } - ptiengine->ClearCurrentWord(); - iData = 0; - } - } - ret = ETrue; - } - else - { - ret = TAknFepInputStateHalfQwerty::HandleKeyL( aKey, aLength ); - if ( fnKeyState == CAknFepFnKeyManager::EFnKeyNext && !IsMultitapkey( aKey ) ) - { - fepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone ); - } - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateInitialChineseGenericHalfQwerty::IsSCTKey -// to check whether the key is sct key -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateInitialChineseGenericHalfQwerty::IsSCTKey(TInt aKey) - { - TBool response = EFalse; - switch (iOwner->FepMan()->InputMode()) - { - case EPinyin: - break; - case EStroke: - case EZhuyin: - if (aKey == EPtiKeyQwertyQ ||aKey == EPtiKeyQwertyA ||aKey - == EPtiKeyQwertyZ ||aKey == EPtiKeyQwertyO ||aKey - == EPtiKeyQwertyL) - { - response = ETrue; - } - break; - case EStrokeFind: - case EZhuyinFind: - if (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) - { - response = ETrue; - } - break; - } - if ( (/*aKey == EStdKeyFullStop || */aKey == EStdKeySpace ) - && iOwner->FepMan()->FnKeyState() ) - { - response = ETrue; - } - return response; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateInitialChineseGenericHalfQwerty::IsCharacter -// to check whether the key stroke is a character key or not -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateInitialChineseGenericHalfQwerty::IsCharacter(TInt aKey) - { - TBool response = EFalse; - switch (iOwner->FepMan()->InputMode()) - { - case EPinyin: - if (( aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ ) || - ( aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9 ) ) - { - response = ETrue; - } - break; - case EStroke: - case EStrokeFind: - if ((aKey == EPtiKeyQwertyE ||aKey == EPtiKeyQwertyT ||aKey - == EPtiKeyQwertyU ||aKey == EPtiKeyQwertyD ||aKey - == EPtiKeyQwertyG ||aKey == EPtiKeyQwertyJ ) || - (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty6)) - { - response = ETrue; - } - break; - case EZhuyin: - if ( (aKey == EPtiKeyQwertyE ||aKey == EPtiKeyQwertyT ||aKey - == EPtiKeyQwertyU ||aKey == EPtiKeyQwertyD ||aKey - == EPtiKeyQwertyG ||aKey == EPtiKeyQwertyJ ||aKey - == EPtiKeyQwertyC ||aKey == EPtiKeyQwertyB ||aKey - == EPtiKeyQwertyM ||aKey == EPtiKeyQwertySpace ) || - (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9)) - { - response = ETrue; - } - break; - } - return response; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateInitialChineseGenericHalfQwerty::HandleKeyByShiftOrCharPressedL -// Handle the shift key envent -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateInitialChineseGenericHalfQwerty::HandleKeyByShiftOrCharPressedL( - TInt aKey, TKeyPressLength aLength) - { - TBool ret = EFalse; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringShiftKeyPress); - TPtiTextCase caseMode = EPtiCaseLower; - TBool setfnstate = EFalse; - if (fepMan->IsOnlyNumericPermitted()) - { - return ret; - } - TPtiTextCase shiftedCase = caseMode; - if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)) - { - shiftedCase = EPtiCaseUpper; - } - if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) ) - { - shiftedCase = EPtiCaseChrLower; - } - if ( fepMan->FnKeyState() ) - { - shiftedCase = EPtiCaseFnLower; - } - if ( aKey == EPtiKeyQwertyQ ||aKey == EPtiKeyQwertyA ||aKey - == EPtiKeyQwertyZ ||aKey == EPtiKeyQwertyO ||aKey == EPtiKeyQwertyL ) - { - shiftedCase = EPtiCaseFnLower; - setfnstate = ETrue; - } - ptiengine->SetCase(shiftedCase); - TPtrC text; - text.Set(ptiengine->AppendKeyPress((TPtiKey)aKey)); - if (text.Length()) - { - if ( aLength == ELongKeyPress && !iOwner->FepMan()->FnKeyState() ) - { - fepMan->RemovePreviousCharacterL(); - } - TBuf<1> chr; - for (TInt jj = 0; jj < text.Length(); jj++) - { - chr.Zero(); - chr.Append( text[jj] ); - fepMan->NewCharacterL( chr ); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - } - ptiengine->ClearCurrentWord(); - } - ret = ETrue; - } - if(setfnstate && fepMan->FnKeyState() == CAknFepFnKeyManager::EFnKeyNext ) - { - ptiengine->SetCase(EPtiCaseLower); - } - - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - if(fnKeyState == CAknFepFnKeyManager::EFnKeyNext) - fepMan->SetFnKeyState(CAknFepFnKeyManager::EFnKeyNone); - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateInitialChineseGenericHalfQwerty::HandleEmotionKeyL -// Handle the emotion key envent -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateInitialChineseGenericHalfQwerty::HandleEmotionKeyL( TInt aKey, TKeyPressLength aLength ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool ret = EFalse; - TPtrC emotion; - if ( ( aKey != EPtiKeyQwerty7 && - aKey != EPtiKeyQwerty8 && - aKey != EPtiKeyQwerty9 ) || - fepMan->FnKeyState()) - { - return EFalse; - } - if ( EStroke == fepMan->InputMode() || EStrokeFind == fepMan->InputMode() ) - { - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - return ETrue; - } - else - { - switch ( aKey ) - { - case EPtiKeyQwerty7: - emotion.Set( KEmotionSmile ); - ret = ETrue; - break; - case EPtiKeyQwerty8: - emotion.Set( KEmotionLaugh ); - ret = ETrue; - break; - case EPtiKeyQwerty9: - emotion.Set( KEmotionSad ); - ret = ETrue; - break; - default: - break; - } - } - } - if ( ret ) - { - if ( aLength == EShortKeyPress) - { - fepMan->NewTextL(emotion); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - } - } - else - { - for( TInt i=0; iRemovePreviousCharacterL(); - } - fepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNext ); - fepMan->PtiEngine()->SetCase( EPtiCaseFnLower ); - return EFalse; - } - } - return ret; - } - -TBool TAknFepInputStateInitialChineseGenericHalfQwerty::IsMultitapkey( TInt aKey ) - { - TBool ret = EFalse; - if ( aKey == EStdKeyLeftFunc || aKey == EPtiKeyQwertyLeftShift || - aKey == EStdKeyFullStop ) - { - ret = ETrue; - } - return ret; - } -//end of the file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepKeyCatcher.cpp --- a/fep/aknfep/src/AknFepKeyCatcher.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,771 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepKeyCatcher methods. -* -*/ - - - - - - - - - - - - -#include -#include //iEikonEnv -#include //keys -#include //keys - -#include "AknFepKeyCatcher.h" -#include "AknFepManager.h" -#include "AknFepGlobalEnums.h" -#include "AknFepPanic.h" -#include "AknFepPluginManager.h" -#include -#include -#include //keys -#include //FeatureManager -#include - -LOCAL_C void FepObserverHandleCompletionOfTransactionL(MCoeFepObserver& aFepObserver) - { - aFepObserver.HandleCompletionOfTransactionL(); - } - -CAknFepKeyCatcherInterface::~CAknFepKeyCatcherInterface() - { - } - -void CAknFepKeyCatcherInterface::HandleChangeInFocus() - { - } - -CAknFepKeyCatcher* CAknFepKeyCatcher::NewL(CAknFepManager& aFepMan) - { - CAknFepKeyCatcher* self=new(ELeave) CAknFepKeyCatcher(aFepMan); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); //self - return self; - } - -CAknFepKeyCatcher::~CAknFepKeyCatcher() - { - CloseWindow(); - if(NULL != iEikonEnv->EikAppUi()) - { - iEikonEnv->EikAppUi()->RemoveFromStack(this); -#ifdef RD_SCALABLE_UI_V2 - (CEikonEnv::Static())->RemoveMessageMonitorObserver(*this); -#endif //RD_SCALABLE_UI_V2 - } - } - -TKeyResponse CAknFepKeyCatcher::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode) - { - -#ifdef RD_SCALABLE_UI_V2 - if (aEventCode == EEventKeyUp && - aKeyEvent.iScanCode == EStdKeyNo) - { - iFepMan.HandleEndKeyL(); - } -#endif //RD_SCALABLE_UI_V2 - // Temporary solution for Disable key tone when press key in Virtual ITUT - iFepMan.NeedDisableKeySound(aKeyEvent, aEventCode); - // sort out if we're doing long or short presses... - TKeyPressLength length = aKeyEvent.iRepeats ? ELongKeyPress : EShortKeyPress; - if (iKeyCatcherState == EAknFepStateNull) - { - if (aEventCode == EEventKeyUp && iLongPressedScanCode == aKeyEvent.iScanCode) - { - // An editor has lost focus during long key press (for example SCT popup - // is shown during long keypress of star key). - // EFlagLongKeyPressHandled needs to be reseted also in this case. - ClearFlag(EFlagLongKeyPressHandled); - iLongPressedScanCode = 0; - } - if((aEventCode == EEventKeyDown) && (aKeyEvent.iScanCode==EStdKeyRightShift) - && (iFepMan.KeyboardLayout()== EPtiKeyboard12Key) && !iFepMan.Japanese() - && !iFepMan.IsChineseInputLanguage() ) - { - iFepMan.SetCcpuFlag(CAknFepManager::ECcpuStateShiftkeyWasPressedBeforeLosingFocus); - } - else if ((aEventCode == EEventKeyUp) && (aKeyEvent.iScanCode==EStdKeyRightShift) - && (iFepMan.KeyboardLayout()== EPtiKeyboard12Key) - && iFepMan.IsCcpuFlagSet(CAknFepManager::ECcpuStateShiftkeyWasPressedBeforeLosingFocus)) - { - iFepMan.ClearCcpuFlag(CAknFepManager::ECcpuStateShiftkeyWasPressedBeforeLosingFocus); - } - - TInt keyCode = aKeyEvent.iCode; - if (keyCode == EKeyF19 || keyCode == EKeyF22 || - keyCode == EKeyF23 || keyCode == EKeyF24 ) - { - // Internal FEP key events that are simulated by FEP are always - // also consumed by FEP. In this situation FEP has simulated the - // key event but the editor is unfocused right after. - return EKeyWasConsumed; - } - // FEP does not handle any keyevents if there are not any FEP aware editor focused, except shift key. - // Notice that shift key is handled only if CAknFepKeyCatcher is constructed by focusing some editor. - - if (iFepMan.HashKeySelectionInUse()) - { - // Hash key selection should work also with uneditable editors, therefore - // we need to fake it as a shift key press here. - if (aKeyEvent.iScanCode == EStdKeyHash) - { - if (aEventCode == EEventKeyUp) - { - if (iFepMan.IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress)) - { - // We need to generate real shift up event for editor to - // cancel ccpu-mode. - TKeyEvent ccpuStart = {0, EStdKeyLeftShift, 0, 0}; - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode); - } - else - { - // CCpu-mode was not yet activated. Just cancel the timer. - iFepMan.CancelShiftKeyTimer(); - } - return EKeyWasNotConsumed; - } - else if (aEventCode == EEventKeyDown) - { - return iFepMan.HandleShiftKeyEventL(aEventCode); - } - } - } - - if( keyCode == EKeyEscape ) - { - return iFepMan.HandleKeyEventL(keyCode, length); - } - - if ((aKeyEvent.iScanCode==EStdKeyRightShift || aKeyEvent.iScanCode==EStdKeyLeftShift)) - { - if (aEventCode == EEventKeyUp) - { - iFepMan.SetExtendedFlag(CAknFepManager::EExtendedFlagShiftReleasedOnPopup); - } - else - { - iFepMan.ClearExtendedFlag(CAknFepManager::EExtendedFlagShiftReleasedOnPopup); - } - } - else - { - return EKeyWasNotConsumed; - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iKeyCatcherState != EAknFepStateNull) - { - if(iFepMan.IsFnKeyMapped() && - (iFepMan.HandleFnKeyEventL( aKeyEvent, aEventCode ) == EKeyWasConsumed)) - { - return EKeyWasConsumed; - } - - } -#endif - - if ( aEventCode == EEventKeyUp && - aKeyEvent.iScanCode == EStdKeyHash && - iFepMan.IsExtendedFlagSet(CAknFepManager::EExtendedFlagShortPressHashKey) ) - { - // We are here because of short press of has key. Since, we had consumed - // short press of hash key, we re-simulate is again, so that the respective - // application can handle it as per their need. - - TKeyEvent keyHash = {EPtiKeyHash, EStdKeyHash, 0, 0}; - CCoeEnv::Static()->SimulateKeyEventL(keyHash, EEventKey); - iFepMan.ClearExtendedFlag(CAknFepManager::EExtendedFlagShortPressHashKey); - } - // Check for the Wireless Keyboard Modifier Flag. - const TUint KModifierExternalKeyboard = 0x00200000; - if ( aKeyEvent.iModifiers & KModifierExternalKeyboard ) - { - if ( iFepMan.IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction | - CAknFepManager::EFlagInsideMultitapInlineEditingTransaction) ) - { - if (iFepMan.IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - // Remove any no matching word indicator. - iFepMan.TryRemoveNoMatchesIndicatorL(); - } - // Ensure the CBA is in the default state. - iFepMan.UpdateCbaL(NULL); - // Close FEP UI, commit the inline edit and show the cursor. - iFepMan.TryCloseUiL(); - } - // Allow the key through to the underlying control. - return EKeyWasNotConsumed; - } - - TKeyResponse retCode; - if (iFepMan.HandleCcpuModeKeyEventL(aKeyEvent, aEventCode, - retCode, IsFlagSet(EFlagLongKeyPressHandled))) - { - return retCode; - } - -#ifdef RD_SCALABLE_UI_V2 - // Set text selection when tap arrow keys - if(iFepMan.HandleSelModeArrowKeyEventL(aKeyEvent, aEventCode, retCode)) - { - return retCode; - } -#endif //RD_SCALABLE_UI_V2 - - - - if ( ( aKeyEvent.iModifiers & EModifierCtrl -#ifdef RD_INTELLIGENT_TEXT_INPUT - || aKeyEvent.iScanCode==EStdKeyRightCtrl - || aKeyEvent.iScanCode==EStdKeyLeftCtrl -#endif - ) - && aKeyEvent.iScanCode != EStdKeyBackspace - && aKeyEvent.iScanCode != EStdKeyDelete ) - {// Chinese qwerty increment input mode by Ctrl+Shift - return iFepMan.HandleQwertyControlKeyEventL(aKeyEvent, aEventCode); - } - - // handling hash key event in japanese input - if (iFepMan.IsFeatureSupportedJapanese() - && aKeyEvent.iScanCode==EStdKeyHash && !iFepMan.IsOnlyNumericPermitted()) - { - return HandleHashKeyJapaneseL(aKeyEvent, aEventCode); - } - - // Let FepMan handle chr key - if (aKeyEvent.iScanCode==EStdKeyLeftFunc) - { - if (iFepMan.HandleQwertyChrKeyEventL(aEventCode)) - { - return EKeyWasConsumed; - } - } - //let FepMan handle shifts - if ( aKeyEvent.iScanCode==EStdKeyRightShift || aKeyEvent.iScanCode - ==EStdKeyLeftShift ) - { - // phrase creation - if ( iFepMan.IsPinyinPhraseCreation() ) - { - return EKeyWasConsumed; - } - else - { - return iFepMan.HandleShiftKeyEventL( aEventCode ); - } - } - - if (iFepMan.Japanese()) - { - if ((aKeyEvent.iScanCode==EStdKeyDevice0) || (aKeyEvent.iScanCode==EStdKeyDevice1)) - { - if (aEventCode != EEventKey) - { - return EKeyWasNotConsumed; - } - } - } - - if (aEventCode==EEventKeyUp) - { - if ( iLongPressedScanCode == aKeyEvent.iScanCode ) - { - ClearFlag(EFlagLongKeyPressHandled); - iLongPressedScanCode = 0; - } - - if ( (EStdKeyDelete == aKeyEvent.iScanCode || - EStdKeyBackspace == aKeyEvent.iScanCode)) - { - iFepMan.SetLongClearAfterCloseUI(EFalse); - } - - iFepMan.ClearFlag(CAknFepManager::EFlagCharacterAdded); - } - - - //let FepMan to try to handle Thai 0 key - TBool thai0Keyhandling = EFalse; - - if (aKeyEvent.iScanCode==EPtiKey0 - && (!(aKeyEvent.iModifiers & EModifierSpecial) // If the key is produced by hardware key - // In VKB and FSQ latin range 0 could be input with virtual keyboard - || (iFepMan.PluginInputMode() != EPluginInputModeFSQ - && iFepMan.PluginInputMode() != EPluginInputModeVkb))) - { - if (iFepMan.HandleThai0KeyEvent(aEventCode, length, thai0Keyhandling) == EKeyWasConsumed) - { - return (EKeyWasConsumed); // Eats some key events to find out when o key goes up - } - if (thai0Keyhandling) - { - if(length == ELongKeyPress) - { - SetFlag(EFlagLongKeyPressHandled); - iLongPressedScanCode = aKeyEvent.iScanCode; - } - return (iFepMan.HandleKeyEventL(EPtiKey0, length)); - } - } - TInt keyCode = aKeyEvent.iCode; - TKeyResponse response = EKeyWasNotConsumed; - -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ((aKeyEvent.iScanCode == EStdKeyNkpAsterisk ||aKeyEvent.iScanCode == EPtiKeyStar )&& iFepMan.KeyboardLayout() == EPtiKeyboard12Key) - { - //For Special Editors like Java numeric editor, EventKeyUp is allowed to flow through FEP. - //All other events for Special Editor is not consumed by FEP. - if(iFepMan.IsSpecialNumericEditor() && iFepMan.IsOnlyNumericPermitted() && aEventCode != EEventKeyUp) - { - return EKeyWasNotConsumed; - } -#ifdef FF_HOME_SCREEN_EASY_DIALING - // If Easy Dialing Feature in Phone Idle is turned on then, - // phoneIdleinEasyDialingNumericMode is set to True - TBool phoneIdleinEasyDialingNumericMode = EFalse; - phoneIdleinEasyDialingNumericMode = - (iFepMan.EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor) && - (iFepMan.InputMode() == ENumber || iFepMan.InputMode() == ENativeNumber); -#endif - // For all Numeric Editors, only Event Key is allowed to flow through - // When Easy Dialing is on, the editor in not numeric, even though in this scenario only Event key is allowed throug FEP - if ( (iFepMan.IsOnlyNumericPermitted() -#ifdef FF_HOME_SCREEN_EASY_DIALING - || phoneIdleinEasyDialingNumericMode -#endif - )&& - aEventCode != EEventKey) - { - return EKeyWasConsumed; - } - - /* - For Long Key press: - We only have Event Key, and FEP handles it for launching SCT. - For short key presses: - For Non numeric editors: - EventDown and Eventkey: - FEP consumes it - if FEP is in Inline edit or it can launch SCT. It is consumed by below check and does not flow further. - Else, these events flow through FEP. Later decision is made to consume the event or not. - EventUpKey: - FEP consumes it - if FEP is in Inline edit or it can launch SCT. Desired functionality is achieved after flowing through FEP. - Else, these events flow through FEP. Later decision is made to consume the event or not. - For Numeric Editors: - FEP handles EventKey for star key looping or launching sct. Other events does not reach here. - */ - if ( length != ELongKeyPress && - aEventCode != EEventKeyUp && - ( - iFepMan.IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) || - !iFepMan.IsAbleToLaunchSCT() - ) && - (!iFepMan.IsOnlyNumericPermitted() -#ifdef FF_HOME_SCREEN_EASY_DIALING - && !phoneIdleinEasyDialingNumericMode -#endif - ) - ) - { - return EKeyWasConsumed; - } - keyCode = EPtiKeyStar; - } - else -#endif - //only interested in EventKeys apart from for the shift key - if (aEventCode!=EEventKey) - { - // For Japanese, don't pass EEventKeyUp and EEventKeyDown - // event to application side if we are inputting Hiragana/Kanji. - if (iFepMan.Japanese() && iKeyCatcherState == EAknFepStateUIActive) - { - // arrow keys - if (aKeyEvent.iScanCode == EStdKeyDownArrow - || aKeyEvent.iScanCode == EStdKeyRightArrow - || aKeyEvent.iScanCode == EStdKeyLeftArrow - || aKeyEvent.iScanCode == EStdKeyUpArrow) - { - return EKeyWasConsumed; - } - } - - if ((iKeyCatcherState == EAknFepStateInitial) - && (aEventCode == EEventKeyUp) && (aKeyEvent.iScanCode == EStdKeyBackspace)) - { - CCoeEnv::Static()->ForEachFepObserverCall(FepObserverHandleCompletionOfTransactionL); - } - - return EKeyWasNotConsumed; - } - - //if we've done a long press, and we get repeats, don't pass it on to the fep man. - - if (!(iFepMan.Japanese()&& - (aKeyEvent.iCode == EKeyLeftArrow - || aKeyEvent.iCode == EKeyRightArrow - || aKeyEvent.iCode == EKeyDownArrow - || aKeyEvent.iCode == EKeyUpArrow))) - { - if (!(aKeyEvent.iCode == EKeyPrevious || aKeyEvent.iCode == EKeyNext)) - { - if (IsFlagSet(EFlagLongKeyPressHandled)&&(aKeyEvent.iRepeats)) - { - return EKeyWasConsumed; - } - } - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT - CAknFepFnKeyManager::TFnKeyState fnKeyStateBeforeKey = iFepMan.FnKeyState(); - - // the short key press was blocked, don't allow the long key press to go through - if ( IsFlagSet(EFlagBlockAllLongKeyPressEvents) && length == ELongKeyPress - && !IsNaviKey(aKeyEvent.iCode) ) - { - return EKeyWasNotConsumed; - } - // if the editor has no free space - // the key press is a valid one - // (it is not for eg. a simulated key press for case change) - // we are not in between multitapping - // block the subsequent long key press also - if ( length == EShortKeyPress && !iFepMan.EditorHasFreeSpace() - && iFepMan.PtiEngine()->IsValidKey((TPtiKey)aKeyEvent.iScanCode) - && !iFepMan.IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction) ) - { - SetFlag(EFlagBlockAllLongKeyPressEvents); // block the subsequent long key press also - return EKeyWasNotConsumed; - } - else - { - ClearFlag(EFlagBlockAllLongKeyPressEvents); - } -#endif // RD_INTELLIGENT_TEXT_INPUT - if (iFepMan.HandleQwertyKeyEventL(aKeyEvent, response)) - { - -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - ClearFlag(EFlagBlockAllLongKeyPressEvents); -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - TPtiKeyboardType keyboardType = iFepMan.KeyboardLayout(); - if( (length == ELongKeyPress) && - ( -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - iFepMan.LongPressNumberEntryOnQwerty()|| -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - (keyboardType == EPtiKeyboardHalfQwerty)) && - iFepMan.KeyMapsDifferentCharacterWithFn( (TPtiKey)aKeyEvent.iScanCode ) && - fnKeyStateBeforeKey == CAknFepFnKeyManager::EFnKeyNone ) - { - SetFlag(EFlagLongKeyPressHandled); // don't allow any more long presses to go through. - iLongPressedScanCode = aKeyEvent.iScanCode; - } -#endif // RD_INTELLIGENT_TEXT_INPUT - return response; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - // key was not handled because there is no space in editor - else if( !iFepMan.EditorHasFreeSpace() && ( iFepMan.KeyboardLayout() != EPtiKeyboard12Key)) - { - SetFlag(EFlagBlockAllLongKeyPressEvents); - } -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#endif // RD_INTELLIGENT_TEXT_INPUT - if (iFepMan.IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed)) - { - // If shift (ie. edit-key) is pressed in itu-t mode, block all the numeric keys, - // otherwise they will be routed to edwin and prodec unwanted character. - if ((aKeyEvent.iScanCode >= EPtiKey1 && aKeyEvent.iScanCode <= EPtiKey9) || - aKeyEvent.iScanCode == EPtiKey0 || aKeyEvent.iScanCode == EStdKeyFullStop ) - { - return EKeyWasConsumed; - } - } - - if (iFepMan.IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - if ((aKeyEvent.iScanCode >= EPtiKeyQwertyA && aKeyEvent.iScanCode <= EPtiKeyQwertyZ) || - aKeyEvent.iScanCode == EStdKeyFullStop ) - { - return EKeyWasConsumed; - } - } - - // bulk of the selection. - switch(keyCode) - { - case EKeyLeftArrow: //fall through - case EKeyRightArrow: - case EKeyDownArrow: - case EKeyUpArrow: - response = iFepMan.HandleKeyEventL(keyCode, length); - break; - case EKeyCBA1: - { - TInt inputMode = iFepMan.InputMode(); - if ( iKeyCatcherState == EAknFepStateUIActive && - inputMode >= ECangJie && inputMode <= EStroke ) - { - // Left softkey does not have functionality in Chinese input modes when - // FEP UI is active. - // phrase creation - iFepMan.HandleKeyEventL( keyCode, length ); - response = EKeyWasConsumed; - break; - } - } - //fall through - case EKeyOK: - case EKeyCBA2: - case EPtiKey0: - case EPtiKey1: - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - case EPtiKeyStar: - case EPtiKeyHash: - case EKeyEscape: - if(length == ELongKeyPress) - { - SetFlag(EFlagLongKeyPressHandled); // don't allow any more long presses to go through. - iLongPressedScanCode = aKeyEvent.iScanCode; - } - //fall through - case EKeyBackspace: - case EKeyDelete: - - // This check is added to handle the case when user enters a consonant - // followed by a halant, follwed by digit using long key press. - // When backspace is done, first time, the digit gets deleted. - // Second time, only halant should be deleted. But since ZWS is - // present, the entire syllable gets deleted. Hence we forcefully - // remove the ZWS. - - if( keyCode == EKeyBackspace && - iFepMan.PreviousChar( ETrue ) == ( ZERO_WIDTH_SPACE ) ) - { - // Remove the Zero Width Space - iFepMan.RemovePreviousCharacterL(); - } - -#ifdef RD_MARATHI - if( ( keyCode == EKeyBackspace ) && - iFepMan.PreviousChar( ETrue ) == ( ZERO_WIDTH_JOINER )) - { - // Remove the Zero Width Joiner - iFepMan.RemovePreviousCharacterL(); - } -#endif // RD_MARATHI -#ifdef RD_INTELLIGENT_TEXT_INPUT - if( keyCode == EKeyBackspace && - ( (aKeyEvent.iModifiers & EModifierLeftShift) || - (aKeyEvent.iModifiers & EModifierRightShift) || - (aKeyEvent.iModifiers & EModifierShift) )) - { - keyCode = EKeyDelete; - } -#endif //RD_INTELLIGENT_TEXT_INPUT - response = iFepMan.HandleKeyEventL(keyCode, length, aEventCode ); - break; - case EKeyF19: // Fep simulated event to asynchronously update the case. - case EKeyF22: - case EKeyF23: - case EKeyF24: - response = iFepMan.HandleKeyEventL(keyCode, length); - break; - case EKeyPowerOff: - case EKeyPhoneEnd: - case EKeyApplication: -#ifndef RD_INTELLIGENT_TEXT_INPUT - // To rip off suggested word completion when user press END / APPLICATION - if(iFepMan.IsAutoCompleteOn()) - { - iFepMan.RemoveSuggestedCompletionL(); - } -#endif //RD_INTELLIGENT_TEXT_INPUT -#ifdef RD_INTELLIGENT_TEXT_INPUT - response = iFepMan.HandleKeyEventL(keyCode, length); -#endif //RD_INTELLIGENT_TEXT_INPUT - break; - case EKeyPhoneSend: - // handling phone send key event in japanese input - if (iFepMan.IsFeatureSupportedJapanese()) - { - if (iFepMan.Japanese() && iKeyCatcherState == EAknFepStateUIActive) - { - // Ensure the CBA is in the default state. - iFepMan.UpdateCbaL(NULL); - // Close FEP UI, commit the inline edit and show the cursor. - iFepMan.TryCloseUiL(); - } - } - break; - default: - break; - } - - return response; - } - -void CAknFepKeyCatcher::SetState(const enum TAknFepManagerState aState) - { - iKeyCatcherState=aState; - } - -CAknFepKeyCatcher::CAknFepKeyCatcher(CAknFepManager& aFepMan) - : iFepMan(aFepMan), - iKeyCatcherState(EAknFepStateNull) - { - } - -void CAknFepKeyCatcher::ConstructL() - { - // Set up fep key catching control - front window, null size, non-focusing - CreateWindowL(); - SetFocusing(EFalse); - RWindow& window=Window(); - window.SetOrdinalPosition(0, ECoeWinPriorityFep); - TPoint fepControlPos(0, 0); - SetExtent(fepControlPos, TSize(0,0)); //null size - window.SetExtent(fepControlPos, TSize(0,0)); - window.SetNonFading(ETrue); - if(NULL == iEikonEnv->EikAppUi()) - { - User::Leave(KErrCancel); - } - iEikonEnv->EikAppUi()->AddToStackL(this, ECoeStackPriorityFep, - ECoeStackFlagRefusesFocus|ECoeStackFlagSharable); -#ifdef RD_SCALABLE_UI_V2 - (CEikonEnv::Static())->AddMessageMonitorObserverL(*this); -#endif //RD_SCALABLE_UI_V2 - SetBlank(); - } - -TKeyResponse CAknFepKeyCatcher::HandleHashKeyJapaneseL(const TKeyEvent& aKeyEvent, - TEventCode aEventCode) - { - // handling hash keypress event only - __ASSERT_DEBUG(aKeyEvent.iScanCode==EStdKeyHash, AknFepPanic(EAknFepPanicNotSupportKey)); - - // No handling case - if (aEventCode == EEventKeyDown - || iKeyCatcherState == EAknFepStateNull) - { - if (aEventCode == EEventKeyUp) - { - ClearFlag(EFlagLongKeyPressHandled); - } - return EKeyWasNotConsumed; - } - - // sort out if we're doing long or short presses... - TKeyPressLength length = aKeyEvent.iRepeats ? ELongKeyPress : EShortKeyPress; - - // long keypress is handled once, after key event always is consumed. - if (aEventCode == EEventKey && IsFlagSet(EFlagLongKeyPressHandled) ) - { - return EKeyWasConsumed; - } - - if (length == ELongKeyPress && !IsFlagSet(EFlagLongKeyPressHandled)) - { - SetFlag(EFlagLongKeyPressHandled); - } - - // Always handling case - if (aEventCode != EEventKeyUp && IsFlagSet(EFlagLongKeyPressHandled) - || aEventCode == EEventKeyUp && !IsFlagSet(EFlagLongKeyPressHandled)) - { - TKeyResponse response = iFepMan.HandleKeyEventL(EPtiKeyHash, length); - __ASSERT_DEBUG(response != EKeyWasNotConsumed, AknFepPanic(EAknFepPanicNotHandleHashKey)); - } - else if (aEventCode == EEventKey - && iKeyCatcherState == EAknFepStateUIActive) - { - // Ensure the CBA is in the default state. - iFepMan.UpdateCbaL(NULL); - // Close FEP UI, commit the inline edit and show the cursor. - iFepMan.TryCloseUiL(); - } - - if (aEventCode == EEventKeyUp) - { - ClearFlag(EFlagLongKeyPressHandled); - } - - return EKeyWasConsumed; - } - -void CAknFepKeyCatcher::HandleResourceChange(TInt aType) - { - if(aType == KEikDynamicLayoutVariantSwitch) //If the layout has been changed, notify fep manager - { - iFepMan.HandleResourceChange(aType); - } - - CCoeControl::HandleResourceChange(aType); - } -TBool CAknFepKeyCatcher::IsNaviKey(TUint aCode) - { - switch(aCode) - { - case EKeyBackspace: - case EKeyLeftArrow: - case EKeyRightArrow: - case EKeyUpArrow: - case EKeyDownArrow: - case EKeyDelete: - return ETrue; - default: - return EFalse; - } - } -#ifdef RD_SCALABLE_UI_V2 - -void CAknFepKeyCatcher::MonitorWsMessage(const TWsEvent& aEvent) - { - switch (aEvent.Type()) - { - case EEventPointer: - TRAP_IGNORE(iFepMan.HandlePointerEventL(*aEvent.Pointer())); - break; - default: - break; - } - } - -#endif //RD_SCALABLE_UI_V2 - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepLanguageManager.cpp --- a/fep/aknfep/src/AknFepLanguageManager.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,466 +0,0 @@ -/* -* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of CAknFepLanguageManager class. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepGlobalEnums.h" -#include "AknFepPanic.h" -#include "AknFepManager.h" // CAknFepManager -#include "AknFepManagerInterface.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepUiInputStateBase.h" // TAknFepInputStateBase -#include "AknFepUiManagerBase.h" // CAknFepUIManagerBase -#include "AknFepUIManagerJapanese.h" // CAknFepUIManagerJapanese -#include "AknFepUiManagerWestern.h" // CAknFepUIManagerWestern -#include "AknFepUiManagerChinese.h" // CAknFepUIManagerChinese -#include "AknFepLanguageManager.h" // this class - -#include "AknFepUiManagerKorean.h" // CAknFepUIManagerKorean -#include // TAknEditorNumericKeymap -#include - -#include -#include "AknFepPluginManager.h" -#include -#include - -void Cleanup( TAny* aAny ) - { - RImplInfoPtrArray* implArray = - reinterpret_cast< RImplInfoPtrArray*> ( aAny ); - implArray->ResetAndDestroy(); - implArray->Close(); - } - -/** - * CAknFepLanguageManager - * - */ -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAknFepLanguageManager() -// first phase construction. -// ----------------------------------------------------------------------------- -// -CAknFepLanguageManager* CAknFepLanguageManager::NewL(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan) - { - CAknFepLanguageManager* self = new(ELeave) CAknFepLanguageManager(aFepMan, aCaseMan); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); // self - return self; - } - -// ----------------------------------------------------------------------------- -// ~CAknFepLanguageManager() -// Destructor. -// ----------------------------------------------------------------------------- -// -CAknFepLanguageManager::~CAknFepLanguageManager() - { - if (iUiManArray) - { - iUiManArray->ResetAndDestroy(); - } - delete iUiManArray; - delete iCurImePlugin; - } - -// ----------------------------------------------------------------------------- -// CAknFepLanguageManager::GetFepUI() -// get ui manager object -// ----------------------------------------------------------------------------- -// -MAknFepManagerInterface* CAknFepLanguageManager::GetFepUI(TInt aMode, TWidthChar /*aCharacterWidth*/, TBool aPredictive) - { - MAknFepManagerInterface* uiMan = NULL; - switch (aMode) - { - case EPinyin: - case EZhuyin: - case EStroke: - case ECangJie: - case EZhuyinFind: - case EStrokeFind: - uiMan = iUiManArray->At(EUiManChinese); - break; - case ELatin: - case EHindi: - if (iInputLanguage == ELangJapanese) - { - uiMan = iUiManArray->At((aPredictive)? EUiManWestern : EUiManJapanese); - } - else if(iInputLanguage == ELangKorean) - { - uiMan = iUiManArray->At(EUiManKorean); - } - else - { - uiMan = iUiManArray->At(EUiManWestern); - } - break; - case ENumber: - case ENativeNumber: - if (iInputLanguage == ELangJapanese) - { - uiMan = iUiManArray->At(EUiManJapanese); - } - else if(iInputLanguage == ELangKorean) - { - uiMan = iUiManArray->At(EUiManKorean); - } - else - { - uiMan = iUiManArray->At(EUiManWestern); - } - break; - case EHiragana: - case EHiraganaKanji: - case EKatakana: - uiMan = iUiManArray->At(EUiManJapanese); - break; - case EHangul: - uiMan = iUiManArray->At(EUiManKorean); - break; - default: - AknFepPanic(EAknFepPanicNoUiManager); - break; - } - return uiMan; - } - - -// ----------------------------------------------------------------------------- -// CAknFepLanguageManager::SetInputLanguageL() -// Set new input language. -// ----------------------------------------------------------------------------- -// -void CAknFepLanguageManager::SetInputLanguageL(TInt aInputLanguage) - { - iInputLanguage = aInputLanguage; - MAknFepManagerInterface* uiManager = NULL; - TInt uiManagerId = UiManagerId(); - uiManager = iUiManArray->At(uiManagerId); - - if ( !uiManager ) - { - // Ui manager does not exist for this language yet. We create it. - ConstructUiManagerL(); - uiManager = iUiManArray->At(uiManagerId); - } - - uiManager->SetInputLanguageL((TLanguage)iInputLanguage); - - if (uiManagerId != EUiManWestern) - { - // Western UI manager needs to know current input language also when - // Chinese or Japanese Ui manager is used. - // Western UI manager needs to use English language if the - // input language is Chinese or Japanese. - uiManager = iUiManArray->At(EUiManWestern); - if (uiManager) - { - uiManager->SetInputLanguageL((TLanguage)iInputLanguage); - } - } - - } - - -// ----------------------------------------------------------------------------- -// CAknFepLanguageManager() -// Constructor. -// ----------------------------------------------------------------------------- -// -CAknFepLanguageManager::CAknFepLanguageManager(MAknFepManagerUIInterface* aFepManager, - CAknFepCaseManager* aCaseManager) - -:iInputLanguage(ELangEnglish), - iFepManager(aFepManager), - iCaseManager(aCaseManager), - iPluginManager(NULL) - { - } - -// ----------------------------------------------------------------------------- -// CAknFepLanguageManager::ConstructL() -// Second phase construction -// ----------------------------------------------------------------------------- -// -void CAknFepLanguageManager::ConstructL() - { - iUiManArray = new(ELeave)CArrayPtrFlat(EUiManMax); - - for ( TInt ii = 0; ii < EUiManMax; ii++) - { - iUiManArray->AppendL(NULL); - } - - // Create UI manager for English language. English exists in all variants and - // it is default language in CAknFepLanguageManager. - ConstructUiManagerL(); - } - -void CAknFepLanguageManager::ConstructUiManagerL() - { - MAknFepManagerInterface* uiMan = NULL; - TInt uiManagerId = UiManagerId(); - iUiManArray->Delete(uiManagerId); - switch (uiManagerId) - { - case EUiManWestern: - uiMan = CAknFepUIManagerWestern::NewL(iFepManager, iCaseManager, - (TLanguage)iInputLanguage); - break; - case EUiManChinese: - uiMan = CAknFepUIManagerChinese::NewL(iFepManager, iCaseManager, - (TLanguage)iInputLanguage); - break; - case EUiManJapanese: - uiMan = CAknFepUIManagerJapanese::NewL(iFepManager, iCaseManager, - (TLanguage)iInputLanguage); - break; - case EUiManKorean: - uiMan = CAknFepUIManagerKorean::NewL(iFepManager, iCaseManager, (TLanguage)iInputLanguage); - break; - default: - AknFepPanic(EAknFepPanicNoUiManager); - break; - } - CleanupStack::PushL(uiMan); - iUiManArray->InsertL(uiManagerId, uiMan); - CleanupStack::Pop(); // uiMan - } - -TInt CAknFepLanguageManager::UiManagerId() - { - TInt uiManagerId = EUiManWestern; - switch (iInputLanguage) - { - case ELangPrcChinese: - case ELangHongKongChinese: - case ELangTaiwanChinese: - uiManagerId = EUiManChinese; - break; - case ELangJapanese: - uiManagerId = EUiManJapanese; - break; - case ELangKorean: - uiManagerId = EUiManKorean; - break; - default: - // Western UI manager is default. - // Thai, Arabic and Hebrew uses western UI manager. - break; - } - return uiManagerId; - } - -// ----------------------------------------------------------------------------- -// CAknFepLanguageManager::GetPluginInputFepUiL -// Get plugin UI manager object. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -MAknFepManagerInterface* CAknFepLanguageManager::GetPluginInputFepUiL( - TPluginInputMode aPreferedMode, - TInt aPenInputLang, - TInt aDisplayLang, - RPeninputServer* aPenServer) - { - - RArray implList; - CleanupClosePushL(implList); - - TPluginInputMode secondMode = EPluginInputModeItut; - TPluginInputMode curMode = aPreferedMode; - TInt language = aPenInputLang; - - //pen input language and prefered mode - aPenServer->GetImePluginIdListL(aPenInputLang, curMode, implList); - - if( implList.Count() == 0 ) - { - //pen input language and other modes - curMode = secondMode; - aPenServer->GetImePluginIdListL(aPenInputLang, curMode, implList); - } - - if( implList.Count() == 0 && aPenInputLang != aDisplayLang) - { - //display language and prefered modes - language = aDisplayLang; - curMode = aPreferedMode; - aPenServer->GetImePluginIdListL(aDisplayLang, curMode, implList); - - if( implList.Count() == 0 ) - { - //display language and other modes - curMode = secondMode; - aPenServer->GetImePluginIdListL(aDisplayLang, curMode, implList); - } - } - - CAknFepPenInputImePlugin* pIme = NULL; - MAknFepManagerInterface* pUi = NULL; - TInt i; - for(i = 0; i < implList.Count(); ++i) - { - pIme = ActivateImePlugin(implList[i], aPenServer); - if( pIme ) - { - pUi = ActivateLayoutUiPluginL(pIme, language, curMode); - if( pUi ) - { - iCurUiPlugIn = pUi; - if( iCurImePlugin != pIme ) - { - //a new IME plugin created - delete iCurImePlugin; - iCurImePlugin = pIme; - } - break; - } - else - { - //Fail create UI, delete IME plugin just created - if( iCurImePlugin != pIme ) - { - delete pIme; - } - } - } - } - - if( i == implList.Count() ) - { - delete iCurImePlugin; - iCurImePlugin = NULL; - iCurUiPlugIn = NULL; - } - CleanupStack::PopAndDestroy(&implList); - return iCurUiPlugIn; - } - -TBool CAknFepLanguageManager::IsPluginInputAvaiable(TPluginInputMode aMode, - TInt aPenInputLang, - RPeninputServer* aPenServer) - { - TBool bAvail = EFalse; - TRAP_IGNORE(bAvail = IsPluginInputAvaiableL(aMode, aPenInputLang, aPenServer)); - return bAvail; - } - -TBool CAknFepLanguageManager::IsPluginInputAvaiableL(TPluginInputMode aMode, - TInt aPenInputLang, - RPeninputServer* aPenServer) - { - RArray implList; - CleanupClosePushL(implList); - - aPenServer->GetImePluginIdListL(aPenInputLang, aMode, implList); - TBool bAvail = implList.Count() != 0; - CleanupStack::PopAndDestroy(&implList); - return bAvail; - } - -// ----------------------------------------------------------------------------- -// CAknFepLanguageManager::ActivateImePlugin -// Activate IME plugin by implemenation. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CAknFepPenInputImePlugin* CAknFepLanguageManager::ActivateImePlugin( - TInt aImeImplId, - RPeninputServer* aPenServer) - { - if(iCurImePlugin && iCurImePlugin->ImeImplId() == aImeImplId) - { - return iCurImePlugin; - } - else - { - TUid dtor_ID_Key; - CAknFepPenInputImePlugin* pIme = NULL; - - TRAP_IGNORE(pIme = REINTERPRET_CAST(CAknFepPenInputImePlugin*, - REComSession::CreateImplementationL(TUid::Uid(aImeImplId), dtor_ID_Key, aPenServer))); - - if( pIme ) - { - pIme->iDtor_ID_Key = dtor_ID_Key; - } - - return pIme; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepLanguageManager::ActivateLayoutUiPluginL -// Activate IME plugin's UI by mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -MAknFepManagerInterface* CAknFepLanguageManager::ActivateLayoutUiPluginL( - CAknFepPenInputImePlugin* aImePlugin, - TInt aPenInputLang, - TPluginInputMode aMode) - { - MAknFepManagerInterface* pUi = NULL; - - if( aImePlugin ) - { - pUi = aImePlugin -> GetInputMethodUiL(iFepManager, - (TLanguage)aPenInputLang, - aMode, - KNullDesC8(), - iIsSplitView); - //set inputlanguage - if(pUi) - { - pUi->SetInputLanguageL((TLanguage)aPenInputLang); - //pUi->ActivateUI(); - } - } - - return pUi; - } - -// ----------------------------------------------------------------------------- -// CAknFepLanguageManager::SetSplitView -// Activate IME plugin's UI by mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepLanguageManager::SetSplitView(TBool aIsSplitView) - { - iIsSplitView = aIsSplitView; - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepManager.cpp --- a/fep/aknfep/src/AknFepManager.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20732 +0,0 @@ -/* -* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepManager methods. -* -*/ - - - - - - - - - - - -#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#endif -#include "AknFepManager.h" -#include "AknFepManagerInterface.h" // MAknFepManagerInterface -#include "aknfepindicator.h" -#include "AknFepPanic.h" -#include "AknFepKeyCatcher.h" -#include "AknFepGlobalEnums.h" -#include "AknFepCaseManager.h" -#include "AknFepHashKeyManager.h" -#include "AknFepSharedDataInterface.h" -#include "AknFepInlineTextDecorator.h" -#include "AknFepUiManagerBase.h" -#include "AknFepUiManagerChinese.h" -#include "AknFepUiManagerWestern.h" - -#include "AknFepPluginManager.h" -#include "AknFepUiIndicInputManager.h" -#include "AknFepUiIndicEnums.h" -#include -#include "aknfepuispellinputpane.h" - -#include -#include //CCoeAppUi -#include //CAknEdwinState -#include //keys -#include //CAknEnv -#include //CPtiEngine -#include //CAknJapaneseReading -#include //FeatureManager -#include //CPeriodic -#include //keys -#include //MCoeFepSpecificExtensions - -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include "aknconsts.h" -#include -#include // User Dictionary -#include // User Dictionary - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#ifdef RD_INTELLIGENT_TEXT_INPUT -#include "AknFepUiWordPopupContent.h" -#include "AknFepFnKeyManager.h" -//#include -#endif //RD_INTELLIGENT_TEXT_INPUT - -#ifdef RD_TACTILE_FEEDBACK -#include -#endif //RD_TACTILE_FEEDBACK -#include "AknFepThaiSCTSelector.h" - -//the follow 10 filse include for phrase creation -#include -#include //CEikStatusPane -#include //CAknTitlePane -#include //CAknToolBar -#include -#include "AknFep.hrh" -#include "aknfepuserdbdlg.h" -#include "aknfepzhuyinkeyhandler.h" -#include "AknFepZhuyinAnalyser.h" -#include "AknFepZhuyinAnalyserDb.h" - -#include -#include - -#include -#include - -const TInt KSelectItemSize(10); -_LIT(KAknFepResourceFileName, "z:\\resource\\fep\\aknfep.rsc"); -_LIT(KFEPPREDINPUT_HLP_INPUT, "PREDINPUT_HLP_INPUT"); // - -#define text_to_field_mode_hash_key ';' -#define iAvkonAppUi ((CAknAppUi*)CEikonEnv::Static()->EikAppUi()) -#define __SHIFT_KEY_LOOP - -// EAknEditorNativeKeysNumberModeKeymap is used for example in MFNE editors. -#define EAknEditorNativeKeysNumberModeKeymap EAknEditorReservedInternalUseKeymap - -// UID of user dictionary application -const TUid KUidUserDictApp = {0x101F8645}; - -const TText KAknFEPLineFeedSymbol = 0x21B2; -const TText KAknFEPMirroredLineFeedSymbol = 0x21B3; -const TText KAknFEPZeroKey = 0x30; - -// inline text decoration potentially adds 2 directional markers for every "real" character. Buffer needs to be 3 x predictive engine bufsize -const TInt KMaxInlineEditSize( 3 * CAknFepManager::EMaximumFepWordLength ); - -// Maximum number of chunks to navigate throught attempting to get to the visual end of a selection. -// Since chunks are arranged only within a line, this should be more than the number of chunks likely in -// a single line of text -const TInt KMaxChunkWalkIterations(20); - -// This command is is used for setting empty CBA. -const TInt KNullCommandId = 0; - -_LIT_SECURE_ID(KPhoneSecureId, 0x100058b3); - -#ifdef RD_HINDI_PHONETIC_INPUT - -const TUint KQuestionMark = 0x003F; - -#endif - -// Ccpu key events. -/*As part of build warnings commenting this perticular code it might require when touch is enabled. -const TKeyEvent KEditorCopyEvent = {3, 67, 161, 0}; // Ctrl + C -const TKeyEvent KEditorCutEvent = {24, 88, 161, 0}; // Ctrl + X -*/ - -const TInt KTouchInputPreviewOn = 1; -const TInt KTouchInputPreviewOff = 0; - -#ifdef RD_SCALABLE_UI_V2 -const TKeyEvent KAknCcpuCopyEvent = {EKeyF18, EEikCmdEditCopy, EModifierCtrl, 1}; // Copy event for AknCcpuSupport -const TKeyEvent KAknCcpuCutEvent = {EKeyF18, EEikCmdEditCut, EModifierCtrl, 1}; // Cut event for AknCcpuSupport - -const TInt KMaxMenuSize = 23; -const TInt KEditorMenuPermitedSend[KMaxMenuSize] = - { - EJapanFepCmdModeHiragana, - EJapanFepCmdModeKatakana, - EJapanFepCmdEditModeAlpha, - EJapanFepCmdEditModeNumber, - EJapanFepCmdModeFullWidth, - EJapanFepCmdModeHalfWidth, - EChinFepCmdModePinyin, - EChinFepCmdModeZhuyin, - EChinFepCmdModeStroke, - EAknCmdT9PredictiveT9Off, - EAknCmdMultitapPredictiveT9On, - EJapanFepCmdMultitapPredictiveT9On, - EChinFepCmdModeZhuyinFind, - EChinFepCmdModeStrokeFind, - EAknCmdEditModeAlpha, - EAknCmdEditModeLatinText, - EChinFepCmdModeLatinUpper, - EChinFepCmdModeLatinLower, - EAknCmdEditModeNumber, - EChinFepCmdModeNumber, - EAknCmdEditModeArabicIndicNumber, - EAknCmdEditModeEasternArabicIndicNumber, - EAknCmdEditModeIndicNumber - }; - -#endif // RD_SCALABLE_UI_V2 - - -// Number modes used by Arabic or Hindi. -enum TNonLatinNumberModes - { - ENbrModeLatin, - ENbrModeArabic = 1, - ENbrModeIndic = 1 - }; - -// Number mode type -enum TNonLatinNumberModeType - { - ENbrModeTypeArabic, - ENbrModeTypeIndic, - ENbrModeTypeEasternArabic //for Urdu & Farsi languages - }; - -// The passwd timeout is same as defined on CEikSecretEditor. -const TInt KSyncPasswdTimeout = 1000000; - -#ifdef RD_SCALABLE_UI_V2 -TUid AppUidFromWndGroupId(TInt aWndGrpId); -extern TUid GetCurAppUid(); -extern TBool IsGlobalNotesApp(TUid& aUid); -TInt GetForegroundTaskAppWgId(); -#endif -#ifdef RD_INTELLIGENT_TEXT_INPUT -const TInt KWordToFocusInCandidateList = 1; -#endif - -LOCAL_C TInt RemapVietnameseAccentedCharacter(TUint16 aChr); - -// -// Class TTextDirectionalInfo -// -/** -* The implementation inializes with well-defined "null" state -*/ -CAknFepManager::TTextDirectionalInfo::TTextDirectionalInfo() : -iDirectionalStatus(EUnknown), iBlockEnvironment(EUndefined) - {} - -void CAknFepManager::TTextDirectionalInfo::SetDirectionFromChunk( - const CTmTextLayout::TTmChunkDescription& aChunk ) - { - if ( aChunk.iStart >= 0 ) // Condition for valid block. Does nothing otherwise - iDirectionalStatus = aChunk.iRightToLeft ? ERightToLeft : ELeftToRight; - } - - -void TFepLanguageTranslation::ReadFromResource(TResourceReader& aReader) - { - iName.Set(aReader.ReadTPtrC()); - iLanguageId = aReader.ReadInt16(); - iCommandId = aReader.ReadInt16(); - } - - -CAknFepManager::CAknFepManager(CCoeEnv& aConeEnvironment) - :CCoeFep(aConeEnvironment), - iAsyncResouceChanged(EActivePriorityDefault), - iPreviousEditingState(EStateNone), - iInputCapabilities(TCoeInputCapabilities::ENone), - iModeBefore(ELatin), - #ifdef RD_INTELLIGENT_TEXT_INPUT - iKeyPressedDuringShift(EFalse), -#endif - iCharWidth(EHalfWidthChar), - iAsyncOwnSimulateKey(EActivePriorityDefault), - iLongThai0Key(EFalse), - iEditCharsPtr(0,0), - iComposChrFlag(0), - iIsUserdbdlgActive(0), - iLongClearAfterCloseUI(EFalse), - // phrase creation - iPhraseCreation(0), - iPinyinPhraseCreation(0), - iEntryPhrase(0) - - - { - } - -void CAknFepManager::ConstructL(const CCoeFepParameters& aFepParameters) - { - BaseConstructL(aFepParameters); - iUiInterface = CAknFepUIInterface::NewL(); - iIndicator = iUiInterface->NewIndicatorL(); - iPreviousIndicator = CAknEnv::Static()->SwapEditingStateIndicator(iIndicator); - - // Set up resources - TFileName resourceName(KAknFepResourceFileName); - CCoeEnv* coeEnv = CCoeEnv::Static(); - BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resourceName); - iResId = coeEnv->AddResourceFileL(resourceName); - - // Save Japanese Feature support to a member variable - iFeatureSupportedJapanese = FeatureManager::FeatureSupported(KFeatureIdJapanese); - - iUiLanguage = User::Language(); - - // Shared Data - iSharedDataInterface = CAknFepSharedDataInterface::NewL(this); - - TInt previUiLanguage = iSharedDataInterface->PluginUILanguage(); - - if (iUiLanguage != previUiLanguage) - { - - // if UI language has changed we need to set text input language according to UI language - iSharedDataInterface->SetPluginUILanguage(iUiLanguage); - iSharedDataInterface->SetInputTextLanguage(0); // signals that it needs to be updated - } - - if (!iSharedDataInterface->InputMode()) //not initialised yet - first time device is switched on - { - switch (iUiLanguage) - { - case ELangPrcChinese: - iSharedDataInterface->SetInputMode(EPinyin); - break; - case ELangTaiwanChinese: - iSharedDataInterface->SetInputMode(EZhuyin); - break; - case ELangHongKongChinese: - iSharedDataInterface->SetInputMode(EStroke); - iSharedDataInterface->SetCangJieMode(ECangJieNormal); - break; - case ELangJapanese: - iSharedDataInterface->SetInputMode(EHiraganaKanji); - break; - case ELangKorean: - iSharedDataInterface->SetInputMode(EHangul); - break; - case ELangHindi: - iSharedDataInterface->SetInputMode(EHindi); - break; - default: - iSharedDataInterface->SetInputMode(ELatin); - break; - } - } - - iUiInterface->SetFepMenuObserver(this); - - TInt inputLanguage = iSharedDataInterface->InputTextLanguage(); - - // A process instantiating Fep may miss ECapabilityWriteDeviceData capability, - // which is needed for updating locale repository. - // A workaround is to delay change up to a process that has the capability - TSecurityInfo info; - info.Set(RProcess()); - - TBool hasCapability = info.iCaps.HasCapability(ECapabilityWriteDeviceData); - - if (!inputLanguage && hasCapability) - { - // set correct input language - inputLanguage = SubstituteSublanguageId(iUiLanguage); - - // If Ptiengine is not initialize, initialize it - if (!iPtiEngine) - { - iPtiEngine = CPtiEngine::NewL(ETrue); - } - // If still not found, default to english. - if (!iPtiEngine->GetLanguage(inputLanguage)) - { - inputLanguage = ELangEnglish; - } - - // Set the current input language - iSharedDataInterface->SetInputTextLanguage(inputLanguage); - - // update numeric input - if ( iUiLanguage == ELangArabic ) - { - SetDefaultNumberMode( ENbrModeArabic, - ENbrModeTypeArabic ); - } - else if ( ( iUiLanguage == ELangUrdu ) || - ( iUiLanguage == ELangFarsi ) ) - { - SetDefaultNumberMode( ENbrModeArabic, - ENbrModeTypeEasternArabic ); - } - else if ( TAknFepUiIndicInputManager::IsScriptDevanagari( iUiLanguage ) ) - { - SetDefaultNumberMode( ENbrModeLatin, - ENbrModeTypeIndic ); - } - else - { - SetDefaultNumberMode( ENbrModeLatin, ENbrModeTypeArabic ); - } - } - - iSctEditChars = HBufC::NewL( 10 ); - -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - if(CCoeEnv::Static()->AppUi()) - iExactWordPopupContent = iUiInterface->CreateWordPopupContentL(); - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - // If the following line is uncommented, the FEP is fully constructed - // for all applications at application startup. - // ConstructFullyL(); - iShiftKeypressMonitor = CPeriodic::NewL(CActive::EPriorityStandard); -#ifdef RD_INTELLIGENT_TEXT_INPUT - iFnKeyManager = CAknFepFnKeyManager::NewL( *this,iSharedDataInterface ); -#endif - TRAPD(result,iKeyCatcher = CAknFepKeyCatcher::NewL(*this)); - if(result == KErrNone) - { - iKeyCatcher->ActivateL(); - } - // the follow 3 objects for phrase creation - iZhuyinKeyHandler = CZhuyinKeyHandler::NewL(); - iZhuyinAnalyserDb = CZhuyinAnalyserDbFeed::NewL(EPinyinAnalyserTypeZhuyin); - iZhuyinAnalyser = CAknFepZhuyinAnalyser::NewL(iZhuyinAnalyserDb); - iAknFepThaiSCTSelector = CAknFepThaiSCTSelector::NewL(); - iHybridAplphaChangedToAlphanumeric = EFalse; - iLastFocusedEditor = NULL; - iFepAwareDialogParentEditor = NULL; - } - -void CAknFepManager::ConstructFullyL() - { - if (!iPtiEngine) - { - iPtiEngine = CPtiEngine::NewL(ETrue); - } - - if ( !(iPtiEngine->GetLanguage(iSharedDataInterface->InputTextLanguage())) ) - { - // If input language cenrep value is set to language unknown to PtiEngine, - // try to reset based on UI-language. - TInt inputLang = SubstituteSublanguageId(iUiLanguage); - - // If still not found, default to english. - if (!iPtiEngine->GetLanguage(inputLang)) - { - inputLang = ELangEnglish; - } - iSharedDataInterface->SetInputTextLanguage(inputLang); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef FF_DUAL_LANGUAGE_SUPPORT - if (iPtiEngine->GetLanguage(iSharedDataInterface->InputTextLanguageSecondary()) == NULL) - { - // If secondary input language is unknown to PtiEngine, set it to none - iSharedDataInterface->SetInputTextLanguageSecondary(0); - } -#endif //FF_DUAL_LANGUAGE_SUPPORT -#endif - - if(NULL == iKeyCatcher) - { - iKeyCatcher = CAknFepKeyCatcher::NewL(*this); - iKeyCatcher->ActivateL(); - } - - iConcatenationTimer=CPeriodic::NewL(CActive::EPriorityStandard); - iPostEventCheck=CIdle::NewL(CActive::EPriorityStandard); - iChrKeypressMonitor = CPeriodic::NewL(CActive::EPriorityStandard); - - CCoeEnv* coeEnv = CCoeEnv::Static(); - TInt inputLanguage = iSharedDataInterface->InputTextLanguage(); -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef FF_DUAL_LANGUAGE_SUPPORT - TInt inputLanguageSecondary = iSharedDataInterface->InputTextLanguageSecondary(); -#endif //FF_DUAL_LANGUAGE_SUPPORT -#endif - SetWesternPredictive(iSharedDataInterface->PredictiveTextOn()); -#ifndef RD_INTELLIGENT_TEXT_INPUT - iIsAutoCompleteOn = iSharedDataInterface->PredictiveTextAutoCompleteOn(); // AutoCompletion disabled by Default -#endif //RD_INTELLIGENT_TEXT_INPUT -#ifdef RD_INTELLIGENT_TEXT_INPUT - iIsAutoCompleteOn = iSharedDataInterface->PredictiveTextAutoCompleteOn(); // AutoCompletion disabled by Default - iTypingCorrectionLevel = iSharedDataInterface->PredictiveTextTypingCorrectionLevel(); - iIsNumberCandidateShown = iSharedDataInterface->PredictiveTextNumberCandidateShown(); - TInt primaryCandidateValue = iSharedDataInterface->PredictiveTextPrimaryCandidate(); - if( primaryCandidateValue == 0) - iPrimaryCandidate = ETrue; - else if(primaryCandidateValue == 1) - iPrimaryCandidate = EFalse; -#endif // RD_INTELLIGENT_TEXT_INPUT - iJapanesePredictive = iSharedDataInterface->PredictiveTextJapaneseOn(); - iQwertyInputMode = iSharedDataInterface->QwertyInputMode(); - iMultiTapTimer = iSharedDataInterface->MultiTapTimer(); - iJapaneseQwertyFlags = iSharedDataInterface->JapaneseQwertyFlags(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(!iFnKeyManager) - { - iFnKeyManager = CAknFepFnKeyManager::NewL( *this,iSharedDataInterface ); - } -#endif - iCaseMan = CAknFepCaseManager::NewL(*this); - iLangMan = CAknFepLanguageManager::NewL(this, iCaseMan); - iPtiEngine->ActivateLanguageL(inputLanguage); -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef FF_DUAL_LANGUAGE_SUPPORT - iPtiEngine->SetSecondaryInputL(inputLanguageSecondary); -#endif //FF_DUAL_LANGUAGE_SUPPORT -#endif - iLangMan->SetInputLanguageL(inputLanguage); - SetInputLanguageCapabilities(inputLanguage); - iCurrentFepUI = iLangMan->GetFepUI(ELatin, iCharWidth, IsPredictive(ELatin)); - - iLastKeyPressedWasHashKey = EFalse; - iDeviceSupportsRtlLanguage = DeviceSupportsRTLLanguageL(); - - TResourceReader reader; - // get character from resource to represent an 'enter' character - coeEnv->CreateResourceReaderLC(reader, R_AVKON_SCT_SPACE_SYMBOL); - iSpaceCharacterCode = reader.ReadUint16(); - coeEnv->CreateResourceReaderLC(reader, R_AVKON_SCT_FULLWIDTHSPACE_SYMBOL); - iFullWidthSpaceCharacterCode = reader.ReadUint16(); - CleanupStack::PopAndDestroy(2); //reader - - //initialise states - iMode = EAknEditorNullInputMode; //Force a sync of mode... - SyncStates(EAknFepStateNull); - ResetFlags(); - ResetExtendedFlags(); - - ReadHashKeyLoopL(); - iHashKeyMan = CAknFepHashKeyManager::NewL(*this, iCaseMan); - SetHashKeyStyle(); - iInlineTextDecorator = new (ELeave) CAknFepInlineTextDecorator; - if (IsFeatureSupportedJapanese()) - { - CAknJapaneseReading::CreateL(iPtiEngine); - } - // setting call back - TCallBack callback(DoSimulateKey, this); - iAsyncOwnSimulateKey.Set(callback); - - TCallBack resourcechangedcallback(HandleResourceChangedCallback,this); - iAsyncResouceChanged.Set(resourcechangedcallback); -#ifdef RD_SCALABLE_UI_V2 - iFepPluginManager = CAknFepPluginManager::NewL - ( *this, *iSharedDataInterface, *iLangMan, *iCaseMan); - iNotifyPlugin = ETrue; -#endif //RD_SCALABLE_UI_V2 - - iFepFullyConstructed = ETrue; -#ifdef RD_INTELLIGENT_TEXT_INPUT - iIsFnKeyMapped = IsFnKeyMappedL(); - iKeyboardType = (TPtiKeyboardType)iSharedDataInterface->KeyboardLayout(); -#endif - } - -CAknFepManager::~CAknFepManager() - { -#ifdef RD_PF_SEC_APPARC - delete iNullService; -#else - //Embedding - removing created document - if ( iEmbedded ) - { - CEikonEnv::Static()->Process()->DestroyDocument(iEmbedded); // User dictionary - iEmbedded = NULL; - } -#endif - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - SetFlag(CAknFepManager::EFlagSupressAutoUpdate); - TRAPD(err, CommitInlineEditL()) - if (err) - { - CleanUpFep(); - } - } - - if ( EditorState() ) - { - EditorState()->SetObserver(NULL); - } - if (iLastFocusedEditor) - { - iLastFocusedEditor->SetObserver(NULL); - iLastFocusedEditor = NULL; - } - if (iFepAwareDialogParentEditor) - { - iFepAwareDialogParentEditor->SetObserver(NULL); - iFepAwareDialogParentEditor = NULL; - } - - delete iSharedDataInterface; - MAknEditingStateIndicator* indicator = CAknEnv::Static()->EditingStateIndicator(); - if (indicator == iIndicator) - { - CAknEnv::Static()->SwapEditingStateIndicator(NULL); - } - - - delete iIndicator; - iIndicator = NULL; - CCoeEnv::Static()->DeleteResourceFile(iResId); - - // Everything that is constructed in ConstructFullyL() method - // needs to be deleted in CommonDestroyFep() method. - CommonDestroyFep(); - - if (iUiInterface) - iUiInterface->SetFepMenuObserver(NULL); - - delete iPtiEngine; - delete iSctEditChars; - -#ifdef RD_SCALABLE_UI_V2 - if ( FepAwareTextEditor() ) - { - UnregisterObserver(); - } - delete iFepPluginManager; - delete iStylusCcpuMenu; - - delete iSpellInitText; -#endif // RD_SCALABLE_UI_V2 - delete iUiInterface; -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - delete iExactWordPopupContent; - iExactWordPopupContent = 0; - delete iCandidatePopup; - iCandidatePopup = 0; - delete iResourceString; - iResourceString = 0; - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - // the follow objects for phrase creation - delete iZhuyinKeyHandler; - delete iZhuyinAnalyser; - delete iAknFepThaiSCTSelector; - } - -void CAknFepManager::CommonDestroyFep() - { - iFepFullyConstructed = EFalse; - - // This method is called both from destructor and CleanUpFep methods. - iAsyncOwnSimulateKey.Cancel(); - iAsyncResouceChanged.Cancel(); - delete iShiftKeypressMonitor; - iShiftKeypressMonitor = NULL; - delete iConcatenationTimer; - iConcatenationTimer = NULL; - delete iChrKeypressMonitor; - iChrKeypressMonitor = NULL; - delete iLangMan; - iLangMan = NULL; - iCurrentFepUI = NULL; - delete iKeyCatcher; - iKeyCatcher = NULL; - - delete iPostEventCheck; - iPostEventCheck = NULL; - delete iHashKeyMan; - iHashKeyMan = NULL; - delete iCaseMan; - iCaseMan = NULL; - delete iInlineTextDecorator; - iInlineTextDecorator = NULL; - iHashKeyLoop.Close(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iFnKeyManager) - { - delete iFnKeyManager; - iFnKeyManager = NULL; - } - if( iNumericResourceTimer ) - { - delete iNumericResourceTimer; - iNumericResourceTimer = NULL; - } -#endif - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CAknFepManager::SetKeyboardLayout(TPtiKeyboardType aType) - { - - if(iQwertyInputMode && iFnKeyManager - && (iFnKeyManager->FnKeyState()== CAknFepFnKeyManager::EFnKeyLock - ||iFnKeyManager->FnKeyState()== CAknFepFnKeyManager::EFnKeyNext)) - { - iMode = ENumber; - } - - if(iFnKeyManager) - { - iFnKeyManager->ClearFnKeyState(); - } - - if(iPtiEngine) - { - iPtiEngine->SetKeyboardType(aType); - } - iKeyboardType = aType; - } - -TPtiKeyboardType CAknFepManager::KeyboardLayout() const - { - return iKeyboardType; - } -#endif -TBool CAknFepManager::TryCloseUiL() - { -#ifdef RD_HINDI_PHONETIC_INPUT - if ((iSharedDataInterface->InputTextLanguage() == KLangHindiPhonetic) && - IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - ClearFlag(CAknFepManager::EFlagNoMatches); - if (PreviousChar() == KQuestionMark) - RemovePreviousCharacterL(); - } -#endif - if (iFepManState == EAknFepStateUIActive) - { - // In Japanese input, - // commit inline editing at only the western predictive mode. - if (!IsFeatureSupportedJapanese() || WesternPredictive()) - { - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - TryRemoveNoMatchesIndicatorL(); - UpdateCbaL(NULL); - } - - - -//#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( iFepPluginManager && - (iFepPluginManager->PluginInputMode() == EPluginInputModeNone)) - { - RemoveSuggestedAdvanceCompletionL(); - } -#endif // RD_INTELLIGENT_TEXT_INPUT -//#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - -#ifdef RD_SCALABLE_UI_V2 - - if ( iFepPluginManager != NULL && - iFepPluginManager->BeforeSpell() ) - { - iFepPluginManager->SetBeforeSpell(EFalse); - } - else -#endif - - { - CommitInlineEditL(); - } - } - if (IsCcpuFlagSet(ECcpuStataCommitPredictiveWord)) - { - // Word commiting must be done after CommitInlineEditL call (because - // of Japanese ReadingTextL funtionality), hence the delayed commit here. - iPtiEngine->CommitCurrentWord(); - ClearCcpuFlag(ECcpuStataCommitPredictiveWord); - } - InternalFepUI()->CloseUI(); - SyncStates(EAknFepStateInitial); - if (iMode == EPinyin || iMode == EZhuyin || iMode == EStroke || iMode == ECangJie) - { - SetCursorType(EActive); - if ( EditorState() ) - { - EditorState()->SetFlags( EditorState()->Flags() & ~EAknEditorFlagChinesePopup ); - } - } - - // EFalse in case of latin input in Japanese variant - if (IsFeatureSupportedJapanese() - && iMode == ELatin && !WesternPredictive()) - { - return EFalse; - } - - return ETrue; - } - else - { - if (IsKoreanInputLanguage()) - { - if (IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - CommitInlineEditL(); - PtiEngine()->ClearCurrentWord(); - } - } - - //in initial state characters should either: - //1. not be consumed by the FEP. - //2. be committed immediately by the Input State. - //3. be multitap chars, in which case they may need to be committed - // here. It is best to let the engine deal with this. - if ( IsFlagSet( EFlagInsideInlineEditingTransaction ) ) - { - InternalFepUI()->ExpireMultitapTimer(); - } - return EFalse; - } - } - -void CAknFepManager::SendUIActivatedNotification() - { - SyncStates(EAknFepStateUIActive); - } - -void CAknFepManager::SendUIDeActivatedNotification() - { - SyncStates(EAknFepStateInitial); - } - -void CAknFepManager::PlaySound(TAvkonSystemSID aSound) const - { - if (SoundSystem()) - { - SoundSystem()->PlaySound(aSound); - } - } - -void CAknFepManager::SetLongClearAfterCloseUI(TBool aLongClear) - { - iLongClearAfterCloseUI = aLongClear; - } - -TKeyResponse CAknFepManager::HandleKeyEventL(TUint aCode, TKeyPressLength aLength,TEventCode aEventCode) - { - TKeyResponse response = EKeyWasNotConsumed; - - TInt documentLength = -1; - if (iInputCapabilities.FepAwareTextEditor()) - { - documentLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - } - - if (iFepFullyConstructed && iConcatenationTimer->IsActive()) - { - if (!( aCode == EKeyRightArrow || - aCode == EKeyLeftArrow || - aCode == EKeyUpArrow || - aCode == EKeyDownArrow )) - { - iConcatenationTimer->Cancel(); - } - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT - - if(iKeyBackSpaceHit && aCode != EKeyBackspace) - iKeyBackSpaceHit = 0; - - if (aCode != EPtiKeyStar && iNumericResourceTimer) - { - // return with EKeyWasConsumed if any of the arrow keys are pressed with - // iNumericResourceTimer is active - if(NumericResourceMultiTapTimerTimeoutL()&& - (aCode == EKeyRightArrow || aCode == EKeyLeftArrow || aCode == EKeyUpArrow || aCode ==EKeyDownArrow)) - return EKeyWasConsumed; - } -#endif - - - - // This method is implemented independent of all modes, so it can be called by anyone, anywhere - if ( BidiCursorRequired() ) - { - response = AttemptCursorFlipAtAmbiguousPointL( aCode ); - if ( response == EKeyWasConsumed ) - { - return response; - } - } - - if ( aCode != EPtiKeyHash -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD -#ifdef __SHIFT_KEY_LOOP - && ( aCode != EPtiKeyQwertyLeftShift - || EPtiKeyboardHalfQwerty != KeyboardLayout() ) -#endif //__SHIFT_KEY_LOOP -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - ) - - { - - SetLastPressedHashKeyStatus(EFalse); - - if(iHashKeyMan) - { - iHashKeyMan->CancelHashKeyTimer(); - if (aCode != EKeyOK) - { - iHashKeyMan->ClearSelectionModeHashKeyLoop(); - } - } - } - // Always commit the text before handling arrow keys - if (iMode == EHangul && IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - if ( aCode == EKeyRightArrow || - aCode == EKeyLeftArrow || - aCode == EKeyUpArrow || - aCode == EKeyDownArrow ) - { - CommitInlineEditL(); - iPtiEngine->ClearCurrentWord(); - } - } - TBool isPassNext = IsFlagSet(EFlagPassNextKey); - - switch (aCode) - { - case EKeyEscape: - -#ifdef RD_SCALABLE_UI_V2 - if( iFepFullyConstructed && iFepPluginManager) - { - iFepPluginManager->ResetMenuState(EFalse); - } -#endif - if (TryCloseUiL()) - { - response = EKeyWasConsumed; - // phrase creation - PhraseCreation(EFalse); - // phrase creation - PinyinPhraseCreation(EFalse); - } - break; -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD -#ifdef __SHIFT_KEY_LOOP - case EPtiKeyQwertyLeftShift: - if( EPtiKeyboardHalfQwerty == KeyboardLayout() ) - { - response = HandleHashKeyL(aLength); - (aLength == ELongKeyPress)? SetLastPressedHashKeyStatus(EFalse):SetLastPressedHashKeyStatus(ETrue); - } - break; -#endif //__SHIFT_KEY_LOOP -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - case EPtiKeyHash: - if(InputMode() == EHangul) - { - if (aLength == EShortKeyPress) - { - FepUI()->HandleKeyL(aCode, aLength); - response = EKeyWasConsumed; - } - else - { - //PhraseCreation(EFalse); - response = HandleHashKeyL(aLength); - (aLength == ELongKeyPress)? SetLastPressedHashKeyStatus(EFalse): - SetLastPressedHashKeyStatus(ETrue); - } - } - else if (InputMode()!= EZhuyin) - { - if (IsPinyinPhraseCreation() ) - { - ClearCcpuFlag( ECcpuStateHashDown ); - response = EKeyWasConsumed; - } - else - { - response = HandleHashKeyL(aLength); - (aLength == ELongKeyPress) - ? SetLastPressedHashKeyStatus(EFalse) - : SetLastPressedHashKeyStatus(ETrue); - } - } - else - { - PhraseCreation(EFalse); - response = HandleHashKeyL(aLength); - (aLength == ELongKeyPress) - ? SetLastPressedHashKeyStatus(EFalse) - : SetLastPressedHashKeyStatus(ETrue); - } - break; - case EKeyCBA1: - if(Japanese()) - { - if (FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - } - break; - } - // phrase creation the key CBA2 need to solve. - if ( IsEntryPhrase() ) - { - if ( FepUI()->HandleKeyL( aCode, aLength ) ) - { - response = EKeyWasConsumed; - break; - } - } - - if (!WesternPredictive()) - { - if (TryCloseUiL()) - { - response = EKeyWasConsumed; - } - } - break; - case EKeyCBA2: - if(Japanese()) - { - if (FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - } - break; - } - if (!WesternPredictive()) - { - if (TryCloseUiL()) - { - // phrase creation the key CBA2 need to solve. - PhraseCreation( EFalse ); - response = EKeyWasConsumed; - } - } - else - { - if ( IsFlagSet( EFlagInsideInlineEditingTransaction ) ) - { - InternalFepUI()->ExpireMultitapTimer(); - } - } - // phrase creation the key CBA2 need to solve. - EntryPhrase( EFalse ); - break; - case EPtiKeyStar: - if (IsFlagSet(EFlagPassNextKey)) - { - ClearFlag(EFlagPassNextKey); - } - else if ( !IsFepAwareTextEditor() ) - { - // The editor is MFNE or other non FEP aware text editor. - // Pass the key to the editor to handle. - response = EKeyWasNotConsumed; - } - else if (IsFlagSet(EFlagShiftKeyDepressed)) - { - response = EKeyWasConsumed; - } - else - { -#ifdef RD_SCALABLE_UI_V2 - iStarKeyPressed = ETrue; -#endif // RD_SCALABLE_UI_V2 - if (FepUI()->HandleKeyL(aCode, aLength, aEventCode)) - { - response = EKeyWasConsumed; - } -#ifdef RD_SCALABLE_UI_V2 - iStarKeyPressed = EFalse; -#endif // RD_SCALABLE_UI_V2 - } - break; - case EKeyRightArrow: - if (TryHandleArrowRightEventL(documentLength)) - { - response = EKeyWasConsumed; - break; - } - // fall through - case EKeyLeftArrow: - if (aCode == EKeyLeftArrow && TryHandleArrowLeftEventL(documentLength)) - { - response = EKeyWasConsumed; - break; - } - - if (IsCcpuFlagSet(ECcpuStateCopy | ECcpuStateCut)) - { - response = EKeyWasNotConsumed; - break; - } - else if (IsCcpuFlagSet(ECcpuStateStartCopy | ECcpuStateStartCut)) - { - TryHandleCommonArrowAndBackspaceFunctionalityL(aCode, response); - break; - } - - if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese && iMode != ELatin) - { - if(FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - } - } - else - { - if (WesternPredictive()) - { - response = HandleWesternPredictiveArrowKeyL(aCode, aLength); - } - else - { - if (iFepManState == EAknFepStateUIActive) - { - FepUI()->HandleKeyL(aCode, aLength); - response = EKeyWasConsumed; - } - else - { - /* - TCursorSelection currentEditorSelection(0,0); - if(iInputCapabilities.FepAwareTextEditor()) - { - iInputCapabilities.FepAwareTextEditor()-> - GetCursorSelectionForFep(currentEditorSelection); - } - - if(!IsMfneEditor() && - (PluginInputMode() == EPluginInputModeItut || - PluginInputMode() == EPluginInputModeFSQ) && - currentEditorSelection.Length() != 0) - { - response = EKeyWasConsumed; - break; - } - */ - - response = HandleNaviEventOutsideInlineEditL(aCode, aLength); - if (response == EKeyWasConsumed) - { - iCaseMan->UpdateCase(ENullNaviEvent); - } - else if (aCode == EKeyLeftArrow && !IsFlagSet(EFlagShiftKeyDepressed)) - { - iCaseMan->UpdateCase(ELeftNaviEvent); - } - else if (!IsFlagSet(EFlagShiftKeyDepressed)) - { - iCaseMan->UpdateCase(ERightNaviEvent); - } - } - } - } - break; - case EKeyDownArrow: - if( iWesternPredictive && IsFlagSet(EFlagInsideInlineEditingTransaction) && - ( EPtiKeyboard12Key == KeyboardLayout() ) && ( IsFlagSet(EFlagShiftKeyDepressed) || - HashKeySelectionInUse()&& IsCcpuFlagSet(ECcpuStateHashDown) ) ) - { - iPtiEngine->CommitCurrentWord(); - CommitInlineEditL(); - response = EKeyWasConsumed; - break; - } - - if (TryHandleArrowDownEventL(documentLength) || IsFlagSet(EFlagNoMatches)) - { - response = EKeyWasConsumed; - break; - } - - case EKeyUpArrow: - if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese && iMode != ELatin) - { - if ( (iAknEditorFlags & EAknEditorFlagNoLRNavigation) && - IsFlagSet(EFlagShiftKeyDepressed) ) - { - // Up or down key is pressed during shift key press. - ClearFlag(EFlagNoActionDuringShiftKeyPress); - return EKeyWasNotConsumed; - } - - if(FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - } - else - { - TryHandleCommonArrowAndBackspaceFunctionalityL(aCode, response); - } - } - else - { - if (iLanguageCapabilities.iInputLanguageCode == ELangThai && - iFepManState == EAknFepStateUIActive && - WesternPredictive() ) - { - if (FepUI()->HandleKeyL(aCode, aLength)) - { - ClearFlag(EFlagChangeInputMode); - response = EKeyWasConsumed; - } - break; - } - else if ( (iAknEditorFlags & EAknEditorFlagNoLRNavigation) && - IsFlagSet(EFlagShiftKeyDepressed) ) - { - // Up or down key is pressed during shift key press. - ClearFlag(EFlagNoActionDuringShiftKeyPress); - return EKeyWasNotConsumed; - } - if (WesternPredictive()) - { - // For customizabal of Down/Up scroll keypress action. - // If it need to custom it, the function of HandleKeyL returns EFalse. -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - if ( IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { - TInt wordIndexToSelect = 0; - - if(iQwertyInputMode && EPtiKeyboardHalfQwerty != KeyboardLayout()) - { - if(!iPrimaryCandidate) - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetIndexOfSecondaryCandidate, - &wordIndexToSelect ); - - if( iQwertyInputMode - && ( iExactWordPopupContent->IsPopUpVisible() - || ( iFepPluginManager && iFepPluginManager->IsTooltipOpenOnFSQ() ) ) - && aCode == EKeyUpArrow ) - { - iExactWordPopupContent->HidePopUp(); - - // When press up, if FSQ is opened, - // also need to check and close tooltip on it. - SendEventsToPluginManL( EPluginHideTooltip ); - - iPtiEngine->HandleCommandL( - EPtiCommandUserActionSetCurrentIndexOfCandidates, - &wordIndexToSelect ); - iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate ); - /* Update the Candidate List in case of Exact Typing as best predicted word is - selected from the tooltip to the editor */ - if(!iPrimaryCandidate) - iPtiEngine->HandleCommandL(EPtiCommandSetFlagToUpdateCandidates); - - TPtrC selectedWord = iPtiEngine->CurrentWord(); - UpdateInlineEditL( selectedWord, selectedWord.Length() ); - response = EKeyWasConsumed; - - } - else - { - LaunchCandidatePopupListL( wordIndexToSelect ); - response = EKeyWasConsumed; - } - } - else - { - if (!IsFlagSet(EFlagInsideMultitapInlineEditingTransaction)) - { - TInt lastCandidateIndex = iPtiEngine->NumberOfCandidates() -1; - if( EPtiKeyboard12Key == KeyboardLayout() && ( IsFlagSet(EFlagShiftKeyDepressed) || - HashKeySelectionInUse()&& IsCcpuFlagSet(ECcpuStateHashDown) ) ) - { - if (response != EKeyWasConsumed) - { - response = HandleWesternPredictiveArrowKeyL(aCode, aLength); - } - } - else if(aCode == EKeyUpArrow && lastCandidateIndex >= 0) - { - // Get last word on list - LaunchCandidatePopupListL( lastCandidateIndex ); - response = EKeyWasConsumed; - } - else - { - // Get next word on list (wrap around if at end) - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, - &wordIndexToSelect ); - wordIndexToSelect < lastCandidateIndex ? wordIndexToSelect++ : wordIndexToSelect = 0; - LaunchCandidatePopupListL( wordIndexToSelect ); - response = EKeyWasConsumed; - } - } - else - response = EKeyWasConsumed; - } - } - else - { - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - if(iFepManState == EAknFepStateUIActive && - FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; -#ifdef RD_INTELLIGENT_TEXT_INPUT - - // When press up, if FSQ is opened, - // also need to check and close tooltip on it. - SendEventsToPluginManL( EPluginHideTooltip ); - - // Predictive QWERTY (XT9) changes ----> - // Exact word popup is hidden when the exact word is selected - iExactWordPopupContent->HidePopUp(); - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - } - // normal operation of Down/Up scroll keypress action. - if (response != EKeyWasConsumed) - { - response = HandleWesternPredictiveArrowKeyL(aCode, aLength); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } // Predictive QWERTY (XT9) changes -#endif //RD_INTELLIGENT_TEXT_INPUT - } - else - { - if (iFepManState == EAknFepStateUIActive) - { - FepUI()->HandleKeyL(aCode, aLength); - response = EKeyWasConsumed; - } - else - { - TryHandleCommonArrowAndBackspaceFunctionalityL(aCode, response); - } - } - } - break; - case EKeyBackspace: - if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese && - !(iMode == ELatin || iMode == ENumber)) - { - if (FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - } - } - else if (iLanguageCapabilities.iInputLanguageCode == ELangVietnamese) - { - TCursorSelection cursorSelection; - if ( !IsFepAwareTextEditor() ) - { - response = EKeyWasNotConsumed; - } - else - { - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSelection); - if (cursorSelection.Length() != 0) - { - response = EKeyWasNotConsumed; - } -#ifdef RD_SCALABLE_UI_V2 - else if ( !documentLength - && ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut - || iFepPluginManager->PluginInputMode() == EPluginInputModeVkb ) ) - { - response = EKeyWasConsumed; - } -#endif - else - { - if (FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - } - else - { - if( WesternPredictive() ) - { - // We need to start the autoconcatination timer - SimulateKeyEventL(EKeyF24); - } - } - } - } - - } - else if (IsKoreanInputLanguage() && iMode == EHangul) - { - if (FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - } - } - else - { - if (iFepManState == EAknFepStateInitial) - { -#ifdef RD_SCALABLE_UI_V2 - if ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut ) - { - if ( iFepPluginManager->CurrentFepInputUI() && - FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - break; - } - } - if ( !documentLength - && ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut - || iFepPluginManager->PluginInputMode() == EPluginInputModeVkb ) ) - { - response = EKeyWasConsumed; - break; - - } -#endif - if (IsFlagSet(EFlagLineFeedCharacter)) - { - // restore cursor visibility - if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction)) - { - iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL(ETrue); - } - - iInputCapabilities.FepAwareTextEditor()->CancelFepInlineEdit(); - ClearFlag(EFlagInsideMultitapInlineEditingTransaction | - EFlagInsideInlineEditingTransaction | - EFlagLineFeedCharacter); - response = EKeyWasConsumed; - } - else - { - response = HandleNaviEventOutsideInlineEditL(aCode, aLength); - if (WesternPredictive() && response == EKeyWasNotConsumed) - { - // if we're passing a backspace to the editor simulate any old keypress - // to catch and check the state of play after the deletion - SimulateKeyEventL(EKeyF24); - } - if (response == EKeyWasNotConsumed) - { - if(iMode == EZhuyinFind) - { - SetFlag(EFlagSupressAutoUpdate); - } - if (iLongClearAfterCloseUI && - aLength == ELongKeyPress) - { - response = EKeyWasConsumed; - } - - iCaseMan->UpdateCase(EBackspaceEvent); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(IsAutoCompleteOn()) - { - TInt tailLength = 0; - iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, - &tailLength ); - if(tailLength > 0) - { - RemoveSuggestedAdvanceCompletionL(); - } - } -#endif - } - - // Clear the star key flag. - if( FepUI() ) - { - FepUI()->SetStarKeyFlag( EFalse ); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - else if (IsAutoCompleteOn()) - { - TInt tailLength = 0; - iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, - &tailLength ); - if(tailLength > 0) - { - TryRemoveNoMatchesIndicatorL(); - RemoveSuggestedAdvanceCompletionL(); - SimulateKeyEventL(EKeyF19); - UpdateCbaL(NULL); - response=EKeyWasConsumed; - } - else if(FepUI()->HandleKeyL(aCode, aLength)) - { - if( EPtiKeyboardHalfQwerty == KeyboardLayout() - && iWesternPredictive - && iCaseMan->CurrentCase() != EAknEditorUpperCase ) - { - ClearFlag(CAknFepManager::EFlagChangeInputMode); - } - iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - if(tailLength > 0) - { - RemoveSuggestedAdvanceCompletionL(); - } - response = EKeyWasConsumed; - } - } - else if(FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - } - SendEventsToPluginManL( EPluginHideTooltip ); - if(iExactWordPopupContent && iExactWordPopupContent->IsPopUpVisible()) - { - iExactWordPopupContent->HidePopUp(); - } -#else - else if (FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - } -#endif //RD_INTELLIGENT_TEXT_INPUT - } - break; - case EKeyDelete: -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(IsAutoCompleteOn()) - { - TInt tailLength = 0; - iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, - &tailLength ); - if(tailLength > 0) - { - RemoveSuggestedAdvanceCompletionL(); - } - } - - // When press delete key, if FSQ is opened, - // also need to check and close tooltip on it. - SendEventsToPluginManL( EPluginHideTooltip ); - - if(iExactWordPopupContent && iExactWordPopupContent->IsPopUpVisible()) - { - iExactWordPopupContent->HidePopUp(); - } - if ( IsFlagSet( EFlagInsideInlineEditingTransaction ) ) - { - TryRemoveNoMatchesIndicatorL(); - UpdateCbaL(NULL); - CommitInlineEditL(); - } -#endif //RD_INTELLIGENT_TEXT_INPUT - break; - case EKeyF19: // Fep simulated event to asynchronously update the case. - iCaseMan->UpdateCase(ENullNaviEvent); - response=EKeyWasConsumed; - ClearExtendedFlag(EExtendedFlagOkKeyPressOnCandidatePopup ); - break; - case EKeyF22: - if (WesternPredictive()) - { - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - if (CursorInsideWord()) - { - MoveCursorToEndOfWordL(); - } - if (iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep()) - { - iCaseMan->UpdateCase(ENullNaviEvent); - } - } - else if (iMode == ELatin) - { - iCaseMan->UpdateCase(ENullNaviEvent); - } - ClearCcpuFlag(ECcpuStateIgnoreStarUp); - response=EKeyWasConsumed; - break; - case EKeyF23: - if (WesternPredictive()) - { - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - if (CursorInsideWord()) - { - MoveCursorToStartOfWordL(); - } - if (iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep()) - { - iCaseMan->UpdateCase(ENullNaviEvent); - } - } - else if (iMode == ELatin) - { - iCaseMan->UpdateCase(ENullNaviEvent); - } - ClearCcpuFlag(ECcpuStateIgnoreStarUp); - response=EKeyWasConsumed; - break; - case EKeyF24: - if (WesternPredictive() && CursorInsideWord()) - { - // word concatenation - start the timer; add concatenated word - // to UDB on timer expiry - iConcatenationTimer->Start(EWordConcatenationTimeout, EWordConcatenationTimeout, - TCallBack(WordConcatenationTimerTimeoutCallback, this)); - } - response=EKeyWasConsumed; - break; - case EPtiKey0: //fall through - case EPtiKey1: - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - #ifdef RD_SCALABLE_UI_V2 - if ( aLength == ELongKeyPress && !isPassNext && (aCode == EPtiKey0) ) - { - if( !IsQwerty() && - !IsFlagSet(CAknFepManager::EFlagPassNextKey)&& - iFepPluginManager->PluginInputMode() != EPluginInputModeItut ) - { - iFepPluginManager->ClosePluginInputModeL( ETrue ); - } - } - #endif - if (IsFlagSet(EFlagLineFeedCharacter) && aCode != EPtiKey0) - { - // There is line feed character waiting. Pospone this event and handle - // line feed first. - CancelInlineEdit(); - if (!(iAknEditorFlags & EAknEditorFlagFindPane) || iQwertyInputMode) - { - SimulateKeyEventL(EKeyEnter); - SimulateKeyEventL(EKeyF19); // Asyncronous case update - } - SimulateKeyEventL((TPtiKey)aCode); - ClearFlag(EFlagLineFeedCharacter); - return EKeyWasConsumed; - } - if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese && iMode != ELatin) - { - if (EditorHasFreeSpace() || iFepManState == EAknFepStateUIActive) - { - if (FepUI()->HandleKeyL(aCode, aLength)) - { - ClearFlag(EFlagChangeInputMode); - response = EKeyWasConsumed; - } - // response is EKeyWasNotConsumed - } - } - else - { - //pass extra key received when doing secret text edit - if (IsFlagSet(EFlagPassNextKey)) - { - ClearFlag(EFlagPassNextKey); - } - else if (IsFlagSet(EFlagShiftKeyDepressed) || IsCcpuFlagSet(ECcpuStateHashDown)) - { - response = EKeyWasConsumed; - } - - // The key event is passed to the editor to handle in case of - // MFNE and other non FEP aware editors (response = EKeyWasNotConsumed). - else if ( IsFepAwareTextEditor() ) - { - if ( ( iMode != ENumber && iMode != ENativeNumber ) || - ( ( iMode == ENumber || iMode == ENativeNumber ) && aLength == ELongKeyPress)) - { - // Be default the key event is handled by FEP for FEP aware editors. - response = EKeyWasConsumed; - } - - // New character can be entered to the editor if there is - // space left in the editor. Editor can be modified also - // is the last character is multitapped or last character - // in inline state is replaced with a digit. - /*Hindi*/ - //This condition is added for Hindi language in case of multitapping of EKey1 to get - //a numeral value "1" because of a clasical case of Halant and ZWS getting added - //before numeral 1 which may affect incase of limited space in editor - - if (( EditorHasFreeSpace() - || (!WesternPredictive() && !EditorHasFreeSpace() && - (TAknFepUiIndicInputManager::IsIndicLangauge( - TLanguage(iLanguageCapabilities.iInputLanguageCode)))) - || IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) - || (IsFlagSet(EFlagInsideInlineEditingTransaction) && aLength == ELongKeyPress))) - { - ClearFlag(EFlagEditorFull); - - if (aLength == ELongKeyPress && - (iMode != ELatin && iMode != ENumber && iMode != ENativeNumber && iMode != EStrokeFind && iMode != EHangul) && - FepUI()->IsValidNumericLongKeyPress(aCode)) - { - if (iFepManState == EAknFepStateInitial) // Multitapping - { -#ifdef RD_SCALABLE_UI_V2 - if (iFepFullyConstructed && - iFepPluginManager->CurrentFepInputUI() ) - { - if (iFepPluginManager->CurrentFepInputUI()->HandleKeyL(aCode, - aLength)) - { - response = EKeyWasConsumed; - break; - } - } -#endif - // Current multitabbed character is replaced with a number. - TChar ch(aCode); - TBuf<1> buf; - buf.Append(ch); - NewCharacterL(buf); - CommitInlineEditL(); - iPtiEngine->ClearCurrentWord(); - } - else - { - // Long number key press is given to the editor. - TryCloseUiL(); - response = EKeyWasNotConsumed; - } - } - else if (FepUI()->HandleKeyL(aCode, aLength)) - { - if ( (iMode == EPinyin || iMode == EZhuyin || iMode == EStroke || iMode == ECangJie) - && iFepManState == EAknFepStateUIActive ) - { - if ( EditorState() ) - { - EditorState()->SetFlags( EditorState()->Flags() | EAknEditorFlagChinesePopup ); - } - } - ClearFlag(EFlagChangeInputMode); - // for japanese variant - if (IsFeatureSupportedJapanese() - && iMode == ENumber) - { - response = EKeyWasConsumed; - } - } - else - { - //By default, pass long keypress to an editor for inserting number. - response = EKeyWasNotConsumed; - //No need to handle long key press in dialer - if ( RProcess().SecureId().iId != KPhoneSecureId ) - { - - if ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic ) - { - SimulateKeyEventL( aCode + KLatinToArabicIndicDigitsDelta ); - response = EKeyWasConsumed; - } - else if( iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic ) - { - SimulateKeyEventL( aCode + KLatinToEasternArabicIndicDigitsDelta ); - response = EKeyWasConsumed; - } - /*Hindi*/ - else if ( iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari - || iPreviousEditingState == EDevanagariIndicNumeric ) - { - - SimulateKeyEventL( aCode + KLatinToDevanagariDigitsDelta ); - - response = EKeyWasConsumed; - } - } - } - } - } - } - break; - case EKeyOK: - { - if (iUiInterface->SoftkeysExist() && EditSubmenuInUse()) - { - if (iUiInterface->SoftkeyCommandId(ELeftSoftkeyIndex) == EAknFepSoftkeyStartCopy) - { - ProcessCommandL(EAknFepSoftkeyStartCopy); - response = EKeyWasConsumed; - break; - } - else if (iUiInterface->SoftkeyCommandId(ELeftSoftkeyIndex) == EAknFepSoftkeyStartCut) - { - ProcessCommandL(EAknFepSoftkeyStartCut); - response = EKeyWasConsumed; - break; - } - else if (iUiInterface->SoftkeyCommandId(ELeftSoftkeyIndex) == EEikCmdEditCopy) - { - ProcessCommandL(EEikCmdEditCopy); - response = EKeyWasConsumed; - break; - } - else if (iUiInterface->SoftkeyCommandId(ELeftSoftkeyIndex) == EEikCmdEditCut) - { - ProcessCommandL(EEikCmdEditCut); - response = EKeyWasConsumed; - break; - } - } - - if ( (iAknEditorFlags & EAknEditorFlagNoLRNavigation) && - IsFlagSet(EFlagShiftKeyDepressed) ) - { - // Selection key is pressed during shift key press. - ClearFlag(EFlagNoActionDuringShiftKeyPress); - return EKeyWasNotConsumed; - } - if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese && iMode != ELatin) - { - if (FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - } - } - else - { - if (IsFlagSet(EFlagShiftKeyDepressed) && - !(iAknEditorFlags & EAknEditorFlagSupressShiftMenu)) - { - response = EKeyWasConsumed; - } - else if (iFepManState == EAknFepStateUIActive) - { - if (FepUI()->HandleKeyL(aCode, aLength)) - { - response = EKeyWasConsumed; - } - } - else if (iMode == ELatin && !WesternPredictive() && - IsFlagSet(EFlagInsideMultitapInlineEditingTransaction)) - { - CommitInlineEditL(); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - // Accept current candidate (including possible auto-completed part) and insert space after the word - // if selection key pressed while inline editing (on Qwerty only!) - // this is not the expected behavior for half qwerty - - TBool isQwertyMode = iQwertyInputMode && - !( EPtiKeyboardHalfQwerty == KeyboardLayout() ); - if ( response == EKeyWasNotConsumed && iWesternPredictive && isQwertyMode && - IsFlagSet(EFlagInsideInlineEditingTransaction) - // For addition of ITI features on FSQ. - // If FSQ is opened with ITI features activated, don't commit as HW's action - && !( iFepPluginManager && iFepPluginManager->EnableITIOnFSQ() ) ) - { - - // If the primary candidate setting is exact typing, The tooltip/bubble always shows the best prediction. - // Word on the typing line is accepted into editor on selection key event.. - - iPtiEngine->CommitCurrentWord(); - CommitInlineEditL(); - TryCloseUiL(); - if(!static_cast(NextChar()).IsSpace()) - { - SimulateKeyEventL(EKeySpace); - } - else - { - TCursorSelection sel; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(sel); - sel.iCursorPos++; - sel.iAnchorPos++; - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel); - } - SimulateKeyEventL(EKeyF19); // asynchronous case update - - response = EKeyWasConsumed; - } - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - } - } - break; -#ifdef RD_INTELLIGENT_TEXT_INPUT - case EKeyPhoneEnd: - { - // Suggested word should get committed in exact typing - if ( iWesternPredictive && - IsFlagSet(EFlagInsideInlineEditingTransaction) ) - { - - // If the primary candidate setting is exact typing, The tooltip/bubble always shows the best prediction. - // Word on the typing line is accepted into editor on end key event.. - - iPtiEngine->CommitCurrentWord(); - CommitInlineEditL(); - TryCloseUiL(); - ClearFlag(CAknFepManager::EFlagNoMatches); - SimulateKeyEventL(EKeyF19); // asynchronous case update - } - } - break; -#endif //RD_INTELLIGENT_TEXT_INPUT - default: - break; - } - SchedulePostEventCheckL(aCode); - -#ifdef RD_SCALABLE_UI_V2 - if ( !isPassNext ) - { - SendEventsToPluginManL( EPluginKeyEvent, aCode ); - } -#endif - - return response; - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CAknFepManager::HandleShiftHalfQwertyChineseL(TEventCode aEventCode) - { - if (aEventCode == EEventKeyDown) - { - ClearCcpuFlag(ECcpuStateCbaShown); - SetFlag(EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress); - ClearFlag(EFlagNoActionDuringChrKeyPress); - SetFlag(EFlagQwertyShiftMode); - // Long press of shift key timer is activated. - iShiftKeypressMonitor->Start(EShiftKeyRepeatDelay, - EShiftKeyRepeatDelay, TCallBack(ResetShiftKeyMonitorCallback, - this) ); - } - else if (aEventCode == EEventKeyUp) - { - ClearFlag(EFlagShiftKeyDepressed - |EFlagNoActionDuringShiftKeyPress); - ClearFlag(EFlagQwertyShiftMode); - iShiftKeypressMonitor->Cancel(); - - if ( (iKeyPressedDuringShift)|| IsFlagSet(EFlagLongShiftKeyPress) ) - { - iKeyPressedDuringShift = EFalse; - ClearFlag( EFlagLongShiftKeyPress ); - if ( iFnKeyManager->FnKeyState() ) - { - iFnKeyManager->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone ); - } - UpdateIndicators(); - } - else - { - CAknEdwinState* editorState = EditorState(); - TInt permittedCases = editorState->PermittedCases(); - permittedCases = permittedCases == 0 ? - EAknEditorLowerCase | EAknEditorUpperCase : permittedCases; - - if (iMode == ELatin && (permittedCases & EAknEditorTextCase)) - { - // Latin case update is changed back to automatic if latin - // text case is allowed and the case is changed manually from #-key. - ClearFlag(CAknFepManager::EFlagSupressAutoUpdate); - } - TInt currentCase = iCaseMan->CurrentCase(); - - // Is current latin case last available case. - TBool lastCase = ( ( !(permittedCases & EAknEditorTextCase) - && ((currentCase == EAknEditorLowerCase) - || (currentCase == EAknEditorUpperCase - && !(permittedCases - & EAknEditorLowerCase)) ) - || (editorState->Flags() & EAknEditorFlagFixedCase) ) - || (editorState->Flags() - & EAknEditorFlagForceTransparentFepModes) ); - - if (iMode == ELatin - && !IsFlagSet(CAknFepManager::EFlagChangeInputMode) - && !lastCase) - { - if (iWesternPredictive) - { - // Input mode is still Latin. Only case is updated. - if (permittedCases & EAknEditorTextCase) - { - iCaseMan->ManualCaseUpdate(); - } - else - { - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - } - } - else - { - if(iCaseMan->CurrentCase() == EAknEditorUpperCase) - { - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - } - else - { - iCaseMan->SetCurrentCase(EAknEditorUpperCase); - } - } - - // Next time input mode is changed if any text is not entered before. - SetFlag(CAknFepManager::EFlagChangeInputMode); - } - else - { - // Input mode is incremented. - SetChangeModeByShiftAndSpace( EFalse ); - TryIncrementChineseModeForQwertyL(iMode); - - ClearFlag(CAknFepManager::EFlagChangeInputMode); - - if ( iMode == ELatin && iWesternPredictive ) // New mode after Increment. - - { - if (editorState->Flags() & EAknEditorFlagFixedCase) - { - // Only one fixed case is available. Use it. - iCaseMan->ConfigureCaseStateFromEditorState(); - SetFlag(CAknFepManager::EFlagChangeInputMode); - } - else if (editorState->Flags() - & EAknEditorFlagForceTransparentFepModes) - { - // Only lower case is used with find pane. - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - SetFlag(CAknFepManager::EFlagSupressAutoUpdate); - SetFlag(CAknFepManager::EFlagChangeInputMode); - } - else if (permittedCases & EAknEditorTextCase) - { - iCaseMan->SetCurrentCase(EAknEditorTextCase); - iCaseMan->UpdateCase(ENullNaviEvent); - } - else - { - if (permittedCases & EAknEditorUpperCase) - { - iCaseMan->SetCurrentCase(EAknEditorUpperCase); - if ( !(permittedCases - & EAknEditorLowerCase)) - { - // We need to move to next input mode since only upper case - // is permitted in Latin input mode. - SetFlag(CAknFepManager::EFlagChangeInputMode); - } - } - else - { - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - SetFlag(CAknFepManager::EFlagChangeInputMode); - } - } - } - } - } - } - } - -void CAknFepManager::HandleShiftQwertyChineseL(TEventCode aEventCode) - { - if ( IsFlagSet( EFlagQwertyChrKeyDepressed ) && - !IsFeatureSupportedJapanese() && - iCurrentFepUI->IsValidShiftKeyPress()) - { - ClearFlag(EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress); - LaunchLanguagesPopupListL(); - return; - } - - TInt language = iSharedDataInterface->InputTextLanguage(); - - if (aEventCode == EEventKeyUp) - { - ClearCcpuFlag(ECcpuStateCbaShown); - if (FepUI()) - { - FepUI()->HandleKeyL(EKeyLeftShift, EShortKeyPress); - } - TBool validShift = iCurrentFepUI->IsValidShiftKeyPress(); - - if (IsFlagSet(EFlagLongShiftKeyPress) ||iKeyPressedDuringShift) - { - if (iKeyPressedDuringShift || IsFlagSet(EFlagQwertyShiftMode)) - { - iShiftKeypressMonitor->Cancel(); - iKeyPressedDuringShift = EFalse; - ClearFlag(EFlagQwertyShiftMode); - } - } - else - if (IsFlagSet(EFlagQwertyShiftMode)) - { - if ( iMode != ELatin && validShift ) - { - iModeBefore = iMode; - TryChangeModeL(ELatin); - ClearFlag( EFlagQwertyShiftMode ); - } - } - else - { - if (iMode == ELatin) - { - TBool isWsPr= EFalse; - if (WesternPredictive()) - { - SetWesternPredictive(EFalse); - isWsPr = ETrue; - } - TInt Modetemp = iModeBefore; - TInt sharedDataMode = iSharedDataInterface->InputMode(); - if (Modetemp == EStroke && - iQwertyInputMode && - sharedDataMode == ECangJie) - { - Modetemp = ECangJie; - } - - TryChangeModeL(Modetemp); - if (isWsPr) - { - SetWesternPredictive(ETrue); - } - } - } - - ClearFlag(EFlagShiftKeyDepressed); - - if (IsFlagSet(EFlagLongShiftKeyPress) - && iMode == ELatin - && IsFlagSet(EFlagQwertyShiftMode))//latin shift ->abc - { - ClearFlag(EFlagQwertyShiftMode); - } - - if (IsFlagSet(EFlagLongShiftKeyPress)) //long keypress up - { - ClearFlag(EFlagLongShiftKeyPress - |EFlagNoActionDuringShiftKeyPress); - } - else // short keypress up - { - iShiftKeypressMonitor->Cancel(); - } - - ClearFlag(EFlagNoActionDuringChrKeyPress); - ClearFlag(EFlagNoActionDuringShiftKeyPress); - if ( validShift ) - { - UpdateIndicators(); - } - else - { - ClearFlag(EFlagQwertyShiftMode); - } - } - else - if (aEventCode == EEventKeyDown) - { - - SetFlag(EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress); - ClearFlag(EFlagNoActionDuringChrKeyPress); - - if (IsFlagSet(EFlagQwertyShiftMode)) - { - ClearFlag(EFlagQwertyShiftMode); - } - else - { - SetFlag(EFlagQwertyShiftMode); - if ( iCurrentFepUI->IsValidShiftKeyPress() - || iMode == ELatin ) - { - UpdateIndicators(); - } - // If the iShiftKeypressMonitor is actived now, cancel it first. - iShiftKeypressMonitor->Cancel(); - // Long press of shift key timer is activated. - iShiftKeypressMonitor->Start(EShiftKeyRepeatDelay, - EShiftKeyRepeatDelay, TCallBack( - ResetShiftKeyMonitorCallback, this)); - } - } - } -#endif //RD_INTELLIGENT_TEXT_INPUT -TKeyResponse CAknFepManager::HandleShiftKeyEventL(TEventCode aEventCode) - { - TKeyResponse response = EKeyWasNotConsumed; -#ifdef RD_INTELLIGENT_TEXT_INPUT - // GQF clarification - // In case irrespective Fn/shift key Text case should not be changed. - // Like Shift +Fn + Shift should not toggle the text case of the editor. - // Only Consecutive press of shift key should change the text case - if( iQwertyInputMode && (EEventKeyDown== aEventCode) && EPtiKeyboardHalfQwerty != KeyboardLayout()) - { - if( (iFnKeyManager->FnKeyState() == CAknFepFnKeyManager::EFnKeyNext) && - IsFlagSet(EFlagQwertyShiftMode)) - { - iFnKeyManager->ClearFnKeyState(); - iPtiEngine->SetCase((TPtiTextCase)EPtiCaseLower); - ClearFlag(EFlagQwertyShiftMode); - } - } - TInt language = iSharedDataInterface->InputTextLanguage(); -#endif - - if (iQwertyInputMode) - { - if ( !iInputCapabilities.FepAwareTextEditor() ) - { - response = EKeyWasNotConsumed; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - else if (language == ELangTaiwanChinese|| - language == ELangHongKongChinese || - language == ELangPrcChinese) - { - if ( ( EPtiKeyboardHalfQwerty == KeyboardLayout() && FepUI() ) && - iPtiEngine && - ( EPtiCaseFnUpper == iPtiEngine->Case() || EPtiCaseFnLower == iPtiEngine->Case() ) && - ( aEventCode == EEventKeyDown || aEventCode == EEventKeyUp ) ) - { - // Ignore the KeyUp event - if( aEventCode == EEventKeyDown ) - { - FepUI()->HandleKeyL( EPtiKeyQwertyLeftShift, - EShortKeyPress ); - } - if( aEventCode == EEventKeyUp ) - { - ClearCcpuFlag(ECcpuStateCbaShown); - } - } - else - { - if ((iAknEditorFlags & EAknEditorFlagFindPane)&& (CAknFepFnKeyManager::EFnKeyNone ==FnKeyState())) - { - if (aEventCode == EEventKeyUp) - { - ClearCcpuFlag(ECcpuStateCbaShown); - if ( iKeyPressedDuringShift ) - { - iKeyPressedDuringShift = EFalse; - } - else - { - TryIncrementModeChineseQwertyL( iMode ); - } - ClearFlag( EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress ); - } - else if(aEventCode == EEventKeyDown) - { - SetFlag(EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress); - ClearFlag(EFlagNoActionDuringChrKeyPress); - } - return EKeyWasConsumed; - } - if (EPtiKeyboardHalfQwerty == KeyboardLayout()) - { - HandleShiftHalfQwertyChineseL(aEventCode); - } - else - { - HandleShiftQwertyChineseL(aEventCode); - } - } - } -#endif // ITI flag - else if (aEventCode == EEventKeyDown) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - if( ( EPtiKeyboardHalfQwerty == KeyboardLayout() && FepUI() ) && - iPtiEngine && EditorHasFreeSpace()) - { - if (IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - iPtiEngine->CancelTimerActivity(); - } - if( EPtiCaseFnUpper == iPtiEngine->Case() || EPtiCaseFnLower == iPtiEngine->Case() ) - { - FepUI()->HandleKeyL( EPtiKeyQwertyLeftShift, - EShortKeyPress ); - iFnCharInsertedForShift = ETrue; - } - } -#endif // Half Qwerty flag -#endif // ITI flag - - // Shift key is pressed down. - SetFlag(EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress); - ClearFlag(EFlagNoActionDuringChrKeyPress); - if ( IsFlagSet(EFlagQwertyShiftMode) && IsFlagSet(EFlagNoActionDuringShiftKeyPress) ) - { - ClearFlag(EFlagQwertyShiftMode | EFlagNoActionDuringShiftKeyPress); - // If long shift key press flag is set, then do not do manual case update. - if (!IsFlagSet(EFlagLongShiftKeyPress)) - { - iCaseMan->ManualCaseUpdate(); - } - } - else - { - if (!(iCurrentFepUI->IsValidShiftKeyPress())) - { - return EKeyWasConsumed; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - if(!iFnCharInsertedForShift) -#endif //RD_INTELLIGENT_TEXT_INPUT -#endif //__HALF_QWERTY_KEYPAD - { - SetFlag(EFlagQwertyShiftMode); - } - - if(iShiftKeypressMonitor->IsActive()) - iShiftKeypressMonitor->Cancel(); - // Long press of shift key timer is activated. - iShiftKeypressMonitor->Start(EShiftKeyRepeatDelay, EShiftKeyRepeatDelay, - TCallBack(ResetShiftKeyMonitorCallback, this)); -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Shift kkey hack for GQF implementation. Need to check - // if it has any side effect. - if((iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyLock) - && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyForced) - && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyDown) - && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNext)) -#endif - UpdateIndicators(); - } - } - else if (aEventCode == EEventKeyUp) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - if( ( EPtiKeyboardHalfQwerty == KeyboardLayout() && FepUI() ) && - iPtiEngine ) - { - ClearCcpuFlag(ECcpuStateHashDown - | ECcpuStateHashKeyDeleteDone - | ECcpuStateChangeToPredictionMode); - if (IsCcpuFlagSet(ECcpuStateEdwinInSelectionMode)) - { - SetCcpuFlag(ECcpuStateSelectionEventPosted); - ClearCcpuFlag(ECcpuStateEdwinInSelectionMode); - SetFlag(EFlagLongShiftKeyPress); - - TKeyEvent ccpuStart = {0, EStdKeyLeftShift, 0, 0}; - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode); - } - if( CAknFepFnKeyManager::EFnKeyNone != FnKeyState()) - { - ClearFlag(EFlagQwertyShiftMode); - } - // iFnCharInsertedForShift = EFalse; - } - -#endif // Half Qwerty flag -#endif // ITI flag - - ClearFlag(EFlagShiftKeyDepressed); - ClearCcpuFlag(ECcpuStateCbaShown); - if ( !IsFlagSet(EFlagNoActionDuringShiftKeyPress) || - (IsFlagSet(EFlagNoActionDuringShiftKeyPress) && IsFlagSet(EFlagLongShiftKeyPress)) ) - { - ClearFlag(EFlagQwertyShiftMode); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - if( IsFlagSet(EFlagQwertyChrKeyDepressed) && IsFlagSet(EFlagNoActionDuringShiftKeyPress)) - { -#ifdef FF_DUAL_LANGUAGE_SUPPORT - // Currently dual language feature would work correctly for ITUT and Half Qwerty products - // Hence the dual language settings should also be displayed only for ITUT and Halfqwerty products - if(iKeyboardType == EPtiKeyboardHalfQwerty ) - LaunchDualLanguageSettingDialogL(); - else -#endif //FF_DUAL_LANGUAGE_SUPPORT - LaunchLanguagesPopupListL(); - ClearFlag(EFlagQwertyChrKeyDepressed|EFlagNoActionDuringChrKeyPress|EFlagNoActionDuringShiftKeyPress); - } - -#ifdef __SHIFT_KEY_LOOP - if( KeyboardLayout() == EPtiKeyboardHalfQwerty && - // looping does not happen for long key press - !IsFlagSet(EFlagLongShiftKeyPress) && - // looping does not happen in functionized state - iFnKeyManager->FnKeyState() == CAknFepFnKeyManager::EFnKeyNone && - // looping happens only when no action - // has happened when the shift key has been pressed - IsFlagSet(EFlagNoActionDuringShiftKeyPress) && !iFnCharInsertedForShift ) - { - HandleKeyEventL( EStdKeyLeftShift, EShortKeyPress ); - ClearFlag(EFlagQwertyShiftMode); - } - iFnCharInsertedForShift = EFalse; -#endif //__SHIFT_KEY_LOOP -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - if (IsFlagSet(EFlagLongShiftKeyPress)) //long keypress up - { - ClearFlag(EFlagLongShiftKeyPress); - } - else // short keypress up - { - iShiftKeypressMonitor->Cancel(); -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD -#ifdef __SHIFT_KEY_LOOP - // Cancel multitap timer - - if( iPtiEngine != NULL ) - { - iPtiEngine->CancelTimerActivity(); - } -#endif //__SHIFT_KEY_LOOP -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - } - ClearFlag( EFlagNoActionDuringShiftKeyPress ); -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Shift kkey hack for GQF implementation. Need to check - // if it has any side effect. - if((iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyLock) - && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyForced) - && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyDown) - &&(iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNext)) -#endif - UpdateIndicators(); - } - } - else - { - if ( !iInputCapabilities.FepAwareTextEditor() && (!iCandidatePopup)) - { - response = EKeyWasNotConsumed; - } - else if (aEventCode == EEventKeyDown) - { - if (Japanese() && iInputCapabilities.FepAwareTextEditor()) - { - if (!(iCurrentFepUI->IsValidShiftKeyPress())) - { - return EKeyWasConsumed; - } - TryCloseUiL(); - } - - // Shift key is pressed down but no any other key is pressed. - ClearCcpuFlag(ECcpuSupressEditMenuFromShiftUp); - SetFlag(EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress); - if ( !(iAknEditorFlags & EAknEditorFlagNoLRNavigation)) - { - // Cancel the timer first if active. - // EEventKeyUp is not sent always for shift key during debugging on emulator. - iShiftKeypressMonitor->Cancel(); - // Long press of shift key timer is activated. - iShiftKeypressMonitor->Start(EShiftKeyRepeatDelay, EShiftKeyRepeatDelay, - TCallBack(ResetShiftKeyMonitorCallback, this)); - } - if ( IsFlagSet(EFlagInsideInlineEditingTransaction) && - WesternPredictive() && iFepManState == EAknFepStateUIActive ) - { - TryRemoveNoMatchesIndicatorL(); - UpdateCbaL(NULL); - } - } - else if (aEventCode == EEventKeyUp) - { - ClearFlag(EFlagShiftKeyDepressed); - ClearCcpuFlag(ECcpuStateCbaShown); - if (IsFlagSet(EFlagLongShiftKeyPress)) //long keypress up - { - ClearFlag(EFlagLongShiftKeyPress | EFlagNoActionDuringShiftKeyPress); - // Shift long key press timer started, in between release of - // Shift key should cancel active long shift key timer. - iShiftKeypressMonitor->Cancel(); - if (!iInputCapabilities.FepAwareTextEditor()) - { - TKeyEvent ccpuStart = {0, EStdKeyLeftShift, 0, 0}; - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKeyUp); - } - } - else // short keypress up - { - iShiftKeypressMonitor->Cancel(); - if (!(iAknEditorFlags & EAknEditorFlagSupressShiftMenu) && - IsFlagSet(EFlagNoActionDuringShiftKeyPress) && //iCurrentFepUI->IsValidShiftKeyPress() && - !IsCcpuFlagSet(ECcpuSupressEditMenuFromShiftUp)) - { - // Shift key is released before any other key is pressed. - // Edit menu is launched if it is allowed. - ClearFlag(EFlagNoActionDuringShiftKeyPress); - //Check if pointer event drag is not there before launch of edit menu. - if( !IsExtendedFlagSet(EExtendedFlagPointerEventTypeEDrag)) - { - LaunchSelectModeMenuL(); - } - - if (iInputCapabilities.FepAwareTextEditor()) - { - response = EKeyWasConsumed; - } - } - } - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (aEventCode == EEventKeyUp && - EPtiKeyboardQwerty4x10 == KeyboardLayout() && FepUI()) - { - FepUI()->HandleKeyL(EKeyLeftShift, EShortKeyPress); - } -#endif - return response; - } - -TKeyResponse CAknFepManager::HandleThai0KeyEvent(TEventCode aEventCode, TKeyPressLength aLength, - TBool& aThai0KeyHandling) - { - TKeyResponse response = EKeyWasNotConsumed; - aThai0KeyHandling = EFalse; - if(iQwertyInputMode) - { - return response; - } - - if ( iLanguageCapabilities.iInputLanguageCode == ELangThai && - iMode != ENumber && iMode != ENativeNumber ) - { - if (!IsPredictive()) - { - if (aEventCode != EEventKeyUp) - { - response = EKeyWasConsumed; - if ( aLength == ELongKeyPress) - { - if (!iLongThai0Key) - { - iLongThai0Key = ETrue; - response = EKeyWasNotConsumed; // 0 to editor - aThai0KeyHandling = ETrue; - } - } - } - - else if (aEventCode == EEventKeyUp) - { - if (iLongThai0Key) - { - iLongThai0Key = EFalse; - response = EKeyWasConsumed; - } - else - { - response = EKeyWasNotConsumed; // Show Thai 0 key SCT - aThai0KeyHandling = ETrue; - } - } - } - } - return response; - } - -TBool CAknFepManager::HandleQwertyChrKeyEventL(TEventCode aEventCode) - { - TBool response = EFalse; - if ( !iQwertyInputMode || !iInputCapabilities.FepAwareTextEditor() ) - { - return response; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(IsFlagSet(EFlagShiftKeyDepressed)) - { - iKeyPressedDuringShift = ETrue; - } -#ifdef __HALF_QWERTY_KEYPAD - - if( (aEventCode == EEventKeyUp) ) - { - ClearFlag(EFlagQwertyChrKeyDepressed); - } - // Handle shift for Half Qwerty seperately - if( ( EPtiKeyboardHalfQwerty == KeyboardLayout() && FepUI() ) && - iPtiEngine /*&& - ( aEventCode == EEventKeyDown || aEventCode == EEventKeyUp ) */ && !IsFlagSet(EFlagShiftKeyDepressed)) - { - - if( HandleChrKeyForHalfQwertyL(aEventCode) ) - { - return ETrue; - } - } -#endif // Half Qwerty flag - // This part of code for error fixing. - // whenever fep is Fnupper state, press of "CHR" key - // always launch SCT table. - if( (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNone)&& - (IsFlagSet(EFlagQwertyShiftMode) || IsFlagSet(EFlagLongShiftKeyPress))) - { - ClearFlag(EFlagNoActionDuringShiftKeyPress | EFlagLongShiftKeyPress | EFlagShiftKeyDepressed | EFlagQwertyShiftMode); - iShiftKeypressMonitor->Cancel(); - SetFlag(EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress); - return response; - } - - -#endif // ITI flag - if (aEventCode == EEventKeyDown) - { - SetFlag(EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress); - response = EFalse; - - if (IsFeatureSupportedJapanese() || - ( IsChineseInputLanguage() -#ifdef RD_INTELLIGENT_TEXT_INPUT - && KeyboardLayout() == EPtiKeyboardHalfQwerty -#endif //RD_INTELLIGENT_TEXT_INPUT - ) ) - { - // start timer for Chr key long pressing - iChrKeypressMonitor->Start(EChrKeyRepeatDelay, EChrKeyRepeatDelay, - TCallBack(HandleChrKeyMonitorCallback, this)); - } - } - else if (aEventCode == EEventKeyUp) - { - if (iChrKeypressMonitor->IsActive()) - { - iChrKeypressMonitor->Cancel(); - } - - if (IsFlagSet(EFlagShiftKeyDepressed) && IsFlagSet(EFlagNoActionDuringChrKeyPress) -#ifdef RD_INTELLIGENT_TEXT_INPUT - || - IsFlagSet(EFlagQwertyShiftMode) -#endif - ) - { - ClearFlag(EFlagNoActionDuringShiftKeyPress | EFlagLongShiftKeyPress | - EFlagShiftKeyDepressed | EFlagQwertyShiftMode |EFlagQwertyChrKeyDepressed); - iShiftKeypressMonitor->Cancel(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - iKeyPressedDuringShift = EFalse; -#endif - UpdateIndicators(); - // In Japanese variant, the selecting input language is unnecessary. -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (EPtiKeyboardQwerty4x10 == KeyboardLayout() || EPtiKeyboardHalfQwerty == KeyboardLayout()) - { - if (!IsFeatureSupportedJapanese() && iCurrentFepUI->IsValidShiftKeyPress()) - { -#ifdef FF_DUAL_LANGUAGE_SUPPORT - // Currently dual language feature would work correctly for ITUT and Half Qwerty products - // Hence the dual language settings should also be displayed only for ITUT and Halfqwerty products - if(iKeyboardType == EPtiKeyboard12Key || iKeyboardType == EPtiKeyboardHalfQwerty ) - LaunchDualLanguageSettingDialogL(); - else -#endif //FF_DUAL_LANGUAGE_SUPPORT - LaunchLanguagesPopupListL(); - } - } - else - { -#endif - if (!IsFeatureSupportedJapanese() && iCurrentFepUI->IsValidShiftKeyPress()) - { - LaunchLanguagesPopupListL(); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - else if (IsFlagSet(EFlagNoActionDuringChrKeyPress)) - { - // pass key to Chinese UI manager in Chinese qwerty input for sct table - if(IsChineseInputLanguage() && iMode != ELatin) - { - FepUI()->HandleKeyL(EStdKeyLeftFunc, EShortKeyPress); - ClearFlag( EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress ); - } - else if (Japanese()) - { - if (iMode != EHiragana) - { - // Commit characters -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Set the iSupressCursorMoveToEndChrKeyPressed when cursor is in - // between two words and SCT is launched - iSupressCursorMoveToEndChrKeyPressed = ETrue; -#endif //RD_INTELLIGENT_TEXT_INPUT - HandleChangeInFocus(); - LaunchSpecialCharacterTableL(); - } - } - else if ( IsAbleToLaunchSCT() ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Set the iSupressCursorMoveToEndChrKeyPressed when cursor is in - // between two words and SCT is launched - iSupressCursorMoveToEndChrKeyPressed = ETrue; -#endif //RD_INTELLIGENT_TEXT_INPUT - HandleChangeInFocus(); - LaunchSpecialCharacterTableL(); - } - else if(IsFlagSet(EFlagQwertyChrKeyDepressed)) - { - ClearFlag(EFlagQwertyChrKeyDepressed); - } - } - else - { - FepUI()->ExpireMultitapTimer(); - ClearFlag(EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress); - - response = ETrue; - } - } - return response; - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD -TKeyResponse CAknFepManager::HandleChrKeyForHalfQwertyL( TEventCode aEventCode) - { - if ((IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) && !(EPtiCaseFnUpper == iPtiEngine->Case() || EPtiCaseFnLower == iPtiEngine->Case())) - { - iPtiEngine->CancelTimerActivity(); - } - // in functionized mode the chr key is mapped to specific chars - // and should therefore be handled by the states - if ( EPtiCaseFnUpper == iPtiEngine->Case() || EPtiCaseFnLower == iPtiEngine->Case() || IsReverseFnkeyInput()) - { - if( aEventCode == EEventKeyDown && ( EditorHasFreeSpace() || - IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ))) - { - FepUI()->HandleKeyL( EStdKeyLeftFunc, - EShortKeyPress ); - } - return EKeyWasConsumed; - } - // in non-functionized predictive mode, - // a long key press of the chr key should produce the SCT - // a short key press should produce the candidate list - if ( ( iWesternPredictive || IsChineseInputLanguage() ) /*&& - ( iMode != EPinyin && iMode != EStroke && iMode != EZhuyin )*/ ) - { - - if(!iChrKeypressMonitor->IsActive()) - { - // this monitors long key presses of chr key - // the framework does not give us the iRepeats info - // for chr key for some reason - iChrKeypressMonitor->Start(EHalfQwertyChrKeyRepeatDelay, EHalfQwertyChrKeyRepeatDelay, - TCallBack(HandleChrKeyMonitorCallback, this)); - } - - if( aEventCode != EEventKeyUp ) - { - SetFlag( EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress); - return EKeyWasConsumed; - } - - if ( aEventCode == EEventKeyUp && IsFlagSet(EFlagNoActionDuringChrKeyPress) ) - { - if(!iChrLongKeyPress ) - { - // if we have come here it's a short press - // the flag EFlagNoActionDuringChrKeyPress is cleared in the timer callback - if(!IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) || IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - // when not in inline editing mode, - // chr key should produce the SCT - if ( !IsChineseInputLanguage() ) - { - LaunchSpecialCharacterTableL(); - } - else - { - FepUI()->HandleKeyL( EStdKeyLeftFunc, - EShortKeyPress ); - } - } - ClearFlag( EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress); - - iChrKeypressMonitor->Cancel(); - - TInt wordToFocus = KWordToFocusInCandidateList; - TInt numberOfCandidates = iPtiEngine->NumberOfCandidates(); - if (numberOfCandidates > 1) - { - wordToFocus = KWordToFocusInCandidateList; - } - LaunchCandidatePopupListL(wordToFocus); - - return EKeyWasConsumed; - } - else - { - - - // Cancel the timer - iChrKeypressMonitor->Cancel(); - - // commit the characters - HandleChangeInFocus(); - - // Clear the chr key depressed flag - ClearFlag( EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress); - // launch the special character table - iChrLongKeyPress = EFalse; - - if ( IsAbleToLaunchSCT() ) - { - LaunchSpecialCharacterTableL(); - } - - return EKeyWasConsumed; - } - } - else - { - return EKeyWasNotConsumed; - } - } - return EKeyWasNotConsumed; - } -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - -TKeyResponse CAknFepManager::HandleQwertyControlKeyEventL(const TKeyEvent& aKeyEvent, - TEventCode aEventCode) - { - TKeyResponse response = EKeyWasConsumed; -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (EPtiKeyboardQwerty4x10 == KeyboardLayout()) - { - if( iCurrentFepUI && !iCurrentFepUI->IsValidShiftKeyPress() && aEventCode == EEventKeyUp ) - { - FepUI()->HandleKeyL(EKeyLeftCtrl, EShortKeyPress); - return EKeyWasConsumed; - } - } -#endif - - // need to ignore [Ctrl] + the following simbol keys - // because FEP doesn't consume [Ctrl] combination keys. - if (Japanese() && aEventCode == EEventKey) - { - TBool comsume = EFalse; - switch (aKeyEvent.iScanCode) - { - case EStdKeyNkpPlus: - case EPtiKeyQwertyPlus: - case EPtiKeyQwertyMinus: - case EPtiKeyQwertyComma: - case EPtiKeyQwertySemicolon: - case EPtiKeyQwertyFullstop: - case EPtiKeyQwertyHash: - case EPtiKeyQwertySlash: - case EPtiKeyQwertyApostrophe: - case EPtiKeyQwertySpace: - comsume = ETrue; - break; - default: - break; - } - if (comsume) - { - return EKeyWasConsumed; - } - } - -#ifdef RD_SCALABLE_UI_V2 - if (aKeyEvent.iModifiers & EModifierCtrl - && (aKeyEvent.iScanCode == EPtiKeyQwertyC || aKeyEvent.iScanCode == EPtiKeyQwertyV || - aKeyEvent.iScanCode == EPtiKeyQwertyX)) - { - SendEventsToPluginManL( EPluginSyncFepAwareText ); - // Let copy / cut / paste events to flow through. - response = EKeyWasNotConsumed; - } -#endif -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - // Ctrl combinations which affect the editor state, must commit the current inline edit. - // Otherwise the currently active inline word might be lost. - if ( iWesternPredictive && iQwertyInputMode && IsFlagSet(EFlagInsideInlineEditingTransaction) ) - { - switch (aKeyEvent.iScanCode) - { - case EStdKeyUpArrow: - case EStdKeyDownArrow: - case EStdKeyLeftArrow: - case EStdKeyRightArrow: - case EPtiKeyQwertyC: - case EPtiKeyQwertyV: - case EPtiKeyQwertyX: - case EPtiKeyQwertyA: - iPtiEngine->CommitCurrentWord(); - TryCloseUiL(); - break; - default: - break; - } - } - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - - if (aEventCode != EEventKeyUp) - { - return EKeyWasNotConsumed; - } - - if(iQwertyInputMode) - { - -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Query ptiEngine to know if the scancode maps to EPtiKeyQwertyC, - // EPtiKeyQwertyV or EPtiKeyQwertyX. - // we should not always rely on scancode as products may change it, while - // still having the 'C', 'V' and 'X' mappings - - TBuf<32> mapData; - iPtiEngine->MappingDataForKey((TPtiKey)aKeyEvent.iScanCode, mapData, EPtiCaseUpper); - - if( mapData.Length() > 0 ) - { - if( mapData[0] == EPtiKeyQwertyC || mapData[0] == EPtiKeyQwertyV || - mapData[0] == EPtiKeyQwertyX ) - { - // Let copy / cut / paste events to flow through. - response = EKeyWasNotConsumed; - } - } -#else - if (aKeyEvent.iScanCode == EPtiKeyQwertyC || aKeyEvent.iScanCode == EPtiKeyQwertyV || - aKeyEvent.iScanCode == EPtiKeyQwertyX) - { - // Let copy / cut / paste events to flow through. - response = EKeyWasNotConsumed; - } -#endif - - - if (aKeyEvent.iScanCode == EStdKeyRightShift || aKeyEvent.iScanCode == EStdKeyLeftShift -#ifdef RD_INTELLIGENT_TEXT_INPUT - || - IsFlagSet(EFlagQwertyShiftMode) -#endif //RD_INTELLIGENT_TEXT_INPUT - ) - { - if(!iInputCapabilities.FepAwareTextEditor()) - { - response = EKeyWasNotConsumed; - } - else - { - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - if ( iMode != ENumber && iMode!= ENativeNumber ) - { - iModeBefore = iMode; - } -#ifdef RD_HINDI_PHONETIC_INPUT - - if(iSharedDataInterface->InputTextLanguage() == KLangHindiPhonetic) - { - TryChangePhoneticModeL(); - } - else - { -#endif - if((!(IsOnlyNumericPermitted() || - (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly))) && - TAknFepUiIndicInputManager::IsIndicLangauge( - (TLanguage)iSharedDataInterface->InputTextLanguage())) - { - if(iLanguageCapabilities.iInputLanguageCode == ELangEnglish) - { - ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage()); - } - else - { - ChangeInputLanguageL(ELangEnglish); - } - } - else - { - TryIncrementModeChineseQwertyL(iMode); - } -#ifdef RD_HINDI_PHONETIC_INPUT - } -#endif - } - ClearFlag(EFlagShiftKeyDepressed); - if ( !IsFlagSet(EFlagNoActionDuringShiftKeyPress) || - (IsFlagSet(EFlagNoActionDuringShiftKeyPress) && IsFlagSet(EFlagLongShiftKeyPress)) ) - { - ClearFlag(EFlagQwertyShiftMode); - } - if (IsFlagSet(EFlagLongShiftKeyPress)) //long keypress up - { - ClearFlag(EFlagLongShiftKeyPress); - } - else // short keypress up - { - iShiftKeypressMonitor->Cancel(); - } - ClearFlag( EFlagNoActionDuringShiftKeyPress ); - UpdateIndicators(); - } - else if(aKeyEvent.iScanCode == EStdKeySpace) // switch between last used Chinese input mode and English - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - // Toggle the predictive mode with ctrl+space - if ( (iPermittedInputModes & EAknEditorTextInputMode) && - !(iAknEditorFlags & EAknEditorFlagNoT9) && - iMode == ELatin && - iLanguageCapabilities.iSupportsWesternQwertyPredictive ) - { - if (iWesternPredictive) - { - //ProcessCommandL(EAknCmdT9PredictiveT9Off); - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - //HandleChangeInFocus(); - if (iMode != ELatin) - { - TryChangeModeL(ELatin); - } - else - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - RemoveSuggestedAdvanceCompletionL(); -#endif // RD_INTELLIGENT_TEXT_INPUT - CommitInlineEditL(); - } - SetCcpuFlag(ECcpuStataCommitPredictiveWord); - SetWesternPredictive(EFalse); - HandleChangeInFocus(); - } - else - { - //ProcessCommandL(EAknCmdMultitapPredictiveT9On); - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - //HandleChangeInFocus(); - SetWesternPredictive(ETrue); - TryCloseUiL(); - TryChangeModeL(ELatin); - } - // Reset the function key state,if predictive mode is cahnged. - if (iFnKeyManager) - { - iFnKeyManager->ClearFnKeyState(); - } - } - else // Predictive QWERTY (XT9) changes <---- - { -#endif //RD_INTELLIGENT_TEXT_INPUT - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - if(iMode != iModeBefore && iMode != ENumber && iMode != ENativeNumber ) - { - TInt mode = iMode; - if(iMode != ELatin && iModeBefore != ELatin) // more than one Chinese input modes - { - TryChangeModeL(ELatin); - } - else - { - TryChangeToModeBeforeL(); - } - iModeBefore = mode; // deposit previous input mode - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif //RD_INTELLIGENT_TEXT_INPUT - } -#ifdef RD_INTELLIGENT_TEXT_INPUT //// Predictive QWERTY (XT9) changes: open the edit menu with Fn+space ----> - else if (aKeyEvent.iScanCode == EStdKeyLeftFunc) - { - LaunchSelectModeMenuL(); - } // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - } - - if (IsCcpuFlagSet(ECcpuStatePosted)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Query ptiEngine to know if the scancode maps to EPtiKeyQwertyC, - // EPtiKeyQwertyV or EPtiKeyQwertyX. - // we should not always rely on scancode as products may change it, while - // still having the 'C', 'V' and 'X' mappings - - TBuf<32> mapData; - iPtiEngine->MappingDataForKey((TPtiKey)aKeyEvent.iScanCode, mapData, EPtiCaseUpper); - - if( mapData.Length() > 0 ) - { - if( mapData[0] == EPtiKeyQwertyC || mapData[0] == EPtiKeyQwertyX ) - { - // Let copy / cut events to flow through. - response = EKeyWasNotConsumed; - } - } -#else - if (aKeyEvent.iScanCode == EPtiKeyQwertyC || aKeyEvent.iScanCode == EPtiKeyQwertyX) - { - // Let copy / cut events to flow through. - response = EKeyWasNotConsumed; - } -#endif - ResetCcpuFlags(); - } - - -//Removed as part of the fix STAA-7FXCTK - -/* if (EPtiKeyboardQwerty4x10 == KeyboardLayout()) - { - FepUI()->HandleKeyL(EKeyLeftCtrl, EShortKeyPress); - }*/ - - - return response; - } - -TBool CAknFepManager::HandleQwertyKeyEventL(const TKeyEvent& aKeyEvent, TKeyResponse& aResponse) - { - TBool keyHandled = EFalse; - aResponse = EKeyWasNotConsumed; -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iKeyBackSpaceHit && (EKeyBackspace != aKeyEvent.iCode || EStdKeyBackspace != aKeyEvent.iScanCode)) - iKeyBackSpaceHit = 0; - - if(IsMfneEditor()) - { - // multi-field editors need the key event to be sent to them directly - // therefore not consuming it here - return EFalse; - } - - if(IsFlagSet(EFlagShiftKeyDepressed)) - { - iKeyPressedDuringShift = ETrue; - } - // This part of code for error fixing - // After short pressing of Fn/shift, if user press enter key, delete key - // it will reset the shift key and Fn key state. - if( EKeyEnter == aKeyEvent.iCode || EStdKeyEnter == aKeyEvent.iScanCode|| - EKeyBackspace == aKeyEvent.iCode || EStdKeyBackspace == aKeyEvent.iScanCode) - { - // if the shift key is still depressed, - // don't clear the qwerty shift mode - if(!IsFlagSet(EFlagShiftKeyDepressed)) - ClearFlag(EFlagQwertyShiftMode); - if( iFnKeyManager->FnKeyState() == CAknFepFnKeyManager::EFnKeyNext ) - { - iFnKeyManager->ClearFnKeyState(); - } - } -#endif - - if ( iQwertyInputMode && - ( EditorHasFreeSpace() || -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - KeyEventWillReplaceCharacter( aKeyEvent ) || -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - ( Japanese() && iFepManState == EAknFepStateUIActive ) ) ) - { - if (IsFlagSet(EFlagPassNextKey)) - { -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Don't clear the pass next flag yet on the simulated "rollback key" - // used with secret editors, the actual key code to be entered to the - // editor will follow next. - if ( aKeyEvent.iCode != EKeyF20 ) -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - ClearFlag(EFlagPassNextKey); - return ETrue; - } - - TInt keyScanCode = aKeyEvent.iScanCode; -#if defined(__WINS__) - if ( keyScanCode == EStdKeyNkpPlus ) - { - // Workaround solution for the qwerty '+' key in emulator environment. - // I did not find a way how to to configure epoc_352x416_Qwerty.ini to send '+' keyevent. - keyScanCode = 0x2b; // '+' key. - } -#endif - TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor); -#ifdef RD_INTELLIGENT_TEXT_INPUT - TInt keyLayout =iSharedDataInterface->KeyboardLayout(); - if (IsOnlyNumericPermitted() && phoneIdle && -#ifdef __REVERSE_FN_KEY_SUPPORTED - !iIsReverseFnkeyInput && -#endif - (keyLayout != EPtiKeyboardHalfQwerty )) -#else - if (IsOnlyNumericPermitted() && phoneIdle) -#endif - { - return ETrue; - } - //if this SpecialNumeric editor, do not consume event. - if (IsOnlyNumericPermitted() && IsSpecialNumericEditor()) - { - return EFalse; - } - - -#ifdef FF_HOME_SCREEN_EASY_DIALING -#ifdef RD_INTELLIGENT_TEXT_INPUT - - // This piece of code part of error fixing - // The Fep will insert the char, if Phone application launch the - // Phone number acquire editor in idle mode - // Specially Fep does not maintain Fn key state for non Fepware editor. - // So, Intermediate state of FnKey like FnNext will not work - // Hold on Fn key modify the modifier of of key event. - const TBool fnDown = (aKeyEvent.iModifiers & EModifierRightFunc); - if( phoneIdle && fnDown && iFnKeyManager ) - { - iFnKeyManager->SetFnKeyState(CAknFepFnKeyManager::EFnKeyDown); - SetCase((TCase)EFnKeyLowerCase); - } -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // FF_HOME_SCREEN_EASY_DIALING - - - const TBool shifted = (aKeyEvent.iModifiers & (EModifierLeftShift | - EModifierRightShift | EModifierShift)); - - // This is needed for forcing shif state if this is the first key press in - // phone idle. - if (shifted && phoneIdle) - { - SetFlag(EFlagQwertyShiftMode); - } - - - if (aKeyEvent.iRepeats == 1) - { - iKeyRepeat = ELongKeyPress; - } - else - { - iKeyRepeat = EShortKeyPress; - } - - if ( IsFlagSet(EFlagShiftKeyDepressed) && - IsChineseInputLanguage() && - keyScanCode == EPtiKeyQwertySpace) - { - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - ClearFlag(EFlagQwertyShiftMode); - ClearFlag(EFlagLongShiftKeyPress); - SetChangeModeByShiftAndSpace( ETrue ); - TryIncrementChineseModeForQwertyL(iMode); - keyHandled = ETrue; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - else - { - if(iKeyRepeat == ELongKeyPress && iPtiEngine->CurrentWord().Length() == EMaximumFepWordLength) - { - keyHandled = ETrue; - } - else - { - keyHandled = FepUI()->HandleKeyL(keyScanCode, iKeyRepeat); - if( EPtiKeyboardHalfQwerty == KeyboardLayout() - && iWesternPredictive - && iCaseMan->CurrentCase() != EAknEditorUpperCase ) - { - ClearFlag(CAknFepManager::EFlagChangeInputMode); - } - if ( keyHandled && iFepManState == EAknFepStateUIActive - && (iMode == EPinyin || iMode == EZhuyin || iMode == EStroke || iMode == ECangJie) ) - { - if ( EditorState() ) - { - EditorState()->SetFlags( EditorState()->Flags() | EAknEditorFlagChinesePopup ); - } - } - } - } -#else - if (IsChineseInputLanguage() && keyScanCode == EStdKeyBackspace) - { - keyHandled = FepUI()->HandleKeyL(keyScanCode, iKeyRepeat); - } - else - { - keyHandled = FepUI()->HandleKeyL(keyScanCode, EShortKeyPress); - } -#endif //RD_INTELLIGENT_TEXT_INPUT - - if (keyHandled) - { - aResponse = EKeyWasConsumed; -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY changes ----> - ShowExactWordPopupIfNecessaryL(); - // Predictive QWERTY changes <---- - } -#endif //RD_INTELLIGENT_TEXT_INPUT - - // The indicators should be updated only if the key was handled. Otherwise - // the shift-copy-pasting will mess up the indicators. -#ifdef RD_INTELLIGENT_TEXT_INPUT - TInt language = iSharedDataInterface->InputTextLanguage(); - TBool IsChineseInput = language == ELangTaiwanChinese|| - language == ELangHongKongChinese || - language == ELangPrcChinese; -#endif - if ( !shifted ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(IsChineseInput && (iKeyboardType!= EPtiKeyboardHalfQwerty)) - { - ClearFlag(EFlagQwertyShiftMode); - UpdateIndicators(); - } - else if( keyHandled ) - { -#endif - ClearFlag(EFlagQwertyShiftMode); - UpdateIndicators(); - -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - -#ifdef RD_SCALABLE_UI_V2 - if ( ( (keyScanCode >= EPtiKeyQwertyA && keyScanCode <= EPtiKeyQwertyZ) || - (keyScanCode >= EPtiKeyQwerty0 && keyScanCode <= EPtiKeyQwerty9) || - (keyScanCode == EStdKeyEnter) || - (keyScanCode == EPtiKeyQwertyPlus) || - (keyScanCode == EPtiKeyQwertyMinus) || - (keyScanCode == EPtiKeyQwertyComma) || - (keyScanCode == EPtiKeyQwertySemicolon) || - (keyScanCode == EPtiKeyQwertyFullstop) || - (keyScanCode == EPtiKeyQwertyHash) || - (keyScanCode == EPtiKeyQwertySlash) || - (keyScanCode == EPtiKeyQwertyApostrophe) ) - && !( iFepPluginManager && iFepPluginManager->EnableITIOnFSQ() ) ) - { - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - //iFepPluginManager->ClosePluginInputModeL(ETrue); - } - else if( keyHandled ) - { - //for QWERTY, number only, the number is send to editor - //bypass FEP - SendEventsToPluginManL( EPluginSyncFepAwareText ); - //iFepPluginManager->SyncFepAwareText(); - } -#endif - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT - - TInt lang = iSharedDataInterface->InputTextLanguage(); - - if(lang == ELangTaiwanChinese|| - lang == ELangHongKongChinese || - lang == ELangPrcChinese) - { - if( iPtiEngine->CurrentLanguage()->LanguageCode()== ELangEnglish - && IsFlagSet(EFlagQwertyShiftMode) - && !IsFlagSet(EFlagLongShiftKeyPress)) - { - ClearFlag(EFlagQwertyShiftMode); - UpdateIndicators(); - } - } -#endif // RD_INTELLIGENT_TEXT_INPUT - iKeyRepeat = EShortKeyPress; - return keyHandled; - } - - - -void CAknFepManager::CancelTransaction() - { - if (iInputCapabilities.FepAwareTextEditor() && IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - CancelInlineEdit(); - } - } - -void CAknFepManager::IsOnHasChangedState() - { - } - -void CAknFepManager::OfferKeyEventL(TEventResponse& /*aEventResponse*/, - const TKeyEvent& /*aKeyEvent*/, - TEventCode /*aEventCode*/) - { - } - -void CAknFepManager::OfferPointerEventL(TEventResponse& /*aEventResponse*/, - const TPointerEvent& /*aPointerEvent*/, - const CCoeControl* /*aWindowOwningControl*/) - { - } - -void CAknFepManager::OfferPointerBufferReadyEventL(TEventResponse& /*aEventResponse*/, - const CCoeControl* /*aWindowOwningControl*/) - { - } - -TInt CAknFepManager::NumberOfAttributes() const - { - return 0; - } - -TUid CAknFepManager::AttributeAtIndex(TInt /*aIndex*/) const - { - return KNullUid; - } - -void CAknFepManager::WriteAttributeDataToStreamL(TUid /*aAttributeUid*/, RWriteStream& /*aStream*/) const - { - } - -void CAknFepManager::ReadAttributeDataFromStreamL(TUid /*aAttributeUid*/, RReadStream& /*aStream*/) - { - } - -void CAknFepManager::HandleGainingForeground() - { - if (iFepFullyConstructed) - { - ClearFlag(EFlagRemoveMatchesMenuItem); - ClearCcpuFlag(ECcpuStateHashDown | ECcpuStateSelectionEventPosted | - ECcpuStateEdwinInSelectionMode); - TRAPD(err, iPtiEngine->HandleCommandL(EPtiCommandReloadLearningInfo)); - if (err != KErrNone) - { - CleanUpFep(); - } - } - -#ifdef RD_SCALABLE_UI_V2 - CCoeControl* focusCtrl = static_cast(CCoeEnv::Static()->AppUi())->TopFocusedControl(); - iGainForeground = ETrue; - /*if( iLoseForeAndGainFocus ) - { - SendEventsToPluginManL( EPluginFocusChanged, iGainForeground ); - }*/ - if(focusCtrl && focusCtrl->IsFocused()) - { - if(GetForegroundTaskAppWgId() == CCoeEnv::Static()->RootWin().Identifier()) - //SendEventsToPluginManL( EPluginFocusChanged, iGainForeground ); - TRAP_IGNORE(SendEventsToPluginManL( EPluginForegroundChanged, ETrue)); - } - else - { - if (iFepPluginManager) - { - iFepPluginManager->HandleiDimGainForeground(ETrue); - } - } -#endif // RD_SCALABLE_UI_V2 - } - -void CAknFepManager::HandleLosingForeground() - { - if (iFepFullyConstructed) - { - // Forget the shift state on FEP switch (i.e. when application goes to background) - ClearFlag(EFlagQwertyShiftMode | EFlagShiftKeyDepressed | - EFlagLongShiftKeyPress | EFlagNoActionDuringShiftKeyPress); - } - if (Japanese()) - { - TRAP_IGNORE(TryCloseUiL()); - } - if (IsChineseInputLanguage()) - { - TRAP_IGNORE(TryCloseUiL()); - } - -#ifdef RD_SCALABLE_UI_V2 - iGainForeground = EFalse; - //SendEventsToPluginManL( EPluginFocusChanged, iGainForeground ); - TRAP_IGNORE(SendEventsToPluginManL( EPluginForegroundChanged, EFalse)); -#endif // RD_SCALABLE_UI_V2 - } - -void CAknFepManager::HandleChangeInFocus() - { - TRAPD(err, HandleChangeInFocusL()); - if (err != KErrNone) - { - CleanUpFep(); - } - } - -void CAknFepManager::HandleDestructionOfFocusedItem() - { - if (iInputCapabilities.FepAwareTextEditor()) - { - iFocusedItemDestroy = ETrue; - if ( iFepManState == EAknFepStateUIActive ) - { - TRAP_IGNORE(SendEventsToPluginManL( EPluginFocusItemDestroy )); - if (Japanese() && iAknEditorFlags & EAknEditorFlagFindPane) - { - // In case of Find pane while inputting japanese characters, - // No update or commit characters. - iPtiEngine->ClearCurrentWord(); - } - - #ifdef RD_SCALABLE_UI_V2 - // For addition of ITI features on FSQ, - // need to restore some values stored before opening FSQ - // When go into this section, - // touch ui won't be closed by ClosePluginInputUiL, - // but need to restore fep state here - if ( iFepPluginManager ) - { - iFepPluginManager->ResetItiStateL(); - } - #endif - // Close UI - FepUI()->CloseUI(); - } - else - { - TRAP_IGNORE(SendEventsToPluginManL( EPluginFocusItemDestroy, ETrue )); - } - iFocusedItemDestroy = EFalse; - } - - if ( !(IsFlagSet(EFlagForegroundUIComponentVisible) || - IsFlagSet(EFlagMenuPaneVisible)) ) - { - iLanguageCapabilities.iNumericEditorDigitType = EDigitTypeUnknown; - //UpdateLocalDigitMode(); - } - if(IsFlagSet(EFlagForegroundUIComponentVisible)) - { - ClearFlag(EFlagForegroundUIComponentVisible); - } - - ClearFlag( EFlagInsideInlineEditingTransaction | - EFlagInsideMultitapInlineEditingTransaction | - EFlagLineFeedCharacter | EFlagNoMatches ); - - iInputCapabilities = NULL; - } - -void CAknFepManager::HandleAknEdwinStateEventL(CAknEdwinState* aAknEdwinState, - EAknEdwinStateEvent aEventType) - { - if(aEventType == EAknEdwinDestroy) - { - // Reset the last focus editor when destroy it. - if ( aAknEdwinState == iLastFocusedEditor ) - { - iLastFocusedEditor->SetObserver( NULL ); - iLastFocusedEditor = NULL; - } - - // Whenever the editor is destroyed, we destroy all the UI components we launched - if(iFepAwareDialogParentEditor == NULL || - iFepAwareDialogParentEditor == aAknEdwinState) - { - // EExtendedFlagEdwinEditorDestroyed flag is used to leave once the dialog is closed. - SetExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - // Delete any candidate popup is launched - if(iCandidatePopup) - { - delete iCandidatePopup; - iCandidatePopup = NULL; - } - // Delete anu UI components launched by Fep. - iUiInterface->DeleteDialogs(); - } - } - if ( IsFepAwareTextEditor() ) - { - CAknEdwinState* editorState = EditorState(); - if ( editorState != aAknEdwinState || !iFepFullyConstructed ) - { - // FEP state update is not needed because editor state of non-focused - // editor was changed. - return; - } - - switch (aEventType) - { - case EAknEdwinStateInputModeUpdate: - { - TUint currentInputMode = editorState->CurrentInputMode(); - if ( EditorModeFromFepMode(iMode) != currentInputMode ) - { - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - TryRemoveNoMatchesIndicatorL(); - } - UpdateCbaL(NULL); - TryCloseUiL(); - ConfigureFEPFromEditorStateL(); - } - } - break; - case EAknEdwinStateCaseModeUpdate: - { - TInt currentCaseMode = editorState->CurrentCase(); - if ( currentCaseMode != iCaseMan->CurrentCase() ) - { - iCaseMan->SetCurrentCase(currentCaseMode); - } - } - break; - case EAknEdwinStateLocalLanguageUpdate: - { - TLanguage localLanguage = ELangTest; - if (GetLocalLanguage( localLanguage ) ) - { - iLanguageCapabilities.iLocalInputLanguageInUse = ETrue; - if ( localLanguage != iLanguageCapabilities.iInputLanguageCode ) - { - ChangeInputLanguageL(localLanguage); - } - } - } - break; - case EAknEdwinStateFlagsUpdate: - { - TInt oldEditorFlags = iAknEditorFlags; - if(iAknEditorFlags != editorState->Flags()) - { - iAknEditorFlags = editorState->Flags(); - UpdateLocalDigitMode(); - } - if ( iAknEditorFlags != oldEditorFlags ) - { - if ( (iAknEditorFlags & EAknEditorFlagNoT9) != - (oldEditorFlags & EAknEditorFlagNoT9)) - { - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - TryRemoveNoMatchesIndicatorL(); - } - UpdateCbaL(NULL); - TryCloseUiL(); - ConfigureFEPFromEditorStateL(); - } - - if ( (iAknEditorFlags & EAknEditorFlagNoEditIndicators) != - (oldEditorFlags & EAknEditorFlagNoEditIndicators)) - { - // We only need to update indicators when EAknEditorFlagNoEditIndicators was modified. - // Current Fep state is not lost. - UpdateIndicators(); - } - - if ( (iAknEditorFlags & EAknEditorFlagFixedCase) != - (oldEditorFlags & EAknEditorFlagFixedCase)) - { - // We only need to update EFlagSupressAutoUpdate flag when the - // EAknEditorFlagFixedCase was modified. - // Current Fep state is not lost. - if (iAknEditorFlags & EAknEditorFlagFixedCase) - { - SetFlag(EFlagSupressAutoUpdate); - } - else - { - ClearFlag(EFlagSupressAutoUpdate); - } - } - } - } - break; - case EAknEdwinStateEventStateUpdate: - { - // Feps state is reseted and new state is fetched completelly from editor state. - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - TryRemoveNoMatchesIndicatorL(); - } - UpdateCbaL(NULL); - TryCloseUiL(); - ConfigureFEPFromEditorStateL(); - } - break; - case EAknSyncEdwinState: -#ifdef RD_SCALABLE_UI_V2 - if ( !IsCcpuFlagSet(ECcpuStateIgnoreNextEdwinSyncEvent) && iFepPluginManager && - iFepPluginManager->PluginInputMode() == EPluginInputModeNone ) -#else - if ( !IsCcpuFlagSet(ECcpuStateIgnoreNextEdwinSyncEvent) ) -#endif - { - HandleChangeInFocusL(); - } - else - { - ClearCcpuFlag(ECcpuStateIgnoreNextEdwinSyncEvent); - } - break; - -#ifdef RD_SCALABLE_UI_V2 - case EAknActivatePenInputRequest: - SendEventsToPluginManL( EPluginEditorActivate ); - break; - case EAknClosePenInputRequest: - if ( iFepPluginManager ) - { - iFepPluginManager->ClosePluginInputModeL( EFalse ); - } - break; - case EAknEdwinStatePromptUpdate: - SendEventsToPluginManL( EPluginPromptChanged ); - break; -#endif // RD_SCALABLE_UI_V2 - case EAknCursorPositionChanged: -#ifdef RD_SCALABLE_UI_V2 - SendEventsToPluginManL( EPluginSyncFepAwareText ); - HandleCopyCutStateL(); -#endif - // whenever focus cahnged happen, internally - // editor treat cursorposition change. - // In between, if editor context not in inline edit state. - // Try to update the case editor gets the focus, and editor - // context come in inline state. - //iCaseMan->UpdateCase(ENullNaviEvent); - break; - - default: - break; - } - } - } - - -CAknExtendedInputCapabilities::TEditorType CAknFepManager::EditorType() const - { - MObjectProvider* mop = iInputCapabilities.ObjectProvider(); - - if ( mop ) - { - CAknExtendedInputCapabilities* extendedInputCapabilities = - mop->MopGetObject( extendedInputCapabilities ); - - if ( extendedInputCapabilities && iInputCapabilities.FepAwareTextEditor() ) - { - TInt type = extendedInputCapabilities->EditorType(); - return static_cast( type ); - } - } - - return CAknExtendedInputCapabilities::EUndefined; - } - -TUint CAknFepManager::MIDPConstraint() const - { - TUint ConstraintValue=0xFFFFFFFF; - MObjectProvider* mop = iInputCapabilities.ObjectProvider(); - - if ( mop ) - { - CAknExtendedInputCapabilities* extendedInputCapabilities = - mop->MopGetObject( extendedInputCapabilities ); - if ( extendedInputCapabilities && iInputCapabilities.FepAwareTextEditor() ) - { - ConstraintValue = extendedInputCapabilities->MIDPConstrainst(); - } - } - return ConstraintValue; - } - -TBool CAknFepManager::IsSpecialNumericEditor() - { - TBool JavaNumericEditor = EFalse; - TUint ConstraintValue = MIDPConstraint(); - if((ConstraintValue & ESplConstraintMask) == ESplNumeric || - (ConstraintValue & ESplConstraintMask) == ESplDecimal) - JavaNumericEditor = ETrue; - - return JavaNumericEditor; - - } -#ifdef RD_SCALABLE_UI_V2 -void CAknFepManager::HandleInputCapabilitiesEventL( TInt aEvent, TAny* /*aParams*/ ) - { - switch (aEvent) - { - case CAknExtendedInputCapabilities::MAknEventObserver::EActivatePenInputRequest: - SendEventsToPluginManL( EPluginEditorActivate ); - break; - case CAknExtendedInputCapabilities::MAknEventObserver::EPointerEventReceived: - -/* -#ifdef RD_TACTILE_FEEDBACK - CAknExtendedInputCapabilities:: - MAknEventObserver::TPointerEventReceivedParams* params = - static_cast(aParams); - if (params->iPointerEvent.iType == TPointerEvent::EButton1Down) - { - - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if (feedback && iFepPluginManager && !iFepPluginManager->VKBIsOpened()) - { - feedback->InstantFeedback( ETouchFeedbackBasic ); - } - } -#endif // RD_TACTILE_FEEDBACK -*/ - if( IsFlagSet( EFlagInsideInlineEditingTransaction ) ) - { - if (IsFeatureSupportedJapanese()) - { - TryCloseUiL(); - } - else - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - iPtiEngine->CommitCurrentWord(); - CommitInlineEditL(); - TryCloseUiL(); - -#else - CommitInlineEditL(); -#endif - } - } - break; - case CAknExtendedInputCapabilities::MAknEventObserver::EControlContentUpdatedInternally: - SendEventsToPluginManL( EPluginSyncFepAwareText, EPluginSyncAll ); - break; - case CAknExtendedInputCapabilities::MAknEventObserver::EOpenStylusMenuCcpu: - // User has highlighted text and editor requests stylus ccpu popup menu - // to be displayed. - LaunchStylusCcpuMenuL(iClickPoint); - break; - } - } - -void CAknFepManager::SubmitInlineTextL( const TDesC& aData ) - { - if(TextIsValidInEditor(aData)) - { - StartInlineEditL(aData); - CommitInlineEditL(); - } - } - -// for japanese -void CAknFepManager::NotifyJapaneseSetting() - { - TInt param = 0; - // Deleting direction ON(right side) / OFF(left side) - if (iSharedDataInterface->ClearDirection() == EClearDirectionRight) - { - param |= EPenInputJapaneseSettingDeletingDirection; - } - // Japanese predictive ON(predictive on) / OFF(predictive off) - if (iJapanesePredictive) - { - param |= EPenInputJapaneseSettingPredictive; - } - // Japanese HWR conversion ON / OFF - if (iSharedDataInterface->JapaneseHwrConversion() == EJapaneseConversionOn) - { - param |= EPenInputJapaneseSettingConversion; - } - // Japanese HWR conversion ON / OFF - if (iCharWidth == EFullWidthChar) - { - param |= EPenInputJapaneseSettingCharacterWidth; - } - // Japanese qwerty setting flag - TInt qwertflag = iSharedDataInterface->JapaneseQwertyFlags(); - // Qwerty Comma - if (qwertflag & EJapQwertySettingComma) - { - param |= EPenInputJapaneseSettingQwertyComma; - } - // Qwerty Period - if (qwertflag & EJapQwertySettingPeriod) - { - param |= EPenInputJapaneseSettingQwertyPeriod; - } - // Qwerty Width Of Space - if (qwertflag & EJapQwertySettingSpaceFullWidth) - { - param |= EPenInputJapaneseSettingQwertyWidthOfSpace; - } - // Lunch SCT - if (IsAbleToLaunchSCT()) - { - param |= EPenInputJapaneseSettingLunchSCT; - } -#ifdef RD_SCALABLE_UI_V2 - // Set Japanese setting - if(iFepPluginManager->CurrentPluginInputFepUI()) - { - TRAP_IGNORE(iFepPluginManager->CurrentPluginInputFepUI()->HandleCommandL( - ECmdPenInputJapaneseSetting, param)); - } -#endif //RD_SCALABLE_UI_V2 - } - -TBool CAknFepManager::FullyFepAwareTextEditor() const - { - if ( iInputCapabilities.FepAwareTextEditor() ) - { - if ( EditorType() != CAknExtendedInputCapabilities::EMFNEBased ) - { - return ETrue; - } - } - - return EFalse; - } - -TBool CAknFepManager::SemiFepAwareTextEditor( TBool aAtLeast ) const - { - if ( aAtLeast ) - { - switch ( EditorType() ) - { - case CAknExtendedInputCapabilities::EEdwinBased: - case CAknExtendedInputCapabilities::EMFNEBased: - return ETrue; - - default: - return EFalse; - } - } - else - { - return EditorType() == CAknExtendedInputCapabilities::EMFNEBased; - } - } - -void CAknFepManager::ProcessEditorMenuCommand(TInt aCommand) - { - TRAP_IGNORE(ProcessCommandL(aCommand)); - } - -TInt CAknFepManager::GetPermittedEditorMenu(TBool aOnlyCount) - { - TInt count = 0; - TRAP_IGNORE(count = GetPermittedEditorMenuL(aOnlyCount)); - return count; - } - -TInt CAknFepManager::GetPermittedEditorMenuL(TBool aOnlyCount) - { - - CAknEdwinState* editorState = NULL; - if (iInputCapabilities.FepAwareTextEditor()) - { - editorState = EditorState(); - } - - CAknFepUiInterfaceMenuBar* menuBar = NULL; - - RPointerArray editorMenuItemList; - - CEikMenuPane* editorMenuPane = new (ELeave) CEikMenuPane((MEikMenuObserver*)(this)); - editorMenuPane->SetItemArrayOwnedExternally(EFalse); - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, R_AVKON_TOUCH_INDICATOR_EDIT_MODE_MENU);// - - const TInt menuCount=reader.ReadInt16(); - for ( TInt ii=0; iiiData.iCommandId = reader.ReadInt32(); - item->iData.iCascadeId = reader.ReadInt32(); - item->iData.iFlags = reader.ReadInt32(); - TPtrC txtptr = reader.ReadTPtrC(); - item->SetScaleableTextL( txtptr ); - TPtrC extratxtptr = reader.ReadTPtrC(); - item->iData.iExtraText = extratxtptr; - TPtrC bitmapFile = reader.ReadTPtrC(); - TInt bitmapId = reader.ReadInt16(); - TInt bitmapMaskId = reader.ReadInt16(); - CleanupStack::Pop(); // pop first, since additem pushes again - editorMenuPane->AddMenuItemL( item->iData ); - editorMenuItemList.Append(item); - reader.ReadInt32(); // extension link - } - - CleanupStack::PopAndDestroy(); //reader - - - if (editorState) - { - menuBar = iUiInterface->EditorStateMenuBar(editorState); - } - - TInt count = 0; - - if ( menuBar ) - { - CAknFepUiInterfaceMenuPane* menuPane = menuBar->MenuPane(); - - CEikMenuPane* oldMenuPane = menuPane->GetMenuPane(); - - menuPane->SetMenuPane(editorMenuPane); - - DynInitTouchMenuPaneL(menuPane); - - menuPane->SetMenuPane(oldMenuPane); - - - for (TInt ii = 0; ii < KMaxMenuSize; ii++) - { - CEikMenuPaneItem::SData& itemdata = - editorMenuPane->ItemData(KEditorMenuPermitedSend[ii]); - if ( !(itemdata.iFlags & EEikMenuItemDimmed ) ) - { - count = count + 1; - iEditorCommandList[count] = itemdata.iCommandId; - } - } - iEditorCommandList[0] = count; - if (!aOnlyCount && iFepPluginManager->CurrentPluginInputFepUI()) - { - iFepPluginManager->CurrentPluginInputFepUI()->HandleCommandL( - ECmdPenInputSendEditMenuData, reinterpret_cast(iEditorCommandList)); - } - - editorMenuItemList.ResetAndDestroy(); - delete editorMenuPane; - editorMenuPane = NULL; - } - - return count; - } -#endif // RD_SCALABLE_UI_V2 - -void CAknFepManager::ExitPluginSpellModeByOk() - { - TRAP_IGNORE(ExitPluginSpellModeByOkL()); - } - -void CAknFepManager::ExitPluginSpellModeByOkL() - { -#ifdef RD_SCALABLE_UI_V2 - if (iFepPluginManager->IsSpellVisible()) - { - HBufC* spell = iFepPluginManager->SpellTextInput(); - - iFepPluginManager->SetITUTSpellingStateL(EFalse); - iFepPluginManager->DestroySpellEditor(); - - if (spell) - { - CleanupStack::PushL(spell); - TPtr text = spell->Des(); - FepUI()->AddTextToUserDictionaryL(text); - InsertTextFromDialogL(text, iFepPluginManager->CursorSelection()); - CleanupStack::PopAndDestroy(spell); - } - - UpdateCbaL(NULL); - if (iFepPluginManager->CaseUpdatesSupressed()) - { - SetFlag(EFlagSupressAutoUpdate); - } - else - { - ClearFlag(EFlagSupressAutoUpdate); - } - ClearFlag(EFlagSupressAutoUpdateAtEditorStart); - } -#endif - } - -void CAknFepManager::ExitPluginSpellModeByCancel() - { -/* -#ifdef RD_SCALABLE_UI_V2 - if (iFepPluginManager->IsSpellVisible()) - { - iFepPluginManager->SetITUTSpellingStateL(EFalse); - iFepPluginManager->DestroySpellEditor(); - UpdateCbaL(NULL); - HandleChangeInFocus(); - if (iFepPluginManager->CursorSelection().Length()) - { - EditorState()->SetInlineEditSpan(iFepPluginManager->CursorSelection()); - ConfigureFEPFromEditorStateL(); - } - TransferFepStateToEditorL(); - - if (iFepPluginManager->CaseUpdatesSupressed()) - { - SetFlag(EFlagSupressAutoUpdate); - } - else - { - ClearFlag(EFlagSupressAutoUpdate); - } - ClearFlag(EFlagSupressAutoUpdateAtEditorStart); - iFepPluginManager->SetBeforeSpell(ETrue); - } -#endif -*/ -#ifdef RD_SCALABLE_UI_V2 - if (iFepPluginManager->IsSpellVisible()) - { - TRAP_IGNORE(iFepPluginManager->SetITUTSpellingStateL(EFalse)); - iFepPluginManager->DestroySpellEditor(); - - TRAP_IGNORE(UpdateCbaL(NULL)); - if (iFepPluginManager->CaseUpdatesSupressed()) - { - SetFlag(EFlagSupressAutoUpdate); - } - else - { - ClearFlag(EFlagSupressAutoUpdate); - } - ClearFlag(EFlagSupressAutoUpdateAtEditorStart); - } -#endif - } - -void CAknFepManager::ProcessCommandL(TInt aCommandId) - { - //ProcessCommandL() is called before HandleChangeInFocus() for the editor to insert the - //number into, so have to force a call - - //Process pen input menu if avaliable -#ifdef RD_SCALABLE_UI_V2 - - if (iFepPluginManager && - (iFepPluginManager->PluginInputMode() == EPluginInputModeItut)) - { - switch(aCommandId) - { - case EAknSoftkeyOptions: - { - LaunchSelectModeMenuL(); - } - return; - case EAknSoftkeyOk: - { - iFepPluginManager->ClosePluginInputModeL(ETrue); - } - return; - default: - { - break; - } - } - } - - SendEventsToPluginManL( EPluginMenuCmd, aCommandId ); - -#endif //RD_SCALABLE_UI_V2 - MAknFepManagerInterface* currentFepUI=NULL; - switch (aCommandId) - { - // Edit mode menu commands - //The soft CBA event from touch screen. - case EAknSoftkeyCancel: - // case (TUint16)EAknSoftkeyCancel: - case EAknSoftkeySelect: - // case (TUint16)EAknSoftkeySelect: - currentFepUI = FepUI(); - if (currentFepUI) - currentFepUI->HandleCommandL( aCommandId ); - break; - // --- commands for Japanese --- - case EJapanFepCmdModeHiragana: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(EHiraganaKanji); - break; - case EJapanFepCmdModeKatakana: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(EKatakana); - break; - case EAknCmdEditInsertPictograph: - SetStopProcessFocus(ETrue); - HandleChangeInFocus(); - LaunchPictographCharacterTableL(); - SetStopProcessFocus(EFalse); - break; - case EJapanFepCmdModeFullWidth: - case EPenInputJpCmdFullWidth: - case EJapanFepCmdModeHalfWidth: - case EPenInputJpCmdHalfWidth: - { - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - if (aCommandId == EJapanFepCmdModeFullWidth - || aCommandId == EPenInputJpCmdFullWidth) - { - iCharWidth = EFullWidthChar; - } - else - { - iCharWidth = EHalfWidthChar; - } - UpdateIndicators(); - TryChangeModeL(iMode); -#ifdef RD_SCALABLE_UI_V2 - if (aCommandId == EPenInputJpCmdFullWidth - || aCommandId == EPenInputJpCmdHalfWidth) - { - // Re-open pen input window - SendEventsToPluginManL( EPluginActivate ); - } -#endif //RD_SCALABLE_UI_V2 - } - break; - case EJapanFepCmdModeUserDic: - case EPenInputJpCmdSaveWord: - { - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - // User dictionary -#ifdef RD_PF_SEC_APPARC - // Launch settings app - if ( iNullService ) - { - delete iNullService; - iNullService = NULL; - } - iNullService = CAknNullService::NewL( KUidUserDictApp, this ); -#else - CEikProcess* process = CEikonEnv::Static()->Process(); - if (iEmbedded) - { - process->DestroyDocument(iEmbedded); - } -#if (defined(SYMBIAN_SUPPORT_UI_FRAMEWORKS_V1) || defined(__SERIES60_27__) || defined(__SERIES60_28__)) - iEmbedded = process->AddNewDocumentL(_L("User Dictionary"), KUidUserDictApp); -#else - iEmbedded = process->AddNewDocumentL(KUidUserDictApp); -#endif - iEmbedded->NewDocumentL(); - iEmbedded->EditL(NULL); -#endif //RD_PF_SEC_APPARC - } - break; - case EPenInputJpCmdKutenCode: - case EJapanFepCmdModeKutenCodeInput: - { - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - LaunchKutenCodeQueryL(); -#ifdef RD_SCALABLE_UI_V2 - if (aCommandId == EPenInputJpCmdKutenCode) - { - // Re-open pen input window - SendEventsToPluginManL( EPluginActivate ); - } -#endif //RD_SCALABLE_UI_V2 - } - break; - case EAknCmdEditClearDirectionLeft: - case EAknCmdEditClearDirectionRight: - { - TInt value = EClearDirectionLeft; - if (aCommandId == EAknCmdEditClearDirectionRight) - { - value = EClearDirectionRight; - } - iSharedDataInterface->SetClearDirection(value); - } - break; - case EAknFepSoftkeyCloseWindow: - if(IsChineseInputLanguage()) - { - TryCloseUiL(); - } - if (iCcpuMode != ECcpuStateNone) - { - ResetCcpuFlags(); - - // reset select mode indicators - iIndicator->SetCopyMode(EFalse); - // update view - iPreviousEditingState = EStateNone; - UpdateIndicators(); - - iUiInterface->DeleteSoftkeys(); - break; - } - case EAknFepSoftkeyCommit: - case EAknFepSoftkeySelectCandidate: - case EAknFepSoftkeyConvert: - case EAknFepSoftkeyOtherModes: - case EAknFepSoftkeyRetroActiveHalf: - case EAknFepSoftkeyRetroActiveFull: - { - FepUI()->HandleCommandL(aCommandId); - } - break; - case EAknFepSoftkeyPredictiveOn: - { - iJapanesePredictive = ETrue; - iSharedDataInterface->SetJapanesePredictiveTextOn(); - iHashKeyMan->SetMode(iMode, ETrue); - UpdateIndicators(); - FepUI()->HandleCommandL(aCommandId); - } - break; - case EJapanFepCmdModePredictiveOn: - { - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - if (!iJapanesePredictive) - { - LaunchConfirmationNoteL(R_AVKON_JAPANESE_PREDICTIVE_ACTIVATED_NOTE); - } - iJapanesePredictive = ETrue; - TryChangeModeL(EHiraganaKanji); - iSharedDataInterface->SetJapanesePredictiveTextOn(); - } - break; - case EJapanFepCmdModePredictiveOff: - { - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - if (iJapanesePredictive) - { - LaunchConfirmationNoteL(R_AVKON_JAPANESE_PREDICTIVE_DEACTIVATED_NOTE); - } - iJapanesePredictive = EFalse; - TryChangeModeL(EHiraganaKanji); - iSharedDataInterface->ResetJapanesePredictiveTextOn(); - } - break; -#ifdef RD_SCALABLE_UI_V2 - case EPenInputJpCmdPredictiveOn: - { - iJapanesePredictive = ETrue; - iSharedDataInterface->SetJapanesePredictiveTextOn(); - if (iFepPluginManager->PluginInputMode() == EPluginInputModeHwr) - { - iSharedDataInterface->SetJapaneseHwrConversion(EJapaneseConversionOn); - } - } - break; - case EPenInputJpCmdPredictiveOff: - { - iJapanesePredictive = EFalse; - iSharedDataInterface->ResetJapanesePredictiveTextOn(); - } - break; - case EPenInputJpCmdConversionOn: - { - iSharedDataInterface->SetJapaneseHwrConversion(EJapaneseConversionOn); - } - break; - case EPenInputJpCmdConversionOff: - { - iSharedDataInterface->SetJapaneseHwrConversion(EJapaneseConversionOff); - } - break; -#endif //RD_SCALABLE_UI_V2 - - // --- commands for Chinese --- - case EChinFepCmdModePinyin: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(EPinyin); - break; - case EChinFepCmdModeZhuyin: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(EZhuyin); - break; - case EChinFepCmdModeStroke: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(EStroke); - break; - case EChinFepCmdModeCangJie: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(ECangJie); - break; - case EChinFepCmdModeCangJieOption: - // Launch CangJie option dialog - { - SetStopProcessFocus(ETrue); - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - TInt newMode = LaunchCangJieOptionDlgL(); - SetStopProcessFocus(EFalse); - UpdateCangJieState( newMode ); - } - break; - case EChinFepCmdModeLatinUpper: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(ELatinUpper); - // delete it for support auto update to text-case - //SetFlag(EFlagSupressAutoUpdate); - iCaseMan->SetCurrentCase(EAknEditorUpperCase); - break; - case EAknCmdEditModeKorean: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(EHangul); - // delete it for support auto update to text-case - //SetFlag(EFlagSupressAutoUpdate); - iCaseMan->SetCurrentCase(EAknEditorUpperCase); - break; - case EChinFepCmdModeLatinLower: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(ELatinLower); - // delete it for support auto update to text-case - //SetFlag(EFlagSupressAutoUpdate); - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - break; - case EAknCmdEditModeNumber: - case EJapanFepCmdEditModeNumber: - case EChinFepCmdModeNumber: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - if ( iLanguageCapabilities.iArabicIndicDigitsAllowed - || iLanguageCapabilities.iEasternArabicIndicDigitsAllowed - || iLanguageCapabilities.iIndicDigitsAllowed ) - { - iLanguageCapabilities.iLocalDigitType = EDigitTypeWestern; - } - TryChangeModeL(ENumber); - break; - case EAknCmdEditModeArabicIndicNumber: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - iLanguageCapabilities.iLocalDigitType = EDigitTypeArabicIndic; - TryChangeModeL(ENativeNumber); - break; - /*For Eastern Arabic Numeric*/ - case EAknCmdEditModeEasternArabicIndicNumber: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - iLanguageCapabilities.iLocalDigitType = EDigitTypeEasternArabicIndic; - TryChangeModeL(ENativeNumber); - break; - /*for Hindi*/ - case EAknCmdEditModeIndicNumber: - HandleChangeInFocus(); - iLanguageCapabilities.iLocalDigitType = EDigitTypeDevanagari; - TryChangeModeL(ENativeNumber); - break; - case EChinFepCmdInstructions: - SetStopProcessFocus(ETrue); - HandleChangeInFocus(); - LaunchHelpTextQueryL(); - SetStopProcessFocus(EFalse); - break; - case EChinFepCmdModeZhuyinFind: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(EZhuyinFind); - break; - case EChinFepCmdModeStrokeFind: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(EStrokeFind); - break; - - // commands for western or common - case EJapanFepCmdMultitapPredictiveT9On: - case EAknCmdMultitapPredictiveT9On: -#ifdef RD_INTELLIGENT_TEXT_INPUT - case EAknFepCmdPredActivate: -#endif //RD_INTELLIGENT_TEXT_INPUT - SetStopProcessFocus(ETrue, EFalse); - HandleChangeInFocus(); -#ifdef RD_SCALABLE_UI_V2 - if( iFepFullyConstructed && iFepPluginManager) - { - iFepPluginManager->SetMenuState(); - } -#endif - if ( !iWesternPredictive ) - { - LaunchConfirmationNoteL(R_AVKON_T9_ACTIVATED_NOTE); - } - SetWesternPredictive(ETrue); - SetStopProcessFocus(EFalse); - TryChangeModeL(ELatin); - break; - case EAknCmdT9PredictiveT9Off: -#ifdef RD_INTELLIGENT_TEXT_INPUT - case EAknFepCmdPredDeactivate: -#endif //RD_INTELLIGENT_TEXT_INPUT - SetStopProcessFocus(ETrue, EFalse); - HandleChangeInFocus(); -#ifdef RD_SCALABLE_UI_V2 - if( iFepFullyConstructed && iFepPluginManager) - { - iFepPluginManager->SetMenuState(); - } -#endif - if (iMode != ELatin) - { - TryChangeModeL(ELatin); - } - else - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - RemoveSuggestedAdvanceCompletionL(); -#endif // RD_INTELLIGENT_TEXT_INPUT - CommitInlineEditL(); - } - if ( iWesternPredictive ) - { - LaunchConfirmationNoteL(R_AVKON_T9_DEACTIVATED_NOTE); - } - SetWesternPredictive(EFalse); - SetStopProcessFocus(EFalse); - break; - case EAknCmdEditModeEnglish: - case EAknCmdEditModeAlpha: - case EJapanFepCmdEditModeAlpha: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(ELatin); - iCaseMan->UpdateCase( ENullNaviEvent ); - ClearFlag(EFlagSupressAutoUpdate); - break; - case EAknCmdEditModeLatinText: - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - TryChangeModeL(ELatinText); - ClearFlag(EFlagSupressAutoUpdate); - iCaseMan->SetCurrentCase(EAknEditorTextCase); - break; - case EAknCmdEditInsertSymbol: - case EAknCmdEditInsertSymbolJp: - case EAknFepSoftkeySymbol: - case EAknCmdEditInsertSmiley: - SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd); -#ifdef RD_SCALABLE_UI_V2 - if (iFepPluginManager && - (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || - iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || - iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)) - { - iFepPluginManager->SetMenuState(); - } - -#endif //RD_SCALABLE_UI_V2 - SetStopProcessFocus(ETrue, EFalse); - HandleChangeInFocus(); - if (aCommandId == EAknFepSoftkeySymbol) - { - SetCcpuFlag(ECcpuStateCbaSymbol); - } - // Show Thai specific SCT with Thai vowels and tonemarks - if ( (iLanguageCapabilities.iInputLanguageCode == ELangThai ) && - (iMode!=ENumber && iMode != ENativeNumber ) ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - // if itut call Thai multitap HandleCommandL to Launch SCT - if(!iQwertyInputMode) - { -#endif - TInt resourceId = 0; - if (iAknFepThaiSCTSelector) - { - resourceId = iAknFepThaiSCTSelector->ThaiSCRResourceId(PreviousChar(),EPtiKeyStar); - } - LaunchSpecialCharacterTableL(resourceId, - aCommandId==EAknCmdEditInsertSymbol, - aCommandId==EAknCmdEditInsertSmiley); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } - else - { - CAknFepUIManagerWestern* westernUIManager = static_cast(FepUI()); - LaunchSpecialCharacterTableL(westernUIManager->ThaiSCTResourceId(static_cast(PreviousChar()),EPtiKeyStar), - aCommandId==EAknCmdEditInsertSymbol, - aCommandId==EAknCmdEditInsertSmiley); - } -#endif - } - else - { - LaunchSpecialCharacterTableL(0, - aCommandId==EAknCmdEditInsertSymbol, - aCommandId==EAknCmdEditInsertSmiley); - } - SetStopProcessFocus(EFalse); - ClearCcpuFlag(ECcpuStateCbaSymbol); - break; - case EAknFepSoftkeyPrevious: - FepUI()->HandleCommandL(aCommandId); - break; - case EAknFepSoftkeySpell: - LaunchEditWordQueryL(); - break; - case EAknCmdT9PredictiveInsertWord: - SetStopProcessFocus(ETrue); - HandleChangeInFocus(); - LaunchInsertWordQueryL(KNullDesC, TCursorSelection(0,0)); - SetStopProcessFocus(EFalse); -#ifdef RD_SCALABLE_UI_V2 - if( iFepFullyConstructed && iFepPluginManager) - { - iFepPluginManager->ResetMenuState(); - } -#endif - break; - case EAknCmdT9PredictiveEditWord: - SetStopProcessFocus(ETrue); - HandleChangeInFocus(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - RemoveSuggestedAdvanceCompletionL(); -#endif // RD_INTELLIGENT_TEXT_INPUT - LaunchEditWordQueryL(); - SetStopProcessFocus(EFalse); -#ifdef RD_SCALABLE_UI_V2 - if( iFepFullyConstructed && iFepPluginManager ) - { - iFepPluginManager->ResetMenuState(); - } -#endif - break; - case EAknCmdT9PredictiveMatches: - SetStopProcessFocus(ETrue,EFalse); - LaunchMatchesPopupListL(); - SetStopProcessFocus(EFalse); - break; -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAknCmdPredictiveAutoWord: - if ( !iIsAutoCompleteOn ) - { - SetStopProcessFocus(ETrue); - LaunchConfirmationNoteL(R_AVKON_PREDICTIVE_AUTOCOMPLETION_ACTIVATED_NOTE); - SetStopProcessFocus(EFalse); - } - iIsAutoCompleteOn = ETrue; - iSharedDataInterface->SetPredictiveTextAutoCompleteOn(); -#ifdef RD_SCALABLE_UI_V2 - if(iFepPluginManager->PluginInputMode() == EPluginInputModeItut) - { - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - HandleChangeInFocus(); - } -#endif - UpdateIndicators(); - break; - case EAknCmdPredictiveNormal: - if ( iIsAutoCompleteOn ) - { - SetStopProcessFocus(ETrue); - LaunchConfirmationNoteL(R_AVKON_PREDICTIVE_AUTOCOMPLETION_DEACTIVATED_NOTE); - SetStopProcessFocus(EFalse); - } - iIsAutoCompleteOn = EFalse; - iSharedDataInterface->ResetPredictiveTextAutoCompleteOn(); - UpdateIndicators(); - break; -#endif - case EAknCmdInputLanguage: -#ifdef RD_INTELLIGENT_TEXT_INPUT - case EAknFepCmdPredInputLanguage: -#endif //RD_INTELLIGENT_TEXT_INPUT - SetStopProcessFocus(ETrue, EFalse); - HandleChangeInFocus(); -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef FF_DUAL_LANGUAGE_SUPPORT - // Currently dual language feature would work correctly for ITUT and Half Qwerty products - // Hence the dual language settings should also be displayed only for ITUT and Halfqwerty products - if(iKeyboardType == EPtiKeyboard12Key || iKeyboardType == EPtiKeyboardHalfQwerty ) - LaunchDualLanguageSettingDialogL(); - else - { - LaunchLanguagesPopupListL(aCommandId == EAknCmdInputLanguage); - iStopProcessFocus = EFalse; - } -#else // FF_DUAL_LANGUAGE_SUPPORT - LaunchLanguagesPopupListL(aCommandId == EAknCmdInputLanguage); - //HandleChangeInFocus(); - iStopProcessFocus = EFalse; -#endif // FF_DUAL_LANGUAGE_SUPPORT -#else - LaunchLanguagesPopupListL(aCommandId == EAknCmdInputLanguage); - HandleChangeInFocus(); - iStopProcessFocus = EFalse; -#endif - break; - case EAknEditMenuCmdCutText: - StartCcpuModeL(EFalse); - if (WesternPredictive()) - { - // Remove underlining from predicted word when focus is re-gained. - SetCcpuFlag(ECcpuStateUncommitWhenFocused); - } - SetCcpuFlag(ECcpuStateIgnoreNextFocusChange); - SetCcpuFlag(ECcpuStateEdwinInSelectionMode); - break; - case EAknEditMenuCmdCopyText: - StartCcpuModeL(ETrue); - if (WesternPredictive()) - { - // Remove underlining from predicted word when focus is re-gained. - SetCcpuFlag(ECcpuStateUncommitWhenFocused); - } - SetCcpuFlag(ECcpuStateIgnoreNextFocusChange); - SetCcpuFlag(ECcpuStateEdwinInSelectionMode); - break; - case EAknFepSoftkeyStartCopy: - case EAknFepSoftkeyStartCut: - { - ResetCcpuFlags(); - if (aCommandId == EAknFepSoftkeyStartCopy) - { - SetCcpuFlag(ECcpuStateCopy); - } - else - { - SetCcpuFlag(ECcpuStateCut); - } - - __ASSERT_DEBUG(iUiInterface->SoftkeysExist(), - AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor)); - - TBool update = UpdateCBALabelL(ELeftSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY); - update |= UpdateCBALabelL(ERightSoftkeyIndex, EAknFepSoftkeyCloseWindow, - R_AKNFEP_SOFTKEY_CCPU_CANCEL); - update |= UpdateCBALabelL( EMiddleSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY ); - if (update) - { - iUiInterface->DrawSoftkeysNow(); - } - } - break; - case EEikCmdEditCopy: - case EEikCmdEditCut: - { -#ifdef RD_SCALABLE_UI_V2 - if (iFepPluginManager && - (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || - iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || - iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)) - { - iFepPluginManager->SetMenuState(EFalse); - } - -#endif //RD_SCALABLE_UI_V2 - SetStopProcessFocus(ETrue, EFalse); - HandleCopyCutEventL(aCommandId); - SetStopProcessFocus(EFalse); - } - break; - case EEikCmdEditPaste: - { - // We have a hindi character in clipboard which can form ligature with the existing text - // if pasted. While the input language is English, the cursor aligmment check would not happen. - // When selecting Options->Paste, the Fep context at this point is for the menu. - // iInputCapabilities for editor context is retrived from CCoeEnv and is restored back - // after doing the operation, else FepAwareTextEditor will be true in menu context. - if ( (!BidiCursorRequired()) && (!WesternPredictive()) ) - { - TCoeInputCapabilities origInputCapabilities = iInputCapabilities; - - CCoeEnv* coeEnv = CCoeEnv::Static(); - iInputCapabilities = static_cast(coeEnv->AppUi())->InputCapabilities(); - - if( !(iInputCapabilities.SupportsSecretText()) ) - { - DoCursorDirectionCheckL(); - } - iInputCapabilities = origInputCapabilities; - } - } - break; - - case EAknCmdEditMenuSctSelected: - { - SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd); - HandleChangeInFocus(); // to re-establish contact with editor - - TBuf charAsDesc(ESingleCharacter); - for ( TInt ii = 0; ii < iSctEditChars->Length(); ii++) - { - charAsDesc[0]=(TText) (*iSctEditChars)[ii]; - if (charAsDesc[0] == TText(0x000A) // 0x000A is line feed - || charAsDesc[0] == CEditableText::EParagraphDelimiter) - { - // This is line feed character. Post it to editor and let it decide - // if it is valid. - if (!(iAknEditorFlags & EAknEditorFlagFindPane) && iSctEditChars->Length() == 1) - { - SimulateKeyEventL(EKeyEnter); - SimulateKeyEventL(EKeyF19); // Asyncronous case update - } - } - else - { - if (CharIsValidInEditor(charAsDesc[0])) - { - TCursorSelection cursorSelection(0,0); - if ((iAknEditorFlags & EAknEditorFlagMTAutoOverwrite) && - iMode == ELatin && !WesternPredictive()) - { - TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - if (iUncommittedText.iCursorPos < edSize && iUncommittedText.Length() == 0) - { - cursorSelection = TCursorSelection(iUncommittedText.iCursorPos + 1, - iUncommittedText.iAnchorPos); - } - } - - if (EditorHasFreeSpace()) - { - InsertTextFromDialogL(charAsDesc, cursorSelection); - } - - } - } - - } - } - break; - case EAknCmdTaskSwapper: - SendEventsToPluginManL( EPluginFaseSwap, ETrue ); - break; - - case EAknCmdEditMenuClose: - { - // Handle destruction of menu - StopDisplayingMenuBar(); - } - break; -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - case EAknFepCmdPredMatches: - { - HandleChangeInFocus(); // to re-establish contact with editor - // Focus current active word in list ----> - TInt wordToFocus; - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &wordToFocus ); - iSListLaunchedFromMenu = ETrue; - TKeyEvent candLaunch = {EKeyDownArrow, EStdKeyDownArrow, 0, 0}; - CEikonEnv::Static()->WsSession().SimulateKeyEvent(candLaunch); - //LaunchCandidatePopupListL( wordToFocus ); - } - break; - case EAknFepCmdPredSettings: - LaunchPredictiveSettingDialogL(); - break; - /* - This code is the part of fixing TSW Error ID: BSAN-7G58DB : Edit Menu : - "Matches" and "insert word" options are not available under Edit Menu. - This is For Insert Word Functionality*/ - case EAknEditMenuCmdInsertWord: - HandleChangeInFocus(); - LaunchInsertWordQueryL(KNullDesC, TCursorSelection(0,0)); - break; -#ifdef __USER_DICTIONARY_EDITING__ - case EAknFepCmdPredEditUserDictionary: - if ( IsAutoCompleteOn() ) - { - HandleChangeInFocus(); - RemoveSuggestedAdvanceCompletionL(); - } - UiInterface()->LaunchUserDictEditDialogL(); - break; -#endif //__USER_DICTIONARY_EDITING__ - - case EAknFepCmdPredHelp: - // Help ID:PREDINPUT_HLP_INPUT - { - const TInt KArrayGranularity = 3; - CArrayFix* contexts = - new (ELeave) CArrayFixFlat( KArrayGranularity ); - CleanupStack::PushL ( contexts ); - TUid appuid = { 0x100058EC }; - contexts->AppendL( TCoeHelpContext( appuid, KFEPPREDINPUT_HLP_INPUT ) ); - CleanupStack::Pop( contexts ); - HlpLauncher::LaunchHelpApplicationL( CEikonEnv::Static()->WsSession(), contexts ); - } - break; - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - // add for phrase creation user db view. - case EAknCmdUserDBDlg: - { - HandleChangeInFocus(); - LaunchUserDBDlgL(); - } - break; - case EPenInputCmdPreviewOn: - { - iSharedDataInterface->SetFepShowVkbPreviewStatus(KTouchInputPreviewOn); - SendEventsToPluginManL(EPluginPreview, KTouchInputPreviewOn); - } - break; - case EPenInputCmdPreviewOff: - { - iSharedDataInterface->SetFepShowVkbPreviewStatus(KTouchInputPreviewOff); - SendEventsToPluginManL(EPluginPreview, KTouchInputPreviewOff); - } - break; - case EPenInputCmdRecognitionWithDictionary: - { - SetStopProcessFocus(ETrue); - HandleChangeInFocus(); - LaunchRecognitionWithDictionaryPopupListL(); - HandleChangeInFocus(); - iStopProcessFocus = EFalse; - } - break; - default: - break; - } - - - StopDisplayingMenuBar(); - } - -void CAknFepManager::SetEmphasis(CBase* /*aMenuControl*/,TBool aEmphasis) - { - if (aEmphasis) - { // opening main menu pane - SetFlag(EFlagMenuPaneVisible); - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - SetFlag(EFlagInlineEditInBackground); - } - } - else - { - // The pointer to be cleared when the callback is received on leaving the focus from the menu pane. -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - iOptionsMenuBar = NULL; -#endif - ClearFlag(EFlagMenuPaneVisible | EFlagRemoveMatchesMenuItem | EFlagInlineEditInBackground); - } - } - -void CAknFepManager::DynInitMenuBarL(TInt aResourceId, CAknFepUiInterfaceMenuBar* aMenuBar) - { - if (iFepFullyConstructed && IsFlagSet(EFlagLaunchEditMenu)) - { - aMenuBar->ReplaceAllMenuPanes(R_AVKON_EDIT_MODE_MENU); - } - -#ifdef RD_SCALABLE_UI_V2 - if (iFepFullyConstructed && - aResourceId == R_AVKON_PENINPUT_OPTION_MENU_BAR) - { - aMenuBar->ReplaceAllMenuPanes(R_AVKON_TOUCH_TOUCHINPUT_MENU); - } -#endif //RD_SCALABLE_UI_V2 - - } - -#ifdef RD_SCALABLE_UI_V2 -void CAknFepManager::DynInitTouchMenuPaneL(CAknFepUiInterfaceMenuPane* aMenuPane) - { - if ( !iFepFullyConstructed ) - { - return; - } - - - if (iFepManState != EAknFepStateNull && - iInputCapabilities.FepAwareTextEditor() && - !(iAknEditorFlags & EAknEditorFlagFindPane)) - { - // 'Input language' menu item on option menu isn't supported in Japanese variant. - if (!IsFeatureSupportedJapanese()) - { - // Insert 'Input language' item to incoming menu if editor is active on screen and - // menu contains 'Help' or 'Exit' item. - if (!IsOnlyNumericPermitted()) - { - TInt helpIndex; - if (aMenuPane->MenuItemExists(EAknCmdHelp, helpIndex) || - aMenuPane->MenuItemExists(EAknCmdExit, helpIndex)) - { - AddInputLanguageItemL(aMenuPane, helpIndex); - } - } - } - } - - TInt index; - if(aMenuPane->MenuItemExists(EAknCmdEditItemPlaceHolder, index)) - { - aMenuPane->DeleteMenuItem(EAknCmdEditItemPlaceHolder); - } - - ClearFlag(EFlagLaunchEditMenu); - - DimInputmodeTouchMenuItems(aMenuPane); - } -#endif //RD_SCALABLE_UI_V2 -void CAknFepManager::DynInitMenuPaneL(TInt aResourceId, CAknFepUiInterfaceMenuPane* aMenuPane) - { - if ( !iFepFullyConstructed ) - { - return; - } - -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - CAknEdwinState* editorState = NULL; - if (iInputCapabilities.FepAwareTextEditor()) - { - editorState = EditorState(); - } - - if (editorState) - { - iOptionsMenuBar = iUiInterface->EditorStateMenuBar(editorState); - } -#endif - - SetCcpuFlag(ECcpuStateIgnoreNextEdwinSyncEvent); - - if (iFepManState != EAknFepStateNull && - iInputCapabilities.FepAwareTextEditor() && - !(iAknEditorFlags & EAknEditorFlagFindPane)) - { - // 'Input language' menu item on option menu isn't supported in Japanese variant. - if (!IsFeatureSupportedJapanese()) - { - // Insert 'Input language' item to incoming menu if editor is active on screen and - // menu contains 'Help' or 'Exit' item. - //Also, no need for writing language/ITI options in telephony's dialer - if ( (RProcess().SecureId().iId != KPhoneSecureId) && !IsOnlyNumericPermitted() ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - //This method gets called multiple times - first before the help and exit - //commands are populated and finally after these items are added. - //So if we have already added the input options menu and/or writing language menu, - //remove it. It will get added again to the correct place with the below code. - //No need to handle following menu types here. - if ( !( R_AVKON_EDIT_MODE_MENU == aResourceId || - R_AKNFEP_PRED_INPUT_OPTIONS_SUBMENU == aResourceId || - R_AVKON_PREDICTIVE_TEXT_MENU_T9 == aResourceId || - R_AVKON_INPUT_MODE_SUB_MENU == aResourceId || - R_AKNFEP_EDIT_SUBMENU == aResourceId || - R_AVKON_TOUCH_TOUCHINPUT_MENU == aResourceId ) - // Add this condition for adding "input options" into the option menu of FSQ. - || ( R_AVKON_TOUCH_TOUCHINPUT_MENU == aResourceId - && iFepPluginManager - && iFepPluginManager->IsSupportITIOnFSQ() ) - ) - { - FindAndRemoveInputOptionsMenuItemL( aMenuPane ); - FindAndRemoveEditSubMenuItemL (aMenuPane); - AddInputOptionsMenuItemL( aMenuPane ); - } -#else - TInt helpIndex; - if ( aMenuPane->MenuItemExists(EAknCmdHelp, helpIndex) || - aMenuPane->MenuItemExists(EAknCmdExit, helpIndex) ) - { - AddInputLanguageItemL(aMenuPane, helpIndex); - } - -#endif //RD_INTELLIGENT_TEXT_INPUT - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( IsChineseInputLanguage() && - ( iKeyboardType == EPtiKeyboardQwerty4x10 || - iKeyboardType == EPtiKeyboardQwerty3x11 ) ) - { - // the follow added for phrase creation - TInt iptlanguage; - if ( !iIsUserdbdlgActive ) - { - aMenuPane->MenuItemExists( EAknCmdInputLanguage, iptlanguage ); - AddUserDBDlgItemL( aMenuPane, iptlanguage ); - } - } -#endif - - if (!(aResourceId == R_AVKON_EDIT_MODE_MENU || - aResourceId == R_AVKON_TOUCH_TOUCHINPUT_MENU || - aResourceId == R_AVKON_TOUCH_INDICATOR_EDIT_MODE_MENU)) - { - AddEditSubmenuL(aMenuPane); - } - } - - //HWR Hindi, Training application is not available, - //Disable Menu option - if(aResourceId == R_AVKON_TOUCH_TOUCHINPUT_MENU && - iLanguageCapabilities.iInputLanguageCode == ELangHindi) - { - aMenuPane->SetItemDimmed(EPenInputCmdHwrTraining, ETrue); - } - TInt index; - if(aMenuPane->MenuItemExists(EAknCmdEditItemPlaceHolder, index)) - { - aMenuPane->DeleteMenuItem(EAknCmdEditItemPlaceHolder); - } -#ifdef RD_SCALABLE_UI_V2 - TInt oldPermitModes = -1; - if (R_AVKON_TOUCH_TOUCHINPUT_MENU == aResourceId ) - { - oldPermitModes = iPermittedInputModes; - - if( iFepPluginManager != NULL ) - { - iPermittedInputModes = iFepPluginManager->PreviousPermitMode(); - } - } - - iFepPluginManager->InitMenuPaneL( iRememberEditorState, aMenuPane, aResourceId ); - if (oldPermitModes != -1) - { - iPermittedInputModes = oldPermitModes; - } -#endif // RD_SCALABLE_UI_V2 - switch (aResourceId) - { - case R_AVKON_TOUCHINPUT_PREVIEW: - { - InitPreviewMenuPane(aMenuPane); - } - break; - case R_AVKON_EDIT_MODE_MENU: - case R_AVKON_TOUCH_INDICATOR_EDIT_MODE_MENU: - { - ClearFlag(EFlagLaunchEditMenu); - - //call comes here when edit key or '*' is pressed and displays avkon edit menu - //moving only the essential condition checks in EditSubmenuInUse() here - //no need of checking iSharedDataInterface->EditSubmenuInUse() because for devices with edit key - //this would return 0 and would not populate CUT and COPY option - - TBool tempFlag = ETrue; - if ( ( ( RProcess().SecureId().iId == KPhoneSecureId ) && (iQwertyInputMode) ) || - ( ExtendedInputCapabilities() & - CAknExtendedInputCapabilities::EForceEditSubmenuStatusFlagOff) - - ) - { - tempFlag = EFalse; - } - - if (tempFlag) - { - TInt posit(0); - - if (!(iAknEditorFlags & EAknEditorFlagFindPane) && - iInputCapabilities.FepAwareTextEditor() && - aMenuPane->MenuItemExists(EEikCmdEditCut, posit) && - !IsOnlyNumericPermitted() - ) - { - if (iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep() > 0 ) - { - if (iRememberEditorState && iRememberEditorState->CcpuState() && - !iRememberEditorState->CcpuState()->CcpuCanCopy()&& - PluginInputMode() != EPluginInputModeItut ) - { - TBuf titleStr; - StringLoader::Load(titleStr, R_AKNFEP_OPTIONS_EDIT_MENU_CUT_TEXT); - - CAknFepUiInterfaceMenuPane::SItemData itemData; - - itemData.iCommandId = EAknEditMenuCmdCutText; - itemData.iCascadeId = 0; - if (titleStr.Length()) - { - itemData.iText.Copy(titleStr.Mid(1, titleStr.Length() - 1)); - } - itemData.iFlags = 0; - aMenuPane->InsertMenuItemL(itemData, posit); - - titleStr.Zero(); - itemData.iText.Zero(); - StringLoader::Load(titleStr, R_AKNFEP_OPTIONS_EDIT_MENU_COPY_TEXT); - - itemData.iCommandId = EAknEditMenuCmdCopyText; - if (titleStr.Length()) - { - itemData.iText.Copy(titleStr.Mid(1, titleStr.Length() - 1)); - } - aMenuPane->InsertMenuItemL(itemData, posit); - } - else //Hack for browser in case there are some text already selected - { - if (iRememberEditorState && iRememberEditorState->CcpuState() ) - { - if(iRememberEditorState->CcpuState()->CcpuCanPaste()) - aMenuPane->SetItemDimmed(EEikCmdEditPaste,EFalse); - if(iRememberEditorState->CcpuState()->CcpuCanCopy()) - aMenuPane->SetItemDimmed(EEikCmdEditCopy,EFalse); - if(iRememberEditorState->CcpuState()->CcpuCanCut()) - aMenuPane->SetItemDimmed(EEikCmdEditCut,EFalse); - } - } - } - //if the document size is 0 and there are items in clipboard then dislay Paste item - if ( iRememberEditorState && iRememberEditorState->CcpuState() && - iRememberEditorState->CcpuState()->CcpuCanPaste()) - aMenuPane->SetItemDimmed(EEikCmdEditPaste,EFalse); - - } - - } - - DimInputmodeMenuItems(aMenuPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - //Is this an edit menu launched for a western language? - if ( R_AVKON_EDIT_MODE_MENU == aResourceId && !IsChineseInputLanguage() - && ELangJapanese != iLanguageCapabilities.iInputLanguageCode ) - { - //If this is edit menu (launched from '*' or edit key) and predictive input is allowed, - //we need to remove "Input language" and add "Input options" menu item. - if (!IsOnlyNumericPermitted() && IsLanguageSupportPrediction() && !(iAknEditorFlags & EAknEditorFlagNoT9)) - { - TInt menuitemPos(0); - if(aMenuPane->MenuItemExists(EAknCmdEditInsertSmiley,menuitemPos)) // insert after smiley if exist - { - AddPredictiveModeEditMenuL(aMenuPane,menuitemPos+1); - } - else if(aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol,menuitemPos)) // insert after smybol if exist - { - AddPredictiveModeEditMenuL(aMenuPane,menuitemPos+1); - } - } - } -#endif //RD_INTELLIGENT_TEXT_INPUT - - } - break; - - case R_AVKON_PREDICTIVE_TEXT_MENU_T9: - { - if (iMode != ELatin) - { - aMenuPane->SetItemDimmed(EAknCmdT9PredictiveInsertWord, ETrue); - } - if (!IsFlagSet(EFlagInlineEditInBackground)) - { - aMenuPane->SetItemDimmed(EAknCmdT9PredictiveMatches, ETrue); - aMenuPane->SetItemDimmed(EAknCmdT9PredictiveEditWord, ETrue); - } - else if (IsFlagSet(EFlagRemoveMatchesMenuItem)) - { - aMenuPane->SetItemDimmed(EAknCmdT9PredictiveMatches, ETrue); - } - break; - } - case R_AVKON_INPUT_MODE_SUB_MENU: - { - if (IsChineseInputLanguage()) - { - DoChineseSubMenu(aMenuPane); - } - break; - case R_AKNFEP_EDIT_SUBMENU: - DisableEditSubmenuItems(aMenuPane); - break; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - case R_AKNFEP_PRED_INPUT_OPTIONS_SUBMENU: - { - // This part of code fixing TSW Errors :STAA-7GZE5W - // :STAA-7GZEBX - // "Edit word" option is not available under edit menu in ITU-T mode. - // "Insert word" Should not be available QWERTY mode. - //TSW: AKSS-7P87XG - //TSW: AKSS-7P88Wf - if (IsKoreanInputLanguage() || - iPtiEngine->CurrentLanguage()->LanguageCode() == ELangPrcChinese || - iPtiEngine->CurrentLanguage()->LanguageCode() == ELangTaiwanChinese || - iPtiEngine->CurrentLanguage()->LanguageCode() == ELangHongKongChinese ) - { - // No text prediction for korean. - aMenuPane->SetItemDimmed(EAknFepCmdPredActivate, ETrue ); - aMenuPane->SetItemDimmed(EAknFepCmdPredDeactivate,ETrue ); - aMenuPane->SetItemDimmed( EAknFepCmdPredSettings, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EAknFepCmdPredSettings, EFalse ); - if(iSharedDataInterface->PredictiveTextOn()) - { - aMenuPane->SetItemDimmed( EAknFepCmdPredActivate, ETrue ); - } - else - { - aMenuPane->SetItemDimmed(EAknFepCmdPredDeactivate,ETrue ); - } - } - } - break; - -#endif //RD_INTELLIGENT_TEXT_INPUT - default: - break; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - /* - This code is the part of fixing TSW Error ID: BSAN-7G58DB : Edit Menu : - "Matches" and "insert word" options are not available under Edit Menu. - This is To make visible/invisible the Insert Word in Optios menu & Edit Menu*/ - iIsLastResourceEditMenu = aResourceId; -#endif - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CAknFepManager::FindAndRemoveInputOptionsMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane ) - { - //Logic : - //Loop through each item in menu pane and check if the data - //CEikMenuPaneItem::SData::iCascadeId == R_AKNFEP_PRED_INPUT_OPTIONS_SUBMENU - //or if CEikMenuPaneItem::SData::iCommandId == EAknCmdInputLanguage - //If so, delete that item. - TInt numOfMenuItems = aMenuPane->NumberOfItemsInPane(); - CEikMenuPane* menuPane = aMenuPane->GetMenuPane(); - for (TInt index(0); index < numOfMenuItems ; ++index ) - { - CEikMenuPaneItem::SData itemData = menuPane->ItemDataByIndexL( index ); - if ( itemData.iCascadeId == R_AKNFEP_PRED_INPUT_OPTIONS_SUBMENU || - itemData.iCommandId == EAknCmdInputLanguage || - itemData.iCascadeId == R_AVKON_INPUT_MODE_SUB_MENU || - ( IsChineseInputLanguage() && iSharedDataInterface->QwertyInputMode() && - itemData.iCommandId == EChinFepCmdModeCangJieOption ) ) - { - menuPane->DeleteBetweenMenuItems( index, index ); - //Assumption - there can only be one such item in the menu pane - //Hence we can return without going through the remaining items - numOfMenuItems = aMenuPane->NumberOfItemsInPane(); - index--; - } - } - } - -void CAknFepManager::FindAndRemoveEditSubMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane ) - { - //Logic : - //Loop through each item in menu pane and check if the data - //CEikMenuPaneItem::SData::iCascadeId == R_AKNFEP_EDIT_SUBMENU - //If so, delete that item. - TInt numOfMenuItems = aMenuPane->NumberOfItemsInPane(); - CEikMenuPane* menuPane = aMenuPane->GetMenuPane(); - for (TInt index(0); index < numOfMenuItems ; ++index ) - { - CEikMenuPaneItem::SData itemData = menuPane->ItemDataByIndexL( index ); - if ( itemData.iCascadeId == R_AKNFEP_EDIT_SUBMENU ) - { - menuPane->DeleteBetweenMenuItems( index, index ); - //Assumption - there can only be one such item in the menu pane - //Hence we can return without going through the remaining items - return; - } - } - } - -void CAknFepManager::AddInputOptionsMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane ) - { - //Logic: - //Appropriate location is : - // if Avkon Help command exists, then immediately above it - // else if Avkon Exit command exists, then immediately above it - // else if there are 3 or more items in the Options menu, then 3rd from last - // else it is the last item. - TInt posToInsertItem( 0 ); - //MenuItemExists() will return the index of the item in 2nd parameter - //But if item is not found, it is returning the total number of items. - if ( ( aMenuPane->MenuItemExists(EAknCmdHelp, posToInsertItem) ) || - ( aMenuPane->MenuItemExists(EAknCmdExit, posToInsertItem) ) ) - { - //do nothing - we already have posToInsertItem with required value - } - else - { - TInt numOfMenuItems = aMenuPane->NumberOfItemsInPane(); - if ( numOfMenuItems > 2 ) - { - //We should add the new item as third from last, after ignoring - //any dimmed items in the menu pane - TInt numOfUnDimmedItems(0); - //loop from bottom for better performance - for (TInt index(numOfMenuItems-1); index >= 0 ; --index ) - { - CEikMenuPaneItem::SData itemData = aMenuPane->GetMenuPane()->ItemDataByIndexL( index ); - if ( !(itemData.iFlags & EEikMenuItemDimmed) ) - { - ++numOfUnDimmedItems; - } - if ( numOfUnDimmedItems == 2 ) - { - //We have our position - save it and break from this loop - if ( index > 1 ) - { - posToInsertItem = index; - } - else - { - //There are two or less items on this menu that will be displayed - //Hence, push ITI options to the end of the list: - posToInsertItem = numOfMenuItems; - } - break; - } - } - } - else - { - posToInsertItem = numOfMenuItems; - } - } - //Now we have the position at which we need to insert the menu item. - if ( -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - iQwertyInputMode && -#endif - IsLanguageSupportPrediction() && !(iAknEditorFlags & EAknEditorFlagNoT9)) - { - AddPredictiveModeOptionsL(aMenuPane, posToInsertItem); - } - else - { - AddInputLanguageItemL(aMenuPane, posToInsertItem); - } - } -#endif // RD_INTELLIGENT_TEXT_INPUT - - -void CAknFepManager::AddEditSubmenuL(CAknFepUiInterfaceMenuPane* aMenuPane) - { - // Adds edit-submenu to options menu when required contidions are met. - // Edit-submenu is added if: - // 1. There is active editor on screen - // 2. Editor contains text or there is text in clipboard. - // 3. Editor is not in Find Pane. - // - // Since menu will have focus, we also need to remeber certain values - // to be able to access undelying editor attributes. - - CAknEdwinState* editorState = EditorState(); - iEditorCcpuStatus = 0; - if (editorState && editorState->CcpuState()) - { - iEditorCcpuStatus = EditorCcpuStatus(editorState); - } - else - { - // The editor doesn't have ccpu-capability, doen't display the menu. - return; - } - TInt index; - if (aMenuPane->MenuItemExists(EAknCmdEditTextMenu, index)) - { - return; - } - - iRememberLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - - if (iRememberLength > 0 || (iEditorCcpuStatus & ECcpuStatusFlagCanPaste)) - { - if (aMenuPane->MenuItemExists(EAknCmdEditItemPlaceHolder, index) || - aMenuPane->MenuItemExists(EAknCmdInputLanguage, index) || - aMenuPane->MenuItemExists(EAknCmdHelp, index) || - aMenuPane->MenuItemExists(EAknCmdExit, index)) - { - TBuf titleStr; - StringLoader::Load(titleStr, R_AKNFEP_OPTIONS_EDIT_SUBMENU_TITLE); - - CAknFepUiInterfaceMenuPane::SItemData mData; - - mData.iCommandId = EAknCmdEditTextMenu; - mData.iCascadeId = R_AKNFEP_EDIT_SUBMENU; - mData.iFlags = 0; - mData.iText.Copy(titleStr.Mid(1, titleStr.Length() - 1).Left( - CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength)); - - aMenuPane->InsertMenuItemL(mData, index); - - if(aMenuPane->MenuItemExists(EAknCmdEditItemPlaceHolder, index)) - { - aMenuPane->DeleteMenuItem(EAknCmdEditItemPlaceHolder); - - } - // Remember editor state, because there is no access to it while - // menu is on screen. - iRememberEditorState = editorState; - } - } - } - - -void CAknFepManager::DisableEditSubmenuItems(CAknFepUiInterfaceMenuPane* aMenuPane) - { - aMenuPane->SetItemDimmed(EAknEditMenuCmdCopyText, ETrue); - aMenuPane->SetItemDimmed(EEikCmdEditCopy, ETrue); - aMenuPane->SetItemDimmed(EAknEditMenuCmdCutText, ETrue); - aMenuPane->SetItemDimmed(EEikCmdEditCut, ETrue); - aMenuPane->SetItemDimmed(EEikCmdEditPaste, ETrue); - - if (iRememberLength > 0) - { - if (iEditorCcpuStatus & ECcpuStatusFlagCanCopy) - { - aMenuPane->SetItemDimmed(EEikCmdEditCopy, EFalse); - } - else - { - aMenuPane->SetItemDimmed(EAknEditMenuCmdCopyText, EFalse); - } - - if (iEditorCcpuStatus & ECcpuStatusFlagCanCut) - { - aMenuPane->SetItemDimmed(EEikCmdEditCut, EFalse); - } - else - { - aMenuPane->SetItemDimmed(EAknEditMenuCmdCutText, EFalse); - } - } - - if (iEditorCcpuStatus & ECcpuStatusFlagCanPaste) - { - aMenuPane->SetItemDimmed(EEikCmdEditPaste, EFalse); - } - } - - -void CAknFepManager::StartCcpuModeL(TBool aCopyMode) - { - ResetCcpuFlags(); - if (!iUiInterface->SoftkeysExist()) - { - iUiInterface->CreateSoftkeys(R_AVKON_SOFTKEYS_EMPTY, this); - } - - TBool update = EFalse; - if (aCopyMode) - { - SetCcpuFlag(ECcpuStateStartCopy); - update = UpdateCBALabelL(ELeftSoftkeyIndex, EAknFepSoftkeyStartCopy, - R_AKNFEP_SOFTKEY_CCPU_START); - update |= UpdateCBALabelL( EMiddleSoftkeyIndex, EAknFepSoftkeyStartCopy, - R_AVKON_SOFTKEY_SELECT_TEXT ); - } - else - { - SetCcpuFlag(ECcpuStateStartCut); - update = UpdateCBALabelL(ELeftSoftkeyIndex, EAknFepSoftkeyStartCut, - R_AKNFEP_SOFTKEY_CCPU_START); - update |= UpdateCBALabelL( EMiddleSoftkeyIndex, EAknFepSoftkeyStartCut, - R_AVKON_SOFTKEY_SELECT_TEXT ); - } - - update |= UpdateCBALabelL(ERightSoftkeyIndex, EAknFepSoftkeyCloseWindow, - R_AKNFEP_SOFTKEY_CCPU_CANCEL); - - if (update) - { - iUiInterface->DrawSoftkeysNow(); - } - - iIndicator->SetCopyMode(ETrue); - UpdateIndicators(); // updates status of indicators - } - - -TBool CAknFepManager::OkToActivateSelectionMode() const - { - if (iFepManState != EAknFepStateNull && - iInputCapabilities.FepAwareTextEditor() && - !(iAknEditorFlags & EAknEditorFlagFindPane)) - { - return ETrue; - } - - return EFalse; - } - - -TBool CAknFepManager::HandleCcpuModeKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode, - TKeyResponse& aRetCode, TBool aLongPressFlag) - { - TKeyPressLength length = aKeyEvent.iRepeats ? ELongKeyPress : EShortKeyPress; - TBool indicLang = TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage( - iLanguageCapabilities.iInputLanguageCode)) -#ifdef RD_HINDI_PHONETIC_INPUT - || TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage(TLanguage( - iLanguageCapabilities.iInputLanguageCode)) -#endif - ; - if(aKeyEvent.iCode == EKeyEscape) - return EFalse; - if (aEventCode == EEventKey && aKeyEvent.iCode == '*') - { - iStarScan = aKeyEvent.iScanCode; - } - - if ((aKeyEvent.iScanCode == EStdKeyDevice0) - || (aKeyEvent.iScanCode == EStdKeyDevice1)) - { - if (HashKeySelectionInUse() - && IsCcpuFlagSet(ECcpuStateHashDown)) - { - if (IsCcpuFlagSet(ECcpuStateChangeToPredictionMode)) - { - ClearCcpuFlag(ECcpuStateChangeToPredictionMode); - if (iModeBefore == ELatin - || iModeBefore == EHiraganaKanji) - { - TBool preFlag = IsPredictive(); - TryChangePredictiveInputModeL(!preFlag); - } - else - { - TryChangeToModeBeforeL(); - } - } - } - // Always let sofkeys fall through. - return EFalse; - } - - if (IsCcpuFlagSet(ECcpuStateSelectionEventPosted)) - { - ClearCcpuFlag(ECcpuStateSelectionEventPosted); - return EFalse; - } - - if (HashKeySelectionInUse()) - { - if (aKeyEvent.iScanCode == EStdKeyHash && aEventCode == EEventKeyDown - && iInputCapabilities.FepAwareTextEditor()) - { - SetCcpuFlag(ECcpuStateHashDown); - iHashKeyMan->ResetPreviousSelectionStyleMode(); - return EFalse; - } - - if (!IsOnlyNumericPermitted()) - { - if (IsFeatureSupportedJapanese()) - { - if (FepUI()->IsValidShiftKeyPress() - && aKeyEvent.iScanCode == iStarScan - && !iQwertyInputMode - && !(iMode == EKatakana && iFepManState == EAknFepStateUIActive)) - { - if ( aEventCode == EEventKeyUp && !aLongPressFlag - && !(iMode == ELatin && WesternPredictive() - && iFepManState == EAknFepStateUIActive)) - { - if (!IsCcpuFlagSet(ECcpuStateIgnoreStarUp)) - { - LaunchSpecialCharacterTableL(); - } - return EFalse; - } - else if ( aEventCode == EEventKey - && !aLongPressFlag - && length == ELongKeyPress ) - { - LaunchSelectModeMenuL(); - aRetCode = EKeyWasConsumed; - return ETrue; - } - } - } - else - { - if ((aKeyEvent.iScanCode == iStarScan && aEventCode == EEventKeyUp && - !aLongPressFlag && !iQwertyInputMode) && - (!indicLang || WesternPredictive() || (iMode == ENumber || iMode == ENativeNumber) )) - { - // Disables *-key on korean multitapping mode - if(IsKoreanInputLanguage() && iMode == EHangul) - { - SetCcpuFlag(ECcpuStateIgnoreStarUp); - } - - if (!IsCcpuFlagSet(ECcpuStateIgnoreStarUp)) - { -#ifdef RD_SCALABLE_UI_V2 - if (iFepPluginManager->CurrentFepInputUI()) - { - if (iFepPluginManager->CurrentFepInputUI()->HandleKeyL(EStdKeyNull, EShortKeyPress)) - { - return EFalse; - } - } -#endif - LaunchSelectModeMenuL(); - aRetCode = EKeyWasConsumed; - return ETrue; - } - return EFalse; - } - else if((aKeyEvent.iScanCode == iStarScan && aEventCode == EEventKey - && !aLongPressFlag && !iQwertyInputMode) - && (indicLang) - && (! WesternPredictive()) - && (length == ELongKeyPress) - && (iMode != ENumber && iMode != ENativeNumber )) - { - LaunchSelectModeMenuL(); - return EFalse; - } - } - } - } - - if (IsCcpuFlagSet(ECcpuStateHashDown)) - { - if (aEventCode == EEventKey) - { - if (aKeyEvent.iScanCode == EStdKeyDownArrow - || aKeyEvent.iScanCode == EStdKeyRightArrow - || aKeyEvent.iScanCode == EStdKeyLeftArrow - || aKeyEvent.iScanCode == EStdKeyUpArrow) - { - if (IsFlagSet(EFlagInsideInlineEditingTransaction) && iMode == EHangul) - { - CommitInlineEditL(); - iPtiEngine->ClearCurrentWord(); - } - - if ((IsCcpuFlagSet(ECcpuStateStartCopy)) || - (IsCcpuFlagSet(ECcpuStateStartCut))) - { - aRetCode = EKeyWasConsumed; - return ETrue; - } - - if (!IsCcpuFlagSet(ECcpuStateEdwinInSelectionMode)) - { - // User wants to select and not to change mode, so cancel the mode change - // caused by initial hash key press. - if(!(iAknEditorFlags & EAknEditorFlagFindPane)) - { - iHashKeyMan->SetPreviousSelectionStyleModeL(); - SetCcpuFlag(ECcpuStateEdwinInSelectionMode); - TKeyEvent ccpuStart = {EKeyF21, EStdKeyF21, 0, 0}; - // to enable copy/paste support on cba. We simulate via CCoeEnv - // to avoid fep SimulateKeyEventL adding shift modifiers - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKey); - } - } - - // If prediction is changed while pressing hash-key, - // it go back previous prediction state. - if (IsCcpuFlagSet(ECcpuStateChangeToPredictionMode)) - { - ClearCcpuFlag(ECcpuStateChangeToPredictionMode); - if (iModeBefore == ELatin - || iModeBefore == EHiraganaKanji) - { - TBool preFlag = IsPredictive(); - TryChangePredictiveInputModeL(!preFlag); - } - else - { - TryChangeToModeBeforeL(); - } - } - - if (WesternPredictive() && IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - // This will commit inline edit if it is active for predictive mode. - return EFalse; - } - - aRetCode = EKeyWasNotConsumed; - return ETrue; - } - else if (aKeyEvent.iScanCode == EStdKeyBackspace) - { - if (!(aKeyEvent.iModifiers & EStdKeyLeftShift)) - { - // Simulate edit key + clear key functionality via hash key in no-edit-key device. - TKeyEvent ccpuStart = {127, EStdKeyBackspace, EStdKeyLeftShift, 0}; - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode); - - aRetCode = EKeyWasConsumed; - return ETrue; - } - else if (!IsCcpuFlagSet(ECcpuStateHashKeyDeleteDone)) - { - // Hash key + clear key was pressed, but hash key was released before - // changing to selection mode. Need to return to previous mode, because - // user didn't want to change input mode. - iHashKeyMan->SetPreviousSelectionStyleModeL(); - SetCcpuFlag(ECcpuStateHashKeyDeleteDone); - } - - // If prediction is changed while pressing hash-key, - // it go back previous prediction state. - if (IsCcpuFlagSet(ECcpuStateChangeToPredictionMode)) - { - ClearCcpuFlag(ECcpuStateChangeToPredictionMode); - if (iModeBefore == ELatin - || iModeBefore == EHiraganaKanji) - { - TBool preFlag = IsPredictive(); - TryChangePredictiveInputModeL(!preFlag); - } - else - { - TryChangeToModeBeforeL(); - } - } - - } - } - else if (aKeyEvent.iScanCode == EStdKeyHash && aEventCode == EEventKeyUp) - { - ClearCcpuFlag(ECcpuStateHashDown - | ECcpuStateHashKeyDeleteDone - | ECcpuStateChangeToPredictionMode); - if (IsCcpuFlagSet(ECcpuStateEdwinInSelectionMode)) - { - SetCcpuFlag(ECcpuStateSelectionEventPosted); - ClearCcpuFlag(ECcpuStateEdwinInSelectionMode); - SetFlag(EFlagLongShiftKeyPress); - - TKeyEvent ccpuStart = {0, EStdKeyLeftShift, 0, 0}; - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode); - } - - return EFalse; - } - } - - if (IsCcpuFlagSet(ECcpuStateStartCopy | ECcpuStateStartCut)) - { - if (aKeyEvent.iScanCode == EStdKeyDevice3 && aEventCode == EEventKey) - { - aRetCode = EKeyWasConsumed; - if (IsCcpuFlagSet(ECcpuStateStartCopy)) - { - ProcessCommandL(EAknFepSoftkeyStartCopy); - } - else - { - ProcessCommandL(EAknFepSoftkeyStartCut); - } - return ETrue; - } - else if (aKeyEvent.iScanCode < EStdKeyLeftArrow || - aKeyEvent.iScanCode > EStdKeyDownArrow) - { - aRetCode = EKeyWasConsumed; - return ETrue; - } - } - else if (IsCcpuFlagSet(ECcpuStateCopy | ECcpuStateCut)) - { - if ((aKeyEvent.iScanCode >= EStdKeyLeftArrow) && (aKeyEvent.iScanCode <= EStdKeyDownArrow)) - { - if (!(aKeyEvent.iModifiers & EModifierShift)) - { - TKeyEvent ccpuStart = aKeyEvent; - ccpuStart.iModifiers |= EModifierShift; - ccpuStart.iModifiers |= EModifierRightShift; - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode); - - aRetCode = EKeyWasConsumed; - return ETrue; - } - else - { - aRetCode = EKeyWasNotConsumed; - return ETrue; - } - } - - TCursorSelection cursorSelection; - if( iInputCapabilities.FepAwareTextEditor() ) - { - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSelection); - if( (aEventCode == EEventKeyUp) && (cursorSelection.Length() == 0) - && ((aKeyEvent.iScanCode == EStdKeyBackspace) || (aKeyEvent.iCode == EKeyBackspace) - || (aKeyEvent.iScanCode == EStdKeyDelete) || (aKeyEvent.iCode == EKeyDelete))) - { - ClearCcpuFlag(ECcpuStateButton); - } - } - if (aKeyEvent.iScanCode != EStdKeyBackspace && aKeyEvent.iCode != EKeyOK) - { - aRetCode = EKeyWasConsumed; - return ETrue; - } - else - { - if (iInputCapabilities.FepAwareTextEditor()) - { - TCursorSelection cursorSelection; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSelection); - if (cursorSelection.Length() == 0) - { - aRetCode = EKeyWasConsumed; - return ETrue; - } - else if (aKeyEvent.iScanCode == EStdKeyBackspace) - { - // Selection will be removed, handle cba button state accordingly - if (iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep() == - cursorSelection.Length()) - { - // Whole text was selected and will be removed. Cancel the ccpu mode. - ProcessCommandL(EAknFepSoftkeyCloseWindow); - } - else - { - // Part of the text will be removed. Set Cba-buttons to initial ccpu-mode status. - __ASSERT_DEBUG(iUiInterface->SoftkeysExist(), - AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor)); - - TBool update = UpdateCBALabelL(ELeftSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY); - update |= UpdateCBALabelL(ERightSoftkeyIndex, EAknFepSoftkeyCloseWindow, R_AKNFEP_SOFTKEY_CCPU_CANCEL); - update |= UpdateCBALabelL( EMiddleSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY ); - if (update) - { - iUiInterface->DrawSoftkeysNow(); - } - } - } - } - } - } - - return EFalse; - } - - - -void CAknFepManager::AddInputLanguageItemL(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex) - { - CAknFepUiInterfaceMenuPane::SItemData mData; - - TBuf langStr; - TInt Inputlangindex; - if(!aMenuPane->MenuItemExists(EAknCmdInputLanguage, Inputlangindex)) - { - StringLoader::Load(langStr, R_AKNFEP_OPTIONS_INPUT_LANGUAGE); - - mData.iCommandId = EAknCmdInputLanguage; - mData.iCascadeId = 0; - mData.iFlags = 0; - mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength)); - - aMenuPane->InsertMenuItemL(mData, aIndex); - } - - // Chinese input mode switching from the option menu - if (IsChineseInputLanguage() && iSharedDataInterface->QwertyInputMode()) - { - // Add Chinese language items - langStr.Zero(); - - StringLoader::Load(langStr, R_AKNFEP_OPTIONS_INPUT_MODE_CHI); - - mData.iCommandId = EAknCmdInputMethod; - mData.iCascadeId = R_AVKON_INPUT_MODE_SUB_MENU; - mData.iFlags = 0; - mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength)); - - aMenuPane->InsertMenuItemL(mData, ++aIndex); - - // Check if the current engine has CangJie feature or not, if not - // then CangJie mode becomes invisible, similar impl in IsInputModeAvailable - // and DoChineseSubMenu - TBool isCangJieSupported = EFalse; - MPtiCoreInfo* ptiCoreInfo = iPtiEngine->CoreInfo(EPtiEngineNormalCangjieQwerty); - if ( ptiCoreInfo ) - { - isCangJieSupported = ptiCoreInfo->CapsBits() & ESupportCangjieInput; - } - - // Add Hong Kong CangJie option, option available only in HK variant and qwerty mode - if ( iLanguageCapabilities.iInputLanguageCode == - ELangHongKongChinese && isCangJieSupported ) - { - langStr.Zero(); - - StringLoader::Load(langStr, R_AKNFEP_OPTIONS_CANGJIE_MODE); - - mData.iCommandId = EChinFepCmdModeCangJieOption; - mData.iCascadeId = 0; - mData.iFlags = 0; - mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength)); - - aMenuPane->InsertMenuItemL(mData, ++aIndex); - } - } - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -// Predictive QWERTY (XT9) changes ----> -void CAknFepManager::AddPredictiveModeOptionsL(CAknFepUiInterfaceMenuPane* aMenuPane, - TInt aIndex ) const - { - CAknFepUiInterfaceMenuPane::SItemData mData; - - HBufC* inputMenuStr = StringLoader::LoadLC(R_AKNFEP_PRED_OPTIONS_INPUT_OPTIONS); - - mData.iCommandId = 0; - mData.iCascadeId = R_AKNFEP_PRED_INPUT_OPTIONS_SUBMENU; - mData.iFlags = 0; - mData.iText.Copy(inputMenuStr->Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength)); - - CleanupStack::PopAndDestroy(inputMenuStr); - - aMenuPane->InsertMenuItemL(mData, aIndex); - - // Chinese input mode switching from the option menu - if (IsChineseInputLanguage() && iSharedDataInterface->QwertyInputMode()) - { - // Add Chinese language items - TBuf langStr; - - langStr.Zero(); - - StringLoader::Load(langStr, R_AKNFEP_OPTIONS_INPUT_MODE_CHI); - - mData.iCommandId = EAknCmdInputMethod; - mData.iCascadeId = R_AVKON_INPUT_MODE_SUB_MENU; - mData.iFlags = 0; - mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength)); - - aMenuPane->InsertMenuItemL(mData, ++aIndex); - - // Check if the current engine has CangJie feature or not, if not - // then CangJie mode becomes invisible, similar impl in IsInputModeAvailable - // and DoChineseSubMenu - TBool isCangJieSupported = EFalse; - MPtiCoreInfo* ptiCoreInfo = iPtiEngine->CoreInfo(EPtiEngineNormalCangjieQwerty); - if ( ptiCoreInfo != NULL) - { - isCangJieSupported = ptiCoreInfo->CapsBits() & ESupportCangjieInput; - } -#ifdef __HALF_QWERTY_KEYPAD - isCangJieSupported = isCangJieSupported && (iKeyboardType != EPtiKeyboardHalfQwerty); -#endif //__HALF_QWERTY_KEYPAD - - // Add Hong Kong CangJie option, option available only in HK variant and qwerty mode - if ( iLanguageCapabilities.iInputLanguageCode == ELangHongKongChinese && isCangJieSupported ) - { - langStr.Zero(); - - StringLoader::Load(langStr, R_AKNFEP_OPTIONS_CANGJIE_MODE); - - mData.iCommandId = EChinFepCmdModeCangJieOption; - mData.iCascadeId = 0; - mData.iFlags = 0; - mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength)); - - aMenuPane->InsertMenuItemL(mData, ++aIndex); - } - } - } - -void CAknFepManager::AddPredictiveModeEditMenuL(CAknFepUiInterfaceMenuPane* aMenuPane, - TInt aIndex ) const - { - // Remove Predictive Edit menu option if XT9 options are there ---> - aMenuPane->SetItemDimmed(EAknCmdPredictiveTextCascade, ETrue); - aMenuPane->SetItemDimmed(EAknCmdMultitapPredictiveT9On, ETrue); - // Remove Predictive Edit menu option if XT9 options are there <--- - //if current writing language supports prediction then display input options settings --> - //if current writing language does not supports prediction then display only input language - //option to modify the writing language, when user wants to modify when edit query is launched. <-- - TBool isLanguagugeSupportsPrediction = EFalse; - switch(iKeyboardType) - { - case EPtiKeyboardHalfQwerty: -#ifdef __HALF_QWERTY_KEYPAD - isLanguagugeSupportsPrediction = (iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive); -#endif //__HALF_QWERTY_KEYPAD - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - isLanguagugeSupportsPrediction = (iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternQwertyPredictive); - break; - case EPtiKeyboardNone: - case EPtiKeyboard12Key: - isLanguagugeSupportsPrediction = (!iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternPredictive); - break; - default: - isLanguagugeSupportsPrediction = (!iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternPredictive); - break; - } - if (isLanguagugeSupportsPrediction && !(iAknEditorFlags & EAknEditorFlagNoT9)) - { - aMenuPane->SetItemDimmed(EAknCmdInputLanguage, ETrue); - AddPredictiveModeOptionsL(aMenuPane, aIndex); - } - } -// Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT -void CAknFepManager::DoChineseSubMenu(CAknFepUiInterfaceMenuPane* aMenuPane) - { - // ZhuyinFind & StrokeFind ONLY available for FindEditors - if (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes) - { - if (iMode == EZhuyinFind) - { - aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyinFind, ETrue); - } - - if (iMode == EStrokeFind) - { - aMenuPane->SetItemDimmed(EChinFepCmdModeStrokeFind, ETrue); - } - } - else - { - aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyinFind, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeStrokeFind, ETrue); - } - - // Customize menu item for Chinese mainland - if (iLanguageCapabilities.iInputLanguageCode == ELangPrcChinese) - { - aMenuPane->SetItemDimmed(EChinFepCmdModeCangJie, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyin, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyinFind, ETrue); - - if (iMode == EPinyin) - { - aMenuPane->SetItemDimmed(EChinFepCmdModePinyin, ETrue); - } - else if (iMode == EStroke) - { - aMenuPane->SetItemDimmed(EChinFepCmdModeStroke, ETrue); - } - else if (iMode == ELatin) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - } - else - return; - } - // Customize menu item for HongKong - else if (iLanguageCapabilities.iInputLanguageCode == ELangHongKongChinese) - { - aMenuPane->SetItemDimmed(EChinFepCmdModePinyin, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyin, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyinFind, ETrue); - - TBool isCangJieSupported = EFalse; -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty3x11 == KeyboardLayout() ) - { - isCangJieSupported = ETrue; - } -#endif //RD_INTELLIGENT_TEXT_INPUT -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - isCangJieSupported = isCangJieSupported && (iKeyboardType != EPtiKeyboardHalfQwerty); -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - - // CangJie is only for qwerty mode - if ( !iSharedDataInterface->QwertyInputMode() || !isCangJieSupported ) - aMenuPane->SetItemDimmed(EChinFepCmdModeCangJie, ETrue); - - if (iMode == EStroke) - { - aMenuPane->SetItemDimmed(EChinFepCmdModeStroke, ETrue); - } - else if (iMode == ECangJie) - { - aMenuPane->SetItemDimmed(EChinFepCmdModeCangJie, ETrue); - } - else if (iMode == ELatin) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - } - else - return; - } - // Customize menu item for TaiWan - else if (iLanguageCapabilities.iInputLanguageCode == ELangTaiwanChinese) - { - aMenuPane->SetItemDimmed(EChinFepCmdModePinyin, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeCangJie, ETrue); - - if (iMode == EStroke) - { - aMenuPane->SetItemDimmed(EChinFepCmdModeStroke, ETrue); - } - else if (iMode == EZhuyin) - { - aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyin, ETrue); - } - else if (iMode == ELatin) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - } - else - return; - } - else - return; - } -#ifdef RD_SCALABLE_UI_V2 - -void CAknFepManager::DoWesternTouchMenu(CAknFepUiInterfaceMenuPane* aMenuPane) - { - const TInt inputLanguage = iLanguageCapabilities.iInputLanguageCode; - // if mode is already hangul or language is not korean dim korean mode menu item - TInt index; - - if( iMode == EHangul || inputLanguage != ELangKorean || !(IsModePermitted(EHangul))) - { - if ( aMenuPane->MenuItemExists( EAknCmdEditModeKorean, index) ) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, ETrue); - } - } - else - { - if ( aMenuPane->MenuItemExists( EAknCmdEditModeKorean, index ) ) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, EFalse); - } - } - // remove Chinese specific items from menu - aMenuPane->SetItemDimmed(EAknCmdEditModeAlpha, ETrue); - - if (aMenuPane->MenuItemExists(EJapanFepCmdModeUserDic, index)) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue); - } - - // T9 stuff - if (WesternPredictive()) - { - aMenuPane->SetItemDimmed(EAknCmdPredictiveTextCascade, EFalse); - if(iPtiEngine->CurrentLanguage()->HasInputMode(EPtiEngineWordCompletion)) - { - // Disable Autoword Completion feature for Touch Input - #ifndef RD_SCALABLE_UI_V2 - aMenuPane->SetItemDimmed(EAknCmdPredictiveModeCascade, EFalse); - #endif // RD_SCALABLE_UI_V2 - } - - if (aMenuPane->MenuItemExists(EAknCmdT9PredictiveT9Off, index)) - { - aMenuPane->SetItemDimmed(EAknCmdT9PredictiveT9Off, EFalse); - } - } - else - { - if ( (iPermittedInputModes & EAknEditorTextInputMode) && - !(iAknEditorFlags & EAknEditorFlagNoT9) && - iMode == ELatin && - !IsKoreanInputLanguage() && - iLanguageCapabilities.iSupportsWesternPredictive) - { - aMenuPane->SetItemDimmed(EAknCmdMultitapPredictiveT9On, EFalse); - } - } - - if ( ( iMode == ENumber || iMode == ENativeNumber ) && - (iPermittedInputModes & (EAknEditorTextInputMode | EAknEditorSecretAlphaInputMode)) ) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeAlpha, EFalse); - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); - if( iMode == EHangul || inputLanguage == ELangKorean) - { - TInt index; - if ( aMenuPane->MenuItemExists( EAknCmdEditModeKorean, index ) ) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, EFalse); - } - } - } - - if ( IsModePermitted(ENumber) ) - { - if (( iMode != ENumber || - iMode == ENumber && iLanguageCapabilities.iArabicIndicDigitsAllowed && - !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) && - (iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic)) - || ( iMode != ENumber || - iMode == ENumber && iLanguageCapabilities.iEasternArabicIndicDigitsAllowed && - !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) && - (iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic)) - ||( iMode != ENumber || - iMode == ENumber && iLanguageCapabilities.iIndicDigitsAllowed && - !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) && - (iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari)) && - (!(iPermittedInputModes==EAknEditorNumericInputMode))) // hide the menu if number editor - - { - aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, EFalse); - } - } - //modified by zhangfeiyan, fix bug SKIN-7LABJ3 - if ( IsModePermitted( ENativeNumber ) ) - { - if ( iLanguageCapabilities.iArabicIndicDigitsAllowed && - !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) && - iMode != ENativeNumber ) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeArabicIndicNumber, EFalse); - } - else if ( iLanguageCapabilities.iEasternArabicIndicDigitsAllowed && - !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) && - iMode != ENativeNumber ) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeEasternArabicIndicNumber, EFalse); - } - else if( iLanguageCapabilities.iIndicDigitsAllowed && - !( iAknEditorFlags & EAknEditorFlagLatinInputModesOnly ) && - - iMode != ENativeNumber ) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeIndicNumber, EFalse); - } - } - - if (IsAbleToLaunchSCT()) - { - if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)) - { - aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, EFalse); - } - } - - if ( iMode != ENumber && iMode != ENativeNumber && - iPtiEngine->NumberOfLanguages() > 1 && - !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly)) - { - aMenuPane->SetItemDimmed(EAknCmdInputLanguage, EFalse); - } - - if (iPermittedInputModes == EAknEditorNumericInputMode) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); - } - else if ( (iMode == ELatin || iMode == ENumber || iMode == ENativeNumber ) && - (iPermittedInputModes & EAknEditorSecretAlphaInputMode) && - !(iPermittedInputModes & EAknEditorTextInputMode)) - { - // Text case mode is not available in secret editors. - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - } - - if (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - } - - if (iCaseMan->CurrentCase() == EAknEditorUpperCase) - { - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - } - else if (iCaseMan->CurrentCase() == EAknEditorLowerCase) - { - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); - } - - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - - if (!(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) - && iFepPluginManager->IsNonLatinLanguage(TLanguage(iSharedDataInterface->InputTextLanguage()))) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); - } - if( iMode == EHangul ) - { - //aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, EFalse); - //aMenuPane->SetItemDimmed(EAknCmdEditModeAlpha, EFalse); - - aMenuPane->SetItemDimmed(EAknCmdEditModeEnglish, EFalse); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); - - } - else - { - aMenuPane->SetItemDimmed(EAknCmdEditModeEnglish, ETrue); - } - } - -void CAknFepManager::DoChineseTouchMenu(CAknFepUiInterfaceMenuPane* aMenuPane) - { - TInt index; - if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index) - && aMenuPane->MenuItemExists(EJapanFepCmdModeUserDic, index)) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue); - } - - if (WesternPredictive()) - { - aMenuPane->SetItemDimmed(EAknCmdPredictiveTextCascade, EFalse); - if(iPtiEngine->CurrentLanguage()->HasInputMode(EPtiEngineWordCompletion)) - { - // Disable Autoword Completion feature for Touch Input - #ifndef RD_SCALABLE_UI_V2 - aMenuPane->SetItemDimmed(EAknCmdPredictiveModeCascade, EFalse); - #endif // RD_SCALABLE_UI_V2 - } - - if (aMenuPane->MenuItemExists(EAknCmdT9PredictiveT9Off, index)) - { - aMenuPane->SetItemDimmed(EAknCmdT9PredictiveT9Off, EFalse); - } - } - else - { - if ( (iPermittedInputModes & EAknEditorTextInputMode) && - !(iAknEditorFlags & EAknEditorFlagNoT9) && - iMode == ELatin) - { - aMenuPane->SetItemDimmed(EAknCmdMultitapPredictiveT9On, EFalse); - } - } - if (IsAbleToLaunchSCT() && - aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)) - { - aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, EFalse); - } - if( (iFepPluginManager && (iFepPluginManager->PluginInputMode() != EPluginInputModeItut ) ) - && aMenuPane->MenuItemExists(EChinFepCmdInstructions, index) ) - { - aMenuPane->SetItemDimmed(EChinFepCmdInstructions, ETrue); - } - else if ( !(iPermittedInputModes == EAknEditorNumericInputMode || - iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) ) - { - if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)) - { - aMenuPane->SetItemDimmed(EChinFepCmdInstructions, EFalse); - } - } - - if ( iMode != ENumber && iPtiEngine->NumberOfLanguages() > 1 && - !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly)) - { - aMenuPane->SetItemDimmed(EAknCmdInputLanguage, EFalse); - } - - if (iPermittedInputModes == EAknEditorNumericInputMode) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); - } - else if ( (iMode == ELatin || iMode == ENumber) && - (iPermittedInputModes & EAknEditorSecretAlphaInputMode) && - !(iPermittedInputModes & EAknEditorTextInputMode)) - { - // Text case mode is not available in secret editors. - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - } - if (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - } - - if ( IsModePermitted(ENumber) && iMode != ENumber ) - { - //aMenuPane->SetItemDimmed(EChinFepCmdModeNumber, EFalse); // original statement - aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, EFalse); - // end modifying - } - } -TBool CAknFepManager::IsChineseInputMode( TInt aMode ) - { - return aMode == EPRCFind || aMode == ECangJie || aMode == EZhuyinFind - || aMode == EStrokeFind || aMode == EPinyin || aMode == EZhuyin - || aMode == EStroke; - } - -#endif //RD_SCALABLE_UI_V2 -void CAknFepManager::DoWesternMenu(CAknFepUiInterfaceMenuPane* aMenuPane) - { - // remove Chinese specific items from menu - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - const TInt inputLanguage = iLanguageCapabilities.iInputLanguageCode; - - - TInt pos=-1; - - if( aMenuPane->MenuItemExists( EAknCmdEditModeKorean, pos ) ) - { - // if mode is already hangul or language is not korean dim korean mode menu item - if( iMode == EHangul || inputLanguage != ELangKorean || !(IsModePermitted(EHangul))) - { - - aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, ETrue); - } - else - { - aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, EFalse); - } - } - - TInt index; - - if (aMenuPane->MenuItemExists(EJapanFepCmdModeUserDic, index)) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue); - } - - // T9 stuff - if (WesternPredictive()) - { - aMenuPane->SetItemDimmed(EAknCmdPredictiveTextCascade, EFalse); -#ifndef RD_INTELLIGENT_TEXT_INPUT - if(iPtiEngine->CurrentLanguage()->HasInputMode(EPtiEngineWordCompletion)) - { - // Disable Autoword Completion feature for Touch Input - #ifndef RD_SCALABLE_UI_V2 - aMenuPane->SetItemDimmed(EAknCmdPredictiveModeCascade, EFalse); - #endif // RD_SCALABLE_UI_V2 - } -#endif //RD_INTELLIGENT_TEXT_INPUT - } - else - { - if ( (iPermittedInputModes & EAknEditorTextInputMode) && - !(iAknEditorFlags & EAknEditorFlagNoT9) && - iMode == ELatin && - !IsKoreanInputLanguage() && -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - (( -#endif //RD_INTELLIGENT_TEXT_INPUT - iLanguageCapabilities.iSupportsWesternPredictive && !IsKoreanInputLanguage() -#ifdef RD_INTELLIGENT_TEXT_INPUT - && !iQwertyInputMode) || - (iLanguageCapabilities.iSupportsWesternQwertyPredictive && iQwertyInputMode) - ) - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - ) - { - aMenuPane->SetItemDimmed(EAknCmdMultitapPredictiveT9On, EFalse); - } - } - - if ( ( iMode == ENumber || iMode == ENativeNumber ) && - (iPermittedInputModes & (EAknEditorTextInputMode | EAknEditorSecretAlphaInputMode)) ) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeAlpha, EFalse); - } - - if ( IsModePermitted(ENumber) ) - { - if ( iMode != ENumber ) // hide the menu if number editor - { - aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, EFalse); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - // There's no need for numeric mode when full qwerty keyboard is in use (like in MAXI) - if (iQwertyInputMode) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, ETrue); - } - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - } - - if ( IsModePermitted(ENativeNumber) && iMode != ENativeNumber) - { - if ( iLanguageCapabilities.iArabicIndicDigitsAllowed ) // hide the menu if number editor) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeArabicIndicNumber, EFalse); - } - else if ( iLanguageCapabilities.iEasternArabicIndicDigitsAllowed ) // hide the menu if number editor) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeEasternArabicIndicNumber, EFalse); - } - else if( iLanguageCapabilities.iIndicDigitsAllowed ) // hide the menu if number editor) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeIndicNumber, EFalse); - } - } - - if (IsAbleToLaunchSCT()) - { - if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)) - { - aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, EFalse); - } - } - TInt writtingLanguage = 0; - if ( iMode != ENumber && iMode != ENativeNumber && iPtiEngine->NumberOfLanguages() > 1 && - !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) - && aMenuPane->MenuItemExists( EAknCmdInputLanguage, writtingLanguage ) ) - { - aMenuPane->SetItemDimmed(EAknCmdInputLanguage, EFalse); - } - } - -void CAknFepManager::DoChineseMenu(CAknFepUiInterfaceMenuPane* aMenuPane) - { - TInt index; - if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index) - && aMenuPane->MenuItemExists(EJapanFepCmdModeUserDic, index)) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue); - } - - if (WesternPredictive()) - { - aMenuPane->SetItemDimmed(EAknCmdPredictiveTextCascade, EFalse); -#ifndef RD_INTELLIGENT_TEXT_INPUT - if(iPtiEngine->CurrentLanguage()->HasInputMode(EPtiEngineWordCompletion)) - { - // Disable Autoword Completion feature for Touch Input - #ifndef RD_SCALABLE_UI_V2 - aMenuPane->SetItemDimmed(EAknCmdPredictiveModeCascade, EFalse); - #endif // RD_SCALABLE_UI_V2 - } -#endif //RD_INTELLIGENT_TEXT_INPUT - } - else - { - if ( (iPermittedInputModes & EAknEditorTextInputMode) && - !(iAknEditorFlags & EAknEditorFlagNoT9) && - iMode == ELatin) - { - aMenuPane->SetItemDimmed(EAknCmdMultitapPredictiveT9On, EFalse); - } - } - if (IsAbleToLaunchSCT() && - aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)) - { - aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, EFalse); - } - if( iQwertyInputMode && aMenuPane->MenuItemExists(EChinFepCmdInstructions, index) ) - { - aMenuPane->SetItemDimmed(EChinFepCmdInstructions, ETrue); - } - else if ( !(iPermittedInputModes == EAknEditorNumericInputMode || - iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) ) - { - if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index) - && aMenuPane->MenuItemExists(EChinFepCmdInstructions, index)) - { - aMenuPane->SetItemDimmed(EChinFepCmdInstructions, EFalse); - } - } - - if ( (!IsOnlyNumericPermitted()) && iPtiEngine->NumberOfLanguages() > 1 && - !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly)) - { - aMenuPane->SetItemDimmed(EAknCmdInputLanguage, EFalse); - // the follow added for phrase creation - TInt iptlanguage; - if ( !iIsUserdbdlgActive -#ifdef RD_INTELLIGENT_TEXT_INPUT - && EPtiKeyboardHalfQwerty != KeyboardLayout() -#endif - && IsChineseInputLanguage() ) - { - aMenuPane->MenuItemExists( EAknCmdInputLanguage, iptlanguage ); - MPtiLanguage* ptilang = iPtiEngine->CurrentLanguage(); - TInt inputLanguage = (ptilang)? ptilang->LanguageCode() : 0; - if (iQwertyInputMode && (inputLanguage == ELangPrcChinese || - inputLanguage == ELangHongKongChinese || - inputLanguage == ELangTaiwanChinese)) - { - TRAP_IGNORE(AddUserDBDlgItemL( aMenuPane, iptlanguage )); - } - } - } - - if (iPermittedInputModes == EAknEditorNumericInputMode) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); - } - else if ( (iMode == ELatin || iMode == ENumber) && - (iPermittedInputModes & EAknEditorSecretAlphaInputMode) && - !(iPermittedInputModes & EAknEditorTextInputMode)) - { - // Text case mode is not available in secret editors. - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - } - if (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes) - { - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - } - - if ( IsModePermitted(ENumber) && iMode != ENumber ) - { - //aMenuPane->SetItemDimmed(EChinFepCmdModeNumber, EFalse); // original statement - aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, EFalse); - // end modifying - } - } - -void CAknFepManager::DoJapaneseMenu(CAknFepUiInterfaceMenuPane* aMenuPane) - { - // remove Chinese specific items from menu - TInt index; - if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)) - { - aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, ETrue); - } - - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - - if (IsAbleToLaunchSCT() - && !iSharedDataInterface->QwertyInputMode()) - { - aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbolJp, EFalse); - } - - if (IsAbleToLaunchPCT() - && !iSharedDataInterface->QwertyInputMode()) - { - aMenuPane->SetItemDimmed(EAknCmdEditInsertPictograph, EFalse); - } - - if (!(iPermittedInputModes & EAknEditorHiraganaKanjiInputMode) && - aMenuPane->MenuItemExists(EJapanFepCmdModeUserDic, index) - ) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue); - } - - if (iPermittedInputModes == (EAknEditorSecretAlphaInputMode | EAknEditorNumericInputMode)) - { - if (iMode == ELatin) - { - aMenuPane->SetItemDimmed(EJapanFepCmdEditModeNumber, EFalse); - } - else if (iMode == ENumber) - { - aMenuPane->SetItemDimmed(EJapanFepCmdEditModeAlpha, EFalse); - } - } - else - { - // If the fep is running on the Janapnse User Dictionary Application, - // "User Dictionary" in editting options menu is hidden. - if (CEikonEnv::Static()->EikAppUi()->Application()) - { - if (CEikonEnv::Static()->EikAppUi()->Application()->AppDllUid() == KUidUserDictApp) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue); - } - } - - if (iPermittedInputModes & EAknEditorHiraganaKanjiInputMode) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeKutenCodeInput, EFalse); - } - - TInt value = iSharedDataInterface->ClearDirection(); - if (value == EClearDirectionRight) - { - aMenuPane->SetItemDimmed(EAknCmdEditClearDirectionLeft, EFalse); - } - else - { - aMenuPane->SetItemDimmed(EAknCmdEditClearDirectionRight, EFalse); - } - - if (!iSharedDataInterface->QwertyInputMode()) - { - if (IsPredictive(ELatin)) - { - aMenuPane->SetItemDimmed(EJapanFepCmdPredictiveTextCascade, EFalse); - } - else if ((iPermittedInputModes & EAknEditorHalfWidthTextInputMode) - && !(iAknEditorFlags & EAknEditorFlagNoT9)) - { - aMenuPane->SetItemDimmed(EJapanFepCmdMultitapPredictiveT9On, EFalse); - } - } - - if (IsPredictive(EHiraganaKanji)) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModePredictiveOff, EFalse); - } - else if((iPermittedInputModes & EAknEditorHiraganaKanjiInputMode) - && !(iAknEditorFlags & EAknEditorFlagNoT9)) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModePredictiveOn, EFalse); - } - - if (iMode != EHiraganaKanji && iPermittedInputModes & EAknEditorHiraganaKanjiInputMode) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeHiragana, EFalse); - } - - if (iCharWidth == EHalfWidthChar) - { - if (iPermittedInputModes & EAknEditorKatakanaInputMode && iMode != EKatakana) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeKatakana, EFalse); - } - - if (iMode != ELatin && (iPermittedInputModes & EAknEditorHalfWidthTextInputMode - || iPermittedInputModes & EAknEditorSecretAlphaInputMode)) - { - aMenuPane->SetItemDimmed(EJapanFepCmdEditModeAlpha, EFalse); - } - - if (iMode != ENumber - && iPermittedInputModes & EAknEditorNumericInputMode - && !iSharedDataInterface->QwertyInputMode()) - { - aMenuPane->SetItemDimmed(EJapanFepCmdEditModeNumber, EFalse); - } - - if (iMode == EKatakana && iPermittedInputModes & EAknEditorFullWidthKatakanaInputMode) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeFullWidth, EFalse); - } - - if (iMode == ELatin && !iWesternPredictive - && iPermittedInputModes & EAknEditorFullWidthTextInputMode) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeFullWidth, EFalse); - } - - if (iMode == ENumber - && iPermittedInputModes & EAknEditorFullWidthNumericInputMode) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeFullWidth, EFalse); - } - } - else // Full width Character - { - if (iMode != EKatakana && iPermittedInputModes & EAknEditorFullWidthKatakanaInputMode) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeKatakana, EFalse); - } - - if (iMode != ELatin && iPermittedInputModes & EAknEditorFullWidthTextInputMode) - { - aMenuPane->SetItemDimmed(EJapanFepCmdEditModeAlpha, EFalse); - } - - if (iMode != ENumber - && iPermittedInputModes & EAknEditorFullWidthNumericInputMode - && !iSharedDataInterface->QwertyInputMode()) - { - aMenuPane->SetItemDimmed(EJapanFepCmdEditModeNumber, EFalse); - } - - if (iMode == EKatakana && iPermittedInputModes & EAknEditorKatakanaInputMode) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeHalfWidth, EFalse); - } - - if (iMode == ELatin && iPermittedInputModes & EAknEditorFullWidthTextInputMode) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeHalfWidth, EFalse); - } - - if (iMode == ENumber - && iPermittedInputModes & EAknEditorFullWidthNumericInputMode) - { - aMenuPane->SetItemDimmed(EJapanFepCmdModeHalfWidth, EFalse); - } - } - } - } - -void CAknFepManager::HandlePointerEventInInlineTextL(TPointerEvent::TType /*aType*/, TUint /*aModifiers*/, TInt /*aPositionInInlineText*/) - { - } - -void CAknFepManager::GetFormatOfFepInlineText(TCharFormat& aFormat, - TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter) const - { - if ( FepUI() ) - { - FepUI()->GetFormatOfFepInlineText(aFormat, aNumberOfCharactersWithSameFormat, - aPositionOfCharacter); - } - } - -void CAknFepManager::NumberModeChangeGSNotification() - { - iLanguageCapabilities.iNumericEditorDigitType = EDigitTypeUnknown; - UpdateNumericEditorDigitType(); - UpdateLocalDigitMode(); - } - -void CAknFepManager::HandleChangeInFocusL() - { - // Closing SCT has done focus change, so here just reset the flag. -#ifdef RD_SCALABLE_UI_V2 - if(iDisalbleFocusChangeForSCT) - { - iDisalbleFocusChangeForSCT = EFalse; - return; - } -#endif - - //The CCPU flag ECcpuStateShiftkeyWasPressedBeforeLosingFocus suggests that the candidate list was closed - //with a long key press of shift key. If so then, FEP needs to set the EFlagShiftKeyDepressed for the CCPU mode to work - //correctly. The state of the shift state is copied to local variable isToSetShiftKeyStateDown because as a function of change - //of focus the FEP clears all the CCPU flags which would reset ECcpuStateShiftkeyWasPressedBeforeLosingFocus also. - TBool isToSetShiftKeyStateDown = IsCcpuFlagSet(ECcpuStateShiftkeyWasPressedBeforeLosingFocus); - if (!Japanese() || iFepManState != EAknFepStateUIActive) - { - if (IsCcpuFlagSet(ECcpuStateIgnoreNextFocusChange)) - { - // The focus event was caused by menu selection, don't clear all ccpu flags. - ClearCcpuFlag(ECcpuStateIgnoreNextFocusChange); - } - else - { - if((HashKeySelectionInUse() && IsCcpuFlagSet(ECcpuStateHashDown) - && IsCcpuFlagSet(ECcpuStateEdwinInSelectionMode))) - { - ClearCcpuFlag(ECcpuStateHashDown); - SetCcpuFlag(ECcpuStateSelectionEventPosted); - ClearCcpuFlag(ECcpuStateEdwinInSelectionMode); - SetFlag(EFlagLongShiftKeyPress); - TKeyEvent ccpuStart = {0, EStdKeyLeftShift, 0, 0}; - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKeyUp); - } - else - { - TBool isToSupressCursorMove = IsCcpuFlagSet(ECcpuStateSupressCursorMoveToEnd); - TBool isCommitPredictiveWord = IsCcpuFlagSet(ECcpuStataCommitPredictiveWord); - CancelCcpuMode(); - if(isToSupressCursorMove) - SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd); - if(isCommitPredictiveWord) - SetCcpuFlag(ECcpuStataCommitPredictiveWord); - } - - } - SetCcpuFlag(ECcpuSupressEditMenuFromShiftUp); - iPreviousEditingState = EStateNone; - iEditIndicatorAtLastUpdate = NULL; - ClearFlag( EFlagBidiCursorIsInitialized ); -#ifndef RD_INTELLIGENT_TEXT_INPUT -// removing the no match indicator is not necessary for ITI - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - TryRemoveNoMatchesIndicatorL(); - } -#endif - UpdateCbaL(NULL); - - if (iFepFullyConstructed) - { - SetCcpuFlag(ECcpuStateLosingFocus); // CommitInlineEditL needs to now we're losing focus (for cursor handling): - CancelAllTimerActivity(); - FepUI()->ExpireMultitapTimer(); - ClearCcpuFlag(ECcpuStateLosingFocus); // Cleared right away to make sure nothing else is affected. - } - // Forget shift key and chr key press if application or UI component is - // changed during shiftkey press. - ClearFlag(EFlagQwertyChrKeyDepressed); - //If candidate list was closed by long keypress of shift key, set the flag EFlagShiftKeyDepressed for CCPU mode - //to work correctly once it re-focuses on the editor. - if(isToSetShiftKeyStateDown) - { - SetFlag(EFlagShiftKeyDepressed); - ClearCcpuFlag(ECcpuStateShiftkeyWasPressedBeforeLosingFocus); - } - else - { - ClearFlag(EFlagShiftKeyDepressed); - } - if ( iFepFullyConstructed && IsFepAwareTextEditor() ) - { - //save state of old item - TransferFepStateToEditorL(); - - if ( WesternPredictive() ) - { -#ifndef RD_INTELLIGENT_TEXT_INPUT - // To rip off suggested word completion when there is a change in focus - if(IsAutoCompleteOn()) - { - RemoveSuggestedCompletionL(); - - } -#endif //RD_INTELLIGENT_TEXT_INPUT - SetCcpuFlag(ECcpuStateLosingFocus); // CommitInlineEditL needs to now we're losing focus (for cursor handling): - CommitInlineEditL(); - ClearCcpuFlag(ECcpuStateLosingFocus); // Cleared right away to make sure nothing else is affected. - } - else - { - TryCloseUiL(); - } - - iRememberLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - if (iLastFocusedEditor && !IsExtendedFlagSet(EExtendedFlagFepAwareDialogLaunched)) - { - iLastFocusedEditor->SetObserver(NULL); - iLastFocusedEditor = NULL; - } - // When editor launches a non-fep aware dialog, then we - // should not set the observer to Null. Because if the dialog is - // destroyed we will not know and the dialog will remain orphaned. - // Also we need to know the fep editor pointer. - iLastFocusedEditor = EditorState(); - iEditorCcpuStatus = EditorCcpuStatus(iLastFocusedEditor); - //iLastFocusedEditor->SetObserver(NULL); -#ifdef RD_SCALABLE_UI_V2 - UnregisterObserver(); -#endif // RD_SCALABLE_UI_V2 - } - - if (iPermittedInputModes & EAknEditorSecretAlphaInputMode && - !(iPermittedInputModes & EAknEditorTextInputMode)) - { - // For password editors. - ClearFlag(EFlagSupressAutoUpdate); - } - - // Losing focus is over, from this point on we are gaining focus. - ClearCcpuFlag(ECcpuStateLosingFocus); - -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iFnKeyManager) - iFnKeyManager->ClearFnKeyState(); - - if(iResourceString) - { - delete iResourceString; - iResourceString = NULL; - } -#endif // RD_INTELLIGENT_TEXT_INPUT - - // get input capabilities from newly focused item - CCoeEnv* coeEnv = CCoeEnv::Static(); - iInputCapabilities = static_cast(coeEnv->AppUi())->InputCapabilities(); - SetQwertyModeToInputcapbility(); - if ( IsFepAwareTextEditor() ) - { - // Now at the launch of non-fep aware dialogs we do not set the editor observer to NULL, - // and retain the editor pointer in iLastFocusedEditor. - // So in case the editor is back in focus, we set iLastFocusedEditor to NULL - // and set the editor observer again. - - // At launch of fep aware dialog on a fep aware editor say spell query launched on messaging editor, - // we have the flag EExtendedFlagFepAwareDialogLaunched set. - // So in this scenario we retain the observer for both the editor as we need to close the spell query - // on close of messaging editor. - // Specific scenario is explained, the same is applicable for all general scenarios, for any - // fep aware dialog launched on any other fep aware editor. - if (iLastFocusedEditor && !IsExtendedFlagSet(EExtendedFlagFepAwareDialogLaunched)) - { - iLastFocusedEditor->SetObserver(NULL); - iLastFocusedEditor = NULL; - } - if( EditorState() ) - { - EditorState()->SetObserver(this); - } - ConfigureFEPFromEditorStateL(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - if( PtiEngine() ) - { - if(!IsAutoCompleteOn()) - { - TInt tailLength = 0; - TRAP_IGNORE( PtiEngine()->HandleCommandL( - EPtiCommandGetAutoCompletionTailLength, - &tailLength )); - if(tailLength) - { - RemoveSuggestedAdvanceCompletionL(); - } - } - } -#endif - if (!iWesternPredictive && iMode == ELatin) - { - // It is possible to cause situation (by ill-acting client - // app) where focus handling goes out of sync and there actually - // is uncomitted inline edit operation going on in to-be-focused - // editor. Multitapping mode doesn't like that, so we make sure here - // that it won't happen. - CancelInlineEdit(); - } - AdjustCursorTypeForCurrentPosition(); - - if (IsCcpuFlagSet(ECcpuStateUncommitWhenFocused)) - { - // One of the ccpu editing options mode was started from - // options menu. If there is active predictive word it - // needs to be deactivated. - ClearCcpuFlag(ECcpuStateUncommitWhenFocused); - DeactivatePredicitveWordAndMoveCursorL(); - } -#ifdef RD_SCALABLE_UI_V2 - RegisterObserver(); -#endif // RD_SCALABLE_UI_V2 - } - else // no FepAwareTextEditor - { -#ifdef RD_SCALABLE_UI_V2 - // register to receive TInputCapabilitiesEvent events - if ( SemiFepAwareTextEditor() ) - { - RegisterObserver(); - TLanguage localLanguage = ELangTest; - if (GetLocalLanguage( localLanguage ) ) - { - iLanguageCapabilities.iLocalInputLanguageInUse = ETrue; - if ( localLanguage != iLanguageCapabilities.iInputLanguageCode ) - { - ChangeInputLanguageL(localLanguage); - } - } - else if (iLanguageCapabilities.iLocalInputLanguageInUse) - { - iLanguageCapabilities.iLocalInputLanguageInUse = EFalse; - ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage()); - } - - if (IsFlagSet(EFlagNewSharedDataInputLanguage) ) - { - //Global mode or input language has been changed in general settings - if ( !iLanguageCapabilities.iLocalInputLanguageInUse) - { - ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage()); - } - ClearFlag(EFlagNewSharedDataInputLanguage); - } - } -#endif // RD_SCALABLE_UI_V2 - // Check for non Edwin derived editors (eg mfne, tel no editor etc) - if (iInputCapabilities.SupportsWesternNumericIntegerPositive() || - iInputCapabilities.SupportsWesternNumericIntegerNegative() || - iInputCapabilities.SupportsWesternNumericReal() ) - { - SyncStates(EAknFepStateInitial); - iPermittedInputModes = EAknEditorNumericInputMode; - iAknEditorNumericKeymap = EAknEditorNativeKeysNumberModeKeymap; - iAknEditorFlags = 0; - iCharWidth = EHalfWidthChar; - UpdateNumericEditorDigitType(); - - if ( IsMfneEditor() ) - { - UpdateLocalDigitMode(); - } - - if( IsInputModeAvailable(ENativeNumber) && - ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) ) - { - TryChangeModeL( ENativeNumber ); - } - else - { - TryChangeModeL( ENumber ); - } - } - else //we don't have a valid editor - { - SyncStates(EAknFepStateNull); - - // Reset the qwerty shift case mode when we do not have a valis editor. - ClearFlag(IsFlagSet( EFlagQwertyShiftMode )); - if (!IsFlagSet(EFlagForegroundUIComponentVisible | EFlagMenuPaneVisible) && - iIndicator) - { - iIndicator->SetState(EStateNone); - iHybridAplphaChangedToAlphanumeric = EFalse; - } - ClearFlag(EFlagForegroundUIComponentVisible); - iPermittedInputModes = EAknEditorNullInputMode; - -#ifdef RD_SCALABLE_UI_V2 - RegisterObserver(); -#endif // RD_SCALABLE_UI_V2 - } - } - } - else if (Japanese() && iFepManState == EAknFepStateUIActive) - { - if (iInputCapabilities.FepAwareTextEditor()) - { - TryCloseUiL(); - } - } - -#ifdef RD_SCALABLE_UI_V2 - { - /* - if( iGainForeground ) - { - iLoseForeAndGainFocus = EFalse; - } - else - { - iLoseForeAndGainFocus = ETrue; - } - SendEventsToPluginManL( EPluginFocusChanged, iGainForeground ); - */ - CCoeControl* focusCtrl = static_cast(CCoeEnv::Static()->AppUi())->TopFocusedControl(); - CAknAppUi* aui = static_cast(CEikonEnv::Static()->AppUi()); - TBool bForeGround = aui->IsForeground(); - if(iGainForeground && ! bForeGround) - { - iGainForeground = EFalse; - } - - if(iGainForeground && iNotifyPlugin) - { - SendEventsToPluginManL( EPluginFocusChanged, - iGainForeground && focusCtrl!=0 && focusCtrl->IsFocused()); - } - } -#endif // RD_SCALABLE_UI_V2 - if( PtiEngine() && FepAwareTextEditor() ) - { - if( FepAwareTextEditor()->DocumentLengthForFep() == 0 && - IsFlagSet(EFlagInsideInlineEditingTransaction)&& - iFepManState == EAknFepStateUIActive ) - { - PtiEngine()->ClearCurrentWord(); - TryCloseUiL(); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - ShowExactWordPopupIfNecessaryL(); - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - } - -void CAknFepManager::CleanUpFep() - { - if (iFepFullyConstructed) - { - CancelAllTimerActivity(); - iInputCapabilities.FepAwareTextEditor()->CancelFepInlineEdit(); - } - else - { - CommonDestroyFep(); - } - } - -#ifdef RD_SCALABLE_UI_V2 -void CAknFepManager::UnregisterObserver() - { - - MObjectProvider* mop = iInputCapabilities.ObjectProvider(); - - if ( mop ) - { - CAknExtendedInputCapabilities* extendedInputCapabilities = - mop->MopGetObject( extendedInputCapabilities ); - - if ( extendedInputCapabilities ) - { - extendedInputCapabilities->UnregisterObserver( this ); - } - } - } - -void CAknFepManager::RegisterObserver() - { - - MObjectProvider* mop = iInputCapabilities.ObjectProvider(); - - if ( mop ) - { - CAknExtendedInputCapabilities* extendedInputCapabilities = - mop->MopGetObject( extendedInputCapabilities ); - - if ( extendedInputCapabilities ) - { - extendedInputCapabilities->RegisterObserver( this ); - } - } - } - -#endif // RD_SCALABLE_UI_V2 - -void CAknFepManager::SimulateKeyEventL(TUint aKeyCode, TBool aActiveObj) - { - if (aActiveObj) - { - iSimulateKey = aKeyCode; - iAsyncOwnSimulateKey.CallBack(); - } - else - { - CArrayFix* simCharArray = new(ELeave) CArrayFixFlat(1); - CleanupStack::PushL(simCharArray); - simCharArray->AppendL(aKeyCode); - SimulateKeyEventsL(simCharArray->Array()); - CleanupStack::PopAndDestroy(); // simCharArray - } - } - -TInt CAknFepManager::ResetShiftKeyMonitorCallback(TAny* aObj) - { - TRAPD(err, static_cast(aObj)->ResetShiftKeyMonitorL()); - if (err) - { - static_cast(aObj)->CleanUpFep(); - return KErrDied; - } - return KErrNone; - } - -void CAknFepManager::ResetShiftKeyMonitorL() - { - TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor); - if(phoneIdle) - { - iShiftKeypressMonitor->Cancel(); - return; - } - - SetFlag(EFlagLongShiftKeyPress); -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Copy-paste with shift+SKs is always available on ITU-T. On QWERTY, - // it's available if activated in the Central Repository. - if ( (!iQwertyInputMode || iSharedDataInterface->ShiftCopyPastingOnQwerty()) && - !(iAknEditorFlags & EAknEditorFlagFindPane) ) -#endif // RD_INTELLIGENT_TEXT_INPUT -#else - if (!iQwertyInputMode && !(iAknEditorFlags & EAknEditorFlagFindPane)) -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - { - if (HashKeySelectionInUse() && IsCcpuFlagSet(ECcpuStateHashDown)) - { - SetCcpuFlag(ECcpuStateEdwinInSelectionMode); - iHashKeyMan->SetPreviousSelectionStyleModeL(); - } - if(iCandidatePopup) - { // if candidate list is launched and then a long key press of shift key is done, destroy the candidate list first - iCandidatePopup->AttemptExitL(EFalse); - HandleChangeInFocusL(); - } - if(!IsCcpuFlagSet(ECcpuStateCbaShown)) - { - TKeyEvent ccpuStart = {EKeyF21, EStdKeyF21, 0, 0}; - // to enable copy/paste support on cba. We simulate via CCoeEnv - // to avoid fep SimulateKeyEventL adding shift modifiers - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKey); - SetCcpuFlag(ECcpuStateCbaShown); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - // we should not enter the copy-paste mode in find pane editors - if( EPtiKeyboardHalfQwerty == KeyboardLayout() && !(iAknEditorFlags & EAknEditorFlagFindPane)) - { - CAknFepFnKeyManager::TFnKeyState fnState = FnKeyState(); - - if( CAknFepFnKeyManager::EFnKeyNone != fnState - || iFnCharInsertedForShift ) - { - TText prevCh = PreviousChar(); - if (prevCh == '#' || prevCh == '/') - { - RemovePreviousCharacterL(); - } - // reset the fn state if it is FnNext - if( fnState == CAknFepFnKeyManager::EFnKeyNext ) - { - SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone ); - } - } - SetCcpuFlag( CAknFepManager::ECcpuStateEdwinInSelectionMode ); - if(!IsCcpuFlagSet(ECcpuStateCbaShown)) - { - TKeyEvent ccpuStart = {EKeyF21, EStdKeyF21, 0, 0}; - - // to enable copy/paste support on cba. We simulate via CCoeEnv - // to avoid fep SimulateKeyEventL adding shift modifiers - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKey); - SetCcpuFlag(ECcpuStateCbaShown); - } - } -#endif //__HALF_QWERTY_KEYPAD - -#endif//RD_INTELLIGENT_TEXT_INPUT - iShiftKeypressMonitor->Cancel(); - } - -void CAknFepManager::CancelAllTimerActivity() - { - if (iShiftKeypressMonitor->IsActive()) - { - iShiftKeypressMonitor->Cancel(); - } - if (iConcatenationTimer->IsActive()) - { - iConcatenationTimer->Cancel(); - } - if (iChrKeypressMonitor->IsActive()) - { - iChrKeypressMonitor->Cancel(); - } - if (iPostEventCheck->IsActive()) - { - iPostEventCheck->Cancel(); - } - if ( iHashKeyMan ) - { - iHashKeyMan->CancelHashKeyTimer(); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if( iNumericResourceTimer ) - { - TRAP_IGNORE( NumericResourceMultiTapTimerTimeoutL()); - } -#endif - } - -TBool CAknFepManager::IsModePermitted(TInt aMode, TWidthChar aWidth) const - { - if (aWidth == ENoneWidthChar) - { - aWidth = iCharWidth; - } - - TBool isModePermitted = ETrue; - const TInt inputLanguage = iLanguageCapabilities.iInputLanguageCode; - - if ( aMode == ENativeNumber && !IsInputModeAvailable( aMode ) ) - { - if ( inputLanguage == ELangThai && iFepPluginManager && - iFepPluginManager->PluginInputMode() != EPluginInputModeItut && - !iQwertyInputMode) - { - return ETrue; - } - return EFalse; - } - - TUint editorMode = EditorMode(aMode, aWidth); - - //Support Boxcn default Chinese inputmode when defaul inputmode is Cangjie Hongkong - //only if Chinese input is permitted in the editor - if (!( (iVariantPermittedModes | ELatinText | ELatinUpper | ELatinLower | EHiragana) & aMode) ) - { - //the mode is never valid in this variant - isModePermitted = EFalse; - } - else if( aMode == ECangJie && !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly)) - { - if (iQwertyInputMode || iFepPluginManager->PluginInputMode() == EPluginInputModeVkb - || iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ) - { - isModePermitted = ETrue; - } - else - { - isModePermitted = EFalse; - } - } - else if (!(iPermittedInputModes & editorMode)) - { - isModePermitted = EFalse; - } - else if (((aMode == EPinyin) || (aMode == EZhuyin) || (aMode == EStroke) || (aMode == ECangJie) - || (aMode == EHiraganaKanji) || (aMode == EKatakana) - || (((aMode == ELatin) || (aMode == ENumber) || iMode == ENativeNumber ) && (iCharWidth == EFullWidthChar))) - && (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly)) - { - //the editor does not allow Chinese modes - isModePermitted = EFalse; - } - else if (((aMode == EStrokeFind) || (aMode == EZhuyinFind)) - && (!(iAknEditorFlags & EAknEditorFlagForceTransparentFepModes))) - { - //StrokeFind and ZhuyinFind modes are only valid in a chinese find pane - isModePermitted = EFalse; - } - else - { - TUint editorsWhichAllowThisMode; - if (aMode == ENumber || aMode == ENativeNumber ) - { - //The FEP's ENumber mode has a direct mapping to EAknEditorNumericInputMode - // or EAknEditorFullWidthNumericInputMode - editorsWhichAllowThisMode = EAknEditorNumericInputMode; - if (aWidth == EFullWidthChar) - { - editorsWhichAllowThisMode = EAknEditorFullWidthNumericInputMode; - } - } - else if (aMode == EHiragana) - { - editorsWhichAllowThisMode = EAknEditorHiraganaInputMode; - } - else if (aMode == EKatakana || (aMode == ELatin && aWidth == EFullWidthChar)) - { - editorsWhichAllowThisMode = EditorMode(aMode, aWidth); - } - else if (aMode == EHiraganaKanji) - { - // HiraganaKanji mode allows all input mode. - editorsWhichAllowThisMode = EAknEditorAllInputModes; - } - else if (aMode == EHangul) - { - editorsWhichAllowThisMode =(EAknEditorTextInputMode | EAknEditorSecretAlphaInputMode | EAknEditorHalfWidthTextInputMode); - } - else - { - //if the editor allows Text Input or Secret Alpha Mode, - //we infer that Chinese Modes are valid - editorsWhichAllowThisMode =(EAknEditorTextInputMode | - EAknEditorSecretAlphaInputMode | - EAknEditorHalfWidthTextInputMode); - } - isModePermitted = iPermittedInputModes & editorsWhichAllowThisMode; - } - - return isModePermitted; - } - -TInt CAknFepManager::SyncStates(TAknFepManagerState aState) - { - TInt ret = KErrNone; - - if (!iFepFullyConstructed) - { - if (aState == EAknFepStateNull) - { - return KErrNone; - } - - TRAP(ret, ConstructFullyL()); - } - if (iFepFullyConstructed) - { - iFepManState = aState; - iKeyCatcher->SetState(aState); - } - - return ret; - } - -TUint CAknFepManager::EditorMode(TInt aMode, TWidthChar aWidth) const - { - TInt editorMode = 0; - switch(aMode) - { - case EPinyin: - case EZhuyin: - case EStroke: - case ECangJie: - case EPRCFind: - case EZhuyinFind: - case EStrokeFind: - case EHangul: - { - editorMode = EAknEditorTextInputMode; - } - break; - case EHindi: - case ELatin: - case ELatinText: - case ELatinUpper: - case ELatinLower: - { - if (iPermittedInputModes & EAknEditorTextInputMode) - { - editorMode = EAknEditorTextInputMode; - } - else if (iPermittedInputModes & EAknEditorHalfWidthTextInputMode) - { - if (IsFeatureSupportedJapanese()) - { - editorMode = EAknEditorHalfWidthTextInputMode; - } - else - { - editorMode = EAknEditorTextInputMode; - } - } - else - { - editorMode = EAknEditorSecretAlphaInputMode; - } - if (aWidth == EFullWidthChar) - { - editorMode = EAknEditorFullWidthTextInputMode; - } - } - break; - case EHiragana: - { - editorMode = EAknEditorHiraganaInputMode; - } - break; - case EHiraganaKanji: - { - editorMode = EAknEditorHiraganaKanjiInputMode; - } - break; - case EKatakana: - { - editorMode = EAknEditorKatakanaInputMode; - if (aWidth == EFullWidthChar) - { - editorMode = EAknEditorFullWidthKatakanaInputMode; - } - } - break; - case ENumber: - case ENativeNumber: - { - editorMode = EAknEditorNumericInputMode; - if (aWidth == EFullWidthChar) - { - editorMode = EAknEditorFullWidthNumericInputMode; - } - } - break; - default: - break; - } - - return editorMode; - } - -void CAknFepManager::LaunchPenSupportMenuL() - { - if (HashKeySelectionInUse() && IsCcpuFlagSet(ECcpuStateHashDown)) - { - return; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iCandidatePopup) - { - iCandidatePopup->AttemptExitL(EFalse); - HandleChangeInFocusL(); - } -#endif - - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - TryRemoveNoMatchesIndicatorL(); - /* - This code is the part of fixing TSW Error ID: BSAN-7G58DB : Edit Menu : - "Matches" and "insert word" options are not available under Edit Menu. - When we launch Edit Menu.the word which in Inline Editing in the BackGorund - Should not Commit*/ -#ifndef RD_INTELLIGENT_TEXT_INPUT - CommitInlineEditL(); -#endif - /* - This code is the part of fixing TSW Error ID: BSAN-7G58DB : Edit Menu : - "Matches" and "insert word" options are not available under Edit Menu. - This Flag is useful for deciding whether "Matches" Menu Item can Visible - or not*/ -#ifdef RD_INTELLIGENT_TEXT_INPUT - SetFlag(EFlagInlineEditInBackground); -#endif - /* - This code is the part of fixing TSW Error ID: BSAN-7G58DB : Edit Menu : - "Matches" and "insert word" options are not available under Edit Menu.*/ -#ifndef RD_INTELLIGENT_TEXT_INPUT - ClearFlag(EFlagInsideInlineEditingTransaction); -#endif - } - - CAknEdwinState* editorState = NULL; - if (iInputCapabilities.FepAwareTextEditor()) - { - editorState = EditorState(); - } - - iEditMenuBar = NULL; - if (editorState) - { - iEditMenuBar = iUiInterface->EditorStateMenuBar(editorState); - } - - if (iEditMenuBar && - !iEditMenuBar->IsDisplayed()) - { - - iPenSupportMenu = ETrue; - // SetFlag(EFlagLaunchEditMenu); - CAknFepUiInterfaceMenuPane* menuPane = iEditMenuBar->MenuPane(); - - CEikMenuPane* oldMenuPane = menuPane->GetMenuPane(); - if (!oldMenuPane) - { - menuPane = NULL; - } - - iRememberEditorState = EditorState(); - - iEditMenuBar->SetMenuType(CAknFepUiInterfaceMenuBar::EMenuEdit); - // It is unnecessary to add ROW SCT in Editting option menu. - iEditMenuBar->TryDisplayMenuBarL(); - if (menuPane && menuPane->NumberOfItemsInPane() == 0) - { - // Edit menu do not contain any items. - iEditMenuBar->StopDisplayingMenuBar(); - } - else - { - //adjust menu position to the front of dialog to - //avoid input capability is wrongly got - CCoeEnv* coeEnv = CCoeEnv::Static(); - CCoeAppUi* appUi = (CCoeAppUi*)(coeEnv->AppUi()); - if( appUi->IsDisplayingDialog() ) - { - iEditMenuBar->RemoveFromStack(); - iEditMenuBar->AddToStackL(ECoeStackPriorityDialog + 1, ECoeStackFlagStandard); - } - } - - iEditMenuBar->SetMenuType(CAknFepUiInterfaceMenuBar::EMenuOptions); - } - iPenSupportMenu = EFalse; - } - -void CAknFepManager::LaunchSelectModeMenuL() - { - if (HashKeySelectionInUse() && IsCcpuFlagSet(ECcpuStateHashDown)) - { - return; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iCandidatePopup) - { - iCandidatePopup->AttemptExitL(EFalse); - HandleChangeInFocusL(); - } -#endif - - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - TryRemoveNoMatchesIndicatorL(); - /* - This code is the part of fixing TSW Error ID: BSAN-7G58DB : Edit Menu : - "Matches" and "insert word" options are not available under Edit Menu. - When we launch Edit Menu.the word which in Inline Editing in the BackGorund - Should not Commit*/ -#ifndef RD_INTELLIGENT_TEXT_INPUT - CommitInlineEditL(); -#endif - /* - This code is the part of fixing TSW Error ID: BSAN-7G58DB : Edit Menu : - "Matches" and "insert word" options are not available under Edit Menu. - This Flag is useful for deciding whether "Matches" Menu Item can Visible - or not*/ -#ifdef RD_INTELLIGENT_TEXT_INPUT - SetFlag(EFlagInlineEditInBackground); -#endif - /* - This code is the part of fixing TSW Error ID: BSAN-7G58DB : Edit Menu : - "Matches" and "insert word" options are not available under Edit Menu.*/ -#ifndef RD_INTELLIGENT_TEXT_INPUT - ClearFlag(EFlagInsideInlineEditingTransaction); -#endif - } - - CAknEdwinState* editorState = NULL; - if (iInputCapabilities.FepAwareTextEditor()) - { - editorState = EditorState(); - } - - iEditMenuBar = NULL; - if (editorState) - { - iEditMenuBar = iUiInterface->EditorStateMenuBar(editorState); - } - - if (iEditMenuBar && - !iEditMenuBar->IsDisplayed()) - { - // SetFlag(EFlagLaunchEditMenu); - CAknFepUiInterfaceMenuPane* menuPane = iEditMenuBar->MenuPane(); - CEikMenuPane* oldMenuPane = menuPane->GetMenuPane(); - if (!oldMenuPane) - { - menuPane = NULL; - } - if(menuPane) - SetFlag(EFlagLaunchEditMenu); - - iRememberEditorState = EditorState(); - - // It is unnecessary to add ROW SCT in Editting option menu. - if (!IsFeatureSupportedJapanese()) - { - iEditCharsPtr.Copy(KNullDesC); - iEditCharsPtr.Set( iSctEditChars->Des() ); - - // get the SCT resource id from editor default settings - TInt currentEditorSCTResId = GetCurrentEditorSCTResId(); - TInt charResourceId = ENoCharacters; - if ( currentEditorSCTResId == EDefaultNumericCharMapResId) - { - charResourceId = NumericModeSCTResourceId(); - if ( charResourceId != ENoCharacters && IsAbleToLaunchSCT()&& - EditorType() != CAknExtendedInputCapabilities::EEikSecretEditorBased) - { - - if( menuPane != NULL ) - { - menuPane->ConstructMenuSctRowL( iEditCharsPtr, charResourceId ); - } - } - else - { - currentEditorSCTResId = charResourceId; - } - } - else - { - TInt sctChars = EAknSCTChiChineseInputModes; - if (iCharWidth == EFullWidthChar) - { - sctChars = EAknSCTFullCase; - } - else - { - if (iMode == ELatin) - { - if ( FeatureManager::FeatureSupported(KFeatureIdChinese) ) - { - sctChars = EAknSCTChiLatinInputModes; - } - else - { - if (iQwertyInputMode) - { - sctChars = EAknSCTQwerty; - } - else - { - sctChars = EAknSCTUpperCase; - if (iCaseMan->CurrentCase() == EAknEditorLowerCase) - { - sctChars = EAknSCTLowerCase; - } - } - } - } - else if (iMode == ENumber || iMode == ENativeNumber) - { - sctChars = EAknSCTNumeric; - if ( ((iAknEditorFlags & EAknEditorFlagUseSCTNumericCharmap) || - (iAknEditorNumericKeymap == EAknEditorAlphanumericNumberModeKeymap)) && - !IsOnlyHalfWidthCharacterPermitted() ) - { - sctChars = EAknSCTLowerCase; - } - } - //delete for phrase creation -// else if (iMode == EStroke && iFepManState == EAknFepStateUIActive) -// { -// return; -// } - else if (iMode == EHiraganaKanji) - { - sctChars = EAknSCTFullCase; - } - else if(iMode == EKatakana) - { - sctChars = EAknSCTHalfCase; - } - } - - if (!(ExtendedInputCapabilities() & CAknExtendedInputCapabilities::EDisableSCT)) - { - if( menuPane && (EditorType() != CAknExtendedInputCapabilities::EEikSecretEditorBased)) - { - if(IsAbleToLaunchSmiley()) - { - sctChars |= EAknCharMapEmotionUse; - } - - menuPane->ConstructMenuSctRowFromDialogL( sctChars, iEditCharsPtr, - currentEditorSCTResId ); - } - } - } - } - iEditMenuBar->SetMenuType(CAknFepUiInterfaceMenuBar::EMenuEdit); - iFepPluginManager->SetMenuState( ETrue ); - iEditMenuBar->TryDisplayMenuBarL(); - if (menuPane && menuPane->NumberOfItemsInPane() == 0) - { - // Edit menu do not contain any items. - iEditMenuBar->StopDisplayingMenuBar(); - iFepPluginManager->ResetMenuState( ETrue ); - } - else - { - //adjust menu position to the front of dialog to - //avoid input capability is wrongly got - CCoeEnv* coeEnv = CCoeEnv::Static(); - CCoeAppUi* appUi = (CCoeAppUi*)(coeEnv->AppUi()); - if( appUi->IsDisplayingDialog() ) - { - iEditMenuBar->RemoveFromStack(); - // Set the MenuBar not focused, the later add to stack operation could unfocus other control correctly - iEditMenuBar->SetFocus(EFalse); - iEditMenuBar->AddToStackL(ECoeStackPriorityDialog + 1, ECoeStackFlagStandard); - } - } - - iEditMenuBar->SetMenuType(CAknFepUiInterfaceMenuBar::EMenuOptions); - } - } - -void CAknFepManager::LaunchMatchesPopupListL() - { - TInt noOfMatches = iPtiEngine->NumberOfCandidates(); - if (noOfMatches > 1) // 1 => only current match available, 0 => not in inline edit - { - // Create a list to pass to the dialog - CDesCArrayFlat* matchesList=new(ELeave)CDesCArrayFlat(1); - CleanupStack::PushL(matchesList); - iPtiEngine->GetCandidateListL(*matchesList); - TBuf matchListDesc; - TInt matchListItemCount = matchesList->MdcaCount(); - TInt currentIndex = ResolveCurrentCandidateListIndex(matchesList); - for ( TInt ii=0; ii < matchListItemCount ; ii++) - { - matchListDesc = matchesList->MdcaPoint(ii); - TChar tempChar = matchListDesc[0]; - if(tempChar.IsDigit()) - { - AknTextUtils::ConvertDigitsTo(matchListDesc,iLanguageCapabilities.iLocalDigitType); - matchesList->Delete(ii); - matchesList->InsertL(ii,matchListDesc); - } - } - - // add 'Spell' to the bottom of the list - TResourceReader reader; - CCoeEnv* coeEnv = CCoeEnv::Static(); - coeEnv->CreateResourceReaderLC(reader, R_AVKON_T9_MATCHES_QUERY_SPELL_ITEM); - matchesList->AppendL(reader.ReadTPtrC()); - CleanupStack::PopAndDestroy(); // reader - - TInt index = 0; - SetFlag(EFlagForegroundUIComponentVisible); - - TUid fepUid = CCoeEnv::Static()->FepUid(); - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - // Fire up the dialog - TInt returnValue = iUiInterface->LaunchListPopupL(R_AVKON_T9_MATCHES_QUERY, index, - currentIndex, matchesList, NULL); - PrepareFepAfterDialogExitL(fepUid); - if(returnValue == EAknSoftkeyOk) - {// Selected item 'index' from the matches array - HandleChangeInFocusL(); - TBuf newText; - // Get current match from editor and show it as a default text in 'insert word' query. - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(newText, - iUncommittedText.iAnchorPos, iUncommittedText.Length()); - - if (index==noOfMatches) // => 'spell' item at the bottom of the list - { - LaunchInsertWordQueryL(newText, iUncommittedText); - #ifdef RD_SCALABLE_UI_V2 - if( iFepFullyConstructed && iFepPluginManager ) - { - iFepPluginManager->ResetMenuState(); - } - #endif - } - else - { // insert word at index into text - TBuf modifiedMatch; - modifiedMatch.Copy(matchesList->MdcaPoint(index)); - TChar first(newText[0]); - if (first.IsUpper()) - { - TChar converted(modifiedMatch[0]); - converted.UpperCase(); - modifiedMatch[0] = converted; - } - InsertTextFromDialogL(modifiedMatch, iUncommittedText); - } - } - CleanupStack::PopAndDestroy(); // matchesList - } - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -// Predictive QWERTY (XT9) changes ----> -void CAknFepManager::LaunchCandidatePopupListL( TInt aFocusedIndex ) - { - iKeyBackSpaceHit = 1; - //CPtiEngine* ptiEngine = iPtiEngine; - - // Addition for ITI features on FSQ. - // Before open candidate list, if FSQ is opened, - // also need to check and close tooltip on it. - SendEventsToPluginManL( EPluginHideTooltip ); - - // Before open candidate list, if touch ui is opened, - // also need to close touch ui firstly. - if ( iFepPluginManager->PluginInputMode() != EPluginInputModeNone ) - { - iFepPluginManager->ClosePluginInputUiL( ETrue ); - } - - iExactWordPopupContent->HidePopUp(); - - TBool isShiftKeyDepressedAfterCandidateListLaunched = EFalse; - // Retrieve active index for QWERTY keypad when Best Prediction is Set - TInt activeIndex = KErrNotFound; - - if(iPrimaryCandidate && IsQwerty() && ( KeyboardLayout() != EPtiKeyboardHalfQwerty)) - { - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &activeIndex ); - } - - TInt noOfMatches = iPtiEngine->NumberOfCandidates(); - if (noOfMatches > 0) - { - //! The compact candidate popup that opens with when arrow down pressed while inline editing - //MAknFepCandidatePopup *candidatePopup; - - //Predictive QWERTY (XT9) changes for new Architecture ----> - iCandidatePopup = UiInterface()->NewCandidatePopupL(*this); - //Predictive QWERTY (XT9) changes for new Architecture <---- - - // Determine the place where to spawn the candidate popup. - TPoint inlineEditorTl; - TPoint inlineEditorBr; - TInt height; - TInt ascent; - TInt documentOffset = iPtiEngine->CurrentWord().Length(); - - // Popup Position was not right for RTL ----> - if(iLanguageCapabilities.iRightToLeftLanguage) - documentOffset = 0; - // Popup Position was not right for RTL <---- - GetScreenCoordinatesL(inlineEditorTl, height, ascent, documentOffset); - - inlineEditorTl.iY -= height; - GetScreenCoordinatesL(inlineEditorBr, height, ascent); - - // Focus next word in list ----> - // To fix the bug STAA-7GYDB6, Candidate list opens with the highlight on 3rd candidate when Exact typing is use. - // Show the popup. - TInt selectedIdx = aFocusedIndex; - TKeyEvent lastKeyEvent; - - if(selectedIdx == KErrNotFound) - { - if (noOfMatches > 1) - { - selectedIdx = KWordToFocusInCandidateList; - } - // Focus next word in list <---- - if(iSListLaunchedFromMenu) - { - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &selectedIdx ); - iSListLaunchedFromMenu = EFalse; - } - } - TUid fepUid = CCoeEnv::Static()->FepUid(); - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - TInt popupCmd = iCandidatePopup->ExecutePopupL( TRect(inlineEditorTl, inlineEditorBr), - selectedIdx, lastKeyEvent, iLanguageCapabilities.iRightToLeftLanguage, - (TInt)KeyboardLayout() ); - PrepareFepAfterDialogExitL(fepUid); - - if((lastKeyEvent.iScanCode == EStdKeyDevice3 ) || - ((lastKeyEvent.iScanCode == KAknFEPZeroKey)&& ((KeyboardLayout()== EPtiKeyboard12Key)||(KeyboardLayout()==EPtiKeyboardHalfQwerty))) - || lastKeyEvent.iCode == EKeySpace ) - { - SetExtendedFlag(EExtendedFlagOkKeyPressOnCandidatePopup); - } - - - TBool needToExecute(EFalse); - //The candidate list was closed by long key press of shift key - isShiftKeyDepressedAfterCandidateListLaunched = IsFlagSet(EFlagShiftKeyDepressed) && (KeyboardLayout()== EPtiKeyboard12Key); - if (popupCmd != EAknSoftkeyCancel) - { - HandleChangeInFocusL(); - - if (popupCmd == EAknFepSoftkeySpell) - { - // For QWERTY Input Mode - if (iQwertyInputMode && EPtiKeyboardHalfQwerty != iKeyboardType) - { - TInt activeIdx = KErrNotFound; - TInt secondaryIdx = KErrNotFound; - - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, - &activeIdx ); - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetIndexOfSecondaryCandidate, - &secondaryIdx ); - - if(activeIdx != secondaryIdx) - { - iPtiEngine->HandleCommandL( - EPtiCommandUserActionSetCurrentIndexOfCandidates, &secondaryIdx ); - } - else - { - secondaryIdx = 0; - iPtiEngine->HandleCommandL( - EPtiCommandUserActionSetCurrentIndexOfCandidates, &secondaryIdx ); - } - TPtrC selectedWord = iPtiEngine->CurrentWord(); - if(!IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - StartInlineEditingWithSelectedWord(selectedWord); - } - UpdateInlineEditL( selectedWord, selectedWord.Length() ); - - } - // For ITUT Keypad, remove autocompletion part before launching Query Dialog - else - { - RemoveSuggestedAdvanceCompletionL(); - } - - // delete the candidate popup before launching the edit word dialog - // as the candidate list has already been closed. - if(iCandidatePopup) - { - delete iCandidatePopup; - iCandidatePopup = NULL; - } - - LaunchEditWordQueryL(); - } - - // Close with space or selection key: Commit and add space or move cursor ahead one - // character if next character already is space - else if ( ( lastKeyEvent.iScanCode == EStdKeyDevice3 || lastKeyEvent.iScanCode == KAknFEPZeroKey ) - && ( KeyboardLayout() == EPtiKeyboard12Key || KeyboardLayout() == EPtiKeyboardHalfQwerty ) ) - { - iPtiEngine->HandleCommandL( EPtiCommandUserActionSetCurrentIndexOfCandidates, - &selectedIdx ); - TPtrC selectedWord = iPtiEngine->CurrentWord(); - if(!IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - StartInlineEditingWithSelectedWord(selectedWord); - } - UpdateInlineEditL( selectedWord, selectedWord.Length() ); - iPtiEngine->CommitCurrentWord(); - CommitInlineEditL(); - #ifdef RD_INTELLIGENT_TEXT_INPUT - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - #endif - - AddOneSpaceOrMoveCursorL(); - } - // Close with right arrow commits the word, does not add space - else if ( lastKeyEvent.iScanCode == EStdKeyRightArrow ) - { - // Change of UI Spec - /* - * The following codde change is a part of bug fix for improper - * behavior of right arrow key when the candidate list is open. The - * right arrow key according to the UI specs should not the selected - * candicdate and cursor should be end of the word. - */ - iPtiEngine->HandleCommandL( EPtiCommandUserActionSetCurrentIndexOfCandidates, - &selectedIdx ); - TPtrC selectedWord = iPtiEngine->CurrentWord(); - if(!IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - StartInlineEditingWithSelectedWord(selectedWord); - } - UpdateInlineEditL( selectedWord, selectedWord.Length() ); //selection.iAnchorPosition - iPtiEngine->CommitCurrentWord(); - CommitInlineEditL(); - #ifdef RD_INTELLIGENT_TEXT_INPUT - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - #endif - - SimulateKeyEventL(EKeyF19); - } - else if(popupCmd == EAknSoftkeyOk) - { - iPtiEngine->HandleCommandL( EPtiCommandUserActionSetCurrentIndexOfCandidates, - &selectedIdx ); - TPtrC selectedWord = iPtiEngine->CurrentWord(); - if(!IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - StartInlineEditingWithSelectedWord(selectedWord); - } - UpdateInlineEditL( selectedWord, selectedWord.Length() ); - iPtiEngine->CommitCurrentWord(); - CommitInlineEditL(); - AddOneSpaceOrMoveCursorL(); - } - else - { - iPtiEngine->HandleCommandL( EPtiCommandUserActionSetCurrentIndexOfCandidates, - &selectedIdx ); - TPtrC selectedWord = iPtiEngine->CurrentWord(); - if(!IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - StartInlineEditingWithSelectedWord(selectedWord); - } - UpdateInlineEditL( selectedWord, selectedWord.Length() ); - needToExecute = ETrue; - } - } - else if (popupCmd == EAknSoftkeyCancel && iPrimaryCandidate && IsQwerty() - && ( KeyboardLayout() != EPtiKeyboardHalfQwerty ) ) - { - iPtiEngine->HandleCommandL( EPtiCommandUserActionSetIndexOfActiveCandidate, &activeIndex ); - iKeyBackSpaceHit = 0; - } - else if(lastKeyEvent.iCode == EKeyPhoneEnd ) - { - HandleChangeInFocusL(); - CCoeEnv::Static()->SimulateKeyEventL( lastKeyEvent, EEventKey ); - } - else if (popupCmd == EAknSoftkeyCancel && IsQwerty() && ( KeyboardLayout() != EPtiKeyboardHalfQwerty ) ) - iKeyBackSpaceHit = 0; - - // If the dialog is not closed by pressing softkeys, escape, or right arrow - // then the pressed key is handled also by Fep. This way the user can keep typing when the popup is open. - - //=============== Error fixing and simplify the condition ========================================== - // The following piece of code should be excuted, if focus word - // in the candidate list is accept, otherwise word sholud remain as it is. - // If user does not accept the word,popupCmd always be EAknSoftkeyCancel. - // Insetead of earlier lengthy condition, makes it simple. - - if( needToExecute ) - { - const TBool shifted = (lastKeyEvent.iModifiers & (EModifierLeftShift | - EModifierRightShift | EModifierShift)); - const TBool chrDown = (lastKeyEvent.iModifiers & (EModifierLeftFunc)); - - const TBool fnDown = (lastKeyEvent.iModifiers & (EModifierRightFunc)); - if(fnDown ) - iFnKeyManager->SetFnKeyState(CAknFepFnKeyManager::EFnKeyDown) ; - - if (shifted) - { - SetFlag(EFlagQwertyShiftMode|EFlagNoActionDuringShiftKeyPress); - } - else - { - ClearFlag(EFlagQwertyShiftMode|EFlagNoActionDuringShiftKeyPress); - } - - if (chrDown) - { - SetFlag(EFlagQwertyChrKeyDepressed|EFlagNoActionDuringChrKeyPress); - } - else - { - ClearFlag(EFlagQwertyChrKeyDepressed|EFlagNoActionDuringChrKeyPress); - } - if ( lastKeyEvent.iScanCode == EStdKeyDevice3 ) - { - CCoeEnv::Static()->SimulateKeyEventL( lastKeyEvent, EEventKey ); - } - if (! ( lastKeyEvent.iScanCode == EStdKeyDevice3 || - lastKeyEvent.iScanCode == EStdKeyRightArrow ) ) - { - /* - * The following code change is a part of bug fix for improper - * behavior of any keypress when the candidate list is open. The - * keypress according to the UI specs should lock the selected - * candidate to editor and the inserted letter is appended to it. - */ - iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate); - TPtrC selectedWord = iPtiEngine->CurrentWord(); - if(!IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - StartInlineEditingWithSelectedWord(selectedWord); - } - UpdateInlineEditL( selectedWord, selectedWord.Length() ); //selection.iAnchorPosition - // For QWERTY input mode, scanCode is used - #ifdef __HALF_QWERTY_KEYPAD - if( KeyboardLayout() == EPtiKeyboardHalfQwerty) - { - iHalfQwertyLastKeyEvent = lastKeyEvent; - iAsyncOwnSimulateKey.CallBack(); - } - else - #endif //__HALF_QWERTY_KEYPAD - if (iQwertyInputMode) - { - CCoeEnv::Static()->SimulateKeyEventL( lastKeyEvent, EEventKey ); - } - // For ITUT input Mode, keyCode is used - else - { - SimulateKeyEventL( lastKeyEvent.iCode); - } - } - } - - ShowExactWordPopupIfNecessaryL(); - if(iCandidatePopup) - { - delete iCandidatePopup; - iCandidatePopup = NULL; - } - } - //The flag ECcpuStateShiftkeyWasPressedBeforeLosingFocus suggests that the candidate list was closed with a - //long key press of edit key (shift key). There are multiple calls to HandleChangedInFocusL() one manually and the other through - //CONE focus change notifier. We want the flag to be set for CONE's focus handler. - if(isShiftKeyDepressedAfterCandidateListLaunched) - { - SetCcpuFlag(ECcpuStateShiftkeyWasPressedBeforeLosingFocus); - } - } -void CAknFepManager::StartInlineEditingWithSelectedWord(TDesC& aTextToUncommit) - { - if(iConcatenationTimer->IsActive()) - iConcatenationTimer->Cancel(); - - TInt docLenFep=iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - if (iUncommittedText.iCursorPos>docLenFep) - iUncommittedText.iCursorPos=docLenFep; - if (iUncommittedText.iAnchorPos>docLenFep) - iUncommittedText.iAnchorPos=docLenFep; - // Activates western predictive UI to an inline editing state. - FepUI()->ActivateUI(); - SyncStates(EAknFepStateUIActive); - // Predictive QWERTY (XT9) changes <---- - TRAP_IGNORE(StartInlineEditL(iUncommittedText, aTextToUncommit, - aTextToUncommit.Length(), EFalse)); - - } -void CAknFepManager::ShowExactWordPopupIfNecessaryL() - { - iExactWordPopupContent->HidePopUp(); - - // Before open tooltip, - // also need to check and close tooltip on it. - SendEventsToPluginManL( EPluginHideTooltip ); - - if ( iWesternPredictive && iQwertyInputMode - && IsFlagSet( EFlagInsideInlineEditingTransaction ) - && (EPtiKeyboardHalfQwerty != KeyboardLayout())) - { - // In the proactive mode this popup is used to show the exact input if it differs from the - // default candidate shown inline. - // In the reactive mode it is used to show the best guess candidate if it differs from the - // exact word shown inline. - - TInt activeIdx = KErrNotFound; - TInt secondaryIdx = KErrNotFound; - - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &activeIdx ); - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetIndexOfSecondaryCandidate, - &secondaryIdx ); - - TBool popupBelowInline = EFalse; // ETrue -> popup is above inline editor - - if(iKeyBackSpaceHit) - secondaryIdx = activeIdx; - - if ( activeIdx != secondaryIdx ) - { - popupBelowInline = EFalse; - - CDesCArray* candidates = new (ELeave) CDesCArrayFlat(16); - CleanupStack::PushL(candidates); - GetCandidatesL(*candidates, activeIdx); - - // There is a possibility that the secondary index of the candidate changes - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetIndexOfSecondaryCandidate, - &secondaryIdx ); - // In case the active index and the secondary index is same, then we do not need to display the - // popup - if ( activeIdx == secondaryIdx ) - { - CleanupStack::PopAndDestroy(candidates); - return; - } - - TPtrC secondaryWord = (*candidates)[secondaryIdx]; - iExactWordPopupContent->SetTextL( secondaryWord ); - iExactWordPopupContent->SetArrowDirection( MAknFepUiWordPopupContent::EUpwards ); - CleanupStack::PopAndDestroy(candidates); - - // Open FSQ tooltip if FSQ is opened - SendEventsToPluginManL( EPluginShowTooltip, secondaryIdx ); - - - // For addtion of ITI features on FSQ. - // Showing tooltip on avkon editor and FSQ ICF editor at same time probably - // cause flicker problem. Add this condition to ensure not to show tooltip on - // avkon editor when it is being displayed on FSQ. - if ( iFepPluginManager && !( iFepPluginManager->IsTooltipOpenOnFSQ() ) ) - { - TPoint popupTopRight; - TInt height; - TInt ascent; - TInt documentOffset = iPtiEngine->CurrentWord().Length(); - - GetScreenCoordinatesL(popupTopRight, height, ascent, documentOffset); - - iExactWordPopupContent->UpdateContentSize(); - - TBool rightToLeftLang = IsRightToLeftParagraph( DocPos() ); - if ( !rightToLeftLang ) - { - popupTopRight.iX += iExactWordPopupContent->Size().iWidth; - } - - if ( popupBelowInline ) - { - popupTopRight.iY += ascent / 2; - } - else - { - popupTopRight.iY -= height + iExactWordPopupContent->Size().iHeight; - } - - iExactWordPopupContent->SetPosition( popupTopRight ); - iExactWordPopupContent->ShowPopUp(); - } - } - } - else if(iWesternPredictive - && IsFlagSet( EFlagInsideInlineEditingTransaction ) - && IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY); - } - } - -void CAknFepManager::LaunchPredictiveSettingDialogL() - { -#ifdef RD_SCALABLE_UI_V2 - // Addtion of ITI features on FSQ. - if ( iFepPluginManager - && iFepPluginManager->IsSupportITIOnFSQ() ) - { - // Hide touch input ui firstly, - // otherwise, touch ui can hide status pane. - // Let CAknFepPluginManager know this setting dialog will be opened. - iFepPluginManager->ITISettingDialogOpen( ETrue ); - iFepPluginManager->ClosePluginInputUiL( ETrue ); - SendEventsToPluginManL( ELostForeground ); - } -#endif // RD_SCALABLE_UI_V2 - - // Hide fixed toolbar just before launching predictive settings dialog - CEikAppUiFactory * appUiFactory = NULL; - appUiFactory = static_cast(CEikonEnv::Static()->AppUiFactory()); - - CAknToolbar * fixedToolbar = NULL; - if(appUiFactory) - fixedToolbar = appUiFactory->CurrentFixedToolbar(); - - // If fixedtoolbar is not there in the current editor, we don't need to hide it before launching settings dialog - // and unhide it after settings dialog is done. - if( fixedToolbar && !( fixedToolbar->IsShown() && fixedToolbar->CountComponentControls()>0 ) ) - fixedToolbar = NULL; - - if(fixedToolbar) - { - fixedToolbar->SetDimmed(ETrue); - fixedToolbar->DrawDeferred(); - } - TUid fepUid = CCoeEnv::Static()->FepUid(); - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - UiInterface()->LaunchPredictiveSettingDialogL(R_PREDICTIVESETTING_DIALOG, - R_PREDICTIVESETTINGDIALOG_MENUBAR, - R_PREDICTIVETEXTOFF_CONFIRMATION_QUERY, - R_AKNFEP_PRED_INPUT_SETTINGS_TITLE); - PrepareFepAfterDialogExitL(fepUid); -#ifdef RD_SCALABLE_UI_V2 - // // Addtion of ITI features on FSQ. - if ( iFepPluginManager - && iFepPluginManager->IsSupportITIOnFSQ() ) - { - // Let CAknFepPluginManager know this setting dialog will be opened. - iFepPluginManager->ITISettingDialogOpen( EFalse ); - } -#endif // RD_SCALABLE_UI_V2 - - // Enables fixed toolbar after predictive settings dialog is closed - if(fixedToolbar) - { - fixedToolbar->SetDimmed(EFalse); - fixedToolbar->DrawDeferred(); - } - } -#ifdef FF_DUAL_LANGUAGE_SUPPORT -void CAknFepManager::LaunchWritingLanguageSettingDialogL() - { - TUid fepUid = CCoeEnv::Static()->FepUid(); - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - UiInterface()->LaunchWritingLanguageSettingDialogL(R_INPUTLANGUAGE_DIALOG, R_PREDICTIVESETTINGDIALOG_MENUBAR, R_INPUT_LANGUAGE_SETTINGS_TITLE); - PrepareFepAfterDialogExitL(fepUid); - } - -void CAknFepManager:: LaunchDualLanguageSettingDialogL() - { - /* In Chinese language variant,if there are more than one languages supporting dual language feature, - display writing language setting view in which Primary and Secondary Languages can be selected from the list. - - In Chinese language variant,if there is only one language supporting dual language feature, - no need to display the Writing language view which contains Primary and Secondary Language. - Instead we can display the Writing language list directly to the user;from which the user can select the writing language*/ - - if( FeatureManager::FeatureSupported( KFeatureIdChinese ) || FeatureManager::FeatureSupported( KFeatureIdJapanese )) - { - CArrayFixFlat* languages = new( ELeave )CArrayFixFlat( ELanguageArrayGranularity ); - CleanupStack::PushL( languages ); - iPtiEngine->GetAvailableLanguagesL( languages ); - - TInt count = languages->Count(); - TInt noLangSupportWesternPred = count; - for (TInt index = 0; index < count; index++) - { - TInt langCode = languages->At(index); - - if (langCode == ELangTaiwanChinese || - langCode == ELangHongKongChinese || - langCode == ELangPrcChinese || - langCode == ELangJapanese || - langCode == ELangKorean ) - { - noLangSupportWesternPred--; - } - } - CleanupStack::PopAndDestroy(languages); - - if( noLangSupportWesternPred > 1 ) - { - SetFlag(CAknFepManager::EFlagNewSharedDataInputMode); - LaunchWritingLanguageSettingDialogL(); - if(IsFlagSet(CAknFepManager::EFlagNewSharedDataInputLanguage)) - { - ClearFlag(CAknFepManager::EFlagNewSharedDataInputLanguage); - HandleChangeInFocusL(); - ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage()); - } - } - else - LaunchLanguagesPopupListL(); - } - else - { - LaunchWritingLanguageSettingDialogL(); - if(IsFlagSet(CAknFepManager::EFlagNewSharedDataInputLanguage)) - { - ClearFlag(CAknFepManager::EFlagNewSharedDataInputLanguage); - HandleChangeInFocusL(); - ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage()); - } - } - - } -#endif //FF_DUAL_LANGUAGE_SUPPORT -// Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT -void CAknFepManager::LaunchInsertWordQueryL(const TDesC& aInitialText, - TCursorSelection aTextSpanToReplace) - { - TInt recourceId; - if(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen) - { - recourceId = R_AVKON_INSERT_WORD_FS_QUERY; - } - else - { - recourceId = R_AVKON_INSERT_WORD_QUERY; - } - LaunchFepQueryDialogL(recourceId, aInitialText, aTextSpanToReplace); - } - -void CAknFepManager::LaunchEditWordQueryL() - { - - TBuf newText; -#ifndef RD_INTELLIGENT_TEXT_INPUT - if(IsAutoCompleteOn()) - { - RemoveSuggestedCompletionL(); - } -#endif //RD_INTELLIGENT_TEXT_INPUT - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(newText, - iUncommittedText.iAnchorPos, - iUncommittedText.Length()); - - TInt recourceId; - if(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen) - { - recourceId = R_AVKON_INSERT_WORD_FS_QUERY; - } - else - { - recourceId = R_AVKON_INSERT_WORD_QUERY; - } - LaunchFepQueryDialogL(recourceId, newText, iUncommittedText); - } - -void CAknFepManager::LaunchFepQueryDialogL(TInt aResourceId, const TDesC& aInitialText, - TCursorSelection aTextSpanToReplace) - { - HBufC* textBuf = HBufC::NewLC(EQueryBufferLength); // buffer for inserted text - TPtr text = textBuf->Des(); - - if (aInitialText.Length() <= EQueryBufferLength) - text.Copy(aInitialText); - else // truncate the incoming text to EQueryBufferLength before copying - { - TPtrC truncatedText = aInitialText.Left(EQueryBufferLength); - text.Copy(truncatedText); - } - - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - TryRemoveNoMatchesIndicatorL(); - CommitInlineEditL(); - } - UpdateCbaL(NULL); - - TInt underlyingCase = iCaseMan->CurrentCase(); - TBool isCaseUpdatesSupressed = IsFlagSet(EFlagSupressAutoUpdateAtEditorStart); - -#ifndef RD_INTELLIGENT_TEXT_INPUT - if (aInitialText.Length()) - { - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - if (aInitialText.Length() == 1) - { - if (STATIC_CAST(TChar, aInitialText[0]).IsUpper()) - iCaseMan->SetCurrentCase(EAknEditorTextCase); - } - else // length of initial text > 1 - { - if (STATIC_CAST(TChar, aInitialText[0]).IsUpper()) - { - if (STATIC_CAST(TChar, aInitialText[1]).IsLower()) - iCaseMan->SetCurrentCase(EAknEditorTextCase); - else // 2nd character is upper case - iCaseMan->SetCurrentCase(EAknEditorUpperCase); - } - } - } -#endif // RD_INTELLIGENT_TEXT_INPUT - - if (iCaseMan->CurrentCase() == EAknEditorLowerCase - || iCaseMan->CurrentCase() == EAknEditorUpperCase) - { - SetFlag(EFlagSupressAutoUpdateAtEditorStart); - } - - TransferFepStateToEditorL(); - - SetFlag(EFlagForegroundUIComponentVisible); - - TInt textQueryEditorFlag = 0; - if ((aResourceId == R_AVKON_INSERT_WORD_QUERY || - aResourceId == R_AVKON_EDIT_WORD_QUERY ) && - IsChineseInputLanguage()) - { - textQueryEditorFlag = EAknEditorFlagLatinInputModesOnly; - } -#ifdef RD_SCALABLE_UI_V2 - if (iFepFullyConstructed && - iFepPluginManager->PluginInputMode() == EPluginInputModeItut && - !(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen)) - { - iFepPluginManager->SpellText(textBuf); - iFepPluginManager->DisplaySpellEditor(textQueryEditorFlag, aInitialText, - TCursorSelection(aInitialText.Length(), 0)); - - delete iSpellInitText; - iSpellInitText = NULL; - iSpellInitText = aInitialText.AllocL(); - iSpellInitCurSel = aTextSpanToReplace; - - iFepPluginManager->SetCaseUpdatesSupressed(isCaseUpdatesSupressed); - iFepPluginManager->SetITUTSpellingStateL(ETrue); - iFepPluginManager->SetCursorSelection(aTextSpanToReplace); - CleanupStack::PopAndDestroy(); - - return; - } -#endif - - if(iFepPluginManager) - { - iFepPluginManager->SetInEditWordQueryFlag(ETrue); - } - - PrepareFepForFepAwareDialogLaunch(); - TUid fepUid = CCoeEnv::Static()->FepUid(); - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - TInt id = iUiInterface->TextQueryDialogL(text, *EditorState(), - textQueryEditorFlag, aResourceId); - PrepareFepAfterFepAwareDialogExitL(fepUid); - PrepareFepAfterDialogExitL(fepUid); - - if(iFepPluginManager) - { - iFepPluginManager->SetInEditWordQueryFlag(EFalse); - } - if (id == EAknSoftkeyOk) - { - // Insert the character into the edwin. - InsertTextFromDialogL(text, aTextSpanToReplace); - // Add the word to the user dictionary (except for single character) after it has been added to the editor. - // FepUI of the main editor is used. Different FepUI is used in multitap - // query and predictive mode 'main' editor at least in Japanese variant. -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(text.Length() > 1) - FepUI()->AddTextToUserDictionaryL(text); -#else - FepUI()->AddTextToUserDictionaryL(text); -#endif // RD_INTELLIGENT_TEXT_INPUT - - } - else // restore original case and inline text - { - HandleChangeInFocus(); - if (aTextSpanToReplace.Length()) - { - EditorState()->SetInlineEditSpan(aTextSpanToReplace); - ConfigureFEPFromEditorStateL(); - } - iCaseMan->SetCurrentCase(underlyingCase); - TransferFepStateToEditorL(); - } - - if (isCaseUpdatesSupressed) - { - SetFlag(EFlagSupressAutoUpdate); - } - else - { - ClearFlag(EFlagSupressAutoUpdate); - } - ClearFlag(EFlagSupressAutoUpdateAtEditorStart); - CleanupStack::PopAndDestroy(); // text - } - -void CAknFepManager::InsertTextFromDialogL(const TDesC& aTextFromDialog, - TCursorSelection aExtentOfTextToReplace) - { - SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd); - // ensure we're back on the correct editor - -#ifdef RD_SCALABLE_UI_V2 - iNotifyPlugin = EFalse; // not really focus change - HandleChangeInFocus(); - iNotifyPlugin = ETrue; -#else - HandleChangeInFocus(); -#endif - // need to commit if the editor was previously performing an inline edit - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - CommitInlineEditL(); - - TInt addedTextLength=0; - - TCursorSelection currentSelection; -// In case input capabilities goes null leaving with an error code and allowing application to handle.. - if (NULL == iInputCapabilities.FepAwareTextEditor()) - User::Leave(KErrCorrupt); - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelection); - // Prepare for the edit - TInt docLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - TInt maxLength = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep(); - - if (aExtentOfTextToReplace.Length()) - { - if (currentSelection.Length()) - // Want to 'cancel' the selection so move cursor & anchor to the end of - // the selection and then to the end of the current word - { - TInt endOfSelection=currentSelection.HigherPos(); - iUncommittedText.SetSelection(endOfSelection, endOfSelection); - if (CursorInsideWord()) - MoveCursorToEndOfWordL(); - } - iUncommittedText = aExtentOfTextToReplace; - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText); - addedTextLength = aTextFromDialog.Length(); - if (maxLength != 0) - { - addedTextLength = Min(addedTextLength, - (maxLength - docLength + iUncommittedText.Length())); - } - } - else - { - addedTextLength = aTextFromDialog.Length(); - - //maxLength of 0 means the editor has no limit - if (maxLength != 0) - { - addedTextLength = Min(addedTextLength, - (maxLength - docLength + currentSelection.Length())); - } - if (currentSelection.Length()) - { - iUncommittedText.SetSelection(currentSelection.HigherPos(), - currentSelection.LowerPos()); - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText); - } - else // do this in order for editor to get the correct number of chars to format from GetFormatOfFepInlineText() - iUncommittedText.iCursorPos+=addedTextLength; - } - // if necessary trim text to fit into available space in the editor & perform the edit - TPtrC textToEditor = aTextFromDialog.Left(addedTextLength); - - StartInlineEditL(textToEditor); - CommitInlineEditL(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); -#endif - - EditorState()->SetInlineEditSpan(iUncommittedText); - } - -void CAknFepManager::LaunchKutenCodeQueryL() - { - TInt code; - TUid fepUid = CCoeEnv::Static()->FepUid(); - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - UiInterface()->JapaneseKutenQueryDialogL(R_AKNFEPUICTRLJAPANESEKUTEN_QUERY, code, 0); - - PrepareFepAfterDialogExitL(fepUid); - - HandleChangeInFocus(); // to re-establish contact with editor under KutenCode Query - - if (code > 0 && EditorHasFreeSpace()) - { - TBuf text; - text.Append((TText)code); - SetFlag(EFlagInsideInlineEditingTransaction); - iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(text, ESingleCharacter, - ETrue, NULL, *this, *this); - CommitInlineEditL(); - } - } - -TInt CAknFepManager::NumericModeSCTResourceId() const - { - TInt charMapResId = EDefaultNumericCharMapResId; - TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor); - - if( phoneIdle ) - { - charMapResId=R_AKNFEP_SCT_NUMERIC_MODE_CHARS_STANDARD; - return charMapResId; - } - - switch (iAknEditorNumericKeymap) - { - case EAknEditorStandardNumberModeKeymap: - charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_STANDARD; - break; - case EAknEditorCalculatorNumberModeKeymap: - charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_CALCULATOR; - break; - case EAknEditorConverterNumberModeKeymap: - charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_CONVERTER; - break; - case EAknEditorFixedDiallingNumberModeKeymap: - charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_FIXED_DIALLING; - break; - case EAknEditorSATNumberModeKeymap: - charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_SAT; - break; - case EAknEditorToFieldNumberModeKeymap: - charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_TO_FIELD; - break; - case EAknEditorPlainNumberModeKeymap: - charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_PLAIN; - break; - case EAknEditorNativeKeysNumberModeKeymap: - //currently this is not in use - break; - case EAknEditorSATHiddenNumberModeKeymap: - charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_SAT_HIDDEN; - break; - default: - //We reach here because there is no valid SCT resource ID set - //by the current editor. So best we can do now is set the - //default mode for numeric editors. - charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_STANDARD; - break; - } - if(IsHybridAplhaEditor() && !IsHybridAlphaModeChangedtoAplhanumeric()) - { - charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_STANDARD; - } - return charMapResId; - } - - -TBool CAknFepManager::HashKeyModeChangeBlockedInSearchField() const - { - if ((iAknEditorFlags & EAknEditorFlagFindPane) && - iSharedDataInterface->HashKeySelectionInUse() && - !IsChineseInputLanguage() && - !IsKoreanInputLanguage() && - iLanguageCapabilities.iInputLanguageCode != ELangVietnamese && - !FeatureManager::FeatureSupported(KFeatureIdJapanese)) - { - if (iMode == ELatin || iMode == ENumber || iMode == ENativeNumber ) - { - return ETrue; - } - } - - return EFalse; - } - - -TKeyResponse CAknFepManager::HandleHashKeyL(TKeyPressLength aLength) - { - TKeyResponse response = EKeyWasNotConsumed; - if (IsFlagSet(EFlagPassNextKey)) - { - ClearFlag(EFlagPassNextKey); - } - else if (IsFlagSet(EFlagShiftKeyDepressed)) - { - response = EKeyWasConsumed; - } - else if (HashKeyModeChangeBlockedInSearchField()) - { - // Do not allow case changes for latin languages in search field - // if hash key selection is active. - response = EKeyWasConsumed; - } - else - { - if ( IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) ) - { -#ifdef RD_HINDI_PHONETIC_INPUT - if(iSharedDataInterface->InputTextLanguage() != KLangHindiPhonetic) -#endif - FepUI()->ExpireMultitapTimer(); - // For Japanese, send backspace key event in case hash key - // is pressed while secret text input. - if (IsFeatureSupportedJapanese()) - { - if (iInputCapabilities.SupportsSecretText()) - { - SimulateKeyEventL(EKeyF20); //backspace - } - } -#ifdef RD_HINDI_PHONETIC_INPUT - if(iSharedDataInterface->InputTextLanguage() != KLangHindiPhonetic) -#endif - ClearFlag(EFlagInsideMultitapInlineEditingTransaction); - iCaseMan->UpdateCase(ENullNaviEvent); - } - if (aLength == EShortKeyPress) - { - if ( iMode != ENumber && iMode != ENativeNumber ) - { - iModeBefore = iMode; - if (iModeBefore == ELatin) - { - iCaseBefore = iCaseMan->CurrentCase(); - } - } - } - - // always keep previous input mode for Japanese input - if (IsFeatureSupportedJapanese()) - { - iModeBefore = iMode; - if (iModeBefore == ELatin) - { - iCaseBefore = iCaseMan->CurrentCase(); - } - } - if (iMode == EHangul && aLength == ELongKeyPress) - { - if (IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - TPtrC text = iPtiEngine->CurrentWord(); - if (text.Length() > 0) - { - CancelInlineEdit(); - StartInlineEditL(); - UpdateInlineEditL(iPtiEngine->PreviousCandidate(), iPtiEngine->PreviousCandidate().Length()); - CommitInlineEditL(); - } - else - { - CancelInlineEdit(); - } - iPtiEngine->ClearCurrentWord(); - } - } - - response = iHashKeyMan->HandleKeyEventL(aLength); - if (response == EKeyWasNotConsumed) - { - switch (iAknEditorNumericKeymap) - { - case EAknEditorStandardNumberModeKeymap: //fall through - case EAknEditorFixedDiallingNumberModeKeymap: - case EAknEditorSATNumberModeKeymap: - case EAknEditorSATHiddenNumberModeKeymap: - case EAknEditorAlphanumericNumberModeKeymap: - if (!EditorHasFreeSpace()) - { - response=EKeyWasConsumed; - } - break; - case EAknEditorCalculatorNumberModeKeymap: //fall through - case EAknEditorConverterNumberModeKeymap: - SimulateKeyEventL(CurrentDecimalSeparator()); - if (EditorHasFreeSpace()) - { - SetFlag(EFlagCharacterAdded); - } - response=EKeyWasConsumed; - break; - case EAknEditorToFieldNumberModeKeymap: - SimulateKeyEventL(text_to_field_mode_hash_key); - if (EditorHasFreeSpace()) - { - SetFlag(EFlagCharacterAdded); - } - response=EKeyWasConsumed; - break; - case EAknEditorPlainNumberModeKeymap: - response=EKeyWasConsumed; - break; - case EAknEditorNativeKeysNumberModeKeymap: - break; - default: - break; - } - } - } - return response; - } - -TInt CAknFepManager::EditorNumericKeymap() const - { - return iAknEditorNumericKeymap; - } - - -TBool CAknFepManager::HashKeySelectionInUse() const - { - if (ExtendedInputCapabilities() - & CAknExtendedInputCapabilities::EForceHashKeySelectionStatusFlagOff) - { - return EFalse; - } - - return iSharedDataInterface->HashKeySelectionInUse(); - } - - -TBool CAknFepManager::EditSubmenuInUse() const - { - if (RProcess().SecureId().iId == KPhoneSecureId) - { - if (iQwertyInputMode) - { - return EFalse; - } - } - - if (ExtendedInputCapabilities() & CAknExtendedInputCapabilities::EForceEditSubmenuStatusFlagOff) - { - return EFalse; - } - - return iSharedDataInterface->EditSubmenuInUse(); - } - - -void CAknFepManager::DimEditMenuModeItems(CAknFepUiInterfaceMenuPane* aMenuPane) - { - // current item - DimMenuItem(aMenuPane, iMode); - - // dim menu items for Chinese input modes that aren't valid in the current editor - // or the device subvariant - for (TInt mode = KFirstMode; mode <= KLastMode; mode = mode << 1) - { - if (!IsModePermitted(mode)) - { - DimMenuItem(aMenuPane, mode); - } - } - - if (IsAbleToLaunchSmiley()) - { - TInt index; - if (aMenuPane->MenuItemExists(EAknCmdEditInsertSmiley, index)) - { - aMenuPane->SetItemDimmed(EAknCmdEditInsertSmiley, EFalse); - } - } - } - -void CAknFepManager::DimMenuItem(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aMode) - { - TInt dimmedMenuItem = 0; - switch (aMode) - { - case EPinyin: - dimmedMenuItem = EChinFepCmdModePinyin; - break; - case EZhuyin: - dimmedMenuItem = EChinFepCmdModeZhuyin; - break; - case EStroke: - dimmedMenuItem = EChinFepCmdModeStroke; - break; - case ECangJie: - dimmedMenuItem = EChinFepCmdModeCangJie; - break; - case EZhuyinFind: - dimmedMenuItem = EChinFepCmdModeZhuyinFind; - break; - case EStrokeFind: - dimmedMenuItem = EChinFepCmdModeStrokeFind; - break; - case ELatin: - if ( iLanguageCapabilities.iInputLanguageCode != ELangJapanese) - { - // According Katja's info, dim the current case item in the - // indicator menu. - if ( iCaseMan->CurrentCase() == EAknEditorUpperCase ) - { - dimmedMenuItem = EChinFepCmdModeLatinUpper; - } - else if(iCaseMan->CurrentCase() == EAknEditorLowerCase) - { - dimmedMenuItem = EChinFepCmdModeLatinLower; - } - else if(iCaseMan->CurrentCase() == EAknEditorTextCase) - { - dimmedMenuItem = EAknCmdEditModeLatinText; - } - } - break; - case ENativeNumber: - { - aMenuPane->SetItemDimmed(EAknCmdEditModeArabicIndicNumber, ETrue); - aMenuPane->SetItemDimmed(EAknCmdEditModeEasternArabicIndicNumber, ETrue); - aMenuPane->SetItemDimmed(EAknCmdEditModeIndicNumber, ETrue); - } - break; - default: - break; - } - TInt index; - if (dimmedMenuItem && aMenuPane->MenuItemExists(dimmedMenuItem, index)) - { - aMenuPane->SetItemDimmed(dimmedMenuItem, ETrue); - } - } - -void CAknFepManager::LaunchConfirmationNoteL(TInt aResourceId) - { - SetFlag(EFlagForegroundUIComponentVisible); - iUiInterface->LaunchConfirmationNoteL(aResourceId); - } - -void CAknFepManager::NewCharacterL(const TDesC& aChar) - { - if ( aChar.Length() == 0 ) - { - return; - } - TChar ch = aChar[0]; - - TBool validNewCandidate = CharIsValidInEditor(ch); - // Check if the character is valid for the editor. - if ( !validNewCandidate ) - { - TChar firstNewCandidate = ch; - TBool goneThroughAllCandidates(EFalse); - TPtrC8 sequence = iPtiEngine->CurrentInputSequence(); - - if ( sequence.Length() ) - { - TPtiKey key = (TPtiKey)sequence[0]; - - TBuf<20> mapData; - iPtiEngine->MappingDataForKey(key, mapData, iPtiEngine->Case()); - // If the character was not coming from ptiengine mappings, fail instantly. - if (mapData.Locate(firstNewCandidate) != KErrNotFound) - { - // If there is an ivalid character in chr-loop, try to jump to next valid one. - for (TInt jj = 0; jj < mapData.Length(); jj++) - { - TPtrC text = iPtiEngine->AppendKeyPress(key); - if ( text.Length() == 0 ) - { - continue; - } - ch = text[0]; - goneThroughAllCandidates = (ch == firstNewCandidate); - validNewCandidate = CharIsValidInEditor(ch); - if (validNewCandidate || goneThroughAllCandidates) - { - break; - } - } - } - } - } - if (!validNewCandidate) - { - // No valid characters at all. - CancelInlineEdit(); - return; - } - - if ( (ch == KAknFEPLineFeedSymbol || - ch == KAknFEPMirroredLineFeedSymbol) && - (EditorHasFreeSpace() || IsFlagSet(EFlagLastCharacterInEditor))) - { - SetFlag(EFlagLineFeedCharacter); - } - else - { - ClearFlag(EFlagLineFeedCharacter); - } - - if ( (ch == EKeySpace) && - (EditorHasFreeSpace() || IsFlagSet(EFlagLastCharacterInEditor))) - { - SetFlag(EFlagSpaceCharacter); - } - else - { - ClearFlag(EFlagSpaceCharacter); - } - - - if (iInputCapabilities.SupportsSecretText()) - { - if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction)) - { - SimulateKeyEventL(EKeyF20); // to delete previous char in secret text editor - } - //we receive an extra key press if we simulate a key that is also a device key - if (ch.IsDigit() || TUint(ch) == EStarKeyUnicodeValue || TUint(ch) == EHashKeyUnicodeValue) - { - SetFlag(EFlagPassNextKey); - } - if ( ch.IsDigit() && iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic ) - { - ClearFlag(EFlagPassNextKey); - SimulateKeyEventL(ch + (TChar)KLatinToArabicIndicDigitsDelta ); - } - else if ( ch.IsDigit() - && iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic ) - { - ClearFlag(EFlagPassNextKey); - if(iLanguageCapabilities.iInputLanguageCode == ELangUrdu - || iLanguageCapabilities.iInputLanguageCode == ELangFarsi) - { - SimulateKeyEventL(ch + (TChar)KLatinToEasternArabicIndicDigitsDelta ); - } - } - else if ( ch.IsDigit() && iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) - { - ClearFlag(EFlagPassNextKey); - SimulateKeyEventL(ch + (TChar)KLatinToDevanagariDigitsDelta); - } - else - { - SimulateKeyEventL(ch); - } - SetFlag(EFlagInsideMultitapInlineEditingTransaction | EFlagInsideInlineEditingTransaction); - } - else if (EditorHasFreeSpace() || IsFlagSet(EFlagInsideMultitapInlineEditingTransaction)) - { - TBuf<1> buf; - if ( ch.IsDigit() && iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic ) - { - buf.Append( ch + (TChar)KLatinToArabicIndicDigitsDelta ); - } - else if ( ch.IsDigit() - && iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic ) - { - if(iLanguageCapabilities.iInputLanguageCode == ELangUrdu - || iLanguageCapabilities.iInputLanguageCode == ELangFarsi) - { - buf.Append( ch + (TChar)KLatinToEasternArabicIndicDigitsDelta ); - } - } - else if ( ch.IsDigit() && iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) - { - buf.Append( ch + (TChar)KLatinToDevanagariDigitsDelta ); - } - else - { - buf.Append( ch ); - } - - if (iFepManState == EAknFepStateInitial) //multitapping - { - if (!IsFlagSet(EFlagInsideMultitapInlineEditingTransaction)) - { - TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - if (iAknEditorFlags & EAknEditorFlagMTAutoOverwrite && iMode == ELatin - && !WesternPredictive() - && iUncommittedText.iCursorPos < edSize - && iUncommittedText.Length() == 0) - { - // If the cursor is at the beginning or in the middle of the text, - // existing characters are replaced with new ones in latin multitap input. - iUncommittedText.iCursorPos++; - StartInlineEditL(iUncommittedText, buf, ESingleCharacter, EFalse); - SetFlag(EFlagInsideMultitapInlineEditingTransaction); - UpdateInlineEditL(buf, ESingleCharacter); - } - else - { - StartInlineEditL(buf); - SetFlag(EFlagInsideMultitapInlineEditingTransaction); - } - } - else - { - UpdateInlineEditL(buf, ESingleCharacter); - } - - if(!EditorHasFreeSpace()) - { - SetFlag(EFlagLastCharacterInEditor); - } - } - else - { - iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(buf, ESingleCharacter, - ETrue, NULL, *this, *this); - } - SetFlag(EFlagInsideInlineEditingTransaction); - } - } - -void CAknFepManager::NewTextL(const TDesC& aText) - { - ClearFlag(EFlagLineFeedCharacter); - TBool unlimit = EFalse; - TInt freeSpace = EditorFreeSpace(unlimit); - - if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) || - unlimit || freeSpace > 0 ) // - { - if( unlimit || freeSpace > aText.Length() ) - { - iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(aText, aText.Length(), ETrue, - NULL, *this, *this); - } - else - { - iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(aText.Left(freeSpace), freeSpace, ETrue, - NULL, *this, *this); - } - - SetFlag(EFlagInsideInlineEditingTransaction); - } - } - - -void CAknFepManager::NewCharacterSequenceL(const TDesC& aText, TIndicInputResponse aResponse) - { - TChar zws((ZERO_WIDTH_SPACE)); - TChar virama((TAknFepUiIndicInputManager::Virama(TLanguage( - iLanguageCapabilities.iInputLanguageCode)))); - TBool ret = ETrue; - TBuf buf; - buf.Zero(); - TBool isTextLayoutPresent = (AknFepDocumentNavigation() || TextLayout()) ? ETrue : EFalse; - switch( aResponse ) - { - case EIndicInputResponseNone: - { - NewCharacterL(aText); - } - break; - case EIndicInputResponseNumber: - { - NewCharacterL(aText); - CommitInlineEditL(); - } - break; - case EIndicInputResponseZWSandCharacter: - { - if (! iInputCapabilities.SupportsSecretText() && isTextLayoutPresent) - { - buf.Append(zws); - NewCharacterL(buf); - CommitInlineEditL(); - } - NewCharacterL(aText); - } - break; - case EIndicInputResponseInsertZWS: - { - buf.Append(virama); - if(isTextLayoutPresent) - buf.Append(zws); - ret = EFalse; - } - break; - case EIndicInputResponseInsertZWSandLigature: - { - buf.Append(virama); - if(isTextLayoutPresent) - buf.Append(zws); - if ( iInputCapabilities.SupportsSecretText() ) - { - buf.Append(aText); - } - ret = EFalse; - } - break; - - case EIndicInputResponseInsertRepha: - { - MCoeFepAwareTextEditor* fepAwareTextEditor = - iInputCapabilities.FepAwareTextEditor(); - - if( fepAwareTextEditor ) - { - TInt nextCharPos = 0; - TCursorSelection curSel; - - fepAwareTextEditor->GetCursorSelectionForFep( curSel ); - - // Insert Repha before the desired syllable. - TBool leftFlag = GetNextVisualLeftCharacter( nextCharPos ); - if( leftFlag ) - { - curSel.iCursorPos = nextCharPos; - curSel.iAnchorPos = nextCharPos; - - fepAwareTextEditor->SetCursorSelectionForFepL( curSel ); - - TAknFepUiIndicInputManager::GetRepha( buf, - TLanguage( iLanguageCapabilities.iInputLanguageCode ) ); - - ret = EFalse; - } - } - break; - } - - case EIndicInputResponseInsertRakar: - { - TAknFepUiIndicInputManager::GetRakar( buf, - TLanguage( iLanguageCapabilities.iInputLanguageCode ) ); - ret = EFalse; - } - break; -#ifdef RD_HINDI_PHONETIC_INPUT - case EIndicInputResponsePhoneticMultitapText: - { - buf.Append(aText); - ret = EFalse; - } - break; - case EIndicInputResponsePhoneticQwertyText: - { - buf.Append(aText); - ret = EFalse; - } - break; -#endif - - case EIndicInputResponseInsertDirectLigature: - { - // In key-0, the new line character preceeds the Ksha. - // First clear the new line flag. - ClearFlag( EFlagLineFeedCharacter ); - - buf.Append( aText ); - ret = EFalse; - } - break; - - case EIndicInputResponseInsertViramaZWSandDirectLigature: - { - // This case handles the insertion of Virama when star key - // is pressed. - - // In key-0, the new line character preceeds the Ksha. - // First clear the new line flag. - ClearFlag( EFlagLineFeedCharacter ); - - buf.Append(virama); - if(isTextLayoutPresent) - buf.Append(zws); - if ( iInputCapabilities.SupportsSecretText() ) - { - buf.Append(aText); - } - ret = EFalse; - } - break; - - case EIndicInputResponseZWSandDirectLigature: - { - if (! iInputCapabilities.SupportsSecretText() && isTextLayoutPresent) - { - buf.Append(zws); - NewCharacterL(buf); - CommitInlineEditL(); - } - buf.Zero(); - buf.Append( aText ); - ret = EFalse; - } - break; - -#ifdef RD_MARATHI - case EIndicInputResponseInsertEyeLashRa: - { - TAknFepUiIndicInputManager::GetEyeLashRa( buf, - (TLanguage)iLanguageCapabilities.iInputLanguageCode ); - ret = EFalse; - } - break; - - case EIndicInputResponseInsertChandraA: - { - TAknFepUiIndicInputManager::GetChandraA( buf ); - ret = EFalse; - } - break; -#endif // RD_MARATHI - - default: - break; - } - - if(ret) - return; - - if ( iInputCapabilities.SupportsSecretText() ) - { - if ( IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) ) - { - SimulateKeyEventL(EKeyF20); // to delete previous char in secret text editor - } - for( TInt counter=0; counterDocumentLengthForFep(); - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - if (iAknEditorFlags & EAknEditorFlagMTAutoOverwrite && iMode == ELatin - && !WesternPredictive() - && iUncommittedText.iCursorPos < edSize - && iUncommittedText.Length() == 0) - { - // If the cursor is at the beginning or in the middle of the text, - // existing characters are replaced with new ones in latin multitap input. - iUncommittedText.iCursorPos++; - StartInlineEditL(iUncommittedText, buf, ESingleCharacter, EFalse); - } - else - { - StartInlineEditL(); - } - SetFlag(EFlagInsideMultitapInlineEditingTransaction); - } - UpdateInlineEditL(buf, buf.Length()); - - if( !EditorHasFreeSpace() ) - { - SetFlag(EFlagLastCharacterInEditor); - } - } - SetFlag(EFlagInsideInlineEditingTransaction); - - // Check if text needs to be committed - if( ( TAknFepUiIndicInputManager::IsToCommitCharSeq( aResponse ) ) ) - { - CommitInlineEditL(); - } - if( aResponse == EIndicInputResponseInsertZWSandLigature ) - { - NewCharacterL(aText); - } - else if( aResponse == EIndicInputResponseInsertViramaZWSandDirectLigature ) - { - // Doing this here because we first commit the virama - // and ZWS and keep the ligature in the inline buffer. - NewLigatureL( aText ); - } - } - } - -void CAknFepManager::CommitInlineEditL() - { - if ( !IsFlagSet( CAknFepManager::EFlagInsideInlineEditingTransaction ) ) - { - return; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Before commit inline, check and close - // tooltip on FSQ first. - SendEventsToPluginManL( EPluginHideTooltip ); - - // Predictive QWERTY (XT9) changes ----> - // Exact word popup is hidden when the inline editor is closed - iExactWordPopupContent->HidePopUp(); - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - if (iInputCapabilities.FepAwareTextEditor()) - { - if (IsFlagSet(EFlagLineFeedCharacter)) - { - if (iInputCapabilities.SupportsSecretText()) - { - SimulateKeyEventL(EKeyF20); // backspace to delete previous char in secret text editor - SimulateKeyEventL(EKeyEnter); - SimulateKeyEventL(EKeyF19); // Asyncronous case update - } - else - { - __ASSERT_DEBUG(iInputCapabilities.FepAwareTextEditor(), - AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor)); - iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL(ETrue); - iInputCapabilities.FepAwareTextEditor()->CancelFepInlineEdit(); - - // Multitapping enter event is not posted for find pane. - // It would never accept it anyway but the event causes problems in gallery's find. - // Allow real enter from qwerty keyboard though. - if (!(iAknEditorFlags & EAknEditorFlagFindPane) || iQwertyInputMode) - { - SimulateKeyEventL(EKeyEnter); - SimulateKeyEventL(EKeyF19); // Asyncronous case update - } - } - } - else if (IsFlagSet(EFlagSpaceCharacter | EFlagFullWidthSpaceCharacter)) - { - TBuf charAsDesc(ESingleCharacter); - - if (IsFlagSet(EFlagSpaceCharacter)) - { - charAsDesc[0] = TText(0x0020); // 0x0020 is space - } - else - { - charAsDesc[0] = TText(0x3000); // 0x3000 is full-width space - } - - if (iInputCapabilities.SupportsSecretText()) - { - SimulateKeyEventL(EKeyF20); // backspace to delete previous char in secret text editor - SimulateKeyEventL(charAsDesc[0]); - SimulateKeyEventL(EKeyF19); // Asyncronous case update - } - else - { - iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(charAsDesc, 1); - iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL(ETrue); - CCoeEnv* coeEnv = CCoeEnv::Static(); - iInputCapabilities.FepAwareTextEditor()->CommitFepInlineEditL(*coeEnv); - iCaseMan->UpdateCase(ENullNaviEvent); - if (!EditorHasFreeSpace()) - { - SetFlag(EFlagEditorFull); - } - else - { - ClearFlag(EFlagEditorFull); - } - } - } - else if (IsFlagSet(EFlagInsideInlineEditingTransaction) - && !iInputCapabilities.SupportsSecretText()) - { - // Chinese languages seem not to support this - if ( !IsChineseInputLanguage() && - (iUncommittedText.Length() == 0 || - ( - #ifdef RD_INTELLIGENT_TEXT_INPUT - !IsAutoCompleteOn() && - #endif //RD_INTELLIGENT_TEXT_INPUT - !EditorSupportsNeutralProtection() - ) - ) - ) - - { // empty insertions need no resolution. - /*Hindi*/ - if( (TAknFepUiIndicInputManager :: IsIndicLangauge( - TLanguage(iLanguageCapabilities.iInputLanguageCode))) - #ifdef RD_HINDI_PHONETIC_INPUT - || ( TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage( - TLanguage(iLanguageCapabilities.iInputLanguageCode)) ) - #endif - ) - { - // NOTE! Need to get cursor visibility information from some where. - CommitInlineEditWithoutResolutionL( *(iInputCapabilities.FepAwareTextEditor()), - ETrue, EFalse); - } - else - { - // NOTE! Need to get cursor visibility information from some where. - CommitInlineEditWithoutResolutionL( *(iInputCapabilities.FepAwareTextEditor()), - ETrue); - } - } - else - { - - //note secret text editors do not use the MCoeFepAwareTextEditor interface, - //we only need to clear the flags to 'commit' a character - - __ASSERT_DEBUG(iInputCapabilities.FepAwareTextEditor(), - AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor)); - CCoeEnv* coeEnv = CCoeEnv::Static(); - - TBool showCursor = ETrue; - if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) || - IsCcpuFlagSet(ECcpuStateLosingFocus)) - { - showCursor = EFalse; - } - else - { - if(IsKoreanInputLanguage( ) && IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - showCursor = EFalse; - } - } - - iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL(showCursor); - ClearFlag(EFlagInsideInlineEditingTransaction); - iInputCapabilities.FepAwareTextEditor()->CommitFepInlineEditL(*coeEnv); - - // Arabic & Hebrew required functionality added ----> - if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction)) // Condition added for AknFep. - { - // 3 * as each original character can potentially take 2 markers - HBufC* decoratedTextBuf = HBufC::NewLC(KMaxInlineEditSize + 2); // +2 to accommodate previous and next charcaters - TPtr decoratedText = decoratedTextBuf->Des(); - // Resolve in a slightly wider range than the new text. Attempt to expand 1 character in each direction - TCursorSelection resolveSpan(iUncommittedText.HigherPos(), - iUncommittedText.LowerPos()); - TInt decCursor = 0; - - // Gets the CPlainText object from the focused editor if it exists. - CPlainText* plainText = PlainText(); - TBool containsTextField = EFalse; - if (resolveSpan.iAnchorPos > 0) - { - if (plainText) - { - // Check if surrounding document position contains text field. - containsTextField = plainText->FindFields(resolveSpan.iAnchorPos - 1); - } - TBuf chDes; - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep( chDes, - resolveSpan.iAnchorPos - 1, ESingleCharacter); - if ( chDes.Length() != 0 && chDes[0] != CEditableText::EPictureCharacter && !containsTextField) - { - // Resolve span is not extended if surrounding character is picture character or it - // contains text field. Text field data would be lost when FEP replaces existing editor - // content with new text buffer content that does not have text field data. - // ResolveDecoratedText() call does not handle these special cases which can has some - // effects to Arabic & Hebrew text rendering. - resolveSpan.iAnchorPos--; - } - } - if (resolveSpan.iCursorPos < - iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep()) - { - containsTextField = EFalse; - if (plainText) - { - // Check if surrounding document position contains text fields. - containsTextField = plainText->FindFields(resolveSpan.iCursorPos); - } - TBuf chDes; - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep( chDes, - resolveSpan.iCursorPos, ESingleCharacter); - if ( chDes.Length() != 0 && chDes[0] != CEditableText::EPictureCharacter && !containsTextField) - { - // Resolve span is not extended if surrounding character is picture character or it - // contains text field. Text field data would be lost when FEP replaces existing editor - // content with new text buffer content that does not have text field data. - // ResolveDecoratedText() call does not handle these special cases which can has some - // effect to Arabic & Hebrew text rendering. - resolveSpan.iCursorPos++; - decCursor++; - } - } - - // resolveSpan has been widened. Now go get the text for that span. - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(decoratedText, - resolveSpan.iAnchorPos, resolveSpan.Length()); - - if ( decoratedText.Length() != resolveSpan.Length() ) - { - // This assert checks is we have failed to retrieve enough text. Should not happen - // __ASSERT_DEBUG( decoratedText.Length() == resolveSpan.Length(), Panic(EEikPanicT9CharPosOutOfRange) ); - // Abondon the resolution. - - iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL( ETrue ); - } - else - { - TInt lowerOffset = iUncommittedText.LowerPos() - resolveSpan.LowerPos(); - - TBool needsResolving = iInlineTextDecorator->ResolveDecoratedText(decoratedText, - TCursorSelection(lowerOffset, lowerOffset + iUncommittedText.Length())); - - if ( needsResolving ) - { - TBool setToTrue=EFalse; - iInputCapabilities.FepAwareTextEditor()->Extension1()->StartFepInlineEditL( - setToTrue, - resolveSpan, - decoratedText, - decoratedText.Length() - decCursor, - EFalse, - 0, // MFormCustomDrawer* - *this, - *this); - - iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL( ETrue ); - if (IsFeatureSupportedJapanese()) - { - // need to call clear buffer of PtiEngine for Japanese varint - // before calling second CommitFepInlineEditL(). - // because the committed string is set as reading string twice - iPtiEngine->ClearCurrentWord(); - } - iInputCapabilities.FepAwareTextEditor()->CommitFepInlineEditL(*coeEnv); - } - else - { - // Go directly via CTextView because the normal way via the FepAwareEditor can only be called - // during an inline edit. - // Line cursor is made invisible here. There is no line cursor in S60 LAF, even though there is - // an Edwin flag which govern this. See CEikEdwin::SetCursorVisibilityL(TBool) - // Cursor is not set if this CommitInlineEditL call was prompted when losing focus. - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if ( (docNavi || TextView()) && !IsCcpuFlagSet(ECcpuStateLosingFocus) ) - { - if (docNavi) - { - docNavi->SetCursorVisibilityL( TCursor::EFCursorInvisible, - TCursor::EFCursorFlashing ); - } - else - { - TextView()->SetCursorVisibilityL( TCursor::EFCursorInvisible, - TCursor::EFCursorFlashing ); - } - } - } - } - // iMatchState=EWordMatchFirst; - - CleanupStack::PopAndDestroy(); // decoratedTextBuf - } - if (iInputCapabilities.FepAwareTextEditor()) - { - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - } - - iCaseMan->UpdateCase(ENullNaviEvent); - // <---- Arabic & Hebrew required functionality added - if (!EditorHasFreeSpace()) - { - SetFlag(EFlagEditorFull); - } - else - { - ClearFlag(EFlagEditorFull); - } - } - } - else if (IsFlagSet(EFlagInsideInlineEditingTransaction) - && iInputCapabilities.SupportsSecretText()) - { - CCoeEnv* coeEnv = CCoeEnv::Static(); - iInputCapabilities.FepAwareTextEditor()->CommitFepInlineEditL(*coeEnv); - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - - if (iQwertyInputMode) - { - // Case may need to updated automatically in case of qwerty secret text editor - // beause of the sticky shift feature. - if (iCaseMan->CurrentCase() == EAknEditorLowerCase) - { - SetCase(ELowerCase); - } - else - { - SetCase(EUpperCase); - } - UpdateIndicators(); - } - } - } - -// SendEventsToPluginManL( EPluginSyncFepAwareText, EPluginSyncUpdatedText ); - - ClearFlag(EFlagInsideMultitapInlineEditingTransaction | EFlagInsideInlineEditingTransaction | - EFlagLineFeedCharacter | EFlagLastCharacterInEditor | EFlagSpaceCharacter | - EFlagFullWidthSpaceCharacter); - - // No-edit_key devices: Inline editing ending, allow edit-menu again. - ClearCcpuFlag(ECcpuStateIgnoreStarUp | ECcpuStateNewPredictiveWord); -#ifdef RD_INTELLIGENT_TEXT_INPUT - iUncommittedText.iCursorPos=0; - iUncommittedText.iAnchorPos=0; -#endif - if (!iInputCapabilities.FepAwareTextEditor()) - { - // In case while updating the inline edit, 3rd party app removes the focus out of editor before the transaction - // completes, we return with an error. - User::Leave(KErrCorrupt); - } - - } - -void CAknFepManager::CommitInlineEditL(const TDesC& aText, TInt aUncommitedTextChange) - { - if (iMode == EHiraganaKanji) - { - // When there is not enough editing space to enter the selected candidate, - // the error tone is played. - if ((iFreeSpaceOfEditor > 0) && (iFreeSpaceOfEditor < aText.Length())) - { - PlaySound(EAvkonSIDErrorTone); - } - } - - //maxLength of 0 means the editor has no limit - TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep(); - if ( maxEdSize != 0 && iFreeSpaceOfEditor < aText.Length()) - { - TPtrC charbuf = aText.Left(iFreeSpaceOfEditor); - TInt uncommitedTextChange = charbuf.Length(); - UpdateInlineEditL(charbuf, uncommitedTextChange); - } - else - { - UpdateInlineEditL(aText, aUncommitedTextChange); - } - - ClearFlag(EFlagInsideMultitapInlineEditingTransaction); - CommitInlineEditL(); - } - -void CAknFepManager::CancelInlineEdit() - { - if( !EditorState()->CurrentInlineEditSpan().Length() ) - { - ClearFlag(EFlagInsideInlineEditingTransaction); - if(IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - ClearFlag(CAknFepManager::EFlagNoMatches); - } - } - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - TRAP_IGNORE(TryRemoveNoMatchesIndicatorL()); - - if (iInputCapabilities.SupportsSecretText()) - { - TRAP_IGNORE(SimulateKeyEventL(EKeyF20)); // backspace to delete previous char in secret text editor - } - else if (IsFeatureSupportedJapanese() - && iFepManState == EAknFepStateUIActive) - { - FepUI()->CloseUI(); - FepUI()->ExpireMultitapTimer(); - iPtiEngine->ClearCurrentWord(); - SyncStates(EAknFepStateInitial); - } - } - - iUncommittedText.iCursorPos=0; - - iUncommittedText.iAnchorPos=0; - - iInputCapabilities.FepAwareTextEditor()->CancelFepInlineEdit(); - ClearFlag(EFlagInsideMultitapInlineEditingTransaction | EFlagInsideInlineEditingTransaction - | EFlagLineFeedCharacter | EFlagSpaceCharacter | EFlagFullWidthSpaceCharacter); - ClearCcpuFlag(ECcpuStateNewPredictiveWord); - } - -void CAknFepManager::GetScreenCoordinatesL(TPoint& aLeftSideOfBaseLine, TInt& aHeight, - TInt& aAscent, TInt aDocumentOffset) - { - TCursorSelection cursorSelection; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSelection); - TInt documentPosition = cursorSelection.LowerPos() - aDocumentOffset; - if (documentPosition < 0) - documentPosition = 0; - iInputCapabilities.FepAwareTextEditor()->GetScreenCoordinatesForFepL(aLeftSideOfBaseLine, - aHeight, aAscent, documentPosition); - } - -void CAknFepManager::GetScreenCoordinatesL(TPoint& aLeftSideOfBaseLine, - TInt& aHeight, TInt& aAscent) - { - TCursorSelection cursorSelection; - MCoeFepAwareTextEditor* fepAwareTextEditor = iInputCapabilities.FepAwareTextEditor(); - - fepAwareTextEditor->GetCursorSelectionForFep(cursorSelection); - fepAwareTextEditor->GetScreenCoordinatesForFepL(aLeftSideOfBaseLine, aHeight, aAscent, - cursorSelection.LowerPos()); - } - -TBool CAknFepManager::EditorHasFreeSpace( TInt aRequiredNumberOfCharacter ) const - { - TBool unlimit = EFalse; - TInt freeSpace = 0; -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(WesternPredictive()) - { - freeSpace = EditorFreeSpaceForAutoWordCompletion(unlimit); - } - else - { -#endif //RD_INTELLIGENT_TEXT_INPUT - freeSpace = EditorFreeSpace(unlimit); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif //RD_INTELLIGENT_TEXT_INPUT - if( unlimit || freeSpace > aRequiredNumberOfCharacter ) - { - return ETrue; - } - return EFalse; - } - -TBool CAknFepManager::IsEditorHasFreeSpace() const - { - TBool unlimit = EFalse; - TInt freeSpace = 0; -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(WesternPredictive()) - { - freeSpace = EditorFreeSpaceForAutoWordCompletion(unlimit); - } - else - { -#endif //RD_INTELLIGENT_TEXT_INPUT - freeSpace = EditorFreeSpace(unlimit); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif //RD_INTELLIGENT_TEXT_INPUT - if( unlimit || freeSpace > 0 ) - { - return ETrue; - } - return EFalse; - } - -TInt CAknFepManager::EditorFreeSpace(TBool& aUnlimit, - TBool isToCountUncommittedTextLength /*= EFalse */) const - { - aUnlimit = EFalse; - - if (!iInputCapabilities.FepAwareTextEditor()) - { - //no handle to MCoeFepAwareTextEditor in non Edwin derived editors - return 0; - } - - //maxLength of 0 means the editor has no limit - TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep(); - TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - TCursorSelection currentSelection; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelection); - - aUnlimit = (maxEdSize == 0 || ((iAknEditorFlags & EAknEditorFlagMTAutoOverwrite) && - (currentSelection.iCursorPos >= 0 && - currentSelection.iCursorPos < maxEdSize) )); - if(aUnlimit) - { - return 0; - } - else - { - if( isToCountUncommittedTextLength ) - { - return ( maxEdSize - edSize + - currentSelection.Length() + UncommittedText().Length() ); - } - return (maxEdSize - edSize + currentSelection.Length()); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT -TInt CAknFepManager::EditorFreeSpaceForAutoWordCompletion(TBool& aUnlimit, - TBool /* isToCountUncommittedTextLength = EFalse*/ ) const - { - aUnlimit = EFalse; - - if (!iInputCapabilities.FepAwareTextEditor()) - { - //no handle to MCoeFepAwareTextEditor in non Edwin derived editors - return 0; - } - - //maxLength of 0 means the editor has no limit - TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep(); - TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - TInt keySequenceLength = iPtiEngine->CurrentInputSequence().Length(); - TCursorSelection currentSelectionOrUncommitted; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelectionOrUncommitted); - - aUnlimit = (maxEdSize == 0 || ((iAknEditorFlags & EAknEditorFlagMTAutoOverwrite) && - (currentSelectionOrUncommitted.iCursorPos >= 0 && - currentSelectionOrUncommitted.iCursorPos < maxEdSize) )); - if(aUnlimit) - { - return 0; - } - else - { - - if ( !iQwertyInputMode ) - { - return ( maxEdSize - edSize + currentSelectionOrUncommitted.Length() ); - } - else - { - // In the predictive QWERTY mode, the keySequenceLength doesn't necessarily have anything - // to do with the amount of characters on screen. At least entering accented characters with - // Chr-multitapping will increase the key sequence length although number of characters - // doesn't change (this is either bug or feature of ZiCore). Ask the auto-completion - // length directly from PtiEngine instead of trying to calculate it on our own. - TInt tailLength = 0; - TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength )); - if( tailLength < 0 ) - { - tailLength = 0; - } - return (maxEdSize - edSize + currentSelectionOrUncommitted.Length() + tailLength); - } - } - } -#endif -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - -TInt CAknFepManager::DocumentLength() const - { - TInt ret = 0; - if ( iInputCapabilities.FepAwareTextEditor() ) - { - ret = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - } - return ret; - } - -TBool CAknFepManager::KeyEventWillReplaceCharacter( const TKeyEvent& aKeyEvent ) - { - // The function is currently used only in QWERTY mode. It might not work correctly - // with ITU-T input. - TBool ret = EFalse; - if ( IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) ) - { - // Multitapping - ret = ETrue; - } - else if ( aKeyEvent.iRepeats && - LongPressNumberEntryOnQwerty() && - FnKeyState() == CAknFepFnKeyManager::EFnKeyNone && - KeyMapsDifferentCharacterWithFn( (TPtiKey)aKeyEvent.iScanCode ) ) - { - // QWERTY key long press producing another charcter - ret = ETrue; - } - return ret; - } -#endif -#endif -TChar CAknFepManager::CurrentDecimalSeparator() const - { - TLocale tLoc; - return tLoc.DecimalSeparator(); - } - -void CAknFepManager::ConfigureFEPFromEditorStateL() - { - User::LeaveIfError(SyncStates(EAknFepStateInitial)); - - CAknEdwinState* editorState = EditorState(); - TInt editorMode = editorState->CurrentInputMode(); - TInt sharedDataMode = iSharedDataInterface->InputMode(); - TBool latinCaseSet = EFalse; - iPermittedInputModes = editorState->PermittedInputModes(); - TInt defaultInputMode = editorState->DefaultInputMode(); - if(iAknEditorFlags != editorState->Flags()) - { - iAknEditorFlags = editorState->Flags(); - UpdateLocalDigitMode(); - } - iAknEditorNumericKeymap = editorState->NumericKeymap(); - - TLanguage localLanguage = ELangTest; - if (GetLocalLanguage( localLanguage ) ) - { - iLanguageCapabilities.iLocalInputLanguageInUse = ETrue; - if ( localLanguage != iLanguageCapabilities.iInputLanguageCode ) - { - ChangeInputLanguageL(localLanguage); - } - } - else if (iLanguageCapabilities.iLocalInputLanguageInUse) - { - ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage()); - iLanguageCapabilities.iLocalInputLanguageInUse = EFalse; - ClearFlag(EFlagNewSharedDataInputMode); - } - - if (IsFlagSet(EFlagNewSharedDataInputLanguage) ) - { - //Global mode or input language has been changed in general settings - if ( !iLanguageCapabilities.iLocalInputLanguageInUse) - { - ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage()); - } - ClearFlag(EFlagNewSharedDataInputLanguage); - } - - if (IsFeatureSupportedJapanese()) - { - // set Japanese predicitve ON/OFF - if (iAknEditorFlags & EAknEditorFlagNoT9) - { - iJapanesePredictive = EFalse; - } - else - { - // Is it supported Japanese predictive input - if (HasJapanesePredictionInputMode()) - { - iJapanesePredictive = iSharedDataInterface->PredictiveTextJapaneseOn(); - } - else - { - // if Predictive Japanese input isn't supported in PtiEngine, set to OFF. - iJapanesePredictive = EFalse; - iSharedDataInterface->ResetJapanesePredictiveTextOn(); - } - } - - // In Japanese variant, EAknEditorTextInputMode of allow input mode - // means all input mode. - if (iPermittedInputModes & EAknEditorTextInputMode) - { - iPermittedInputModes |= (EAknEditorKatakanaInputMode | - EAknEditorHalfWidthTextInputMode | - EAknEditorFullWidthTextInputMode | - EAknEditorFullWidthNumericInputMode | - EAknEditorFullWidthKatakanaInputMode | - EAknEditorHiraganaKanjiInputMode | - EAknEditorHiraganaInputMode); - } - - if (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) - { - if (iPermittedInputModes == EAknEditorNumericInputMode) - { - iPermittedInputModes = EAknEditorNumericInputMode; - } - else if (iPermittedInputModes & EAknEditorNumericInputMode) - { - iPermittedInputModes = (EAknEditorHalfWidthTextInputMode - | EAknEditorNumericInputMode); - } - else - { - iPermittedInputModes = EAknEditorHalfWidthTextInputMode; - } - } - - if (editorMode) - { - editorMode = ConfigureFepModeFromEditorMode(editorMode); - } - else // for new editors - { - iCharWidth = EHalfWidthChar; - sharedDataMode = EHiraganaKanji; - // First input mode is changed to Latin from Hiragana/Kanji - // if display language is English. - TInt dispLang = iSharedDataInterface->DisplayLanguage(); - // ELangTest means Automatic as display language in GS - if (dispLang == ELangTest) - { - // UiLanguage isn't Japanese, Latin is set. - if (iUiLanguage != ELangJapanese) - { - sharedDataMode = ELatin; - } - } - else if (dispLang != ELangJapanese) - { - // Display language isn't Japanese, Latin is set. - sharedDataMode = ELatin; - } - - if (!(iPermittedInputModes & EAknEditorHiraganaKanjiInputMode)) - { - if (IsOnlyFullWidthCharacterPermitted()) - { - iCharWidth = EFullWidthChar; - } - else if (IsOnlyHalfWidthCharacterPermitted()) - { - iCharWidth = EHalfWidthChar; - } - - if (iPermittedInputModes & (EAknEditorKatakanaInputMode | - EAknEditorFullWidthKatakanaInputMode)) - { - // In case setting Latin as above, Latin is used preferentially. - if (sharedDataMode == ELatin - && (iPermittedInputModes & - (EAknEditorHalfWidthTextInputMode | EAknEditorFullWidthTextInputMode))) - { - sharedDataMode = ELatin; - } - else - { - sharedDataMode = EKatakana; - } - } - else if (iPermittedInputModes & (EAknEditorHalfWidthTextInputMode | - EAknEditorFullWidthTextInputMode)) - { - sharedDataMode = ELatin; - } - else if (iPermittedInputModes & (EAknEditorNumericInputMode | - EAknEditorFullWidthNumericInputMode)) - { - sharedDataMode = ENumber; - } - // First input mode is changed to latin from katakana - // if display language is English. - if (!(dispLang == ELangTest || dispLang == ELangJapanese)) - { - if ((iPermittedInputModes & EAknEditorKatakanaInputMode) && - (iPermittedInputModes & EAknEditorHalfWidthTextInputMode)) - { - sharedDataMode = ELatin; - } - - if ((iPermittedInputModes & EAknEditorKatakanaInputMode) && - (iPermittedInputModes & EAknEditorFullWidthTextInputMode)) - { - sharedDataMode = ELatin; - } - } - } - } - } - else // for other variants (western or chinese) - { - if (!(iPermittedInputModes & (EAknEditorTextInputMode | EAknEditorNumericInputMode - | EAknEditorSecretAlphaInputMode))) - { - // Any latin input mode is not permitted by the editor. - // For compatibility permitted japanese input modes are checked and - // corresponding latin input modes are allowed. - if ( iPermittedInputModes & (EAknEditorKatakanaInputMode | - EAknEditorHalfWidthTextInputMode | - EAknEditorFullWidthTextInputMode | - EAknEditorFullWidthKatakanaInputMode | - EAknEditorHiraganaKanjiInputMode | - EAknEditorHiraganaInputMode)) - { - iPermittedInputModes |= EAknEditorTextInputMode; - } - if ( iPermittedInputModes & EAknEditorFullWidthNumericInputMode ) - { - iPermittedInputModes |= EAknEditorNumericInputMode; - } - - if ( !(defaultInputMode & (EAknEditorTextInputMode | EAknEditorNumericInputMode))) - { - if (defaultInputMode & (EAknEditorKatakanaInputMode | - EAknEditorHalfWidthTextInputMode| - EAknEditorFullWidthTextInputMode | - EAknEditorFullWidthKatakanaInputMode | - EAknEditorHiraganaKanjiInputMode | - EAknEditorHiraganaInputMode)) - { - defaultInputMode = EAknEditorTextInputMode; - } - else if (defaultInputMode & EAknEditorFullWidthNumericInputMode) - { - defaultInputMode = EAknEditorNumericInputMode; - } - } - } - } - - // object provider items - iEditMenuBar = NULL; - editorState->SetMenu(); - editorState->SetCba(); - -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - iOptionsMenuBar = NULL; -#endif - - SetWesternPredictive(iSharedDataInterface->PredictiveTextOn()); - //check that we don't have a Chinese find mode saved to an editor that is - //not a Chinese find pane - __ASSERT_DEBUG( !((editorMode == EZhuyinFind || editorMode == EStrokeFind) && - !(iAknEditorFlags & EAknEditorFlagForceTransparentFepModes)) - , AknFepPanic(EAknFepPanicFindModeSavedToNonFindEditor)); - - ReadHashKeyLoopL(); - - UpdateNumericEditorDigitType(); - if ( IsMfneEditor() ) - { - UpdateLocalDigitMode(); - } - - if (editorMode) //should be an editor that has been used before - { - if (IsFlagSet(EFlagNewSharedDataInputMode) && (IsModePermitted(sharedDataMode)) && !IsKoreanInputLanguage() - && (!(iAknEditorFlags & EAknEditorFlagForceTransparentFepModes))) - { - - { - //change to global mode, except in Find Pane, where we ignore - //GS setting - TryChangeModeL(sharedDataMode); - ClearFlag(EFlagNewSharedDataInputMode); - latinCaseSet = sharedDataMode & (ELatinUpper | ELatinLower); - if (sharedDataMode == ELatinText) - { - editorState->SetFlags( editorState->Flags() & ~EFlagSupressAutoUpdate ); - } - } - } - - // Next two cases are apps/UI intitialinsg their editors in the - // with the modes defined in uikon.hrh, change these to an appropriate - // FEP mode - else if (editorMode == EAknEditorNumericInputMode) - { - iCharWidth = EHalfWidthChar; - if ( (iMode == ENumber || iMode == ENativeNumber) && - IsModePermitted(iMode)) - { - TryChangeModeL( iMode ); - } - else if ( IsInputModeAvailable(ENativeNumber) && - ( iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari || - iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic ) ) - { - TryChangeModeL( ENativeNumber ); - } - else - { - TryChangeModeL( ENumber ); - } - } - else if (editorMode == EAknEditorSecretAlphaInputMode) - { - //this is safe default as it is currently allowed in all FEPs - SetWesternPredictive(EFalse); - TryChangeModeL(ELatin); - } - else if (editorMode == EAknEditorTextInputMode) - { - if (IsKoreanInputLanguage()) - { - if(iMode == EHangul || iMode == ENumber || iMode == EAknEditorNullInputMode ) - { - SetWesternPredictive(EFalse); - TryChangeModeL(EHangul); - } - else - { - TryChangeModeL(ELatin); - } - } - else - { - //this is safe default as it is currently allowed in all FEPs - TryChangeModeL(ELatin); - } - } - else if (!iStrokeUsedInQWERTY) - { - if (editorMode == EStroke && sharedDataMode == ECangJie) - { - TryChangeModeL(sharedDataMode); - } - else - { - TryChangeModeL(editorMode); - } - } - else //normal case, use locally stored mode - { - if (editorMode == ECangJie && sharedDataMode == ECangJie && iQwertyInputMode) - { - TryChangeModeL(EStroke); - } - else - { - TryChangeModeL(editorMode); - } - } - } - else if ((iAknEditorFlags & EAknEditorFlagForceTransparentFepModes) - && !IsFeatureSupportedJapanese()) //new find pane - { - // the default chinese find mode is the first mode in the hash key loop, except PrcChinese - if( iLanguageCapabilities.iInputLanguageCode == ELangPrcChinese) - { - // Fix bug EHST-6DBFUJ: Default searching language shall be ELatin - // Changed from EPinyin to ELatin here - TryChangeModeL(ELatin); - } - else - { - TryChangeModeL(iHashKeyLoop[0]); - } - } - else //new editor - { - if (defaultInputMode == EAknEditorNumericInputMode) - { - //numeric mode is not saved to/retreived from shared data - iCharWidth = EHalfWidthChar; - - if( IsInputModeAvailable(ENativeNumber) && - ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) ) - { - TryChangeModeL( ENativeNumber ); - } - else - { - TryChangeModeL( ENumber ); - } - } - else if ((defaultInputMode == EAknEditorTextInputMode) && - ((iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) || - (iAknEditorFlags & EAknEditorFlagNoT9))) - { - //Chinese Modes or Western Predictive mode not allowed. - //See if we are ok going to the current shared data mode, - //otherwise go for a safe default - if (TryChangeModeL(sharedDataMode)) - { - latinCaseSet = sharedDataMode & (ELatinUpper | ELatinLower); - } - else - { - TryChangeModeL(ELatin); - } - } - else if (defaultInputMode == EAknEditorHalfWidthTextInputMode) - { - iCharWidth = EHalfWidthChar; - TryChangeModeL(ELatin); - } - else if (defaultInputMode == EAknEditorHiraganaInputMode) - { - TryChangeModeL(EHiragana); - } - else if ( iLanguageCapabilities.iInputLanguageCode == ELangJapanese - && (defaultInputMode == EAknEditorKatakanaInputMode - || defaultInputMode == EAknEditorFullWidthKatakanaInputMode)) - { - iCharWidth = (defaultInputMode == EAknEditorKatakanaInputMode)? - EHalfWidthChar : EFullWidthChar; - TryChangeModeL(EKatakana); - } - else if (defaultInputMode == EAknEditorFullWidthTextInputMode) - { - iCharWidth = EFullWidthChar; - TryChangeModeL(ELatin); - } - else if (defaultInputMode == EAknEditorFullWidthNumericInputMode) - { - iCharWidth = EFullWidthChar; - if( IsInputModeAvailable(ENativeNumber) && - ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) ) - { - TryChangeModeL( ENativeNumber ); - } - else - { - TryChangeModeL( ENumber ); - } - } - else if (defaultInputMode == EAknEditorTextInputMode - && iLanguageCapabilities.iInputLanguageCode == ELangHindi ) - { - TryChangeModeL( EHindi ); - } - else // Default input mode is EAknEditorTextInputMode - { - // Check possibility move this section on else if - if (IsKoreanInputLanguage()) - { - TryChangeModeL(EHangul); - } - else if (TryChangeModeL(sharedDataMode)) - { - latinCaseSet = sharedDataMode & (ELatinUpper | ELatinLower); - } - else - { - TryChangeModeL(ELatin); - } - - } - } - - if (!iMode) - { - // If mode change wasn't successful, try latin mode as fallback. - TryChangeModeL(ELatin); - } - - // if also fallback fails, panic. - __ASSERT_DEBUG(iMode, AknFepPanic(EAknFepPanicNoPermittedEditorModesAvailable)); - - if (iCaseMan && !latinCaseSet) - { - iCaseMan->ConfigureCaseStateFromEditorState(); - if ( (editorState->Flags() & EFlagSupressAutoUpdate) || - editorMode == EAknEditorSecretAlphaInputMode ) - { - SetFlag(EFlagSupressAutoUpdate); - } - else - { - ClearFlag(EFlagSupressAutoUpdate); - } - } - if ((iAknEditorFlags & EAknEditorFlagForceTransparentFepModes) && - IsChineseInputLanguage() && iCaseMan != NULL ) - { - SetFlag(EFlagSupressAutoUpdate); - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - } - - UpdateEditorContext(); - - // Check if this editor was previously inline editing - if ( WesternPredictive() && editorState->CurrentInlineEditSpan().Length()) - { // restore the fep to an inline editing state - iUncommittedText = editorState->CurrentInlineEditSpan(); - TInt docLenFep=iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - if (iUncommittedText.iCursorPos>docLenFep) - iUncommittedText.iCursorPos=docLenFep; - if (iUncommittedText.iAnchorPos>docLenFep) - iUncommittedText.iAnchorPos=docLenFep; - - TBuf textToUncommit; - iInputCapabilities.FepAwareTextEditor()-> - GetEditorContentForFep(textToUncommit, iUncommittedText.iAnchorPos, - Min(iUncommittedText.Length(), EMaximumFepWordLength)); - - // Activates western predictive UI to an inline editing state. - FepUI()->ActivateUI(); - SyncStates(EAknFepStateUIActive); - TInt err = iPtiEngine->SetCurrentWord(textToUncommit); -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes (TEST) ----> - // The PtiXt9Core may choose to ignore the SetCurrentInputSequence() call. - // Make sure our text buffer is in sync with the one in PtiEngine. - if(KErrNone != err) - textToUncommit = iPtiEngine->CurrentWord(); - TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep(); - if((maxEdSize > 0) && (iUncommittedText.iAnchorPos + textToUncommit.Length() > maxEdSize)) - { - textToUncommit.SetLength(maxEdSize - iUncommittedText.iAnchorPos); - iUncommittedText.iCursorPos = maxEdSize; - } - // Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - StartInlineEditL(iUncommittedText, textToUncommit, textToUncommit.Length(), EFalse); - - // Make sure editor character case in sync - if( iUncommittedText.iAnchorPos == 0 ) - iCaseMan->UpdateCase(ENullNaviEvent); - - } - - if (editorState != iPreviousEditorState) - { - // we have changed editor, time to update local digits mode - UpdateLocalDigitMode(); - iPreviousEditorState = editorState; - } - - if(IsExtendedFlagSet(EExtendedFlagShiftReleasedOnPopup) && !(iAknEditorFlags & EAknEditorFlagFindPane) ) - { - // If in FEP context, shift is released on a non fep aware dialog - // like "text copied to clipboard", then release the shift - // when the editor comes in focus by simulating shift up event. - ClearExtendedFlag(EExtendedFlagShiftReleasedOnPopup); - TKeyEvent shiftUp = {0, EStdKeyLeftShift, 0, 0}; - CCoeEnv::Static()->SimulateKeyEventL(shiftUp, EEventKeyUp); - } - else if (IsFlagSet(EFlagLongShiftKeyPress) && !(iAknEditorFlags & EAknEditorFlagFindPane)) - { - // Find pane editor does not require any shift simulation - - // After the "text copied" note and if the shift key was not released - // then simulate shift down event. - TKeyEvent shiftDown = {0, EStdKeyLeftShift, 0, 0}; - CCoeEnv::Static()->SimulateKeyEventL(shiftDown, EEventKeyDown); - if((!iCandidatePopup) && (KeyboardLayout() != EPtiKeyboard12Key )) - ResetShiftKeyMonitorL(); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - TransferFepStateToEditorL(EFalse); // ensure editor has up to date state -#else - TransferFepStateToEditorL(); // ensure editor has up to date state -#endif - - iHashKeyMan->ResetIndicHashKeyStateL(); - ClearExtendedFlag(EExtendedFlagShortPressHashKey); - } - -TInt CAknFepManager::ConfigureFepModeFromEditorMode(TInt aEditorMode) - { - TInt fepMode(aEditorMode); - - switch (aEditorMode) - { - case EAknEditorNumericInputMode: - if( IsInputModeAvailable(ENativeNumber) && - ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) ) - { - fepMode = ENativeNumber; - } - else - { - fepMode = ENumber; - } - iCharWidth = EHalfWidthChar; - break; - case EAknEditorSecretAlphaInputMode: - case EAknEditorTextInputMode: - case EAknEditorHalfWidthTextInputMode: - fepMode = ELatin; - iCharWidth = EHalfWidthChar; - break; - case EAknEditorKatakanaInputMode: - fepMode = EKatakana; - iCharWidth = EHalfWidthChar; - break; - case EAknEditorFullWidthTextInputMode: - fepMode = ELatin; - iCharWidth = EFullWidthChar; - break; - case EAknEditorFullWidthKatakanaInputMode: - fepMode = EKatakana; - iCharWidth = EFullWidthChar; - break; - case EAknEditorFullWidthNumericInputMode: - if( IsInputModeAvailable(ENativeNumber) && - ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) ) - { - fepMode = ENativeNumber; - } - else - { - fepMode = ENumber; - } - iCharWidth = EFullWidthChar; - break; - case EAknEditorHiraganaKanjiInputMode: - fepMode = EHiraganaKanji; - break; - case EAknEditorHiraganaInputMode: - fepMode = EHiragana; - break; - default: - break; - } - return fepMode; - } - -void CAknFepManager::LaunchHelpTextQueryL() - { - TUid fepUid = CCoeEnv::Static()->FepUid(); - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - iUiInterface->LaunchHelpTextQueryL(R_AKNFEP_HELP_TEXT); - PrepareFepAfterDialogExitL(fepUid); - } - -void CAknFepManager::UpdateEditorContext() const - { - if(EditingStateIndicator()) - { - iUiInterface->UpdateEditorContext(*EditingStateIndicator(), *FepUI()); - } - } - -TBool CAknFepManager::TextIsValidInEditor(const TDesC& aText) - { - TBool ret = ETrue; - TUint length = aText.Length(); - TCoeInputCapabilities::MCoeFepSpecificExtensions* ipCapExt = - iInputCapabilities.FepSpecificExtensions(TUid::Uid(EAknFepUid)); - if (ipCapExt) - { - while(length--) - { - if (!ipCapExt->IsValidCharacter(aText[length])) - { - ret = EFalse; - } - } - } - return ret; - } - -TBool CAknFepManager::CharIsValidInEditor(TChar aChar) - { - TBool ret = ETrue; - TCoeInputCapabilities::MCoeFepSpecificExtensions* ipCapExt = - iInputCapabilities.FepSpecificExtensions(TUid::Uid(EAknFepUid)); - if (ipCapExt) - { - if (!ipCapExt->IsValidCharacter(aChar)) - { - ret = EFalse; - } - } - return ret; - } - -void CAknFepManager::SetCursorType(TChineseFepCursorType aType) - { - TBool setToTrue = ETrue; - TTextCursor newCursor; - - newCursor.iType=TTextCursor::ETypeRectangle; - if (aType == EPassive) - { - newCursor.iType=TTextCursor::ETypeHollowRectangle; - } - if ( IsFepAwareTextEditor() ) - { - iInputCapabilities.FepAwareTextEditor()->Extension1()->SetCursorType(setToTrue, newCursor); - } - } - -MAknEditingStateIndicator* CAknFepManager::EditingStateIndicator() const - { - MAknEditingStateIndicator* indicator = NULL; - - // First ask indicator from controls owning the editor. - // For example CAknQueryControl and CAknSearchField implement - // their own indicators. - - MObjectProvider* objectProvider = NULL; - - // First try through CAknEdwinState object. - // It exists with CEikEdwin-derived editors. - - MCoeFepAwareTextEditor* editor = NULL; - MCoeFepAwareTextEditor_Extension1* ext1 = NULL; - CAknEdwinState* state = NULL; - - editor = iInputCapabilities.FepAwareTextEditor(); - - if(editor) - ext1 = editor->Extension1() ; - if(ext1) - state = (CAknEdwinState*)ext1->State( KNullUid ) ; - - if ( IsFepAwareTextEditor() && ( editor ) && ( ext1) && ( state )) - { - objectProvider = state->ObjectProvider(); - } - - // If not found, try to get object provider from input capabilities. - // It is set there with CEikMfne-derived editors. - - if ( !objectProvider ) - { - objectProvider = iInputCapabilities.ObjectProvider(); - } - - if ( objectProvider ) - { - indicator = objectProvider->MopGetObject( indicator ); - } - - // If no indicator was supplied, get one from CAknEnv. - // By default, this one is FEP's own indicator. - - if ( !indicator ) - { - indicator = CAknEnv::Static()->EditingStateIndicator(); - if (indicator != iIndicator) - { - CAknEnv::Static()->SwapEditingStateIndicator(iIndicator); - indicator = iIndicator; - } - } - - return indicator; - } - -TBool CAknFepManager::TryHandleArrowRightEventL(TInt aDokumentLength) - { - TBool ret = EFalse; - TBool thai = (iLanguageCapabilities.iInputLanguageCode == ELangThai); - if ( iInputCapabilities.FepAwareTextEditor() && - (iSharedDataInterface->SpaceWithScrollRight() || thai ) && - (!(iAknEditorFlags & EAknEditorFlagNoLRNavigation)) && - iFepManState == EAknFepStateInitial && - (!IsFlagSet(EFlagInsideInlineEditingTransaction) ) && - (!IsFlagSet(EFlagShiftKeyDepressed)) && - iMode != EHiragana ) // Not supported in only Hiragana input mode - { - TInt cursorPos = DocPos().iPos; - TCursorSelection cursorSel; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSel); - if (( cursorPos == aDokumentLength) - && !cursorSel.Length() - && (IsFeatureSupportedJapanese() || (PreviousChar() != 0x0020)) ) - { - // set to half-width space or full-width space by current input mode. - // 0x0020 is unicode for half-width space - // 0x3000 is unicode for full-width space - TUint code(0); - switch (iMode) - { - case EHiraganaKanji: - code = 0x3000; - break; - case ELatin: - code = (!WesternPredictive() && iCharWidth == EFullWidthChar)? - 0x3000 : 0x0020; - break; - case EHiragana: - // Not supported in only Hiragana input mode - break; - case EHangul: - code = 0x0020; - break; - case ENumber: - case ENativeNumber: - case EKatakana: - default: - code = (iCharWidth == EFullWidthChar)? 0x3000 : 0x0020; - break; - } - if (code) - { - SimulateKeyEventL(code); // add a space - SimulateKeyEventL(EKeyF19); // Asyncronous case update - ret = ETrue; - } - } - } - return ret; - } - -TBool CAknFepManager::TryHandleArrowLeftEventL(TInt aDokumentLength) - { - TBool ret = EFalse; - if (iInputCapabilities.FepAwareTextEditor() && - iSharedDataInterface->SpaceWithScrollRight() && - (!(iAknEditorFlags & EAknEditorFlagNoLRNavigation)) && - iFepManState == EAknFepStateInitial && - (!IsFlagSet(EFlagInsideInlineEditingTransaction) ) && - (!IsFlagSet(EFlagShiftKeyDepressed)) && - iMode != EHiragana ) // Not supported in only Hiragana input mode - { - TInt cursorPos = DocPos().iPos; - TCursorSelection cursorSel; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSel); - TText previousChar = PreviousChar(); - if (( cursorPos == aDokumentLength) - && !cursorSel.Length() - && (IsFeatureSupportedJapanese() - && (previousChar == 0x3000 || previousChar == 0x0020) )) // full width or half-width space. - { - SimulateKeyEventL(EKeyBackspace); - SimulateKeyEventL(EKeyF19); // Asyncronous case update - ret = ETrue; - } - } - return ret; - } - -TBool CAknFepManager::TryHandleArrowDownEventL(TInt aDokumentLength) - { - TBool ret = EFalse; -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - if ( iWesternPredictive && - IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) && !(iAknEditorFlags & EAknEditorFlagNoT9) - && !IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) && !IsFlagSet(EFlagNoMatches)) - { - LaunchCandidatePopupListL(); - ret = ETrue; - } - // Predictive QWERTY (XT9) changes <---- - else -#endif //RD_INTELLIGENT_TEXT_INPUT - if ( ( iAknEditorFlags & EAknEditorFlagAllowEntersWithScrollDown ) && - iInputCapabilities.FepAwareTextEditor() && - ( iSharedDataInterface->EntersWithScrollDown() ) && - iFepManState == EAknFepStateInitial && - !IsFlagSet(EFlagInsideInlineEditingTransaction) && - !IsFlagSet(EFlagShiftKeyDepressed) ) - { - TInt cursorPos = DocPos().iPos; - TCursorSelection cursorSel; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSel); - if ( cursorPos == aDokumentLength && - !cursorSel.Length() ) - { - SimulateKeyEventL(EKeyEnter); // add line feed - SimulateKeyEventL(EKeyF19); // Asyncronous case update - ret = ETrue; - } - } - return ret; - } - -TUint CAknFepManager::EditorModeFromFepMode(TInt aFepMode) - { - TUint editorMode(aFepMode); - switch (aFepMode) - { - case ELatin: - if (iPermittedInputModes & EAknEditorTextInputMode) - { - editorMode = EAknEditorTextInputMode; - if (IsFeatureSupportedJapanese()) - { - if (iCharWidth == EHalfWidthChar - && (iPermittedInputModes & EAknEditorHalfWidthTextInputMode)) - { - editorMode = EAknEditorHalfWidthTextInputMode; - } - else if (iCharWidth == EFullWidthChar - && (iPermittedInputModes & EAknEditorFullWidthTextInputMode)) - { - editorMode = EAknEditorFullWidthTextInputMode; - } - } - } - else if (iPermittedInputModes & EAknEditorHalfWidthTextInputMode) - { - editorMode = EAknEditorTextInputMode; - if (IsFeatureSupportedJapanese()) - { - editorMode = EAknEditorHalfWidthTextInputMode; - if (iCharWidth == EFullWidthChar - &&(iPermittedInputModes & EAknEditorFullWidthTextInputMode)) - { - editorMode = EAknEditorFullWidthTextInputMode; - } - } - } - else if (iPermittedInputModes & EAknEditorFullWidthTextInputMode) - { - editorMode = EAknEditorTextInputMode; - if (IsFeatureSupportedJapanese()) - { - editorMode = EAknEditorFullWidthTextInputMode; - } - } - else - { - editorMode = EAknEditorSecretAlphaInputMode; - } - break; - case ENumber: - case ENativeNumber: - editorMode = EAknEditorNumericInputMode; - if (iCharWidth == EFullWidthChar - && (iPermittedInputModes & EAknEditorFullWidthNumericInputMode)) - { - editorMode = EAknEditorFullWidthNumericInputMode; - } - break; - case EHangul: - editorMode = EAknEditorTextInputMode; - break; - default: - if (IsFeatureSupportedJapanese()) - { - editorMode = EditorMode(aFepMode, iCharWidth); - } - break; - } - return editorMode; - } - -CAknKeySoundSystem* CAknFepManager::SoundSystem() const - { - CCoeEnv* coeEnv = CCoeEnv::Static(); - if (coeEnv->AppUi()) - { - return iAvkonAppUiBase->KeySounds(); - } - return NULL; - } - -void CAknFepManager::SetHashKeyStyle() - { - CAknFepHashKeyManager::THashKeyStyle style = CAknFepHashKeyManager::EHashKeyStyleWestern; - - switch (iLanguageCapabilities.iInputLanguageCode) - { - case ELangPrcChinese: - case ELangHongKongChinese: - case ELangTaiwanChinese: - style = CAknFepHashKeyManager::EHashKeyStyleChineseWithWestern; - break; - case ELangJapanese: - style = CAknFepHashKeyManager::EHashKeyStyleJapanese; - break; - case ELangKorean: - style = CAknFepHashKeyManager::EHashKeyStyleKoreanWithWestern; - break; - default: - break; - } - - iHashKeyMan->SetHashKeyStyle( style ); - } - -void CAknFepManager::ReadHashKeyLoopL() - { - iHashKeyLoop.Reset(); - - CCoeEnv* coeEnv = CCoeEnv::Static(); - TResourceReader reader; - coeEnv->CreateResourceReaderLC(reader, R_HASH_KEY_LOOP_ALL_INPUT_MODES); - - iVariantPermittedModes = 0; - const TInt count = reader.ReadInt16(); - for (TInt ii=0; ii(aObj)->WordConcatenationTimerTimeoutL()); - if (err) - { - static_cast(aObj)->CleanUpFep(); - return KErrNoMemory; - } - return KErrNone; - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT - -TBool CAknFepManager::IsHybridAplhaEditor() const - { - TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EHybridAlphaNumericEditor); - return phoneIdle; - } - -TBool CAknFepManager::IsHybridAlphaModeChangedtoAplhanumeric() const - { - return iHybridAplphaChangedToAlphanumeric; - } - -TBool CAknFepManager::IsPhoneNumberEditor() const - { - TBool phoneEditor = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor); - return phoneEditor; - } -CAknFepFnKeyManager::TFnKeyState CAknFepManager::FnKeyState() - { - return iFnKeyManager->FnKeyState(); - } -void CAknFepManager::SetFnKeyState(CAknFepFnKeyManager::TFnKeyState aState) - { - iFnKeyManager->SetFnKeyState(aState); - } -#ifdef __REVERSE_FN_KEY_SUPPORTED -TBool CAknFepManager::IsReverseFnkeyInput() - { - return iIsReverseFnkeyInput; - } -void CAknFepManager::SetReverseFnkeyInputMode(TBool iIsOn) - { - iIsReverseFnkeyInput = iIsOn; - } -TBool CAknFepManager::IsValidCharInNumericEditorL( TChar aChar ) const - { - if(!EditorState()) - { - return EFalse; - } - TBool validChar = EFalse; - if( aChar.IsDigit() ) - { - return ETrue; - } - TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor); - if( (phoneIdle || (IsHybridAplhaEditor() && !IsHybridAlphaModeChangedtoAplhanumeric())) - && aChar == '#') - { - return ETrue; - } - if( aChar == '.' && EAknEditorConverterNumberModeKeymap == iAknEditorNumericKeymap) - { - return ETrue; - } - if( IsAllowedKeymappingForNumberMode(aChar) ) - { - return ETrue; - } - - TInt resourceSCTId = EditorState()->SpecialCharacterTableResourceId(); - // No SCT table use default SCT - if( resourceSCTId == KErrNotFound || !resourceSCTId || - (IsHybridAplhaEditor()&& !IsHybridAlphaModeChangedtoAplhanumeric())) - { - resourceSCTId = NumericModeSCTResourceId(); - } - - if( resourceSCTId ) - { - TResourceReader reader; - CEikonEnv::Static()->CreateResourceReaderLC(reader,resourceSCTId); - reader.ReadInt32(); // skip sct id - TPtrC chars=reader.ReadTPtrC(); // read special char - validChar = ( chars.Locate(aChar)>=0 ); - CleanupStack::PopAndDestroy(); - } - return validChar; - - } -TInt CAknFepManager::GetNumericSCTResID() - { - if(!EditorState()) - { - return NumericModeSCTResourceId(); - } - TInt resourceSCTId = EditorState()->SpecialCharacterTableResourceId(); - if(resourceSCTId == KErrNotFound || !resourceSCTId ) - { - resourceSCTId = NumericModeSCTResourceId(); - } - return resourceSCTId; - } - -TBool CAknFepManager::IsValidCharForNumericInFnReverseL(TInt aKey, TPtiTextCase aCase) - { - if(!EditorState()) - { - return EFalse; - } - TBuf<32> keyMaps; - iPtiEngine->MappingDataForKey( (TPtiKey)aKey, keyMaps, aCase); - - TBool validKey(EFalse); - if( keyMaps.Length()<= 0 ) - { - return validKey; - } - TChar chr =keyMaps[0]; - if( chr.IsDigit() ) - { - return ETrue; - } - - TInt resourceSCTId = EditorState()->SpecialCharacterTableResourceId(); - // No SCT table use default SCT - if( resourceSCTId == KErrNotFound || !resourceSCTId ) - { - resourceSCTId = NumericModeSCTResourceId(); - } - - if( resourceSCTId ) - { - TResourceReader reader; - CEikonEnv::Static()->CreateResourceReaderLC(reader,resourceSCTId); - reader.ReadInt32(); // skip sct id - TPtrC chars=reader.ReadTPtrC(); // read special char - - validKey = (chars.Locate(chr)>=0 ); - if(chr.IsAlpha()) - { - chr.UpperCase(); - validKey |= (chars.Locate(chr)>=0 ) ; - } - - CleanupStack::PopAndDestroy(); - } - - return validKey; - - } -#endif //__REVERSE_FN_KEY_SUPPORTED -void CAknFepManager::AddOneSpaceOrMoveCursorL() - { - if(static_cast(NextChar()).IsSpace()) - { - TCursorSelection sel; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(sel); - sel.iCursorPos++; - sel.iAnchorPos++; - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel); - } - else if(IsEditorHasFreeSpace()) - { - SimulateKeyEventL(EKeySpace); - } - SimulateKeyEventL(EKeyF19); - } -#endif -TBool CAknFepManager::IsOnlyNumericPermitted() const - { - if (IsFeatureSupportedJapanese()) - { - return !(iPermittedInputModes & ~(EAknEditorNumericInputMode - | EAknEditorFullWidthNumericInputMode) ); - } - else - { - // Only non-japanese modes are considered. - return !( iPermittedInputModes & - (EAknEditorTextInputMode | EAknEditorSecretAlphaInputMode) ); - } - } - -void CAknFepManager::TryIncrementModeL(TInt aCurrentMode) - { - //check that we are currently in the correct mode - __ASSERT_DEBUG(IsModePermitted(iMode), - AknFepPanic(EAknFepPanicNonPermittedEditorMode)); - __ASSERT_DEBUG(iInputCapabilities.FepAwareTextEditor(), - AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor)); - - const TInt lastModePos = iHashKeyLoop.Count()-1 ; - const TInt currentModePos = iHashKeyLoop.Find(aCurrentMode); - TInt newModePos = currentModePos; - - __ASSERT_DEBUG(currentModePos != KErrNotFound , - AknFepPanic(EAknFepPanicNonPermittedEditorMode)); - - do { - if (newModePos == lastModePos) - { - //we've got to the end of the hash key loop, go back to the beginning - newModePos = 0; - } - else - { - newModePos++; - } - - if (TryChangeModeL(iHashKeyLoop[newModePos])) - { - return; //succeeded to move to next available mode - } - } - while (newModePos != currentModePos); - } - -void CAknFepManager::TryIncrementModeChineseQwertyL(TInt aCurrentMode) - { - __ASSERT_DEBUG(IsModePermitted(aCurrentMode),AknFepPanic(EAknFepPanicNonPermittedEditorMode)); - - const TInt lastModePos = iHashKeyLoop.Count() - 1 ; - const TInt currentModePos = iHashKeyLoop.Find(aCurrentMode); - TInt newModePos = currentModePos; - - __ASSERT_DEBUG(currentModePos != KErrNotFound , - AknFepPanic(EAknFepPanicNonPermittedEditorMode)); - - do - { - if (newModePos == lastModePos) - { - //we've got to the end of the hash key loop, go back to the beginning - newModePos = 0; - } - else - { - newModePos++; - } - }while(iHashKeyLoop[newModePos] == ENumber && !IsOnlyNumericPermitted()); // no number mode in Chinese qwerty input, except those editors which only support number - - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - if(TryChangeModeL(iHashKeyLoop[newModePos])) - { - return; //succeeded to move to next available mode - } - } - -void CAknFepManager::TryIncrementChineseModeForQwertyL( TInt aCurrentMode ) - { - __ASSERT_DEBUG(IsModePermitted(aCurrentMode),AknFepPanic(EAknFepPanicNonPermittedEditorMode)); - - const TInt lastModePos = iHashKeyLoop.Count() - 1; - const TInt currentModePos = iHashKeyLoop.Find( aCurrentMode ); - TInt newModePos = currentModePos; - - __ASSERT_DEBUG(currentModePos != KErrNotFound , - AknFepPanic(EAknFepPanicNonPermittedEditorMode)); - - do - { - if ( newModePos == lastModePos ) - { - //we've got to the end of the hash key loop, go back to the beginning - newModePos = 0; - } - else - { - newModePos++; - } - } - while ( (iHashKeyLoop[newModePos] == ENumber - && !IsOnlyNumericPermitted()) || (iHashKeyLoop[newModePos] == ELatin - && IsChangeModeByShiftAndSpace() ) ); // no number mode and latin in Chinese qwerty input, except those editors which only support number - - SendEventsToPluginManL( EPluginCloseMode, EFalse ); - if ( TryChangeModeL( iHashKeyLoop[newModePos] ) ) - { - return; //succeeded to move to next available mode - } - } - -void CAknFepManager::TryChangeToSharedDataModeL() - { - TInt sharedDataMode = iSharedDataInterface->InputMode(); - TryChangeModeL(sharedDataMode); - } - -void CAknFepManager::TryChangeToModeBeforeL() - { - if (TryChangeModeL(iModeBefore)) - { - if (iModeBefore==ELatin) - { - if ( iCaseBefore ) - { - iCaseMan->SetCurrentCase(iCaseBefore); - } - else - { - iCaseMan->UpdateCase(ENullNaviEvent); - } - } - } - } - -#ifdef RD_HINDI_PHONETIC_INPUT - -TBool CAknFepManager::IsIndicPhoneticInputLanguage() const - { - MPtiLanguage* ptilang = iPtiEngine->CurrentLanguage(); - TInt currentPtiLang = (ptilang)? ptilang->LanguageCode() : 0; - return (TAknFepUiIndicInputManager::IsIndicPhoneticLanguage(TLanguage(currentPtiLang))); - } - -void CAknFepManager::TryChangePhoneticModeL() - { - MPtiLanguage* ptilang = iPtiEngine->CurrentLanguage(); - TInt currentPtiLang = (ptilang)? ptilang->LanguageCode() : 0; - TInt lang = 0; - - (TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage(TLanguage(currentPtiLang)))? - lang = ELangEnglish : lang = iLanguageCapabilities.iInputLanguageCode; - - iPtiEngine->ActivateLanguageL(lang); - iLangMan->SetInputLanguageL(lang); - InternalFepUI()->SetMode(iMode, EFalse, iQwertyInputMode); - iCaseMan->UpdateCase(ENullNaviEvent); - UpdateIndicators(); - CommitInlineEditL(); - } - -TInt CAknFepManager::SetPhoneticIndicator(TLanguage aInputLanguage) - { - TInt newState = 0; - TInt currentCase = iCaseMan->CurrentCase(); - - switch(aInputLanguage) - { - case KLangHindiPhonetic: - if(currentCase == EAknEditorUpperCase) - { - newState = EIndicatorStateHindiPhoneticUpper; - } - else - { - newState = EIndicatorStateHindiPhoneticLower; - } - break; - default: - break; - } - return newState; - } -#endif -TBool CAknFepManager::TryChangeModeL(TInt aMode) - { - CAknEdwinState* editorState = EditorState(); - TInt sharedDataMode = iSharedDataInterface->InputMode(); - - if (aMode == EStroke && iQwertyInputMode && sharedDataMode == ECangJie) - { - iEditorStateStrokeUsed = editorState; - iStrokeUsedInQWERTY = ETrue; - } - else if (iEditorStateStrokeUsed == editorState) - { - iStrokeUsedInQWERTY = EFalse; - } - - if (aMode == ECangJie && !iQwertyInputMode && - (iFepPluginManager->PluginInputMode() != EPluginInputModeVkb - || iFepPluginManager->PluginInputMode() != EPluginInputModeFSQ)) - { - aMode = EStroke; - } - - if (aMode == ELatinText ||aMode == ELatinUpper || aMode == ELatinLower) - { - if (TryChangeModeL(ELatin)) - { - if ( !(iAknEditorFlags & EAknEditorFlagFixedCase) ) - { - if (aMode == ELatinText) - { - ClearFlag(EFlagSupressAutoUpdate); - } - else if (aMode == ELatinUpper) - { - //Modify for allow text case after entering a dot and space - ClearFlag(EFlagSupressAutoUpdate); - //Modify for allow text case after entering a dot and space - iCaseMan->SetCurrentCase(EAknEditorUpperCase); - } - else //lower - { - //Modify for allow text case after entering a dot and space - ClearFlag(EFlagSupressAutoUpdate); - //Modify for allow text case after entering a dot and space - iCaseMan->SetCurrentCase(EAknEditorLowerCase); - } - UpdateIndicators(); - } - return ETrue; - } - return EFalse; - } - - if ( iQwertyInputMode && ( aMode == ENumber || aMode == ENativeNumber ) && - !IsOnlyNumericPermitted() - // Add this condition to exclude all touch inputmethods. - // When change to number range on touch inputmethods, fn key state can't be locked. - && iFepPluginManager - && iFepPluginManager->PluginInputMode() == EPluginInputModeNone ) - { - if (TryChangeModeL(ELatin)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - // If editor should be launched in FnLock state, because in case of QWERTY keypad - // Current numeric mode converted to alphanumeric mode. - if( iFnKeyManager ) - { - iFnKeyManager->SetFnKeyState(CAknFepFnKeyManager::EFnKeyLock); - SetCase((TCase)EFnKeyLowerCase); - } -#endif // RD_INTELLIGENT_TEXT_INPUT - return ETrue; - } - } - - if (IsModePermitted(aMode)) - { - if (aMode == ELatin) - { - if (iAknEditorFlags & EAknEditorFlagNoT9) - { - SetWesternPredictive(EFalse); - } - - if (iAknEditorFlags & EAknEditorFlagFixedCase) - { - iCaseMan->ConfigureCaseStateFromEditorState(); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (!iQwertyInputMode && WesternPredictive() && iFepManState == EAknFepStateUIActive) -#else - if (WesternPredictive() && iFepManState == EAknFepStateUIActive) -#endif - { - TryRemoveNoMatchesIndicatorL(); - UpdateCbaL(NULL); - } - TryCloseUiL(); - - // getting a new ui manager object corresponded in aMode. - MAknFepManagerInterface* fepUI = iLangMan->GetFepUI(aMode, iCharWidth, - IsPredictive(aMode)); - // getting the currect language id from ptiengine. - MPtiLanguage* ptilang = iPtiEngine->CurrentLanguage(); - TInt currentPtiLang = (ptilang)? ptilang->LanguageCode() : 0; - // getting the supported language id in current ui manager. - TInt currentUiLang = fepUI->SupportLanguage(aMode); - - // changing language id both ptiengine and ui manager - // 1. check the currect ui manager for input mode - // 2. check the current ptiengine and ui manager - if (iCurrentFepUI != fepUI - || currentPtiLang != currentUiLang) - { - iCurrentFepUI = fepUI; - TInt err = iPtiEngine->ActivateLanguageL(currentUiLang); - if (err != KErrNone) - { -#ifdef _DEBUG - RDebug::Print(_L("ActivateLanguageL error return code=[%d] language id=[%d]"), - err, iLanguageCapabilities.iInputLanguageCode); -#endif - ChangeInputLanguageL(ELangEnglish); - return ETrue; - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef FF_DUAL_LANGUAGE_SUPPORT - // Change secondary input - iPtiEngine->SetSecondaryInputL(iSharedDataInterface->InputTextLanguageSecondary()); -#endif //FF_DUAL_LANGUAGE_SUPPORT -#endif - -//#ifndef RD_INTELLIGENT_TEXT_INPUT - TBuf<50> mapData; - //Init Data - for (TInt i = 0; i < 50; i++) - { - mapData.Append(0); - } - - //Backup original input mode - TPtiEngineInputMode oriMode = iPtiEngine->InputMode(); - - //Change current input mode, since MappingDataForKey I/F only worked - //when in EPtiEngineMultitapping mode - iPtiEngine->SetInputMode(EPtiEngineMultitapping); - iPtiEngine->MappingDataForKey(EPtiKey1, mapData, iPtiEngine->Case()); - - //Restore - iPtiEngine->SetInputMode(oriMode); - - //Get first three symbols - if(mapData.Length() > 0) - { - iSymbolData.iSymbol1 = mapData[0]; - - if (mapData.Length() > 1) - iSymbolData.iSymbol2 = mapData[1]; - if (mapData.Length() > 2) - iSymbolData.iSymbol3 = mapData[2]; - } - - //Write data to stream - if (iFepPluginManager && iFepPluginManager->CurrentPluginInputFepUI()) - { - iFepPluginManager->CurrentPluginInputFepUI()->HandleCommandL( - ECmdPenInputSymbolOfHardKeyOne, reinterpret_cast(&iSymbolData)); - } -//#endif - iMode = aMode; - -#ifdef RD_SCALABLE_UI_V2 - if ( IsChineseInputMode( aMode ) ) - { - iLastChineseInputMode = aMode; - } -#endif // RD_SCALABLE_UI_V2 - if(iMode == ENumber || iMode == ENativeNumber ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - ClearFlag(CAknFepManager::EFlagNewSharedDataInputLanguage); - ClearFlag(CAknFepManager::EFlagNewSharedDataInputMode); -#endif // RD_INTELLIGENT_TEXT_INPUT - InternalFepUI()->SetNumberModeKeyMappingL(iAknEditorNumericKeymap); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - InternalFepUI()->SetMode(iMode, IsPredictive(), iQwertyInputMode, KeyboardLayout()); -#else - InternalFepUI()->SetMode(iMode, IsPredictive(), iQwertyInputMode); -#endif - iHashKeyMan->SetMode(iMode, IsPredictive()); - // ensure editor is aware of new fep mode - if ( IsFepAwareTextEditor() ) - { - EditorState()->SetCurrentInputMode(EditorModeFromFepMode(aMode)); - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - AdjustCursorTypeForCurrentPosition(); - } - - // when cursor is in between two words and SCT is launched and - // cancel key is pressed, dont move the cursor at the end of - // second word. - if (WesternPredictive(aMode) && !iUncommittedText.Length() - && CursorInsideWord() && !IsCcpuFlagSet(ECcpuStateSupressCursorMoveToEnd) -#ifdef RD_INTELLIGENT_TEXT_INPUT - && (!iSupressCursorMoveToEndChrKeyPressed) -#endif //RD_INTELLIGENT_TEXT_INPUT - ) - { - MoveCursorToEndOfWordL(); - } - else - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - iSupressCursorMoveToEndChrKeyPressed = EFalse; -#endif //RD_INTELLIGENT_TEXT_INPUT - ClearCcpuFlag(ECcpuStateSupressCursorMoveToEnd); - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Ensure that autocompletion state is updated - if (WesternPredictive()) - { - SetAutoCompletionState(iSharedDataInterface->PredictiveTextAutoCompleteOn()); - } -#endif - // Set multitap timer to PtiEngine for Japanese variant only - if (IsFeatureSupportedJapanese()) - { - TInt timeout = (iInputCapabilities.SupportsSecretText())? - KSyncPasswdTimeout : iMultiTapTimer; - iPtiEngine->HandleCommandL(EPtiCommandSetMultitapTimer, &timeout); - iPtiEngine->HandleCommandL(EPtiCommandSetJapaneseQwertyFlags, &iJapaneseQwertyFlags); - TInt clear = iSharedDataInterface->ClearDirection(); - iPtiEngine->HandleCommandL(EPtiCommandSetClearFunction, &clear); - // Send PtiEngine the command whether Pictograph is allowed in Candidate list - TInt allow = IsAbleToLaunchPCT(); -#ifndef RD_INTELLIGENT_TEXT_INPUT - iPtiEngine->HandleCommandL(EPtiCommandAllowPictographCandidate, &allow); -#endif //RD_INTELLIGENT_TEXT_INPUT - } - - UpdateIndicators(); // moved to bottom to avoid extra indicator updates - - return ETrue; - } - return EFalse; - } - -void CAknFepManager::ChangeInputLanguageL(TInt aInputLanguage) - { - if(iLangMan) - { - iLangMan->SetInputLanguageL(aInputLanguage); - - SetInputLanguageCapabilities(aInputLanguage); - - ReadHashKeyLoopL(); - // we need to make sure that we commit the word to ptiengine, - // so that the word gets added to the UWD - SetCcpuFlag(ECcpuStataCommitPredictiveWord); - // Addition for ITI on FSQ - // When FSQ is opened with the ITI-supported input language, - // if switch to another language which doesn't support ITI, such as Korean, - // need to restore the previous configuration on FEP - if ( iFepPluginManager ) - { - iFepPluginManager->ResetItiStateL(); - } - if ( !TryChangeModeL(NewInputModeAfterLanguageChange()) ) - { - if ( !TryChangeModeL(ELatin) ) - { - // If the editor does not support text input mode, we try number mode. - if( IsInputModeAvailable(ENativeNumber) && - ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic || - iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) ) - { - TryChangeModeL(ENativeNumber);; - } - else - { - TryChangeModeL(ENumber); - } - } - } - - if (!iLanguageCapabilities.iLocalInputLanguageInUse) - { - switch (iSharedDataInterface->InputTextLanguage()) - { - case ELangPrcChinese: - { - iSharedDataInterface->SetInputMode(EPinyin); - SetFlag(EFlagNewSharedDataInputMode); - break; - } - case ELangTaiwanChinese: - { - iSharedDataInterface->SetInputMode(EZhuyin); - SetFlag(EFlagNewSharedDataInputMode); - break; - } - case ELangHongKongChinese: - { - iSharedDataInterface->SetInputMode(EStroke); - iSharedDataInterface->SetCangJieMode(ECangJieNormal); - SetFlag(EFlagNewSharedDataInputMode); - break; - } - default: - break; - } - } - - SetHashKeyStyle(); - UpdateEditorContext(); - } - //add notify to phrase creation udbmanagement view - - if(iUserdbdlg) - { - iUserdbdlg->OnChangeLanguageL( aInputLanguage ); - if ( aInputLanguage != ELangPrcChinese && - aInputLanguage != ELangTaiwanChinese && - aInputLanguage != ELangHongKongChinese ) - { - iUserdbdlg = NULL; - } - } - } - -void CAknFepManager::RemovePreviousCharacterL() - { - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - CommitInlineEditL(); - } - - // Set cursor span on previous character - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - if (iUncommittedText.iAnchorPos > 0) - { - iUncommittedText.iAnchorPos--; - } - - - // get text to replace - TBuf charToReplace; - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(charToReplace, - iUncommittedText.iAnchorPos, - ESingleCharacter); - - // delete the character with an inline edit - StartInlineEditL(iUncommittedText, charToReplace, ESingleCharacter, EFalse); - UpdateInlineEditL(KNullDesC, 0); - CommitInlineEditL(); - } - -void CAknFepManager::RemoveZWSCharacterL( TBool aIsViramaInputted, - TBool aIsInMultitappingHalant, - TBool aIsCharModifier, - TBool aIsLigaturePresent /*= EFalse*/) - { - CTextLayout* textLayout = TextLayout(); - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if(!textLayout && !docNavi) - return; - - if( aIsLigaturePresent ) - { - TTmDocPosSpec pos = DocPos(); - TTmPosInfo2 info; - TTmLineInfo lineInfo; - if (docNavi) - { - docNavi->FindDocPos(pos, info, lineInfo); - } - else - { - textLayout->TagmaTextLayout().FindDocPos(pos, info, lineInfo); - } - - if( IsZWSCharacterPresent( ETrue ) ) - { - TInt commitPoint = pos.iPos - 2; - if( IsFlagSet( EFlagInsideInlineEditingTransaction ) ) - { - CommitInlineEditL(); - } - - TCursorSelection sel( commitPoint, commitPoint ); - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel); - } - } - else - { - if ( IsFlagSet(EFlagInsideInlineEditingTransaction) && IsZWSCharacterPresent()) - { - CommitInlineEditL(); - } - } - - TTmDocPosSpec pos = DocPos(); - pos.iType = TTmDocPosSpec::ETrailing; - TTmPosInfo2 info; - TTmLineInfo lineInfo; - if ( ! iInputCapabilities.SupportsSecretText() ) - { - if (docNavi) - { - docNavi->FindDocPos(pos, info, lineInfo); - } - else - { - textLayout->TagmaTextLayout().FindDocPos(pos, info, lineInfo); - } - TBuf<2> previousCharacter; - TBuf<1> zwsPrevChar; - previousCharacter.FillZ(); - zwsPrevChar.FillZ(); - TBool found = EFalse; - - TCursorSelection curSel; - if ( IsFepAwareTextEditor() ) - { - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(curSel); - TInt lowerpos = curSel.LowerPos(); - if( lowerpos > 0) - { - if(lowerpos > 1) - iInputCapabilities.FepAwareTextEditor()-> - GetEditorContentForFep(previousCharacter, lowerpos - 2, 2); - else - iInputCapabilities.FepAwareTextEditor()-> - GetEditorContentForFep(previousCharacter, lowerpos - 1, 1); - - if( lowerpos > 1 ) - { - if(previousCharacter[1] == ZERO_WIDTH_SPACE) - { - zwsPrevChar.Append(previousCharacter[1]); - if( aIsInMultitappingHalant ) - { - curSel.iAnchorPos = lowerpos - 2; - } - else - { - curSel.iAnchorPos = lowerpos - 1; - } - found = ETrue; - } - else if( previousCharacter[0] == ZERO_WIDTH_SPACE ) - { - zwsPrevChar.Append(previousCharacter[0]); - curSel.iAnchorPos = lowerpos - 2; - curSel.iCursorPos = lowerpos - 1; - found = ETrue; - } - } - else - { - if(previousCharacter[0] == ZERO_WIDTH_SPACE) - { - zwsPrevChar.Append(previousCharacter[0]); - if( aIsInMultitappingHalant ) - { - curSel.iAnchorPos = lowerpos - 2; - } - else - { - curSel.iAnchorPos = lowerpos - 1; - } - found = ETrue; - } - } - - } - } - if( found ) - { - StartInlineEditL(curSel, zwsPrevChar, ESingleCharacter, ETrue); - UpdateInlineEditL(KNullDesC, 0); - CommitInlineEditL(); - if ( !aIsInMultitappingHalant && ! iInputCapabilities.SupportsSecretText() ) - { - if ( aIsViramaInputted ) - { - TTmDocPosSpec pos = DocPos(); - TTmPosInfo2 infotemp; - if (docNavi) - { - docNavi->FindDocPos(pos, info, lineInfo); - } - else - { - textLayout->TagmaTextLayout().FindDocPos(pos, info, lineInfo); - } - if(NextChar() && TAknFepUiIndicInputManager::IsCharBaseConsonant(NextChar(), - TLanguage(iLanguageCapabilities.iInputLanguageCode))) - { - TInt nextPos; - if (docNavi) - { - nextPos = docNavi->FindNextPos(pos.iPos); - } - else - { - nextPos = textLayout->TagmaTextLayout().FindNextPos(pos.iPos); - } - info.iDocPos.iPos = nextPos; - } - else if((TAknFepUiIndicInputManager::IsCharAnVowel(NextChar(), - TLanguage(iLanguageCapabilities.iInputLanguageCode))) - &&(aIsCharModifier && TAknFepUiIndicInputManager::IsCharVirama( - PreviousChar(), TLanguage(iLanguageCapabilities.iInputLanguageCode)))) - { - bool posFound; - if (docNavi) - { - posFound = docNavi->GetNextVisualCursorPos(pos, infotemp, EFalse); - } - else - { - posFound = textLayout->TagmaTextLayout().GetNextVisualCursorPos(pos, - infotemp, - EFalse); - } - - if (posFound) - { - info.iDocPos.iPos = infotemp.iDocPos.iPos; - } - } - TCursorSelection sel(info.iDocPos.iPos ,info.iDocPos.iPos ); - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel); - } - else - { - TCursorSelection sel(info.iDocPos.iPos - 1,info.iDocPos.iPos - 1); - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel); - } - - SendEventsToPluginManL( EPluginSyncFepAwareText ); - } - } - } - } - -void CAknFepManager::TryChangePredictiveInputModeL(TBool aFlag) - { - if(Japanese() && iMode != ELatin) - { - if(aFlag) - { - if (!(iAknEditorFlags & EAknEditorFlagNoT9) - && HasJapanesePredictionInputMode()) - { - iJapanesePredictive = aFlag; - iSharedDataInterface->SetJapanesePredictiveTextOn(); - } - } - else - { - iJapanesePredictive = aFlag; - iSharedDataInterface->ResetJapanesePredictiveTextOn(); - } - } - else - { - SetWesternPredictive(aFlag); - } - TryChangeModeL(iMode); - } - -MCoeFepAwareTextEditor* CAknFepManager::FepAwareTextEditor() const - { - return iInputCapabilities.FepAwareTextEditor(); - } - -TBool CAknFepManager::IsFepAwareTextEditor() const - { -#ifdef RD_SCALABLE_UI_V2 - return FullyFepAwareTextEditor(); -#else - return ( iInputCapabilities.FepAwareTextEditor() ? ETrue : EFalse ); -#endif - } - -TCursorSelection CAknFepManager::UncommittedText() const - { - return iUncommittedText; - } - -void CAknFepManager::SetCase(TCase aCase) - { - // For QWERTY only keypad, extended input state like FnLock is applicable. - // In case of ITU-T keypad, this flag should not be part of editor flag. - // In case of numeric only editor Only FnReverse state is valid and editor will be on EFnReverse - // State if FnKey is hold on state. - - //TODO: In case of other functionized input state like (FnNext), it should be stored in editor - -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(EditorState()) - { - if( iFnKeyManager && ( iFnKeyManager->FnKeyState()== CAknFepFnKeyManager::EFnKeyLock ) ) - { - EditorState()->SetFlags( EditorState()->Flags() | EAknEditorFlagFnLock ); - } - else - { - EditorState()->SetFlags( EditorState()->Flags() & ~EAknEditorFlagFnLock ); - } - } -#endif - - InternalFepUI()->SetCase(aCase); - } - -CAknEdwinState* CAknFepManager::EditorState() const - { - if ( IsFepAwareTextEditor() ) - { - MCoeFepAwareTextEditor* fepAvareTextEditor = iInputCapabilities.FepAwareTextEditor(); - - if ( fepAvareTextEditor && fepAvareTextEditor->Extension1() ) - { - return static_cast( fepAvareTextEditor->Extension1()->State( KNullUid ) ); - } - } - return NULL; - } - - void CAknFepManager::SetPredictiveIndicatorState(TAknEditingState& aState) - { - - TInt currentCase = iCaseMan->CurrentCase(); -#ifndef RD_INTELLIGENT_TEXT_INPUT - if(iIsAutoCompleteOn && iLanguageCapabilities.iInputLanguageCode != ELangThai) - { - if (iLanguageCapabilities.iInputLanguageCode == ELangArabic) - aState=EAutoCompleteArabic; - - else if (iLanguageCapabilities.iInputLanguageCode == ELangHebrew) - aState=EAutoCompleteHebrew; - - else if (iLanguageCapabilities.iInputLanguageCode == ELangFarsi || - iLanguageCapabilities.iInputLanguageCode == ELangUrdu) - aState=EAutoCompleteFarsiAndUrdu; - /*Hindi*/ - else if ( (iLanguageCapabilities.iInputLanguageCode == ELangHindi) || (iLanguageCapabilities.iInputLanguageCode == ELangMarathi)) - aState = EAutoCompleteHindi; - - else if(iLanguageCapabilities.iInputLanguageCode == ELangVietnamese) - { - switch (currentCase) - { - case EAknEditorUpperCase: - aState = EAutoCompleteUpperVietnamese; - break; - case EAknEditorLowerCase: - aState = EAutoCompleteLowerVietnamese; - break; - case EAknEditorTextCase: - aState = EAutoCompleteShiftedVietnamese; - break; - default: - break; - } - } - else - { - switch (currentCase) - { - case EAknEditorUpperCase: - aState = EAutoCompleteUpper; - break; - case EAknEditorLowerCase: - aState = EAutoCompleteLower; - break; - case EAknEditorTextCase: - aState = EAutoCompleteShifted; - break; - default: - break; - } - } - - } - else -#endif //RD_INTELLIGENT_TEXT_INPUT -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNone) - { - aState = EFnKeyPressed; - if(iFnKeyManager->FnKeyState() == CAknFepFnKeyManager::EFnKeyLock) - aState = EFnKeyLocked; - } - else -#endif - { - if (iLanguageCapabilities.iInputLanguageCode == ELangArabic) - aState = ET9Arabic; - - else if (iLanguageCapabilities.iInputLanguageCode == ELangHebrew) - aState = ET9Hebrew; - - else if (iLanguageCapabilities.iInputLanguageCode == ELangFarsi || - iLanguageCapabilities.iInputLanguageCode == ELangUrdu) - aState = ET9FarsiAndUrdu; - - else if (iLanguageCapabilities.iInputLanguageCode == ELangThai) - aState = ET9Thai; - - /*Hindi*/ -#ifdef RD_MARATHI - /*Marathi*/ - else if ( iLanguageCapabilities.iInputLanguageCode == ELangMarathi ) - aState = EIndicatorStatePredictiveMarathi; -#endif // RD_MARATHI - - else if(iLanguageCapabilities.iInputLanguageCode == ELangVietnamese) - { - switch (currentCase) - { - case EAknEditorUpperCase: - aState = ET9UpperVietnamese; - break; - case EAknEditorLowerCase: - aState = ET9LowerVietnamese; - break; - case EAknEditorTextCase: - aState = ET9ShiftedVietnamese; - break; - default: - break; - } - } - - else if(iLanguageCapabilities.iInputLanguageCode == ELangGreek) - { - switch (currentCase) - { - case EAknEditorUpperCase: - aState = ET9UpperGreek; - break; - case EAknEditorLowerCase: - aState = ET9LowerGreek; - break; - case EAknEditorTextCase: - aState = ET9ShiftedGreek; - break; - default: - break; - } - } - - //Cyrillic alphabet is used for Russian, Bulgarian and - //Ukranian languages - else if(iLanguageCapabilities.iInputLanguageCode == ELangRussian || - iLanguageCapabilities.iInputLanguageCode == ELangBulgarian || - iLanguageCapabilities.iInputLanguageCode == ELangUkrainian ) - { - switch (currentCase) - { - case EAknEditorUpperCase: - aState = ET9UpperCyrillic; - break; - case EAknEditorLowerCase: - aState = ET9LowerCyrillic; - break; - case EAknEditorTextCase: - aState = ET9ShiftedCyrillic; - break; - default: - break; - } - } - else - { - switch (currentCase) - { - case EAknEditorUpperCase: - aState = ET9Upper; - break; - case EAknEditorLowerCase: - aState = ET9Lower; - break; - case EAknEditorTextCase: - aState = ET9Shifted; - break; - default: - break; - } - } - - } - } -void CAknFepManager::UpdateIndicators() - { - if(ELongKeyPress == iKeyRepeat) - return; - // If it is fepware editor update the Indicators - // otherwise not need excute remainig part of code. - if( !iInputCapabilities.FepAwareTextEditor() || !iFepFullyConstructed ) - { - //Ensure, If no idicator is require, make indicator state None - if (!IsFlagSet(EFlagForegroundUIComponentVisible | EFlagMenuPaneVisible)) - iIndicator->SetState(EStateNone); - return; - } - - TAknEditingState newState = EStateNone; - MPtiLanguage* ptiLang = PtiEngine()->CurrentLanguage(); - MAknEditingStateIndicator* editingStateIndicator = EditingStateIndicator(); - - TBool findPaneIndicator( - iAknEditorFlags & EAknEditorFlagNoEditIndicators && - iAknEditorFlags & EAknEditorFlagForceTransparentFepModes && - editingStateIndicator != (MAknEditingStateIndicator*)iIndicator ); - -#ifdef RD_SCALABLE_UI_V2 - TBool fingerItutIndicator = ( iFepPluginManager && - iFepPluginManager->PluginInputMode() == EPluginInputModeItut ); -#else - TBool fingerItutIndicator = EFalse; - -#endif - if ( IsHybridAplhaEditor() && !iHybridAplphaChangedToAlphanumeric ) - { - newState = EHybridModeLatin; - } - else if (!(iAknEditorFlags & EAknEditorFlagNoEditIndicators) - || findPaneIndicator || fingerItutIndicator) - { - -#ifdef RD_SCALABLE_UI_V2 - if ( ( IsFlagSet(EFlagQwertyShiftMode) || IsFlagSet(EFlagLongShiftKeyPress)) && - ((iFepPluginManager && iFepPluginManager->PluginInputMode() == EPluginInputModeVkb) || - #ifndef RD_INTELLIGENT_TEXT_INPUT - iQwertyInputMode - #else - ( iQwertyInputMode && (IsFlagSet(EFlagQwertyShiftMode) ||IsFlagSet(EFlagLongShiftKeyPress)) - && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNext) - && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyLock) - && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyForced) - ) - #endif - )) -#else - if ( iQwertyInputMode && IsFlagSet(EFlagQwertyShiftMode)) - -#endif - { - newState = EQwertyShift; - -#ifdef RD_INTELLIGENT_TEXT_INPUT - // To keep the shift key indicator in - // Check if fn/shift both key are pressed - if((iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNone) && - (IsFlagSet(EFlagQwertyShiftMode) || IsFlagSet(EFlagLongShiftKeyPress))) - { - newState = EFnKeyPressed; - } -#endif - - } - else - { - switch (iMode) - { - case EHiraganaKanji: - if (IsPredictive()) - { - newState = EIndicatorStateJapanesePredictive; - } - else - { - newState = EIndicatorStateHiraganaKanji; - } - break; - case EKatakana: - if (iCharWidth == EHalfWidthChar) - { - newState = EIndicatorStateHalfKatakana; - } - else if (iCharWidth == EFullWidthChar) - { - newState = EIndicatorStateFullKatakana; - } - break; - case EHiragana: - { - newState = EIndicatorStateHiragana; - } - break; - case EPinyin: - if (ptiLang->HasInputMode(EPtiEnginePinyinByPhrase)) - { - newState = EIndicatorStatePinyinPhrase; - } - else - { - newState = EIndicatorStatePinyin; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( iFnKeyManager->FnKeyState() - == CAknFepFnKeyManager::EFnKeyLock ) - newState = EFnKeyLocked; - else if ( iFnKeyManager->FnKeyState() - != CAknFepFnKeyManager::EFnKeyNone ) - newState = EFnKeyPressed; -#endif - break; - case EZhuyin: - if (ptiLang->HasInputMode(EPtiEngineZhuyinByPhrase)) - { - newState = EIndicatorStateZhuyinPhrase; - } - else - { - newState = EIndicatorStateZhuyin; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( iFnKeyManager->FnKeyState() - == CAknFepFnKeyManager::EFnKeyLock ) - newState = EFnKeyLocked; - else if ( iFnKeyManager->FnKeyState() - != CAknFepFnKeyManager::EFnKeyNone ) - newState = EFnKeyPressed; -#endif - break; - case EStroke: - { - TBool flag = ptiLang->HasInputMode(EPtiEngineStrokeByPhrase); - if (iLanguageCapabilities.iInputLanguageCode == ELangPrcChinese) - { - if (flag) - { - newState = EIndicatorStateStrokePhrase; - } - else - { - newState = EIndicatorStateStroke; - } - } - else - { - if (flag) - { - newState = EIndicatorStateStrokeTradPhrase; - } - else - { - newState = EIndicatorStateStrokeTrad; - } - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( iFnKeyManager->FnKeyState() - == CAknFepFnKeyManager::EFnKeyLock ) - newState = EFnKeyLocked; - else if ( iFnKeyManager->FnKeyState() - != CAknFepFnKeyManager::EFnKeyNone ) - newState = EFnKeyPressed; -#endif - break; - case ECangJie: - newState = EIndicatorStateCangJie; -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( iFnKeyManager->FnKeyState() - == CAknFepFnKeyManager::EFnKeyLock ) - newState = EFnKeyLocked; - else if ( iFnKeyManager->FnKeyState() - != CAknFepFnKeyManager::EFnKeyNone ) - newState = EFnKeyPressed; -#endif - break; - case EZhuyinFind: - newState = EIndicatorStateZhuyinFind; - break; - case EStrokeFind: - newState = EIndicatorStateStrokeFind; - break; - case ENumber: - { - newState = ENumeric; - //iLanguageCapabilities.iLocalDigitType = EDigitTypeWestern; - } - break; - case ENativeNumber: - { - UpdateNumberIndicator( newState ); - } - break; - case EHangul: - { - newState = EIndicatorStateHangul; - } - break; - case ELatin: - { - UpdateLatinIndicator( newState ); - } - break; - case EHindi: - { - UpdateHindiIndicator( newState ); - } - break; - default: - break; - } - } - } - - if ( iFepPluginManager && iFepPluginManager->PluginInputMode() == EPluginInputModeVkb ) - { - newState = iFepPluginManager->VKBIndicatorState( newState ); - } - - // Update indicators only if the state has been changed, or if the indicator has swapped - if ((iPreviousEditingState != newState) || (editingStateIndicator != iEditIndicatorAtLastUpdate)) - { - if (editingStateIndicator) - { - // because current avkon have not find chinese phrase indicator, - // so change back to no-phrase - if (findPaneIndicator || iAknEditorFlags & EAknEditorFlagFindPane ) - { - switch(newState) - { - case EIndicatorStateStrokePhrase: - { - newState = EIndicatorStateStroke; - } - break; - case EIndicatorStateStrokeTradPhrase: - { - newState = EIndicatorStateStrokeTrad; - } - break; - case EIndicatorStatePinyinPhrase: - { - newState = EIndicatorStatePinyin; - } - break; - case EIndicatorStateZhuyinPhrase: - { - newState = EIndicatorStateZhuyin; - } - break; - default: - { - break; - } - } - } - // Add This condition for Fixing EYYE-7HHBWW: Phonebook, ReTe, PF52.50_2008_wk32: - // Navigation bar disappears after tapping find pane and then returning back to Names list view. - if (!(editingStateIndicator == (MAknEditingStateIndicator*)iIndicator && - ( iFepPluginManager && iFepPluginManager->PluginInputMode() == EPluginInputModeItut ) && - IsFindPaneEditor())) - { - editingStateIndicator->SetState(newState); - } - - // Ensure that no indicator is shown in navi pane when other - // indicator is changed in use. - if ( editingStateIndicator != (MAknEditingStateIndicator*)iIndicator && - iPreviousEditingState == EStateNone && - (!IsFlagSet(EFlagForegroundUIComponentVisible | EFlagMenuPaneVisible)) ) - - { - iIndicator->SetState( EStateNone ); - } - - iPreviousEditingState = newState; - iEditIndicatorAtLastUpdate=editingStateIndicator; - } - } - } - -void CAknFepManager::UpdateNumberIndicator( TAknEditingState& aNewState ) - { - - // chnage for AIYR-6L7DGU; This problrm persist in all variants. - // The fix is made only for Hindi - UpdateNumericEditorDigitType(); - TBool supportsWesternNumericIntegerOrReal = - ( iInputCapabilities.SupportsWesternNumericIntegerPositive() || - iInputCapabilities.SupportsWesternNumericIntegerNegative() || - iInputCapabilities.SupportsWesternNumericReal() ); - -#ifdef RD_SCALABLE_UI_V2 - iFepPluginManager->SetPluginNativeRange( ETrue ); -#endif // RD_SCALABLE_UI_V2 - // In usual case digit mode is Arabic-Indic digits if local digit mode is - // Arabic-Indic and current input language is Arabic. - if ( (!supportsWesternNumericIntegerOrReal && - iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic /* && - iLanguageCapabilities.iInputLanguageCode == ELangArabic*/ - ) - || - // But digit mode is Arabic-Indic digit in MFNE and real number - // editors if UI language is Arabic and global digit setting is - // Arabic-Indic digits. - ( !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) && - iLanguageCapabilities.iNumericEditorDigitType == EDigitTypeArabicIndic && // AknTextUtils::DigitModeQuery(AknTextUtils::EDigitModeShownToUser) && - supportsWesternNumericIntegerOrReal && - iUiLanguage == ELangArabic - ) - ) - { - aNewState=EArabicIndicNumeric; - - } - else if ( (!supportsWesternNumericIntegerOrReal && - iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic /* && - iLanguageCapabilities.iInputLanguageCode == ELangUrdu,Farasi*/ - ) - || - // But digit mode is Arabic-Indic digit in MFNE and real number - // editors if UI language is Arabic and global digit setting is - // Arabic-Indic digits. - ( !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) && - iLanguageCapabilities.iNumericEditorDigitType == EDigitTypeEasternArabicIndic && // AknTextUtils::DigitModeQuery(AknTextUtils::EDigitModeShownToUser) && - supportsWesternNumericIntegerOrReal && - (iUiLanguage == ELangUrdu || iUiLanguage == ELangFarsi))) - { - aNewState=EArabicIndicNumeric; - } - /* Devanagari Scripts */ - else if ( (!supportsWesternNumericIntegerOrReal && - iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari //&& - //iLanguageCapabilities.iInputLanguageCode == ELangHindi - ) - || - ( !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) && - iLanguageCapabilities.iNumericEditorDigitType == EDigitTypeDevanagari && // AknTextUtils::DigitModeQuery(AknTextUtils::EDigitModeShownToUser) && - supportsWesternNumericIntegerOrReal && - TAknFepUiIndicInputManager::IsScriptDevanagari( iUiLanguage ) - ) - ) - { - aNewState= EDevanagariIndicNumeric; - } - else - { - if ( iLanguageCapabilities.iInputLanguageCode == ELangArabic ) - { - //iLanguageCapabilities.iLocalDigitType = EDigitTypeArabicIndic; - aNewState=EArabicIndicNumeric; - } - else if ( iLanguageCapabilities.iInputLanguageCode == ELangFarsi - || iLanguageCapabilities.iInputLanguageCode == ELangUrdu ) - { - //iLanguageCapabilities.iLocalDigitType = EDigitTypeEasternArabicIndic; - aNewState=EArabicIndicNumeric; - } - else if ( iLanguageCapabilities.iInputLanguageCode == ELangHindi ) - { - //iLanguageCapabilities.iLocalDigitType = EDigitTypeDevanagari; - aNewState= EDevanagariIndicNumeric; - } - } - } - -void CAknFepManager::UpdateLatinIndicator( TAknEditingState& aNewState ) - { - if (IsPredictive()) - { - //AutoComplete - Begin - SetPredictiveIndicatorState( aNewState ); - //AutoComplete - End - - return; - } - - TInt currentCase = iCaseMan->CurrentCase(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iFnKeyManager->FnKeyState() == CAknFepFnKeyManager::EFnKeyLock) - aNewState = EFnKeyLocked; - else if(iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNone) - aNewState = EFnKeyPressed; - else -#endif //RD_INTELLIGENT_TEXT_INPUT - { -#ifdef RD_SCALABLE_UI_V2 - if( iFepPluginManager && - ( !iFepPluginManager->SyncWithPluginRange() || iFepPluginManager->PluginNativeRange() ) ) - { - iFepPluginManager->SetPluginNativeRange( ETrue ); -#endif // RD_SCALABLE_UI_V2 - switch ( iLanguageCapabilities.iInputLanguageCode ) - { - case ELangArabic: - { - aNewState=EMultitapArabic; - } - return; - case ELangHebrew: - { - aNewState=EMultitapHebrew; - } - return; - case ELangFarsi: - case ELangUrdu: - { - aNewState=EMultitapFarsiAndUrdu; - } - return; - case ELangThai: - { - aNewState = EMultitapThai; - } - return; - -#ifdef RD_MARATHI - case ELangMarathi: - { - aNewState = EIndicatorStateMultitapMarathi; - } - return; -#endif // RD_MARATHI - -#ifdef RD_HINDI_PHONETIC_INPUT - case KLangHindiPhonetic: - { - TInt currentPtiLang = (ptiLang)? ptiLang->LanguageCode() : 0; - - if(TAknFepUiIndicInputManager::IsIndicPhoneticLanguage(TLanguage(currentPtiLang))) - { - aNewState = TAknEditingState(SetPhoneticIndicator(TLanguage(currentPtiLang))); - } - else - { - switch ( currentCase ) - { - case EAknEditorUpperCase: - aNewState=EMultitapUpper; - if (iCharWidth == EFullWidthChar) - { - aNewState=EIndicatorStateFullLatinUpper; - } - break; - case EAknEditorLowerCase: - aNewState=EMultitapLower; - if (iCharWidth == EFullWidthChar) - { - aNewState=EIndicatorStateFullLatinLower; - } - break; - case EAknEditorTextCase: - aNewState=EMultitapShifted; - if (iCharWidth == EFullWidthChar) - { - aNewState=EIndicatorStateFullLatinText; - } - break; - default: - break; - } - } - - } - return; -#endif - case ELangVietnamese: - { - switch (currentCase) - { - case EAknEditorUpperCase: - aNewState = EMultitapUpperVietnamese; - break; - case EAknEditorLowerCase: - aNewState = EMultitapLowerVietnamese; - break; - case EAknEditorTextCase: - aNewState = EMultitapShiftedVietnamese; - break; - default: - break; - } - return; - } - - case ELangGreek: - { - switch (currentCase) - { - case EAknEditorUpperCase: - aNewState = EMultitapUpperGreek; - break; - case EAknEditorLowerCase: - aNewState = EMultitapLowerGreek; - break; - case EAknEditorTextCase: - aNewState = EMultitapShiftedGreek; - break; - default: - break; - } - return; - } - - //Cyrillic alphabet is used for Russian, Bulgarian and - //Ukranian languages. So fall through for all these languages - - case ELangRussian: - case ELangBulgarian: - case ELangUkrainian: - { - switch (currentCase) - { - case EAknEditorUpperCase: - aNewState = EMultitapUpperCyrillic; - break; - case EAknEditorLowerCase: - aNewState = EMultitapLowerCyrillic; - break; - case EAknEditorTextCase: - aNewState = EMultitapShiftedCyrillic; - break; - default: - break; - } - return; - } - } -#ifdef RD_SCALABLE_UI_V2 - } - // if plugin is not native range - - if(iFepPluginManager && iLanguageCapabilities.iInputLanguageCode != ELangRussian && - iLanguageCapabilities.iInputLanguageCode != ELangBulgarian && - iLanguageCapabilities.iInputLanguageCode != ELangUkrainian && - iLanguageCapabilities.iInputLanguageCode != ELangGreek ) - { - iFepPluginManager->SetPluginNativeRange( EFalse ); - } - -#endif // RD_SCALABLE_UI_V2 - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(FnKeyState() == CAknFepFnKeyManager::EFnKeyNone) -#endif //RD_INTELLIGENT_TEXT_INPUT - { - switch (currentCase) - { - case EAknEditorUpperCase: - aNewState=EMultitapUpper; - if (iCharWidth == EFullWidthChar) - { - aNewState=EIndicatorStateFullLatinUpper; - } - break; - case EAknEditorLowerCase: - aNewState=EMultitapLower; - if (iCharWidth == EFullWidthChar) - { - aNewState=EIndicatorStateFullLatinLower; - } - break; - case EAknEditorTextCase: - aNewState=EMultitapShifted; - if (iCharWidth == EFullWidthChar) - { - aNewState=EIndicatorStateFullLatinText; - } - break; - default: - break; - } - } - } -void CAknFepManager::UpdateHindiIndicator( TAknEditingState& aNewState ) - { - if ( IsPredictive() ) - { - if( iIsAutoCompleteOn ) - aNewState = EAutoCompleteHindi; - else - aNewState = EIndicatorStatePredictiveHindi; - } - else - { - aNewState = EIndicatorStateMultitapHindi; - } - } -TBool CAknFepManager::GetIndicatorImgID(TInt& aIndicatorImgID, TInt& aIndicatorTextID) - { - if (iPreviousEditingState == EStateNone) - { - UpdateIndicators(); - if (iPreviousEditingState == EStateNone) - { - return EFalse; - } - } - - TBool predictiveMode = QueryPredictiveState(iPreviousEditingState); - TBool predictiveAutoCompleteMode = EFalse; - if(!predictiveMode) - { - predictiveAutoCompleteMode = QueryPredictiveAutoCompleteState(iPreviousEditingState); - } - - if (predictiveMode) - { - aIndicatorImgID = EAknNaviPaneEditorIndicatorT9; - } - else if (predictiveAutoCompleteMode) - { - aIndicatorImgID = EAknNaviPaneEditorIndicatorAutoComplete; - } - else - { - aIndicatorImgID = EAknNaviPaneEditorIndicatorQuery; - } - - aIndicatorTextID = EvaluateState(iPreviousEditingState); - - return ETrue; - } - -TInt CAknFepManager::EvaluateState(const TAknEditingState aState) -{ - TInt result = 0; - switch(aState) - { - case EArabicIndicNumeric: - result = EAknNaviPaneEditorIndicatorArabicIndicNumberCase; - break; - - case ET9Thai: - case EMultitapThai: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteThai: -#endif - result = EAknNaviPaneEditorIndicatorThai; - break; - - case EIndicatorStatePredictiveHindi: - case EIndicatorStateMultitapHindi: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteHindi: -#endif -#ifdef RD_MARATHI - case EIndicatorStateMultitapMarathi: - case EIndicatorStatePredictiveMarathi: -#endif // RD_MARATHI - result = EAknNaviPaneEditorIndicatorDevanagariCase; - break; - - case ET9Arabic: - case EMultitapArabic: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteArabic: -#endif - result = EAknNaviPaneEditorIndicatorArabicCase; - break; - - case ET9Hebrew: - case EMultitapHebrew: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteHebrew: -#endif - result = EAknNaviPaneEditorIndicatorHebrewCase; - break; - - case ET9FarsiAndUrdu: - case EMultitapFarsiAndUrdu: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteFarsiAndUrdu: -#endif - result = EAknNaviPaneEditorIndicatorFarsiAndUrduCase; - break; - - - case ET9Upper: - case EMultitapUpper: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteUpper: -#endif - result = EAknNaviPaneEditorIndicatorUpperCase; - break; - - case ET9Lower: - case EMultitapLower: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteLower: -#endif - result = EAknNaviPaneEditorIndicatorLowerCase; - break; - - case ET9Shifted: - case EMultitapShifted: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteShifted: -#endif - result = EAknNaviPaneEditorIndicatorTextCase; - break; - - case ENumeric: - result = EAknNaviPaneEditorIndicatorNumberCase; - break; - - - case EIndicatorStatePinyin: - result = EAknNaviPaneEditorIndicatorPinyin; - break; - case EIndicatorStatePinyinPhrase: - result = EAknNaviPaneEditorIndicatorPinyinPhrase; - break; - - case EIndicatorStateZhuyin: - result = EAknNaviPaneEditorIndicatorZhuyin; - break; - case EIndicatorStateZhuyinPhrase: - result = EAknNaviPaneEditorIndicatorZhuyinPhrase; - break; - - case EIndicatorStateZhuyinFind: - result = EAknNaviPaneEditorIndicatorZhuyinFind; - break; - - case EDevanagariIndicNumeric : - result = EAknNaviPaneEditorIndicatorDevanagariIndicNumberCase; - break; - - case EIndicatorStateHiraganaKanji: - case EIndicatorStateJapanesePredictive: - result = EAknNaviPaneEditorIndicatorJapaneseHiraganaKanji; - break; - - case EIndicatorStateFullKatakana: - result = EAknNaviPaneEditorIndicatorJapaneseFullKatakana; - break; - - case EIndicatorStateHalfKatakana: - result = EAknNaviPaneEditorIndicatorJapaneseHalfKatakana; - break; - - case EIndicatorStateFullLatinText: - result = EAknNaviPaneEditorIndicatorJapaneseFullTextAlphabet; - break; - - case EIndicatorStateFullLatinUpper: - result = EAknNaviPaneEditorIndicatorJapaneseFullUpperAlphabet; - break; - - case EIndicatorStateFullLatinLower: - result = EAknNaviPaneEditorIndicatorJapaneseFullLowerAlphabet; - break; - - case EIndicatorStateFullNumeric: - result = EAknNaviPaneEditorIndicatorJapaneseFullNumeric; - break; - - case EIndicatorStateHiragana: - result = EAknNaviPaneEditorIndicatorJapaneseHiragana; - break; - - case EIndicatorStateStroke: - result = EAknNaviPaneEditorIndicatorStroke; - break; - case EIndicatorStateStrokePhrase: - result = EAknNaviPaneEditorIndicatorStrokePhrase; - break; - - case EIndicatorStateStrokeTrad: - result = EAknNaviPaneEditorIndicatorStrokeTrad; - break; - case EIndicatorStateStrokeTradPhrase: - result = EAknNaviPaneEditorIndicatorStrokeTradPhrase; - break; - - case EQwertyShift: - result = EAknNaviPaneEditorIndicatorQwertyShift; - break; - - case EIndicatorStateStrokeFind: - result = EAknNaviPaneEditorIndicatorStrokeFind; - break; - - case EIndicatorStateCangJie: - result = EAknNaviPaneEditorIndicatorCangJie; - break; - - case ET9UpperVietnamese: - case EMultitapUpperVietnamese: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteUpperVietnamese: -#endif - result = EAknNaviPaneEditorIndicatorVietnameseUpperCase; - break; - - case ET9LowerVietnamese: - case EMultitapLowerVietnamese: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteLowerVietnamese: -#endif - result = EAknNaviPaneEditorIndicatorVietnameseLowerCase; - break; - - case ET9ShiftedVietnamese: - case EMultitapShiftedVietnamese: -#ifndef RD_INTELLIGENT_TEXT_INPUT - case EAutoCompleteShiftedVietnamese: -#endif - result = EAknNaviPaneEditorIndicatorVietnameseTextCase; - break; -#ifdef RD_HINDI_PHONETIC_INPUT - case EIndicatorStateHindiPhoneticUpper: - result = EAknNaviPaneEditorIndicatorDevanagariPhoneticUpperCase; - break; - case EIndicatorStateHindiPhoneticLower: - result = EAknNaviPaneEditorIndicatorDevanagariPhoneticLowerCase; - break; -#endif - case ET9UpperGreek: - case EMultitapUpperGreek: - result = EAknNaviPaneEditorIndicatorGreekUpperCase; - break; - - case ET9LowerGreek: - case EMultitapLowerGreek: - result = EAknNaviPaneEditorIndicatorGreekLowerCase; - break; - - case ET9ShiftedGreek: - case EMultitapShiftedGreek: - result = EAknNaviPaneEditorIndicatorGreekTextCase; - break; - - case ET9UpperCyrillic: - case EMultitapUpperCyrillic: - result = EAknNaviPaneEditorIndicatorCyrillicUpperCase; - break; - - case ET9LowerCyrillic: - case EMultitapLowerCyrillic: - result = EAknNaviPaneEditorIndicatorCyrillicLowerCase; - break; - - case ET9ShiftedCyrillic: - case EMultitapShiftedCyrillic: - result = EAknNaviPaneEditorIndicatorCyrillicTextCase; - break; - - case EHybridModeLatin: - result = EAknNaviPaneEditorIndicatorHybridLatin; - break; - case EIndicatorStateHangul: - result = EAknNaviPaneEditorIndicatorKoreanHangul; - break; - - } - return result; - -} - -TBool CAknFepManager::IsAbleToLaunchSCT() const - { - TBool ableToLaunchSCT = ETrue; - - if (ExtendedInputCapabilities() & CAknExtendedInputCapabilities::EDisableSCT && - PluginInputMode() == EPluginInputModeNone ) - { - // The editor doesn't allow SCT. - return EFalse; - } - - if (iMode == ENumber || iMode == ENativeNumber) - { - if (iPermittedInputModes == EAknEditorNumericInputMode || !NumericModeSCTResourceId()) - { - // SCT is not launched if the number mode is the only input mode or - // if there is not keymap resource for the current numeric keymap mode. - ableToLaunchSCT = EFalse; - } - if (iAknEditorFlags & EAknEditorFlagUseSCTNumericCharmap || - ( (iAknEditorNumericKeymap == EAknEditorAlphanumericNumberModeKeymap) && - (iPermittedInputModes != EAknEditorNumericInputMode) )) - { - // SCT is launched in the number mode if requested by editor flag - // EAknEditorFlagUseSCTNumericCharmap or if also text input modes are - // allowed and the keymap is EAknEditorAlphanumericNumberModeKeymap. - ableToLaunchSCT = ETrue; - } - } - if (!(EditorHasFreeSpace() && EditorState() - && EditorState()->SpecialCharacterTableResourceId())) - { - ableToLaunchSCT = EFalse; - } - - return ableToLaunchSCT; - } - -TBool CAknFepManager::QueryPredictiveState(const TAknEditingState aState) - { - return (( aState == EIndicatorStatePinyin) || - ( aState == EIndicatorStatePinyinPhrase) || - ( aState == EIndicatorStateZhuyin) || - ( aState == EIndicatorStateZhuyinPhrase) || - ( aState == EIndicatorStateZhuyinFind) || - ( aState == EIndicatorStateStrokeFind) || - ( aState == EIndicatorStateStroke) || - ( aState == EIndicatorStateStrokePhrase) || - ( aState == EIndicatorStateCangJie) || - ( aState == EIndicatorStateStrokeTrad) || - ( aState == EIndicatorStateStrokeTradPhrase) || - ( aState == ET9Upper) || - ( aState == ET9Shifted) || - ( aState == ET9Lower) || - ( aState == ET9Arabic) || - ( aState == ET9Hebrew) || - ( aState == ET9FarsiAndUrdu) || - ( aState == ET9Thai) || - ( aState == EIndicatorStatePredictiveHindi) || -#ifdef RD_MARATHI - ( aState == EIndicatorStatePredictiveMarathi) || -#endif // RD_MARATHI - ( aState == EIndicatorStateJapanesePredictive) || - ( aState == ET9UpperVietnamese) || - ( aState == ET9LowerVietnamese) || - ( aState == ET9ShiftedVietnamese) || - ( aState == ET9UpperGreek) || - ( aState == ET9LowerGreek) || - ( aState == ET9ShiftedGreek) || - ( aState == ET9UpperCyrillic) || - ( aState == ET9LowerCyrillic) || - ( aState == ET9ShiftedCyrillic) ); - } - - TBool CAknFepManager::QueryPredictiveAutoCompleteState(TAknEditingState aState) - { - - return (( aState == EAutoCompleteUpper ) || - ( aState == EAutoCompleteShifted ) || - ( aState == EAutoCompleteLower ) || - ( aState == EAutoCompleteHindi ) || - ( aState == EAutoCompleteArabic ) || - ( aState == EAutoCompleteHebrew ) || - ( aState == EAutoCompleteFarsiAndUrdu ) || - ( aState == EAutoCompleteThai ) || - ( aState == EAutoCompleteUpperVietnamese ) || - ( aState == EAutoCompleteLowerVietnamese ) || - ( aState == EAutoCompleteShiftedVietnamese )); - } - -void CAknFepManager::LaunchSpecialCharacterTableL(TInt aResourceId, TBool aLaunchedByTouchWin, TBool aSmileyFirst) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Set the iSupressCursorMoveToEndChrKeyPressed when cursor is in - // between two words and SCT is launched - iSupressCursorMoveToEndChrKeyPressed = ETrue; -#endif //RD_INTELLIGENT_TEXT_INPUT -#ifdef RD_SCALABLE_UI_V2 - if ( iStarKeyPressed && iFepPluginManager && - iFepPluginManager->PluginInputMode() == EPluginInputModeItut ) - { - aLaunchedByTouchWin = ETrue; - } - iCancelPopupInQwerty = aLaunchedByTouchWin; -#endif //RD_SCALABLE_UI_V2 - DoLaunchSctAndPctL(aResourceId, aSmileyFirst ? EShowSmileyFirst : EShowSctFirst ); -#ifdef RD_SCALABLE_UI_V2 - iCancelPopupInQwerty = EFalse; -#endif //RD_SCALABLE_UI_V2 -#ifdef RD_INTELLIGENT_TEXT_INPUT - iSupressCursorMoveToEndChrKeyPressed = ETrue; -#endif //RD_INTELLIGENT_TEXT_INPUT - } - -TBool CAknFepManager::IsAbleToLaunchPCT() const - { - TBool isAbleToLaunch = EFalse; - if (FeatureManager::FeatureSupported(KFeatureIdJapanesePicto) - && (iAknEditorFlags & EAknEditorFlagEnablePictographInput)) - { - isAbleToLaunch = ETrue; - } - return isAbleToLaunch; - } - -TBool CAknFepManager::IsAbleToLaunchSmiley() const - { - TBool ableToLaunchSmiley(EFalse); - - CAknEdwinState* edwinState = EditorState(); - if(edwinState) - { - CAknEdwinFormAccessor* formAccessor = edwinState->FormAccessor(); - if(formAccessor) - { - CEikEdwin *edwin = static_cast(formAccessor->FormClientControl()); - if(edwin) - { - ableToLaunchSmiley = ((edwin->UserFlags()&CEikEdwin::EAvkonEnableSmileySupport) != 0); - } - } - } - - return ableToLaunchSmiley; - } - -TInt CAknFepManager::GetCurrentEditorSCTResId() const - { - if(!EditorState()) - { - return NumericModeSCTResourceId(); - } - TInt currentEditorSCTResId = EditorState()->SpecialCharacterTableResourceId(); - if ( FeatureManager::FeatureSupported(KFeatureIdChinese) ) - { - if (currentEditorSCTResId == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG) - { - if (iMode == EZhuyin) - { - currentEditorSCTResId = - R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_FOR_ZHUYIN_SYMBOL_INPUT; - } - else - { - currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE; - } - } - } - if (currentEditorSCTResId == EDefaultSCTResourceId) // -1 forces the default in SCT resource definition - { - if (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) - { - currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_LATIN_ONLY; - } - else - { - // only ITU-T and when Bopomofo symbol input mode is supported, we use new sct table - TInt supportSCTToneMarks = EFalse; - MPtiCoreInfo* ptiCoreInfo = iPtiEngine->CoreInfo(EPtiEngineZhuyin); - - if(ptiCoreInfo) - { - supportSCTToneMarks = ptiCoreInfo->CapsBits() & ESupportSCTToneMarks; - } - - ptiCoreInfo = iPtiEngine->CoreInfo(EPtiEngineZhuyinByPhrase); - if(ptiCoreInfo) - { - supportSCTToneMarks = supportSCTToneMarks || - (ptiCoreInfo->CapsBits() & ESupportSCTToneMarks); - } - - if(!iQwertyInputMode && (iMode == EZhuyin) && supportSCTToneMarks) - { - currentEditorSCTResId = - R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_FOR_ZHUYIN_SYMBOL_INPUT; - } - else - { - if ( FeatureManager::FeatureSupported(KFeatureIdChinese) ) - { - currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE; - } - else - { - currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG; - } - } - } - } - return currentEditorSCTResId; - } - -void CAknFepManager::LaunchPictographCharacterTableL() - { - DoLaunchSctAndPctL(NULL, EShowPctFirst); - } - - -void CAknFepManager::UpdateInlineEditL(const TDesC& aNewInlineText, - TInt aPositionOfInsertionPointInInlineText) - { - if ( ! IsFlagSet ( EFlagInsideInlineEditingTransaction ) ) - { - return; - } - // Japanese implementation needs to be merged with functionality of other languages. Now they are separate. - if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese) - { - iUncommittedText.iCursorPos = iUncommittedText.iAnchorPos + - aPositionOfInsertionPointInInlineText; - - if (aNewInlineText.Length() == 1) - { - if (aNewInlineText[0] == KAknFEPLineFeedSymbol || - aNewInlineText[0] == KAknFEPMirroredLineFeedSymbol) - { - SetFlag(EFlagLineFeedCharacter); - ClearFlag(EFlagSpaceCharacter | EFlagFullWidthSpaceCharacter); - } - else if (aNewInlineText[0] == iSpaceCharacterCode) - { - SetFlag(EFlagSpaceCharacter); - ClearFlag(EFlagLineFeedCharacter | EFlagFullWidthSpaceCharacter); - } - else if (aNewInlineText[0] == iFullWidthSpaceCharacterCode) - { - SetFlag(EFlagFullWidthSpaceCharacter); - ClearFlag(EFlagLineFeedCharacter | EFlagSpaceCharacter); - } - else - { - ClearFlag(EFlagLineFeedCharacter - | EFlagSpaceCharacter - | EFlagFullWidthSpaceCharacter); - } - if (iInputCapabilities.SupportsSecretText()) - { - TBuf<1> buf; - buf.Append(aNewInlineText[0]); - NewCharacterL(buf); - } - else - { - SetFlag(EFlagInsideMultitapInlineEditingTransaction); - iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(aNewInlineText, - aPositionOfInsertionPointInInlineText); - } - } - else - { - ClearFlag(EFlagLineFeedCharacter | EFlagSpaceCharacter | EFlagFullWidthSpaceCharacter); - iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(aNewInlineText, - aPositionOfInsertionPointInInlineText); - } -#ifdef _DEBUG - RDebug::Print(_L("UpdateInlineEditL text=[%S] len=[%d] CurPos=[%d] AncPos=[%d] change=[%d]"), - &aNewInlineText, iUncommittedText.Length(), - iUncommittedText.iCursorPos, iUncommittedText.iAnchorPos, - aPositionOfInsertionPointInInlineText); -#endif - } - else - { - TInt curPos = iUncommittedText.iAnchorPos + aNewInlineText.Length(); - - TInt deltaCur = curPos - iUncommittedText.iCursorPos; - - TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep(); - - TInt docLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - - HBufC* newInlineText=NULL; - - TBool syncLater = ETrue; - // we have to restrict to a length that is permissible in the editor - // this situation comes when we select the max length condition is reached - // in the editor and we navigate to one of the words in the middle - // and select a longer word from the candidate list - - - if( (maxEdSize > 0) && ( deltaCur > 0 ) - && (( docLength + deltaCur) > maxEdSize ) ) - { - newInlineText= aNewInlineText.Left( aNewInlineText.Length() - (docLength + deltaCur - maxEdSize )).AllocLC(); - aPositionOfInsertionPointInInlineText=newInlineText->Length(); - } - else if((maxEdSize > 0) && (curPos > maxEdSize)) - { - newInlineText= aNewInlineText.Left(maxEdSize - iUncommittedText.iAnchorPos).AllocLC(); - aPositionOfInsertionPointInInlineText=newInlineText->Length(); - } - else - { - newInlineText=aNewInlineText.AllocLC(); - syncLater = EFalse; - } - // The Below code changes are made to sync iTextBuffer and the last word in the editor.When the - // cursor position reaches more than the max length of editor, tail length is modified according - // to truncated last word and Autocompletion bit length (Element count) value to display last - // word in the editor properly. - #ifdef RD_INTELLIGENT_TEXT_INPUT - if(syncLater) - { - TBuf currentText = iPtiEngine->CurrentWord(); - currentText.SetLength(newInlineText->Length()); - iPtiEngine->HandleCommandL( EPtiCommandSetCursorCrossedMaxLength ); - iPtiEngine->SetCurrentWord(currentText); - TransferFepStateToEditorL(); - iPtiEngine->HandleCommandL( EPtiCommandResetCursorCrossedMaxLength ); - } - #endif - // CleanupStack::PushL(TCleanupItem(ClearFepStateOnLeave,this)); - iUncommittedText.iCursorPos = iUncommittedText.iAnchorPos + aPositionOfInsertionPointInInlineText; - - HBufC* decoratedInlineEdit = HBufC::NewLC(aNewInlineText.Length()*3); - TPtr bufferPtr(decoratedInlineEdit->Des()); - - if ( EditorSupportsNeutralProtection() ) - { - if ( newInlineText->Length() > 0 ) - { - iInlineTextDecorator->DecorateInlineText( - newInlineText->Des(), - bufferPtr, - aPositionOfInsertionPointInInlineText, - static_cast(PreviousChar()), - IsRightToLeftParagraph(DocPos() ), - ( CurrentInputDirectionality() == TBidiText::ERightToLeft ) ); - } - - // Because the length of the new inline edit may bear no relation to the old inline edit, - // the passed desired position of the cursor (which is hidden in S60 anyway) in the new - // inline edit is restricted to its Length(). The input value of parameter - // aPositionOfInsertionPointInInlineText is ignored, and its modified value - // from the DecorateInlineText routine is also ignored. - - aPositionOfInsertionPointInInlineText = decoratedInlineEdit->Length(); - - iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL( - bufferPtr, aPositionOfInsertionPointInInlineText); - - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - iUncommittedText.iAnchorPos-=decoratedInlineEdit->Length(); - } - - else - { - // Even without the issue of decoration, the length of the new inline edit may bear no - // relation to the old inline edit. It is always set to length (the end) of the new inline edit - aPositionOfInsertionPointInInlineText = newInlineText->Length(); - - iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL( - newInlineText->Des(), aPositionOfInsertionPointInInlineText); - - // This is needed here too because we should not insist that the new text is the same length - // as the old, and so the iUncommitted text should be reset. - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - iUncommittedText.iAnchorPos-=newInlineText->Length(); - } - - - CleanupStack::PopAndDestroy(decoratedInlineEdit); - SendEventsToPluginManL( EPluginSyncFepAwareText, EPluginSyncUpdatedText ); - CleanupStack::PopAndDestroy(newInlineText); - //Send info to engine to set EPtiXt9FlagAutoCompletionSetOnToOff flag as false - TInt value = 0; - TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandAutoCompletionOnToOff,&value)); - } - } - -void CAknFepManager::StartInlineEditL() - { - if(iConcatenationTimer->IsActive()) - iConcatenationTimer->Cancel(); - - //currently western only, would need to sort out flags if this were to be used - //in multitap modes - switch (iMode) - { - case ELatin: - case EKatakana: - case EHiragana: - iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(KNullDesC, 0, EFalse, - NULL, *this, *this); - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - break; - default: - iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(KNullDesC, 0, EFalse, - NULL, *this, *this); - break; - } -#ifdef _DEBUG - RDebug::Print(_L("StartInlineEditL len=[%d] CurPos=[%d] AncPos=[%d]"), - iUncommittedText.Length(), - iUncommittedText.iCursorPos, iUncommittedText.iAnchorPos ); -#endif - - // have to calculate the number of free space on current EDITOR after StartFepInlineEditL(). - TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep(); - TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - iFreeSpaceOfEditor = maxEdSize - edSize; - - SetFlag(EFlagInsideInlineEditingTransaction); - } - -void CAknFepManager::StartInlineEditL(const TDesC& aText) - { - if(iConcatenationTimer->IsActive()) - iConcatenationTimer->Cancel(); - - TInt textLength = aText.Length(); - - // CleanupStack::PushL(TCleanupItem(ClearFepStateOnLeave,this)); - - HBufC* decoratedInlineEdit = HBufC::NewLC(aText.Length()*3); - TPtr bufferPtr(decoratedInlineEdit->Des()); - - // decorate the inline edit - if( aText.Length() > 0 && EditorSupportsNeutralProtection() ) - { - iInlineTextDecorator->DecorateInlineText( - aText, - bufferPtr, - textLength, // aPositionOfInsertionPointInInlineText, - static_cast(PreviousChar()), - IsRightToLeftParagraph( DocPos() ), - ( CurrentInputDirectionality() == TBidiText::ERightToLeft ) ); - } - else - { - - bufferPtr.Copy(aText); - } - - // Before starting editor inline, we cancel editor inline if by any chance editor ends up in inline edit and fep does not - TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor); - - if(phoneIdle) - { - iInputCapabilities.FepAwareTextEditor()->CancelFepInlineEdit(); - } - - // operates at the current insertion point or selection - iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL( - - bufferPtr, - textLength, // aPositionOfInsertionPointInInlineText, - EFalse, // Cursor visibility - 0, // MFormCustomDrawer* - *this, - *this); - - // CleanupStack::Pop(); // cleanupitem for FEP state. - - if (!iInputCapabilities.FepAwareTextEditor()) - { - // In case while starting the inline edit, 3rd party app removes the focus out of editor before the transaction - // completes, we return with an error. - User::Leave(KErrCorrupt); - } - // cursor span needs to be updated following potential modification - // of the inline edit content before it was started - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - iUncommittedText.iAnchorPos-=decoratedInlineEdit->Length(); - CleanupStack::PopAndDestroy(decoratedInlineEdit); - - SetFlag(EFlagInsideInlineEditingTransaction); - } - -void CAknFepManager::StartInlineEditL(TCursorSelection aCursorSelection, - const TDesC& aInitialInlineText, - TInt aPositionOfInsertionPointInInlineText, - TBool aCursorVisibility) - { - - if(iConcatenationTimer->IsActive()) - iConcatenationTimer->Cancel(); - - TBool setToTrue=EFalse; - - // setToTrue parameter forces use of selection hiding inline edit editor API - - // this method also sets the cursor selection to the second parameter - // CleanupStack::PushL(TCleanupItem(ClearFepStateOnLeave,this)); - iInputCapabilities.FepAwareTextEditor()->Extension1()->StartFepInlineEditL( - setToTrue, - aCursorSelection, - aInitialInlineText, - aPositionOfInsertionPointInInlineText, - aCursorVisibility, - 0, // MFormCustomDrawer* ? - *this, - *this); - // CleanupStack::Pop(); // cleanupitem for FEP state. - SetFlag(EFlagInsideInlineEditingTransaction); - //This will suppress Edit submenu from poping up - SetCcpuFlag(ECcpuStateIgnoreStarUp); - } - -TBool CAknFepManager::CloseUiIfWordDeletedL() - { - if (iUncommittedText.Length()==0) - { - // word has been totally deleted - ClearFlag(EFlagCompoundWord); - TryCloseUiL(); - return ETrue; - } - return EFalse; - } - -TBool CAknFepManager::TryGetTextToUncommitL(TDes& aText, TInt aCode, TBool& aComsumeKey) - { - TWesternNaviEvent naviEvent = ENullNaviEvent; - if (aCode == EKeyLeftArrow) - { - naviEvent = ELeftNaviEvent; - } - else if (aCode == EKeyRightArrow) - { - naviEvent = ERightNaviEvent; - } - else if (aCode == EKeyBackspace) - { - naviEvent = EBackspaceEvent; - } - - TInt nextCharPos = 0; // Character ordinal in logical memory (0 - n-1) - TBool hindibackspace = 0 ; - TBool nextPositionFound = EFalse; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - if ( naviEvent == ERightNaviEvent ) - { - nextPositionFound = GetNextVisualRightCharacter( nextCharPos ); - if( (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) || - (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai)) - { - FindStartOfWord(nextCharPos); - - if(nextCharPos < iUncommittedText.LowerPos()) - { - nextCharPos = iUncommittedText.LowerPos(); - } - } - } - else if ( naviEvent == ELeftNaviEvent ) - { - nextPositionFound = GetNextVisualLeftCharacter( nextCharPos ); - if( nextPositionFound && (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) || - (nextPositionFound && (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai))) - { - FindEndOfWord(nextCharPos); - if(nextCharPos > iUncommittedText.HigherPos()) - { - nextCharPos = iUncommittedText.HigherPos(); - } - } - - } - else if ( naviEvent == EBackspaceEvent ) - { - if (iLanguageCapabilities.iRightToLeftLanguage) - { - nextPositionFound = GetNextVisualRightCharacter( nextCharPos ); - } - else - { - if( (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) || - (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai)) - { - TCursorSelection curSel; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(curSel); - nextCharPos = curSel.iCursorPos; - hindibackspace = ETrue; - } - else - { - nextPositionFound = GetNextVisualLeftCharacter( nextCharPos ); - } - } - } - - if ( !nextPositionFound && !hindibackspace ) - { - aComsumeKey = EFalse; - return EFalse; - } - - TInt anchorPos = 0; - TInt cursorPos = 0; - TTmDocPosSpec pos = DocPos(); - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - FindAdjacentChunks(pos, leftChunk, rightChunk); - - if (( naviEvent == ELeftNaviEvent && leftChunk.iRightToLeft ) || - ( naviEvent == ERightNaviEvent && !rightChunk.iRightToLeft )) - { - anchorPos = nextCharPos; - cursorPos = nextCharPos; - FindEndOfWord(cursorPos); - } - else - { - if( (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) || - (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai)) - { - cursorPos = nextCharPos; - } - else - { - cursorPos = nextCharPos + 1; - } - anchorPos = nextCharPos; - FindStartOfWord(anchorPos); - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT - TCursorSelection curSel; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(curSel); - // if selection happens dont consume the event pass it to editor - if((naviEvent == EBackspaceEvent) - && (!IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - && (curSel.iAnchorPos != curSel.iCursorPos)) - { - aComsumeKey = EFalse; - return EFalse; - } -#endif - - iUncommittedText.SetSelection(cursorPos, anchorPos); - - if (iUncommittedText.Length() <= EMaximumFepWordLength) - { - iInputCapabilities.FepAwareTextEditor()-> - GetEditorContentForFep(aText, iUncommittedText.iAnchorPos, iUncommittedText.Length()); - aComsumeKey = ETrue; - return ETrue; - } - else - { - if (naviEvent == EBackspaceEvent) - { - // delete the last character - cursorPos--; - iUncommittedText.SetSelection(cursorPos, cursorPos); - aComsumeKey = EFalse; - } - else - { - TInt newCursorPosition= (pos.iPos == cursorPos) ? anchorPos : cursorPos; - iUncommittedText.SetSelection(newCursorPosition, newCursorPosition); - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText); - aComsumeKey = ETrue; - } - // The word is longer than EMaximumFepWordLength. Ui is deactivated. - TryCloseUiL(); - return EFalse; - } - } - - -TBool CAknFepManager::TryGetTextToUncommitL(TDes& aText, TBool& aComsumeKey) - { - TInt nextCharRightPos = 0; // Character ordinal in logical memory (0 - n-1) - TInt nextCharLeftPos = 0; - TBool nextRightPosFound = EFalse; - TBool nextLeftPosFound = EFalse; - - nextRightPosFound = GetNextVisualRightCharacter( nextCharRightPos ); - if( (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) || - (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai)) - { - FindStartOfWord(nextCharRightPos); - - if(nextCharRightPos < iUncommittedText.LowerPos()) - { - nextCharRightPos = iUncommittedText.LowerPos(); - } - } - - - nextLeftPosFound = GetNextVisualLeftCharacter( nextCharLeftPos ); - if( nextLeftPosFound && (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) || - (nextLeftPosFound && (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai))) - { - FindEndOfWord(nextCharLeftPos); - if(nextCharLeftPos > iUncommittedText.HigherPos()) - { - nextCharLeftPos = iUncommittedText.HigherPos(); - } - } - - - - - if ( !nextRightPosFound && !nextLeftPosFound ) - { - aComsumeKey = EFalse; - return EFalse; - } - - TInt anchorPos = 0; - TInt cursorPos = 0; - - - - TTmDocPosSpec pos = DocPos(); - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - FindAdjacentChunks(pos, leftChunk, rightChunk); - - /* - if( (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) || - (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai)) - { - cursorPos = pos.iPos; - } - else - { - cursorPos = pos.iPos + 1; - } - */ - - anchorPos = pos.iPos; - cursorPos = pos.iPos; - FindEndOfWord(cursorPos); - FindStartOfWord(anchorPos); - - - if(cursorPos == pos.iPos || anchorPos == pos.iPos) - { - iUncommittedText.SetSelection(pos.iPos, pos.iPos); - aComsumeKey = ETrue; - return EFalse; - } - else - { - iUncommittedText.SetSelection(cursorPos, anchorPos); - } - - if (iUncommittedText.Length() <= EMaximumFepWordLength) - { - iInputCapabilities.FepAwareTextEditor()-> - GetEditorContentForFep(aText, iUncommittedText.iAnchorPos, iUncommittedText.Length()); - aComsumeKey = ETrue; - return ETrue; - } - else - { - /* - TInt newCursorPosition= (pos.iPos == cursorPos) ? anchorPos : cursorPos; - iUncommittedText.SetSelection(newCursorPosition, newCursorPosition); - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText); - */ - aComsumeKey = ETrue; - // The word is longer than EMaximumFepWordLength. Ui is deactivated. - TryCloseUiL(); - return EFalse; - } - } - -void CAknFepManager::UpdateCbaL(TInt aResourceId) - { - if ( !IsFepAwareTextEditor() ) - { - return; - } - - if (IsCcpuFlagSet(ECcpuStateStartCopy | ECcpuStateCopy | ECcpuStateStartCut | ECcpuStateCut)) - { - return; - } - - //For bug ESSG-7RXC96 - if((iAknEditorFlags & EAknEditorFlagFindPane)&& IsChineseInputLanguage()&& aResourceId != NULL) - { - return; - } - - iUiInterface->UpdateSoftkeysL(aResourceId, EditorState(), this, - iSharedDataInterface->InputMode()); - } - - -TBool CAknFepManager::TryRemoveNoMatchesIndicatorL() - { - __ASSERT_DEBUG(IsFlagSet(EFlagInsideInlineEditingTransaction), - AknFepPanic(EAknFepPanicNotInsideInlineEdit)); - - if (IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - ClearFlag(CAknFepManager::EFlagNoMatches); - TBuf newText; - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(newText, - iUncommittedText.iAnchorPos, - iUncommittedText.Length()); - iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(newText, - iUncommittedText.Length()); - SendEventsToPluginManL( EPluginSyncFepAwareText ); - return ETrue; - } - return EFalse; - } - -TBool CAknFepManager::IsMoreGoodWordsComing(TInt aNewWordLength) const - { - return (aNewWordLength == iUncommittedText.Length() + 1); - } -#ifndef RD_INTELLIGENT_TEXT_INPUT -TBool CAknFepManager::IsMoreGoodAutoCompleteWordsComing(TInt aInputMode,TInt aPreviousWordLength, - TInt aNewWordLength) const - { - return ((aInputMode == EPtiEngineWordCompletion) && (aPreviousWordLength != aNewWordLength )); - } -#endif - -void CAknFepManager::TryStartCompoundWord() - { - // check if this word constitutes a 'compound' word - // i.e. is either adjacent char is an alphabetic characeter - TBuf ch; - // check the previous character - if(iUncommittedText.iAnchorPos>0) - { - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(ch, - iUncommittedText.iAnchorPos-1, - ESingleCharacter); - if (ch.Length()>0 && STATIC_CAST(TChar, IsValidInLineCharacter(ch[0]))) - { - SetFlag(EFlagCompoundWord); - } - } - - // check the next character - TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - if (!IsFlagSet(EFlagCompoundWord) && iUncommittedText.iAnchorPos < edSize) - { - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(ch, - iUncommittedText.iAnchorPos, - ESingleCharacter); - if (ch.Length()>0 && STATIC_CAST(TChar, IsValidInLineCharacter(ch[0]))) - { - SetFlag(EFlagCompoundWord); - } - } - } - -void CAknFepManager::AddCompoundWordToUdbL() - { - __ASSERT_DEBUG(WesternPredictive() , AknFepPanic(EAknFepPanicNonPermittedEditorMode)); - - HBufC* compoundWordBuf = - HBufC::NewLC(iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep()); // buffer for text - TPtr compoundWord=compoundWordBuf->Des(); - - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - - // reset cursor span on word - FindStartOfWord(iUncommittedText.iAnchorPos); - FindEndOfWord(iUncommittedText.iCursorPos); - - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(compoundWord, - iUncommittedText.iAnchorPos, - iUncommittedText.Length()); - FepUI()->AddTextToUserDictionaryL(compoundWord); - CleanupStack::PopAndDestroy(); // compoundWordBuf - } - -void CAknFepManager::SetWesternPredictive( const TBool aWesternPredictive ) - { - const TInt previousValue = iWesternPredictive; - iWesternPredictive = aWesternPredictive && !(iAknEditorFlags & EAknEditorFlagNoT9) && - // Predictive QWERTY (XT9) changes ----> - ( -#ifdef RD_INTELLIGENT_TEXT_INPUT - ( -#endif //RD_INTELLIGENT_TEXT_INPUT - iLanguageCapabilities.iSupportsWesternPredictive -#ifdef RD_INTELLIGENT_TEXT_INPUT - && !iQwertyInputMode) - || (iLanguageCapabilities.iSupportsWesternQwertyPredictive && iQwertyInputMode) -#ifdef __HALF_QWERTY_KEYPAD - || (iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive && iQwertyInputMode) -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - ); - // Predictive QWERTY (XT9) changes <---- - if ( (previousValue != iWesternPredictive) && !(iAknEditorFlags & EAknEditorFlagNoT9) ) - { - if (iWesternPredictive) - { - iSharedDataInterface->SetPredictiveTextOn(); - } - else - { - iSharedDataInterface->ResetPredictiveTextOn(); - } - } - } - -void CAknFepManager::SetWesternAutoComplete( const TBool aWesternAutoComplete ) - { - const TInt previousValue = iIsAutoCompleteOn; - iIsAutoCompleteOn = aWesternAutoComplete && !(iAknEditorFlags & EAknEditorFlagNoT9); - if ( (previousValue != iIsAutoCompleteOn) && !(iAknEditorFlags & EAknEditorFlagNoT9) ) - { - if (iIsAutoCompleteOn) - { - iSharedDataInterface->SetPredictiveTextAutoCompleteOn(); - } - else - { - iSharedDataInterface->ResetPredictiveTextAutoCompleteOn(); - } - } - } - -void CAknFepManager::SetJapanesePredictive(const TBool aJapanesePredictive) - { - if (iJapanesePredictive != aJapanesePredictive) - { - iJapanesePredictive = aJapanesePredictive; - } - if (iJapanesePredictive & iSharedDataInterface->PredictiveTextJapaneseOn() - || !iJapanesePredictive & !iSharedDataInterface->PredictiveTextJapaneseOn()) - { - if(iJapanesePredictive) - { - iSharedDataInterface->SetJapanesePredictiveTextOn(); - } - else - { - iSharedDataInterface->ResetJapanesePredictiveTextOn(); - } - } - } - -void CAknFepManager::SetQwertyMode(const TBool aQwertyInputMode) - { -#ifdef RD_SCALABLE_UI_V2 - if( aQwertyInputMode && iFepPluginManager && - iSharedDataInterface->PluginInputMode() != EPluginInputModeNone - // Add this condition for addtion of ITI features on FSQ. - // iSharedDataInterface->QwertyInputMode() == 1, means that - // hw keyboard is slided, then need to close touch inputmethods. - && iSharedDataInterface->QwertyInputMode() ) - { - iFepPluginManager->ResetMenuState(EFalse); - ExitPluginSpellModeByCancel(); - TRAP_IGNORE(iFepPluginManager->ClosePluginInputModeL( ETrue )); - if ( iCancelPopupInQwerty ) - { - TRAP_IGNORE( SimulateKeyEventL( EKeyCBA2 ) ); - } - } - SetQwertyModeToInputcapbility(); -#endif//RD_SCALABLE_UI_V2 - if (!COMPARE_BOOLS(aQwertyInputMode, iQwertyInputMode)) - { -#ifndef RD_INTELLIGENT_TEXT_INPUT - if(IsAutoCompleteOn()) - { - TRAP_IGNORE(RemoveSuggestedCompletionL()); - } -#endif //RD_INTELLIGENT_TEXT_INPUT - iQwertyInputMode = aQwertyInputMode; - if (!iQwertyInputMode) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - SetTypingCorrectionLevel(EPtiErrorCorrectionLevelHigh); - SetNumberCandidateState(ETrue); // ETrue - SetPrimaryCandidate(EFalse); // Best prediction -#endif - ClearFlag(EFlagQwertyShiftMode | EFlagNoActionDuringChrKeyPress); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - else - { - iSharedDataInterface->HandlePredictiveTextNumberCandidateSettingChange(); - iSharedDataInterface->HandlePredictiveTextTypingCorrectionLevelChange(); - iSharedDataInterface->HandlePredictiveTextPrimaryCandidateChange(); - } -#endif - - if ( iFepManState != EAknFepStateNull && IsFepAwareTextEditor() ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - - // In case of layout remove the auto completion part - // Before transfer fep state to editor state. - if(IsAutoCompleteOn()) - { -#ifdef RD_SCALABLE_UI_V2 - if( iFepPluginManager - && iFepPluginManager->IsSupportITIOnFSQ() - && !iQwertyInputMode ) - { - TRAP_IGNORE( iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate ) ); - } - else -#endif //RD_SCALABLE_UI_V2 - { - TInt tailLength = 0; - TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength )); - if(tailLength > 0) - { - TRAP_IGNORE( - { - RemoveSuggestedAdvanceCompletionL(); - iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate ); - }); - } - } - } -#endif - if ( !iFocusedItemDestroy ) - { - TRAP_IGNORE( - { - TransferFepStateToEditorL(); - TryCloseUiL(); - ConfigureFEPFromEditorStateL(); - }); - } - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iFnKeyManager) - iFnKeyManager->SetQwertyInputMode(aQwertyInputMode); -#endif - } - -TBool CAknFepManager::WesternPredictive(TInt aMode) const - { - TInt mode = iMode; - if ( aMode ) - { - mode = aMode; - } - return (mode == ELatin && iWesternPredictive && - // Predictive QWERTY (XT9) changes ----> - -#ifdef RD_INTELLIGENT_TEXT_INPUT - (( -#endif //RD_INTELLIGENT_TEXT_INPUT - iLanguageCapabilities.iSupportsWesternPredictive -#ifdef RD_INTELLIGENT_TEXT_INPUT - && !iQwertyInputMode) - || (iLanguageCapabilities.iSupportsWesternQwertyPredictive && iQwertyInputMode) -#ifdef __HALF_QWERTY_KEYPAD - || (iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive && iQwertyInputMode) -#endif //__HALF_QWERTY_KEYPAD - ) -#endif //RD_INTELLIGENT_TEXT_INPUT - ); - // Predictive QWERTY (XT9) changes <---- - } - -TBool CAknFepManager::IsPredictive(TInt aMode) const - { - TBool isPredictive = EFalse; - TInt mode = iMode; - if ( aMode ) - { - mode = aMode; - } - if (mode == EHiraganaKanji ) - { - if ((iPermittedInputModes & EAknEditorHiraganaKanjiInputMode) - && iJapanesePredictive - && !(iAknEditorFlags & EAknEditorFlagNoT9) - && HasJapanesePredictionInputMode()) - { - isPredictive = ETrue; - // Japanese predictive input is available on both Qwerty and not Qwerty - return isPredictive; - } - } - else if (mode == ELatin) - { - if ((iPermittedInputModes & (EAknEditorTextInputMode | EAknEditorHalfWidthTextInputMode)) - && !(iAknEditorFlags & EAknEditorFlagNoT9) - && iWesternPredictive && - (iLanguageCapabilities.iSupportsWesternPredictive -#ifdef RD_INTELLIGENT_TEXT_INPUT - ||iLanguageCapabilities.iSupportsWesternQwertyPredictive -#ifdef __HALF_QWERTY_KEYPAD - ||iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - )) // Predictive QWERTY (XT9) changes - { - isPredictive = ETrue; - } - } -#ifdef RD_SCALABLE_UI_V2 - #ifdef RD_INTELLIGENT_TEXT_INPUT - return isPredictive; //&& (iFepPluginManager->PluginInputMode() == EPluginInputModeNone); - #else - return isPredictive && !iQwertyInputMode - && ((iFepPluginManager->PluginInputMode() == EPluginInputModeItut) - || (iFepPluginManager->PluginInputMode() == EPluginInputModeNone)); - #endif //RD_INTELLIGENT_TEXT_INPUT -#else - #ifdef RD_INTELLIGENT_TEXT_INPUT - return isPredictive; - #else - return isPredictive && !iQwertyInputMode; - #endif //RD_INTELLIGENT_TEXT_INPUT -#endif //RD_SCALABLE_UI_V2 - } - -TBool CAknFepManager::Japanese() const - { - TBool rtn = EFalse; - switch (iMode) - { - case EHiraganaKanji: - case EKatakana: - case EHiragana: - rtn = ETrue; - break; - case ELatin: - if ((!WesternPredictive()) && iCharWidth == EFullWidthChar) - { - rtn = ETrue; - } - break; - case ENumber: - if (iCharWidth == EFullWidthChar) - { - rtn = ETrue; - } - break; - default: - break; - } - return rtn; - } - -TBool CAknFepManager::IsOnlyFullWidthCharacterPermitted() const - { - CAknEdwinState* editorState = EditorState(); - TUint permittedInputModes = editorState->PermittedInputModes(); - TUint fullWidthPermitted = (EAknEditorFullWidthTextInputMode - | EAknEditorFullWidthNumericInputMode - | EAknEditorFullWidthKatakanaInputMode); - TUint fullWidthNotPermitted = ~fullWidthPermitted; - TBool isfullchar = ETrue; - if (permittedInputModes & fullWidthNotPermitted) - { - isfullchar = EFalse; - } - - if (!(permittedInputModes & fullWidthPermitted)) - { - isfullchar = EFalse; - } - - return isfullchar; - } - -TBool CAknFepManager::IsOnlyHalfWidthCharacterPermitted() const - { - CAknEdwinState* editorState = EditorState(); - TUint permittedInputModes; - if( editorState ) - { - permittedInputModes= editorState->PermittedInputModes(); - } - else - { - permittedInputModes = EAknEditorNumericInputMode; - } - TUint halfWidthNotPermitted = (EAknEditorFullWidthTextInputMode - | EAknEditorFullWidthNumericInputMode - | EAknEditorFullWidthKatakanaInputMode - | EAknEditorHiraganaKanjiInputMode - | EAknEditorHiraganaInputMode); - - TUint halfWidthPermitted = ~halfWidthNotPermitted; - TBool ishalfchar = ETrue; - if (permittedInputModes & halfWidthNotPermitted) - { - ishalfchar = EFalse; - } - - if (!(permittedInputModes & halfWidthPermitted)) - { - ishalfchar = EFalse; - } - if (permittedInputModes & EAknEditorTextInputMode) - { - ishalfchar = EFalse; - } - if (editorState && (editorState->Flags() & EAknEditorFlagLatinInputModesOnly)) - { - ishalfchar = ETrue; - } - return ishalfchar; - } - -TBool CAknFepManager::IsHalfAndFullKatakanaPermitted() const - { - CAknEdwinState* editorState = EditorState(); - TUint permittedInputModes = editorState->PermittedInputModes(); - TUint katakanaInputMode = (EAknEditorKatakanaInputMode - | EAknEditorFullWidthKatakanaInputMode); - TBool iskatakana = EFalse; - if ((permittedInputModes & katakanaInputMode) == katakanaInputMode) - { - iskatakana = ETrue; - } - return iskatakana; - } - -TBool CAknFepManager::IsHalfAndFullLatinPermitted() const - { - CAknEdwinState* editorState = EditorState(); - TUint permittedInputModes = editorState->PermittedInputModes(); - TUint latinInputMode = (EAknEditorHalfWidthTextInputMode - | EAknEditorFullWidthTextInputMode); - TBool islatin = EFalse; - - if ((permittedInputModes & latinInputMode) == latinInputMode) - { - islatin = ETrue; - } - return islatin; - } - -TBool CAknFepManager::IsHalfAndFullNumberPermitted() const - { - CAknEdwinState* editorState = EditorState(); - TUint permittedInputModes = editorState->PermittedInputModes(); - TUint numInputMode = (EAknEditorNumericInputMode - | EAknEditorFullWidthNumericInputMode); - TBool isnum = EFalse; - if ((permittedInputModes & numInputMode) == numInputMode) - { - isnum = ETrue; - } - - return isnum; - } - -TWidthChar CAknFepManager::CharacterWidth() const - { - return iCharWidth; - } - -CPtiEngine* CAknFepManager::PtiEngine() const - { - return iPtiEngine; - } - -void CAknFepManager::SetInlineEditingCursorVisibilityL(TBool aCursorVisibility) - { -#ifdef RD_SCALABLE_UI_V2 - if ( SemiFepAwareTextEditor( ETrue ) ) -#else - if (iInputCapabilities.FepAwareTextEditor()) -#endif // RD_SCALABLE_UI_V2 - { - iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL(aCursorVisibility); - } - } - -TInt CAknFepManager::InputMode() const - { - return iMode; - } - -TInt CAknFepManager::CangJieMode() const - { - TInt shareMode = iSharedDataInterface->CangJieMode(); - TInt cangjieMode = shareMode + EPtiEngineNormalCangjieQwerty; - return cangjieMode; - } - -TBool CAknFepManager::InputLanguageSupportsCaseChanges() const - { - return iLanguageCapabilities.iSupportsCase; - } - -TBool CAknFepManager::IsAbleScrollLatinPredictive() const - { - return iSharedDataInterface->ScrollLatinPredictiveCandidates(); - } - -TText CAknFepManager::PreviousChar( TBool /*aContextSensitive*/ ) - { - TBuf previousCharacter(ESingleCharacter); - previousCharacter.FillZ(); - - TCursorSelection curSel; - if ( IsFepAwareTextEditor() ) - { - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(curSel); - TInt lowerpos = curSel.LowerPos(); - if(lowerpos > 0) - { - iInputCapabilities.FepAwareTextEditor()-> - GetEditorContentForFep(previousCharacter, lowerpos-1, ESingleCharacter); - if (previousCharacter.Length()) - return previousCharacter[0]; - } - } - return NULL; - } - -TBool CAknFepManager::IsZWSCharacterPresent( TBool aLigaturePresent /* = EFalse*/ ) - { - TBuf<3> previousCharacter; - previousCharacter.Zero(); - TBool found = EFalse; - previousCharacter.FillZ(); - - TCursorSelection curSel; - if ( IsFepAwareTextEditor() ) - { - MCoeFepAwareTextEditor* fepAwareTextEditor = - iInputCapabilities.FepAwareTextEditor(); - fepAwareTextEditor->GetCursorSelectionForFep(curSel); - TInt lowerpos = curSel.LowerPos(); - if( lowerpos > 1 ) - { - if( aLigaturePresent && lowerpos > 3 ) - { - fepAwareTextEditor-> - GetEditorContentForFep(previousCharacter, - lowerpos - 4, 2); - } - else - { - fepAwareTextEditor-> - GetEditorContentForFep(previousCharacter, - lowerpos - 2, 2); - } - if( previousCharacter[0] == ZERO_WIDTH_SPACE - || previousCharacter[1] == ZERO_WIDTH_SPACE ) - { - found = ETrue; - } - } - } - return found; - } - -TText CAknFepManager::NextChar() - { - TBuf nextCharacter(ESingleCharacter); - nextCharacter.FillZ(); - - TCursorSelection curSel; - if ( IsFepAwareTextEditor() ) - { - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(curSel); - TInt higherpos = curSel.HigherPos(); - TInt maxLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - if ( higherpos >= 0 && higherpos <= maxLength && maxLength >= 1 ) - { - iInputCapabilities.FepAwareTextEditor()-> - GetEditorContentForFep(nextCharacter, higherpos, ESingleCharacter); - if( nextCharacter.Length() ) - return nextCharacter[0]; - } - } - return NULL; - } - -void CAknFepManager::FindStartOfWord(TInt& aAnchorPos) const - { - TBuf characterBuffer; - FOREVER - { - if (aAnchorPos<=0) - { - break; // start of editor - } - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(characterBuffer, - aAnchorPos-1, - ESingleCharacter); - if (!IsValidInLineCharacter(characterBuffer[0])) - { - break; - } - aAnchorPos--; - } - } - -void CAknFepManager::FindEndOfWord(TInt& aCursorPos) const - { - TBuf characterBuffer; - FOREVER - { - if (aCursorPos>=iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep()) - { - break; // end of editor - } - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(characterBuffer, - aCursorPos, - ESingleCharacter); - if (!IsValidInLineCharacter(characterBuffer[0])) - { - break; - } - aCursorPos++; - } - } - -TBool CAknFepManager::CursorInsideWord() - { - TBuf characterBuffer; - TBool insideWord=ETrue; - - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - TInt cursorPos=iUncommittedText.iCursorPos; - - if (cursorPos) - { - // check character before cursor - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(characterBuffer, - cursorPos-1, - ESingleCharacter); - if (characterBuffer.Length()) - { - if (!IsValidInLineCharacter(characterBuffer[0])) - { - insideWord=EFalse; - } - } - } - else // at start of editor - { - insideWord=EFalse; - } - - if (insideWord && cursorPosDocumentLengthForFep()) - { - // put character after cursor into buffer - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(characterBuffer, cursorPos, - ESingleCharacter); - if (characterBuffer.Length()) - { - if (!IsValidInLineCharacter(characterBuffer[0])) - { - insideWord=EFalse; - } - } - } - else // at end of editor - { - insideWord=EFalse; - } - - return insideWord; - } - -void CAknFepManager::MoveCursorToStartOfWordL() - { - TInt anchorPos=iUncommittedText.iAnchorPos; - FindStartOfWord(anchorPos); - iUncommittedText.SetSelection(anchorPos, anchorPos); - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText); - } - -void CAknFepManager::MoveCursorToEndOfWordL() - { - TInt cursorPos=iUncommittedText.iCursorPos; - - if(!IsExtendedFlagSet(EExtendedFlagOkKeyPressOnCandidatePopup)) - FindEndOfWord(cursorPos); - iUncommittedText.SetSelection(cursorPos, cursorPos); - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText); - } - -TKeyResponse CAknFepManager::HandleNaviEventOutsideInlineEditL(TUint aCode, - TKeyPressLength aLength) - { - TKeyResponse response = EKeyWasNotConsumed; - - if (TryHandleCommonArrowAndBackspaceFunctionalityL(aCode, response)) - { - return response; - } - if (WesternPredictive()) - { - response = HandlePredictiveNaviEventOutsideInlineEditL(aCode, aLength); - } - - return response; - } - -TKeyResponse CAknFepManager::HandleWesternPredictiveArrowKeyL(TInt aCode, TKeyPressLength aLength) - { - TKeyResponse response = EKeyWasNotConsumed; - - if (IsFlagSet(EFlagLineFeedCharacter)) - { - // This event will stop the multitapping timer for enter chr. - // just return. - return EKeyWasConsumed; - } - - TCursorSelection selection; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(selection); - if(!IsMfneEditor() && - ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut) && - selection.Length() > 0) - { - // If open virtual ITUT and highlight some chars - return EKeyWasConsumed; - } - if (aCode == EKeyUpArrow || aCode == EKeyDownArrow) - { - ClearFlag(EFlagCompoundWord); - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - // moving out of an inline edit - TryRemoveNoMatchesIndicatorL(); - UpdateCbaL(NULL); - // To rip off suggested word completion when user presses UP / DOWN arrow keys - if(IsAutoCompleteOn()) - { -#ifndef RD_INTELLIGENT_TEXT_INPUT - - RemoveSuggestedCompletionL(); - -#else - TInt tailLength = 0; - iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, - &tailLength ); - if(tailLength > 0) - { - RemoveSuggestedAdvanceCompletionL(); - return EKeyWasConsumed; - } -#endif - } - if (IsFlagSet(EFlagShiftKeyDepressed) || IsCcpuFlagSet(ECcpuStateHashDown)) - { - CommitInlineEditL(); - TryCloseUiL(); - SimulateKeyEventL(EKeyF19); // Asyncronous case update - // pass to editor for text selection. - response=EKeyWasNotConsumed; - } - } - if ((iInputCapabilities.FepAwareTextEditor() && !TryHandleTextSelectedNaviEventL(aCode, response)) && !IsFlagSet(EFlagShiftKeyDepressed)) - { - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - ClearFlag(CAknFepManager::EFlagNoMatches); - TryRemoveNoMatchesIndicatorL(); - CommitInlineEditL(); - } - UpdateCbaL(NULL); - - // simulate a designated key event to catch and check if we're inside a word - if (aCode == EKeyDownArrow) - { - SimulateKeyEventL(EKeyF22); - } - else - { - SimulateKeyEventL(EKeyF23); - } - // pass to editor for text selection. - response=EKeyWasNotConsumed; - } - else if (IsFlagSet(EFlagShiftKeyDepressed) || IsCcpuFlagSet(ECcpuStateHashDown)) - { - // Need to update case indicator if text selection is made upwards. - SimulateKeyEventL(EKeyF19); - } - } - else // right or left - { - if (IsFlagSet(EFlagInsideInlineEditingTransaction)) - { - // moving out of an inline edit -#ifndef RD_INTELLIGENT_TEXT_INPUT - if(IsAutoCompleteOn()) - { - if((aCode == EKeyLeftArrow && - CurrentInputDirectionality() == TBidiText::ELeftToRight) || - (aCode == EKeyRightArrow && - CurrentInputDirectionality() == TBidiText::ERightToLeft)) - { - RemoveSuggestedCompletionL(); - } - } -#else - if(IsAutoCompleteOn()) - { - TInt tailLength = 0; - iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - // In case the inline editing is ongoing and there is a word completion - // currently shown, the first backwards tap will remove the suggested - // completion. - if(tailLength > 0) - { - if (((CurrentInputDirectionality()==TBidiText::ERightToLeft) && aCode == EKeyLeftArrow) - || ((CurrentInputDirectionality()==TBidiText::ELeftToRight) && aCode == EKeyRightArrow )) - { - iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate); - TPtrC selectedWord = iPtiEngine->CurrentWord(); - UpdateInlineEditL( selectedWord, selectedWord.Length() ); //selection.iAnchorPosition - iPtiEngine->CommitCurrentWord(); - TryCloseUiL(); - // Asyncronous case update after the editor has handled the key - SimulateKeyEventL(EKeyF19); - response=EKeyWasConsumed; - } - else if(((CurrentInputDirectionality()== TBidiText::ERightToLeft ) && aCode == EKeyRightArrow) - || ((CurrentInputDirectionality()== TBidiText::ELeftToRight) && aCode == EKeyLeftArrow )) - { - RemoveSuggestedAdvanceCompletionL(); - response=EKeyWasConsumed; - } - return response; - } - else if (!IsQwerty()) - { - iPtiEngine->CommitCurrentWord(); - } - - } -#endif // RD_INTELLIGENT_TEXT_INPUT - TryRemoveNoMatchesIndicatorL(); - UpdateCbaL(NULL); - if (IsFlagSet(EFlagShiftKeyDepressed) || IsCcpuFlagSet(ECcpuStateHashDown)) - { -#ifndef RD_INTELLIGENT_TEXT_INPUT - if(IsAutoCompleteOn()) // To rip off suggested completion when shift key is pressed - { - RemoveSuggestedCompletionL(); - } -#endif //RD_INTELLIGENT_TEXT_INPUT - CommitInlineEditL(); - TryCloseUiL(); - SimulateKeyEventL(EKeyF19); // Asyncronous case update - // pass to editor for text selection. - response=EKeyWasNotConsumed; - } - else - { - TWesternNaviEvent naviEvent = ELeftNaviEvent; - if (aCode == EKeyRightArrow) - { - naviEvent = ERightNaviEvent; - } - // Find the visual left/right end of the current word - TTmDocPosSpec pos; - GetAvkonDefinedVisualLimitsOfSelection( - iUncommittedText, naviEvent, pos, NULL ); - - if (IsCcpuFlagSet(ECcpuStateNewPredictiveWord)) - { - // This is new predictive word which is being committed with arrow - // key. Force ::TryCloseUiL to commit PtiEngie word to keep - // frequency information in sync. - SetCcpuFlag(ECcpuStataCommitPredictiveWord); - } - - TryCloseUiL(); - - // Position should be dis-ambiguated based on last navigation and direction of blocks. - AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( pos, naviEvent ); - - SetCursorPositionL( pos ); - if (CursorInsideWord() && naviEvent == ERightNaviEvent) - { - MoveCursorToEndOfWordL(); - } - - iCaseMan->UpdateCase(ENullNaviEvent); - response=EKeyWasConsumed; - } - } - else - { -#ifndef RD_INTELLIGENT_TEXT_INPUT - if ( iLanguageCapabilities.iInputLanguageCode == ELangThai ) // Without this, t9 goes inside words - { // That is not allowed in Thai - response = EKeyWasNotConsumed; - } - else -#endif //RD_INTELLIGENT_TEXT_INPUT - response = HandleNaviEventOutsideInlineEditL(aCode, aLength); - if (response == EKeyWasNotConsumed) - { - // moving over a space - if (aCode == EKeyLeftArrow && !IsFlagSet(EFlagShiftKeyDepressed)) - { - iCaseMan->UpdateCase(ELeftNaviEvent); - } - else if (!IsFlagSet(EFlagShiftKeyDepressed)) // EKeyRightArrow - { - iCaseMan->UpdateCase(ERightNaviEvent); - } - } - else - iCaseMan->UpdateCase(ENullNaviEvent); - } - } - return response; - } - -TBool CAknFepManager::TryHandleTextSelectedNaviEventL(TInt aCode, TKeyResponse& response) - { - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - - if (!IsFlagSet(EFlagShiftKeyDepressed) && iUncommittedText.Length()) - { - if (aCode == EKeyBackspace) - { - iCaseMan->UpdateCase(EBackspaceEvent); - response = EKeyWasNotConsumed; - } - else - { - TInt newCursorPos = iUncommittedText.HigherPos(); //default, right or down - if (aCode == EKeyLeftArrow || aCode == EKeyUpArrow) - { - newCursorPos = iUncommittedText.LowerPos(); - } - iUncommittedText.SetSelection(newCursorPos, newCursorPos); - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText); - - if (WesternPredictive()) - { - if (CursorInsideWord()) - { - if (aCode == EKeyLeftArrow || aCode == EKeyUpArrow) - { - MoveCursorToStartOfWordL(); - } - else //right or down - { - MoveCursorToEndOfWordL(); - } - } - iCaseMan->UpdateCase(ENullNaviEvent); - } - response = EKeyWasConsumed; - } - return ETrue; - } - return EFalse; - } - -TBool CAknFepManager::TryHandleCommonArrowAndBackspaceFunctionalityL(TInt aCode, - TKeyResponse& aResponse) - { - TBool keyHandled = ETrue; - if ( !IsFepAwareTextEditor() ) - { - aResponse=EKeyWasNotConsumed; - return keyHandled; - } -#ifdef RD_HINDI_PHONETIC_INPUT - if(iLanguageCapabilities.iInputLanguageCode == KLangHindiPhonetic) - { - if (aCode == EKeyBackspace) - { - CommitInlineEditL(); - FepUI()->HandleKeyL(aCode, EShortKeyPress); - } - if(IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - if(PreviousChar() == 0x003F && aCode != EKeyBackspace) - { - RemovePreviousCharacterL(); - } - ClearFlag(CAknFepManager::EFlagNoMatches); - FepUI()->ExpireMultitapTimer(); - } - iPtiEngine->HandleCommandL(EPtiCommandBreakSyllable, NULL ); - } -#endif - if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction)) - { - FepUI()->ExpireMultitapTimer(); - - if (aCode == EKeyBackspace) - { - aResponse = EKeyWasNotConsumed; // let editor handle the move - } - else - { - aResponse = EKeyWasConsumed; - } - } - else - { - //selecting text - if (IsFlagSet(EFlagShiftKeyDepressed) || IsCcpuFlagSet(ECcpuStateCopy | ECcpuStateCut)) - { - if (iShiftKeypressMonitor->IsActive()) - { - ResetShiftKeyMonitorL(); //don't want edit menu - } - ClearFlag(EFlagQwertyShiftMode); - SimulateKeyEventL(EKeyF19); // Asyncronous case update - aResponse = EKeyWasNotConsumed; - return keyHandled; - } - - TCursorSelection currentEditorSelection; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(currentEditorSelection); - - TWesternNaviEvent naviEvent = ENullNaviEvent; - - // Translate key code to internal navi-event - switch( aCode ) - { - case EKeyUpArrow: - naviEvent = EUpNaviEvent; - break; - case EKeyDownArrow: - naviEvent = EDownNaviEvent; - break; - case EKeyRightArrow: - naviEvent = ERightNaviEvent; - break; - case EKeyLeftArrow: - naviEvent = ELeftNaviEvent; - break; - default: // just leave it as NULL - break; - } - - if (currentEditorSelection.Length()) - { - // we have text selected - set cursor to start/end of current selection - TTmDocPosSpec newPos; - aResponse = NavigateFromSelectionL( currentEditorSelection, naviEvent, newPos ); - if ( aCode != EKeyBackspace && WesternPredictive() ) - { - if (CursorInsideWord()) - { - TBool rightToleftParagraph = IsRightToLeftParagraph(newPos); - if ( (rightToleftParagraph && naviEvent == ELeftNaviEvent) || - (!rightToleftParagraph && naviEvent == ERightNaviEvent) ) - { - MoveCursorToEndOfWordL(); - } - else - { - MoveCursorToStartOfWordL(); - } - } - - } - } - else if (!(EditorState()->Flags() & EAknEditorFlagNoLRNavigation)) - { - if ((naviEvent != ENullNaviEvent) && HandleLoopingInNaviEventL(naviEvent)) - { - aResponse=EKeyWasConsumed; - } - else - { - if (iMode == ELatin) - { - // normal operation of Down/Up scroll keypress action. - switch( aCode ) - { - case EKeyUpArrow: - case EKeyDownArrow: - SimulateKeyEventL(EKeyF22); - break; - case EKeyRightArrow: - case EKeyLeftArrow: - { - /*Hindi*/ - if( (TAknFepUiIndicInputManager :: IsIndicLangauge( - TLanguage(iLanguageCapabilities.iInputLanguageCode))) - && IsZWSCharacterPresent() ) - { - RemoveZWSCharacterL(EKeyLeftArrow); - } - } - break; - default: // nothing - break; - } - } - keyHandled = EFalse; - } - } - } - - return keyHandled; - } - -/** -* Routine handled navigation and also backspace events at "beginning" of document -* -*/ -TBool CAknFepManager::HandleLoopingInNaviEventL(TWesternNaviEvent aNaviEvent) - { - TBool looping = EFalse; - TBool eventHandled = EFalse; - TTmDocPosSpec newCursorPos; - - // This routine may handle Left, Right and Backspace and nothing else - // Note that Up and Down cannot do any sort of document looping in FEP - if ( aNaviEvent != ELeftNaviEvent - && aNaviEvent != ERightNaviEvent - && aNaviEvent != EBackspaceEvent ) - return eventHandled; // not consumed - - TTmDocPosSpec pos = DocPos(); - TBool rightToLeftParagraph = IsRightToLeftParagraph(pos); - - TWesternNaviEvent incrementingNaviEvent = - rightToLeftParagraph ? ELeftNaviEvent : ERightNaviEvent; - TWesternNaviEvent decrementingNaviEvent = - rightToLeftParagraph ? ERightNaviEvent : ELeftNaviEvent; - - if (aNaviEvent == decrementingNaviEvent) - { - // Abandon early if we are not in the first line. - if ( InFirstLineAndFormatted( pos ) ) - { - TTmDocPosSpec startPos; - GetVisualDocStart( startPos ); - if( AtVisualStart( pos, startPos ) ) - { - TTmDocPosSpec endPos; - if ( !GetVisualDocEnd( endPos ) ) - { - // End of document is not formatted. Value returned is just pos at DocLength. - // So actually move the cursor there (this is guranteed to format the last line) - // and the end End position is found a 2nd time. - newCursorPos = endPos; - SetCursorPositionL( newCursorPos ); - GetVisualDocEnd( endPos ); - } - newCursorPos = endPos; - looping = ETrue; - } - } - } - else if (aNaviEvent == incrementingNaviEvent ) - { - if ( InLastLineAndFormatted( pos ) ) - { - TTmDocPosSpec endPos; - GetVisualDocEnd( endPos ); - if( AtVisualEnd( pos, endPos, - iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep() ) ) - { - TTmDocPosSpec startPos; - if ( !GetVisualDocStart( startPos ) ) - { - // Document was not formatted at docPos(0). So actually move the cursor - // to that line at least, and then ask for the start pos again. - newCursorPos = startPos; - SetCursorPositionL( newCursorPos ); - GetVisualDocStart( startPos ); - } - newCursorPos = startPos; - looping = ETrue; - } - } - } - else if ( aNaviEvent == EBackspaceEvent ) - { - // Deletion is always logical, so the condition is simply to test the logical pos. - if ( pos.iPos ==0 ) - { - eventHandled = ETrue; - } - } - - if (looping) - { - // This takes language issues into account, adjusting the cursor position: - AdjustPosSpecForInputLanguageAfterDocumentLoop( newCursorPos, aNaviEvent, - (aNaviEvent == incrementingNaviEvent) ); - SetCursorPositionL( newCursorPos ); - eventHandled = ETrue; - } - return eventHandled; - } - -void CAknFepManager::TransferFepStateToEditorL( TBool aFnLockSync ) - { - // If editor in Fnlock state, need to set actual input mode - // because, in case of qwerty keypad alphanumeric editor there is no numeric mode - // numeric mode handle as FnLock -#ifdef RD_INTELLIGENT_TEXT_INPUT - - if( aFnLockSync && iQwertyInputMode && iFnKeyManager && iFnKeyManager->FnKeyState()==CAknFepFnKeyManager::EFnKeyLock) - { - EditorState()->SetCurrentInputMode(EditorModeFromFepMode(ENumber)); - // Indicator should not be reset, if menu is displaying from editor. - if(!IsFlagSet(EFlagForegroundUIComponentVisible | EFlagMenuPaneVisible)) - iFnKeyManager->ClearFnKeyState(); - } - else - { -#endif - EditorState()->SetCurrentInputMode(EditorModeFromFepMode(iMode)); - -#ifdef RD_INTELLIGENT_TEXT_INPUT - } - if(iFnKeyManager && iFnKeyManager->FnKeyState()!=CAknFepFnKeyManager::EFnKeyLock) - iFnKeyManager->ClearFnKeyState(); - -#endif - - - if ((iMode == ELatin && iWesternPredictive && - IsFlagSet(EFlagInsideInlineEditingTransaction)) -#ifdef RD_INTELLIGENT_TEXT_INPUT - ||(IsLanguageSupportPrediction() && IsFlagSet(EFlagInsideInlineEditingTransaction)) -#endif //RD_INTELLIGENT_TEXT_INPUT - ) - { - EditorState()->SetInlineEditSpan(iUncommittedText); -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (IsFlagSet(CAknFepManager::EFlagNoMatches)) -#endif //RD_INTELLIGENT_TEXT_INPUT - TryRemoveNoMatchesIndicatorL(); - UpdateCbaL(NULL); - } - else - { - EditorState()->SetInlineEditSpan(TCursorSelection(0,0)); - } - EditorState()->SetCurrentCaseWithNoInitialisation(iCaseMan->CurrentCase()); - if ( IsFlagSet( EFlagSupressAutoUpdate ) ) - { - EditorState()->SetFlags( EditorState()->Flags() | EFlagSupressAutoUpdate ); - } - else - { - EditorState()->SetFlags( EditorState()->Flags() & ~EFlagSupressAutoUpdate ); - } - SetQwertyModeToInputcapbility(); - } - -MAknFepManagerInterface* CAknFepManager::FepUI() const - { -#ifdef RD_SCALABLE_UI_V2 - if ( iFepFullyConstructed && ( iFepPluginManager->PluginInputMode() != EPluginInputModeNone ) ) - { - if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut) - { - return iFepPluginManager->CurrentFepInputUI() ? - iFepPluginManager->CurrentFepInputUI() : iCurrentFepUI; - } - if ( iFepPluginManager->EnableITIOnFSQ() ) - { - return iCurrentFepUI; - } - return iFepPluginManager->CurrentPluginInputFepUI(); - } -#endif - return iCurrentFepUI; - } - -void CAknFepManager::LaunchLanguagesPopupListL(TBool aLaunchedByTouchWin) - { -#ifdef RD_SCALABLE_UI_V2 - if( iFepPluginManager->PluginInputMode() != EPluginInputModeNone && - iFepPluginManager->PluginInputMode() != EPluginInputModeItut - // Add this condition for correction of dim features on FSQ - && iFepPluginManager->PluginInputMode() != EPluginInputModeFSQ ) - { - iFepPluginManager->LaunchPenInputLanguageSelectionL(aLaunchedByTouchWin); - return; - } -#endif //RD_SCALABLE_UI_V2 - - CArrayFixFlat* languages = - new( ELeave )CArrayFixFlat( ELanguageArrayGranularity ); - CleanupStack::PushL( languages ); - iPtiEngine->GetAvailableLanguagesL( languages ); - - // Create a list of languages for the dialog - CDesCArrayFlat* languagesList = - new( ELeave )CDesCArrayFlat( ELanguageArrayGranularity ); - CleanupStack::PushL( languagesList ); - - // Item format should be "\t" - _LIT( KIconIndexSelected, "0\t" ); - _LIT( KIconIndexNotSelected, "\t" );// No icon - - MPtiLanguage* lang = NULL; - TInt currentLanguage = iSharedDataInterface->InputTextLanguage(); - TInt selectedLanguageIndex = 0; - - for (TInt ii=0; ii < languages->Count(); ii++) - { - lang = iPtiEngine->GetLanguage( ( *languages )[ii] ); - if (!lang) - { - User::Leave( KErrCorrupt ); - } - // Buffer should contain both tabulator string and localized name: - HBufC* langStrBuf = HBufC::NewL( lang->LocalizedName().Length() + 3 ); - CleanupStack::PushL( langStrBuf ); - - TPtr langStrPtr = langStrBuf->Des(); - - // If language is current language - use selected icon in lbx: - if( lang->LanguageCode() == currentLanguage ) - { - langStrPtr.Append( KIconIndexSelected ); - selectedLanguageIndex = ii; - } - else - { - langStrPtr.Append( KIconIndexNotSelected ); - } - langStrPtr.Append( lang->LocalizedName() ); - languagesList->AppendL( langStrPtr ); - CleanupStack::PopAndDestroy( langStrBuf ); - } - - // Add icons to the listbox: - CArrayPtr* icons = new( ELeave ) CArrayPtrFlat(10); - CleanupStack::PushL( icons ); - LoadIconL( icons, EMbmAvkonQgn_prop_sub_current, - EMbmAvkonQgn_prop_sub_current_mask ); - - TInt index = 0; - SetFlag( EFlagForegroundUIComponentVisible ); - CleanupStack::Pop( icons ); // iUiInterface->LaunchListPopupL takes ownership immediately -#ifdef RD_SCALABLE_UI_V2 - /* tp teleca fix 17.9.2009 to IKIM-7VK8GG*/ - /*if( iFepFullyConstructed && iFepPluginManager) - { - iFepPluginManager->SetMenuState(); - }*/ - // tp teleca fix end -#endif - // Fire up the dialog -#ifdef RD_SCALABLE_UI_V2 - iCancelPopupInQwerty = aLaunchedByTouchWin; -#endif //RD_SCALABLE_UI_V2 - TUid fepUid = CCoeEnv::Static()->FepUid(); - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - TInt returnValue = iUiInterface->LaunchListPopupL(R_AVKON_T9_LANGUAGES_QUERY, index, - selectedLanguageIndex, languagesList, icons); -#ifdef RD_SCALABLE_UI_V2 - iCancelPopupInQwerty = EFalse; -#endif //RD_SCALABLE_UI_V2 - PrepareFepAfterDialogExitL(fepUid); - CleanupStack::PopAndDestroy( languagesList ); - - if(returnValue == EAknSoftkeyOk) - { - // Selected item index from the languages array - HandleChangeInFocusL(); - - // The user has changed language and the local language is not used any more. - iLanguageCapabilities.iLocalInputLanguageInUse = EFalse; - if (EditorState()) - { - EditorState()->SetLocalLanguage( ELangTest ); - } - - TBool westernPredictiveInUse = WesternPredictive(); - -// Truncate autocompletion portion on change of writing language -#ifdef RD_INTELLIGENT_TEXT_INPUT - RemoveSuggestedAdvanceCompletionL(); -#endif // RD_INTELLIGENT_TEXT_INPUT - //Hindi Change Bug Fix - iSharedDataInterface->SetInputTextLanguage(languages->At(index)); - CAknEnv::Static()->SettingCache().Update(KEikInputLanguageChange); - ChangeInputLanguageL(languages->At(index)); - SetFlag( EFlagNewSharedDataInputLanguage | EFlagNewSharedDataInputMode ); - // This pice of code TSW Fute error fixing. - // Display the confirmation msg if the dictionary is not available for - // Current language. -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Display the confirmation msg only for Western languages - if (!IsChineseInputLanguage()) - { - if (!IsLanguageSupportPrediction()) - { - LaunchConfirmationNoteL(R_AVKON_T9_NOTE_NO_AVAILABLE); - } - } -#endif - - - } - CleanupStack::PopAndDestroy( languages ); - } - -void CAknFepManager::LaunchRecognitionWithDictionaryPopupListL() - { -#ifdef RD_SCALABLE_UI_V2 - if( iFepPluginManager && (iFepPluginManager->PluginInputMode() == EPluginInputModeHwr) ) - { - iFepPluginManager->LaunchPenInputRecognitionWithDictionarySelectionL(); - return; - } -#endif //RD_SCALABLE_UI_V2 - } - -void CAknFepManager::LoadIconL( CArrayPtr* aIcons, - TInt aBitmapId, - TInt aMaskId ) - { - CGulIcon* icon = CGulIcon::NewLC(); - CFbsBitmap* bitmap = 0; - CFbsBitmap* mask = 0; - AknIconUtils::CreateIconL( bitmap, mask, KAvkonBitmapFile, aBitmapId, aMaskId ); - icon->SetBitmap( bitmap ); - icon->SetMask( mask ); - aIcons->AppendL( icon ); - CleanupStack::Pop( icon ); - } - - -TBool CAknFepManager::IsInputModeAvailable(TInt aMode) const - { - TBool isAvailable = ETrue; - const TInt inputLanguage = iLanguageCapabilities.iInputLanguageCode; - switch (aMode) - { - case ELatin: - isAvailable = !( ( inputLanguage == ELangPrcChinese ) && - (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes)); - break; - case EPinyin: - isAvailable = ( inputLanguage == ELangPrcChinese ); - break; - case EStroke: - isAvailable = ( inputLanguage == ELangPrcChinese || - inputLanguage == ELangHongKongChinese || - inputLanguage == ELangTaiwanChinese); - break; - case ECangJie: - { - isAvailable = ( ( inputLanguage == ELangHongKongChinese ) && - iQwertyInputMode ); -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - isAvailable = isAvailable && (EPtiKeyboardHalfQwerty != KeyboardLayout()); -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - } - - break; - case EZhuyin: - isAvailable = ( inputLanguage == ELangTaiwanChinese ); - break; - case EPRCFind: - isAvailable = ( ( inputLanguage == ELangPrcChinese ) && - (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes)); - break; - case EZhuyinFind: - isAvailable = ( ( inputLanguage == ELangTaiwanChinese ) && - (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes)); - break; - case EStrokeFind: - isAvailable = ( ( inputLanguage == ELangHongKongChinese ) && - (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes)); - break; - case EHiraganaKanji: - isAvailable = (inputLanguage == ELangJapanese); - break; - case EKatakana: - isAvailable = (inputLanguage == ELangJapanese ); - break; - case EHindi: - isAvailable = (inputLanguage == ELangHindi ); - break; - case EHangul: - isAvailable = (inputLanguage == ELangKorean ); - break; - case ENativeNumber: - isAvailable = (inputLanguage == ELangHindi - || inputLanguage == ELangArabic - || inputLanguage == ELangUrdu - || inputLanguage == ELangFarsi/* - || ( inputLanguage == ELangThai && iFepPluginManager && - iFepPluginManager->PluginInputMode() != EPluginInputModeItut && - iFepPluginManager->PluginInputMode() != EPluginInputModeNone)*/ ); - default: - break; - } - return isAvailable; - } - -TInt CAknFepManager::NewInputModeAfterLanguageChange() const - { - TInt inputMode = 0; - switch (iLanguageCapabilities.iInputLanguageCode) - { - case ELangPrcChinese: - if ( iAknEditorFlags & EAknEditorFlagForceTransparentFepModes ) - { - inputMode = ELatin; // EPRCFind from hashkey loop - } - else - { - inputMode = EPinyin; - } - break; - case ELangHongKongChinese: - if ( iAknEditorFlags & EAknEditorFlagForceTransparentFepModes ) - { - inputMode = EStrokeFind; - } - else - { - TInt sharedDataMode = iSharedDataInterface->InputMode(); - if (iQwertyInputMode && - sharedDataMode == ECangJie) - { - inputMode = ECangJie; - } - else - { - inputMode = EStroke; - } - } - break; - case ELangTaiwanChinese: - if ( iAknEditorFlags & EAknEditorFlagForceTransparentFepModes ) - { - inputMode = EZhuyinFind; - } - else - { - inputMode = EZhuyin; - } - break; - case ELangJapanese: - inputMode = EHiraganaKanji; - break; - case ELangKorean: - inputMode = EHangul; - break; - default: - inputMode = ELatin; - break; - } - return inputMode; - } - -void CAknFepManager::SetInputLanguageCapabilities(const TInt aInputLanguage) - { - iLanguageCapabilities.iInputLanguageCode = aInputLanguage; - - if ( aInputLanguage == ELangArabic || aInputLanguage == ELangHebrew || - aInputLanguage == ELangFarsi || aInputLanguage == ELangUrdu ) - { - iLanguageCapabilities.iSupportsCase = EFalse; - iLanguageCapabilities.iRightToLeftLanguage = ETrue; - SetCursorTypeForInputDirection(EFalse); - } - else - { - /*Hindi*/ - if ( aInputLanguage == ELangThai - || (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(aInputLanguage))) - ) - { - iLanguageCapabilities.iSupportsCase = EFalse; - } - else - { - iLanguageCapabilities.iSupportsCase = ETrue; - } - iLanguageCapabilities.iRightToLeftLanguage = EFalse; - SetCursorTypeForInputDirection(ETrue); - } - - TLanguage uiLanguage = User::Language(); - iLanguageCapabilities.iArabicIndicDigitsAllowed = - ( aInputLanguage == ELangArabic || uiLanguage == ELangArabic); - iLanguageCapabilities.iEasternArabicIndicDigitsAllowed = ( - ( aInputLanguage == ELangUrdu || uiLanguage == ELangUrdu ) || - ( aInputLanguage == ELangFarsi|| uiLanguage == ELangFarsi ) ); - /*Hindi*/ - iLanguageCapabilities.iIndicDigitsAllowed = - ( (TAknFepUiIndicInputManager :: IsIndicDigitsSupported(TLanguage(aInputLanguage))) ); - UpdateLocalDigitMode(); - - MAknFepManagerInterface* fepUI = iLangMan->GetFepUI(ELatin, iCharWidth, ETrue); - MPtiLanguage* ptiLanguage = iPtiEngine->GetLanguage(fepUI->SupportLanguage(ELatin)); - if (ptiLanguage) // can be NULL in some uncommon situations, see TAVN-6SWB4Z - { - iLanguageCapabilities.iSupportsWesternPredictive = - ptiLanguage->HasInputMode(EPtiEnginePredictive); - // tp teleca change Korean lang does not support predictive - // and we want to disable predictive even with local editors - if(/*IsKoreanInputLanguage()*/GetInputLanguageFromSharedDataInterface() == ELangKorean ) - { - iLanguageCapabilities.iSupportsWesternPredictive = EFalse; - } - - - // tp teleca change end -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - iLanguageCapabilities.iSupportsWesternQwertyPredictive = - ptiLanguage->HasInputMode(EPtiEngineQwertyPredictive ); - if ( GetInputLanguageFromSharedDataInterface() == ELangKorean ) - { - iLanguageCapabilities.iSupportsWesternQwertyPredictive = EFalse; - } - - // Predictive QWERTY (XT9) changes <---- -#ifdef __HALF_QWERTY_KEYPAD - iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive = ptiLanguage->HasInputMode(EPtiEngineHalfQwertyPredictive ); -#endif -#endif //RD_INTELLIGENT_TEXT_INPUT - } - - if (!iLanguageCapabilities.iSupportsWesternPredictive -#ifdef RD_INTELLIGENT_TEXT_INPUT - && !iLanguageCapabilities.iSupportsWesternQwertyPredictive - // Predictive QWERTY changes -#ifdef __HALF_QWERTY_KEYPAD - && !iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - ) // Predictive QWERTY changes - { - SetWesternPredictive(EFalse); - } - } - -TInt CAknFepManager::SubstituteSublanguageId(const TInt aUiLanguage) const - { - return DefaultInputLanguageFromUILanguage(aUiLanguage); - } - -TTmDocPosSpec CAknFepManager::DocPos() - { - TTmDocPosSpec docPos = TTmDocPosSpec(); - TTmDocPos rawDocPos; - TBool gotPos = EFalse; - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if (docNavi) - { - docNavi->GetDocPos(rawDocPos); - gotPos = ETrue; - } - else - { - CTextView* textView = TextView(); - if (textView) - { - TextView()->GetCursorPos(rawDocPos); - gotPos = ETrue; - } - } - if (gotPos) - { - docPos.iPos = rawDocPos.iPos; - TTmDocPosSpec::TType docPosType = - rawDocPos.iLeadingEdge ? TTmDocPosSpec::ELeading : TTmDocPosSpec::ETrailing; - docPos.iType = docPosType; - } - return docPos; - } - -/** -* This method needs EditorState() to exist -* -*/ -CTextView* CAknFepManager::TextView() const - { - if (EditorState()) - { - CAknEdwinFormAccessor* formAccessor = EditorState()->FormAccessor(); - if (formAccessor) - { - return formAccessor->GetTextView(); - } - } - return NULL; - } - -CTextLayout* CAknFepManager::TextLayout() const - { - if( EditorState() ) - { - CAknEdwinFormAccessor* formAccessor = EditorState()->FormAccessor(); - if (formAccessor) - { - return formAccessor->GetTextLayout(); - } - } - return NULL; - } - -CPlainText* CAknFepManager::PlainText() const - { - return iUiInterface->PlainText(EditorState()); - } - -/** -* Checks if the paragraph containing aPos is Right to left. -* This routine will return nonsense if -* - TextLayout() does not return a pointer -* - the position passed is not in the formatted region -* -* Note, the return value from FindDocPos is thrown away -*/ -TBool CAknFepManager::IsRightToLeftParagraph(TTmDocPosSpec aPos) const - { - TTmPosInfo2 posInfo; - TTmLineInfo lineInfo; - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if (docNavi) - { - docNavi->FindDocPos(aPos, posInfo, lineInfo); - } - else - { - CTextLayout* textLayout = TextLayout(); - if (textLayout) - { - textLayout->TagmaTextLayout().FindDocPos(aPos, posInfo, lineInfo); - } - } - - return lineInfo.iFlags & TTmLineInfo::EParRightToLeft; - } - - -void CAknFepManager::FindAdjacentChunks(const TTmDocPosSpec& aPos, - CTmTextLayout::TTmChunkDescription& aLeft, - CTmTextLayout::TTmChunkDescription& aRight) const - { - aLeft.iStart = -1; - aLeft.iEnd = -1; - aLeft.iRightToLeft = EFalse; - aRight.iStart = -1; - aRight.iEnd = -1; - aRight.iRightToLeft = EFalse; - - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if (docNavi) - { - docNavi->FindAdjacentChunks(aPos, aLeft, aRight); - } - else - { - CTextLayout* textLayout = TextLayout(); - if (textLayout) - { - textLayout->TagmaTextLayout().FindAdjacentChunks(aPos, aLeft, aRight); - } - } - } - - -TBool CAknFepManager::GetNextVisualRightCharacter( TInt& aPosition ) - { - TTmDocPosSpec pos = DocPos(); - TTmPosInfo2 info; - TBool nextPositionFound = EFalse; - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if (docNavi) - { - nextPositionFound = docNavi->GetNextVisualCursorPos(pos, info, EFalse); - } - else - { - CTextLayout* textLayout = TextLayout(); - if (textLayout) - { - nextPositionFound = textLayout->TagmaTextLayout().GetNextVisualCursorPos(pos, - info, - EFalse); - } - } - if (nextPositionFound) - { - aPosition = info.iDocPos.iPos; - - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - FindAdjacentChunks(pos, leftChunk, rightChunk); - - if ( !rightChunk.iRightToLeft ) - { - aPosition -= 1; - } - } - return nextPositionFound; - } - -TBool CAknFepManager::GetNextVisualLeftCharacter( TInt& aPosition ) - { - TTmDocPosSpec pos = DocPos(); - TTmPosInfo2 info; - TBool nextPositionFound = EFalse; - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if (docNavi) - { - nextPositionFound = docNavi->GetNextVisualCursorPos(pos, info, ETrue); - } - else - { - CTextLayout* textLayout = TextLayout(); - if (textLayout) - { - nextPositionFound = TextLayout()->TagmaTextLayout().GetNextVisualCursorPos(pos, - info, - ETrue); - } - } - if (nextPositionFound) - { - aPosition = info.iDocPos.iPos; - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - FindAdjacentChunks(pos, leftChunk, rightChunk); - - if ( leftChunk.iRightToLeft ) - { - aPosition -= 1; - } - if (iLanguageCapabilities.iInputLanguageCode == ELangVietnamese) - { - aPosition = pos.iPos -1; - } - } - return nextPositionFound; - } - -void CAknFepManager::FindVisualRightOfWord(TInt& aPosition) - { - TTmDocPosSpec pos = DocPos(); - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - FindAdjacentChunks(pos, leftChunk, rightChunk); - - if ( rightChunk.iRightToLeft ) - { - FindStartOfWord(aPosition); - } - else - { - FindEndOfWord(aPosition); - } - } - -void CAknFepManager::FindVisualLeftOfWord(TInt& aPosition) - { - TTmDocPosSpec pos = DocPos(); - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - FindAdjacentChunks(pos, leftChunk, rightChunk); - - if ( leftChunk.iRightToLeft) - { - FindEndOfWord(aPosition); - } - else - { - FindStartOfWord(aPosition); - } - } - - - -TBool CAknFepManager::GetVisualDocStart( TTmDocPosSpec& aPos) const - { - // Set up the initial try as leading to the first logical character - // It is a requirement that this position is at least in the first line - TTmDocPosSpec pos(0, TTmDocPosSpec::ELeading); - - // Need to record if we are in aleft to right paragraph or not - TBool leftToRightParagraph = !IsRightToLeftParagraph(pos); - - TBool success(EFalse); - CTextLayout* textLayout = TextLayout(); - TTmDocPosSpec docPos; - if (AknFepDocumentNavigation() || textLayout) - { -// This was written because Tagma's LineExtreme() method did not seem to work - success = GetAknFepLineExtreme( pos, !leftToRightParagraph, docPos ); - } - - if (success) - aPos = docPos; - else // Possible cleanup; action for when there is insufficient information - { - aPos.iPos = 0; - aPos.iType = TTmDocPosSpec::ELeading; - } - - return success; - } - -TBool CAknFepManager::GetVisualDocEnd( TTmDocPosSpec& aPos) const - { - TInt docLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - - // Set up the initial try as trailing after the last logical character - // It is a requirement that this position is at least in the last line - TTmDocPosSpec pos(docLength, TTmDocPosSpec::ETrailing); - - // Need to record if we are in a left to right paragraph or not - TBool leftToRightParagraph = !IsRightToLeftParagraph(pos); - - TBool success(EFalse); - CTextLayout* textLayout = TextLayout(); - TTmDocPosSpec docPos; - if (AknFepDocumentNavigation() || textLayout) - { - // This was written because Tagma's LineExtreme() method did not seem to work - success = GetAknFepLineExtreme( pos, leftToRightParagraph, docPos ); - } - - if (success) - aPos = docPos; - else // Possible cleanup; action for when there is insufficient information - { - aPos.iPos = docLength; - aPos.iType = TTmDocPosSpec::ETrailing; - } - return success; - } - - -TBool CAknFepManager::GetAknFepLineExtreme( const TTmDocPosSpec& aPos, TBool aToRight, - TTmDocPosSpec& aExtreme) const - { - TBool success(EFalse); - - TTmPosInfo2 posInfo; - TTmLineInfo lineInfo; - TBool found = EFalse; - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if (docNavi) - { - found = docNavi->FindDocPos(aPos, posInfo, lineInfo); - } - else - { - CTextLayout* textLayout = TextLayout(); - if ( textLayout ) - { - found = textLayout->TagmaTextLayout().FindDocPos(aPos, posInfo, lineInfo); - } - } - - if ( found ) - { - // Make a selection of the line info. Cursor first, Anchar 2nd: - TCursorSelection theWholeLine( lineInfo.iEnd-1, lineInfo.iStart ); - - TWesternNaviEvent event; - if ( aToRight ) - event = ERightNaviEvent; - else - event = ELeftNaviEvent; - - GetAvkonDefinedVisualLimitsOfSelection( theWholeLine, event, aExtreme, NULL ); - success = ETrue; - } - - return success; - } - - -/** -* This routine analyses a selection (Does not have to be a real selection, but the datastructure -* is used as input) to find its visual start or end, according to the passed parameter -* The algo used is: -* - First find the top line of the selection. -* - Then find the bottom line of the selection. -* - Look at the two lines' directionality (from the paragraph they belong to) and decide what the overall -* directionality of the selection is. Thus right/left can be translated to increment/decrement. -* (Note that Up is always decrement; down is always increment). So that allows the key actions to be -* correctly grouped, and allows it to be determined which keys act from the top or the bottom line -* (Decrement always acts from the top line; Increment always acts from the bottom line) -* -* - When the keys are handled, the action is again translated back to right/left according to the key- -* grouping and whether you are acting from the top line or from the bottom line. Eg, decrement in RTL -* line is visually to the Right. -* - the appropriate "ExtremePos" API is called passing in the position on the line in which we are acting -* -*/ -void CAknFepManager::GetAvkonDefinedVisualLimitsOfSelection( - const TCursorSelection& aSelection, - TWesternNaviEvent aEvent, - TTmDocPosSpec& aLimitPos, - TWesternNaviEvent* aEffectiveRightOrLeftEvent ) const - { - // in case an irrelvant event is sent, initialize aLimitPos to something safe - aLimitPos.iPos = 0; - aLimitPos.iType = TTmDocPosSpec::ELeading; - - TTmDocPosSpec lowLogicalPos( aSelection.LowerPos(), TTmDocPosSpec::ELeading ); - TTmDocPosSpec highLogicalPos( aSelection.HigherPos(), TTmDocPosSpec::ETrailing ); - - // this records what the resulting Right/left direction (for optional return) - TWesternNaviEvent effectiveEvent = aEvent; - - // Get line and paragraph of the lower limit of the selection: - TTmPosInfo2 posInfo; - TTmLineInfo lineInfo; - TBool lowIsRightToLeft; - TBool highIsRightToLeft; - TBool layoutExists = EFalse; - - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if (docNavi) - { - docNavi->FindDocPos(lowLogicalPos, posInfo, lineInfo); - lowIsRightToLeft = lineInfo.iFlags & TTmLineInfo::EParRightToLeft; - docNavi->FindDocPos(highLogicalPos, posInfo, lineInfo); - highIsRightToLeft = lineInfo.iFlags & TTmLineInfo::EParRightToLeft; - layoutExists = ETrue; - } - else - { - CTextLayout* textLayout = TextLayout(); - if (textLayout) - { - textLayout->TagmaTextLayout().FindDocPos(lowLogicalPos, posInfo, lineInfo); - lowIsRightToLeft = lineInfo.iFlags & TTmLineInfo::EParRightToLeft; - textLayout->TagmaTextLayout().FindDocPos(highLogicalPos, posInfo, lineInfo); - highIsRightToLeft = lineInfo.iFlags & TTmLineInfo::EParRightToLeft; - layoutExists = ETrue; - } - } - - if (layoutExists) - { - // Decide on the net directionality. This if looks a bit laboured, but it - // exhibits the Averell policy. - TBool netDirectionIsRightToLeft(EFalse); - if ( lowIsRightToLeft == highIsRightToLeft ) - netDirectionIsRightToLeft = lowIsRightToLeft; - else - netDirectionIsRightToLeft = lowIsRightToLeft;// ambiguous - Take first paragraph - - if ( netDirectionIsRightToLeft ) - switch ( aEvent ) - { - case ELeftNaviEvent: - case EDownNaviEvent: - effectiveEvent = ELeftNaviEvent; - aLimitPos = LeftVisualExtremePos( highLogicalPos, lowLogicalPos.iPos, - highLogicalPos.iPos ); - break; - case ERightNaviEvent: - case EUpNaviEvent: - effectiveEvent = ERightNaviEvent; - aLimitPos = RightVisualExtremePos(lowLogicalPos, lowLogicalPos.iPos, - highLogicalPos.iPos ); - break; - default: - // No action. Only the events above are handled. - break; - } - else - switch (aEvent) - { - case ELeftNaviEvent: - case EUpNaviEvent: - effectiveEvent = ELeftNaviEvent; - aLimitPos = LeftVisualExtremePos( lowLogicalPos, lowLogicalPos.iPos, - highLogicalPos.iPos); - break; - case ERightNaviEvent: - case EDownNaviEvent: - effectiveEvent = ERightNaviEvent; - aLimitPos = RightVisualExtremePos( highLogicalPos, lowLogicalPos.iPos, - highLogicalPos.iPos ); - break; - default: - // No action. Only the events above are handled. - break; - } - } - - else - { - // No text layout: Left or Up naviEvent gives low end; Right or down give high end - switch ( aEvent ) - { - case ELeftNaviEvent: - case EUpNaviEvent: - effectiveEvent = ELeftNaviEvent; - aLimitPos = lowLogicalPos; - break; - case ERightNaviEvent: - case EDownNaviEvent: - effectiveEvent = ERightNaviEvent; - aLimitPos = highLogicalPos; - break; - default: - // No action. Only the events above are handled. - break; - } - } - // return the effective direction (Right or Left) - if ( aEffectiveRightOrLeftEvent ) - *aEffectiveRightOrLeftEvent = effectiveEvent; - - } - - -TTmDocPosSpec CAknFepManager::LeftVisualExtremePos( const TTmDocPosSpec& aStartPos, - TInt aMinPos, TInt aMaxPos ) const - { - // Start at start and find adjacent left chunks repeatedly until we find no more chunks, or our max or min - // is within a chunk - TTmDocPosSpec currentPos = aStartPos; - CTextLayout* textLayout = TextLayout(); - if (AknFepDocumentNavigation() || textLayout) - { - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - - TInt iterations(0); - TBool endFound(EFalse); - - while( !endFound && iterations < KMaxChunkWalkIterations ) - { - iterations++; - FindAdjacentChunks(currentPos, leftChunk, rightChunk); - // Try to move to left end of left chunk - endFound = LeftEndOfChunkWithinRange( leftChunk, aMinPos, aMaxPos, currentPos ); - } - } - return currentPos; - } - -TTmDocPosSpec CAknFepManager::RightVisualExtremePos( const TTmDocPosSpec& aStartPos, - TInt aMinPos, TInt aMaxPos ) const - { - // Start at start and find adjacent right chunks repeatedly until we find no more chunks, or our max or min - // is within a chunk - TTmDocPosSpec currentPos = aStartPos; - CTextLayout* textLayout = TextLayout(); - if (AknFepDocumentNavigation() || textLayout) - { - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - - TInt iterations(0); - TBool endFound(EFalse); - - while( !endFound && iterations < KMaxChunkWalkIterations ) - { - iterations++; - FindAdjacentChunks(currentPos, leftChunk, rightChunk); - // Try to move to left end of left chunk - endFound = RightEndOfChunkWithinRange( rightChunk, aMinPos, aMaxPos, currentPos ); - } - } - return currentPos; - } - -TBool CAknFepManager::LeftEndOfChunkWithinRange( const CTmTextLayout::TTmChunkDescription& aChunk, - TInt aMinPos, TInt aMaxPos, TTmDocPosSpec& aNewPos) const - { - TBool constrained = EFalse; - TInt leftEnd; - if ( !ChunkIsValid( aChunk ) ) - { - constrained = ETrue; // leave the aNewPos as it is - } - else if ( aChunk.iStart >= iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep() ) - { - constrained = ETrue; // That chunk was a ficticious one: - } - else if ( aChunk.iEnd <= aMinPos || aChunk.iStart >= aMaxPos ) - { - constrained = ETrue; // That chunk found does not actually overlap with valid range. Don't go there - } - else - { - if ( aChunk.iRightToLeft ) - { - leftEnd = aChunk.iEnd; - if ( leftEnd >= aMaxPos ) - { - constrained = ETrue; - aNewPos.iPos = aMaxPos; - } - else - { - aNewPos.iPos = leftEnd; - } - aNewPos.iType = TTmDocPosSpec::ETrailing; - } - else - { - leftEnd = aChunk.iStart; - if ( leftEnd <= aMinPos ) - { - constrained = ETrue; - aNewPos.iPos = aMinPos; - } - else - { - aNewPos.iPos = leftEnd; - } - aNewPos.iType = TTmDocPosSpec::ELeading; - } - } - return constrained; - } - -TBool CAknFepManager::RightEndOfChunkWithinRange( const CTmTextLayout::TTmChunkDescription& aChunk, - TInt aMinPos, TInt aMaxPos, TTmDocPosSpec& aNewPos) const - { - TBool constrained = EFalse; - TInt rightEnd; - if ( !ChunkIsValid( aChunk ) ) - { - constrained = ETrue; // leave the aNewPos as it is - } - else if ( aChunk.iStart >= iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep() ) - { - constrained = ETrue; // That chunk was a ficticious one: - } - else if ( aChunk.iEnd <= aMinPos || aChunk.iStart >= aMaxPos ) - { - constrained = ETrue; // That chunk found does not actually overlap with valid range. Don't go there - } - else - { - if ( aChunk.iRightToLeft ) - { - rightEnd = aChunk.iStart; - if ( rightEnd <= aMinPos ) - { - constrained = ETrue; - aNewPos.iPos = aMinPos; - } - else - { - aNewPos.iPos = rightEnd; - } - aNewPos.iType = TTmDocPosSpec::ELeading; - } - else - { - rightEnd = aChunk.iEnd; - if ( rightEnd >= aMaxPos ) - { - constrained = ETrue; - aNewPos.iPos = aMaxPos; - } - else - { - aNewPos.iPos = rightEnd; - } - aNewPos.iType = TTmDocPosSpec::ETrailing; - } - } - return constrained; - } - -/** -* This method handles the attachment to the chunk being navigated toward. -* Should only be used for Right and Left navigation. -* The actual direction of that chunk does not need to be looked at. Even if -* is the same direction as the one being moved from, you still attach to it, as it may not -* be logically contiguous. -*/ -void CAknFepManager::AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( TTmDocPosSpec& aPos, - TWesternNaviEvent aEvent ) const - { - - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - FindAdjacentChunks(aPos, leftChunk, rightChunk); - - TBool inputDirectionIsRTL = ( CurrentInputDirectionality() == TBidiText::ERightToLeft ); - - switch (aEvent) - { - case ELeftNaviEvent: - { - // Do not attach to the left chunk if its directionality is not the same as aDirection - if ( ChunkIsValid( leftChunk ) ) - if ( COMPARE_BOOLS(inputDirectionIsRTL, leftChunk.iRightToLeft) ) - AttachToLeftChunk( aPos, leftChunk ); - break; - } - case ERightNaviEvent: - { - if ( ChunkIsValid( rightChunk ) ) - if ( COMPARE_BOOLS(inputDirectionIsRTL, rightChunk.iRightToLeft) ) - AttachToRightChunk( aPos, rightChunk ); - break; - } - default: - break; - } - - } - - -void CAknFepManager::AttachToRightChunk( TTmDocPosSpec& aPos, - const CTmTextLayout::TTmChunkDescription& aRightChunk ) - { - if ( aRightChunk.iRightToLeft ) - { - aPos.iPos = aRightChunk.iEnd; - aPos.iType = TTmDocPosSpec::ETrailing; - } - else - { - aPos.iPos = aRightChunk.iStart; - aPos.iType = TTmDocPosSpec::ELeading; - } - } - -void CAknFepManager::AttachToLeftChunk( TTmDocPosSpec& aPos, - const CTmTextLayout::TTmChunkDescription& aLeftChunk ) - { - if ( aLeftChunk.iRightToLeft ) - { - aPos.iPos = aLeftChunk.iStart; - aPos.iType = TTmDocPosSpec::ELeading; - } - else - { - aPos.iPos = aLeftChunk.iEnd; - aPos.iType = TTmDocPosSpec::ETrailing; - } - } - -/** -* This routine ensures that the cursor position is not attached to a chunk of opposite direction. -* For end of document, the normal routine can be used. -* For the start, usually do nothing, but there is the possibility of forcing position 0/Trailing, when -* the edge chunk and the input directionality are opposite. -*/ -void CAknFepManager::AdjustPosSpecForInputLanguageAfterDocumentLoop( TTmDocPosSpec& aPos, - TWesternNaviEvent /*aNaviEvent*/, TBool aLoopToTop ) const - { - - // Looping based on a Left event should adjust the cursor position as if that point had - // been reached by navigation to that same visual position outwards from the body - // Define this as the effective navigation that has just happened: - TWesternNaviEvent effectiveEvent(ELeftNaviEvent); - - // Rule for this effective navigation is - // move to top of document : if paradirection is LTR then treat it as a LEFT navi - // move to top of document : if paradirection is RTL then treat it as RIGHT navi - // move to bottom of document : if paradirection is LTR then treat is as RIGHT navi - // move to bottom of document : if paradirection is RTL then treat as LEFT navi - // However, NOTE that decrementing events leads to looping to the END! (and vice versa) - TBool newParaIsRTL = IsRightToLeftParagraph(aPos); - if ( aLoopToTop && newParaIsRTL ) // move to top; RTL - effectiveEvent = ERightNaviEvent; - else if ( !aLoopToTop && !newParaIsRTL ) // move to bottom; LTR - effectiveEvent = ERightNaviEvent; - - if ( aLoopToTop ) - { - // There is no ficticious block of the paragraph direction at -1 to 0. So we have to - // behave as if there is one: - // - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - CTmTextLayout::TTmChunkDescription& edgeChunk = leftChunk; - - FindAdjacentChunks(aPos, leftChunk, rightChunk); - - // Get input language direction - TBool inputDirectionIsRTL = ( CurrentInputDirectionality() == TBidiText::ERightToLeft ); - if ( effectiveEvent == ELeftNaviEvent ) - edgeChunk = leftChunk; - else - edgeChunk = rightChunk; - - // Check edgechunk for its direction - if ( !COMPARE_BOOLS( edgeChunk.iRightToLeft, inputDirectionIsRTL ) ) - { - // Input language disagrees with the chunk that we are on, - aPos.iPos = 0; - aPos.iType = TTmDocPosSpec::ETrailing; - } - - } - else // Looping to the end of document - { - // There IS a ficticious block at the doc end, so use the usual routine. - AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( aPos, effectiveEvent ); - } - - } - -TBool CAknFepManager::ChunkIsValid( const CTmTextLayout::TTmChunkDescription& aChunk ) - { - TBool isValid(ETrue); - - const TInt KNotValid = -1; - if ( aChunk.iRightToLeft == KNotValid ) - isValid = EFalse; - else if (aChunk.iStart == KNotValid ) - isValid = EFalse; - else if (aChunk.iEnd == KNotValid ) - isValid = EFalse; - -#ifdef _DEBUG - if (isValid) - __ASSERT_DEBUG( aChunk.iStart <= aChunk.iEnd, - AknFepPanic( EAknFepPanicBadCursorNavigationState ) ); -#endif - - return isValid; - } -/** -* Finds the current input direction. This is determined as best as it can using -* - T9Interface as the preferred source of information -* - shared data (via AknTextUtils) if that fails -* - localLanguage overrides the above sources of information -* - when fep is in numeric mode it returns LTR -* - if FEP is in an irelevant mode, then LTR is returned -* -* @return TDirectionality::ELeftToRight for LTR alpha mode or numeric mode -*/ -TBidiText::TDirectionality CAknFepManager::CurrentInputDirectionality() const - { - TBidiText::TDirectionality directionality(TBidiText::ELeftToRight); - - // See if we are in a mode where the directionality is defined: - TBool checkForRTLValid(EFalse); - - switch (iMode ) - { - case ELatin: - case ENumber: - checkForRTLValid = ETrue; - break; - default: - break; - } - - if ( checkForRTLValid ) - { - MPtiLanguage* ptilang = iPtiEngine->CurrentLanguage(); // No need to get language from PtiEngine ? - TInt inputLanguage = (ptilang)? ptilang->LanguageCode() : 0; - if ( inputLanguage ) - { - directionality = TBidiText::ScriptDirectionality( (TLanguage)inputLanguage ); - checkForRTLValid = EFalse; - } - } - - // if no T9 interface information is available, then go for other sources - // Note that you have to check for local language in this case (belt-and-braces) - if ( checkForRTLValid ) - { - TLanguage localLanguage = ELangTest; - if ( GetLocalLanguage( localLanguage ) ) - directionality = TBidiText::ScriptDirectionality( localLanguage ); - else - directionality = AknTextUtils::CurrentScriptDirectionality(); - } - - return directionality; - } - - -TBool CAknFepManager::GetLocalLanguage( TLanguage& aLanguage ) const - { - TBool result(EFalse); - // Check for a local language override - if ( IsFepAwareTextEditor() ) - { - // For ITU-T keyboard we always use english in latin-only editors. - // In case of qwerty keyboard, some languages can be used in latin - // only-editors, some require that english is used instead. That - // is decided here. - const TInt globalLang = iSharedDataInterface->InputTextLanguage(); - TBool allowTest = -#ifndef RD_INTELLIGENT_TEXT_INPUT - !iQwertyInputMode || -#endif - globalLang == ELangPrcChinese || - globalLang == ELangHongKongChinese || - globalLang == ELangTaiwanChinese || - globalLang == ELangThai || - globalLang == ELangGreek || - globalLang == ELangArabic || - globalLang == ELangFarsi || - globalLang == ELangUrdu || - globalLang == ELangHebrew || - globalLang == ELangRussian || - globalLang == ELangUkrainian || - globalLang == ELangHindi || -#ifdef RD_MARATHI - globalLang == ELangMarathi || -#endif // RD_MARATHI - -#ifdef RD_HINDI_PHONETIC_INPUT - globalLang == KLangHindiPhonetic || -#endif - globalLang == ELangBulgarian || - globalLang == ELangVietnamese; - - if (allowTest && iAknEditorFlags & EAknEditorFlagLatinInputModesOnly && - iLanguageCapabilities.iInputLanguageCode != ELangJapanese) - { - aLanguage = ELangEnglish; - } - else - { - aLanguage = EditorState()->LocalLanguage(); - } - - if ( aLanguage != ELangTest ) - { - MPtiLanguage* languageObject = NULL; - languageObject = iPtiEngine->GetLanguage(aLanguage); - if (languageObject) // Check if the input language is supported. - { - result = ETrue; - } - else - { - aLanguage = ELangTest; - } - } - } - return result; - } - - -TBool CAknFepManager::GetExposedDirectionOfText( TInt aPos, TBool aForward, - TBool& aIsRightToLeft ) const - { - TBool hasStrongCharacter(EFalse); - - // Access the plain text from the editor, getting a little bit at a time. - - TInt docLen = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - - // Init with defaults for aForward = ETrue - TInt limit = docLen; - TInt increment = 1; - if ( !aForward ) - { - limit = -1; // Loop does not execute if == limit - increment = -1; - } - - for ( TInt index = aPos; index != limit ; index += increment ) - { - TChar ch = CharAt(index); - if ( iInlineTextDecorator->CharacterIsStrongRightToLeft( (TText)ch ) ) - { - hasStrongCharacter = ETrue; - aIsRightToLeft = ETrue; - break; - } - else if ( iInlineTextDecorator->CharacterIsStrongLeftToRight( (TText)ch ) ) - { - hasStrongCharacter = ETrue; - aIsRightToLeft = EFalse; - break; - } - } - - return hasStrongCharacter; - } - -TBool CAknFepManager::GetExposedDirectionOfTextInDescriptor( const TDesC& aText, TBool aForward, - TBool& aIsRightToLeft ) const - { - TBool hasStrongCharacter(EFalse); - - TInt textLen = aText.Length(); - - TInt start = 0; - TInt limit = textLen; - TInt increment = 1; - if ( !aForward ) - { - start = textLen-1; - limit = -1; // Loop does not execute if == limit - increment = -1; - } - - for ( TInt index = start; index != limit ; index += increment ) - { - if ( iInlineTextDecorator->CharacterIsStrongRightToLeft( (TText)aText[index] ) ) - { - hasStrongCharacter = ETrue; - aIsRightToLeft = ETrue; - break; - } - else if ( iInlineTextDecorator->CharacterIsStrongLeftToRight( (TText)aText[index] ) ) - { - hasStrongCharacter = ETrue; - aIsRightToLeft = EFalse; - break; - } - } - - return hasStrongCharacter; - } - -TChar CAknFepManager::CharAt( TInt aPos ) const - { - TBuf chDes; -#ifdef RD_SCALABLE_UI_V2 - if ( SemiFepAwareTextEditor( ETrue ) ) -#else - if ( iInputCapabilities.FepAwareTextEditor() ) -#endif // RD_SCALABLE_UI_V2 - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep( chDes, aPos, - ESingleCharacter); - if( chDes.Length() > 0 ) - return chDes[0]; - else - return TChar(0); - } - - -/** -* Navigate off of selected text using an Up/Down/Right/Left navigation event -* -* The code takes account of the paragraph directionality that the passed selection is -* found in. -* -* The new cursor position is resolved for ambuguity and set using SetCursorPosition and -* so it has the same side-effects: -* iUncommittedText is set to the zero-width "cursor" state with the new cursor position -* iUncommittedText is set into the FepAwareTextEditor state -* iCaseManager is updated with a ENullNaviEvent -* the doc pos is set in TextView object if present -*/ -TKeyResponse CAknFepManager::NavigateFromSelectionL( - const TCursorSelection& aSelection, - TWesternNaviEvent aNaviEvent, - TTmDocPosSpec& aPos) - { - if (IsCcpuFlagSet(ECcpuStateCopy | ECcpuStateCut | ECcpuStateHashDown)) - { - return EKeyWasNotConsumed; - } - - switch( aNaviEvent ) - { - case EUpNaviEvent: - case EDownNaviEvent: - case ERightNaviEvent: - case ELeftNaviEvent: - // Carry on. Handle this event - break; - default: // just leave it as NULL - return EKeyWasNotConsumed; - } - // Find the visual end of the selection - TWesternNaviEvent effectiveEvent; // used to return either Right or Left event from next call: - GetAvkonDefinedVisualLimitsOfSelection( aSelection, aNaviEvent, aPos, &effectiveEvent ); - AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( aPos, effectiveEvent ); - - // Set this as the current position - SetCursorPositionL( aPos ); - - return EKeyWasConsumed; - } - - -void CAknFepManager::SetCursorPositionL( const TTmDocPosSpec& aNewCursorPos, TBool aDragSelectOn ) - { - if ( !iInputCapabilities.FepAwareTextEditor() ) - return; - - TInt newAnchorPos = aNewCursorPos.iPos; - - if ( aDragSelectOn ) - { - TCursorSelection selection; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(selection); - if ( selection.Length() > 0 ) // there is a selection. Keep the anchor - newAnchorPos = selection.iAnchorPos; - } - - iUncommittedText.SetSelection( aNewCursorPos.iPos, newAnchorPos ); - - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText); - iCaseMan->UpdateCase(ENullNaviEvent); - - // This is able to set the directional attachment of the cursor in a way that the FepAwareTextEditor interface cannot - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if (docNavi) - { - docNavi->SetDocPosL(aNewCursorPos, aDragSelectOn); - } - else - { - CAknEdwinFormAccessor* formAccessor = EditorState()->FormAccessor(); - if (formAccessor) - { - CEikEdwin *edwin = static_cast( formAccessor->FormClientControl() ); - if (edwin) - edwin->SetCursorPosL( aNewCursorPos.iPos, aDragSelectOn ); - } - } - } - - - -TBool CAknFepManager::InFirstLineAndFormatted( const TTmDocPosSpec& aPos ) const - { - return DocPosInFirstOrLastLineAndFormatted( aPos, ETrue); - } - -TBool CAknFepManager::InLastLineAndFormatted( const TTmDocPosSpec& aPos ) const - { - return DocPosInFirstOrLastLineAndFormatted( aPos, EFalse ); - } - -TBool CAknFepManager::DocPosInFirstOrLastLineAndFormatted( const TTmDocPosSpec& aPos, - TBool aCheckFirstLine ) const - { - TBool success(EFalse); - TTmLineInfo lineInfo; - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if (docNavi) - { - success = docNavi->DocPosToLine( aPos, lineInfo); - } - else - { - CTextLayout* textLayout = TextLayout(); - if ( textLayout ) - { - success = textLayout->TagmaTextLayout().DocPosToLine( aPos, lineInfo); - } - } - - if ( success ) - { - if ( aCheckFirstLine ) - success = (lineInfo.iLineNumber == 0 ); - else - { - // Current position has yielded line information. But how to tell if it is the last line? - // Use the fact that the docpos of the last character will be in the last line. - // Also account for the fact that these APIs report a character at docLength itself, a - // ficticious end of paragraph character. So use a >= docLength - success = (lineInfo.iEnd >= - iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep() ); - } - } - - return success; - } - -TBool CAknFepManager::AtVisualStart( const TTmDocPosSpec& aCurrentPos, - const TTmDocPosSpec& aLimitPos ) const - { - TBool positionsAreTheSame(EFalse); - if ( aCurrentPos.iPos == aLimitPos.iPos && aCurrentPos.iType == aLimitPos.iType ) - positionsAreTheSame = ETrue; - else if ( aCurrentPos.iPos == 0 && aCurrentPos.iType == TTmDocPosSpec::ETrailing ) - positionsAreTheSame = ETrue; - - return positionsAreTheSame; - } - -TBool CAknFepManager::AtVisualEnd( const TTmDocPosSpec& aCurrentPos, - const TTmDocPosSpec& aLimitPos, TInt aDocLength ) const - { - TBool positionsAreTheSame(EFalse); - if ( aCurrentPos.iPos == aLimitPos.iPos && aCurrentPos.iType == aLimitPos.iType ) - positionsAreTheSame = ETrue; - else if ( aCurrentPos.iPos == aDocLength && aCurrentPos.iType == TTmDocPosSpec::ELeading ) - positionsAreTheSame = ETrue; - else if ( aCurrentPos.iPos > aDocLength ) - positionsAreTheSame = ETrue; - - return positionsAreTheSame; - } - - -void CAknFepManager::SetCursorType(TBool aIsLeftToRight) - { - if ( !BidiCursorRequired() ) - return; - - // Optimization to prevent excessive Wserv communication: - if ( IsFlagSet( EFlagBidiCursorIsInitialized ) - && COMPARE_BOOLS( !aIsLeftToRight, IsFlagSet( EFlagCursorPointsRightToLeft ) ) ) - return; - - SetFlag( EFlagBidiCursorIsInitialized ); - - MCoeFepAwareTextEditor* editor = iInputCapabilities.FepAwareTextEditor(); - if (editor && editor->Extension1()) - { - TCharFormat format; - TInt docPos = DocPos().iPos; - editor->GetFormatForFep(format, docPos); - - // Use Avkon routine to make all the layout decisions. It returns a TTextCursor object - TTextCursor newCursor; - AknCustomCursorSupport::GetBidiTextCursorFromFontSpec( format.iFontSpec, - !aIsLeftToRight, newCursor ); - TBool setToTrue(ETrue); - editor->Extension1()->SetCursorType(setToTrue, newCursor); - - // Keep flag in step for optimization - if ( aIsLeftToRight ) - ClearFlag( EFlagCursorPointsRightToLeft ); - else - SetFlag( EFlagCursorPointsRightToLeft ); - } - } - -TBool CAknFepManager::DeviceSupportsRTLLanguageL() - { - CArrayFixFlat* languages = new (ELeave) CArrayFixFlat(ELanguageArrayGranularity); - CleanupStack::PushL(languages); - iPtiEngine->GetAvailableLanguagesL(languages); - - TBool bidiCursorSuppressed(EFalse); -#if defined(__WINS__) - bidiCursorSuppressed = ETrue; - // Test (Disabled) mode (fake) UID, key and its value - const TInt KTestModeValue = 1; // 1 = show Bidi cursor - - CRepository* repository = NULL; - TRAPD(ret, repository = CRepository::NewL(KCRUidAknFep)); - if (ret == KErrNone) - { - TInt modeValue = 0; - if (repository->Get(KAknFepTestModeKey, modeValue) == KErrNone) - { - if (modeValue == KTestModeValue) - { - bidiCursorSuppressed = EFalse; // show bidi cursor - } - } - } - delete repository; -#endif - - TBool result = EFalse; - if (!bidiCursorSuppressed) - { - for (TInt jj = 0; jj < languages->Count(); jj++) - { - if (languages->At(jj) == ELangArabic || - languages->At(jj) == ELangHebrew || - languages->At(jj) == ELangFarsi || - languages->At(jj) == ELangUrdu ) - // + others... - { - result = ETrue; - break; - } - } - } - - CleanupStack::PopAndDestroy(); // languages - return result; - } - -void CAknFepManager::CalculateEditorDigitType(TDigitType& aDestination) - { - TBool ASCIIDigits = EFalse; - MObjectProvider* mop = iInputCapabilities.ObjectProvider(); - - if ( mop ) - { - CAknExtendedInputCapabilities* extendedInputCapabilities = - mop->MopGetObject( extendedInputCapabilities ); - - if ( extendedInputCapabilities ) - { - if ( extendedInputCapabilities->SupportsCapabilities( - CAknExtendedInputCapabilities::ESupportsOnlyASCIIDigits ) ) - { - // If this is true, then the inputcaps wants only ascii - // digits -> you can, when the editor is seen as numeric, - // be sure that only latin indicator is then wanted. - ASCIIDigits = ETrue; - } - } - } - - if (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) - { - // use of only latin characters implies that numbers are also western - ASCIIDigits = ETrue; - } - - AknTextUtils::TDigitModeQueryType editorType = AknTextUtils::EDigitModeEditorDefault; - TBool numberOnlyEditor = iPermittedInputModes == EAknEditorNumericInputMode; - if ( numberOnlyEditor ) - { - editorType = AknTextUtils::EDigitModeNumberEditor; - if (ASCIIDigits) - { - editorType = AknTextUtils::EDigitModeLatinNumberEditor; - } - } - - if (iLanguageCapabilities.iArabicIndicDigitsAllowed && - AknTextUtils::DigitModeQuery(editorType) && - !ASCIIDigits) - { - aDestination = EDigitTypeArabicIndic; - } - else if (iLanguageCapabilities.iEasternArabicIndicDigitsAllowed && - AknTextUtils::DigitModeQuery(editorType)&& - !ASCIIDigits) - { - aDestination = EDigitTypeEasternArabicIndic; - } - /*Hindi*/ - else if ( iLanguageCapabilities.iIndicDigitsAllowed && - AknTextUtils::DigitModeQuery(editorType) && - !ASCIIDigits) - { - aDestination = EDigitTypeDevanagari; - } - else - { - aDestination = EDigitTypeWestern; - } - } - - -void CAknFepManager::UpdateNumericEditorDigitType() - { - if (iLanguageCapabilities.iNumericEditorDigitType == EDigitTypeUnknown) - { - CalculateEditorDigitType(iLanguageCapabilities.iNumericEditorDigitType); - } - } - -void CAknFepManager::UpdateLocalDigitMode() - { - TInt oldLocalDigitType = iLanguageCapabilities.iLocalDigitType; - CalculateEditorDigitType(iLanguageCapabilities.iLocalDigitType); - - if (oldLocalDigitType != iLanguageCapabilities.iLocalDigitType && - iCaseMan) // happens in destructor - { - UpdateIndicators(); - } - } - -/** -* This routine should be called if the flag is set that says that the last navigation was to an -* ambiguous point. -* The routine checks to see if the event passed is -* - Right or Left Arrow -* - Would be the event to "jump" across the ambiguity. That is -* - if at the "left" side of a LTR | RTL point, you need a Right arrow -* - if at the "right" side of a LTR | RTL point, you need a Left arrow. -* - if at the "left" side of a RTL | LTR point, you need a Right arrow -* - if at the "right" side of a RTL | LTR point, you need a Left arrow. -* -*/ -// TKeyResponse CAknFepManager::AttemptCursorFlipAtAmbiguousPointL( const TKeyEvent& aKeyEvent, TEventCode aEventCode ) -TKeyResponse CAknFepManager::AttemptCursorFlipAtAmbiguousPointL( const TUint aCode ) - { - TKeyResponse response = EKeyWasNotConsumed; - - if ( IsFlagSet(EFlagAtDirectionallyAmbiguousPoint) // only perform if already at ambi-point? - && !IsFlagSet(EFlagInsideInlineEditingTransaction) ) // do not flip if inside inline edit - { - if ( aCode == EKeyRightArrow || aCode == EKeyLeftArrow ) - { - if ( iInputCapabilities.FepAwareTextEditor() && EditorState() - && (AknFepDocumentNavigation() || TextView()) ) - { - TTmDocPosSpec docPos = DocPos(); - TTextDirectionalInfo status = LocalTextDirectionalStatus( docPos ); - - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - FindAdjacentChunks(docPos, leftChunk, rightChunk); - - if ( status.iBlockEnvironment == - TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock - && aCode == EKeyRightArrow ) - { - response = EKeyWasConsumed; - // Set cursor to new directionality ( opposite to current ) - SetCursorTypeForTextDirection( status.iDirectionalStatus == - TTextDirectionalInfo::ERightToLeft ); - // Must actually change the docpos! - AttachToRightChunk( docPos, rightChunk ); - SetCursorPositionL( docPos, ETrue ); // Drag any existing selection - } - else if ( status.iBlockEnvironment == - TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock - && aCode == EKeyLeftArrow ) - { - response = EKeyWasConsumed; - // Effectively this toggles the direction of the cursor - SetCursorTypeForTextDirection( status.iDirectionalStatus == - TTextDirectionalInfo::ERightToLeft ); - // Must actually change the docpos! - AttachToLeftChunk( docPos, leftChunk ); - SetCursorPositionL( docPos, ETrue ); // Drag any existing selection - } - } - } - } - return response; - } - - -TInt CAknFepManager::PostEventCheckCallback(TAny* aObj) - { - TRAP_IGNORE(static_cast(aObj)->DoCursorDirectionCheckL()); - return KErrNone; - } - -TBool CAknFepManager::BidiCursorRequired() const - { - return iDeviceSupportsRtlLanguage; - } - -void CAknFepManager::DoCursorDirectionCheckL() - { - iPostEventCheck->Cancel(); - if(BidiCursorRequired()) - { - AdjustCursorTypeForCurrentPosition(); - } - - if ( !BidiCursorRequired() - || (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode)) )) - { - /*Hindi*/ - if( ( !WesternPredictive() ) && - ( TAknFepUiIndicInputManager::IsIndicLangauge( - TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) ) && - ( ( TAknFepUiIndicInputManager::IsCharVirama( - PreviousChar( ETrue ), TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) ) -#ifdef RD_MARATHI - || ( IsEyeLashRaPresentL() && - TAknFepUiIndicInputManager::IsCharVirama( - PreviousToPreviousChar( ETrue ), TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) ) -#endif - ) - && !( iInputCapabilities.SupportsSecretText() ) - ) - { - TTmDocPosSpec pos = DocPos(); - pos.iType = TTmDocPosSpec::ETrailing; - TTmPosInfo2 info; - TTmLineInfo lineInfo; - TBool findAvailable = EFalse; - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if (docNavi) - { - docNavi->FindDocPos(pos, info, lineInfo); - findAvailable = ETrue; - } - else - { - CTextLayout* textLayout = TextLayout(); - if ( textLayout ) - { - textLayout->TagmaTextLayout().FindDocPos(pos, info, lineInfo); - findAvailable = ETrue; - } - } - if (findAvailable) - { - TCursorSelection sel(info.iDocPos.iPos ,info.iDocPos.iPos ); - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel); - } - } - } - } - -void CAknFepManager::AdjustCursorTypeForCurrentPosition() - { - if ( iInputCapabilities.FepAwareTextEditor() && EditorState() - && (AknFepDocumentNavigation() || TextView()) ) - AdjustCursorTypeForPosition( DocPos() ); - } - -void CAknFepManager::SchedulePostEventCheckL( TUint aCode ) - { - - TBool isToPostEvent = EFalse; - TBool isIndicLanguage = TAknFepUiIndicInputManager :: - IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode)); - - if ( BidiCursorRequired() ) - { - switch ( aCode ) - { - // Navigation cases: - case EKeyDownArrow: - case EKeyUpArrow: - case EPtiKey1: - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - case EPtiKey0: - { - isToPostEvent = ETrue; - } - break; - case EKeyBackspace: - case EKeyDelete: - { - if(!isIndicLanguage) - { - isToPostEvent = ETrue; - } - } - break; - case EKeyLeftArrow: - case EKeyRightArrow: - { - if(!isIndicLanguage) - { - isToPostEvent = ETrue; - } - } - break; - default: - break; - } - - // If Repha has been inserted then do not post event. - if( isIndicLanguage ) - { - if( aCode == EPtiKey1 && ( !iQwertyInputMode ) ) - { - if( IsRephaPresent() -#ifdef RD_MARATHI - || IsEyeLashRaPresentL() -#endif - ) - { - isToPostEvent = EFalse; - } - } - } - } - - if(isIndicLanguage) // iQwertyInputMode check is added so as to ensure that the event is not posted for Qwerty mode. - { - if((aCode == EKeyBackspace || aCode == EKeyDelete) && (!iQwertyInputMode)) - { - isToPostEvent = ETrue; - } - } - - if(isToPostEvent) - { - if ( iPostEventCheck->IsActive() ) - iPostEventCheck->Cancel(); - iPostEventCheck->Start( TCallBack(PostEventCheckCallback, this) ); - } - } - -void CAknFepManager::AdjustCursorTypeForPosition( const TTmDocPosSpec& aDocPos ) - { - - TTextDirectionalInfo dirInfo = LocalTextDirectionalStatus( aDocPos ); - // default clearing of this flag - ClearFlag( EFlagAtDirectionallyAmbiguousPoint ); - - switch ( dirInfo.iBlockEnvironment ) - { - case TTextDirectionalInfo::EUndefined: - // Set according to input direction - SetCursorTypeForTextDirection( CurrentInputDirectionality() == - TBidiText::ELeftToRight ); - break; // do nothing - - // All unambiguous cases - case TTextDirectionalInfo::EInsideBlock: - case TTextDirectionalInfo::EAtRightEndOfLine: - case TTextDirectionalInfo::EAtLeftEndOfLine: - case TTextDirectionalInfo::EAtRightEndOfBlockFacingSameDirectionBlock: - case TTextDirectionalInfo::EAtLeftEndOfBlockFacingSameDirectionBlock: - SetCursorTypeForTextDirection( dirInfo.iDirectionalStatus == - TTextDirectionalInfo::ELeftToRight ); - break; - - // Ambiguous. Navigation has resulted in an ambiguous visual position. Set cursor according - // to current direction - case TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock: - case TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock: - SetCursorTypeForTextDirection( dirInfo.iDirectionalStatus == - TTextDirectionalInfo::ELeftToRight ); - SetFlag( EFlagAtDirectionallyAmbiguousPoint ); - break; - default: - // Do nothing - break; - } - } - -void CAknFepManager::SetCursorTypeForTextDirection( TBool aLeftToRight ) - { - SetCursorType( aLeftToRight ); - } - -void CAknFepManager::SetCursorTypeForInputDirection( TBool /*aLeftToRight*/ ) - { - // Do nothing - } - -CAknFepManager::TTextDirectionalInfo CAknFepManager:: - LocalTextDirectionalStatus( const TTmDocPosSpec& aDocPos ) const - { - TTextDirectionalInfo directionalInfo; - - MCoeFepAwareTextEditor* fepAwareTextEditor = iInputCapabilities.FepAwareTextEditor(); - if ( !fepAwareTextEditor ) - return directionalInfo; - - if ( aDocPos.iPos < 0 ) // somehow, we are before the first character - directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ENotInDocument; - else if ( aDocPos.iPos > fepAwareTextEditor->DocumentLengthForFep() ) // (iPos = docLen still is within document) - directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ENotInDocument; - else if ( fepAwareTextEditor->DocumentLengthForFep() == 0 ) // zero length; no document - directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ENotInDocument; - - if ( directionalInfo.iDirectionalStatus == TTextDirectionalInfo::EUnknown ) - { - CTmTextLayout::TTmChunkDescription leftChunk; - CTmTextLayout::TTmChunkDescription rightChunk; - FindAdjacentChunks(aDocPos, leftChunk, rightChunk); - - // Cases: - // position is within a chunk (chunks are continuous in logical index and same directionality. - // ->Return directionality - // position is betweeen two chunks of opposite directionality - // -> return simple ambiguity - // position is between two chnks of same directionality, but logical index is not contiguous - // -> return complex ambiguity ; return directionality - - if ( leftChunk.iStart == -1 && rightChunk.iStart == -1 ) // 2 chunks invalid; direction stays EUnkonwn - { - directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ENoDirectionalChunks; - } - else if ( leftChunk.iStart == -1 ) // no left block - { - directionalInfo.iBlockEnvironment = TTextDirectionalInfo::EAtLeftEndOfLine; - directionalInfo.SetDirectionFromChunk( rightChunk ); - } - else if ( rightChunk.iStart == -1 ) // no right block - { - directionalInfo.iBlockEnvironment = TTextDirectionalInfo::EAtRightEndOfLine; - directionalInfo.SetDirectionFromChunk( leftChunk ); - } - // Both chunks are the same direction. - // We are either nicely inside a block or the two blocks are at +/- 2, 4, etc levels - else if ( COMPARE_BOOLS( leftChunk.iRightToLeft, rightChunk.iRightToLeft ) ) - { - // Can set direction from either chunk; use left one - directionalInfo.SetDirectionFromChunk( leftChunk ); - - if (leftChunk.iRightToLeft ) - { - if ( leftChunk.iStart == rightChunk.iEnd ) // chunks are continguous - directionalInfo.iBlockEnvironment = TTextDirectionalInfo::EInsideBlock; - else // Chunks are separated by 2, 4 etc. levels - directionalInfo.iBlockEnvironment = ( aDocPos.iPos == leftChunk.iStart ) ? - TTextDirectionalInfo::EAtRightEndOfBlockFacingSameDirectionBlock : - TTextDirectionalInfo::EAtLeftEndOfBlockFacingSameDirectionBlock; - } - else - { - if ( leftChunk.iEnd == rightChunk.iStart ) // chunks are continguous - directionalInfo.iBlockEnvironment = TTextDirectionalInfo::EInsideBlock; - else // Chunks are separated by 2, 4 etc. levels - directionalInfo.iBlockEnvironment = ( aDocPos.iPos == leftChunk.iEnd ) ? - TTextDirectionalInfo::EAtRightEndOfBlockFacingSameDirectionBlock : - TTextDirectionalInfo::EAtLeftEndOfBlockFacingSameDirectionBlock; - } - } - else // Blocks are in opposite direction. Have to deal with all the values of the iType enum - { - TInt charPos; - switch( aDocPos.iType ) - { - case TTmDocPosSpec::ETrailing: // position follows a block End - { - charPos = aDocPos.iPos - 1; // attachment is to character[iPos-1] - now find it - if ( leftChunk.iStart <= charPos && charPos < leftChunk.iEnd ) // pos is in left chunk - { - directionalInfo.SetDirectionFromChunk( leftChunk ); - directionalInfo.iBlockEnvironment = - TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock; - } - else if( rightChunk.iStart <= charPos && charPos < rightChunk.iEnd ) // pos is in right chunk - { - directionalInfo.SetDirectionFromChunk( rightChunk ); - directionalInfo.iBlockEnvironment = - TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock; - } - else // Probably impossible situation. Supply reasonable defaults rather than panicking - { - directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ELeftToRight; - directionalInfo.iBlockEnvironment = - TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock; - } - break; - } - case TTmDocPosSpec::ELeading: // position precedes a block start - { - charPos = aDocPos.iPos; // attachment is to character[iPos] - now find it - if ( leftChunk.iStart <= charPos && charPos < leftChunk.iEnd ) // pos is in left chunk - { - directionalInfo.SetDirectionFromChunk( leftChunk ); - directionalInfo.iBlockEnvironment = - TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock; - } - else if( rightChunk.iStart <= charPos && charPos < rightChunk.iEnd ) // pos is in right chunk - { - directionalInfo.SetDirectionFromChunk( rightChunk ); - directionalInfo.iBlockEnvironment = - TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock; - } - else // Probably impossible situation. Supply reasonable defaults rather than panicking - { - directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ELeftToRight; - directionalInfo.iBlockEnvironment = - TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock; - } - break; - } - case TTmDocPosSpec::ELeftToRight: // Is attached to a Left to right block - { - directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ELeftToRight; - // If left chunk is RTL, then we are NOT attached to that left block - // (ie. we are at left end of the right block) - directionalInfo.iBlockEnvironment = leftChunk.iRightToLeft ? - TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock : // must be in right chunk then (left end of it) - TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock; // else in left chunk (right end of it) - break; - } - case TTmDocPosSpec::ERightToLeft: - { - directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ERightToLeft; - // If left chunk if RTL, then we are attached to that left block (ie. at right end of it) - directionalInfo.iBlockEnvironment = leftChunk.iRightToLeft ? // is it in left chunk? - TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock : // right end of left chunk - TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock; - break; - } - } - - } - } - return directionalInfo; - } - - -/** -* Redecoration is carried out if a neutral is exposed by the deletion to a directionality -* different to that which is was already marked. -* -* The routine leaves iUncommittedText again set to the (possibly new) cursor position. -* -*/ -void CAknFepManager::RedecorateAfterDeletionL( const TDesC& aTextThatWasDeleted ) - { - if (!EditorSupportsNeutralProtection()) - return; - - if ( aTextThatWasDeleted.Length() == 0 ) - return; - - TBool protect = ETrue; - - // Set up iUncommittedText with the current cursor position so that PreviousChar will work: - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - - TTmDocPosSpec docPos = DocPos(); - TInt docLen = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - - TInt previousPos = docPos.iPos; - // Trailing iType actually points to character at index iPos - 1 - if( docPos.iType == TTmDocPosSpec::ETrailing ) - previousPos = previousPos -= 1; - TInt nextPos = previousPos + 1; - - // Perform no neutral protection if the beginning of the text is deleted. - // Note that there MAY be protection occuring if the delete is from the end so there is - // no corresponding test on DocLength. That is handled later where the paragraph direction - // is used for the "forward" directionality. - if ( previousPos < 0 ) - return; - - // Up to 2 protection characters, one RTL and one LTR - TBuf<2> textToInsert; - - TBool adjacentPrecedingIsNeutral(EFalse); - TBool adjacentTrailingIsNeutral(EFalse); - - // See if either preceding or next is neutral - adjacentPrecedingIsNeutral = iInlineTextDecorator->CharacterIsNeutral( CharAt(previousPos) ); - if ( nextPos < docLen ) - adjacentTrailingIsNeutral = iInlineTextDecorator->CharacterIsNeutral( CharAt(nextPos) ); - - if ( !adjacentPrecedingIsNeutral && !adjacentTrailingIsNeutral ) - protect = EFalse; - - // Inits actually correspond to LTR, but they are only used if the bools indicating - // strong directionality found get set - TBool directionPrecedingDeleteIsRTL(EFalse); - TBool directionTrailingDeleteIsRTL(EFalse); - if ( protect ) - { - TBool strongPreceding = GetExposedDirectionOfText( previousPos, EFalse, - directionPrecedingDeleteIsRTL ); - TBool strongTrailing = GetExposedDirectionOfText( nextPos, ETrue, - directionTrailingDeleteIsRTL ); - if (!strongTrailing) - { - TBool isRTLPara = IsRightToLeftParagraph(docPos); - directionTrailingDeleteIsRTL = isRTLPara; - strongTrailing = ETrue; - } - if ( !strongPreceding || !strongTrailing) // Must have strong in both directions - protect = EFalse; - else if ( COMPARE_BOOLS( directionPrecedingDeleteIsRTL, directionTrailingDeleteIsRTL ) ) // Must differ - protect = EFalse; - } - - TBool forwardProtection(EFalse); - - if ( protect ) - { - protect = EFalse; - TBool deletedWasRTL; - - // Check for and do reverse protection - if ( adjacentPrecedingIsNeutral ) - { - TBool deletedTextIsStrong = GetExposedDirectionOfTextInDescriptor( aTextThatWasDeleted, - ETrue, - deletedWasRTL ); // search forward into deleted stuff - if ( deletedTextIsStrong && (directionPrecedingDeleteIsRTL == deletedWasRTL)) - { - protect = ETrue; - forwardProtection = EFalse; - if ( deletedWasRTL ) - textToInsert.Append( CAknFepInlineTextDecorator::ERightToLeftMark ); - else - textToInsert.Append( CAknFepInlineTextDecorator::ELeftToRightMark ); - } - } - - // Check for and do forward protection - // Note it is possible to have both forward and reverse redecoration. - if ( adjacentTrailingIsNeutral ) - { - TBool deletedTextIsStrong = GetExposedDirectionOfTextInDescriptor( aTextThatWasDeleted, - EFalse, - deletedWasRTL ); // search backward in deleted stuff - if (deletedTextIsStrong && (directionTrailingDeleteIsRTL == deletedWasRTL) ) - { - protect = ETrue; - forwardProtection = ETrue; - if ( deletedWasRTL ) - textToInsert.Append( CAknFepInlineTextDecorator::ERightToLeftMark ); - else - textToInsert.Append( CAknFepInlineTextDecorator::ELeftToRightMark ); - } - } - } - - - if ( protect ) - { - StartInlineEditL(textToInsert); - CommitInlineEditWithoutResolutionL(*(iInputCapabilities.FepAwareTextEditor()), ETrue); - // iUncommittedText is now set to correct value by the Commitxxxx method - // Document position is adjusted to as to keep the cursor stable. - // Make a docPos. If reverse protection, then the position should trail - TTmDocPosSpec docPos( iUncommittedText.LowerPos() , TTmDocPosSpec::ETrailing ); - // But if there has been forward Protection, then we have to back up the cursor by 1 - // and lead. (This is OK too, if there is simultaneous reversse and forward protection) - if ( forwardProtection ) - { - docPos.iPos = Max(docPos.iPos - 1, 0 ); - docPos.iType = TTmDocPosSpec::ELeading; - } - SetCursorPositionL( docPos ); - } - } - -TBool CAknFepManager::EditorSupportsNeutralProtection() - { - TBool ret = ETrue; - if ( !IsFepAwareTextEditor() ) - ret = EFalse; - - else if (iInputCapabilities.SupportsSecretText()) - ret = EFalse; - - else if ( iAknEditorFlags & EAknEditorFlagLatinInputModesOnly ) - ret = EFalse; - - else if (iPermittedInputModes == EAknEditorNumericInputMode) - ret = EFalse; - - else if ( !CharIsValidInEditor( CAknFepInlineTextDecorator::ERightToLeftMark ) ) - ret = EFalse; - - return ret; - } - -void CAknFepManager::CommitInlineEditWithoutResolutionL(MCoeFepAwareTextEditor& aFepAwareTextEditor, - TBool aCursorVisibility , TBool aClearPti ) - { - aFepAwareTextEditor.SetInlineEditingCursorVisibilityL(aCursorVisibility); - /* - On any call to CommitFepInlineEditL, the mode will change - even when a leave event occurs. - */ - ClearFlag(EFlagInsideInlineEditingTransaction | EFlagInsideMultitapInlineEditingTransaction); - ClearCcpuFlag(ECcpuStateNewPredictiveWord); - - if(aClearPti) - { - iPtiEngine->CommitCurrentWord(); - } - CCoeEnv* coeEnv = CCoeEnv::Static(); - aFepAwareTextEditor.CommitFepInlineEditL(*coeEnv); - aFepAwareTextEditor.GetCursorSelectionForFep(iUncommittedText); - // iMatchState=EWordMatchFirst; - iCaseMan->UpdateCase(ENullNaviEvent); - } - -void CAknFepManager::WordConcatenationTimerTimeoutL() - { - iConcatenationTimer->Cancel(); - - // add concatenated word to the UDB (a concatenated word is a compound word) - AddCompoundWordToUdbL(); - -#ifdef RD_INTELLIGENT_TEXT_INPUT - MoveCursorToEndOfWordL(); -#endif - } - - -TKeyResponse CAknFepManager::HandlePredictiveNaviEventOutsideInlineEditL(TUint aCode, - TKeyPressLength aLength) - { - TKeyResponse response = EKeyWasNotConsumed; - - TWesternNaviEvent naviEvent = ENullNaviEvent; - if (aCode == EKeyLeftArrow) - { - naviEvent = ELeftNaviEvent; - } - else if (aCode == EKeyRightArrow) - { - naviEvent = ERightNaviEvent; - } - else if (aCode == EKeyBackspace) - { - naviEvent = EBackspaceEvent; - } - - TInt nextCharPos = 0; // Character ordinal in logical memory (0 - n-1) - TBool nextPositionFound = EFalse; - if ( naviEvent == ERightNaviEvent ) - { - nextPositionFound = GetNextVisualRightCharacter( nextCharPos ); - } - else if ( naviEvent == ELeftNaviEvent ) - { - nextPositionFound = GetNextVisualLeftCharacter( nextCharPos ); - } - else if ( naviEvent == EBackspaceEvent ) - { - if (iLanguageCapabilities.iRightToLeftLanguage) - { - TChar character = PreviousChar(); - TChar::TBdCategory bdCategory = character.GetBdCategory(); - // In case last character in buffer is number or Latin characters, needs to delete - // character from left. - if (TChar::EEuropeanNumber == bdCategory || TChar::EArabicNumber == bdCategory || - TChar::ELeftToRight == bdCategory ) - { - nextPositionFound = GetNextVisualLeftCharacter( nextCharPos ); - } - else - { - nextPositionFound = GetNextVisualRightCharacter( nextCharPos ); - } - } - else - { - nextPositionFound = GetNextVisualLeftCharacter( nextCharPos ); - } - } - - if ( !nextPositionFound ) - { - response = EKeyWasNotConsumed; - } - else // not looping - lets see what to do - { - TBuf characterBuffer; - iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(characterBuffer, - nextCharPos, - ESingleCharacter); - - if ( !IsValidInLineCharacter( STATIC_CAST(TChar, characterBuffer[0])) ) - { - // if the character is a non-alpha character; let it go - response=EKeyWasNotConsumed; - if (IsFlagSet(EFlagCompoundWord)) - { - if (STATIC_CAST(TChar, characterBuffer[0]).IsSpace()) - // we are navigating over a space so add any current compond word to the udb - AddCompoundWordToUdbL(); - ClearFlag(EFlagCompoundWord); - } - //allow to popup editsubmenu - ClearCcpuFlag(ECcpuStateIgnoreStarUp); - } - else - { - if (FepUI()->HandleKeyL(aCode, aLength)) - { - response=EKeyWasConsumed; - } - } - } - return response; - } - -/** - * Call back function: - */ -TInt CAknFepManager::DoSimulateKey(TAny* aThisPtr) - { - CAknFepManager* myobj = static_cast(aThisPtr); - TRAPD(error, myobj->HandleOwnedSimulateKeyL()); - return error; - } - -void CAknFepManager::HandleOwnedSimulateKeyL() - { -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - if( KeyboardLayout() == EPtiKeyboardHalfQwerty ) - { - CCoeEnv::Static()->SimulateKeyEventL( iHalfQwertyLastKeyEvent, EEventKey ); - } - else -#endif //__HALF_QWERTY_KEYPAD -#endif //RD_INTELLIGENT_TEXT_INPUT - if (iSimulateKey > 0) - { - HandleKeyEventL(iSimulateKey, EShortKeyPress); - iSimulateKey = 0; - } - } - -/** - * This method is that the label of CBA is updated by aTextResId. - * @param aPosition CBA position, either ELeftSoftkeyIndex or ERightSoftkeyIndex - * @param aCommandId command id for softkey - * @param aTextResId resource id to set string on label. - * @return TBool The return value is ETrue in case it is necessary to update CBA. - */ -TBool CAknFepManager::UpdateCBALabelL(TInt aPosition, TInt aCommandId, TInt aTextResId) - { - return iUiInterface->UpdateSoftkeyLabelL(aPosition, aCommandId, aTextResId); - } - -void CAknFepManager::DoLaunchSctAndPctL(TInt aResourceId, TShowSctMode aShowSctMode) - { - TBool replace = EFalse; - TBool disableRecentItemRow = EFalse; - - if (ExtendedInputCapabilities() & CAknExtendedInputCapabilities::EDisableSCT) - { - // The editor doesn't allow SCT. - return; - } - if ( EditorType() == CAknExtendedInputCapabilities::EEikSecretEditorBased ) - { - - disableRecentItemRow = ETrue; - } - - if (IsCcpuFlagSet(ECcpuStateCbaSymbol) && - iMode == ELatin && WesternPredictive(ELatin) && - iPtiEngine->LastEnteredKey() == EPtiKey1) - { - // User is entering special character as result of pressing key '1' and - // cycling through candidates until left softkey turns into "Symbol". In - // that case we want to replace last cahracter instead of adding new one. - replace = ETrue; - } - - //Commit characters in latin multitap as some editors may call CancelFepTransaction() - //which will be received before the focus change notification. - if (IsFeatureSupportedJapanese()) - { - TryCloseUiL(); - } - else - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(!(WesternPredictive())) -#endif - CommitInlineEditL(); - } - - if (!EditorHasFreeSpace()) - { - return; - } - - // get the SCT resource id from editor default settings - TInt currentEditorSCTResId = GetCurrentEditorSCTResId(); - TInt charMap = aResourceId; - if ( FeatureManager::FeatureSupported(KFeatureIdChinese) ) - { - if (charMap == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG) - { - charMap = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE; - } - } - if (!charMap) - { - // override numeric keymap if necessary. flag is for non standard charmaps - TInt standardNumericCharMap = EDefaultNumericCharMapResId; - if ((iMode == ENumber || iMode == ENativeNumber) && - !(iAknEditorFlags & EAknEditorFlagUseSCTNumericCharmap) && - (iCharWidth == EHalfWidthChar) && - ( (iAknEditorNumericKeymap != EAknEditorAlphanumericNumberModeKeymap) || - (iPermittedInputModes == EAknEditorNumericInputMode) )) - { - standardNumericCharMap = NumericModeSCTResourceId(); - } - charMap = standardNumericCharMap; - } - - if ( charMap == ENoCharacters && !IsAbleToLaunchSCT()) - { - currentEditorSCTResId = charMap; - } - - if (currentEditorSCTResId) - { - TBuf<32> specialChars; - - TInt sctChars = EAknSCTChiChineseInputModes; - TInt afterSctChars = EAknSCTHalfCase; - - if (iCharWidth == EFullWidthChar) - { - sctChars = EAknSCTFullCase; - if (iMode == ELatin) - { - afterSctChars = EAknSCTUpperCase; - if (iCaseMan->CurrentCase() == EAknEditorLowerCase) - { - afterSctChars = EAknSCTLowerCase; - } - } - else if (iMode == ENumber||iMode == ENativeNumber) - { - afterSctChars = EAknSCTLowerCase; - } - } - else - { - if (iMode == ELatin) - { - if ( FeatureManager::FeatureSupported(KFeatureIdChinese) ) - { - sctChars = EAknSCTChiLatinInputModes; - } - else - { - if (iQwertyInputMode) - { - sctChars = EAknSCTQwerty; - afterSctChars = EAknSCTFullCase; - } - else - { - sctChars = EAknSCTUpperCase; - afterSctChars = EAknSCTFullCase; - if (iCaseMan->CurrentCase() == EAknEditorLowerCase) - { - sctChars = EAknSCTLowerCase; - } - } - } - } - else if (iMode == ENumber||iMode == ENativeNumber) - { - sctChars = EAknSCTNumeric; - if ( ((iAknEditorFlags & EAknEditorFlagUseSCTNumericCharmap) || - (iAknEditorNumericKeymap == EAknEditorAlphanumericNumberModeKeymap)) && - !IsOnlyHalfWidthCharacterPermitted() ) - { - sctChars = EAknSCTLowerCase; - afterSctChars = EAknSCTFullCase; - } - } - else if (iMode == EHiraganaKanji) - { - sctChars = EAknSCTFullCase; - } - else if(iMode == EKatakana) - { - sctChars = EAknSCTHalfCase; - afterSctChars = EAknSCTFullCase; - } - } - - SetFlag(EFlagForegroundUIComponentVisible); - - TBool showAnotherTable = EFalse; - if (IsFeatureSupportedJapanese()) - { - if (sctChars == EAknSCTFullCase) - { - if (!IsOnlyFullWidthCharacterPermitted()) - { - showAnotherTable = ETrue; - } - } - else if (sctChars == EAknSCTHalfCase || sctChars == EAknSCTUpperCase - || sctChars == EAknSCTLowerCase) - { - if (!IsOnlyHalfWidthCharacterPermitted() - && !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly)) - { - showAnotherTable = ETrue; - } - } - } -#ifdef RD_SCALABLE_UI_V2 - if( iFepFullyConstructed && !iFepPluginManager->IsGlobleNotes()) - { - if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || - iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || - iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr) - { - SetStopProcessFocus(ETrue, EFalse); - iFepPluginManager->SetMenuState(); - } - else if (!iFepPluginManager->IsGlobleNotes()) - { - iFepPluginManager->ClosePluginInputUiL( ETrue ); - } - } -#endif - - TBool lockNumericKeys = ( iPtiEngine->IsQwertyBasedMode(iPtiEngine->InputMode())) - #ifdef RD_INTELLIGENT_TEXT_INPUT - || ( iPtiEngine->InputMode() == EPtiEngineHalfQwerty ) || - ( iPtiEngine->InputMode() == EPtiEngineHalfQwertyPredictive ) - #endif - ; - TUid fepUid = CCoeEnv::Static()->FepUid(); - - if(IsAbleToLaunchSmiley()) - { - if(aShowSctMode == EShowSmileyFirst) - { - sctChars |= EAknCharMapEmotionFirst; - } - else - { - sctChars |= EAknCharMapEmotionUse; - } - } - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - - if (iUiInterface->CharMapDialogL( - sctChars, - specialChars, - charMap, - lockNumericKeys, - aShowSctMode==EShowPctFirst, - !IsAbleToLaunchPCT(), - showAnotherTable, - afterSctChars, - currentEditorSCTResId, - disableRecentItemRow)) - { - PrepareFepAfterDialogExitL(fepUid); - SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd); - -#ifdef RD_SCALABLE_UI_V2 - - if( iFepFullyConstructed && iFepPluginManager) - { - if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut || - iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ || - iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr) - { - SetStopProcessFocus(EFalse); - } - else - { - HandleChangeInFocus(); - } - } - else - { - HandleChangeInFocus(); - } - // Set the flag, not change focus for next. - iDisalbleFocusChangeForSCT = ETrue; -#endif - - //Removes auto-complition part if SCT is launched and any special character is selected -#ifdef RD_INTELLIGENT_TEXT_INPUT - if( specialChars.Length() > 0 ) - { - RemoveSuggestedAdvanceCompletionL(); - } -#endif // RD_INTELLIGENT_TEXT_INPUT - TBuf charAsDesc(ESingleCharacter); - for ( TInt ii = 0; ii < specialChars.Length(); ii++) - { - charAsDesc[0]=(TText)specialChars[ii]; - - if (iInputCapabilities.SupportsSecretText()) - { - TChar ch = charAsDesc[0]; - if (ch == TText(0x000A) || ch == TText(CEditableText::EParagraphDelimiter)) - // 0x000A is ascii, EParagraphDelimiter is unicode - future - // proofs against sct changing to unicode - ch = EKeyEnter; - if (CharIsValidInEditor(ch)) - { - //we receive an extra key press if we simulate a key that is also a device key - if (ch.IsDigit() || TUint(ch) == EStarKeyUnicodeValue - || TUint(ch) == EHashKeyUnicodeValue) - SetFlag(EFlagPassNextKey); - SimulateKeyEventL(ch); - } - } - else - { - if (charAsDesc[0] == TText(0x000A)) // 0x000A is line feed - { - charAsDesc[0] = CEditableText::EParagraphDelimiter; - } - - if (CharIsValidInEditor(charAsDesc[0])) - { - TCursorSelection cursorSelection(0,0); - if ((iAknEditorFlags & EAknEditorFlagMTAutoOverwrite) && iMode == ELatin - && !WesternPredictive()) - { - TInt edSize = - iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep(); - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - if (iUncommittedText.iCursorPos < edSize - && iUncommittedText.Length() == 0) - { - cursorSelection = TCursorSelection(iUncommittedText.iCursorPos + 1, - iUncommittedText.iAnchorPos); - } - } - if (EditorState()) - { - if (charAsDesc[0] == CEditableText::EParagraphDelimiter) - { - // This is line feed character. Post it to editor and let it decide - // if it is valid. - if (!(iAknEditorFlags & EAknEditorFlagFindPane) - && specialChars.Length() == 1) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - CommitInlineEditL(); -#endif - - SimulateKeyEventL(EKeyEnter); - SimulateKeyEventL(EKeyF19); // Asyncronous case update - } - } - else - { - if (replace) - { - TKeyEvent delKey = {8, EStdKeyBackspace, 1, 0}; - CCoeEnv::Static()->SimulateKeyEventL(delKey, EEventKey); - } - InsertTextFromDialogL(charAsDesc, cursorSelection); -//There may be several char to be inserted, need disable Focus change to avoid multi-focus change. -#ifdef RD_SCALABLE_UI_V2 - iDisalbleFocusChangeForSCT = ETrue; -#endif - } - // Clear dead key, vowel sequence and vietnamese tone mark states. - iPtiEngine->HandleCommandL(EPtiCommandGetAndClearLastVietnameseChar, - NULL); - iPtiEngine->HandleCommandL(EPtiCommandClearVowelSeq, - NULL); - iPtiEngine->HandleCommandL(EPtiCommandGetAndClearDeadKeyRootChar, - NULL); - } - } - } - } - } - else - { - iClosePeninputUi = EFalse; - iStopProcessFocus = EFalse; - } - - PrepareFepAfterDialogExitL(fepUid); - } - } - -/** - * Queries supportting of SecretText - * - * @since 2.6 - * @return ETrue if SecretText was supported - */ -TBool CAknFepManager::IsSupportsSecretText() const - { - TBool bSecret = iInputCapabilities.SupportsSecretText(); - if( !bSecret ) - { - //test java editor - MObjectProvider* mop = iInputCapabilities.ObjectProvider(); - if ( mop ) - { - CAknExtendedInputCapabilities* extendedInputCapabilities; - extendedInputCapabilities = mop->MopGetObject( extendedInputCapabilities ); - if ( extendedInputCapabilities ) - { - TUint constraints = extendedInputCapabilities->MIDPConstrainst(); - if( constraints & 0x10000 ) - { - bSecret = ETrue; - } - } - } - } - - return bSecret; - } - -void CAknFepManager::SendEventsToPluginManL( TInt aEventType, TInt aEventData ) - { -#ifdef RD_SCALABLE_UI_V2 - if ( iFepFullyConstructed ) - { - iFepPluginManager->HandleEventsFromFepL( aEventType, aEventData ); - } -#endif //RD_SCALABLE_UI_V2 - } - -void CAknFepManager::UpdateCangJieState(TInt aNewMode) - { - CAknFepUIManagerChinese* fepUiMgr = STATIC_CAST(CAknFepUIManagerChinese*, - iLangMan->GetFepUI(ECangJie, ENoneWidthChar, EFalse)); - - if (aNewMode >= 0) - { - if ( fepUiMgr ) - { - fepUiMgr->UpdateCangJieState(); - } - - // Store CangJie settings into the sharedata - iSharedDataInterface->SetCangJieMode(aNewMode); - } - } - -TInt CAknFepManager::LaunchCangJieOptionDlgL() - { - // Get the CangJie level from the GS - TInt currentLevel = iSharedDataInterface->CangJieMode(); - - if ((currentLevel != ECangJieNormal) - && (currentLevel != ECangJieEasy) - && (currentLevel != ECangJieAdvanced)) - return KErrGeneral; - - // Launch the CangJie setting menu - CDesCArrayFlat* items = CCoeEnv::Static()->ReadDesC16ArrayResourceL(R_AVKON_CANGJIE_OPTIONS_LBX); - CleanupStack::PushL(items); - - TUid fepUid = CCoeEnv::Static()->FepUid(); - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - TInt ret = iUiInterface->LaunchCangJieOptionDlgL( - R_AVKON_CANGJIE_MODE_OPTIONS_SETTING_PAGE, - currentLevel, - items - ); - PrepareFepAfterDialogExitL(fepUid); - - CleanupStack::PopAndDestroy(items); - - return ret ? currentLevel : KErrGeneral; - } - -GLDEF_C void AknFepPanic(TAknFepPanic aPanic) - { - User::Panic(_L("AKNFEP"),aPanic); - } - -/** - * Set Multitap timer value. - * - * @since 3.0 - * @param Value of KAknFepMultiTapTimer setting - */ -void CAknFepManager::SetMultiTapTimer(const TInt aMultiTapTimer) - { - if (iMultiTapTimer != aMultiTapTimer) - { - iMultiTapTimer = aMultiTapTimer; - } - } - -/** - * Set Japanese Qwerty Flags value. - * - * @since 3.0 - * @param Value of KAknFepJapaneseSpecialCharFlag setting - */ -void CAknFepManager::SetJapaneseQwertyFlags(const TInt aJapaneseQwertyFlags) - { - if (iJapaneseQwertyFlags != aJapaneseQwertyFlags) - { - iJapaneseQwertyFlags = aJapaneseQwertyFlags; - } - } - -/** - * Handle the Chr Key Monitor - * for Japanese variant only. - * - * @since 3.0 - * @return KErrNone if succeed, KErrDied if failed - */ -TInt CAknFepManager::HandleChrKeyMonitorCallback(TAny* aObj) - { - TRAPD(err, static_cast(aObj)->HandleChrKeyMonitorL()); - if (err) - { - static_cast(aObj)->CleanUpFep(); - return KErrDied; - } - return KErrNone; - } - -/** - * Handle the Chr Key Monitor - * for Japanese variant only. - * - * @since 3.0 - */ -void CAknFepManager::HandleChrKeyMonitorL() - { -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - if ( IsFlagSet(EFlagQwertyChrKeyDepressed) && - IsFlagSet(EFlagNoActionDuringChrKeyPress) && - (EPtiKeyboardHalfQwerty == KeyboardLayout() ) && - ( iWesternPredictive || iMode == EPinyin || - iMode == EStroke || iMode == EZhuyin ) ) - { - // Clear the chr key depressed flag - TBool validchr = FepUI()->IsValidLongChrKeyPress(); - - if(!validchr || !IsAbleToLaunchSCT() ) - { - FepUI()->HandleKeyL( EStdKeyLeftFunc, EShortKeyPress ); - ClearFlag( EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress); - } - else - { - // will launch SCT later - iChrLongKeyPress = ETrue; - } - - } - else -#endif -#endif - if (IsFlagSet(EFlagQwertyChrKeyDepressed) && IsFlagSet(EFlagNoActionDuringChrKeyPress) - && iCurrentFepUI->IsValidShiftKeyPress()) - { - // Timer cancel - iChrKeypressMonitor->Cancel(); - // Commit characters - HandleChangeInFocus(); - // Clear flags - ClearFlag(EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress); - // Open editting menu - LaunchSelectModeMenuL(); - } - } - - -// ----------------------------------------------------------------------------- -// CAknFepManager::SetCursorSelectionL -// Set editor cursor selection. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepManager::SetCursorSelectionL(const TCursorSelection& /*aCurSel*/, TBool /*aSyncCursor*/) - { - } - - TInt CAknFepManager::HandleResourceChangedCallback(TAny* aObj) - { - TRAPD(err, static_cast(aObj)->ResourceChangedTimeroutL()); - if (err) - { - static_cast(aObj)->CleanUpFep(); - return KErrNoMemory; - } - return KErrNone; - } - -void CAknFepManager::ResourceChangedTimeroutL() - { - if(iCurrentFepUI) - { - iCurrentFepUI->ResourceChanged(1); - } - } - - -// ----------------------------------------------------------------------------- -// pen related inplementation -// ----------------------------------------------------------------------------- -#ifdef RD_SCALABLE_UI_V2 - -// ----------------------------------------------------------------------------- -// CAknFepManager::HandleLayoutChange -// Update plugin UI case mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepManager::HandleResourceChange(TInt aType) - { - if(iCurrentFepUI) - { - iAsyncResouceChanged.CallBack(); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iCandidatePopup && iPtiEngine && (aType == KEikDynamicLayoutVariantSwitch)) - { - //When there is a change of layout, the inline text position changes and hence the candidate - //list position also needs to change accordingly. - //We need the editor to be brought back to focus, this is because we need the position of - //the inline text. - iCandidatePopup->UnFocus(); - //Need to get the editor state back after it is brought back to focus. - TRAP_IGNORE( HandleChangeInFocusL()); - - // Add candidate list control stack to get the layout change event - // after dialog control...... - TRAP_IGNORE( iCandidatePopup->SetFocusAddStackReducePriorityL() ); - - } -#endif - TRAP_IGNORE(SendEventsToPluginManL( EPluginResourceChanged, aType )); - } -void CAknFepManager::HandlePointerEventL(const TPointerEvent& aPointerEvent) - { - if (IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - ClearFlag(CAknFepManager::EFlagNoMatches); - } - - if(aPointerEvent.iType == TPointerEvent::EDrag) - { - SetExtendedFlag(EExtendedFlagPointerEventTypeEDrag); - } - if (aPointerEvent.iType == TPointerEvent::EButton1Up) - { - ClearExtendedFlag(EExtendedFlagPointerEventTypeEDrag); - - // Remember last up-click in case it is needed for displaying - // stylus ccpu-menu. - iClickPoint = aPointerEvent.iPosition; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepManager::HandleSelModeArrowKeyEventL -// Set text selection when tap on the arrow keys. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CAknFepManager::HandleSelModeArrowKeyEventL(const TKeyEvent& aKeyEvent, - TEventCode aEventCode, - TKeyResponse& aRetCode) - { - TCursorSelection currentEditorSelection(0,0); - if(iInputCapabilities.FepAwareTextEditor()) - { - iInputCapabilities.FepAwareTextEditor()-> - GetCursorSelectionForFep(currentEditorSelection); - } - - if(!IsMfneEditor() && - (PluginInputMode() == EPluginInputModeItut || - PluginInputMode() == EPluginInputModeFSQ) && - currentEditorSelection.Length() != 0) - { - - if ((aKeyEvent.iScanCode == EStdKeyLeftArrow) || (aKeyEvent.iScanCode == EStdKeyRightArrow)) - { - if (!(aKeyEvent.iModifiers & EModifierShift)) - { - TKeyEvent ccpuStart = aKeyEvent; - ccpuStart.iModifiers |= EModifierShift; - ccpuStart.iModifiers |= EModifierRightShift; - CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode); - - aRetCode = EKeyWasConsumed; - return ETrue; - } - else - { - aRetCode = EKeyWasNotConsumed; - return ETrue; - } - } - } - aRetCode = EKeyWasNotConsumed; - return EFalse; - } - -#else // !RD_SCALABLE_UI_V2 -// ----------------------------------------------------------------------------- -// CAknFepManager::HandleResourceChange -// Update plugin UI case mode. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepManager::HandleResourceChange(TInt aType) - { - if (iFepFullyConstructed && Japanese() ) - { - // Japaneseinput should handle the event of changing layout or screen. - FepUI()->ResourceChanged(aType); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iCandidatePopup && iPtiEngine && (aType == KEikDynamicLayoutVariantSwitch)) - { - //When there is a change of layout, the inline text position changes and hence the candidate - //list position also needs to change accordingly. - //We need the editor to be brought back to focus, this is because we need the position of - //the inline text. - iCandidatePopup->UnFocus(); - //Need to get the editor state back after it is brought back to focus. - TRAP_IGNORE(HandleChangeInFocusL()); - //Can not do anything if FEP is not constructed fully - if(iFepFullyConstructed) - { - //Now we read the position of the inline text - TPoint inlineEditorTl; - TPoint inlineEditorBr; - TInt height; - TInt ascent; - TInt documentOffset = iPtiEngine->CurrentWord().Length(); - // Popup Position for RTL - if(iLanguageCapabilities.iRightToLeftLanguage) - documentOffset = 0; - // Popup Position for RTL - TRAP_IGNORE( GetScreenCoordinatesL( inlineEditorTl, height, ascent, documentOffset )); - inlineEditorTl.iY -= height; - TRAP_IGNORE( GetScreenCoordinatesL( inlineEditorBr, height, ascent )); - - //Let the candidate list know about a change of resource and update the - //inline text rectangle. - //Now show the candidate list at the re-calculated position - iCandidatePopup->ShowAtNewPosition(TRect(inlineEditorTl,inlineEditorBr)); - } - } -#endif - } - -#endif //RD_SCALABLE_UI_V2 - -TDigitType CAknFepManager::LocalDigit() - { - return iLanguageCapabilities.iLocalDigitType; - } - -/** -* Returns ETrue if arabic indic digit setting is on. -* -* @since 3.0 -*/ -TBool CAknFepManager::ArabicIndicDigitsInUse() const - { - return (iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic); - } - -TBool CAknFepManager::EasternArabicIndicDigitsInUse() const - { - return (iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic); - } - -/** - * Sets delayed commit on (predicitve word will be commited in - * next call to TryCloseUiL. This is needed because of Japanese ReadingTextL). - * - * @since 3.1 - */ -void CAknFepManager::SetDelayedCommit() - { - iCcpuMode |= ECcpuStataCommitPredictiveWord; - } - -// ----------------------------------------------------------------------------- -// CAknFepManager::SetDefaultNumberMode -// -// Set default number mode for non-latin languagues -// -// Copied from CGSLangModel::SetDefaultNumberMode -// ----------------------------------------------------------------------------- -// -void CAknFepManager::SetDefaultNumberMode( TInt aMode, TInt aNbrModeType ) - { - //As aMode comes from the UI, it can either be 0 or 1. This needs - //special handling for Indic mode as it has been defined as an enum - //constant and has a value of 2. This applies to any values defined - //in the enum and have a value > 1. - if ( aNbrModeType == ENbrModeTypeArabic || - aNbrModeType == ENbrModeTypeEasternArabic ) - { - iSharedDataInterface->SetDefaultNumberMode( KSettingsDefaultNumberMode, aMode ); - } - else - { - iSharedDataInterface->SetDefaultNumberMode( KSettingsIndicDefaultNumberMode, aMode ); - } - - TLocale locale; - if ( aMode == ENbrModeLatin ) - { - locale.SetDigitType( EDigitTypeWestern ); - } - else - { - //if aMode != EGSNbrModeLatin, then it should be either latin or arabic. However - //as EGSNbrModeArabic and EGsNbrModeIndic both have a value = 1, we can't use - //that constant for below comparison. Hence, need to depend on the 2nd param. - switch ( aNbrModeType ) - { - case ENbrModeTypeArabic: - locale.SetDigitType( EDigitTypeArabicIndic ); - break; - case ENbrModeTypeIndic: - locale.SetDigitType( EDigitTypeDevanagari ); - break; - case ENbrModeTypeEasternArabic: - locale.SetDigitType( EDigitTypeEasternArabicIndic ); - break; - default: - break; - } - } - - locale.Set(); - } - -// ----------------------------------------------------------------------------- -// CAknFepManager::ResolveCurrentCandidateListIndex -// -// Calculates correct selection index for matches popup list. -// ----------------------------------------------------------------------------- -// -TInt CAknFepManager::ResolveCurrentCandidateListIndex(CDesCArrayFlat* aCandList) - { - if (iPtiEngine && aCandList) - { - TBuf currentCand; - - currentCand.Copy(iPtiEngine->CurrentWord()); - for (TInt i = 0; i < aCandList->Count(); i++) - { - if (currentCand == aCandList->MdcaPoint(i)) - { - if (i == aCandList->Count() - 1) - { - return 0; - } - return i + 1; - } - } - } - - return 0; - } - -void CAknFepManager::AlignLogicalAndVisualCursorL( TTmDocPosSpec::TType aType, - TBool aToLeft ) - { - if( !( iInputCapabilities.SupportsSecretText() ) ) - { - if( IsFlagSet( EFlagInsideInlineEditingTransaction ) && - IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) ) - { - CommitInlineEditL(); - } - - MCoeFepAwareTextEditor* fepAwareTextEditor = - iInputCapabilities.FepAwareTextEditor(); - - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - if( (docNavi || TextLayout()) && fepAwareTextEditor ) - { - TTmDocPosSpec pos = DocPos(); - pos.iType = aType; - TTmPosInfo2 info; - if (docNavi) - { - docNavi->GetNextVisualCursorPos( pos, info, aToLeft ); - } - else - { - TextLayout()->TagmaTextLayout().GetNextVisualCursorPos( pos, info, aToLeft ); - } - TCursorSelection curSel( info.iDocPos.iPos, info.iDocPos.iPos ); - fepAwareTextEditor->SetCursorSelectionForFepL( curSel ); - } - } - } - -void CAknFepManager::RemoveRephaCharacterL() - { - MCoeFepAwareTextEditor* fepAwareTextEditor = - iInputCapabilities.FepAwareTextEditor(); - - if( fepAwareTextEditor ) - { - TInt previousCharPos = 0; - TBool leftFlag = GetNextVisualLeftCharacter( previousCharPos ); - - if( !leftFlag ) - { - return; - } - - TCursorSelection curSel; - fepAwareTextEditor->GetCursorSelectionForFep( curSel ); - - TInt lowerPos = curSel.LowerPos(); - if( lowerPos > 1 ) - { - const TInt rephaLength( 2 ); - TBuf previousCharacter; - previousCharacter.FillZ(); - - fepAwareTextEditor-> - GetEditorContentForFep( previousCharacter, - previousCharPos, rephaLength ); - - if (rephaLength == previousCharacter.Length()) - { - if( previousCharacter[0] == TAknFepUiIndicInputManager::RaCharacter( - TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) && - previousCharacter[1] == TAknFepUiIndicInputManager::Virama( - TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) ) - { - curSel.iAnchorPos = previousCharPos; - curSel.iCursorPos = previousCharPos + rephaLength; - - // Remove the repha - - if( IsFlagSet( EFlagInsideInlineEditingTransaction ) && - IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) ) - { - CommitInlineEditL(); - } - StartInlineEditL( curSel, previousCharacter, rephaLength, ETrue ); - UpdateInlineEditL( KNullDesC, 0 ); - CommitInlineEditL(); - - // Go to the visual right position of current ligature as the - // repha has been deleted. - AlignLogicalAndVisualCursorL( TTmDocPosSpec::ELeading, EFalse ); - } - } - } - } - } - -TBool CAknFepManager::IsRephaPresent() - { - TBool result = EFalse; - - MCoeFepAwareTextEditor* fepAwareTextEditor = - iInputCapabilities.FepAwareTextEditor(); - - if( fepAwareTextEditor ) - { - TCursorSelection curSel; - - fepAwareTextEditor->GetCursorSelectionForFep( curSel ); - - TInt previousCharPos = 0; - TBool leftFlag = GetNextVisualLeftCharacter( previousCharPos ); - - if( !leftFlag ) - { - return result; - } - - TInt lowerPos = curSel.LowerPos(); - if( lowerPos > 1 ) - { - const TInt rephaLength( 2 ); - TBuf previousCharacter; - previousCharacter.FillZ(); - - fepAwareTextEditor-> - GetEditorContentForFep( previousCharacter, - previousCharPos, rephaLength ); - - // Verify whether the length of the string is equal to the length - // of repha before doing further checks. - if( previousCharacter.Length() == rephaLength ) - { - if( previousCharacter[0] == TAknFepUiIndicInputManager::RaCharacter( - TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) && - previousCharacter[1] == TAknFepUiIndicInputManager::Virama( - TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) ) - { - result = ETrue; - } - } - } - } - - return result; - } - -TText CAknFepManager::PreviousToPreviousChar( TBool aContextSensitive ) - { - TBuf prevToPrevChar( ESingleCharacter ); - prevToPrevChar.FillZ(); - - if( !aContextSensitive ) - { - TTmDocPosSpec pos = DocPos(); - - // Pos=0 means it is before the first character and there is no previous character - if (pos.iPos > 0 ) - { - if( iInputCapabilities.FepAwareTextEditor() ) - { - iInputCapabilities.FepAwareTextEditor()-> - GetEditorContentForFep( prevToPrevChar, pos.iPos - 1, ESingleCharacter ); - } - } - } - else - { - TCursorSelection curSel; - - MCoeFepAwareTextEditor* fepAwareTextEditor = - iInputCapabilities.FepAwareTextEditor(); - - if( fepAwareTextEditor ) - { - fepAwareTextEditor->GetCursorSelectionForFep( curSel ); - TInt lowerpos = curSel.LowerPos(); - - if( lowerpos > 1 ) - { - fepAwareTextEditor-> - GetEditorContentForFep( prevToPrevChar, lowerpos - 2, ESingleCharacter ); - } - } - } - if (prevToPrevChar.Length()) - return prevToPrevChar[0]; - else - return NULL; - } - -void CAknFepManager::RemoveRakarCharacterL() - { - MCoeFepAwareTextEditor* fepAwareTextEditor = - iInputCapabilities.FepAwareTextEditor(); - - if( fepAwareTextEditor ) - { - TCursorSelection curSel; - - fepAwareTextEditor->GetCursorSelectionForFep( curSel ); - - TInt lowerpos = curSel.LowerPos(); - - if( lowerpos > 1 ) - { - const TInt rakarLength( 2 ); - TBuf buffer; - buffer.FillZ(); - - fepAwareTextEditor-> - GetEditorContentForFep( buffer, lowerpos - rakarLength, rakarLength ); - - if (rakarLength == buffer.Length()) - { - if( buffer[0] == TAknFepUiIndicInputManager::Virama( - TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) && - buffer[1] == TAknFepUiIndicInputManager::RaCharacter( - TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) ) - { - curSel.iAnchorPos = lowerpos - rakarLength; - curSel.iCursorPos = lowerpos; - - // Remove the repha - - if( IsFlagSet( EFlagInsideInlineEditingTransaction ) && - IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) ) - { - CommitInlineEditL(); - } - StartInlineEditL( curSel, buffer, rakarLength, ETrue ); - UpdateInlineEditL( KNullDesC, 0 ); - CommitInlineEditL(); - } - } - } - } - } - -/** - * Returns the status of predictive input. - * - * @since 3.2 - * @return ETrue is available predictive input. - */ -TBool CAknFepManager::IsAbleToChangePrediction() const - { - TBool ret = EFalse; - if (!(iAknEditorFlags & EAknEditorFlagNoT9)) - { - if (iMode == EHiraganaKanji) - { - if (HasJapanesePredictionInputMode()) - { - ret = ETrue; - } - } - else - { - ret = ETrue; - } - } - return ret; - } - -TLanguage CAknFepManager :: GetInputLanguageFromSharedDataInterface() -{ - return ((TLanguage)(iSharedDataInterface->InputTextLanguage())); -} - - -void CAknFepManager::DeactivatePredicitveWordAndMoveCursorL() - { - if (WesternPredictive()) - { - TWesternNaviEvent naviEvent = ERightNaviEvent; - - if (iLanguageCapabilities.iRightToLeftLanguage) - { - naviEvent = ELeftNaviEvent; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - // This function is called at time of Cut/Copy command - // TryCloseUiL will remove the auto completion part - // To adjust the visual cursor position commit the text with - // auto completion part. - if( IsAutoCompleteOn()) - { - TInt tailLength = 0; - iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - - if( tailLength > 0) - { - // Sync the key sequence and editor text. - iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate ); - } - } -#endif - - // Find the visual left/right end of the current word - TTmDocPosSpec pos; - GetAvkonDefinedVisualLimitsOfSelection( - iUncommittedText, naviEvent, pos, NULL ); - - TryCloseUiL(); - - // Position should be dis-ambiguated based on last navigation and direction of blocks. - AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( pos, naviEvent ); - - SetCursorPositionL( pos ); - - iCaseMan->UpdateCase(ENullNaviEvent); - } - } - - -// ----------------------------------------------------------------------------- -// CAknFepManager::EditorCcpuStatus -// -// Returns the Ccpu status of given editor state as a flag combination. -// ----------------------------------------------------------------------------- -// -TInt CAknFepManager::EditorCcpuStatus(CAknEdwinState* aEdwinState) - { - TInt ret = 0; - - if (aEdwinState && aEdwinState->CcpuState()) - { - if (aEdwinState->CcpuState()->CcpuCanCopy()) - { - ret |= ECcpuStatusFlagCanCopy; - } - if (aEdwinState->CcpuState()->CcpuCanCut()) - { - ret |= ECcpuStatusFlagCanCut; - } - if (aEdwinState->CcpuState()->CcpuCanPaste()) - { - ret |= ECcpuStatusFlagCanPaste; - } - } - return ret; - } - -void CAknFepManager::NewLigatureL( const TDesC& aText ) - { - if( !iInputCapabilities.SupportsSecretText() && - ( EditorHasFreeSpace() || - IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) ) ) - { - if ( iFepManState == EAknFepStateInitial ) //multitapping - { - if ( !IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) ) - { - ClearFlag( EFlagLineFeedCharacter ); - StartInlineEditL( aText ); - SetFlag( EFlagInsideMultitapInlineEditingTransaction ); - SetFlag( EFlagInsideInlineEditingTransaction ); - } - } - } - } - - - -// ----------------------------------------------------------------------------- -// CAknFepManager::CancelCcpuMode -// -// Cancels the copy / cut mode initiated from editing options -submenu. -// ----------------------------------------------------------------------------- -// -void CAknFepManager::CancelCcpuMode() - { - iIndicator->SetCopyMode(EFalse); - if (IsCcpuFlagSet(ECcpuStateStartCopy | ECcpuStateCopy | ECcpuStateStartCut | ECcpuStateCut)) - { - iUiInterface->DeleteSoftkeys(); - } - - ResetCcpuFlags(); - } - -// ----------------------------------------------------------------------------- -// CAknFepManager::CancelShiftKeyTimer -// -// Cancels shift key timer. -// ----------------------------------------------------------------------------- -// -void CAknFepManager::CancelShiftKeyTimer() - { - ClearFlag(EFlagShiftKeyDepressed); - if (iShiftKeypressMonitor) - { - iShiftKeypressMonitor->Cancel(); - } - } - -void CAknFepManager::RemoveTextFromEditorL( TInt aNumOfCharacters, - TInt aPos /*= 0*/, - TBool aIsToAlignCursor /* = ETrue */) - { - if( IsFlagSet( EFlagInsideInlineEditingTransaction ) && - IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) ) - { - // Update the inline buffer with NULL descriptor. - // Inline buffer can be only at position 0, i.e. - // where the cursor stands. - if( aNumOfCharacters == UncommittedText().Length() - && aPos == 0 ) - { - UpdateInlineEditL( KNullDesC, 0 ); - } - CommitInlineEditL(); - } - else - { - MCoeFepAwareTextEditor* fepAwareTextEditor = - iInputCapabilities.FepAwareTextEditor(); - - if( fepAwareTextEditor && aPos >= 0 ) - { - // Get the previous cursor position. - TCursorSelection cursorSelPrevious; - fepAwareTextEditor->GetCursorSelectionForFep( cursorSelPrevious ); - - // Place the cursor at the desired position. - TCursorSelection sel( cursorSelPrevious.iCursorPos - aPos, - cursorSelPrevious.iCursorPos - aPos ); - fepAwareTextEditor->SetCursorSelectionForFepL( sel ); - - // Set cursor span on previous N characters - if ( sel.iAnchorPos >= aNumOfCharacters ) - { - sel.iAnchorPos -= aNumOfCharacters; - - // get text to clear - TBuf bufToClear; - fepAwareTextEditor->GetEditorContentForFep( bufToClear, sel.iAnchorPos, - aNumOfCharacters ); - - // delete the character with an inline edit - StartInlineEditL( sel, bufToClear, aNumOfCharacters, EFalse ); - UpdateInlineEditL( KNullDesC, 0 ); - CommitInlineEditL(); - - if( aIsToAlignCursor ) - { - // Move the cursor to the original position considering the - // aNumOfCharacters - cursorSelPrevious.iCursorPos -= aNumOfCharacters; - cursorSelPrevious.iAnchorPos = cursorSelPrevious.iCursorPos; - fepAwareTextEditor->SetCursorSelectionForFepL( cursorSelPrevious ); - } - } - } - } - } - -#ifdef RD_MARATHI - -TBool CAknFepManager::IsChandraAPresentL() - { - TBool result = EFalse; - - MCoeFepAwareTextEditor* fepAwareTextEditor = - iInputCapabilities.FepAwareTextEditor(); - - if( fepAwareTextEditor ) - { - TCursorSelection curSel; - - fepAwareTextEditor->GetCursorSelectionForFep( curSel ); - - TInt lowerpos = curSel.LowerPos(); - - TInt chandraALength = 2; - TBuf<2> buf; - TAknFepUiIndicInputManager::GetChandraA( buf ); - - if( lowerpos > ( chandraALength - 1 ) ) - { - TBuf<2>previousCharacter; - - fepAwareTextEditor->GetEditorContentForFep( - previousCharacter, lowerpos-chandraALength, chandraALength ); - - if( buf.CompareC( previousCharacter ) == 0 ) - { - // Chandra-A found - result = ETrue; - } - } - } - return result; - } - -TBool CAknFepManager::IsEyeLashRaPresentL() - { - TBool result = EFalse; - - MCoeFepAwareTextEditor* fepAwareTextEditor = - iInputCapabilities.FepAwareTextEditor(); - - if( fepAwareTextEditor ) - { - TCursorSelection curSel; - - fepAwareTextEditor->GetCursorSelectionForFep( curSel ); - - TInt lowerpos = curSel.LowerPos(); - - - TBuf<3> buf; - TAknFepUiIndicInputManager::GetEyeLashRa( buf, - (TLanguage)iLanguageCapabilities.iInputLanguageCode ); - TInt eyeLashRaLength = buf.Length(); - - if( ( lowerpos - eyeLashRaLength ) >= 0 ) - { - TBuf<3>previousCharacter; - - fepAwareTextEditor->GetEditorContentForFep( - previousCharacter, lowerpos-eyeLashRaLength, eyeLashRaLength ); - - if( previousCharacter.Length() >=2 && - buf.CompareC( previousCharacter ) == 0 ) - { - // EyeLashRa found - result = ETrue; - } - } - } - return result; - } - -#endif // RD_MARATHI -#ifndef RD_INTELLIGENT_TEXT_INPUT -void CAknFepManager::RemoveSuggestedCompletionL() -{ - if(iPtiEngine->InputMode() == EPtiEngineWordCompletion && - IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - TBuf currentText = iPtiEngine->CurrentWord(); - if(currentText.Length() > iPtiEngine->CurrentInputSequence().Length()) - { - currentText.SetLength(iPtiEngine->CurrentInputSequence().Length()); - iPtiEngine->SetCurrentWord(currentText); - UpdateInlineEditL(currentText,currentText.Length()); - TransferFepStateToEditorL(); - } - - } -} -#endif //RD_INTELLIGENT_TEXT_INPUT - - -// ----------------------------------------------------------------------------- -// CAknFepManager::ExtendedInputCapabilities -// -// Returns the extended input bapabilities bitvector. -// ----------------------------------------------------------------------------- -// -TUint CAknFepManager::ExtendedInputCapabilities() const - { - MObjectProvider* mop = iInputCapabilities.ObjectProvider(); - - if ( mop && iInputCapabilities.FepAwareTextEditor() )//IsFepAwareTextEditor() - { - CAknExtendedInputCapabilities* extendedInputCapabilities = - mop->MopGetObject( extendedInputCapabilities ); - - if ( extendedInputCapabilities ) - { - return extendedInputCapabilities->Capabilities(); - } - } - - return 0; - } - - -#ifdef RD_SCALABLE_UI_V2 -// ----------------------------------------------------------------------------- -// CAknFepManager::LaunchStylusCcpuMenuL -// -// Displays stylus ccpu-menu. -// ----------------------------------------------------------------------------- -// -void CAknFepManager::LaunchStylusCcpuMenuL(TPoint &aClickPoint) - { - const TInt KItemCopy = 0x01; - const TInt KItemCut = 0x02; - const TInt KItemPaste = 0x04; - - delete iStylusCcpuMenu; - iStylusCcpuMenu = NULL; - - // It is assume that this method is called only if there is selected - // text in suitable editor, ie. there will be at least "copy"-item available. - TInt items = KItemCopy; - - CAknEdwinState* editorState = EditorState(); - if (editorState && editorState->CcpuState()) - { - if (editorState->CcpuState()->CcpuCanCut()) - { - items |= KItemCut; - } - if (editorState->CcpuState()->CcpuCanPaste()) - { - items |= KItemPaste; - } - } - - if (items) - { - TBuf itemStr; - iStylusCcpuMenu = iUiInterface->NewStylusPopUpMenuL(this, aClickPoint); - - if (items & KItemCopy) - { - StringLoader::Load(itemStr, R_AKNFEP_SOFTKEY_COPY); - iStylusCcpuMenu->AddMenuItemL(itemStr.Mid(1, itemStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength), EEikCmdEditCopy); - } - if (items & KItemCut) - { - itemStr.Zero(); - StringLoader::Load(itemStr, R_AKNFEP_SOFTKEY_CUT); - iStylusCcpuMenu->AddMenuItemL(itemStr.Mid(1, itemStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength), EEikCmdEditCut); - } - if (items & KItemPaste) - { - itemStr.Zero(); - StringLoader::Load(itemStr, R_AKNFEP_STYLUS_CCPU_MENU_PASTE); - iStylusCcpuMenu->AddMenuItemL(itemStr.Mid(1, itemStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength), EEikCmdEditPaste); - } - - SetCcpuFlag(ECcpuStateCopy); // This forces ProcessCommandL to handle the events. - iStylusCcpuMenu->SetPosition(aClickPoint); - iStylusCcpuMenu->ShowMenu(); - } - } -#endif - -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool CAknFepManager::IsFnKeyMappedL(TPtiKeyboardType aKeyboardType) - { - MPtiLanguage *lang = NULL; - RArray < TPtiNumericKeyBinding > keybinding; - TBool ret = EFalse; - if(iPtiEngine) - { - lang = iPtiEngine->CurrentLanguage(); - if(lang) - { - iPtiEngine->GetNumericModeKeysForQwertyL(lang->LanguageCode(), keybinding, aKeyboardType); - TInt numericKeysCount = keybinding.Count(); - while ( numericKeysCount-- ) - { - TPtiNumericKeyBinding numKeyBind = keybinding[numericKeysCount]; - if ( numKeyBind.iCase == EPtiCaseFnLower || numKeyBind.iCase == EPtiCaseFnUpper) - { - ret = ETrue; - break; - } - } - } - } - keybinding.Reset(); - return ret; - } -TBool CAknFepManager::IsFnKeyMapped() - { - return iIsFnKeyMapped; - } - -void CAknFepManager::SetFnKeyMappingState() - { - TRAP_IGNORE(iIsFnKeyMapped = IsFnKeyMappedL()); - } - -TBool CAknFepManager::KeyMapsDifferentCharacterWithFn( TPtiKey aKey ) const - { - // we are interested only about the first mapped character => buffer length 1 is adequate - TBuf<1> lowerMapping; - TBuf<1> upperMapping; - TBuf<1> lowerFnMapping; - TBuf<1> upperFnMapping; - iPtiEngine->MappingDataForKey( aKey, lowerMapping, EPtiCaseLower ); - iPtiEngine->MappingDataForKey( aKey, upperMapping, EPtiCaseUpper ); - iPtiEngine->MappingDataForKey( aKey, lowerFnMapping, EPtiCaseFnLower ); - iPtiEngine->MappingDataForKey( aKey, upperFnMapping, EPtiCaseFnUpper ); - - if ( lowerFnMapping.Length() ) - { - if ( !lowerMapping.Length() || // < key maps character only with Fn - lowerMapping[0] != lowerFnMapping[0] ) // < Fn changes the character of the key - { - return ETrue; - } - } - else if ( upperFnMapping.Length() ) - { - if ( !upperMapping.Length() || // < key maps character only with Fn - upperMapping[0] != upperFnMapping[0] ) // < Fn changes the character of the key - { - return ETrue; - } - } - - return EFalse; // The key doesn't have symbol behind Fn or the symbol is the same as without Fn - } -#endif //RD_INTELLIGENT_TEXT_INPUT -MAknFepDocumentNavigation* CAknFepManager::AknFepDocumentNavigation() const - { - MAknFepDocumentNavigation* navi = NULL; - - MObjectProvider* mop = iInputCapabilities.ObjectProvider(); - if ( mop ) - { - mop->MopGetObject( navi ); - } - - return navi; - } - -CAknFepUIInterface* CAknFepManager::UiInterface() - { - return iUiInterface; - } - -void CAknFepManager::AlignLogicalAndVisualCursorL() - { - TBool isIndicLang = - TAknFepUiIndicInputManager:: - IsIndicLangauge( TLanguage( iLanguageCapabilities.iInputLanguageCode ) ); - - if( isIndicLang ) - { - TTmDocPosSpec pos = DocPos(); - pos.iType = TTmDocPosSpec::ETrailing; - TTmPosInfo2 info; - TTmLineInfo lineInfo; - - TBool findAvailable = EFalse; - - MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation(); - - if ( docNavi ) - { - docNavi->FindDocPos( pos, info, lineInfo ); - findAvailable = ETrue; - } - else - { - CTextLayout* textLayout = TextLayout(); - if ( textLayout ) - { - textLayout->TagmaTextLayout().FindDocPos( pos, info, lineInfo ); - findAvailable = ETrue; - } - } - - if ( findAvailable ) - { - TCursorSelection sel( info.iDocPos.iPos, info.iDocPos.iPos ); - iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel); - } - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT -TKeyResponse CAknFepManager::HandleFnKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aEventCode ) - { - TKeyResponse ret; - -#ifdef __HALF_QWERTY_KEYPAD - if ( IsFlagSet( EFlagShiftKeyDepressed ) && - ( EPtiKeyboardHalfQwerty == KeyboardLayout() )&& - ( aEventCode != EEventKeyUp ) ) - { - return EKeyWasNotConsumed; - } -#endif - - if (!iCurrentFepUI->IsValidFnKeyPress() && EStdKeyRightFunc == aKeyEvent.iScanCode) - { - TBool Uiret = ETrue; - if (EEventKeyDown == aEventCode ) - { - Uiret = FepUI()->HandleKeyL(EKeyRightFunc, EShortKeyPress); - } - - if (Uiret) - { - ret = EKeyWasConsumed; - } - else - { - ret = iFnKeyManager->HandleFnKeyEventL( aKeyEvent, aEventCode, - iInputCapabilities ) ; - } - } - else - { - - ret = iFnKeyManager->HandleFnKeyEventL( aKeyEvent, aEventCode, - iInputCapabilities ) ; - } - if(IsHybridAplhaEditor() && !iHybridAplphaChangedToAlphanumeric) - { - if(FnKeyState() != CAknFepFnKeyManager::EFnKeyLock) - iHybridAplphaChangedToAlphanumeric = ETrue; - } - - return ret; - } -#endif //RD_INTELLIGENT_TEXT_INPUT - -// ----------------------------------------------------------------------------- -// CAknFepManager::HasJapanesePredictionInputMode -// Has Japanese prediction input mode in PtiEngine -// ----------------------------------------------------------------------------- -// -TBool CAknFepManager::HasJapanesePredictionInputMode() const - { - // Is it supported Japanese predictive input - TBool ret = EFalse; - MPtiLanguage* ptilang = iPtiEngine->GetLanguage(ELangJapanese); - if ( ptilang - && ( (!iQwertyInputMode && ptilang->HasInputMode(EPtiEngineHiraganaKanjiPredictive)) - ||(iQwertyInputMode && ptilang->HasInputMode(EPtiEngineHiraganaKanjiPredictiveQwerty)) ) ) - { - ret = ETrue; - } - return ret; - } -#ifdef RD_HINDI_PHONETIC_INPUT -void CAknFepManager::HandleIndicCaseL() - { - iHashKeyMan->HandleSetIndicStateL(); - } -#endif - -// ----------------------------------------------------------------------------- -// CAknFepManager::IsCursorAtEndOfWord -// -// ----------------------------------------------------------------------------- -// -TBool CAknFepManager::IsCursorAtEndOfWord() - { - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText); - TInt origPos = iUncommittedText.iCursorPos; - - FindEndOfWord(iUncommittedText.iCursorPos); - - if (origPos != iUncommittedText.iCursorPos) - { - return EFalse; - } - - return ETrue; - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -TInt CAknFepManager::GetCurrentCase() - { - TCase returnCase; - - switch( iCaseMan->CurrentCase() ) - { - case EAknEditorUpperCase: - case EAknEditorTextCase: - { - returnCase = EUpperCase; - } - break; - - case EAknEditorLowerCase: - { - returnCase = ELowerCase; - } - break; - - default: - returnCase = ELowerCase; - break; - } - return returnCase; - } -// Predictive QWERTY changes (XT9) ----> - -void CAknFepManager::GetCandidatesL( CDesCArray& aArray, TInt& aActiveIdx ) - { - iPtiEngine->GetCandidateListL(aArray); - iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &aActiveIdx ); - } - -void CAknFepManager::GetUpdateCandidatePositionL(TRect& aRect) - { - if(iCandidatePopup && iFepFullyConstructed && iPtiEngine) - { - //Now we read the position of the inline text - TPoint inlineEditorTl; - TPoint inlineEditorBr; - TInt height; - TInt ascent; - TInt documentOffset = iPtiEngine->CurrentWord().Length(); - // Popup Position for RTL - if(iLanguageCapabilities.iRightToLeftLanguage) - documentOffset = 0; - // Popup Position for RTL - GetScreenCoordinatesL(inlineEditorTl, height, ascent, documentOffset); - inlineEditorTl.iY -= height; - GetScreenCoordinatesL(inlineEditorBr, height, ascent); - aRect.iTl = inlineEditorTl; - aRect.iBr = inlineEditorBr; - } - } - -TBool CAknFepManager::IsRightToLeftLanguage() - { - return iLanguageCapabilities.iRightToLeftLanguage ; - } - -/** -* Setter for the advanced predictive typing correction. -* @param aLevel The level to be set. -*/ -void CAknFepManager::SetTypingCorrectionLevel(TInt aLevel) - { - iTypingCorrectionLevel = aLevel; - - if(iFepFullyConstructed) - { - TPtiErrorCorrectionLevel correctionLevel = (TPtiErrorCorrectionLevel)aLevel; - TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandSetCorrectionLevel, &correctionLevel )); - } - } - -/** -* Resetter for the advanced predictive Number Candidate setting. -* @param aValue The value to be set. -*/ -void CAknFepManager::SetNumberCandidateState(TInt aValue) - { - if(aValue == 0) - iIsNumberCandidateShown = EFalse; - else if(aValue == 1) - iIsNumberCandidateShown = ETrue; - - if(iFepFullyConstructed) - { - TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandSetNumberCandidateStatus, - &iIsNumberCandidateShown )); - } - } - -void CAknFepManager::RemoveSuggestedAdvanceCompletionL() - { - if( IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) && - iPtiEngine->CurrentWord().Length() ) - { - TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandUserActionShorten )); - TPtrC currentText = iPtiEngine->CurrentWord(); - UpdateInlineEditL( currentText, currentText.Length() ); - } - } -/** -* Setes the current state from GS to the local state -*/ - -void CAknFepManager::SetAutoCompletionState(TInt aValue) - { - if(aValue == 0) - { - iIsAutoCompleteOn = EFalse; - } - else if(aValue == 1) - { - iIsAutoCompleteOn = ETrue; - } - - if(iFepFullyConstructed) - { - if(iIsAutoCompleteOn) - { - TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandEnableAutoCompletion )); - } - else - { - TInt tailLength = 0; - TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength )); - if(tailLength > 0) - { - // send an update to engine to signify change in autocompletion from on to off while tail exists - // This will set EPtiXt9FlagAutoCompletionSetOnToOff flag as true in engine - TInt value = 1; - TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandAutoCompletionOnToOff,&value)); - } - - - TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandDisableAutoCompletion )); - } - } - } - -/** -* Sets the primary candidate from GS to the local state -*/ - -void CAknFepManager::SetPrimaryCandidate(TInt aValue) - { - if(aValue == 0) - iPrimaryCandidate = ETrue; - else if(aValue == 1) - iPrimaryCandidate = EFalse; - if(iFepFullyConstructed) - { - TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandSetProactiveCorrection, - &iPrimaryCandidate )); - } - } -#endif //RD_INTELLIGENT_TEXT_INPUT - -CAknFepPluginManager* CAknFepManager::PluginUIManager() - { -#ifdef RD_SCALABLE_UI_V2 - - return iFepPluginManager; -#else - return NULL; -#endif //RD_SCALABLE_UI_V2 - } - -// add for phrase creation -MZhuyinKeyHandler* CAknFepManager::ZhuyinKeyHandler() - { - return iZhuyinKeyHandler; - } -// add for phrase creation -CAknFepZhuyinAnalyser* CAknFepManager::ZhuyinAnalyser() - { - return iZhuyinAnalyser; - } - -#ifdef RD_SCALABLE_UI_V2 -void CAknFepManager::UpdateTouchCaseMode() - { - if (iFepFullyConstructed && - iFepPluginManager - // case should be updated even if current input mode is none because iPreviousCoseMode - // still need to be updated. - /*&& - iFepPluginManager->PluginInputMode() != EPluginInputModeNone*/) - { - iFepPluginManager->UpdateCaseMode(); - } - } -#endif// RD_SCALABLE_UI_V2 - -void CAknFepManager::SetStopProcessFocus(TBool aStop, TBool aClose) - { - iClosePeninputUi = aClose; - iStopProcessFocus = aStop; - if (!aStop) - { - HandleChangeInFocus(); - } - } - -TBool CAknFepManager::StopProcessFocus() - { - return iStopProcessFocus; - } - -TBool CAknFepManager::CloseUiOnFocusChange() - { - return iClosePeninputUi; - } -void CAknFepManager::HandleCopyCutStateL() -{ - if (IsCcpuFlagSet(ECcpuStateCopy | ECcpuStateCut)) - { - TCursorSelection selection; - iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(selection); - TBool update; - if (selection.Length() > 0) - { - if (!IsCcpuFlagSet(ECcpuStateButton)) - { - __ASSERT_DEBUG(iUiInterface->SoftkeysExist(), - AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor)); - if (IsCcpuFlagSet(ECcpuStateCopy)) - { - update = UpdateCBALabelL(ELeftSoftkeyIndex, EEikCmdEditCopy, R_AKNFEP_SOFTKEY_COPY); - update |= UpdateCBALabelL( EMiddleSoftkeyIndex, EEikCmdEditCopy, R_AVKON_SOFTKEY_SELECT_TEXT ); - } - else - { - update = UpdateCBALabelL(ELeftSoftkeyIndex, EEikCmdEditCut, R_AKNFEP_SOFTKEY_CUT); - update |= UpdateCBALabelL( EMiddleSoftkeyIndex, EEikCmdEditCut, R_AVKON_SOFTKEY_SELECT_TEXT ); - } - if (update) - { - iUiInterface->DrawSoftkeysNow(); - } - SetCcpuFlag(ECcpuStateButton); - } - } - else if (IsCcpuFlagSet(ECcpuStateButton)) - { - ClearCcpuFlag(ECcpuStateButton); - update = EFalse; - update = UpdateCBALabelL(ELeftSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY); - update |= UpdateCBALabelL( EMiddleSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY ); - if (update) - { - iUiInterface->DrawSoftkeysNow(); - } - } - } -} -#ifdef RD_SCALABLE_UI_V2 -TInt GetForegroundTaskAppWgId() - { - TApaTaskList tList(CCoeEnv::Static()->WsSession()); - - TApaTask task = tList.FindByPos(0); - return task.WgId(); - } - -void CAknFepManager::DimInputmodeTouchMenuItems(CAknFepUiInterfaceMenuPane* aMenuPane) - { - DimEditMenuModeItems(aMenuPane); - - if ( IsChineseInputLanguage() ) - { - DoChineseTouchMenu(aMenuPane); - } - else if ( iLanguageCapabilities.iInputLanguageCode == ELangJapanese) - { - DoJapaneseMenu(aMenuPane); - } - else - { - DoWesternTouchMenu(aMenuPane); - } - } -#endif - -void CAknFepManager::DimInputmodeMenuItems(CAknFepUiInterfaceMenuPane* aMenuPane) - { - DimEditMenuModeItems(aMenuPane); - - if ( IsChineseInputLanguage() ) - { - DoChineseMenu(aMenuPane); - } - else if ( iLanguageCapabilities.iInputLanguageCode == ELangJapanese) - { - DoJapaneseMenu(aMenuPane); - } - else - { - DoWesternMenu(aMenuPane); - } - } - -void CAknFepManager::HandleCopyCutEventL(TInt aCommandId) - { - if (iCcpuMode != ECcpuStateNone) - { - ResetCcpuFlags(); - iUiInterface->DeleteSoftkeys(); - - SetCcpuFlag(ECcpuStatePosted); - -#ifdef RD_SCALABLE_UI_V2 - if (aCommandId == EEikCmdEditCopy) - { - // Send copy event to AknCcpuSupport. - CCoeEnv::Static()->SimulateKeyEventL(KAknCcpuCopyEvent, EEventKey); - } - else - { - // Send cut event to AknCcpuSupport. - CCoeEnv::Static()->SimulateKeyEventL(KAknCcpuCutEvent, EEventKey); - } -#else -/*As part of build warnings commenting this perticular code it might require when touch is enabled. - if (aCommandId == EEikCmdEditCopy) - { - // Send copy-event to editor. - CCoeEnv::Static()->SimulateKeyEventL(KEditorCopyEvent, EEventKey); - } - else - { - // send cut-event to editor. - CCoeEnv::Static()->SimulateKeyEventL(KEditorCutEvent, EEventKey); - } - */ -#endif // RD_SCALABLE_UI_V2 - - if (iInputCapabilities.FepAwareTextEditor()) - { - // update indicators only if this is editable component. - iIndicator->SetCopyMode(EFalse); - UpdateIndicators(); - } -#ifdef RD_SCALABLE_UI_V2 - HandleChangeInFocus(); -#endif - - } - - } - -TInt CAknFepManager::FepShowVkbPreviewStatus() - { - return iSharedDataInterface->FepShowVkbPreviewStatus(); - } - -void CAknFepManager::InitPreviewMenuPane(CAknFepUiInterfaceMenuPane* aMenuPane) - { - if (FepShowVkbPreviewStatus() > 0) - { - aMenuPane->GetMenuPane()->SetItemButtonState(EPenInputCmdPreviewOn, - EEikMenuItemSymbolOn ); - } - else - { - aMenuPane->GetMenuPane()->SetItemButtonState(EPenInputCmdPreviewOff, - EEikMenuItemSymbolOn ); - } - } - -void CAknFepManager::SynCCPSoftKey() - { - TRAP_IGNORE(HandleCopyCutStateL()); - } - -TInt CAknFepManager::PluginInputMode() const -{ -#ifdef RD_SCALABLE_UI_V2 - return iFepPluginManager ? iFepPluginManager->PluginInputMode() : EPluginInputModeNone; -#else - return EPluginInputModeNone; -#endif -} - -void CAknFepManager::HandleEndKeyL() - { -#ifdef RD_SCALABLE_UI_V2 - - if (iFepPluginManager) - { - return; - } - - RWsSession &ws = CCoeEnv::Static()->WsSession(); - //TInt wgId =ws.GetFocusWindowGroup(); - CApaWindowGroupName* wg = CApaWindowGroupName::NewLC(ws, - CCoeEnv::Static()->WsSession().GetFocusWindowGroup()); - - TUid id = wg->AppUid(); - CleanupStack::PopAndDestroy(wg); - - if (0x10207218 == id.iUid || - 0x10281EF2 == id.iUid) - { - RPeninputServer iPenInputServer; - - TInt err = iPenInputServer.Connect(); - if(err == KErrNone) - { - iPenInputServer.SetForeground(ETrue); - iPenInputServer.ActivateLayout( EFalse ); - iPenInputServer.HandleCommand(ECmdPenInputWindowClose); - - iPenInputServer.ClearServerEvent(); - iPenInputServer.LoseForeground(); - iPenInputServer.Close(); - } - } -#endif //RD_SCALABLE_UI_V2 - } -void CAknFepManager::NeedDisableKeySound(const TKeyEvent& aKeyEvent, TEventCode aEventCode) - { -#ifdef RD_SCALABLE_UI_V2 - TInt keyCode = aKeyEvent.iScanCode; - TBool interestKey = EFalse; - if ( keyCode == EPtiKey0 || - keyCode == EPtiKey1 || - keyCode == EPtiKey2 || - keyCode == EPtiKey3 || - keyCode == EPtiKey4 || - keyCode == EPtiKey5 || - keyCode == EPtiKey6 || - keyCode == EPtiKey7 || - keyCode == EPtiKey8 || - keyCode == EPtiKey9 || - keyCode == EStdKeyDownArrow || - keyCode == EStdKeyRightArrow || - keyCode == EStdKeyLeftArrow || - keyCode == EStdKeyUpArrow || - keyCode == EStdKeyBackspace - ) - { - interestKey = ETrue; - } - if( interestKey && iFepPluginManager && - iFepPluginManager->PluginInputMode() == EPluginInputModeItut) - { - if( aEventCode == EEventKeyDown ) - { - static_cast(CEikonEnv::Static()->EikAppUi())-> - DisableNextKeySound( keyCode ); - } - else if( aEventCode == EEventKey ) - { - #ifdef RD_TACTILE_FEEDBACK - MTouchFeedback::Instance()-> - InstantFeedback(ETouchFeedbackSensitive); - #endif - } - } -#endif - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CAknFepManager::SetComposChrFlag( TBool aFlag ) - { - iComposChrFlag = aFlag; - } -TBool CAknFepManager::GetComposChrFlag( ) - { - return iComposChrFlag; - } -#endif - -// add for phrase creation User db view -void CAknFepManager::AddUserDBDlgItemL( CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex ) - { - CAknFepUiInterfaceMenuPane::SItemData mData; - - TBuf langStr; - TInt Inputlangindex; - if (!aMenuPane->MenuItemExists(EAknCmdUserDBDlg, Inputlangindex)) - { - StringLoader::Load(langStr, R_AKNFEP_OPTIONS_USER_DB_DLG); - - mData.iCommandId = EAknCmdUserDBDlg; - mData.iCascadeId = 0; - mData.iFlags = 0; - mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength)); - - aMenuPane->InsertMenuItemL(mData, aIndex); - } - } -// add for phrase creation -void CAknFepManager::LaunchUserDBDlgL( ) - { - TInt itemIndex = 0; - - //Change title text - CEikStatusPane* statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane(); - CAknTitlePane* title = static_cast< CAknTitlePane* >( - statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle) ) ); - - //Save the old title tet - HBufC* Oldtitletext = title->Text()->AllocLC(); - //Load the new title text - HBufC* titletext = StringLoader::LoadLC( R_AKNFEP_USER_DB_MANAGEMENT_TITLE ); - //Set title to the new text - title->SetTextL( *titletext ); - - CDesCArray* items = new( ELeave ) CDesCArrayFlat( KSelectItemSize ); - CleanupStack::PushL( items ); - CArrayFix* selectedItems = new( ELeave ) CArrayFixFlat( KSelectItemSize ); - CleanupStack::PushL( selectedItems ); - - CAknToolbar* toolbar = iAvkonAppUi->CurrentFixedToolbar(); - - if( toolbar && toolbar->IsShown() && toolbar->CountComponentControls()>0 ) - { - toolbar->SetDimmed( ETrue ); - toolbar->DrawDeferred(); - } - - TUid naviPaneUid; - naviPaneUid.iUid = EEikStatusPaneUidNavi; - - CEikStatusPaneBase::TPaneCapabilities subPane = - statusPane->PaneCapabilities(naviPaneUid); - // if we can access the navigation pane - if (subPane.IsPresent() && subPane.IsAppOwned()) - { - CAknNavigationControlContainer - * naviPane = - (CAknNavigationControlContainer *) statusPane->ControlL(naviPaneUid); - iTapGroup = naviPane->CreateTabGroupL(); - iTapGroup->MakeVisible( EFalse ); - naviPane->PushL( *iTapGroup ); - } - - iUserdbdlg = CAknFepUserdbDlg::NewL( itemIndex, - selectedItems, items, R_AKNFEP_USERDB_DLG_MENUBAR, iPtiEngine, this ); - - iIsUserdbdlgActive = 1; - - iUserdbdlg->RunLD(); - - iIsUserdbdlgActive = 0; - - // if we can access the navigation pane - if (subPane.IsPresent() && subPane.IsAppOwned()) - { - - CAknNavigationControlContainer - * naviPane = - (CAknNavigationControlContainer *) statusPane->ControlL(naviPaneUid); - naviPane->Pop(); - delete iTapGroup; - iTapGroup = NULL; - } - - //Set the title to old text - title->SetTextL( *Oldtitletext ); - - if( toolbar ) - { - toolbar->SetDimmed( EFalse ); - toolbar->DrawNow(); - } - - CleanupStack::PopAndDestroy( selectedItems ); - CleanupStack::PopAndDestroy( items ); - CleanupStack::PopAndDestroy( titletext ); - CleanupStack::PopAndDestroy( Oldtitletext ); - iUserdbdlg = NULL; - } -// add for phrase creation -TBool CAknFepManager::IsPinyinPhraseCreation() const - { - return iPinyinPhraseCreation; - } - -void CAknFepManager::PinyinPhraseCreation( TBool aPinyinPhraseCreation ) - { - if ( iPinyinPhraseCreation != aPinyinPhraseCreation ) - { - iPinyinPhraseCreation = aPinyinPhraseCreation; - } - } -// add for phrase creation -TBool CAknFepManager::IsPhraseCreation() const - { - return iPhraseCreation; - } -// add for phrase creation -void CAknFepManager::PhraseCreation( TBool aPhraseCreation ) - { - if ( iPhraseCreation != aPhraseCreation ) - { - iPhraseCreation = aPhraseCreation; - } - } -// add for phrase creation -TBool CAknFepManager::IsEntryPhrase() const - { - return iEntryPhrase; - } -// add for phrase creation -void CAknFepManager::EntryPhrase( TBool aEntryPhrase ) - { - if ( iEntryPhrase != aEntryPhrase ) - { - iEntryPhrase = aEntryPhrase; - } - } -// add for phrase creation -void CAknFepManager::EnableKeyStar( TBool aEnable ) - { - if ( iKeyStar != aEnable ) - { - iKeyStar = aEnable; - } - } -// add for phrase creation -TBool CAknFepManager::IsEnableKeyStar( ) const - { - return iKeyStar; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - - -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -/** -* @return ETrue If the number entry with long key press is supported on QWERTY keyboard. -*/ -TBool CAknFepManager::LongPressNumberEntryOnQwerty() const - { - TBool value = EFalse; - if ( iSharedDataInterface ) - { - value = iSharedDataInterface->LongPressNumberEntryOnQwerty(); - } - return value; - } - -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - - -void CAknFepManager::MultitapThroughSCTCharL(TCallBack aCallBack) - { - - TInt res = GetNumericSCTResID(); - - if(!res) - { - return; - } - - if(!iNumericResourceTimer) - { - iNumericResourceTimer = CChrMultiTapTimer::NewL(aCallBack); - } - - if(!iResourceString || iNumericResourceId !=res ) - { - // either the resource string has not be created or the resource ID has changed - if(iResourceString) - { - delete iResourceString; - iResourceString = NULL; - } - iNumericResourceId = res; - TResourceReader reader; - CEikonEnv::Static()->CreateResourceReaderLC(reader,iNumericResourceId); - reader.ReadInt32(); // skip sct id - iResourceString = reader.ReadHBufC16L(); - CleanupStack::PopAndDestroy(); - } - if(!iResourceString) - { - return; - } - if(iNumericResourceTimer->IsActive()) - { - if( iChrCharIndex == iResourceString->Length() ) - { - iChrCharIndex = 0; - } - - iNumericResourceTimer->Cancel(); - iNumericResourceTimer->After(KChrKeyMultitapTimeout); - } - else - { - iChrCharIndex = 0; - iNumericResourceTimer->After(KChrKeyMultitapTimeout); - } - TBuf<1> buf; - buf.Append((*iResourceString)[iChrCharIndex]); - NewCharacterL(buf); - iChrCharIndex++; - if (iResourceString->Length() == 1) - { - NumericResourceMultiTapTimerTimeoutL(); - } - - } -TBool CAknFepManager::NumericResourceMultiTapTimerTimeoutL() - { - if(iNumericResourceTimer->IsActive()) - { - iNumericResourceTimer->Cancel(); - if(IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - CommitInlineEditL(); - return ETrue; - } - } - return EFalse; - } - -//------------------------------------------------------------------- - -// -// CChrMultiTapTimer -// - -// --------------------------------------------------------------------------- -// CChrMultiTapTimer::NewL -// -// --------------------------------------------------------------------------- -// -CChrMultiTapTimer* CChrMultiTapTimer::NewL(TCallBack aCallback) - { - CChrMultiTapTimer* self = new(ELeave)CChrMultiTapTimer(aCallback); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); // self - return self; - } - - -// --------------------------------------------------------------------------- -// CChrMultiTapTimer::CChrMultiTapTimer -// -// --------------------------------------------------------------------------- -// -CChrMultiTapTimer::CChrMultiTapTimer(TCallBack aCallback) -:CTimer(EPriorityStandard), iCallback(aCallback) - { - } - -// --------------------------------------------------------------------------- -// CChrMultiTapTimer::ConstructL -// -// --------------------------------------------------------------------------- -// -void CChrMultiTapTimer::ConstructL() - { - CTimer::ConstructL(); - CActiveScheduler::Add(this); - } - -// --------------------------------------------------------------------------- -// CChrMultiTapTimer::After -// -// --------------------------------------------------------------------------- -// -void CChrMultiTapTimer::After(TTimeIntervalMicroSeconds32 aInterval) - { - if (IsActive()) - { - Cancel(); - } - CTimer::After(aInterval); - } - -// --------------------------------------------------------------------------- -// CChrMultiTapTimer::RunL -// -// --------------------------------------------------------------------------- -// -void CChrMultiTapTimer::RunL() - { - iCallback.CallBack(); - } - -TBool CAknFepManager::IsLanguageSupportPrediction() - { - TBool isLanguagugeSupportsPrediction = EFalse; - switch(iKeyboardType) - { - case EPtiKeyboardHalfQwerty: -#ifdef __HALF_QWERTY_KEYPAD - isLanguagugeSupportsPrediction = (iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive); -#endif - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - isLanguagugeSupportsPrediction = (iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternQwertyPredictive); - break; - case EPtiKeyboardNone: - case EPtiKeyboard12Key: - isLanguagugeSupportsPrediction = (!iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternPredictive); - break; - default: - isLanguagugeSupportsPrediction = (!iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternPredictive); - break; - } - return isLanguagugeSupportsPrediction; - } -#endif //RD_INTELLIGENT_TEXT_INPUT - -TBool CAknFepManager::IsAllowedKeymappingForNumberMode(TChar aChar) const - { - TBool response = EFalse; - - - switch ( iAknEditorNumericKeymap ) - { - case EAknEditorStandardNumberModeKeymap: - case EAknEditorFixedDiallingNumberModeKeymap: - case EAknEditorSATNumberModeKeymap: - case EAknEditorSATHiddenNumberModeKeymap: - { - response = (aChar == '#'); - } - break; - case EAknEditorCalculatorNumberModeKeymap: - case EAknEditorConverterNumberModeKeymap: - { - TLocale tLoc; - response = (aChar == tLoc.DecimalSeparator()); - } - break; - case EAknEditorToFieldNumberModeKeymap: - { - response = (aChar == ';'); - } - break; - case EAknEditorPlainNumberModeKeymap: - case EAknEditorReservedInternalUseKeymap: - default: - break; - } - - return response; - } -/** - * Return wether ipnut mode is change by press shift+space. - * This is for half-qwerty. - */ -TBool CAknFepManager::IsChangeModeByShiftAndSpace() - { - return iShiftAndSpace; - } - -/** - * Set wether ipnut mode is change by press shift+space. - * This is for half-qwerty. - */ -void CAknFepManager::SetChangeModeByShiftAndSpace( TBool aFlag ) - { - iShiftAndSpace = aFlag; - } - -void CAknFepManager::HideExactWordPopUp() - { - iExactWordPopupContent->HidePopUp(); - } - -TBool CAknFepManager::IsExactWordPopUpShown() - { -return iExactWordPopupContent->IsPopUpVisible(); - } -void CAknFepManager::StopDisplayingMenuBar() - { - if (iEditMenuBar) - { - iEditMenuBar->StopDisplayingMenuBar(); - iEditMenuBar = NULL; - } -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - if (iOptionsMenuBar) - { - iOptionsMenuBar->StopDisplayingMenuBar(); - iOptionsMenuBar = NULL; - } -#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - } - -void CAknFepManager::SetQwertyModeToInputcapbility() - { - if ( iSharedDataInterface->QwertyInputMode() ) - { - SetExtendedInputCapabilities( ExtendedInputCapabilities() | - CAknExtendedInputCapabilities::EInputEditorQwertyInputActive ); - } - else - { - SetExtendedInputCapabilities( ExtendedInputCapabilities() & - ~CAknExtendedInputCapabilities::EInputEditorQwertyInputActive ); - } - } -void CAknFepManager::SetExtendedInputCapabilities( TUint aCapabilities) - { - MObjectProvider* mop = iInputCapabilities.ObjectProvider(); - - if ( mop && iInputCapabilities.FepAwareTextEditor() )//IsFepAwareTextEditor() - { - CAknExtendedInputCapabilities* extendedInputCapabilities = - mop->MopGetObject( extendedInputCapabilities ); - - if ( extendedInputCapabilities ) - { - extendedInputCapabilities->SetCapabilities( aCapabilities ); - } - } - - return; - } - -void CAknFepManager::PrepareFepAfterDialogExitL(TUid aFepUid) - { - // This ensures that on 3rd party fep change we do not have access to other fep variables - if (aFepUid != CCoeEnv::Static()->FepUid()) - { - // In case the fep has changed, then leave - User::Leave(KErrNone); - } - // Once the editor which launches a dialog is destroyed, this flag is set - // In case we have any dialog launched we leave as the underneath editor is - // destroyed - if (IsExtendedFlagSet(EExtendedFlagEdwinEditorDestroyed)) - { - if(!iFepAwareDialogParentEditor) - { - // For Eg: Messaging editor launches spell query which inturn launches - // SCT. Then don't clear the flag once we dismiss SCT because we even - // need to dismiss spell query dialog. - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - } - User::Leave(KErrNone); - } - if(!iFepAwareDialogParentEditor) - { - ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed); - } - } - -void CAknFepManager::PrepareFepForFepAwareDialogLaunch() - { - iFepAwareDialogParentEditor = EditorState(); - SetExtendedFlag(EExtendedFlagFepAwareDialogLaunched); - } - -void CAknFepManager::PrepareFepAfterFepAwareDialogExitL(TUid aFepUid) - { - // This ensures that on 3rd party fep change we do not have access to other fep variables - if (aFepUid != CCoeEnv::Static()->FepUid()) - { - // In case the fep has changed, then leave - User::Leave(KErrNone); - } - iFepAwareDialogParentEditor = NULL; - ClearExtendedFlag(EExtendedFlagFepAwareDialogLaunched); - } - -void CAknFepManager::ConvertCharToKey(TChar aChar, TUint16& aKey) const - { - aKey = 0; - - if (!iPtiEngine) - return; - - CPtiCoreLanguage* lang = (CPtiCoreLanguage*)iPtiEngine->GetLanguage(iLanguageCapabilities.iInputLanguageCode); - TPtiEngineInputMode inputMode = iPtiEngine->InputMode(); - - if (!lang) - return; - - const TBool vietnamese = (iLanguageCapabilities.iInputLanguageCode == ELangVietnamese); - - MPtiKeyMappings* map; - if (inputMode == EPtiEngineQwerty || inputMode == EPtiEngineQwertyPredictive) - { - map = lang->GetQwertyKeymappings(); - } - else if( inputMode == EPtiEngineHalfQwerty || inputMode == EPtiEngineHalfQwertyPredictive ) - { - map = lang->GetHalfQwertyKeymappings(); - } - else - { - map = lang->GetKeymappings(); - } - - if (!map) - { - return; - } - - TUint16 ch; - ch = (TUint16)map->KeyForCharacter(aChar); - if (!ch && vietnamese) - { - // This may be Vietnamese tone mark or an accented character which isn't listed - // in keymappings. - ch = RemapVietnameseAccentedCharacter(aChar); - } - - aKey = ch; - } - -// --------------------------------------------------------------------------- -// LOCAL METHODS -// -// --------------------------------------------------------------------------- -// -const TInt KVietKeyMarker = 0xffff; -const TUint16 vietnameseAccents[] = - { - KVietKeyMarker, EPtiKey2, // For key 2, a-based - 0x00c1, 0x00c0, 0x1ea2, 0x00c3, 0x1ea0, - 0x00e1, 0x00e0, 0x1ea3, 0x00e3, 0x1ea1, - 0x0102, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, - 0x0103, 0x1eaf, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eb7, - 0x00c2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac, - 0x00e2, 0x1ea5, 0x1ea7, 0x1ea9, 0x1eab, 0x1ead, - - KVietKeyMarker, EPtiKey3, // For key 3, e-based - 0x00c9, 0x00c8, 0x1eba, 0x1ebc, 0x1eb8, - 0x00e9, 0x00e8, 0x1ebb, 0x1ebd, 0x1eb9, - 0x00ca, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, - 0x00ea, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, - - KVietKeyMarker, EPtiKey4, // For key 4, i-based - 0x00cd, 0x00cc, 0x1ec8, 0x0128, 0x1eca, - 0x00ed, 0x00ec, 0x1ec9, 0x0129, 0x1ecb, - - KVietKeyMarker, EPtiKey6, // For key 6, o-based - 0x00d3, 0x00d2, 0x1ece, 0x00d5, 0x1ecc, - 0x00f3, 0x00f2, 0x1ecf, 0x00f5, 0x1ecd, - 0x00d4, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, - 0x00f4, 0x1ed1, 0x1ed3, 0x1ed5, 0x1ed7, 0x1ed9, - 0x01a0, 0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, - 0x01a1, 0x1edb, 0x1edd, 0x1edf, 0x1ee1, 0x1ee3, - 0 - }; - - -// --------------------------------------------------------------------------- -// RemapVietnameseAccentedCharacter -// -// --------------------------------------------------------------------------- -// -LOCAL_C TInt RemapVietnameseAccentedCharacter(TUint16 aChr) - { - // Check tone marks first. - switch (aChr) - { - case 0x0301: - return EPtiKey2; - case 0x0300: - return EPtiKey3; - case 0x0309: - return EPtiKey4; - case 0x0303: - return EPtiKey5; - case 0x0323: - return EPtiKey6; - default: - break; - } - - TInt ret = 0; - - for (const TUint16* ptr = vietnameseAccents; *ptr != 0; ptr++) - { - if (*ptr == KVietKeyMarker) - { - ret = ptr[1]; - ptr++; - } - else - { - if (*ptr == aChr) - { - break; - } - } - } - - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepPlugin.cpp --- a/fep/aknfep/src/AknFepPlugin.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CAknFepPlugin implementation. -* -*/ - - - - - - - - - - - -#include "AknFepManager.h" -#include "AknFepPlugin.h" -#include - -CAknFepPlugin* CAknFepPlugin::NewL() - { - return new (ELeave) CAknFepPlugin(); - } - - -CCoeFep* CAknFepPlugin::NewFepL(CCoeEnv& aConeEnvironment, const CCoeFepParameters& aFepParameters) - { - CAknFepManager* const aknFep = new(ELeave) CAknFepManager(aConeEnvironment); - CleanupStack::PushL(aknFep); - aknFep->ConstructL(aFepParameters); - CleanupStack::Pop(); // aknFep - return aknFep; - } - - -void CAknFepPlugin::SynchronouslyExecuteSettingsDialogL(CCoeEnv& /*aConeEnvironment*/) - { - } - - -const TImplementationProxy ImplementationTable[] = - { -#ifdef __EABI__ - IMPLEMENTATION_PROXY_ENTRY(0x101FD65A, CAknFepPlugin::NewL) -#else - {{0x101FD65A}, CAknFepPlugin::NewL} -#endif - }; - -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - return ImplementationTable; - } - -// End of file - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepPluginManager.cpp --- a/fep/aknfep/src/AknFepPluginManager.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5428 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include -#include -#include -#include // CEikCaptionedControl -#include -#include -#include -#include -#include -#include // KUikGlobalNotesAllowed -#include // KAknQwertyInputModeActive -#include -//#include -#include -#include -#include //CAknIndicatorContainer -#include -#include -#include -#include -#include -#include //FeatureManager -#include -#include -#include -//#include -#include // MPtiEngineCompositionDataInterface -#include -#include -#include - -// User includes -#include "AknFepManagerInterface.h" // MAknFepManagerInterface -#include "AknFepUiManagerBase.h" -#include "aknfepuimanagerfingeritutchinese.h" - -// For Spell -#include "aknfepuispellcontainer.h" -#include "aknfepuispellinputpane.h" - -#include - -#include - -#include -#include - -// Constants -const TInt KCursorBlinkPerioid = 10000;//300000; // five tenth of a second * 2 -const TInt KMaxServerDataLength = 50; -const TUint KVkbParagraphSeparator = 0x2029; -const TUint KVkbTabulator = 0x0009; -const TUid KAknfepUID= { 0x100056de }; -const TUid KUidtruiApp = { 0x2000B104 }; -const TInt KAknScreenServerUid = 0x100056cf; -const TInt KAknCapServerUid = 0x10207218; -const TInt KAknNotifySrvUid = 0x10281EF2; -const TInt KAknHelpAppUid = 0x10005234; -const TInt KInvalidValue = -1; - -// Paste event for AknCcpuSupport -const TKeyEvent KAknCcpuPasteEvent = {EKeyF18, EEikCmdEditPaste, EModifierCtrl, 1}; - -const TUint KSupportedDeadKeys[] = { 0x005E, 0x0060, 0x00A8, 0x007E, 0x00AF, - 0x00B4, 0x00B8, 0x02C7, 0x02DB, 0x02DD, - 0x00A8, 0x0384, 0x0385 }; - -_LIT(KVkbTabChar, " "); - -_LIT(KHWR_HLP_MAIN_VIEW, "HWR_HLP_MAIN_VIEW"); -_LIT(KVQWERTY_HLP_MAIN_VIEW, "VQWERTY_HLP_MAIN_VIEW"); -_LIT(KVITU_HLP_MAIN_VIEW, "VITU_HLP_MAIN_VIEW"); - -const TInt KDefaultCandidateArraySize = 16; -const TInt KNumberOfCases = 6; - -#define iAvkonAppUi ((CAknAppUi*)CEikonEnv::Static()->EikAppUi()) -TUid AppUidFromWndGroupIdL(TInt aWndGrpId) - { - RWsSession &ws = CCoeEnv::Static()->WsSession(); - //TInt wgId =ws.GetFocusWindowGroup(); - CApaWindowGroupName* wg = CApaWindowGroupName::NewLC(ws,aWndGrpId); - - TUid id = wg->AppUid(); - CleanupStack::PopAndDestroy(wg); - return id; - - } - -TUid GetFocusAppUid() - { - TUid id = {0x0}; - TRAP_IGNORE(id = AppUidFromWndGroupIdL(CCoeEnv::Static()->WsSession().GetFocusWindowGroup())); - return id; - } -TUid GetCurAppUid() - { - TUid id = {0x0}; - TRAP_IGNORE(id = AppUidFromWndGroupIdL(CCoeEnv::Static()->RootWin().Identifier())); - return id; - } - -TBool IsGlobalNotesApp(TUid& aUid) - { - const TInt KAknCapServerUid = 0x10207218; - const TInt KAknNotifySrvUid = 0x10281EF2; - if(aUid.iUid == KAknCapServerUid || aUid.iUid == KAknNotifySrvUid) - return ETrue; - return EFalse; - } -#ifdef RD_SCALABLE_UI_V2 -inline TBool IsAbleTouseCallBubble() - { - const TInt KAknCapServerUid = 0x10207218; - return GetCurAppUid().iUid != KAknCapServerUid; - } -#endif //RD_SCALABLE_UI_V2 - -RDrawableWindow* GetFocusWindow() - { - CCoeControl* focusControl = CCoeEnv::Static()->AppUi()->TopFocusedControl(); - if( focusControl ) - { - return focusControl->DrawableWindow(); - } - return NULL; - } -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::NewL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CAknFepPluginManager* CAknFepPluginManager::NewL( CAknFepManager& aFepMan, - CAknFepSharedDataInterface& aSharedData, - CAknFepLanguageManager& aLangMan, - CAknFepCaseManager& aCaseMan ) - { - CAknFepPluginManager* self = new (ELeave) CAknFepPluginManager - ( aFepMan, aSharedData, aLangMan, aCaseMan ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::~CAknFepPluginManager -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CAknFepPluginManager::~CAknFepPluginManager() - { - delete iAdjustDataQueryTimer; - - iCurrentPluginInputFepUI = NULL; // why not delete???? - delete iPenInputMenu; - - if( iPenInputSvrConnected ) - { - iPenInputServer.Close(); - iPenInputSvrConnected = EFalse; - } - delete iFingerItutChineseUI; - - delete iIcfDataBuf; - iIcfDataBuf = NULL; - - delete iSpellText; - iSpellText = NULL; - - delete iSpell; - iSpell = NULL; - - delete iLastEditorContentBuf; - - delete iAvkonRepository; - - /* - for(TInt i = 0; i < iCandidateList.Count(); i++) - { - HBufC* buf = iCandidateList[i]; - delete buf; - } - iCandidateList.Close(); - */ - iCandidateList.ResetAndDestroy(); - iSendAllList.iCandidates.Reset(); - iOpenWindowList.Close(); - iEventData.Close(); - iPreCaption.Close(); - - ClosePeninputSetting(); - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::CAknFepPluginManager -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CAknFepPluginManager::CAknFepPluginManager( CAknFepManager& aFepMan, - CAknFepSharedDataInterface& aSharedData, - CAknFepLanguageManager& aLangMan, - CAknFepCaseManager& aCaseMan ) - : iFepMan( aFepMan ), iLangMan( aLangMan ), iCaseMan( aCaseMan ), - iSharedData( aSharedData ), iPluginPrimaryRange( ERangeInvalid ), iCandidateIndex(1), - iCharStartPostion( KInvalidValue ) - { - iIndicatorImgID = 0; - iIndicatorTextID = 0; - iLastDataQueryWin = NULL; - iDefaultOrientation = -1; - iIsInEditWordQueryDlg = EFalse; - iClosePluginInputMode = EFalse; - iDimGainForeground = ETrue; - // Modify for bug ELZG-7WZC35 begin - iAlignment = 0; - // Modify for bug ELZG-7WZC35 end - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::ConstructL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::ConstructL() - { - iPenInputMenu = CAknFepPluginMenuManager::NewL(&iFepMan); - - //here ERangeInvalid means there is no change of plugin input range. - iFepMan.UiInterface()->TouchPaneSetFepPenSupportInterface(this); - iEventData.CreateMaxL(KMaxServerDataLength); - - RThread client; - iHasSWEventCap = client.HasCapability(ECapabilitySwEvent); - client.Close(); - iAvkonRepository = CRepository::NewL( KCRUidAvkon ); - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::ActivatePenInputL -// Change to default plugin input mode -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::ActivatePenInputL() - { - if( !iPenInputSvrConnected || !iPenInputServer.IsVisible() || iPenInputServer.IsDimmed() ) - { - if( iFepMan.FepAwareTextEditor() ) - { - iPreferredUiMode = ETrue; - TryChangePluginInputModeByModeL((TPluginInputMode)(iSharedData.PluginInputMode()), - EPenInputOpenManually, - ERangeInvalid); - } - } - iFepMan.PtiEngine()->CancelTimerActivity(); - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::DeactivatePenInputL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::DeactivatePenInputL() - { - ClosePluginInputModeL(ETrue); - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::HandleServerEventL -// Handle pen input server events. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::HandleServerEventL(TInt aEventId) - { - if(ESignalServerExit == aEventId) - { - iPenInputSvrConnected = EFalse; - return ETrue; - } - if(ESignalServerReady == aEventId) - { - //reconnect to server - iFepMan.SendEventsToPluginManL(EPluginEditorActivate); - return ETrue; - } - TBool bHandled = EFalse; - if( !iLangMan.CurrentImePlugin()) - { - return bHandled; - } - - iEventData.Zero(); - TPtrC pBuf; - TInt dataLen = iPenInputServer.GetServerEventData(iEventData); - - if( KErrNone == dataLen ) - { - pBuf.Set(iEventData); - } - else if ( dataLen > 0 ) - { - iEventData.ReAllocL(dataLen); - dataLen = iPenInputServer.GetServerEventData(iEventData); - pBuf.Set(iEventData); - } - if( dataLen != KErrNone ) - { - return ETrue; - } - - if( !iLangMan.CurrentImePlugin()->HandleServerEventL(aEventId, iEventData) ) - { - bHandled = ETrue; - - //only handle events which IME plug-in don't handled - switch( aEventId ) - { - case ESignalReplacePartText: - case ESignalReplaceText://Get key event - case ESignalReplaceTextJp: - { - TInt repeatCount = 0; - TInt len = *(TInt*)pBuf.Ptr(); - TInt stringLength = pBuf.Length(); - TInt midLength = sizeof(TInt)/sizeof(TText); - - if (midLength > stringLength) - { - break; - } - - iFepMan.SetFlag( CAknFepManager::EFlagSupressAutoUpdate ); - - TPtrC s = pBuf.Mid(midLength);//sizeof(TInt)/sizeof(TText) - - //set selection - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - if( iFepMan.IsFepAwareTextEditor() && edit ) - { - TCursorSelection curSor; - edit->GetCursorSelectionForFep(curSor); - if ( curSor.iAnchorPos == curSor.iCursorPos ) - { - if (ESignalReplaceTextJp == aEventId) - { - if (curSor.iCursorPos >= len) - { - curSor.iAnchorPos = curSor.iCursorPos - len; - if (curSor.iAnchorPos<0 || - curSor.iAnchorPos>edit->DocumentLengthForFep()) - { - break; - } - } - } - else - { - if(ESignalReplacePartText == aEventId) - { - curSor.iAnchorPos = curSor.iCursorPos - len; - } - else - { - if ( iCharStartPostion == KInvalidValue ) - { - curSor.iAnchorPos = curSor.iCursorPos - - ( iLastSubmitCountedit->DocumentLengthForFep()) - { - break; - } - - // check repeated string - if (len >= iLastSubmitCount) - { - TBuf textToUncommit; - textToUncommit.Zero(); - - edit->GetEditorContentForFep(textToUncommit, curSor.iAnchorPos, - Min(curSor.Length(), - CAknFepManager::EMaximumFepWordLength)); - - repeatCount = RepeatStringFromLeft(s,textToUncommit); - curSor.iAnchorPos += repeatCount; - if (curSor.iAnchorPos<0 || - curSor.iAnchorPos>edit->DocumentLengthForFep()) - { - break; - } - } - - if (curSor.iCursorPos > curSor.iAnchorPos) - { - edit->SetCursorSelectionForFepL(curSor); - } - } - } - } - else - { - TBuf<1> backSpace; - backSpace.Append(TChar(EKeyBackspace)); - for(TInt i = 0; i < len; ++i) - { - SubmitUiPluginTextL(backSpace, EKeyEvent); - } - } - iFepMan.ClearFlag( CAknFepManager::EFlagSupressAutoUpdate ); - - if (repeatCount > 0) - { - OnPenInputServerKeyEventL(s.Right(s.Length() - repeatCount)); - - iLastSubmitCount += repeatCount; - } - else - { - OnPenInputServerKeyEventL(s); - } - } - break; - case ESignalKeyEvent: - { - TPtr ptr( const_cast(pBuf.Ptr()), pBuf.Length(), pBuf.Length() ); - if(iFepMan.InputMode() == ELatin && (iPluginInputMode == EPluginInputModeVkb || - iPluginInputMode == EPluginInputModeFSQ)) - { - AdjustDataCase( ptr ); - } - OnPenInputServerKeyEventL(pBuf); - } - break; - case ESignalNotifyUpdateCba://Update CBA - { - TInt* cbaData = (TInt* )(pBuf.Ptr()); - iFepMan.UpdateCbaL(*cbaData); - } - break; - case ESignalHwNotifySctPopup: - iFepMan.LaunchSpecialCharacterTableL( 0,ETrue );//possible? - break; - case ESignalSetAppEditorCursor: - { - TInt8 *ptrData = (TInt8* )(pBuf.Ptr()); - TCursorSelection curSel = *(TCursorSelection* )(ptrData); - TBool sync = *(TBool *)(ptrData + sizeof(TCursorSelection)); - - if ( iFepMan.UncommittedText().Length() > 0 ) - { - iFepMan.PtiEngine()->CancelTimerActivity(); - //using TryCloseUiL() to sync Fep state - //iFepMan.CommitInlineEditL(); - iFepMan.TryCloseUiL(); - } - //now change the cursor position - SetCursorSelectionL(curSel, sync); - } - break; - case ESignalLaunchLanguageMenu: - LaunchPenInputLanguageSelectionL(ETrue); - break; - case ESignalLaunchOptionMenu: - case ESignalLaunchOptionsMenu: - { - if (iInMenu || (!iPenInputMenu) || iPenInputMenu->IsShowing()) - { - break; - } - iLaunchMenu = ETrue; - if (PluginInputMode() == EPluginInputModeItut || - PluginInputMode() == EPluginInputModeFSQ || - PluginInputMode() == EPluginInputModeFingerHwr) - { - SetMenuState(); - } - else - { - ClosePluginInputUiL(ETrue); - } - LaunchPenInputMenuL(R_AVKON_PENINPUT_OPTION_MENU_BAR); - } - break; - case ESignalLayoutClosed: - ClosePluginInputModeL(ETrue); - if(iPenInputSvrConnected ) //lost foreground - { - iPenInputServer.LoseForeground(); - } - break; - case ESignalCaseMode: - { - TInt* pluginCase = (TInt* )(pBuf.Ptr()); - iFepMan.ClearFlag(CAknFepManager::EFlagSupressAutoUpdate); - - if (ECaseInverseText == *pluginCase) - { - iFepMan.SetFlag(CAknFepManager::EFlagQwertyShiftMode); - } - iCaseMan.SetCurrentCase(*pluginCase); - - if (ECaseInverseText == *pluginCase) - { - iFepMan.ClearFlag(CAknFepManager::EFlagQwertyShiftMode); - } - } - break; - case ESignalRange: - { - HideTooltipOnFSQL(); - - TInt newPrimaryRange = *(TInt* )(pBuf.Ptr()); - // Addition for ITI features on FSQ, - // when swith to other ranges from latin/native range, - // need to commit text to fep and ptiengint if necessary - if ( EnableITIOnFSQ() && newPrimaryRange != ERangeEnglish - && newPrimaryRange != ERangeNative ) - { - iFepMan.CommitInlineEditL(); - iFepMan.PtiEngine()->CommitCurrentWord(); - } - iPluginPrimaryRange = newPrimaryRange; - if (ELangJapanese == iSharedData.InputTextLanguage() - && ERangeNative == iPluginPrimaryRange ) - { - TInt subrange = *(TInt* )( (TInt8* )(pBuf.Ptr()) + sizeof(TInt) ); - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputJapaneseSetSubRange, - subrange); - } - SyncIndicatorWithPluginRangeL(); - } - break; - case ESignalLayoutUIChanged: - { - TInt8 *ptrData = (TInt8* )(pBuf.Ptr()); - TBool switchByMode = *(TInt*)(ptrData); - if( switchByMode ) - { - TInt mode = *(TInt* )( ptrData + sizeof(switchByMode) ); - ClosePluginInputModeL(ETrue); - iFepMan.TryCloseUiL(); - iPreferredUiMode = EFalse; - TryChangePluginInputModeByModeL((TPluginInputMode)mode, - EPenInputOpenManually, - ERangeInvalid); - } - } - break; - case ESignalCommitInlineText: - { - iFepMan.CommitInlineEditL(); - } - break; - case ESignalEnterMatchSelection: - { - TBool on = *((TInt*)(pBuf.Ptr())); - - if (on) - { - EnterMatchSelectionState(); - } - else - { - iFepMan.PluginUIManager()->SetFingerMatchSelectionState(EFalse); - } - } - break; - case ESignalSelectMatchSelectionText: - { - TInt* ptrData = (TInt*)(pBuf.Ptr()); - TInt itemidx = *(ptrData); - TBool commit = *(ptrData + 1); - - iFepMan.UpdateInlineEditL(iSendAllList.iCandidates[itemidx], - iSendAllList.iCandidates[itemidx].Length()); - - if (commit) - { - iFepMan.TryCloseUiL(); - iFepMan.FepUI()->HandleCommandL(ESignalSelectMatchSelectionText); - } - else - { - iFepMan.PluginUIManager()->SetFingerMatchSelectionState(EFalse); - } - - SendIcfDataL(EPluginSyncUpdatedText); - } - break; - case ESignalEnterSpellMode: - { - iFepMan.LaunchEditWordQueryL(); - } - break; - case ESignalExitSpellMode: - { - TInt* ptrData = (TInt*)(pBuf.Ptr()); - TBool exitbyok = *(ptrData); - - exitbyok ? iFepMan.ExitPluginSpellModeByOk() : - iFepMan.ExitPluginSpellModeByCancel(); - } - break; - case ESignalLaunchSCT: - { - iFepMan.LaunchSpecialCharacterTableL(0,ETrue); - } - break; - case ESignalGetEditMenuData: - { - //Calcuate which menu needed to add - iFepMan.GetPermittedEditorMenu(EFalse); - } - break; - case ESignalEditorMenuCommand: - { - //Execute editor menu command - TInt* command = (TInt* )(pBuf.Ptr()); - iFepMan.ProcessEditorMenuCommand(*command); - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerInputMode, - iFepMan.InputMode()); - - iIndicatorImgID = 0; - iIndicatorTextID = 0; - UpdateITUTIndicator(); - } - break; - case ESignalCharacterStart: - { - TBool charStart = *(TBool*)(pBuf.Ptr()); - if( charStart ) - { - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - if( !edit ) - { - break; - } - TCursorSelection curSor; - edit->GetCursorSelectionForFep(curSor); - iCharStartPostion = Min( curSor.iCursorPos, curSor.iAnchorPos ); - - } - else - { - iCharStartPostion = KInvalidValue; - } - } - break; - case ESignalShowCandidate: - { - // Get candidate list - TInt activeIdx = 0; - CDesCArray* candidates = new (ELeave) CDesCArrayFlat - ( KDefaultCandidateArraySize ); - CleanupStack::PushL( candidates ); - iFepMan.GetCandidatesL( *candidates, activeIdx ); - TFepITICandidateList candidateListData; - candidateListData.iItemArray = candidates; - candidateListData.iActiveIndex - = ( candidates->Count() >= 2 ) ? 1 : activeIdx; - ShowCandidateListL( candidateListData ); - CleanupStack::PopAndDestroy( candidates ); - } - break; - case ESignalSelectCandidate: - { - // Select candidate word on fsq - TInt index = *(TInt*)( pBuf.Ptr() ); - CommitCandidateWordOnFSQL( index ); - break; - } - case ESignalAcceptTooltip: - { - // Simulate Up key and then join in the key flow for HW - // to accept tooltip - TKeyEvent keyEvent = { EKeyUpArrow, EStdKeyUpArrow, 0, 0 }; - CCoeEnv::Static()->SimulateKeyEventL( keyEvent, EEventKey ); - - // commit tooltip text then commit inline - iFepMan.CommitInlineEditL(); - // Need to commit into engine, it will clear textbuffer in it. - iFepMan.PtiEngine()->CommitCurrentWord(); - } - break; - case ESignalStartInlineText: - { - if (!(iFepMan.IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))) - { - TBuf textToUncommit; - TBool comsumeKey; - - if (!(iFepMan.TryGetTextToUncommitL(textToUncommit, comsumeKey))) - { - // If T9 word length > 32, the navi key is consumed without action. - // Maybe should navigate inside word. - return comsumeKey; - } - iFepMan.PtiEngine()->ClearCurrentWord(); - iFepMan.PtiEngine()->SetCurrentWord(textToUncommit); // this set the input sequence of PtiEngine - iFepMan.StartInlineEditL(iFepMan.UncommittedText(), textToUncommit, - textToUncommit.Length(), EFalse); - - // update ICF content - SendIcfDataL(); - } - } - break; - case ESignalCommitITIInlineText: - { - // Commit autocompletion - iFepMan.CommitInlineEditL(); - // Need to commit into engine, it will clear textbuffer in it. - iFepMan.PtiEngine()->CommitCurrentWord(); - } - break; - default: - break; - } - } - return bHandled; - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::EnterMatchSelectionState -// Enter match selection state -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::EnterMatchSelectionState() - { - GetAllPredictiveCandidate(); - - if (iCandidateList.Count() > 0) - { - SetFingerMatchSelectionState(ETrue); - iFepMan.PluginUIManager()->ShowAllCandidates(); - return ETrue; - } - - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::HandleEventsFromFepL -// Handle events from FEP -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::HandleEventsFromFepL( TInt aEventType, TInt aEventData ) - { - - if( iPluginInputMode == EPluginInputModeNone && - aEventType != EPluginEditorActivate && - aEventType != EPluginActivate && - aEventType != EPluginResourceChanged ) - { - return; - } - - switch ( aEventType ) - { - case EPluginEditorActivate: - { - ActivatePenInputL(); - RWsSession &ws = CCoeEnv::Static()->WsSession(); - TInt wgId =ws.GetFocusWindowGroup(); - iEditorPriority = ws.GetWindowGroupOrdinalPriority(wgId); - } - break; - case EPluginActivate: - {//The command is obsolete, use other commands - //current only some Japanese menu commands call this - ActivatePenInputL(); - } - break; - case EPluginCloseMode: - { - if (iPluginInputMode == EPluginInputModeItut && - !iSharedData.PredictiveTextAutoCompleteOn()) - { - return; - } - - ClosePluginInputModeL( aEventData ); - } - break; - case EPluginFocusItemDestroy: - if( iFepMan.FepAwareTextEditor() ) - { - iMfne = NULL; - if ( !aEventData ) - { - RemoveLastFocusedWinFromOpenList(); - } - else - { - ClosePluginInputUiL(ETrue); - } - } - break; - case EPluginSyncFepAwareText: - { - SyncFepAwareText( TPluginSync(aEventData) ); - } - break; - /*case EPluginActivateInGlobalNote: - { - OnFocusChangedL(ETrue); - iPenInputServer.ActivatePeninputInNotesL(); - } - break;*/ - case EPluginMenuCmd: - { - ProcessMenuCommandL( aEventData ); - } - break; - case EPluginForegroundChanged: - { - iForegroundChange = ETrue; - iLaunchHelp = EFalse; - - if (!aEventData && IsInGlobleNoteEditor()) - { - ClosePluginInputUiL(ETrue); - if(iPenInputSvrConnected ) //lost foreground - { - iPenInputServer.LoseForeground(); - } - } - else - { - OnFocusChangedL( aEventData ) ; - } - } - break; - case EPluginFocusChanged: - { - OnFocusChangedL( aEventData ); - } - break; - case EPluginResourceChanged: - { - iOrientationChangedfromUI = ETrue; - OnResourceChangedL( aEventData ); - iOrientationChangedfromUI = EFalse; - } - break; - case EPluginFaseSwap: - { - iFastSwapByMenu = aEventData; - } - break; - case EPluginKeyEvent: - { - HandleKeyEventL( aEventData ); - } - break; - case EPluginUpdateIndicator: - { - UpdateITUTIndicator(); - } - break; - case EPluginPreview: - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCharacterPreview, - aEventData); - } - break; - case EPluginPromptChanged: - { - SetPromptText( EFalse ); - } - break; - case ELostForeground: - { - if(iPenInputSvrConnected ) //lost foreground - { - iPenInputServer.LoseForeground(); - } - } - break; - case EPluginShowTooltip: - { - ShowTooltipOnFSQL( aEventData ); - } - break; - case EPluginHideTooltip: - { - HideTooltipOnFSQL(); - } - break; - default: - break; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::TryChangePluginInputModeByModeL -// Change current input method to plugin input method with specified layout UI id. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::TryChangePluginInputModeByModeL - (TPluginInputMode aSuggestMode, TInt aOpenMode,TInt aSuggestRange) - { - if ( iSharedData.QwertyInputMode() ) - { - return EFalse; - } - - TBool rtn = EFalse; - if ( iFepMan.ExtendedInputCapabilities() & - CAknExtendedInputCapabilities::EInputEditorDisableVKB ) - { - return EFalse; - } - - if (! ConnectServer() ) - { - return EFalse; - } - - if ((iPenInputServer.PreferredUiMode() != EPluginInputModeNone) && iPreferredUiMode ) - { - aSuggestMode = iPenInputServer.PreferredUiMode(); - } - - if (!GetCurSuggestMode( aSuggestMode )) - { - return EFalse; - } - - // add by jiawenjuan to remember the old fep aware editor. - TBool cleanContent = EFalse; - if(iOldFepAwareEditor != iFepMan.FepAwareTextEditor()) - { - cleanContent = ETrue; - iOldFepAwareEditor = iFepMan.FepAwareTextEditor(); - } - - if( !iAdjustDataQueryTimer ) - { - iAdjustDataQueryTimer = CPeriodic::NewL(CActive::EPriorityStandard); - } - - // Addition for ITI features on FSQ, if iITISettingDialogOpen == ETrue, - // it means that predictive setting dialog is closed, then re-open FSQ again. - // Need to set iITISettingDialogOpen = EFalse at this moment - if ( iITISettingDialogOpen ) - { - iITISettingDialogOpen = EFalse; - } - - // getting a new ui manager object corresponded in aMode. - TInt uiLanguage = iSharedData.DisplayLanguage(); - if( uiLanguage == ELangTest ) - { - uiLanguage = User::Language(); - } - - if ( iDefaultOrientation == -1 ) - { - iDefaultOrientation = iAvkonAppUi->Orientation(); - } - iPenInputServer.BackgroudDefaultOri( iDefaultOrientation ); - - TPixelsTwipsAndRotation size; - CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size); - TBool landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight; - TBool disableFSQ = - ( aSuggestMode == EPluginInputModeFSQ && - ( iDefaultOrientation == CAknAppUiBase::EAppUiOrientationPortrait || - ( !landscape && !iAvkonAppUi->OrientationCanBeChanged() ) ) ); - - if ( disableFSQ ) - { - iPenInputServer.SetDisabledLayout( EPluginInputModeFSQ ); - } - - if ( aSuggestMode == EPluginInputModeFSQ ) - { - TPluginInputMode tempInputMode = iPluginInputMode; - iPluginInputMode = EPluginInputModeFSQ; - - if (disableFSQ ) - { - iPluginInputMode = tempInputMode; - aSuggestMode = EPluginInputModeItut; - } - else - { - if ( !iSharedData.AutoRotateEnabled() ) - { - iFepMan.SetNotifyPlugin( EFalse ); - iAvkonAppUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationLandscape ); - iFepMan.SetNotifyPlugin( ETrue ); - iOrientationChanged = ETrue; - } - - CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size); - landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight; - if( !landscape ) - { - iPluginInputMode = tempInputMode; - aSuggestMode = EPluginInputModeItut; - } - } - } - else if ( iOrientationChanged ) - { - iFepMan.SetNotifyPlugin( EFalse ); - iAvkonAppUi->SetOrientationL( (CAknAppUiBase::TAppUiOrientation)iDefaultOrientation ); - iFepMan.SetNotifyPlugin( ETrue ); - iOrientationChanged = EFalse; - } - - TBool isSplit = IsEditorSupportSplitIme(); - // temp code for Chinese split view - if ( iSharedData.PenInputLanguage() == ELangPrcChinese || - iSharedData.PenInputLanguage() == ELangTaiwanChinese || - iSharedData.PenInputLanguage() == ELangHongKongChinese ) - { - isSplit = EFalse; - } - iLangMan.SetSplitView(isSplit); - - TInt inputLang = iFepMan.InputLanguageCapabilities().iInputLanguageCode; - MAknFepManagerInterface* fepUI = iLangMan.GetPluginInputFepUiL( - aSuggestMode, - inputLang, - uiLanguage, - &iPenInputServer); - iCurrentPluginInputFepUI = fepUI; - - if ( iCurrentPluginInputFepUI ) - { - // fix EVWG-7U73HS - iPenInputServer.DimUiLayout(EFalse); - - AddCurrentWinToOpenListL(); - if (iPluginInputMode == EPluginInputModeItut) - { - iIndicatorImgID = 0; - iIndicatorTextID = 0; - } - - iPluginInputMode = (TPluginInputMode)iLangMan.CurrentImePlugin()->CurrentMode(); - - //following codes is used to tell MFNE editor the Touch Input - //has been opened. Because MFNE editor has no editorstate, so - //use this way to implement this. - if ( iFepMan.IsMfneEditor() ) - { - MCoeFepAwareTextEditor* mfne( iFepMan.FepAwareTextEditor() ); - iMfneChanged = ( iMfne != mfne ); - iMfne = mfne; - InformMfneUiStatusL( ETrue ); - } - - // Addition for ITI features on FSQ - // Before open touch window, need to set iPluginPrimaryRange = 0 - // which means use the default range. - iPluginPrimaryRange = 0; - - InitializePluginInputL(aOpenMode, aSuggestRange, cleanContent); - - //save plugin input mode to repository - if( iPenInputServer.PreferredUiMode() == EPluginInputModeNone ) - { - //do not remember application set input mode - iSharedData.SetPluginInputMode(iPluginInputMode); - } - - if (CurrentFepInputUI()) - { - CurrentFepInputUI()->SetInputLanguageL((TLanguage)inputLang); - CurrentFepInputUI()->SetMode(iFepMan.InputMode(), ETrue, EFalse); - } - - if(!iOrientationChangedfromUI) - { - iFepMan.UpdateCbaL( NULL ); - } - - // Notify application touch window state - NotifyAppUiImeTouchWndState( ETrue ); - - rtn = ETrue; - } - else - { - iPluginInputMode = EPluginInputModeNone; - } - - if( iCurrentPluginInputFepUI && iPluginInputMode != EPluginInputModeNone ) - { - iFepMan.UiInterface()->TouchPaneSetInputMethodIconActivated(ETrue); - } - else - { - iFepMan.UiInterface()->TouchPaneSetInputMethodIconActivated(EFalse); - } - - - if ( aOpenMode == EPenInputOpenManually ) - { - iCurLanguage = iSharedData.InputTextLanguage(); - } - return rtn; - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::ClosePluginInputModeL -// Close plugin input mode -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::ClosePluginInputModeL( TBool aRestore ) - { - if (iPluginInputMode == EPluginInputModeNone) - { - return; - } - - iOldFepAwareEditor = NULL; - if ( iSharedData.QwertyInputMode() && iPenInputMenu ) - { - iPenInputMenu->Hide(); - } - - TPluginInputMode prePluginInputMode = iPluginInputMode; - RemoveCurrentWinFromOpenList(); - ClosePluginInputUiL(ETrue); - iClosePluginInputMode = ETrue; - - // TInt prevIputMode = iPluginInputMode; - - if( iOpenWindowList.Count() == 0 || iSharedData.QwertyInputMode() ) - { - iPluginInputMode = EPluginInputModeNone; - } - - if( aRestore && !iSharedData.QwertyInputMode() && iFepMan.InputMode() == ELatin) - { - RestorePredictStateL(); - if ( iFepMan.EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor ) - { - if( AknTextUtils::NumericEditorDigitType() == EDigitTypeEasternArabicIndic || - AknTextUtils::NumericEditorDigitType() == EDigitTypeDevanagari || - AknTextUtils::NumericEditorDigitType() == EDigitTypeArabicIndic ) - { - iFepMan.TryChangeModeL( ENativeNumber ); - } - else - { - iFepMan.TryChangeModeL( ENumber ); - } - } - } - //iFepMan.UpdateCbaL( NULL ); //pls refer to bug ESZG-7G7CGF - - iFepMan.UiInterface()->TouchPaneSetInputMethodIconActivated(EFalse); - - if ( prePluginInputMode == EPluginInputModeVkb ) - { - iFepMan.UpdateIndicators(); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::ClosePluginInputUiL -// Close plugin input UI, only close UI -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::ClosePluginInputUiL(TBool aResetState) - { - // For addition of ITI features on FSQ, - // need to restore some values stored before opening FSQ - ResetItiStateL(); - - if( iPenInputSvrConnected ) - { - if( iCurrentPluginInputFepUI ) - { - //Change for finger support of MFNE editor, it is a requirement for Tube - InformMfneUiStatusL( EFalse ); - - iPenInputServer.ClearServerEvent(); - iCurrentPluginInputFepUI->CloseUI(); - if( aResetState ) - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputWindowClose); - } - - //iFepMan.UpdateCbaL(NULL); //pls refer to bug ESZG-7G7CGF - - if (iPluginInputMode == EPluginInputModeItut) - { - iIndicatorImgID = 0; - iIndicatorTextID = 0; - } - } - } - - if ( iPluginInputMode == EPluginInputModeFSQ && iOrientationChanged ) - { - // This TRAP_IGNORE is essential to fix bug ECJA-7JDCKR, never delete it - TRAP_IGNORE( iAvkonAppUi->SetOrientationL( (CAknAppUiBase::TAppUiOrientation)iDefaultOrientation ) ); - iOrientationChanged = EFalse; - } - - // Notify editor the touch window has been closed - NotifyAppUiImeTouchWndState( EFalse ); - - iCharStartPostion = KInvalidValue; - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::OnResourceChangedL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::OnResourceChangedL( TInt aType ) - { - if ( !iCurrentPluginInputFepUI || !iPenInputServer.IsForeground() || - iPluginInputMode == EPluginInputModeNone ) - { - return; - } - - if ( iPluginInputMode == EPluginInputModeFSQ && - !iSharedData.AutoRotateEnabled()) - { - return; - } - - TBool setResChange = EFalse; - - if (iPluginInputMode == EPluginInputModeItut || - iPluginInputMode == EPluginInputModeFSQ || - iPluginInputMode == EPluginInputModeFingerHwr) - { - setResChange = ETrue; - iPenInputServer.SetResourceChange(ETrue); - } - - iResourceChange = ETrue; - - if ( iSharedData.AutoRotateEnabled() && - ( iPluginInputMode == EPluginInputModeFSQ || iPluginInputMode == EPluginInputModeItut ) ) - { - if ( IsSpellVisible() ) - { - iFepMan.ExitPluginSpellModeByCancel(); - } - - if ( iPenInputMenu && iPenInputMenu->IsShowing() ) - { - iPenInputMenu->Hide(); - ResetMenuState(); - } - ClosePluginInputModeL(ETrue); - iFepMan.TryCloseUiL(); - TPixelsTwipsAndRotation size; - CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size); - - iPluginInputMode = ( size.iPixelSize.iWidth < size.iPixelSize.iHeight ) ? - EPluginInputModeItut : EPluginInputModeFSQ; - } - TryChangePluginInputModeByModeL( iPluginInputMode, - EPenInputOpenManually, - ERangeInvalid ); - /*if(size.iPixelSize.iWidth > size.iPixelSize.iHeight ) //landscape - { - if ( iPluginInputMode == EPluginInputModeVkb ) - { - // Get store value from CenRep - TryChangePluginInputModeByModeL((TPluginInputMode)(iSharedData.FepLastUseVkbModeForLandscape()), - EPenInputOpenManually, - ERangeInvalid); - hasChanged = ETrue; - } - } - else - { - if ( iPluginInputMode == EPluginInputModeFSQ ) - { - TryChangePluginInputModeByModeL(EPluginInputModeVkb, - EPenInputOpenManually, - ERangeInvalid); - hasChanged = ETrue; - } - - }*/ - if ( /*!hasChanged &&*/ iCurrentPluginInputFepUI ) - { - iCurrentPluginInputFepUI->ResourceChanged(aType); - } - - if (iInMenu) - { - SetMenuState(EFalse); - } - - if (setResChange) - { - iPenInputServer.SetResourceChange(EFalse); - } - - iResourceChange = EFalse; - if(IsDisplayDataQuery() && //data query - PluginInputMode() == EPluginInputModeVkb && - !iAdjustDataQueryTimer->IsActive()) //only vkb mode - { - iAdjustDataQueryTimer->Start(KCursorBlinkPerioid, - KCursorBlinkPerioid, - TCallBack(AdjustDataQueryCallBackL , this)); - } - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::SyncFepAwareText -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::SyncFepAwareText( TPluginSync aSyncType, TBool /*aSendNow*/ ) - { - TRAP_IGNORE(SendIcfDataL(aSyncType)); - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::ProcessMenuCommand -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::ProcessMenuCommandL(TInt aCommandId) - { - if( iPenInputMenu && iPenInputMenu->IsShowing() ) - { - iPenInputMenu->Hide(); - if( !iLangMan.CurrentImePlugin()->HandleMenuCommandL(aCommandId) ) - { - switch(aCommandId) - { - case EPenInputCmdHwrTraining: - { - LaunchHwrTrainUiL(); - iFepMan.SetGainForeground( EFalse ); - } - break; - case EPenInputCmdSetting: - { - if (iInMenu) - { - ResetMenuState(EFalse); - ClosePluginInputUiL(ETrue); - if(iPenInputSvrConnected ) //lost foreground - { - iPenInputServer.LoseForeground(); - } - } - - LaunchPenInputSettingL(); - } - break; - case EPenInputCmdVITUT: - { - ClosePluginInputModeL(ETrue); - iFepMan.TryCloseUiL(); - TryChangePluginInputModeByModeL(EPluginInputModeItut, - EPenInputOpenManually, - ERangeInvalid); - } - break; - case EPeninputCmdFSQ: - { - ClosePluginInputModeL(ETrue); - iFepMan.TryCloseUiL(); - TryChangePluginInputModeByModeL(EPluginInputModeFSQ, - EPenInputOpenManually, - ERangeInvalid); - } - break; - case EFepInputCmdHelp: - { - if (iInMenu) - { - ResetMenuState(EFalse); - ClosePluginInputUiL(ETrue); - if(iPenInputSvrConnected ) //lost foreground - { - iPenInputServer.LoseForeground(); - } - } - if (GetCurAppUid().iUid != KAknHelpAppUid) - { - iLaunchHelp = ETrue; - } - LaunchHelpL(); - } - break; - case EPenInputCmdCut: - {//ctrl + x - iFepMan.HandleCopyCutEventL(EEikCmdEditCut); - } // Send cut-event to edwin. - break; - case EPenInputCmdCopy: - {//ctrl + c - iFepMan.HandleCopyCutEventL(EEikCmdEditCopy); - } // Send copy-event to edwin. - break; - case EEikCmdEditPaste: - {//ctrl + v - TKeyEvent ccpuKey = KAknCcpuPasteEvent; - CCoeEnv::Static()->SimulateKeyEventL( ccpuKey, EEventKey ); - } // Send copy-event to edwin. - break; - } - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::HandleKeyEventL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::HandleKeyEventL(TInt aKeyId) - { - switch ( aKeyId ) - { - case EKeyF19: - { - SyncFepAwareText( EPluginSyncUpdatedText ); - } - break; - case EPtiKeyHash: - { - if (PluginInputMode() == EPluginInputModeItut) - { - if ( iFepMan.IsChineseInputLanguage() || - !( iFepMan.InputMode() == ENumber && iFepMan.WasLastKeyPressAHashKey() ) ) - { - if (iCurrentPluginInputFepUI) - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerInputMode, - iFepMan.InputMode()); - - iIndicatorImgID = 0; - iIndicatorTextID = 0; - UpdateITUTIndicator(); - - if (iFepMan.InputMode() == ELatin) - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCaseMode, - iCaseMan.CurrentCase()); - } - - if (CurrentFepInputUI()) - { - CurrentFepInputUI()->SetMode(iFepMan.InputMode(), ETrue, EFalse); - } - } - } - if ( !iFepMan.IsSupportsSecretText() ) - { - SyncFepAwareText( EPluginSyncUpdatedText ); - } - else - { - if (iCurrentPluginInputFepUI) - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCaseMode, - iCaseMan.CurrentCase()); - } - } - } - } - break; - case EKeyCBA1: - { - } - break; - case EKeyCBA2: - { - } - break; - case EPtiKeyStar: - { - if (PluginInputMode() != EPluginInputModeNone ) - { - SyncFepAwareText( EPluginSyncUpdatedText ); - } - break; - } - case EPtiKey0: //fall through - case EPtiKey1: - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - { - if (PluginInputMode() != EPluginInputModeNone ) - { - SyncFepAwareText( EPluginSyncUpdatedText ); - } - } - break; - case EKeyDownArrow: - case EKeyUpArrow: - case EKeyLeftArrow: - case EKeyRightArrow: - { - SyncFepAwareText(); - } - break; - /* - case EKeyLeftArrow: - { - - if ( !iFepMan.IsMfneEditor() && - ( PluginInputMode() == EPluginInputModeItut || - PluginInputMode() == EPluginInputModeFSQ ) && - iCurSelPre.Length() > 0) - { - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - if(iCurSelPre.iCursorPos > 0) - { - TInt pos = iCurSelPre.iCursorPos - 1; - edit->SetCursorSelectionForFepL - ( TCursorSelection( pos, iCurSelPre.iAnchorPos ) ); - iCaseMan.UpdateCase(ENullNaviEvent); - } - else if(iCurSelPre.iCursorPos == 0) - { - edit->SetCursorSelectionForFepL - ( TCursorSelection( iCurSelPre.iCursorPos, iCurSelPre.iAnchorPos ) ); - } - } - SyncFepAwareText(); - } - break; - case EKeyRightArrow: - { - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - if ( !iFepMan.IsMfneEditor() && - ( PluginInputMode() == EPluginInputModeItut || - PluginInputMode() == EPluginInputModeFSQ ) && - iCurSelPre.Length() > 0) - { - if(iCurSelPre.iCursorPos < edit->DocumentLengthForFep()) - { - TInt pos = iCurSelPre.iCursorPos + 1; - edit->SetCursorSelectionForFepL - ( TCursorSelection( pos, iCurSelPre.iAnchorPos ) ); - iCaseMan.UpdateCase(ENullNaviEvent); - } - else if(iCurSelPre.iCursorPos == edit->DocumentLengthForFep()) - { - edit->SetCursorSelectionForFepL - ( TCursorSelection( iCurSelPre.iCursorPos, iCurSelPre.iAnchorPos ) ); - } - } - SyncFepAwareText(); - } - break; - */ - case EKeyBackspace: - { - } - break; - case EKeyOK: - { - ClosePluginInputUiL( ETrue ); - } - break; - case EKeyEscape: - { - ClosePluginInputUiL( ETrue ); - DestroySpellEditor(); - } - break; - } - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::InitMenuPaneL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::InitMenuPaneL( CAknEdwinState* aEditorState, - CAknFepUiInterfaceMenuPane* aMenuPane, TInt aResourceId ) - { - //CAknEdwinState* remeberedEditorState = iFepMan.RememberedEditorState(); - - if(aResourceId == R_AVKON_TOUCH_TOUCHINPUT_MENU ) - { - if (aEditorState && aEditorState->CcpuState()) - { - if (!aEditorState->CcpuState()->CcpuCanCopy()) - { - aMenuPane->SetItemDimmed(EEikCmdEditCopy, ETrue); - } - - if (!aEditorState->CcpuState()->CcpuCanCut()) - { - aMenuPane->SetItemDimmed(EEikCmdEditCut, ETrue); - } - - if (!aEditorState->CcpuState()->CcpuCanPaste()) - { - aMenuPane->SetItemDimmed(EEikCmdEditPaste, ETrue); - } - } - else - { - aMenuPane->SetItemDimmed(EEikCmdEditCopy, ETrue); - aMenuPane->SetItemDimmed(EEikCmdEditCut, ETrue); - aMenuPane->SetItemDimmed(EEikCmdEditPaste, ETrue); - } - - // For training UI - if (!(iPluginInputMode == EPluginInputModeHwr || - iPluginInputMode == EPluginInputModeFSc || - iPluginInputMode == EPluginInputModeFingerHwr)) - { - aMenuPane->SetItemDimmed(EPenInputCmdSetting, ETrue); - aMenuPane->SetItemDimmed(EPenInputCmdHwrTraining, ETrue); - } - else - { - // Mode is HWR or Full scree HWR - // If fep is running in HWR Training, dim "HWR Training" item. - TUid appId = GetCurAppUid(); - if ( appId == KUidtruiApp ) - { - aMenuPane->SetItemDimmed( EPenInputCmdHwrTraining, ETrue ); - } - } - - // For Predictive - if (iPluginInputMode != EPluginInputModeItut) - { - aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, ETrue); - aMenuPane->SetItemDimmed(EAknCmdPredictiveTextCascade, ETrue); - aMenuPane->SetItemDimmed(EAknCmdMultitapPredictiveT9On, ETrue); - } - - //For Preview bubble - if (!(iPluginInputMode == EPluginInputModeVkb || - iPluginInputMode == EPluginInputModeFSQ || - iPluginInputMode == EPluginInputModeFingerHwr )) - { - if(!(iPluginInputMode == EPluginInputModeItut && - (iSharedData.InputTextLanguage() == ELangPrcChinese || - iSharedData.InputTextLanguage() == ELangTaiwanChinese || - iSharedData.InputTextLanguage() == ELangHongKongChinese ))) - { - aMenuPane->SetItemDimmed(EPenInputPreview, ETrue); - } - } - - // for inputmode - if (iPluginInputMode != EPluginInputModeItut) - { - // dim menu items for Chinese input modes that aren't valid in the current editor - // or the device subvariant - for (TInt mode = KFirstMode; mode <= KLastMode; mode = mode << 1) - { - iFepMan.DimMenuItem(aMenuPane, mode); - } - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); - - } - else - { - iFepMan.DimInputmodeMenuItems(aMenuPane); - if (iFepMan.IsChineseInputLanguage()) - { - DimAllModeAndCase(aMenuPane); - } - } - if (iFepMan.IsAbleToLaunchSmiley()) - { - TInt indexForSmiley; - if (aMenuPane->MenuItemExists(EAknCmdEditInsertSmiley, - indexForSmiley)) - { - aMenuPane->SetItemDimmed(EAknCmdEditInsertSmiley, EFalse); - } - } - - if (iPluginInputMode == EPluginInputModeItut || - iPluginInputMode == EPluginInputModeVkb || - iPluginInputMode == EPluginInputModeFSQ ) - { - TInt index = 0; - if (isLanuchSCT && aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)) - { - aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, EFalse); - } - } - - TBool disableDic = ETrue; - - if ((iPluginInputMode == EPluginInputModeHwr) - && (iFepMan.IsArabicInputLanguage())) - { - disableDic = EFalse; - } - - TInt dicIndex = 0; - if (aMenuPane->MenuItemExists( - EPenInputCmdRecognitionWithDictionary, dicIndex)) - { - aMenuPane->SetItemDimmed( - EPenInputCmdRecognitionWithDictionary, disableDic); - } - - // add some input mode in option menu - TBool isSplitView = IsEditorSupportSplitIme(); - if(isSplitView) - { - TInt disabledMode = iPenInputServer.DisabledLayout(); - TInt curMode = iLangMan.CurrentImePlugin()->CurrentMode(); - if(!(disabledMode & EPluginInputModeFSQ) && curMode != EPluginInputModeFSQ ) - { - aMenuPane->SetItemDimmed(EPeninputCmdFSQ, EFalse); - } - if(!(disabledMode & EPluginInputModeItut) && curMode != EPluginInputModeItut) - { - aMenuPane->SetItemDimmed(EPenInputCmdVITUT, EFalse); - } - - } - - iLangMan.CurrentImePlugin()->DynInitMenuPaneL(aMenuPane); - } - - - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::OnFocusChangedL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::OnFocusChangedL( TBool aGainForeground ) - { - if (iLaunchHelp) - { - return; - } - - if ( iFepMan.StopProcessFocus() ) - { - if (iFepMan.CloseUiOnFocusChange()) - { - ClosePluginInputUiL(ETrue); - } - - return ; - } - - if(aGainForeground && !iPenInputServer.AutoOpen()) - { - ClosePluginInputUiL(ETrue); - return; - } - - - TUid appId = GetCurAppUid(); - TBool bClose = ETrue; - TBool bOpen = ETrue; - TUid focusAppId = GetFocusAppUid(); - - if ( !aGainForeground && appId == focusAppId ) - { - return; - } - - if( !iLaunchMenu && IsGlobalNotesApp(focusAppId)) - - { - if( iPluginInputMode == EPluginInputModeItut || - iPluginInputMode == EPluginInputModeFSQ || - iPluginInputMode == EPluginInputModeFingerHwr) - { - bClose = EFalse; - } - - } - iLaunchMenu = EFalse; - - // In globsl notes editor, launching global notes not fep dlg or menu - if(focusAppId.iUid == appId.iUid && - IsGlobalNotesApp(appId) && - !iFepMan.IsFepAwareTextEditor()) - { - if( iPluginInputMode == EPluginInputModeItut || - iPluginInputMode == EPluginInputModeFSQ || - iPluginInputMode == EPluginInputModeFingerHwr) - { - ClosePluginInputUiL(ETrue); - if(iPenInputSvrConnected ) //lost foreground - { - iPenInputServer.LoseForeground(); - } - - return; - } - } - - //global notes editor won't open automatically - /*if(IsGlobalNotesApp(appId) || IsGlobalNotesApp(focusAppId)) - { - if(!iPenInputServer.IsDimmed()) - bOpen = EFalse; - }*/ - - if ( aGainForeground && iFepMan.FepAwareTextEditor() && IsCurrentWindInOpenList() ) - { - if(!iPenInputSvrConnected) - { - HandleEventsFromFepL(EPluginEditorActivate,0); - } - - if(!bOpen ) - { - return; - } - - if( iInMenu && iCurEditor == iFepMan.FepAwareTextEditor() ) - { - ResetMenuState(); - InformMfneUiStatusL( EFalse ); - // If need to open setting app automatically, - // do not open Touch window again. Fix for ESCN-7NVAWF - TBool langChange = iCurLanguage != iSharedData.InputTextLanguage(); - - TryChangePluginInputModeByModeL( - (TPluginInputMode)iSharedData.PluginInputMode(), - langChange?EPenInputOpenManually:EPenInputOpenAutomatically, - ERangeInvalid); - return; - } - -// iPenInputServer.UpdateAppInfo(KNullDesC, EAppIndicatorMsg); - - //only automatically open when window in the list - - if ( !iFastSwapByMenu ) - { - TBool langChange = iCurLanguage != iSharedData.InputTextLanguage(); - // iPenInputServer.DimUiLayout(EFalse); - TBool enableAdaptiveSearch = EFalse; - if ( iFepMan.IsFindPaneEditor() && iFepMan.IsSupportedAdaptiveSearch() ) - { - iAvkonRepository->Get( KAknAvkonAdaptiveSearchEnabled, enableAdaptiveSearch ); - if ( enableAdaptiveSearch ) - { - if(!(iInMenu && ( iPluginInputMode == EPluginInputModeItut || - iPluginInputMode == EPluginInputModeFSQ ))) - { - ClosePluginInputModeL(ETrue); - if(iPenInputSvrConnected ) //lost foreground - { - iPenInputServer.LoseForeground(); - } - } - } - } - if ( !enableAdaptiveSearch ) - { - TInt openMode = EPenInputOpenAutomatically; - TPluginInputMode inputMode = (TPluginInputMode)iSharedData.PluginInputMode(); - if ((inputMode == EPluginInputModeFSc || inputMode == EPluginInputModeHwr || - inputMode == EPluginInputModeFingerHwr) && - iFepMan.IsSupportsSecretText()) - { - openMode = EPenInputOpenManually; - } - if(langChange) - { - openMode = EPenInputOpenManually; - } - - TryChangePluginInputModeByModeL(inputMode, openMode, ERangeInvalid); - } - } - iFastSwapByMenu = EFalse; - } - else - { - TBool enableAdaptiveSearch = EFalse; - - if ( iFepMan.IsFindPaneEditor() && iFepMan.IsSupportedAdaptiveSearch() ) - { - iAvkonRepository->Get( KAknAvkonAdaptiveSearchEnabled, enableAdaptiveSearch ); - if ( enableAdaptiveSearch ) - { - if(iInMenu && ( iPluginInputMode == EPluginInputModeItut || - iPluginInputMode == EPluginInputModeFSQ || - iPluginInputMode == EPluginInputModeFingerHwr)) - { - //iPenInputServer.DimUiLayout(ETrue); //dim the ui - return; - } - - ClosePluginInputModeL(ETrue); - if(iPenInputSvrConnected ) //lost foreground - { - iPenInputServer.LoseForeground(); - } - } - } - - if ( !enableAdaptiveSearch ) - { - if(iInMenu && ( iPluginInputMode == EPluginInputModeItut || - iPluginInputMode == EPluginInputModeFSQ || - iPluginInputMode == EPluginInputModeFingerHwr)) - { - //iPenInputServer.DimUiLayout(ETrue); //dim the ui - return; - } - - //current control is not any kind of editor - if(bClose) - { - ClosePluginInputUiL(ETrue); - if(iPenInputSvrConnected ) //lost foreground - { - iPenInputServer.LoseForeground(); - } - } - else - { - //send dim command - //global notes app do nothing when lose focus - if( iPenInputSvrConnected ) - { - iPenInputServer.SetInternalPopUp(iInMenu); - iPenInputServer.SetEditorPriority(iEditorPriority); - TUid curApp = GetCurAppUid(); - iPenInputServer.SetGlobalNotes( IsGlobalNotesApp(curApp) && - !iInGlobleNoteEditor); - iPenInputServer.DimUiLayout(ETrue); - } - } - } - } - - //set touch pane enable/disable - if( iFepMan.FepAwareTextEditor() ) - { - iFepMan.UiInterface()->TouchPaneAllowInputMethodActivation(ETrue); - } - else - { - iFepMan.UiInterface()->TouchPaneAllowInputMethodActivation(EFalse); - } - - iFepMan.UiInterface()->TouchPaneRefreshL(); - } -void CAknFepPluginManager::SendIcfDataL( TPluginSync aSyncType ) - { - if( PluginInputMode() == EPluginInputModeNone || - !iCurrentPluginInputFepUI ) - { - return; - } - - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - if ( !edit ) - { - if ( IsDimed() ) - { - TFepInputContextFieldData icfData; - icfData.iCmd = EPeninputICFInitial; - icfData.iText.Set(*iLastEditorContentBuf); - icfData.iCurSel = iCurSelPre; - if ( iFepMan.IsFlagSet(CAknFepManager::EFlagNoMatches) ) - { - icfData.iFlag = EFepICFDataInlineNoMatch; - } - if ( ExistInlineText() ) // inline - { - icfData.iStartPos = iFepMan.UncommittedText().LowerPos(); - icfData.iLength = iCurSelPre.iCursorPos - icfData.iStartPos; - icfData.iMidPos = 0; - } - iCurrentPluginInputFepUI->HandleCommandL - (ECmdPenInputSendEditorTextAndCurPos, reinterpret_cast(&icfData)); - } - return; - } - - if( iDisableSyncText ) - { - iPendingSyncReq = ETrue; - return; - } - - iPendingSyncReq = EFalse; - - TBool enableCursor; - TBool enableSelection; - TFepInputContextFieldData icfData; - - if ( iFepMan.IsFeatureSupportedJapanese() - && EPluginSyncCurSel == aSyncType - && iFepMan.FepAwareTextEditor()->DocumentLengthForFep() > iPreDocumentLengthForFep - && iCurSelCur.iAnchorPos > iPreDocumentLengthForFep ) // add linefeed by Down Key - { - aSyncType = EPluginSyncUpdatedText; - iCurSelPre.iAnchorPos = iPreDocumentLengthForFep; - } - - edit->GetCursorSelectionForFep( iCurSelCur ); - TInt editContentLen = edit->DocumentLengthForFep(); - - if( iCurSelCur.iCursorPos > editContentLen ) - { - iCurSelCur.iCursorPos = editContentLen; - } - if( iCurSelCur.iAnchorPos > editContentLen ) - { - iCurSelCur.iAnchorPos = editContentLen; - } - - // 1. set cursor visiblity - CAknEdwinState* editorState = iFepMan.EditorState(); - TBool secretEditor = iFepMan.IsSupportsSecretText(); - - if (editorState) - { - enableCursor = !IsEditorCursorDisabled(); - enableSelection = IsEditorCursorSelVisible(); - } - else // MFNE - { - enableCursor = (iCurSelCur.Length()==0); - enableSelection = (iCurSelCur.Length()>0); - } - icfData.iCursorVisibility = enableCursor; - icfData.iCursorSelVisible = enableSelection; - - delete iIcfDataBuf; - iIcfDataBuf = NULL; - - // 2. set cursor xy-position in window - TPoint position(-1,-1); - TInt height = 0; - TInt ascent = 0; - - if( PluginInputMode() == EPluginInputModeFSc ) - { - edit->GetScreenCoordinatesForFepL - ( position, height, ascent, iCurSelCur.iCursorPos ); - icfData.iRect = TRect( TPoint( position.iX, position.iY-ascent ), - TPoint( position.iX, position.iY+height-ascent ) ); - } - - // 3. set cursor selection - icfData.iCurSel = iCurSelCur; - - // 4. set leading edge flag - icfData.iLeadingEdge = (iFepMan.DocPos().iType == TTmDocPosSpec::ELeading); - - // 5. set icf direction - if ( iFepMan.IsMfneEditor() ) - { - icfData.iFlag = EFepICFDataDirectionMFNE; - } - else - { - if ( TBidiText::ScriptDirectionality - ( TLanguage( iFepMan.InputLanguageCapabilities().iInputLanguageCode ) ) == - TBidiText::ELeftToRight ) - { - icfData.iFlag = EFepICFDataDirectionLTR; - } - else - { - icfData.iFlag = EFepICFDataDirectionRTL; - } - } - - // 6. set other icf data info - // get last editor content - TPtrC lastEditorContent; - if ( !iLastEditorContentBuf ) - { - lastEditorContent.Set( KNullDesC ); - } - else - { - lastEditorContent.Set( iLastEditorContentBuf->Des() ); - } - - // get current editor content - HBufC* currentEditorContentBuf = HBufC::NewLC( editContentLen ); - TPtr16 currentEditorContent = currentEditorContentBuf->Des(); - edit->GetEditorContentForFep( currentEditorContent, 0, editContentLen ); - - TBool send = ETrue; - - if ( !SetSyncIcfDataL( icfData, lastEditorContent, currentEditorContent ) ) - { - send = EFalse; - } - - if ( send ) - { - iCurrentPluginInputFepUI->HandleCommandL - (ECmdPenInputSendEditorTextAndCurPos, reinterpret_cast(&icfData)); - } - - if ( secretEditor ) - { - TBool cursorDisabled = IsEditorCursorDisabled(); - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputDimArrowKeys, cursorDisabled ); - } - - - // reset last editor content buffer - delete iLastEditorContentBuf; - iLastEditorContentBuf = currentEditorContentBuf; - CleanupStack::Pop(); // currentEditorContentBuf - - iCurSelPre.iCursorPos = iCurSelCur.iCursorPos; - iCurSelPre.iAnchorPos = iCurSelCur.iAnchorPos; - iPreDocumentLengthForFep = editContentLen; - } - -TBool CAknFepPluginManager::SetSyncIcfDataL( TFepInputContextFieldData& aIcfData, - const TDesC& aLastEditorContent, - const TDesC& aCurrentEditorContent ) - { - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - - // if content is the same, sync cursor selection only - if ( !iModeChanged && - aLastEditorContent.Compare( aCurrentEditorContent ) == 0 ) - { - if ( aIcfData.iCurSel.HigherPos() > edit->DocumentLengthForFep() || - aIcfData.iCurSel.LowerPos() < 0 ) - { - return EFalse; - } - return SetSyncCurSelIcfDataL( aIcfData ); - } - - if ( TextInlined( aLastEditorContent, aCurrentEditorContent ) ) // inline - { - aIcfData.iCmd = EPeninputICFReplace; - aIcfData.iStartPos = iFepMan.UncommittedText().LowerPos(); - aIcfData.iLength = iCurSelPre.HigherPos() - aIcfData.iStartPos; - TInt readLen = iFepMan.UncommittedText().Length(); - iIcfDataBuf = HBufC::NewL( readLen ); - TPtr16 icfDes = iIcfDataBuf->Des(); - edit->GetEditorContentForFep( icfDes, aIcfData.iStartPos, readLen ); - if ( iFepMan.IsFlagSet(CAknFepManager::EFlagNoMatches) ) - { - aIcfData.iFlag = EFepICFDataInlineNoMatch; - } - aIcfData.iText.Set(icfDes); - - if ( EnableITIOnFSQ() ) - { - TInt tailLength = 0; - iFepMan.PtiEngine()->HandleCommandL - ( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - if ( tailLength > 0 ) - { - aIcfData.iMidPos = tailLength; - } - else - { - aIcfData.iMidPos = 0; - } - } - else - { - aIcfData.iMidPos = 0; - } - - aIcfData.iCursorVisibility = EFalse; - aIcfData.iCursorSelVisible = EFalse; - } - else if ( TextInserted( aLastEditorContent, aCurrentEditorContent ) ) // insert - { - aIcfData.iCmd = EPeninputICFReplace; - aIcfData.iStartPos = iCurSelPre.LowerPos(); - aIcfData.iLength = iCurSelPre.Length(); - aIcfData.iMidPos = -1; - TInt readLen = iCurSelCur.iCursorPos - iCurSelPre.LowerPos(); - iIcfDataBuf = HBufC::NewL( readLen ); - TPtr16 icfDes = iIcfDataBuf->Des(); - edit->GetEditorContentForFep( icfDes, aIcfData.iStartPos, readLen ); - aIcfData.iText.Set(icfDes); - } - else if ( TextDeleted( aLastEditorContent, aCurrentEditorContent ) ) // delete - { - aIcfData.iCmd = EPeninputICFDelete; - aIcfData.iStartPos = iCurSelCur.iCursorPos; - aIcfData.iLength = aLastEditorContent.Length() - aCurrentEditorContent.Length(); - aIcfData.iMidPos = -1; - aIcfData.iText.Set(KNullDesC); - } - else if ( !iModeChanged && iFepMan.IsFeatureSupportedJapanese() - && (iFepMan.FepAwareTextEditor()->DocumentLengthForFep() < iPreDocumentLengthForFep - || iFepMan.FepAwareTextEditor()->DocumentLengthForFep() == iPreDocumentLengthForFep - && iCurSelCur.iCursorPos > 0) - && iCurSelCur.iCursorPos == iCurSelPre.iCursorPos - && iCurSelCur.iAnchorPos == iCurSelPre.iAnchorPos ) - { - if ( iFepMan.FepAwareTextEditor()->DocumentLengthForFep() < iPreDocumentLengthForFep ) // Delete Right - { - aIcfData.iCmd = EPeninputICFDelete; - aIcfData.iStartPos = iCurSelCur.iCursorPos; - aIcfData.iLength = iPreDocumentLengthForFep - - iFepMan.FepAwareTextEditor()->DocumentLengthForFep(); - aIcfData.iMidPos = -1; - aIcfData.iText.Set(KNullDesC); - } - else // Replace - { - TInt repLen = (iCurSelCur.iCursorPos > 1)? 2:1; - iIcfDataBuf = HBufC::NewL( repLen ); - TPtr16 icfDes = iIcfDataBuf->Des(); - iFepMan.FepAwareTextEditor()->GetEditorContentForFep( icfDes, - iCurSelCur.iCursorPos - repLen, - repLen ); - if (2 == repLen && icfDes[0] == KVkbParagraphSeparator) - { - repLen = 1; - icfDes.Delete(0,1); - } - aIcfData.iCmd = EPeninputICFReplace; - aIcfData.iStartPos = iCurSelCur.iCursorPos - repLen; - aIcfData.iLength = repLen; - aIcfData.iMidPos = -1; - aIcfData.iText.Set(icfDes); - } - } - else if ( TextMultiTapped( aLastEditorContent, aCurrentEditorContent ) )// multitap - { - aIcfData.iCmd = EPeninputICFReplace; - aIcfData.iStartPos = iCurSelCur.iCursorPos - 1; - aIcfData.iLength = 1; - aIcfData.iMidPos = -1; - iIcfDataBuf = HBufC::NewL( aIcfData.iLength ); - TPtr16 icfDes = iIcfDataBuf->Des(); - edit->GetEditorContentForFep( icfDes, aIcfData.iStartPos, aIcfData.iLength ); - aIcfData.iText.Set(icfDes); - } - else - { - aIcfData.iCmd = EPeninputICFInitial; - aIcfData.iStartPos = 0; - aIcfData.iLength = edit->DocumentLengthForFep(); - aIcfData.iMidPos = -1; - iIcfDataBuf = HBufC::NewL( aIcfData.iLength ); - TPtr16 icfDes = iIcfDataBuf->Des(); - edit->GetEditorContentForFep( icfDes, 0, aIcfData.iLength ); - aIcfData.iText.Set(icfDes); - } - if ( aIcfData.iStartPos > edit->DocumentLengthForFep() || aIcfData.iStartPos < 0 ) - { - return EFalse; - } - return ETrue; - } - -TBool CAknFepPluginManager::SetSyncCurSelIcfDataL( TFepInputContextFieldData& aIcfData ) - { - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - if ( ExistInlineText() ) // inline - { - aIcfData.iCmd = EPeninputICFSetCurSel; - aIcfData.iStartPos = iFepMan.UncommittedText().LowerPos(); - aIcfData.iLength = iCurSelPre.iCursorPos - aIcfData.iStartPos; - TInt readLen = iFepMan.UncommittedText().Length(); - iIcfDataBuf = HBufC::NewL( readLen ); - TPtr16 icfDes = iIcfDataBuf->Des(); - edit->GetEditorContentForFep( icfDes, aIcfData.iStartPos, readLen ); - if ( iFepMan.IsFlagSet(CAknFepManager::EFlagNoMatches) ) - { - aIcfData.iFlag = EFepICFDataInlineNoMatch; - } - aIcfData.iText.Set(icfDes); - - if ( EnableITIOnFSQ() ) - { - TInt tailLength = 0; - iFepMan.PtiEngine()->HandleCommandL - ( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - if ( tailLength > 0 ) - { - aIcfData.iMidPos = tailLength; - } - else - { - aIcfData.iMidPos = 0; - } - } - else - { - aIcfData.iMidPos = 0; - } - - aIcfData.iCursorVisibility = EFalse; - aIcfData.iCursorSelVisible = EFalse; - } - else - { - // update curosr pos - aIcfData.iCmd = EPeninputICFSetCurSel; - aIcfData.iStartPos = iCurSelCur.iCursorPos; - aIcfData.iMidPos = -1; - aIcfData.iText.Set(KNullDesC); - } - - iInlineStateOn = ( aIcfData.iMidPos == 0 ); - - return ETrue; - } - -TBool CAknFepPluginManager::TextInlined( const TDesC& aLastEditorContent, - const TDesC& aCurrentEditorContent) - { - if ( iModeChanged ) - { - return EFalse; - } - - return ( ExistInlineText() && - aLastEditorContent.Left(iFepMan.UncommittedText().LowerPos()).Compare( - aCurrentEditorContent.Left(iFepMan.UncommittedText().LowerPos()) ) == 0 && - aLastEditorContent.Mid(iCurSelPre.HigherPos()).Compare( - aCurrentEditorContent.Mid(iCurSelCur.iCursorPos) ) == 0 ); - } - -TBool CAknFepPluginManager::TextInserted( const TDesC& aLastEditorContent, - const TDesC& aCurrentEditorContent) - { - if ( iModeChanged ) - { - return EFalse; - } - - return ( iCurSelCur.LowerPos() > iCurSelPre.LowerPos() && - aLastEditorContent.Left(iCurSelPre.LowerPos()).Compare( - aCurrentEditorContent.Left(iCurSelPre.LowerPos()) ) == 0 && - aLastEditorContent.Mid(iCurSelPre.HigherPos()).Compare( - aCurrentEditorContent.Mid(iCurSelCur.iCursorPos) ) == 0); - } - -TBool CAknFepPluginManager::TextDeleted( const TDesC& aLastEditorContent, - const TDesC& aCurrentEditorContent) - { - if ( iModeChanged ) - { - return EFalse; - } - - if ( aLastEditorContent.Length() < aCurrentEditorContent.Length() ) - { - return EFalse; - } - - TPtrC curRightContent = aCurrentEditorContent.Mid(iCurSelCur.iCursorPos); - - TInt pos = aLastEditorContent.Length()-curRightContent.Length(); - - return ( iCurSelCur.HigherPos() <= iCurSelPre.HigherPos() && - aLastEditorContent.Left(iCurSelCur.iCursorPos).Compare( - aCurrentEditorContent.Left(iCurSelCur.iCursorPos) ) == 0 - && ( pos >= 0) && aLastEditorContent.Mid(pos).Compare(curRightContent ) == 0 ); - } - -TBool CAknFepPluginManager::TextMultiTapped( const TDesC& aLastEditorContent, - const TDesC& aCurrentEditorContent) - { - if ( iModeChanged ) - { - return EFalse; - } - - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - - if ( iCurSelCur.iCursorPos > aLastEditorContent.Length() ) - { - return EFalse; - } - return ( iCurSelCur.iCursorPos > 0 && - ( iCurSelPre.iCursorPos <= edit->DocumentMaximumLengthForFep() - || edit->DocumentMaximumLengthForFep() == 0 ) && - aLastEditorContent.Left(iCurSelCur.iCursorPos-1).Compare( - aCurrentEditorContent.Left(iCurSelCur.iCursorPos-1) ) == 0 && - aLastEditorContent.Mid(iCurSelCur.iCursorPos).Compare( - aCurrentEditorContent.Mid(iCurSelCur.iCursorPos) ) == 0); - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::SetCursorSelectionL -// Set editor cursor selection. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::SetCursorSelectionL(const TCursorSelection& aCurSel, TBool aSyncCursor) - { - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - if(edit && - aCurSel.HigherPos() <= edit->DocumentLengthForFep() && - aCurSel.LowerPos() >= 0 ) - { - if ( ( aCurSel.iCursorPos != iCurSelPre.iCursorPos ) || - ( aCurSel.iAnchorPos != iCurSelPre.iAnchorPos ) || aSyncCursor) - { - edit->SetCursorSelectionForFepL(aCurSel); - - iFepMan.SynCCPSoftKey(); - TCursorSelection curSel; - edit->GetCursorSelectionForFep( curSel ); - - if(curSel.iCursorPos != aCurSel.iCursorPos || - curSel.iAnchorPos != aCurSel.iAnchorPos ) - { - iCurSelPre.iCursorPos = aCurSel.iCursorPos; - iCurSelPre.iAnchorPos = aCurSel.iAnchorPos; - } - - if ( aSyncCursor || - curSel.iCursorPos != aCurSel.iCursorPos || - curSel.iAnchorPos != aCurSel.iAnchorPos || - curSel.iCursorPos != iCurSelPre.iCursorPos || - curSel.iAnchorPos != iCurSelPre.iAnchorPos ) - { - iCaseMan.UpdateCase(ENullNaviEvent); - SendIcfDataL(); - } - else - { - iCurSelPre.iCursorPos = aCurSel.iCursorPos; - iCurSelPre.iAnchorPos = aCurSel.iAnchorPos; - } - } - } - } - -HBufC* CAknFepPluginManager::GetNumberKeymapResource(TInt aCaseMode) - { - HBufC* rtn = NULL; - TRAP_IGNORE( rtn = DoGetNumberKeymapResourceL( aCaseMode )); - return rtn; - } - -HBufC* CAknFepPluginManager::DoGetNumberKeymapResourceL(TInt aCaseMode) - {//the code is borrowed from DoLaunchSctAndPctL - - HBufC* rtn = NULL; - - //first get resource id - TInt currentEditorSCTResId = iFepMan.GetCurrentEditorSCTResId(); - - //load from resource - TResourceReader reader; - CCoeEnv* env = CCoeEnv::Static(); - env->CreateResourceReaderLC(reader, currentEditorSCTResId); - reader.ReadInt32();//LONG flag - reader.ReadTPtrC();//LTEXT title=""; - reader.ReadInt32();//LLINK pages=0; - reader.ReadInt32();//LLINK buttons=0; - - const TInt count = reader.ReadInt16(); //line count - for( TInt i = 0; i < count; ++i ) - { - TInt type = reader.ReadInt16(); - if( type == EAknCtSpecialCharacterMap ) - { - reader.ReadTPtrC(); //caption - reader.ReadInt16(); //id - reader.ReadInt32(); //flags - TInt component_count=reader.ReadInt16(); - for (TInt ii=0;iiiControl = controlInfo.iControl; - line->ConstructFromResourceL(reader); - CleanupStack::PopAndDestroy(line); // line - } - else - { - User::Leave(KErrNotSupported); - } - } - } - - CleanupStack::PopAndDestroy(); //reader - return rtn; - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::InitializePluginInputL -// Initialize plugin UI -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::InitializePluginInputL(TInt aOpenMode, TInt aSuggestRange, - TBool aCleanContent) - { - if ( iFepMan.FepManState()!= EAknFepStateUIActive || iClosePluginInputMode ) - { - //Set hardware key board mode - iFepMan.TryCloseUiL(); - iClosePluginInputMode = EFalse; - } - - UpdatePredicState(); - - NotifyLayoutL( aOpenMode, aSuggestRange, aCleanContent ); - -// iPenInputServer.UpdateAppInfo(KNullDesC, EAppIndicatorMsg); - - iPluginInputMode = (TPluginInputMode)iLangMan.CurrentImePlugin()->CurrentMode(); - - //adjust VKB window if data query dialog is displaying - if(IsDisplayDataQuery()) - { - RDrawableWindow* focusWin = - CCoeEnv::Static()->AppUi()->TopFocusedControl()->DrawableWindow(); - if(!iLastDataQueryWin - || iLastDataQueryWin != focusWin) - { - iDataQueryAlreadyShow = EFalse; - iLastDataQueryWin = focusWin; - } - } - if(IsDisplayDataQuery() && //data query - !iDataQueryAlreadyShow && //only adjust once - PluginInputMode() == EPluginInputModeVkb) //only vkb mode - { - RepositionDataQuery(EFalse); - } - - if ( !NotifyInGlobalNoteEditorL() ) - { - iCurrentPluginInputFepUI->ActivateUI(); - } - - iFepMan.UpdateIndicators(); - iCurrentPluginInputFepUI->SetNextFepUI( - iLangMan.GetFepUI(iFepMan.InputMode(), ENoneWidthChar, - iFepMan.IsPredictive(iFepMan.InputMode())) ); - //SyncFepAwareText( EPluginSyncUpdatedText ); //sync again - iLastSubmitCount = 0; - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::LaunchPenInputMenuL -// Launch plugin menu. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::LaunchPenInputMenuL(TInt aResourceId, TBool aRemeber) - { - TInt previousModes = iCurPermitModes; - TBool previousSCT = isLanuchSCT; - TInt inputmode = PluginInputMode(); - - if (R_AVKON_PENINPUT_OPTION_MENU_BAR == aResourceId && - (inputmode == EPluginInputModeItut || - inputmode == EPluginInputModeVkb || - inputmode == EPluginInputModeFSQ)) - { - isLanuchSCT = EFalse; - iCurPermitModes = iFepMan.PermittedModes(); - isLanuchSCT = iFepMan.IsAbleToLaunchSCT(); - } - else - { - iCurPermitModes = 0; - } - - if (aRemeber) - { - iFepMan.RemeberEditorState(); - } - else - { - iCurPermitModes = previousModes; - isLanuchSCT = previousSCT; - } - - iPenInputMenu->ShowL(aResourceId); - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::LaunchPenInputLanguageSelectionL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::LaunchPenInputLanguageSelectionL( TBool /*aLaunchedByTouchWin*/ ) - { - //record langauge -// TInt oldLang = iSharedData.InputTextLanguage(); -// CPenInputGSInterface* setting = CPenInputGSInterface::NewL(); -// CleanupStack::PushL(setting); -// iFepMan.SetCancelPopupInQwerty( aLaunchedByTouchWin ); -// setting->ShowInputLanguagePageL(); -// iFepMan.SetCancelPopupInQwerty( EFalse ); -// CleanupStack::PopAndDestroy(setting); -// TInt inputLanguage = iSharedData.InputTextLanguage(); -// if( oldLang != inputLanguage) -// { -// iSharedData.SetInputTextLanguage(inputLanguage); -// iFepMan.ChangeInputLanguageL(inputLanguage); -// iFepMan.SetFlag( CAknFepManager::EFlagNewSharedDataInputLanguage -// | CAknFepManager::EFlagNewSharedDataInputMode ); -// -// } - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::LaunchPenInputRecognitionWithDictionarySelectionL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::LaunchPenInputRecognitionWithDictionarySelectionL() - { - //record langauge -// CPenInputGSInterface* setting = CPenInputGSInterface::NewL(); -// CleanupStack::PushL(setting); -// setting->ShowRecognitionWithDictionaryL(); -// CleanupStack::PopAndDestroy(setting); -// TInt inputLanguage = iSharedData.InputTextLanguage(); - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::LaunchPenInputSettingL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::LaunchPenInputSettingL() - { - //record langauge -// TInt oldLang = iSharedData.InputTextLanguage(); -// if ( !iGsInterface ) -// { -// iGsInterface = CPenInputGSInterface::NewL(); -// } -// iGsInterface->ShowMainViewL(); -// TInt inputLanguage = iSharedData.InputTextLanguage(); -// if( oldLang != inputLanguage) -// { -// iFepMan.ChangeInputLanguageL(inputLanguage); -// } - - } - -// ----------------------------------------------------------------------------- -// CAknFepManager::ParseInputContextContent -// Parse editor text passed to plugin ICF -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::ParseInputContextContent(TDes& aBuffer, TInt aCurrent, - TInt& aFrom, TInt& aTo) - { - TInt maxLen = aBuffer.Length(); - TInt i; - //find from - for( i = aCurrent - 1; i >=0; i--) - { - if( aBuffer[i] == KVkbTabulator) - { - // tabulator found, replace it with a space - aBuffer.Replace(i, 1, KVkbTabChar); - } - else if(aBuffer[i] == KVkbParagraphSeparator) - { - break; - } - } - - aFrom = i + 1; - - for(i = aCurrent; i < maxLen; i++) - { - if( aBuffer[i] == KVkbTabulator) - { - // tabulator found, replace it with a space - aBuffer.Replace(i, 1, KVkbTabChar); - } - else if(aBuffer[i] == KVkbParagraphSeparator) - { - break; - } - } - - aTo = i; - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::SubmitUiPluginTextL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::SubmitUiPluginTextL(const TDesC& aData, - TSimulateEventMode aForcedMode) - { - iDisableSyncText = ETrue; - // a flag to decide if to simulate space or enter key event in number only editor - // if is asked, simulate these keys anyway. - TBool disableSpaceEnterFlag = EFalse ; - - if ( iFepMan.PermittedModes() == EAknEditorNumericInputMode ) - { - CAknEdwinState* editorState = iFepMan.EditorState(); - - if ( !editorState ) - { - disableSpaceEnterFlag = !iFepMan.IsMfneEditor(); - } - else - { - disableSpaceEnterFlag = - !(editorState->Flags() & EAknEditorFlagDeliverVirtualKeyEventsToApplication); - } - } - - CCoeEnv* env = CCoeEnv::Static(); - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - /* - TBool noSimulate = !iFepMan.IsMfneEditor() && iCurSelPre.Length() > 0 && - ( PluginInputMode() == EPluginInputModeItut || PluginInputMode() == EPluginInputModeFSQ ); - */ - for(int i = 0; i < aData.Length(); ++i) - { - TKeyEvent keyEvent = {aData[i], EStdKeyNull, 0, 0}; - - /* - if ( noSimulate ) - { - if (keyEvent.iCode == EKeyLeftArrow ) - { - if(iCurSelPre.iCursorPos > 0) - { - TInt pos = iCurSelPre.iCursorPos - 1; - edit->SetCursorSelectionForFepL - ( TCursorSelection( pos, iCurSelPre.iAnchorPos ) ); - } - else if(iCurSelPre.iCursorPos == 0) - { - edit->SetCursorSelectionForFepL - ( TCursorSelection( iCurSelPre.iCursorPos, iCurSelPre.iAnchorPos ) ); - } - SendIcfDataL(); - continue; - } - else if (keyEvent.iCode == EKeyRightArrow ) - { - if(iCurSelPre.iCursorPos < edit->DocumentLengthForFep()) - { - TInt pos = iCurSelPre.iCursorPos + 1; - edit->SetCursorSelectionForFepL - ( TCursorSelection( pos, iCurSelPre.iAnchorPos ) ); - } - else if(iCurSelPre.iCursorPos == edit->DocumentLengthForFep()) - { - edit->SetCursorSelectionForFepL - ( TCursorSelection( iCurSelPre.iCursorPos, iCurSelPre.iAnchorPos ) ); - } - SendIcfDataL(); - continue; - } - } - */ - - if (keyEvent.iCode == EKeyLeftArrow && iHasSWEventCap) - { - TRawEvent eventDown; - eventDown.Set( TRawEvent::EKeyDown, EStdKeyLeftArrow); - eventDown.SetTip( ETrue ); - static_cast(CEikonEnv::Static()->EikAppUi())->DisableNextKeySound( EStdKeyLeftArrow ); - CCoeEnv::Static()->WsSession().SimulateRawEvent( eventDown ); - - TRawEvent eventUp; - eventUp.Set( TRawEvent::EKeyUp, 14); - eventUp.SetTip( ETrue ); - CCoeEnv::Static()->WsSession().SimulateRawEvent( eventUp ); - } - - else if (keyEvent.iCode == EKeyRightArrow && iHasSWEventCap) - { - TRawEvent eventDown; - eventDown.Set( TRawEvent::EKeyDown, EStdKeyRightArrow); - eventDown.SetTip( ETrue ); - static_cast(CEikonEnv::Static()->EikAppUi())->DisableNextKeySound( EStdKeyRightArrow ); - CCoeEnv::Static()->WsSession().SimulateRawEvent( eventDown ); - - TRawEvent eventUp; - eventUp.Set( TRawEvent::EKeyUp, EStdKeyRightArrow); - eventUp.SetTip( ETrue ); - CCoeEnv::Static()->WsSession().SimulateRawEvent( eventUp ); - } - - - else if ( keyEvent.iCode >= EKeyApplication27 - || (iFepMan.IsFeatureSupportedJapanese() - && iFepMan.InputMode() == EHiraganaKanji - && edit - && (EPtiKey0 <= keyEvent.iCode && keyEvent.iCode <= EPtiKey9) - ) - ) - { - TBuf<1> buf; - buf.Append( TChar( aData[i] ) ); - iFepMan.SubmitInlineTextL( buf ); - } - else - { - if ( ( disableSpaceEnterFlag && - ( keyEvent.iCode == EKeySpace || keyEvent.iCode == EKeyEnter ) ) || - ( edit && edit->DocumentLengthForFep() <= 0 && - ( keyEvent.iCode == EKeyDelete || keyEvent.iCode == EKeyBackspace ) ) ) - { - iLastSubmitCount--; - continue; - } - if ( keyEvent.iCode == EKeyTab ) - { - iLastSubmitCount--; - } - else if (keyEvent.iCode == EKeySpace) - { - keyEvent.iScanCode = EStdKeySpace; - } - else if (keyEvent.iCode == EKeyDelete) - { - keyEvent.iScanCode = EStdKeyDelete; - if (iSharedData.ClearDirection() == EClearDirectionLeft) - { - keyEvent.iCode = EKeyBackspace; - keyEvent.iScanCode = EStdKeyBackspace; - } - } - else if (keyEvent.iCode == EKeyBackspace) - { - keyEvent.iScanCode = EStdKeyBackspace; - } - else if (keyEvent.iCode == EKeyEnter) - { - keyEvent.iScanCode = EStdKeyEnter; - } - else if ( EnableITIOnFSQ() ) - { - // For addtion of ITI features on FSQ - // If FSQ is opened with ITI enabled, - // Must get scan code from keymapping, EStdKeyNull won't be handled by ITI engine. - keyEvent.iScanCode = GetScanCodeFromHwKeymapping( aData[i] ); - } - // For converter - // If inputting through VKB or HWR, the event can be done only when aType is equal to EEventKey. - // Besides, only when inputting the dot in VKB or HWR, aKeyEvent.iScanCode is equal to decimalChar. - CAknEdwinState* editorState = iFepMan.EditorState(); - TLocale locale; - if(editorState && - (editorState->NumericKeymap() == EAknEditorConverterNumberModeKeymap || - editorState->NumericKeymap() == EAknEditorCalculatorNumberModeKeymap) && - keyEvent.iCode == locale.DecimalSeparator() ) - { - keyEvent.iScanCode = locale.DecimalSeparator(); - } - - // The keycode is a non-standard keyboard character - keyEvent.iModifiers |= EModifierSpecial; - - - if (keyEvent.iScanCode == EStdKeyBackspace && - iHasSWEventCap && - aForcedMode != EKeyEvent ) - { - TRawEvent eventDown; - eventDown.Set( TRawEvent::EKeyDown, EStdKeyBackspace); - eventDown.SetTip( ETrue ); - static_cast(CEikonEnv::Static()->EikAppUi())->DisableNextKeySound( - EStdKeyBackspace ); - CCoeEnv::Static()->WsSession().SimulateRawEvent( eventDown ); - - TRawEvent eventUp; - eventUp.Set( TRawEvent::EKeyUp, EStdKeyBackspace); - eventUp.SetTip( ETrue ); - CCoeEnv::Static()->WsSession().SimulateRawEvent( eventUp ); - } - else if ( keyEvent.iScanCode == EStdKeyEnter && iHasSWEventCap ) - { - TRawEvent eventDown; - eventDown.Set( TRawEvent::EKeyDown, EStdKeyEnter ); - iAvkonAppUi->DisableNextKeySound( EStdKeyEnter ); - CCoeEnv::Static()->WsSession().SimulateRawEvent( eventDown ); - - TRawEvent eventUp; - eventUp.Set( TRawEvent::EKeyUp, EStdKeyEnter ); - CCoeEnv::Static()->WsSession().SimulateRawEvent( eventUp ); - } - else if ( EnableITIOnFSQ() ) - { - // For addition of ITI features on FSQ. - // If FSQ is opened with ITI enabled, ensure keycatcher to handle key events - // else, remain the old logic. - if ( IsITISupportedKey( keyEvent ) ) - { - // check if need to change current text case - TPtiTextCase textCase = - CaseForMappedCharacter( TChar( keyEvent.iCode ) ); - if ( !IsDeadKeyCode( keyEvent.iCode ) && IsNeedToChangeTextCase( textCase ) ) - { - iFepMan.PtiEngine()->SetCase( textCase ); - } - env->SimulateKeyEventL(keyEvent, EEventKey); - } - else if ( keyEvent.iScanCode == EStdKeyBackspace - || keyEvent.iScanCode == EStdKeyEnter - || keyEvent.iScanCode == EStdKeySpace ) - { - // For these keys, clear the flag to make sure ptiengine handle this key. - env->SimulateKeyEventL(keyEvent, EEventKey); - } - else - { - // When FSQ opened with ITI features enabled, - // but key is not supported by ITI - // commit inline if necessary - if ( iFepMan.UncommittedText().Length() > 0 ) - { - iFepMan.CommitInlineEditL(); - iFepMan.PtiEngine()->CommitCurrentWord(); - } - // set flag to ensure not to be handled by key catcher. - iFepMan.SetFlag(CAknFepManager::EFlagPassNextKey); - env->SimulateKeyEventL(keyEvent, EEventKey); - iFepMan.ClearFlag(CAknFepManager::EFlagPassNextKey); - } - } - else - { - // keep the old logic is not affected - iFepMan.SetFlag(CAknFepManager::EFlagPassNextKey); - env->SimulateKeyEventL(keyEvent, EEventKey); - iFepMan.ClearFlag(CAknFepManager::EFlagPassNextKey); - } - } - } - - //fix defect - if( edit ) - { - env->ForEachFepObserverCall(FepObserverHandleCompletionOfTransactionL); - } - iSyncWithPluginRange = ETrue; - iCaseMan.UpdateCase(ENullNaviEvent); - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCaseMode, iCaseMan.CurrentCase()); - iSyncWithPluginRange = EFalse; - - iDisableSyncText = EFalse; - if( iPendingSyncReq ) - { - SendIcfDataL( EPluginSyncAll ); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::OnPenInputServerKeyEventL -// Handle key event sent from pen input server -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::OnPenInputServerKeyEventL(const TDesC& aData) - { - - iFepMan.PtiEngine()->CancelTimerActivity(); - - if( aData.Length() <= 0 ) - { - return; - } - - if ( iFepMan.IsFepAwareTextEditor() ) - { - CAknEdwinState* editorState = iFepMan.EditorState(); - TBool sendFlag = editorState && - (editorState->Flags() & EAknEditorFlagDeliverVirtualKeyEventsToApplication); - - TInt maxEdSize = iFepMan.FepAwareTextEditor()-> - DocumentMaximumLengthForFep(); - if ( maxEdSize == 0 ) - { - iLastSubmitCount = aData.Length(); - SubmitUiPluginTextL(aData); - } - else - { - TCursorSelection currentSelection; - iFepMan.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelection); - TInt freeSpaceOfEditor = maxEdSize - - iFepMan.FepAwareTextEditor()->DocumentLengthForFep() + - currentSelection.Length(); - - if ( freeSpaceOfEditor >= 0 ) - { - if ( ( aData.Length() <= freeSpaceOfEditor ) || - ( ( aData.Length()-1 == freeSpaceOfEditor ) && - (( aData[aData.Length()-1] == EKeyBackspace ) || - (aData[aData.Length()-1] == EKeyEnter ) || - (aData[aData.Length()-1] == EKeyLeftArrow ) || - (aData[aData.Length()-1] == EKeyRightArrow ) ) )) - { - iLastSubmitCount = aData.Length(); - } - else - { - iLastSubmitCount = freeSpaceOfEditor; - } - - if ( sendFlag ) - { - SubmitUiPluginTextL(aData); - } - else - { - TPtrC charbuf = aData.Left(iLastSubmitCount); - SubmitUiPluginTextL(charbuf); - } - - if (freeSpaceOfEditor == 0 || iLastSubmitCount == freeSpaceOfEditor) - { - HasNoFreeSpace(); - } - - } - else - { - iLastSubmitCount = 0; - if ( sendFlag ) - { - SubmitUiPluginTextL(aData); - } - } - } - } - else - { - SubmitUiPluginTextL(aData); - } - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::SyncIndicatorWithPluginRangeL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::SyncIndicatorWithPluginRangeL() - { - iSyncWithPluginRange = ETrue; - iPluginNativeRange = EFalse; - TInt newMode = iFepMan.InputMode(); - if( iPluginPrimaryRange == ERangeNative ) - { - if( !iFepMan.EditorState() ) - { - return; - } - TInt defaultInputMode = iFepMan.EditorState()->DefaultInputMode(); - if ( iFepMan.IsChineseInputLanguage() ) - { - defaultInputMode = iFepMan.InputMode(); - } - const TInt inputLanguage = iSharedData.InputTextLanguage(); - - switch(inputLanguage) - { - case ELangPrcChinese: - if( defaultInputMode != EPinyin && - defaultInputMode != EStroke ) - { - if ( iFepMan.LastChineseInputMode() ) - { - newMode = iFepMan.LastChineseInputMode(); - } - else - { - newMode = EPinyin; - } - } - else - { - newMode = defaultInputMode; - } - break; - case ELangTaiwanChinese: - if( defaultInputMode != EZhuyin && - defaultInputMode != EStroke ) - { - if ( iFepMan.LastChineseInputMode() ) - { - newMode = iFepMan.LastChineseInputMode(); - } - else - { - newMode = EZhuyin; - } - } - else - { - newMode = defaultInputMode; - } - break; - case ELangHongKongChinese: - if( defaultInputMode != ECangJie && - defaultInputMode != EStroke ) - { - if ( iFepMan.LastChineseInputMode() ) - { - newMode = iFepMan.LastChineseInputMode(); - } - else - { - newMode = EStroke; - } - } - else - { - newMode = defaultInputMode; - } - break; - case ELangJapanese: - { - newMode = defaultInputMode; - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputJapaneseGetModeOfSubRange, (TInt)(&newMode)); - } - break; - case ELangHindi: - { - newMode = EHindi; - } - break; - case ELangKorean: - { - newMode = EHangul; - } - break; - default: - newMode = ELatin; - iPluginNativeRange = ETrue; - break; - } - } - else if( iPluginPrimaryRange == ERangeEnglish || - iPluginPrimaryRange == ERangeAccent ) - { - newMode = ELatin; - } - else if( iPluginPrimaryRange == ERangeNumber ) - { - newMode = ENumber; - } - //else do NOTHING but keep current for other ranges - - if( newMode != iFepMan.InputMode() || - ( newMode == ELatin || newMode == ENumber ) ) - { - iFepMan.TryChangeModeL(newMode); - UpdatePredicState(); - //iCaseMan.SetCurrentCase(iCaseMan.CurrentCase()); - iCaseMan.UpdateCase(ENullNaviEvent); - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCaseMode, - iCaseMan.CurrentCase()); - } - - // Addition for ITI features on FSQ - if ( newMode == ELatin && IsSupportITIOnFSQ() ) - { - // When change range back to Latin - // 1. Config fep state again. - SetItiStateL(); - // 2. Restore predict state for FSQ. - RestorePredictStateL(); - } - else - { - // 1. Restore predict state for FSQ. - ResetItiStateL(); - // 2. Update predict state. - UpdatePredicState(); - } - //Set correct fep ui - if(IsSupportITIOnFSQ()) - { - iCurrentPluginInputFepUI->SetNextFepUI( - iLangMan.GetFepUI(iFepMan.InputMode(), ENoneWidthChar, - iFepMan.IsPredictive(iFepMan.InputMode())) ); - } - iSyncWithPluginRange = EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::GetCurSuggestMode -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::GetCurSuggestMode( TPluginInputMode& aSuggestMode ) - { - TInt fepDisableLayoouts = 0; - TInt disableLayouts = iPenInputServer.DisabledLayout(); - - switch(aSuggestMode) - { - case EPluginInputModeFingerHwr: - case EPluginInputModeFSc: - case EPluginInputModeHwr: - { - if( iFepMan.IsSupportsSecretText() || - ( ( aSuggestMode == EPluginInputModeFSc || - aSuggestMode == EPluginInputModeFingerHwr) && - iSharedData.InputTextLanguage() != ELangPrcChinese && - iSharedData.InputTextLanguage() != ELangTaiwanChinese && - iSharedData.InputTextLanguage() != ELangHongKongChinese )) - { - aSuggestMode = EPluginInputModeItut; - if ((disableLayouts & aSuggestMode)) - { - aSuggestMode = EPluginInputModeFSQ; - } - fepDisableLayoouts |= EPluginInputModeHwr | EPluginInputModeFSc | - EPluginInputModeFingerHwr; - } - } - break; - case EPluginInputModeVkb: - { - } - break; - case EPluginInputModeFSQ: - { - if ((disableLayouts & aSuggestMode)) - { - aSuggestMode = EPluginInputModeItut; - } - } - break; - case EPluginInputModeItut: - { - if ((disableLayouts & aSuggestMode)) - { - aSuggestMode = EPluginInputModeFSQ; - } - } - break; - default: - { - aSuggestMode = EPluginInputModeItut; - if ((disableLayouts & aSuggestMode)) - { - aSuggestMode = EPluginInputModeFSQ; - } - } - break; - } - - if (disableLayouts == 0) - { - return ETrue; - } - - disableLayouts |= fepDisableLayoouts; - - // disable all - if (disableLayouts == EPluginInputModeAll) - { - return EFalse; - } - - if (!(disableLayouts & aSuggestMode)) - { - return ETrue; - } - - TInt testMode = EPluginInputModeHwr; - while ( testMode < EPluginInputModeAll ) - { - if (!(testMode & disableLayouts)) - { - break; - } - testMode<<=1; - } - - if ((testMode == EPluginInputModeFSc || - testMode == EPluginInputModeFingerHwr ) && - iSharedData.InputTextLanguage() != ELangPrcChinese && - iSharedData.InputTextLanguage() != ELangTaiwanChinese && - iSharedData.InputTextLanguage() != ELangHongKongChinese ) - { - return EFalse; - } - - aSuggestMode = TPluginInputMode(testMode); - - return ETrue; - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::ConnectServer -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::ConnectServer() - { - if(!iPenInputSvrConnected) - { - TInt err = iPenInputServer.Connect(); - //iPenInputServer.AddPeninputServerObserverL(this); //always add the handler - if( KErrNone != err ) - { - iFepMan.UiInterface()->TouchPaneSetInputMethodIconActivated(EFalse); - - return EFalse; - } - TRAP_IGNORE(iPenInputServer.AddPeninputServerObserverL(this)); //always add the handler - - iPenInputSvrConnected = ETrue; - } - - iPenInputServer.SetForeground(iOpenPenUiFlag); - - return ETrue; - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::NotifyLayoutL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::NotifyLayoutL(TInt aOpenMode, TInt aSuggestRange, - TBool aCleanContent) - { - TBool isSecret = EFalse; - if ( iFepMan.IsSupportsSecretText() ) - { - isSecret = ETrue; - } - - CAknEdwinState* editorState = iFepMan.EditorState();// still stay here - - // for MFNE Editor - if( !editorState && iFepMan.InputMode() == ENumber ) - { - if( AknTextUtils::NumericEditorDigitType() == EDigitTypeEasternArabicIndic || - AknTextUtils::NumericEditorDigitType() == EDigitTypeDevanagari || - AknTextUtils::NumericEditorDigitType() == EDigitTypeArabicIndic ) - { - iFepMan.TryChangeModeL( ENativeNumber ); - } - else if ( AknTextUtils::NumericEditorDigitType() == EDigitTypeWestern ) - { - iFepMan.TryChangeModeL( ENumber ); - } - } - - if(editorState && (editorState->Flags() & EAknEditorFlagNumberGrouping)) - { - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputIsNumberGrouping, - ETrue ); - } - else - { - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputIsNumberGrouping, - EFalse ); - } - - if ( PluginInputMode() == EPluginInputModeItut ) - { - // The preview bubble item will be shown in option menu - // when current language is Chinese - if ( iFepMan.InputLanguageCapabilities().iInputLanguageCode == ELangPrcChinese || - iFepMan.InputLanguageCapabilities().iInputLanguageCode == ELangTaiwanChinese || - iFepMan.InputLanguageCapabilities().iInputLanguageCode == ELangHongKongChinese ) - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCharacterPreview, - iFepMan.FepShowVkbPreviewStatus()); - } - - if ( iSharedData.InputTextLanguage() == ELangThai - && iFepMan.InputMode() == ENativeNumber ) - { - iFepMan.TryChangeModeL( ENumber ); - } - - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputPermittedRange, - iFepMan.PermittedModes()); - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputEditorState, - reinterpret_cast( editorState )); - NotifyLayoutKeymappingL(); - - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerInputMode, - iFepMan.InputMode()); - - TFepSymbolOfHardwareOne symbolInfo = iFepMan.SymbolInfoOfHardKey1(); - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputSymbolOfHardKeyOne, reinterpret_cast(&symbolInfo)); - - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCaseMode, - iCaseMan.CurrentCase()); - - TBool enableIndicatorBtn = iFepMan.GetPermittedEditorMenu(ETrue) > 0? ETrue : EFalse; - if (IsDimed() && iResourceChange) - { - enableIndicatorBtn = iEnableIndicatorBtn; - } - else - { - iEnableIndicatorBtn = enableIndicatorBtn; - } - - - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputEnableIndicatorButton, - enableIndicatorBtn); - - if (!iSpellOn) - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerSpelling, 0); - SetPromptText( aCleanContent ); - } - else - { - SetITUTSpellingStateL(ETrue); - iIndicatorImgID = 0; - iIndicatorTextID = 0; - } - UpdateITUTIndicator(); - } - else - { - DestroySpellEditor(); - if (PluginInputMode() == EPluginInputModeFSQ || - PluginInputMode() == EPluginInputModeVkb || - PluginInputMode() == EPluginInputModeFingerHwr) - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCharacterPreview, - iFepMan.FepShowVkbPreviewStatus()); - } - - // for Japanese peninput setting - if (iFepMan.IsFeatureSupportedJapanese()) - { - iFepMan.NotifyJapaneseSetting(); - } - - NotifyLayoutKeymappingL(); - - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputPermittedRange, - iFepMan.PermittedModes()); - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputRange, iFepMan.InputMode()); - - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputEditorState, - reinterpret_cast( editorState )); - - - if(aSuggestRange != ERangeInvalid) - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputSuggestRange, aSuggestRange); - } - - //set allow change case - TBool allowChangeCase = editorState && iCaseMan.IsAbleChangeCase(); - //disable/enable case change - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputAllowChangeCase, allowChangeCase); - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputPermittedCase, - iCaseMan.PluginPermittedCases()); - } - // moved -/* iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputEditorState, - reinterpret_cast( editorState ));*/ - - if ( PluginInputMode() != EPluginInputModeItut ) - { - //set current case - iCaseMan.SetCurrentCase(iCaseMan.CurrentCase()); - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCaseMode, - iCaseMan.CurrentCase()); - if ( PluginInputMode() == EPluginInputModeFSQ || - PluginInputMode() == EPluginInputModeFingerHwr) - { - SetPromptText( aCleanContent ); - } - } - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputEnableSettingBtn, - IsEnableSettingBtn() ); - - if(!IsDimed()) - { - // remember previous password state - iIsPassWord = isSecret; - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputIsSecretText, - isSecret ); - } - else - { - // Set previous password state when screen is dimed - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputIsSecretText, - iIsPassWord ); - } - - TBool enableArrowBtn = IsDimArrowKeys(); - - if (IsDimed() && iResourceChange) - { - enableArrowBtn = iEnableArrowBtn; - } - else - { - iEnableArrowBtn = enableArrowBtn; - } - - - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputDimArrowKeys, - enableArrowBtn); - - SetIcfAlignment(); - - iModeChanged = ETrue; - SendIcfDataL( EPluginSyncAll ); - iModeChanged = EFalse; - - // For addition of ITI features on FSQ, do configuration before opening FSQ, - // so that ITI features can be taken into effect. - SetItiStateL(); - - if ( ExistInlineText() ) - { - SendIcfDataL(); - } - - if ( PluginInputMode() != EPluginInputModeItut ) - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputWindowOpen, aOpenMode); - } - if(PluginInputMode() == EPluginInputModeItut - || PluginInputMode() == EPluginInputModeFSQ - || PluginInputMode() == EPluginInputModeFingerHwr) - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputInEditWordQueryDlg, iIsInEditWordQueryDlg); - } - } - - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::IsEnableModeSwitchBtn -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::IsEnableModeSwitchBtn() - { - TBool enableInSecret = EFalse; - - if( !iFepMan.IsSupportsSecretText() ) - { - TPluginInputMode counterPart = iPluginInputMode == EPluginInputModeVkb ? - EPluginInputModeHwr : EPluginInputModeVkb; - if( iLangMan.IsPluginInputAvaiable(counterPart, - iCurrentPluginInputFepUI->SupportLanguage(iPluginInputMode), - &iPenInputServer)) - { - enableInSecret = ETrue; - } - } - - return enableInSecret; - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::IsEnableSettingBtn -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::IsEnableSettingBtn() - { - TBool ebable = ETrue; - TInt enalbeInStartup = 0; - RProperty::Get(KPSUidUikon, KUikGlobalNotesAllowed, enalbeInStartup); - ebable = enalbeInStartup; - - if (iInGlobleNoteEditor || - (iPenInputMenu && iPenInputMenu->IsShowing())) - { - ebable = EFalse; - } - - return ebable; - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::NotifyLayoutKeymappingL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::NotifyLayoutKeymappingL() - { - CAknEdwinState* editorState = iFepMan.EditorState(); - if ( editorState ) - { - if( ( iFepMan.InputMode() == ENumber || iFepMan.InputMode() == ENativeNumber )&& - (editorState->Flags() & EAknEditorFlagUseSCTNumericCharmap) && - iFepMan.IsFepAwareTextEditor() && - iFepMan.IsAbleToLaunchSCT() ) - { - TInt sctChars = EAknSCTNumeric; - - if ( !iFepMan.IsOnlyHalfWidthCharacterPermitted() ) - { - sctChars = EAknSCTLowerCase; - } - //read resource from resource - HBufC* keymapRes = GetNumberKeymapResource(sctChars); - if( keymapRes ) - { - CleanupStack::PushL(keymapRes); - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputEditorCustomNumericKeyMap, - reinterpret_cast(keymapRes) ); - CleanupStack::PopAndDestroy(keymapRes); - return; - } - } - iCurrentPluginInputFepUI->SetNumberModeKeyMappingL(editorState->NumericKeymap() ); - } - else - { - TCoeInputCapabilities inputCapabilities = iFepMan.InputCapabilities(); - - if( inputCapabilities.SupportsWesternNumericReal() ) - { - //read resource from resource - HBufC* keymapRes = HBufC::NewL(2); - TLocale locale; - TChar decimalSep = locale.DecimalSeparator(); - TChar minusSign ='-'; - - keymapRes->Des().Append(decimalSep); - keymapRes->Des().Append(minusSign); - - CleanupStack::PushL(keymapRes); - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputEditorCustomNumericKeyMap, - reinterpret_cast(keymapRes) ); - CleanupStack::PopAndDestroy(keymapRes); - return; - } - - iCurrentPluginInputFepUI->SetNumberModeKeyMappingL(EAknEditorPlainNumberModeKeymap); - } - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::IsDisplayDataQuery -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::IsDisplayDataQuery() - { - return iFepMan.UiInterface()->IsDisplayDataQuery(iFepMan.IsFepAwareTextEditor()); - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::RepositionDataQuery -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::RepositionDataQuery(TBool aForce) - { - if( !aForce && iDataQueryAlreadyShow ) - { - return; - } - - TRect param; - - CEikAppUi* eikAppUi = (CEikAppUi *)CCoeEnv::Static()->AppUi(); - - param = TRect(eikAppUi->TopFocusedControl()->PositionRelativeToScreen(), - eikAppUi->TopFocusedControl()->Size()); - - TPixelsTwipsAndRotation size; - CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size); - - if(size.iPixelSize.iWidth > size.iPixelSize.iHeight ) - { - // landscape, retrieve current position - TRect parentRect; - - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, parentRect); - CCoeControl* ctrl = eikAppUi->TopFocusedControl(); - TRect ctrlRect = ctrl->Rect(); - ctrlRect.Move( 0, parentRect.iBr.iY - ctrlRect.iBr.iY ); - - param = TRect( ctrlRect.iTl, ctrl->Size() ); - //ctrl->SetExtent( ctrlRect.iTl, ctrl->Size() ); - } - - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputSetWindowPos, (TInt)¶m)); - iDataQueryAlreadyShow = ETrue; - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::AdjustDataQueryCallBackL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TInt CAknFepPluginManager::AdjustDataQueryCallBackL(TAny *aPtr) - { - CAknFepPluginManager* self = static_cast(aPtr); - self->iAdjustDataQueryTimer->Cancel(); - if(self->IsDisplayDataQuery() && //data query - self->iPluginInputMode == EPluginInputModeVkb) //only vkb mode - { - self->RepositionDataQuery(ETrue); - } - - return ETrue; - } -// ----------------------------------------------------------------------------- -// CAknFepPluginManager::FepObserverHandleCompletionOfTransactionL -// Timer procedure for updating cursor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::FepObserverHandleCompletionOfTransactionL(MCoeFepObserver& aFepObserver) - { - aFepObserver.HandleCompletionOfTransactionL(); - } - -MAknFepManagerInterface* CAknFepPluginManager::CurrentFepInputUI() - { - if (PluginInputMode() == EPluginInputModeItut && - (iFepMan.InputMode() == EPinyin || iFepMan.InputMode() == EZhuyin || - iFepMan.InputMode() == EStroke || iFepMan.InputMode() == ECangJie)) - - { - if (!iFingerItutChineseUI) - { - TRAP_IGNORE(CreateFingerItutChineseUiL()); - } - - return iFingerItutChineseUI; - } - - return NULL; - } - -void CAknFepPluginManager::CreateFingerItutChineseUiL() - { - iFingerItutChineseUI = CAknFepUIManagerFingerItutChinese::NewL(&iFepMan, &iCaseMan, - (TLanguage)iSharedData.InputTextLanguage(), this); - } - -void CAknFepPluginManager::LaunchHwrTrainUiL() - { - _LIT(KPeninputHwrTrainingUI, "z:\\sys\\bin\\trui.exe" ); - - RProcess process; - TInt err = process.Create(KPeninputHwrTrainingUI, KNullDesC); - User::LeaveIfError(err); - - process.Resume(); - process.Close(); - } - -TBool CAknFepPluginManager::IsVisible() - { - if( iPenInputSvrConnected ) - { - return iPenInputServer.IsVisible(); - } - - return EFalse; - } - -void CAknFepPluginManager::SetFingerMatchSelectionState(TBool aMatchStateOn) - { - if(!iCurrentPluginInputFepUI) - { - return; - } - if (aMatchStateOn) - { - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchSelection, 1)); - iMatchState = ETrue; - } - else - { - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchSelection, 0)); - iMatchState = EFalse; - } - } - -void CAknFepPluginManager::ConvertDigitToDigittype(TDigitType& digittype,TDes& aConvertedNumeral) - { - TChar chchar(aConvertedNumeral[0]); - switch(digittype) - { - case EDigitTypeDevanagari: - { - chchar = (aConvertedNumeral[0] + KLatinToDevanagariDigitsDelta); - } - break; - case EDigitTypeArabicIndic: - { - chchar = (aConvertedNumeral[0] + KLatinToArabicIndicDigitsDelta); - } - break; - case EDigitTypeEasternArabicIndic: - { - chchar = (aConvertedNumeral[0] + KLatinToEasternArabicIndicDigitsDelta); - } - } - aConvertedNumeral.Zero(); - aConvertedNumeral.Append(chchar); - } - -void CAknFepPluginManager::GetAllPredictiveCandidate() - { - TRAP_IGNORE(GetAllPredictiveCandidateL()); - } - -void CAknFepPluginManager::GetAllPredictiveCandidateL() - { - CPtiEngine* ptiengine = iFepMan.PtiEngine(); - TBuf<1> tempbuf; - ResetCandidateList(); - - for (TInt index = 0; index < ptiengine->NumberOfCandidates(); index++) - { - TPtrC newText = ptiengine->NextCandidate(); - - if (newText.Length() > 0) - { - if(newText.Length() == 1) - { - TDigitType digittype = iFepMan.LocalDigit(); - TChar chchar(newText[0]); - - if(chchar.IsDigit() && digittype) - { - tempbuf.Zero(); - tempbuf.Append(newText[0]); - ConvertDigitToDigittype(digittype,tempbuf); - - HBufC* textBuf = tempbuf.Alloc(); - - CleanupStack::PushL(textBuf); - iCandidateList.Append(textBuf); - CleanupStack::Pop(textBuf); - - continue; - } - } - - HBufC* textBuf = newText.Alloc(); - - CleanupStack::PushL(textBuf); - iCandidateList.Append(textBuf); - CleanupStack::Pop(textBuf); - } - } - } - -void CAknFepPluginManager::ResetCandidateList() - { - iCandidateIndex = 0; - iCandidateList.ResetAndDestroy(); - } - -void CAknFepPluginManager::ShowAllCandidates() - { - iSendAllList.iCandidates.Reset(); - - GetAllPredictiveCandidate(); - - if (!iCandidateList.Count()) - return; - - for (TInt i = 0; i < iCandidateList.Count(); i++) - iSendAllList.iCandidates.Append(iCandidateList[i]->Des()); - - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchList, - reinterpret_cast(&iSendAllList))); - } - -TBool CAknFepPluginManager::DoNextCandidates() - { - if((iCandidateIndex) * 3 >= iCandidateList.Count()) - { - iCandidateIndex = 0; - } - - iCandidateIndex++; - - int nStartIndex = (iCandidateIndex - 1) * 3; - - - for (TInt index = 0; index < 3; index++, nStartIndex ++) - { - if (nStartIndex < iCandidateList.Count()) - { - TPtr16 canDes = iCandidateList[nStartIndex]->Des(); - iSendList.iCandidate[index].Set(canDes); - } - else - { - iSendList.iCandidate[index].Set(KNullDesC); - } - } - - - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchList, - reinterpret_cast(&iSendList))); - - if (iCandidateIndex * 3 >= iCandidateList.Count()) - { - return ETrue; - } - - return EFalse; - } - -void CAknFepPluginManager::DoPreviousCandidates() - { - iCandidateIndex--; - - if(iCandidateIndex < 1) - { - iCandidateIndex = iCandidateList.Count() / 3 + 1; - } - - int nStartIndex = (iCandidateIndex -1) * 3; - - for (TInt index = 0; index < 3; index++, nStartIndex ++) - { - if (nStartIndex < iCandidateList.Count()) - { - TPtr16 canDes = iCandidateList[nStartIndex]->Des(); - iSendList.iCandidate[index].Set(canDes); - } - else - { - iSendList.iCandidate[index].Set(KNullDesC); - } - } - - - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchList, - reinterpret_cast(&iSendList))); - } - -TBool CAknFepPluginManager::GetIndicatorImgID(const TInt IndicatorUID,TInt &aImage, TInt &aMask) - { - TBool ret = EFalse; - TRAP_IGNORE(ret = GetIndicatorImgIDL(IndicatorUID, aImage, aMask)); - return ret; - } -TBool CAknFepPluginManager::GetIndicatorImgIDL(const TInt IndicatorUID,TInt &aImage, TInt &aMask) - { - TBool ret = EFalse; - aImage = 0; - aMask =0; - TResourceReader reader; - - CCoeEnv::Static()->CreateResourceReaderLC(reader, - R_AVKON_NAVI_PANE_EDITOR_INDICATORS ); - - TInt indicatorCount = reader.ReadInt16(); // Number of indicators in the INDICATOR_PANE resource. - - for ( TInt ii = 0; ii < indicatorCount; ii++ ) - { - TInt foundUid = reader.ReadInt16(); // First is the indicator UID. - - if ( foundUid == IndicatorUID ) - { - reader.ReadInt16(); // narrow priority, can be ignored - reader.ReadInt16(); // wide priority, can be ignored - - HBufC* bitmapFile = reader.ReadHBufCL(); // File containing the indicator graphics. - CleanupStack::PushL( bitmapFile ); - - TInt stateCount = reader.ReadInt16(); // Number of indicator states. - TInt state = reader.ReadInt16(); // First state is used ( can be EAknIndicatorStateOn / EAknIndicatorStateAnimate ). - TInt iconCount = reader.ReadInt16(); // Number of icons or frames. - - if ( state == IndicatorUID ) - { - // Go through the animation frames. - for ( TInt j = 0; j < iconCount; j++ ) - { - // Use the last animation frame - // in case of animated indicator. - reader.ReadInt16(); - reader.ReadInt16(); - reader.ReadInt16(); - reader.ReadInt16(); - } - } - - // These are the correct IDs to be used for - // the indicator. - aImage = reader.ReadInt16(); - aMask = reader.ReadInt16(); - - - // CREATE THE INDICATOR ICON WITH THE BITMAP FILE & BITMAP ID INFORMATION HERE - - - CleanupStack::PopAndDestroy( bitmapFile ); - ret = ETrue; - break; // icon created - } - else // Not the correct indicator, pass through the INDICATOR resource. - { - reader.ReadInt16(); - reader.ReadInt16(); - HBufC* bitmapFile = reader.ReadHBufCL(); // bmp filename - delete bitmapFile; - bitmapFile = NULL; - TInt numberOfStates = reader.ReadInt16(); // Number of states - for ( TInt j = 0; j < numberOfStates; j++ ) - { - reader.ReadInt16(); // State id - TInt numberOfIcons = reader.ReadInt16(); - for ( TInt jj = 0; jj < numberOfIcons; jj++ ) - { - for ( TInt jjj = CAknIndicatorContainer::ELayoutModeUsual; - jjj <= CAknIndicatorContainer::ELayoutModeWide; jjj++ ) - { - reader.ReadInt16(); // bitmap - reader.ReadInt16(); // mask - } - } - } - } - } - - CleanupStack::PopAndDestroy(); // reader - - return ret; - } - -void CAknFepPluginManager::UpdateITUTIndicator() - { - if ( EPluginInputModeItut != PluginInputMode() ) - { - return; - } - - TInt indicatorImgID; - TInt indicatorTextID; - - if (iFepMan.GetIndicatorImgID(indicatorImgID, indicatorTextID)) - { - iIndicatorImgID = indicatorImgID; - iIndicatorTextID = indicatorTextID; - } - TInt indImgid = 0; - TInt indMaskid = 0; - - TInt textImgid = 0; - TInt textMaskid = 0; - - if (iIndicatorImgID > 0) - { - GetIndicatorImgID(iIndicatorImgID ,indImgid, indMaskid); - } - - if (iIndicatorTextID > 0) - { - GetIndicatorImgID(iIndicatorTextID ,textImgid, textMaskid); - } - - if (iIndicatorImgID != 0 || iIndicatorTextID != 0) - { - TFepIndicatorInfo indicator; - - indicator.iIndicatorImgID = indImgid; - indicator.iIndicatorMaskID = indMaskid; - indicator.iIndicatorTextImgID = textImgid; - indicator.iIndicatorTextMaskID = textMaskid; - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchIndicator, - reinterpret_cast(&indicator))); - } - } - -void CAknFepPluginManager::SetITUTSpellingStateL(TBool aState) - { - if (aState) - { - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerSpelling, 1); - - HBufC* titleStr = StringLoader::LoadL(R_AKNFEP_PROMPT_TEXT); - CleanupStack::PushL(titleStr); - - TFepPromptText promptText; - promptText.iLines = 1; - TPtr16 canDes = titleStr->Des(); - promptText.iText.Set(canDes); - - promptText.iCleanContent = EFalse; - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputSetPromptText, - reinterpret_cast(&promptText)); - - CleanupStack::PopAndDestroy(titleStr); - } - else - { - TPtr offPromot(NULL, 0); - TFepPromptText promptText; - - promptText.iLines = 1; - promptText.iText.Set(offPromot); - promptText.iCleanContent = EFalse; - - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputSetPromptText, - reinterpret_cast(&promptText)); - - iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerSpelling, 0); - } - } - -void CAknFepPluginManager::DisplaySpellEditor(const TInt aEditorFlag, - const TDesC& aInitText, - TCursorSelection aCurSel) - { - TRAP_IGNORE(DisplaySpellEditorL(aEditorFlag, aInitText, aCurSel)); - } -void CAknFepPluginManager::DisplaySpellEditorL(const TInt aEditorFlag, - const TDesC& aInitText, - TCursorSelection aCurSel) - { - TInt editorFlag = 0; - TInt editorCase = 0; - TInt editorSCTResId = 0; - - if (aEditorFlag) - { - editorFlag = aEditorFlag; - } - - editorCase = iCaseMan.CurrentCase(); - - if( iFepMan.EditorState()->Flags() & EAknEditorFlagLatinInputModesOnly ) - { - editorFlag = editorFlag | EAknEditorFlagLatinInputModesOnly; - } - - if (FeatureManager::FeatureSupported(KFeatureIdJapanese)) - { - editorFlag = editorFlag | EAknEditorFlagLatinInputModesOnly; - } - - editorSCTResId = iFepMan.EditorState()->SpecialCharacterTableResourceId(); - - if (FeatureManager::FeatureSupported(KFeatureIdChinese)) - { - if (!editorSCTResId || editorSCTResId == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG) - { - editorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE; - } - } - else if (!editorSCTResId) - { - editorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG; - } - - delete iSpell; - iSpell = NULL; - iSpellCba = ESpellCBACancelEmpty; - iSpellOn = ETrue; - iSpell = CAknFepUiSpellContainer::NewL(editorFlag, editorCase, editorSCTResId); - - iSpell->SetInputWinObserver(this); - - iSpell->InputPane()->SetInputWinTextL(&aInitText); - iSpell->InputPane()->InputWin()->SetSelectionL(aCurSel.iCursorPos, aCurSel.iAnchorPos); - AddWinToOpenListL( iSpell->DrawableWindow() ); - } - -void CAknFepPluginManager:: DestroySpellEditor() - { - iSpellOn = EFalse; - iSpellCba = ESpellCBANone; - delete iSpell; - iSpell = NULL; - } - -HBufC* CAknFepPluginManager::SpellTextInput() - { - HBufC* textInput = NULL; - if (iSpell) - { - TRAP_IGNORE(textInput = iSpell->InputPane()->InputWin()->GetTextInHBufL()); - return textInput; - } - - return NULL; - } - -void CAknFepPluginManager::HandleEdwinEventL( CEikEdwin* /*aEdwin*/, - TEdwinEvent aEventType ) - { - if (aEventType == EEventTextUpdate) - { - TInt textLength = 0; - HBufC* text = SpellTextInput(); - - if (text) - { - CleanupStack::PushL(text); - textLength = text->Length(); - CleanupStack::PopAndDestroy(text); - } - - if ( textLength == 0 && - iSpellCba == ESpellCBAOkCancel) - { - iSpellCba = ESpellCBACancelEmpty; - iFepMan.UpdateCbaL(NULL); - } - - if (textLength > 0 && - iSpellCba == ESpellCBACancelEmpty) - { - iSpellCba = ESpellCBAOkCancel; - iFepMan.UpdateCbaL(NULL); - } - } - } - -TInt CAknFepPluginManager::GetSoftKeyResID() - { - TInt resId = 0; - switch (iSpellCba) - { - case ESpellCBACancelEmpty: - { - resId = R_AKNFEP_SOFTKEYS_FINGER_CANCEL; - } - break; - case ESpellCBAOkCancel: - { - resId = R_AKNFEP_SOFTKEYS_FINGER_OK_CANCEL; - } - case ESpellCBANone: - default: - { - break; - } - } - - return resId; - } - -void CAknFepPluginManager::SetPromptText( TBool aCleanContent ) - { - if (IsDimed() && !iResourceChange) - { - return; - } - - MCoeCaptionRetrieverForFep* capRetrieve = NULL; - if ( iFepMan.FepAwareTextEditor() ) - { - capRetrieve = iFepMan.InputCapabilities().CaptionRetrieverForFep(); - } - TFepPromptText promptText; - promptText.iLines = 1; - promptText.iCleanContent = aCleanContent; - - if (capRetrieve) - { - TBuf<100> caption; - caption.Zero(); - capRetrieve->GetCaptionForFep(caption); - promptText.iText.Set(caption); - iPreCaption.Close(); - iPreCaption.Create(caption.Length()); - iPreCaption.Append(caption); - } - else - { - promptText.iText.Set(KNullDesC); - if ( IsDimed() ) - { - promptText.iText.Set(iPreCaption); - } - else - { - iPreCaption.Close(); - } - } - - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputSetPromptText, - reinterpret_cast(&promptText))); - } - -void CAknFepPluginManager::SetIcfAlignment() - { - // Modify for bug ELZG-7WZC35 begin - // fix TINA-7HNEKA, spell editor is not really background editor. - //if ( iSpellOn ) - // { - // return; - // } - // Modify for bug ELZG-7WZC35 end - - TUint cap = iFepMan.ExtendedInputCapabilities(); - - TInt alignment = EAknEditorAlignNone; - - if (cap & CAknExtendedInputCapabilities::EInputEditorAlignCenter) - { - alignment = EAknEditorAlignCenter; - } - else if (cap & CAknExtendedInputCapabilities::EInputEditorAlignRight) - { - alignment = EAknEditorAlignRight; - } - else if (cap & CAknExtendedInputCapabilities::EInputEditorAlignBidi) - { - alignment = EAknEditorAlignBidi; - } - else if (cap & CAknExtendedInputCapabilities::EInputEditorAlignLeft) - { - alignment = EAknEditorAlignLeft; - } - // Modify for bug ELZG-7WZC35 begin - else - { - alignment = iAlignment; - } - // Modify for bug ELZG-7WZC35 end - - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputSetTextAlignment, - alignment)); - - // Modify for bug ELZG-7WZC35 begin - iAlignment = alignment; - // Modify for bug ELZG-7WZC35 end - } - -void CAknFepPluginManager::HasNoFreeSpace() - { - if ( iCurrentPluginInputFepUI && - EPluginInputModeItut == PluginInputMode() ) - { - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputNoFreeSpace)); - } - } - -// --------------------------------------------------------------------------- -// CAknFepPluginManager::PluginInputMode -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TPluginInputMode CAknFepPluginManager::PluginInputMode() - { - if( iPluginInputMode != EPluginInputModeNone && IsCurrentWindInOpenList() ) - { - return iPluginInputMode; - } - - return EPluginInputModeNone; - } - -void CAknFepPluginManager::AddCurrentWinToOpenListL() - { - AddWinToOpenListL( GetFocusWindow() ); - } - -void CAknFepPluginManager::AddWinToOpenListL( RDrawableWindow* aWin) - { - /*if( aWin ) - { - iLastFocusedWin = (TInt )aWin; - if( iOpenWindowList.Find( (TInt)aWin ) == KErrNotFound ) - { - iOpenWindowList.AppendL( (TInt)aWin ); - } - - } - */ - if( aWin ) - { - iLastFocusedWin = aWin->WsHandle(); - if( iOpenWindowList.Find( aWin->WsHandle() ) == KErrNotFound ) - { - iOpenWindowList.AppendL( aWin->WsHandle() ); - } - - } - - } - -void CAknFepPluginManager::RemoveCurrentWinFromOpenList() - { - RDrawableWindow* win = GetFocusWindow(); - if( win ) - { - TInt index = iOpenWindowList.Find( win->WsHandle() ); - if( index != KErrNotFound ) - { - iOpenWindowList.Remove( index ); - } - } - } - -void CAknFepPluginManager::RemoveLastFocusedWinFromOpenList() - { - TInt index = iOpenWindowList.Find( iLastFocusedWin ); - if( index != KErrNotFound ) - { - iOpenWindowList.Remove( index ); - } - iLastFocusedWin = 0; - - } - -TBool CAknFepPluginManager::IsCurrentWindInOpenList() - { - // When touch ui is activated, its associated focus window is inserted into iOpenWindowList. - // When focus go back to the associated window, touch ui is activated automatically if the window is iOpenWindowList. - if ( IsDimed() ) - { - return ETrue; - } - RDrawableWindow* win = GetFocusWindow(); - if( win ) - { - return iOpenWindowList.Find( win->WsHandle() ) != KErrNotFound; - } - return EFalse; - } - -TBool CAknFepPluginManager::ExistInlineText() - { - return ( iFepMan.WesternPredictive() && - iFepMan.IsFlagSet( CAknFepManager::EFlagInsideInlineEditingTransaction ) && - !iFepMan.IsFlagSet( CAknFepManager::EFlagInsideMultitapInlineEditingTransaction )&& - iFepMan.UncommittedText().Length() > 0 ); - } - -void CAknFepPluginManager::UpdateCaseMode() - { - if (iPreviousCoseMode != iCaseMan.CurrentCase()) - { - iPreviousCoseMode =iCaseMan.CurrentCase(); - - if (EPluginInputModeNone == PluginInputMode()) - { - return; - } - - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCaseMode, - iCaseMan.CurrentCase())); - UpdateITUTIndicator(); - } - } - -void CAknFepPluginManager::AdjustDataCase( TDes& aData ) - { - if( iCaseMan.CurrentCase() == EAknEditorLowerCase ) - { - aData.LowerCase(); - } - else if( iCaseMan.CurrentCase() == EAknEditorUpperCase ) - { - if( iCaseMan.IsInverseCase() ) - { - iCaseMan.SetInverseCase( EFalse ); - aData.LowerCase(); - return; - } - for( TInt i = 0; iSetItemDimmed(EChinFepCmdModeStroke, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyin, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModePinyin, ETrue); - aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); - aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); - } - -void CAknFepPluginManager::LaunchHelpL() - { - TCoeHelpContext context; - - switch (PluginInputMode()) - { - case EPluginInputModeItut: - { - context.iContext = KVITU_HLP_MAIN_VIEW; - } - break; - case EPluginInputModeFingerHwr: - case EPluginInputModeHwr: - case EPluginInputModeFSc: - { - context.iContext = KHWR_HLP_MAIN_VIEW; - } - break; - case EPluginInputModeVkb: - case EPluginInputModeFSQ: - { - context.iContext = KVQWERTY_HLP_MAIN_VIEW; - } - break; - default: - { - return; - } - } - - context.iMajor = KAknfepUID; - - CArrayFixFlat* array = new(ELeave)CArrayFixFlat(1); - array->AppendL( context ); - HlpLauncher::LaunchHelpApplicationL(CCoeEnv::Static()->WsSession(),array); - } - -TInt CAknFepPluginManager::RepeatStringFromLeft(const TDesC& aSubmitData, TDes& aEditorData) - { - TInt index = 0; - TInt ret = KErrNotFound; - for (; index < aEditorData.Length(); index++ ) - { - //aSubmitData.CompareC( aEditorData.Left(index + 1)) < 0 - ret = aSubmitData.Find( aEditorData.Left(index + 1)); - if ( ret != index ) - { - break; - } - } - return ( aEditorData.Length() < aSubmitData.Length() ) ? index : 0; - } - -TBool CAknFepPluginManager::IsGlobleNotes() - { - TUid appId = GetCurAppUid(); - TUid focusAppId = GetFocusAppUid(); - - if(IsGlobalNotesApp(appId) || IsGlobalNotesApp(focusAppId)) - { - return ETrue; - } - - return EFalse; - } - - - -void CAknFepPluginManager::SetMenuState(TBool aUpdateEditor) - { - if(!iPenInputSvrConnected ) - { - return; - } - - if (!(PluginInputMode() == EPluginInputModeItut || - PluginInputMode() == EPluginInputModeFSQ || - PluginInputMode() == EPluginInputModeFingerHwr)) - { - return; - } - - //save current Fep aware editor - if (aUpdateEditor && !iInMenu) - { - if(iFepMan.FepAwareTextEditor()) - iCurEditor = iFepMan.FepAwareTextEditor(); - else - iCurEditor = NULL; - } - - iInMenu = ETrue; - - TUid curApp = GetCurAppUid(); - iPenInputServer.SetGlobalNotes( IsGlobalNotesApp(curApp) && - !iInGlobleNoteEditor); - iPenInputServer.SetInternalPopUp(ETrue); - - iPenInputServer.SetEditorPriority(iEditorPriority); - iPenInputServer.DimUiLayout(ETrue); //dim the ui - } - -void CAknFepPluginManager::ResetMenuState(TBool aUnDim) - { - if(!iPenInputSvrConnected ) - { - return; - } - - iInMenu = EFalse; - iCurEditor = NULL; - if (aUnDim) - { - iPenInputServer.SetInternalPopUp(EFalse); - iPenInputServer.DimUiLayout(EFalse); - } - } - -TBool CAknFepPluginManager::IsDimed() - { - if(!iPenInputSvrConnected ) - { - return EFalse; - } - return iPenInputServer.IsDimmed(); - } -void CAknFepPluginManager::HandleiDimGainForeground(TBool aGain) - { - if (aGain) - { - iDimGainForeground = ETrue; - } - else - { - if (iDimGainForeground) - { - TUid focusAppId = GetFocusAppUid(); - - if(iInMenu && - !(focusAppId.iUid == KAknCapServerUid || - focusAppId.iUid == KAknNotifySrvUid || - focusAppId.iUid == KAknScreenServerUid ) && - focusAppId != GetCurAppUid() ) - { - iDimGainForeground = EFalse; - if (iPenInputSvrConnected) - { - iPenInputServer.SetResourceChange(EFalse); - } - - TRAP_IGNORE( ClosePluginInputUiL(ETrue) ); - if(iPenInputSvrConnected ) //lost foreground - { - iPenInputServer.LoseForeground(); - } - iPenInputServer.ClearTouchUI(); - } - } - } - } - -/* -#ifdef RD_TACTILE_FEEDBACK -TBool CAknFepPluginManager::VKBIsOpened() - { - return (iPenInputSvrConnected && iPenInputServer.IsVisible() && !iPenInputServer.IsDimmed()); - } -#endif // RD_TACTILE_FEEDBACK -*/ - -#ifdef RD_SCALABLE_UI_V2 -void CAknFepPluginManager::SetCursorVisibility(TBool aVisibility, TBool aReportPlugin) - { - iCursorVisibility = aVisibility; - - if (aReportPlugin) - { - SyncFepAwareText(); - } - } -#endif // RD_SCALABLE_UI_V2 - -void CAknFepPluginManager::InformMfneUiStatusL( TBool aOpened ) - { - if ( iMfne && iMfneChanged ) - { - //make the selection longer than maximum length of current - //text, so it won't change the behavior of MFNE editor which - //doesn't support finger touch. - TInt cursor( iMfne->DocumentLengthForFep() + 1 ); - TInt anchor( 0 ); - if ( aOpened ) - { - anchor = cursor; - } - iMfne->SetCursorSelectionForFepL( - TCursorSelection( cursor, anchor ) ); - } - if ( !aOpened ) - { - iMfne = NULL; - } - } - -void CAknFepPluginManager::UpdatePredicState() - { - if(!iSharedData.QwertyInputMode() && iFepMan.InputMode() == ELatin) - { - if ( iPluginInputMode != EPluginInputModeItut - // Add this condition for addition of ITI features on FSQ - && !IsSupportITIOnFSQ() ) - { - if( iSharedData.PredictiveTextOn()) - { - iFepMan.SetWesternPredictive(EFalse); - TRAP_IGNORE( iFepMan.TryCloseUiL() ); - iT9UsedBeforePluginInput = ETrue; - } - } - } - - if(iSharedData.PredictiveTextAutoCompleteOn() - // Add this condition for addition of ITI features on FSQ - && !IsSupportITIOnFSQ() ) - { - iFepMan.SetWesternAutoComplete(EFalse); - iAutoCompBeforePluginInput = ETrue; - iSharedData.ResetPredictiveTextAutoCompleteOn(); - } - } - -TBool CAknFepPluginManager::NotifyInGlobalNoteEditorL() - { - TUid curAppId = GetCurAppUid(); - iInGlobleNoteEditor = IsGlobalNotesApp(curAppId) ? ETrue:EFalse; - if (iCurrentPluginInputFepUI) - { - iCurrentPluginInputFepUI->HandleCommandL( - ECmdPenInputEnableSettingBtn, !iInGlobleNoteEditor); - } - - //if it's in global notes, show it. - if(EPluginInputModeItut == PluginInputMode() || - EPluginInputModeFSQ == PluginInputMode() ) - { - if(iInGlobleNoteEditor && iPenInputSvrConnected) - { - iPenInputServer.ActivatePeninputInNotesL(); - return ETrue; - } - } - return EFalse; - } - -// --------------------------------------------------------------------------- -// Get the correct indicator for VKB -// --------------------------------------------------------------------------- -// -TAknEditingState CAknFepPluginManager::VKBIndicatorState - ( TAknEditingState aOldState ) - { - if ( !IsChineseIndicator( aOldState ) ) - { - return aOldState; - } - TAknEditingState editingState = EStateNone; - switch ( iSharedData.DefaultOnScreenVKB() ) - { - case EPinyin: - { - editingState = EIndicatorStatePinyinPhrase; - break; - } - case EStroke: - { - if ( iSharedData.PenInputLanguage() == ELangPrcChinese ) - { - editingState = EIndicatorStateStrokePhrase; - } - else - { - editingState = EIndicatorStateStrokeTradPhrase; - } - break; - } - case EZhuyin: - { - editingState = EIndicatorStateZhuyinPhrase; - break; - } - case ECangJie: - { - editingState = EIndicatorStateCangJie; - break; - } - default: - { - editingState = aOldState; - } - } - return editingState; - } - -void CAknFepPluginManager::ClosePeninputSetting() - { -// if ( iGsInterface ) -// { -// delete iGsInterface; -// iGsInterface = NULL; -// } - } - -// --------------------------------------------------------------------------- -// Show tooltip on FSQ to show the best guess word shown inline. -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::ShowTooltipOnFSQL( TInt aSecondaryIdx ) - { - if ( aSecondaryIdx < 0 - || !iCurrentPluginInputFepUI - || !EnableITIOnFSQ() - || !( iFepMan.EditorState() ) - || (iFepMan.EditorState()->Flags() & EAknEditorFlagEnablePartialScreen) - ) - { - iTooltipOpenOnFSQ = EFalse; - return; - } - - CDesCArray* candidates = new ( ELeave ) CDesCArrayFlat( KDefaultCandidateArraySize ); - CleanupStack::PushL( candidates ); - TInt activeIdx = KErrNotFound; - iFepMan.GetCandidatesL( *candidates, activeIdx ); - if ( aSecondaryIdx < candidates->Count() ) - { - TPtrC aText = ( *candidates )[ aSecondaryIdx ]; - - TFepITITooltipText tooltipText; - tooltipText.iDataSize = aText.Size(); - tooltipText.iText.Set( aText ); - TPtrC tooltipTextPtr; - tooltipTextPtr.Set( aText ); - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputPopupTooltip, - reinterpret_cast( &tooltipTextPtr ) ); - - iTooltipOpenOnFSQ = ETrue; - } - else - { - iTooltipOpenOnFSQ = EFalse; - } - - CleanupStack::PopAndDestroy( candidates ); - } - -// --------------------------------------------------------------------------- -// Hide tooltip on FSQ if necessary. -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::HideTooltipOnFSQL() - { - if ( !iCurrentPluginInputFepUI || !EnableITIOnFSQ() || !iTooltipOpenOnFSQ ) - { - return; - } - - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputHideTooltip ); - iTooltipOpenOnFSQ = EFalse; - } - -// --------------------------------------------------------------------------- -// Show candidate list -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::ShowCandidateListL - ( TFepITICandidateList aCandidateList ) - { - if ( !iCurrentPluginInputFepUI ) - { - return; - } - HideTooltipOnFSQL(); - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputPopupCandidateList, - reinterpret_cast( &aCandidateList ) ); - } - -// --------------------------------------------------------------------------- -// Hide candidate list. -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::HideCandidateListL() - { - if ( !iCurrentPluginInputFepUI ) - { - return; - } - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputHideCandidateList ); - } - - -// --------------------------------------------------------------------------- -// Commit candidate word on FSQ. -// --------------------------------------------------------------------------- -// -void CAknFepPluginManager::CommitCandidateWordOnFSQL( TInt aIndex ) - { - iFepMan.PtiEngine()->HandleCommandL( - EPtiCommandUserActionSetCurrentIndexOfCandidates, - &aIndex ); - TPtrC selectedWord = iFepMan.PtiEngine()->CurrentWord(); - iFepMan.UpdateInlineEditL( selectedWord, selectedWord.Length() ); - iFepMan.PtiEngine()->CommitCurrentWord(); - iFepMan.CommitInlineEditL(); - } - -TBool CAknFepPluginManager::IsChineseIndicator( TAknEditingState aOldState ) - { - return aOldState == EIndicatorStatePinyinPhrase - || aOldState == EIndicatorStateStrokePhrase - || aOldState == EIndicatorStateStrokeTradPhrase - || aOldState == EIndicatorStateZhuyinPhrase - || aOldState == EIndicatorStateCangJie - || aOldState == EIndicatorStateZhuyinFind - || aOldState == EIndicatorStateStrokeFind; - } - -// --------------------------------------------------------------------------- - // Test if editor has EEikEdwinAvkonDisableCursor flag. - // --------------------------------------------------------------------------- - // - TBool CAknFepPluginManager::IsEditorCursorDisabled() - { - CAknEdwinState* editorState = iFepMan.EditorState(); - if ( !editorState ) - { - return EFalse; - } - - TInt flags = editorState->Flags(); - return ( flags & EEikEdwinAvkonDisableCursor ) == EEikEdwinAvkonDisableCursor; - } - -// --------------------------------------------------------------------------- -// Check if the cusror in editor is visible. -// --------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::IsEditorCursorVisible() - { - CAknEdwinState* editorState = iFepMan.EditorState(); - if ( !editorState ) - { - return EFalse; - } - return ( editorState->Flags() & EAknEditorFlagTextCursorVisible ) - == EAknEditorFlagTextCursorVisible; - } - -// --------------------------------------------------------------------------- -// Check if curor selection in editor is visible. -// --------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::IsEditorCursorSelVisible() - { - CAknEdwinState* editorState = iFepMan.EditorState(); - if ( !editorState ) - { - return EFalse; - } - return ( editorState->Flags() & EAknEditorFlagSelectionVisible ) - == EAknEditorFlagSelectionVisible; - } - -// --------------------------------------------------------------------------- -// Check if ITI features is enabled when FSQ is opened. -// --------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::EnableITIOnFSQ() - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( IsSupportITIOnFSQ() - && iFepMan.IsQwerty() - && iFepMan.WesternPredictive() ) - { - return ETrue; - } - return EFalse; -#else - return EFalse; -#endif // RD_INTELLIGENT_TEXT_INPUT - } - -// ----------------------------------------------------------------------------- -// Check if ITI can be supported by FSQ.. -// ----------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::IsSupportITIOnFSQ() - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( iPluginInputMode == EPluginInputModeFSQ - // Exclude non Latin mode - && iFepMan.InputMode() == ELatin - // Exclude accent range - && ( iPluginPrimaryRange == ERangeNative - || iPluginPrimaryRange == ERangeEnglish - // iPluginPrimaryRange == 0 is the default range, - // default range couldn't be accent. - || !iPluginPrimaryRange ) - && iFepMan.InputLanguageCapabilities().iSupportsWesternQwertyPredictive - && !iSharedData.QwertyInputMode() ) - { - return ETrue; - } -#endif - return EFalse; - } - -// --------------------------------------------------------------------------- -// Get scan code from hw keymapping. -// --------------------------------------------------------------------------- -// -TInt CAknFepPluginManager::GetScanCodeFromHwKeymapping( TUint aKeyCode ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - CPtiCoreLanguage *lang = static_cast - ( iFepMan.PtiEngine()->CurrentLanguage() ); - MPtiKeyMappings* keymapping = lang->GetQwertyKeymappings(); - if ( keymapping ) - { - // Save the old input mode - TPtiEngineInputMode oldInputMode = iFepMan.PtiEngine()->InputMode(); - // Change to input mode to EPtiEngineQwertyPredictive, after that - // qwerty keymapping can be got - iFepMan.PtiEngine()->SetInputMode( EPtiEngineQwertyPredictive ); - // Find scancode by keycode from qwerty keymapping - TInt retKey = keymapping->KeyForCharacter( aKeyCode ); - // Restore the old input mode - iFepMan.PtiEngine()->SetInputMode( oldInputMode ); - return retKey; - } - return EPtiKeyNone; -#else - return EPtiKeyNone; -#endif // RD_INTELLIGENT_TEXT_INPUT - } - -// --------------------------------------------------------------------------- -// Check if those keys are IIT-supported keys. -// --------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::IsITISupportedKey( const TKeyEvent& aKeyEvent ) - { -// ITI supported conditions -// 1. scan code != EPtiKeyNone -// 2. Basic alpha characters -// 3. -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( aKeyEvent.iScanCode != EPtiKeyNone - && ( iPluginPrimaryRange == ERangeNative - || iPluginPrimaryRange == ERangeEnglish - || ( iPluginPrimaryRange == 0 && iFepMan.InputMode() != ENumber - && iFepMan.InputMode() != ENativeNumber) ) - && ( TChar( aKeyEvent.iCode ).IsAlpha() || IsDeadKeyCode( aKeyEvent.iCode ) ) - ) - { - return ETrue; - } - return EFalse; -#else - return EFalse; -#endif // RD_INTELLIGENT_TEXT_INPUT - } - -TPtiTextCase CAknFepPluginManager::CaseForMappedCharacter(TChar aCharacter) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - const TInt KDefaulCoreMaximumWordLength = 100; - TPtiTextCase casesTOCheckAgainst[KNumberOfCases] ={ EPtiCaseLower, EPtiCaseUpper, - EPtiCaseChrLower, EPtiCaseChrUpper, - EPtiCaseFnLower, EPtiCaseFnUpper }; - TPtiTextCase caseCalculated = EPtiCaseLower; - TBuf mappedCharacters; - TBool isMappingFound = EFalse; - TPtiKey key = iFepMan.PtiEngine()->CharacterToKey( aCharacter ); - - //It loops through all the key mappings to find the character in the key mappings and - //if the character available in the key mapping, fetches the corresponding case. - for( TInt i=0; i< KNumberOfCases ; i++) - { - iFepMan.PtiEngine()->MappingDataForKey( key, mappedCharacters, - casesTOCheckAgainst[i] ); - for( TInt j=0; j < mappedCharacters.Length(); j++ ) - { - if( mappedCharacters[j] == aCharacter ) - { - caseCalculated = casesTOCheckAgainst[i]; - isMappingFound = ETrue; - break; - } - } - if ( isMappingFound ) - { - break; - } - } - //Now if there is no key mapping found for the character, then use the default TChar - //APIs to find the case of the character. - if( !isMappingFound ) - { - caseCalculated = aCharacter.IsUpper()?EPtiCaseUpper:EPtiCaseLower; - } - return caseCalculated; -#else - return aCharacter.IsUpper() ? EPtiCaseUpper : EPtiCaseLower; -#endif // RD_INTELLIGENT_TEXT_INPUT - } - -TBool CAknFepPluginManager::IsNeedToChangeTextCase( const TPtiTextCase& aTextCase ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - TPtiTextCase textCase = aTextCase; - if( EPtiKeyboardHalfQwerty != iFepMan.PtiEngine()->KeyboardType() ) - { - if ( textCase == EPtiCaseChrLower ) - { - textCase = EPtiCaseLower; - } - else if (textCase == EPtiCaseChrUpper) - { - textCase = EPtiCaseUpper; - } - } - return ( iFepMan.PtiEngine()->Case() == textCase ) - ? EFalse : ETrue; -#else - return EFalse; -#endif // RD_INTELLIGENT_TEXT_INPUT - } - -// ----------------------------------------------------------------------------- -// Do some configuration to make FSQ support ITI features. -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::SetItiStateL() - { - if ( iIsITIConfigured || !IsSupportITIOnFSQ() ) - { - return; - } - // 1. Config keyboard layout type - SetItiKeyboardLayoutL(); - - // 2. Change FEP to qwerty mode. - iFepMan.SetQwertyMode( ETrue ); - - // 3. Notify the activation of ITI on FSQ to peninput server - iCurrentPluginInputFepUI->HandleCommandL( ECmdPeninputITIStatus, - iFepMan.WesternPredictive() ); - - // 4. if there is un-commited text editor, - // need to setcurrentword to ptiengine again. - TInt unCommitedLen = iFepMan.UncommittedText().Length(); - if ( unCommitedLen > 0 ) - { - HBufC* unCommitedText = HBufC::NewL( unCommitedLen ); - TPtr unCommitedTextPtr = unCommitedText->Des(); - TInt startPos = iFepMan.UncommittedText().LowerPos(); - MCoeFepAwareTextEditor* edit = iFepMan.FepAwareTextEditor(); - edit->GetEditorContentForFep( unCommitedTextPtr, - startPos, unCommitedLen ); - iFepMan.PtiEngine()->SetCurrentWord( *unCommitedText ); - delete unCommitedText; - unCommitedText = NULL; - } - - // 5. Set ITI configured flag; - iIsITIConfigured = ETrue; - } - -// ----------------------------------------------------------------------------- -// Restore some configuration after closing FSQ. -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::ResetItiStateL() - { - if ( !iIsITIConfigured ) - { - return; - } - - // Close FSQ then current keyboard type return to the previously-stored one, - // 1. The first step is to restore keyboard type, because the value will - // be used in iFepMan.SetQwertyMode( EFalse ); - ResetItiKeyboardLayoutL(); - - // 2. Change FEP to non qwerty mode. - iFepMan.SetQwertyMode( EFalse ); - - // 3. Notify the deactivation of ITI to peninputserver - iCurrentPluginInputFepUI->HandleCommandL( ECmdPeninputITIStatus, EFalse ); - - // 4. Clear ITI configured flag; - iIsITIConfigured = EFalse; - } - -// ----------------------------------------------------------------------------- -// Config keyboard layout for ITI. -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::SetItiKeyboardLayoutL() - { - if ( iLastKeyboardLayout || !IsSupportITIOnFSQ() ) - { - return; - } - // 1. Record the previous keyboard type - RProperty keyboardLayoutStatusProperty; - keyboardLayoutStatusProperty.Get( KCRUidAvkon, KAknKeyBoardLayout, - iLastKeyboardLayout ); - - // 2. Utilize right qwerty keyboard type - TPtiKeyboardType keyboardType = EPtiKeyboardQwerty4x12; - RArray supportedKeyboards; - CleanupClosePushL( supportedKeyboards ); - iFepMan.PtiEngine()->KeyboardTypesSupportedByLanguageL - ( iSharedData.PenInputLanguage(), supportedKeyboards ); - for ( TInt i = 0; i < supportedKeyboards.Count(); i ++ ) - { - if ( supportedKeyboards[i] == EPtiKeyboardQwerty4x12 - || supportedKeyboards[i] == EPtiKeyboardQwerty3x11 - || supportedKeyboards[i] == EPtiKeyboardQwerty4x10 - || supportedKeyboards[i] == EPtiKeyboardCustomQwerty ) - { - keyboardType = supportedKeyboards[i]; - break; - } - } - keyboardLayoutStatusProperty.Set( KCRUidAvkon, KAknKeyBoardLayout, - keyboardType ); - CleanupStack::PopAndDestroy( &supportedKeyboards ); - } -// ----------------------------------------------------------------------------- -// Restore keyboard layout after closing FSQ. -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::ResetItiKeyboardLayoutL() - { - if ( !iLastKeyboardLayout || iITISettingDialogOpen ) - { - return; - } - - // Close FSQ then current keyboard type return to the previously-stored one, - //Restore keyboard layout type and qwerty mode of FEP - // 1. Store the previous keyboard type, - // except that opening predictive setting dialog cause fsq closed. - RProperty keyboardLayoutStatusProperty; - keyboardLayoutStatusProperty.Set( KCRUidAvkon, KAknKeyBoardLayout, - iLastKeyboardLayout ); - iLastKeyboardLayout = 0; - } - -// ----------------------------------------------------------------------------- -// Restore predict state. -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::RestorePredictStateL() - { - if( iT9UsedBeforePluginInput ) - { - iT9UsedBeforePluginInput = EFalse; - iFepMan.SetWesternPredictive(ETrue); - iFepMan.TryChangeModeL(ELatin); - } - if(iAutoCompBeforePluginInput) - { - iAutoCompBeforePluginInput = EFalse; - iFepMan.SetWesternAutoComplete(ETrue); - iFepMan.TryChangeModeL(ELatin); - } - } - -// ----------------------------------------------------------------------------- -// Check if the keycode belongs to dead keys. -// ----------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::IsDeadKeyCode( TUint aKeyCode ) - { - for ( TInt i = 0; i < sizeof(KSupportedDeadKeys) / sizeof(TUint); i++ ) - { - if ( aKeyCode == KSupportedDeadKeys[i] ) - { - return ETrue; - } - } - return EFalse; - } - -// ----------------------------------------------------------------------------- -// Notify app touch input window closed or open. -// ----------------------------------------------------------------------------- -// -void CAknFepPluginManager::NotifyAppUiImeTouchWndState( const TBool aTouchState ) - { - if ( iLangMan.IsSplitView() ) - { - CEikonEnv* eikEnv = CEikonEnv::Static(); - TUint param = aTouchState ? KAknSplitInputEnabled : KAknSplitInputDisabled; - if ( eikEnv && eikEnv->EikAppUi() ) - { - eikEnv->EikAppUi()->ReportResourceChangedToAppL( param ); - } - } - } - -// ----------------------------------------------------------------------------- -// Check if current editor support partial screen IMEs -// ----------------------------------------------------------------------------- -// -TBool CAknFepPluginManager::IsEditorSupportSplitIme() - { - //Mfne editors - if ( iFepMan.IsMfneEditor() ) - { - TUint caps = iFepMan.ExtendedInputCapabilities(); - return CAknExtendedInputCapabilities::EInputEditorPartialScreen == - ( caps & CAknExtendedInputCapabilities::EInputEditorPartialScreen ); - } - - //Normal editors - CAknEdwinState* state = iFepMan.EditorState(); - if ( state ) - { - return EAknEditorFlagEnablePartialScreen == - ( state->Flags() & EAknEditorFlagEnablePartialScreen ); - } - - return EFalse; - } - -//End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepPluginMenuManager.cpp --- a/fep/aknfep/src/AknFepPluginMenuManager.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,173 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the AknFepPluginMenuManager methods. -* -*/ - - - - - - - - - - - -#include -#include - -#include "AknFepPluginMenuManager.h" // MAknFepManagerInterface -#include "AknFepManager.h" - - -// ----------------------------------------------------------------------------- -// CAknFepPluginMenuManager::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CAknFepPluginMenuManager* CAknFepPluginMenuManager::NewL(CAknFepManager* aManager) - { - return new(ELeave) CAknFepPluginMenuManager(aManager); - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginMenuManager::~CAknFepPluginMenuManager -// Destructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CAknFepPluginMenuManager::~CAknFepPluginMenuManager() - { - if( iOptionMenuBar ) - { - iOptionMenuBar->RemoveFromStack(); - delete iOptionMenuBar; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginMenuManager::aResourceId -// Show speicfied menu pane -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginMenuManager::ShowL(TInt aResourceId) - { - if( !iOptionMenuBar ) - { - iOptionMenuBar = iFepManager->UiInterface()->NewMenuBarL(this, 0, aResourceId); - } - else - { - iOptionMenuBar->SetMenuTitleResourceId(aResourceId); - } - - if( !iOptionMenuBar->IsDisplayed() ) - { - iOptionMenuBar->AddToStackL(ECoeStackPriorityDialog + 1, - ECoeStackFlagStandard); - iOptionMenuBar->SetMenuType(CAknFepUiInterfaceMenuBar::EMenuOptionsNoTaskSwapper); - iOptionMenuBar->TryDisplayMenuBarWithoutFepMenusL(); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginMenuManager::IsShowing -// Get menu show status -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CAknFepPluginMenuManager::IsShowing() - { - if( iOptionMenuBar ) - { - return iOptionMenuBar->IsDisplayed(); - } - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginMenuManager::Hide -// Hide current showed menu -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginMenuManager::Hide() - { - if( IsShowing() ) - { - iOptionMenuBar->StopDisplayingMenuBar(); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginMenuManager::MenuPaneId -// Get current menu resource id -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CAknFepPluginMenuManager::MenuPaneId() - { - if( iOptionMenuBar ) - { - return iOptionMenuBar->FirstMenuPaneResourceId(); - } - return 0; - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginMenuManager::SetEmphasis -// called when menu get or lose focus -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginMenuManager::SetEmphasis(CBase* aMenuControl, TBool aEmphasis) - { - if( !aEmphasis && aMenuControl == iOptionMenuBar) - { - iOptionMenuBar->SetFocus(EFalse); - iOptionMenuBar->RemoveFromStack(); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginMenuManager::ProcessCommandL -// Process command user selects -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepPluginMenuManager::ProcessCommandL(TInt aCommandId) - { - if( aCommandId == EEikCmdCanceled) - { - //The command is not sent to FEP - Hide(); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepPluginMenuManager::MenuPaneId -// C++ default constructor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CAknFepPluginMenuManager::CAknFepPluginMenuManager(CAknFepManager* aFepManager) -:iFepManager(aFepManager) - { - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepSharedDataInterface.cpp --- a/fep/aknfep/src/AknFepSharedDataInterface.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1730 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CAknFepSharedDataInterface class -* -*/ - - - - - - - - - - - - -#include -#include -#include -#include - -#include "AknFepSharedDataInterface.h" -#include "AknFepManager.h" - -#include -#include -#ifdef RD_INTELLIGENT_TEXT_INPUT -#include -#include -#include -#endif -#include // KAknQwertyInputModeActive -#include //Pen related settings -#include // KCRUidSensorSettings - -// TODO: include CommonengineInternalCRKeys.h -const TUid KCRUidCommonEngineKeys = {0x1020503B}; -const TUint32 KGSDisplayTxtLang = 0x00000001; - -const TInt KJapHwrConversion = 0x0010; - -#include - -CAknFepSharedDataInterface* CAknFepSharedDataInterface::NewL(CAknFepManager* aFepManager) - { - CAknFepSharedDataInterface* self = new (ELeave) CAknFepSharedDataInterface(aFepManager); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); //self - return self; - } - - -CAknFepSharedDataInterface::~CAknFepSharedDataInterface() - { - delete iCommonEngineRepository; - delete iAknFepRepositoryWatcher; - delete iAknFepLocaleRepositoryWatcher; - delete iAknFepRepository; - delete iGsPenSettings; - delete iLocaleRepository; - delete iSensorRepository; - - if (iQwertyModeStatusSubscriber) - { - iQwertyModeStatusSubscriber->StopSubscribe(); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (iKeyboardLayoutStatusSubscriber) - { - iKeyboardLayoutStatusSubscriber->StopSubscribe(); - } - iKeyboardLayoutStatusProperty.Close(); - delete iKeyboardLayoutStatusSubscriber; -#endif - iQwertyModeStatusProperty.Close(); - delete iQwertyModeStatusSubscriber; - } - - -TInt CAknFepSharedDataInterface::PredictiveTextOn() - { - TInt value = 0; - if (iAknFepRepository) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout(); - TInt temp = 0; - iAknFepRepository->Get(KAknFepPredTxtFlagExtension, temp); - switch(layout) - { - case EPtiKeyboardNone: - break; - case EPtiKeyboard12Key: - temp &= EKeyboardStyle12Key; - break; - case EPtiKeyboardHalfQwerty: - temp &= EKeyboardStyleHalfQwerty; - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - temp &= EKeyboardStyleQwerty; - break; - default: - break; - } - value = ( temp ? 1 : 0); -#else - iAknFepRepository->Get(KAknFepPredTxtFlag, value); -#endif - } - return value; - } - -TInt CAknFepSharedDataInterface::PredictiveTextJapaneseOn() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepJapanesePredTxtFlag, value); - } - return value; - } - -TInt CAknFepSharedDataInterface::InputMode() - { - TUint value = 0; - if (iAknFepRepository) - { - /* Teleca change begin, 03.07.2008 ssal - original code: - TPtrC filteredPtr(0,0); - iAknFepRepository->Get(KAknFepChineseInputMode, value);*/ - _LIT(Kx, "x"); - // This conversion is needed because KAknFepChineseInputMode cenrep key original type was 16bit int. - // now type is changed to string, so that it can accommodate bigger values like EHangul 0x16000. - TBuf conversion; - iAknFepRepository->Get(KAknFepChineseInputMode, conversion); - - TInt len = conversion.Find(Kx); - TLex lex; - - if(len) - { - TPtrC ptr = conversion.Mid(len +1); - lex.Assign(ptr); - } - else - { - lex.Assign(conversion); - } - - lex.Val(value, EHex); - /* Teleca change end, 04.06.2008 ssal */ - } - return value; - } - -void CAknFepSharedDataInterface::SetInputMode(TInt aInputMode) - { - if (iAknFepRepository) - { - /* Teleca change begin, 03.07.2008 ssal - original code: - iAknFepRepository->Set(KAknFepChineseInputMode, aInputMode);*/ - - // Please see the explanation on CAknFepSharedDataInterface::InputMode() method - TBuf conversion; - conversion.Num(aInputMode, EHex); - - iAknFepRepository->Set(KAknFepChineseInputMode, conversion); - /* Teleca change end, 04.06.2008 ssal */ - } - } - -TInt CAknFepSharedDataInterface::CangJieMode() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepCangJieMode, value); - } - return value; - } - -void CAknFepSharedDataInterface::SetCangJieMode(TInt aNewCangJieMode) - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepCangJieMode, aNewCangJieMode); - } - } - -TInt CAknFepSharedDataInterface::InputTextLanguage() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepInputTxtLang, value); - } - return TLanguage(value); - } - -void CAknFepSharedDataInterface::SetInputTextLanguage(TInt aValue) - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepInputTxtLang, aValue); - } - - // now inform all open apps of the switch - TWsEvent event; - event.SetType(KEikInputLanguageChange); - CEikonEnv::Static()->WsSession().SendEventToAllWindowGroups(event); - } - -TInt CAknFepSharedDataInterface::DisplayLanguage() - { - TInt value = 0; - if (iCommonEngineRepository) - { - iCommonEngineRepository->Get(KGSDisplayTxtLang, value); - } - return TLanguage(value); - } - -void CAknFepSharedDataInterface::SetPredictiveTextOn() - { - if (iAknFepRepository) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout(); - TInt value = 0; - iAknFepRepository->Get(KAknFepPredTxtFlagExtension, value); - switch(layout) - { - case EPtiKeyboardNone: - // No keyboard active, so don't change anything - break; - case EPtiKeyboard12Key: - value |= EKeyboardStyle12Key; - break; - case EPtiKeyboardHalfQwerty: - value |= EKeyboardStyleHalfQwerty; - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - value |= EKeyboardStyleQwerty; - break; - default: - break; - } - iAknFepRepository->Set(KAknFepPredTxtFlagExtension, value); - // For backwards compatibility - if (value & EKeyboardStyle12Key) - { - iAknFepRepository->Set(KAknFepPredTxtFlag, 1); - } -#else - iAknFepRepository->Set(KAknFepPredTxtFlag, 1); -#endif - } - } - - -void CAknFepSharedDataInterface::ResetPredictiveTextOn() - { - if (iAknFepRepository) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout(); - TInt value = 0; - iAknFepRepository->Get(KAknFepPredTxtFlagExtension, value); - switch(layout) - { - case EPtiKeyboardNone: - // No keyboard active, so don't change anything - break; - case EPtiKeyboard12Key: - value &= ~EKeyboardStyle12Key; - break; - case EPtiKeyboardHalfQwerty: - value &= ~EKeyboardStyleHalfQwerty; - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - value &= ~EKeyboardStyleQwerty; - break; - default: - break; - } - iAknFepRepository->Set(KAknFepPredTxtFlagExtension, value); - // For backwards compatibility - if (!(value & EKeyboardStyle12Key)) - { - iAknFepRepository->Set(KAknFepPredTxtFlag, 0); - } -#else - iAknFepRepository->Set(KAknFepPredTxtFlag, 0); -#endif - } - } - -void CAknFepSharedDataInterface::SetJapanesePredictiveTextOn() - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepJapanesePredTxtFlag, 1); - } - } - - -void CAknFepSharedDataInterface::ResetJapanesePredictiveTextOn() - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepJapanesePredTxtFlag, 0); - } - } - -TInt CAknFepSharedDataInterface::PluginInputMode() const - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepLastUsedInput, value); - } - return value; - } - -void CAknFepSharedDataInterface::SetPluginInputMode(TInt aDevice) - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepLastUsedInput, aDevice); - } - } - -TInt CAknFepSharedDataInterface::PluginUILanguage() const - { - TInt value = 0; - if (iAknFepRepository) - { - //iAknFepRepository->Create(KAknFepLastUsedUILanguage, 0); //?? - iAknFepRepository->Get(KAknFepLastUsedUILanguage, value); - } - return value; - } - -void CAknFepSharedDataInterface::SetPluginUILanguage(TInt aLanguage) - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepLastUsedUILanguage, aLanguage); - } - } - -void CAknFepSharedDataInterface::SetDefaultNumberMode( TInt aMode, TInt aValue ) - { - if (iLocaleRepository) - { - iLocaleRepository->Set(aMode, aValue); - } - } - - -TInt CAknFepSharedDataInterface::PenInputLanguage() const - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepInputTxtLang, value); - } - return value; - } - -TInt CAknFepSharedDataInterface::ScrollLatinPredictiveCandidates() const - { - return iSharedDataScrollLatinPredictive; - } - -TInt CAknFepSharedDataInterface::SpaceWithScrollRight() const - { - return iSharedDataSpaceWithScrollRight; - } - -TInt CAknFepSharedDataInterface::EntersWithScrollDown() const - { - return iSharedDataEnterWithScrollDown; - } - -TInt CAknFepSharedDataInterface::QwertyInputMode() //const - { - TInt value = 0; - iQwertyModeStatusProperty.Get(value); - return value; - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -TInt CAknFepSharedDataInterface::KeyboardLayout() //const - { - TInt value = 0; - iKeyboardLayoutStatusProperty.Get(value); - return value; - } - -#ifdef FF_DUAL_LANGUAGE_SUPPORT -TInt CAknFepSharedDataInterface::InputTextLanguageSecondary() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepInputTxtLangSecondary, value); - } - return TLanguage(value); - } - -void CAknFepSharedDataInterface::SetInputTextLanguageSecondary(TInt aValue) - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepInputTxtLangSecondary, aValue); - } - - // now inform all open apps of the switch - // same event as primary input language change - TWsEvent event; - event.SetType(KEikInputLanguageChange); - CEikonEnv::Static()->WsSession().SendEventToAllWindowGroups(event); - } - -#endif //FF_DUAL_LANGUAGE_SUPPORT -#endif - -CAknFepSharedDataInterface::CAknFepSharedDataInterface(CAknFepManager* aFepManager) - { - iFepManager = aFepManager; - } - - -void CAknFepSharedDataInterface::ConstructL() - { - TInt ret = KErrNone; - - TRAP(ret, iCommonEngineRepository = CRepository::NewL(KCRUidCommonEngineKeys)); - - TRAP(ret, iAknFepRepository = CRepository::NewL(KCRUidAknFep)); - if (ret == KErrNone) - { - iAknFepRepositoryWatcher = CAknFepRepositoryWatcher::NewL( - KCRUidAknFep, - TCallBack(HandleRepositoryCallBack, this), - iAknFepRepository); - HandleHashKeySelectionChange();//we need read proactively before value changed,and we must sure the iAknFepRepository has been constructed - } - - TRAP(ret, iLocaleRepository = CRepository::NewL( KCRUidLocaleSettings )); - - if (ret == KErrNone) - { - iAknFepLocaleRepositoryWatcher = CAknFepRepositoryWatcher::NewL( - KCRUidLocaleSettings, - TCallBack(HandleLocaleRepositoryCallBack, this), - iLocaleRepository); - } - - User::LeaveIfError(iQwertyModeStatusProperty.Attach(KCRUidAvkon, KAknQwertyInputModeActive)); -#ifdef RD_INTELLIGENT_TEXT_INPUT - //Attach the P&S property to the keyboardlayout and subscribe to the P&S framework - // for any keyboard layout change. - User::LeaveIfError(iKeyboardLayoutStatusProperty.Attach(KCRUidAvkon, KAknKeyBoardLayout)); - iKeyboardLayoutStatusSubscriber = new (ELeave) CSubscriber( - TCallBack(HandleKeyboardLayoutChangeNotification, this), - iKeyboardLayoutStatusProperty); - iKeyboardLayoutStatusSubscriber->SubscribeL(); -#endif - iQwertyModeStatusSubscriber = new (ELeave) CSubscriber( - TCallBack(QwertyModeChangeNotification, this), - iQwertyModeStatusProperty); - iQwertyModeStatusSubscriber->SubscribeL(); - - // Read read-only shared data settings. - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepScrollLatinPredictive, iSharedDataScrollLatinPredictive); - iAknFepRepository->Get(KAknFepSpaceWithScrollRight, iSharedDataSpaceWithScrollRight); - iAknFepRepository->Get(KAknFepEnterWithScrollDown, iSharedDataEnterWithScrollDown); - } - - TRAP(ret, iGsPenSettings = CRepository::NewL(KCRUidPersonalizationSettings)); - - TRAP(ret, iSensorRepository = CRepository::NewL( KCRUidSensorSettings ) ); - } - -TInt CAknFepSharedDataInterface::HashKeySelectionNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandleHashKeySelectionChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -void CAknFepSharedDataInterface::HandleHashKeySelectionChange() - { - TInt value(0); - - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepHashKeySelection, value); - } - - iHashKeySelectionInUse = value; - } - - -TInt CAknFepSharedDataInterface::InputModeChangeGSNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandleInputModeGSChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -void CAknFepSharedDataInterface::HandleInputModeGSChange() - { - iFepManager->SetFlag(CAknFepManager::EFlagNewSharedDataInputMode); - } - -TInt CAknFepSharedDataInterface::InputTextLangGSNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandleInputTextLanguageGSChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -void CAknFepSharedDataInterface::HandleInputTextLanguageGSChange() - { - iFepManager->SetFlag(CAknFepManager::EFlagNewSharedDataInputLanguage); - ESubVariantFlag subVariant = AknLayoutUtils::SubVariant(); - if((AknLayoutUtils::Variant() == EApacVariant) - && ((subVariant == EPrcSubVariant) - || (subVariant == EHongKongSubVariant) - || (subVariant == ETaiwanSubVariant))) - { - iFepManager->SetFlag(CAknFepManager::EFlagNewSharedDataInputMode); - } - } - - -TInt CAknFepSharedDataInterface::PredictiveTextSettingChangeGSNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandlePredictiveTextSettingGSChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -TInt CAknFepSharedDataInterface::JapanesePredictiveTextSettingChangeGSNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandleJapanesePredictiveTextSettingGSChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -TInt CAknFepSharedDataInterface::QwertyModeChangeNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandleQwertyModeChangeNotification(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -void CAknFepSharedDataInterface::HandlePredictiveTextSettingGSChange() - { - TInt value = 0; -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepPredTxtFlagExtension, value); - } - TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout(); - switch(layout) - { - case EPtiKeyboardNone: - break; - case EPtiKeyboard12Key: - value &= EKeyboardStyle12Key; - break; - case EPtiKeyboardHalfQwerty: - value &= EKeyboardStyleHalfQwerty; - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - value &= EKeyboardStyleQwerty; - break; - default: - break; - } - if (value > 0) - { - value = 1; - } -#else - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepPredTxtFlag, value); - } -#endif - iFepManager->SetWesternPredictive(value); - } - -void CAknFepSharedDataInterface::HandleJapanesePredictiveTextSettingGSChange() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepJapanesePredTxtFlag, value); - } - iFepManager->SetJapanesePredictive(value); - } - -void CAknFepSharedDataInterface::HandleQwertyModeChangeNotification() - { - TInt value = 0; - iQwertyModeStatusProperty.Get(value); - iFepManager->SetQwertyMode(value); - } - -TInt CAknFepSharedDataInterface::NumberModeChangesGSNotification() - { - iFepManager->NumberModeChangeGSNotification(); - return KErrNone; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - -// -//Intensionally not called methods -// JapanesePredictiveTextSettingChangeGSNotification() -// MultiTapTimerChangeGSNotification() -// JapaneseQwertyFlagsChangeGSNotification() -// PredictiveTextAutoCompleteSettingChangeGSNotification() - Autocompletion feature -// -TInt CAknFepSharedDataInterface::HandleGenericRepositoryChange(TAny* aPtr) - { - CAknFepSharedDataInterface *self = STATIC_CAST(CAknFepSharedDataInterface*, aPtr); - TInt error = KErrNone; - if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepChineseInputMode) - { - error = InputModeChangeGSNotification(aPtr); - } - if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepInputTxtLang) - { - error = InputTextLangGSNotification(aPtr); - } - if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepPredTxtFlag) - { - error = PredictiveTextSettingChangeGSNotification(aPtr); - } - if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepAutoCompleteFlag) - { - error = PredictiveTextAutoCompleteSettingChangeGSNotification(aPtr); - } - if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepTypingCorrectionLevel) - { - error = PredictiveTextTypingCorrectionLevelChangeNotification(aPtr); - } - if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepNumberCandidateFlag) - { - error = PredictiveTextNumberCandidateSettingChangeNotification(aPtr); - } - if(self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepPrimaryCandidateFlag) - { - error = PredictiveTextPrimaryCandidateChangeNotification(aPtr); - } - - return error; - } -#endif -TInt CAknFepSharedDataInterface::HandleRepositoryCallBack(TAny* aPtr) - { - CAknFepSharedDataInterface *self = STATIC_CAST(CAknFepSharedDataInterface*, aPtr); -#ifdef RD_INTELLIGENT_TEXT_INPUT - - if( self->iAknFepRepositoryWatcher && - self->iAknFepRepositoryWatcher->IsGenericCenrepChange()) - { - return HandleGenericRepositoryChange(aPtr); - } - else -#endif - if (self->iAknFepRepositoryWatcher) - { - if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepHashKeySelection) - { - return HashKeySelectionNotification(aPtr); - } - if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepChineseInputMode) - { - return InputModeChangeGSNotification(aPtr); - } - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepInputTxtLang) - { - return InputTextLangGSNotification(aPtr); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef FF_DUAL_LANGUAGE_SUPPORT - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepInputTxtLangSecondary) - { - return InputTextLangGSNotification(aPtr); - } -#endif //FF_DUAL_LANGUAGE_SUPPORT -#endif - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepPredTxtFlag) - { - return PredictiveTextSettingChangeGSNotification(aPtr); - } - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepJapanesePredTxtFlag) - { - return JapanesePredictiveTextSettingChangeGSNotification(aPtr); - } - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepMultiTapTimer) - { - return MultiTapTimerChangeGSNotification(aPtr); - } - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepJapaneseSpecialCharFlag) - { - return JapaneseQwertyFlagsChangeGSNotification(aPtr); - } -#ifndef RD_INTELLIGENT_TEXT_INPUT - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepAutoCompleteFlag) - { - return PredictiveTextAutoCompleteSettingChangeGSNotification(aPtr); - } -#endif //RD_INTELLIGENT_TEXT_INPUT -#ifdef RD_INTELLIGENT_TEXT_INPUT - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepAutoCompleteFlag) - { - return PredictiveTextAutoCompleteSettingChangeGSNotification(aPtr); - } - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepTypingCorrectionLevel) - { - return PredictiveTextTypingCorrectionLevelChangeNotification(aPtr); - } - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepNumberCandidateFlag) - { - return PredictiveTextNumberCandidateSettingChangeNotification(aPtr); - } - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepPrimaryCandidateFlag) - { - return PredictiveTextPrimaryCandidateChangeNotification(aPtr); - } - else if (self->iAknFepRepositoryWatcher->ChangedKey() == KAknFepPredTxtFlagExtension) - { - return PredictiveTextSettingChangeGSNotification(aPtr); - } -#endif - } - - return KErrNone; - } - -TInt CAknFepSharedDataInterface::HandleLocaleRepositoryCallBack(TAny* aPtr) - { - CAknFepSharedDataInterface *self = STATIC_CAST(CAknFepSharedDataInterface*, aPtr); - - if(self->iAknFepLocaleRepositoryWatcher) - { - if (self->iAknFepLocaleRepositoryWatcher->ChangedKey() == KSettingsDefaultNumberMode - || self->iAknFepLocaleRepositoryWatcher->ChangedKey() == KSettingsIndicDefaultNumberMode) - { - return self->NumberModeChangesGSNotification(); - } - } - return KErrNone; - } - -CAknFepSharedDataInterface::CSubscriber::CSubscriber(TCallBack aCallBack, RProperty& aProperty) - : - CActive(EPriorityNormal), iCallBack(aCallBack), iProperty(aProperty) - { - CActiveScheduler::Add(this); - } - -CAknFepSharedDataInterface::CSubscriber::~CSubscriber() - { - Cancel(); - } - -void CAknFepSharedDataInterface::CSubscriber::SubscribeL() - { - if (!IsActive()) - { - iProperty.Subscribe(iStatus); - SetActive(); - } - } - -void CAknFepSharedDataInterface::CSubscriber::StopSubscribe() - { - Cancel(); - } - -void CAknFepSharedDataInterface::CSubscriber::RunL() - { - if (iStatus.Int() == KErrNone) - { - iCallBack.CallBack(); - SubscribeL(); - } - } - -void CAknFepSharedDataInterface::CSubscriber::DoCancel() - { - iProperty.Cancel(); - } - - -TInt CAknFepSharedDataInterface::EditSubmenuInUse() const - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepHashKeySelection, value); - } - - return value; - } - - - -TInt CAknFepSharedDataInterface::HashKeySelectionInUse() - { - // This is never used in qwerty modes. - if (QwertyInputMode()) - { - return 0; - } - - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepHashKeySelection, value); - } - - return iHashKeySelectionInUse; - } - - -CAknFepRepositoryWatcher* CAknFepRepositoryWatcher::NewL( - const TUid aUid, - const TUint32 aKey, - CCenRepNotifyHandler::TCenRepKeyType aKeyType, - TCallBack aCallBack, - CRepository* aRepository) - { - CAknFepRepositoryWatcher* self = new(ELeave) CAknFepRepositoryWatcher(aUid, aKey, aCallBack, - aRepository); - - CleanupStack::PushL(self); - self->ConstructL(aKeyType); - CleanupStack::Pop(self); - - return self; - } - -CAknFepRepositoryWatcher* CAknFepRepositoryWatcher::NewL( - const TUid aUid, - TCallBack aCallBack, - CRepository* aRepository) - { - CAknFepRepositoryWatcher* self = new(ELeave) CAknFepRepositoryWatcher(aUid, - NCentralRepositoryConstants::KInvalidNotificationId, - aCallBack, aRepository); - - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - - return self; - } - -CAknFepRepositoryWatcher::~CAknFepRepositoryWatcher() - { - if( iNotifyHandler ) - { - iNotifyHandler->StopListening(); - delete iNotifyHandler; - iNotifyHandler = NULL; - } - } - -CAknFepRepositoryWatcher::CAknFepRepositoryWatcher( - const TUid aUid, - const TUint32 aKey, - TCallBack aCallBack, - CRepository* aRepository) - : - iUid(aUid), iKey(aKey), iCallBack(aCallBack), iRepository(aRepository) -#ifdef RD_INTELLIGENT_TEXT_INPUT - , iIsGeneric (EFalse) -#endif - { - } - -void CAknFepRepositoryWatcher::ConstructL(CCenRepNotifyHandler::TCenRepKeyType aKeyType) - { - iNotifyHandler = CCenRepNotifyHandler::NewL(*this, *iRepository, aKeyType, iKey); - iNotifyHandler->StartListeningL(); - } - -void CAknFepRepositoryWatcher::ConstructL() - { - iNotifyHandler = CCenRepNotifyHandler::NewL(*this, *iRepository); - iNotifyHandler->StartListeningL(); - } - -TUint32 CAknFepRepositoryWatcher::ChangedKey() - { - return iChangedKey; - } - -void CAknFepRepositoryWatcher::HandleNotifyInt(TUint32 aKey, TInt aNewValue) - { -#ifdef _DEBUG - RDebug::Print(_L("AknFep: HandleNotifyInt aKey=%d, aNewValue=%d"), aKey, aNewValue); -#endif - iChangedKey = aKey; -#ifdef RD_INTELLIGENT_TEXT_INPUT - iIsGeneric = EFalse; -#endif - iCallBack.CallBack(); - iChangedKey = NCentralRepositoryConstants::KInvalidNotificationId; - } - -void CAknFepRepositoryWatcher::HandleNotifyError(TUint32 /*aKey*/, TInt /*aError*/, CCenRepNotifyHandler* /*aHandler*/) - { - } - -/* -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CAknFepRepositoryWatcher::HandleNotifyGeneric(TUint32 aId) - { -#ifdef _DEBUG - RDebug::Print(_L("AknFep: HandleNotifyGeneric aId=%d"), aId); -#endif - iChangedKey = aId; - iIsGeneric = ETrue; - iCallBack.CallBack(); - iChangedKey = NCentralRepositoryConstants::KInvalidNotificationId; - } -#else*/ - -void CAknFepRepositoryWatcher::HandleNotifyGeneric(TUint32 aId) - { -#ifdef _DEBUG - RDebug::Print(_L("AknFep: HandleNotifyGeneric aId=%d"), aId); -#endif - iChangedKey = aId; - iCallBack.CallBack(); - iChangedKey = NCentralRepositoryConstants::KInvalidNotificationId; - } -//#endif - -/** - * Multitap timer value. - * Replaces the constant KMultiTapTimeoutMS in Japanese variant. - * - * @since 3.0 - * @return Value of KAknFepMultiTapTimer setting. - */ -TInt CAknFepSharedDataInterface::MultiTapTimer() const - { - TInt value = 1000000; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepMultiTapTimer, value); - } - return value; - } - -/** - * Change notification for Multitap timer. - * - * @since 3.0 - * @return return KErrNone if aObj isn't NULL - * return KErrArgument if aObj is NULL - */ -TInt CAknFepSharedDataInterface::MultiTapTimerChangeGSNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandleMultiTapTimerChangeGSNotification(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -/** - * Handle change notification for Multitap timer. - * - * @since 3.0 - */ -void CAknFepSharedDataInterface::HandleMultiTapTimerChangeGSNotification() - { - TInt value = MultiTapTimer(); - iFepManager->SetMultiTapTimer(value); - } - -/** - * Japanese Qwerty Flags value. - * Replaces the constant KAknFepJapaneseSpecialCharFlag in Japanese variant. - * - * @since 3.0 - * @return Value of KAknFepJapaneseSpecialCharFlag setting. - */ -TInt CAknFepSharedDataInterface::JapaneseQwertyFlags() const - { - TInt value = 0x000F; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepJapaneseSpecialCharFlag, value); - } - return value; - } - -/** - * Change notification for Japanese Qwerty Flags. - * - * @since 3.0 - * @return return KErrNone if aObj isn't NULL - * return KErrArgument if aObj is NULL - */ -TInt CAknFepSharedDataInterface::JapaneseQwertyFlagsChangeGSNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandleJapaneseQwertyFlagsChangeGSNotification(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -/** - * Handle change notification for Japanese Qwerty Flags. - * - * @since 3.0 - */ -void CAknFepSharedDataInterface::HandleJapaneseQwertyFlagsChangeGSNotification() - { - TInt value = JapaneseQwertyFlags(); - iFepManager->SetJapaneseQwertyFlags(value); - } - -/** - * Returns a value of current clear direction. - * - * @since 3.2 - * @return Value of KAknFepClearDirection setting. - */ -TInt CAknFepSharedDataInterface::ClearDirection() const - { - TInt value = EClearDirectionLeft; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepClearDirection, value); - } - return value; - } - -/** - * Set a value of current clear direction. - * - * @since 3.2 - * @param aValue new value set to Clear Direction shared data item which - * represents the direction currently being used - */ -void CAknFepSharedDataInterface::SetClearDirection(TInt aValue) - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepClearDirection, aValue); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT -TInt CAknFepSharedDataInterface::HandleKeyboardLayoutChangeNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandleKeyboardLayoutChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } -#endif - - -void CAknFepSharedDataInterface::SetPredictiveTextAutoCompleteOn() - { - if (iAknFepRepository) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - //Set autocomplete flag only for the current keyboard layout type. Otherwise, - //by simply setting to "1", we los information on autocompletion settings - //of other keyboard types. - TPtiKeyboardType currentKeyboardLayoutlayout = (TPtiKeyboardType)KeyboardLayout(); - TInt autocompletionSetting = 0; - iAknFepRepository->Get(KAknFepAutoCompleteFlag, autocompletionSetting); - switch(currentKeyboardLayoutlayout) - { - case EPtiKeyboardNone: - break; - case EPtiKeyboard12Key: - autocompletionSetting |= EKeyboardStyle12Key; - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardHalfQwerty: - case EPtiKeyboardCustomQwerty: - autocompletionSetting |= EKeyboardStyleQwerty; - break; - default: - break; - } - iAknFepRepository->Set(KAknFepAutoCompleteFlag, autocompletionSetting); -#else - iAknFepRepository->Set(KAknFepAutoCompleteFlag, 1); -#endif - } - } - - -void CAknFepSharedDataInterface::ResetPredictiveTextAutoCompleteOn() - { - if (iAknFepRepository) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - //Reset autocomplete flag only for the current keyboard layout type. Otherwise, - //by simply setting to "0", we lose information on autocompletion settings - //of other keyboard types. - TPtiKeyboardType currentKeyboardLayoutlayout = (TPtiKeyboardType)KeyboardLayout(); - TInt autocompletionSetting = 0; - iAknFepRepository->Get(KAknFepAutoCompleteFlag, autocompletionSetting); - switch(currentKeyboardLayoutlayout) - { - case EPtiKeyboardNone: - break; - case EPtiKeyboard12Key: - autocompletionSetting &= ~EKeyboardStyle12Key; - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardHalfQwerty: - case EPtiKeyboardCustomQwerty: - autocompletionSetting &= ~EKeyboardStyleQwerty; - break; - default: - break; - } - iAknFepRepository->Set(KAknFepAutoCompleteFlag, autocompletionSetting); -#else - iAknFepRepository->Set(KAknFepAutoCompleteFlag, 0); -#endif - } - } - -#ifndef RD_INTELLIGENT_TEXT_INPUT -void CAknFepSharedDataInterface::HandlePredictiveTextAutoCompleteSettingGSChange() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepAutoCompleteFlag, value); - } - iFepManager->SetAutoCompletionState(value); - } - - -TInt CAknFepSharedDataInterface::PredictiveTextAutoCompleteSettingChangeGSNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandlePredictiveTextAutoCompleteSettingGSChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -#endif //RD_INTELLIGENT_TEXT_INPUT - -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CAknFepSharedDataInterface::SetFnKeyState(TInt aState) - { - RProperty::Set(KPSUidAknFep,KAknFepFnKeyState, aState); - } - -TInt CAknFepSharedDataInterface::GetFnKeyState() - { - TInt state = 0; - RProperty::Get(KPSUidAknFep,KAknFepFnKeyState, state); - return state; - } -void CAknFepSharedDataInterface::HandleKeyboardLayoutChange() - { - TInt value = 0; - TPtiKeyboardType keyboardType; - iKeyboardLayoutStatusProperty.Get(value); - keyboardType = (TPtiKeyboardType)value; - iFepManager->SetKeyboardLayout(keyboardType); - iFepManager->SetFnKeyMappingState(); -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - iFepManager->StopDisplayingMenuBar(); -#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - } -TInt CAknFepSharedDataInterface::PredictiveTextAutoCompleteOn() - { - TInt value = 0; - if (iAknFepRepository) - { - TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout(); - TInt temp = 0; - iAknFepRepository->Get(KAknFepAutoCompleteFlag, temp); - switch(layout) - { - case EPtiKeyboardNone: - break; - case EPtiKeyboard12Key: - temp &= EKeyboardStyle12Key; - break; - case EPtiKeyboardHalfQwerty: - temp &= EKeyboardStyleHalfQwerty; - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - temp &= EKeyboardStyleQwerty; - break; - default: - break; - } - value = ( temp ? 1 : 0); - } - return value; - } - -void CAknFepSharedDataInterface::HandlePredictiveTextAutoCompleteSettingGSChange() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepAutoCompleteFlag, value); - } - TPtiKeyboardType layout = (TPtiKeyboardType)KeyboardLayout(); - switch(layout) - { - case EPtiKeyboardNone: - break; - case EPtiKeyboard12Key: - value &= EKeyboardStyle12Key; - break; - case EPtiKeyboardHalfQwerty: - value &= EKeyboardStyleHalfQwerty; - break; - case EPtiKeyboardQwerty4x12: - case EPtiKeyboardQwerty4x10: - case EPtiKeyboardQwerty3x11: - case EPtiKeyboardCustomQwerty: - value &= EKeyboardStyleQwerty; - break; - default: - break; - } - if (value > 0) - { - value = 1; - } - iFepManager->SetAutoCompletionState(value); - } - - -TInt CAknFepSharedDataInterface::PredictiveTextAutoCompleteSettingChangeGSNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandlePredictiveTextAutoCompleteSettingGSChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } -/** - * Queries the value of PredictiveText Typing Correction Level from shared data - * - * @return Typing Correction Level -*/ -TInt CAknFepSharedDataInterface::PredictiveTextTypingCorrectionLevel() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepTypingCorrectionLevel, value); - } - return value; - } - - -/** - * Sets the value of PredictiveText Typing Correction Level state to aCorrectionLevel in shared data -*/ -void CAknFepSharedDataInterface::SetPredictiveTextTypingCorrectionLevel(TInt aCorrectionLevel) - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepTypingCorrectionLevel, aCorrectionLevel); - } - } - -void CAknFepSharedDataInterface::HandlePredictiveTextTypingCorrectionLevelChange() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepTypingCorrectionLevel, value); - } - iFepManager->SetTypingCorrectionLevel(value); - } - - /** - * Handles a change in predictive text Typing Correction Level setting. -*/ -TInt CAknFepSharedDataInterface::PredictiveTextTypingCorrectionLevelChangeNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandlePredictiveTextTypingCorrectionLevelChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -/** - * Queries the value of PredictiveText Number Candidate Shown state to be On from shared data - * - * @return 1 for shown or 0 for not shown -*/ -TInt CAknFepSharedDataInterface::PredictiveTextNumberCandidateShown() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepNumberCandidateFlag, value); - } - return value; - } - - -/** - * Sets the value of PredictiveText Number Candidate Shown state to 1 in shared data - this - * is used to represent predictive text Number Candidate Shown being shown. -*/ -void CAknFepSharedDataInterface::SetPredictiveTextNumberCandidateShown() - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepNumberCandidateFlag, 1); - } - } - - -/** - * Sets the value of PredictiveText Number Candidate Shown state to 0 in shared data - this - * is used to represent predictive text Number Candidate Shown being not shown. -*/ -void CAknFepSharedDataInterface::ResetPredictiveTextNumberCandidateShown() - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepNumberCandidateFlag, 0); - } - } - -void CAknFepSharedDataInterface::HandlePredictiveTextNumberCandidateSettingChange() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepNumberCandidateFlag, value); - } - iFepManager->SetNumberCandidateState(value); - } - -/** - * Handles a change in predictive text Number Candidate Shown setting. -*/ -TInt CAknFepSharedDataInterface::PredictiveTextNumberCandidateSettingChangeNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandlePredictiveTextNumberCandidateSettingChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } - -/** -* Queries the value of PredictiveText Primary candidate setting from shared data -* -* @return Primary candidate setting(0 for Suggested or 1 for Exact) -*/ -TInt CAknFepSharedDataInterface::PredictiveTextPrimaryCandidate() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepPrimaryCandidateFlag, value); - } - return value; - } - - -/** -* Sets the value of PredictiveText Primary candidate setting state to aPrimaryCandidate in shared data -*/ -void CAknFepSharedDataInterface::SetPredictiveTextPrimaryCandidate(TInt aPrimaryCandidate) - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepPrimaryCandidateFlag, aPrimaryCandidate); - } - } -/** -* Handles a change in predictive text Primary candidate setting. -*/ -void CAknFepSharedDataInterface::HandlePredictiveTextPrimaryCandidateChange() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepPrimaryCandidateFlag, value); - } - iFepManager->SetPrimaryCandidate(value); - } - -/** -* Handles a change in predictive text Typing Correction Level setting. -*/ -TInt CAknFepSharedDataInterface::PredictiveTextPrimaryCandidateChangeNotification(TAny* aObj) - { - if (aObj) - { - static_cast(aObj)->HandlePredictiveTextPrimaryCandidateChange(); - return KErrNone; - } - else - { - return KErrArgument; - } - } -#else // RD_INTELLIGENT_TEXT_INPUT - -TInt CAknFepSharedDataInterface::PredictiveTextAutoCompleteOn() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepAutoCompleteFlag, value); - } - return value; - } -#endif -/** - * Returns a value of HWR conversion on/off. - * - * @since 3.2 - * @return Value of KAknFepJapaneseHwrConversion setting. - */ -TInt CAknFepSharedDataInterface::JapaneseHwrConversion() const - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepJapaneseSpecialCharFlag, value); - } - return (value & KJapHwrConversion)? - EJapaneseConversionOn : EJapaneseConversionOff; - } - -/** - * Set a value of HWR conversion on/off. - * - * @since 3.2 - * @param aValue new value set to HWR conversion on/off shared data item - */ -void CAknFepSharedDataInterface::SetJapaneseHwrConversion(TInt aValue) - { - if (iAknFepRepository) - { - TInt value; - iAknFepRepository->Get(KAknFepJapaneseSpecialCharFlag, value); - if (aValue == EJapaneseConversionOn) - { - value |= KJapHwrConversion; - } - else - { - value &= ~(KJapHwrConversion); - } - iAknFepRepository->Set(KAknFepJapaneseSpecialCharFlag, value); - } - } - -TInt CAknFepSharedDataInterface::FepShowFsqPreviewStatus() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepShowFsqPreview, value); - } - return value; - } - - -void CAknFepSharedDataInterface::SetFepShowFsqPreviewStatus(TInt aValue) - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepShowFsqPreview, aValue); - } - } - -TInt CAknFepSharedDataInterface::FepShowVkbPreviewStatus() - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepShowVkbPreview, value); - } - return value; - } - - -void CAknFepSharedDataInterface::SetFepShowVkbPreviewStatus(TInt aValue) - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepShowVkbPreview, aValue); - } - } - -TInt CAknFepSharedDataInterface::FepLastUseVkbModeForLandscape() - { - TInt value = 4; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepLastUseVkbMode, value); - } - return value; - } - - -void CAknFepSharedDataInterface::SetFepLastUseVkbModeForLandscape(TInt aValue) - { - if (iAknFepRepository) - { - iAknFepRepository->Set(KAknFepLastUseVkbMode, aValue); - } - } - -TBool CAknFepSharedDataInterface::AutoRotateEnabled() - { - TInt sensorState( 0 ); - - if (iSensorRepository) - { - iSensorRepository->Get( KSenSettingsSensorsOn, sensorState ); - } - if ( sensorState ) - { - TInt turnCtrl = 0; - iSensorRepository->Get( KSenSettingsTurnCtrl, turnCtrl ); - turnCtrl = turnCtrl >> 2; - - if ( turnCtrl ) - { - return ETrue; - } - } - - return EFalse; - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -/** -* Queries if numbers (and other characters found behind Fn) can be entered with long key press on QWERTY. -*/ -TBool CAknFepSharedDataInterface::LongPressNumberEntryOnQwerty() const - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepLongPressNumberEntryOnQwerty, value); - } - return value; - } - -/** -* Queries if copy-pasting with shift+softkeys is available also on QWERTY. -*/ -TBool CAknFepSharedDataInterface::ShiftCopyPastingOnQwerty() const - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepShiftCopyPasteOnQwerty, value); - } - return value; - } -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#endif // RD_INTELLIGENT_TEXT_INPUT - -#ifdef RD_SCALABLE_UI_V2 -// --------------------------------------------------------------------------- -// Get a value of current default on screen vkb. -// It depends on input lanage is PRC/HW/TW Chinese. -// --------------------------------------------------------------------------- -// -TInt CAknFepSharedDataInterface::DefaultOnScreenVKB() - { - TInt value = 0; - switch( PenInputLanguage() ) - { - case ELangPrcChinese: - { - iGsPenSettings->Get( KSettingsDefaultVkbPrc, value ); - } - break; - case ELangHongKongChinese: - { - iGsPenSettings->Get( KSettingsDefaultVkbHk, value ); - } - break; - case ELangTaiwanChinese: - { - iGsPenSettings->Get( KSettingsDefaultVkbTw, value ); - } - break; - default: - break; - } - return value; - }; -#endif - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepThaiSCTSelector.cpp --- a/fep/aknfep/src/AknFepThaiSCTSelector.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,180 +0,0 @@ -/* -* Copyright (c) 2003-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepThaiSCTSelector methods. -* -*/ - - - - - - - - - - - - -#include "AknFepThaiSCTSelector.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface - -#include "AknFepCaseManager.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -CAknFepThaiSCTSelector::CAknFepThaiSCTSelector() - { - } - -CAknFepThaiSCTSelector::~CAknFepThaiSCTSelector() - { - } - -TInt CAknFepThaiSCTSelector::ThaiSCRResourceId(TUint aPrevGlyph, TInt aKey)//TInt aResID) - { - return(ThaiSctCharMap(ThaiGlyphType(aPrevGlyph), aKey)); - } - - -CAknFepThaiSCTSelector *CAknFepThaiSCTSelector::NewL() - { - - CAknFepThaiSCTSelector *self = new(ELeave)CAknFepThaiSCTSelector; - return (self); - - } - -TInt CAknFepThaiSCTSelector::ThaiSctCharMap(enum AknFepSCTThaiGlyphTypes aGlyphType, TInt aKey) - { - switch (aGlyphType) - { - case EAknFepThaiCharNonThai: - case EAknFepThaiCharNon: - case EAknFepThaiCharLV: - case EAknFepThaiCharFV1: - case EAknFepThaiCharFV2: - case EAknFepThaiCharFV3: - case EAknFepThaiCharBD: - case EAknFepThaiCharTone: - case EAknFepThaiCharAD1: - case EAknFepThaiCharAD2: - case EAknFepThaiCharAD3: - return((aKey==EPtiKeyStar) ? R_AKNFEP_SCT_THAI_STAR_COMMON : - R_AKNFEP_SCT_THAI_0_COMMON); - - case EAknFepThaiCharCons: - return((aKey==EPtiKeyStar) ? R_AKNFEP_SCT_THAI_STAR_CONS : - R_AKNFEP_SCT_THAI_0_CONS ); - - case EAknFepThaiCharAV1: - case EAknFepThaiCharBV1: - return((aKey==EPtiKeyStar) ? R_AKNFEP_SCT_THAI_STAR_AV1_BV1 : - R_AKNFEP_SCT_THAI_0_AV1_BV1); - - case EAknFepThaiCharAV2: - case EAknFepThaiCharBV2: - return((aKey==EPtiKeyStar) ? R_AKNFEP_SCT_THAI_STAR_AV2_BV2 : - R_AKNFEP_SCT_THAI_0_AV2_BV2); - - case EAknFepThaiCharAV3: - return((aKey==EPtiKeyStar) ? R_AKNFEP_SCT_THAI_STAR_AV3 : - R_AKNFEP_SCT_THAI_0_AV3); - - default: - return(0); - } - } - -AknFepSCTThaiGlyphTypes CAknFepThaiSCTSelector::ThaiGlyphType(TUint aGlyph) - { - if (aGlyph >= 0x0E01 && aGlyph <= 0x0E2E && aGlyph != 0x0E24 && aGlyph != 0x0E26 ) - { - return(EAknFepThaiCharCons); - } - else if (aGlyph >= 0x0E40 && aGlyph <= 0x0E44) - { - return(EAknFepThaiCharLV); - } - else if (aGlyph == 0x0E30 || aGlyph == 0x0E32 || aGlyph == 0x0E33) - { - return(EAknFepThaiCharFV1); - } - else if (aGlyph == 0x0E45) - { - return(EAknFepThaiCharFV2); - } - else if (aGlyph == 0x0E24 || aGlyph == 0x0E26) - { - return(EAknFepThaiCharFV3); - } - else if (aGlyph == 0x0E38) - { - return(EAknFepThaiCharBV1); - } - else if (aGlyph == 0x0E39) - { - return(EAknFepThaiCharBV2); - } - else if (aGlyph == 0x0E3A) - { - return(EAknFepThaiCharBD); - } - else if (aGlyph >= 0x0E48 && aGlyph <= 0x0E4B) - { - return(EAknFepThaiCharTone); - } - else if (aGlyph == 0x0E4C || aGlyph == 0x0E4D) - { - return(EAknFepThaiCharAD1); - } - else if (aGlyph == 0x0E47) - { - return(EAknFepThaiCharAD2); - } - else if (aGlyph == 0x0E4E) - { - return(EAknFepThaiCharAD3); - } - else if (aGlyph == 0x0E34) - { - return(EAknFepThaiCharAV1); - } - else if (aGlyph == 0x0E31 || aGlyph == 0x0E36) - { - return(EAknFepThaiCharAV2); - } - else if (aGlyph == 0x0E35 || aGlyph == 0x0E37) - { - return(EAknFepThaiCharAV3); - } - else - { - return(EAknFepThaiCharNonThai); - } - - - } - - -// End of file - - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUIInputStateEntryMiniQwertyCangJie.cpp --- a/fep/aknfep/src/AknFepUIInputStateEntryMiniQwertyCangJie.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,263 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryMiniQwertyCangJie methods. -* -*/ - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" -#include "AknFepUIInputStateEntryMiniQwertyCangJie.h" - - -#include "AknFepManager.h" //FepMan flag -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include -#include //CPtiEngine -#include //keys -#include - -//const TInt KInputPaneLength = 32; -//_LIT(KSep, "'"); -//_LIT(KReplace, ""); - -TAknFepInputStateEntryMiniQwertyCangJie::TAknFepInputStateEntryMiniQwertyCangJie( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryQwertyBaseChinesePhrase(aOwner,aUIContainer) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - if(iOwner->FepMan()->CangJieMode() == EPtiEngineNormalCangjieQwerty) - { - ptiengine->SetInputMode(EPtiEngineNormalCangjieQwerty); - } - else if(iOwner->FepMan()->CangJieMode() == EPtiEngineEasyCangjieQwerty) - { - ptiengine->SetInputMode(EPtiEngineEasyCangjieQwerty); - } - else - { - ptiengine->SetInputMode(EPtiEngineAdvCangjieQwerty); - } - ptiengine->SetCase(EPtiCaseLower); - UIContainer()->CandidatePane()->ShowCandidateOrdinals(EFalse); - } - -TBool TAknFepInputStateEntryMiniQwertyCangJie::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = ETrue; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress)//chr key to close UI - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || - CAknFepFnKeyManager::EFnKeyLock == iOwner->FepMan()->FnKeyState() || - CAknFepFnKeyManager::EFnKeyDown == iOwner->FepMan()->FnKeyState()) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - ret = ETrue; - } - else if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if (aKey == EKeyLeftShift || aKey ==EKeyLeftCtrl || aKey == EKeyRightCtrl) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if (aKey ==EKeyRightFunc)//fn - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - ret = ETrue; - } - else if(aKey == EStdKeyBackspace)//should have long and short - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - uiContainer->ShowVerticalScrollArrows(!(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage())); - SetInputPaneToneMark(); - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if ( aKey == EStdKeyDevice0 || aKey == EStdKeyDevice3 || aKey == EStdKeySpace ) // Add for SK1 - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - } - else if(aKey == EStdKeyUpArrow) - { - if (candidatePane->IsFirstPage()) - { - return ETrue; - } - candidatePane->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - UpdateIndicator(); - } - else if(aKey == EStdKeyDownArrow) - { - return TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - else if( aKey == EStdKeyRightArrow ) - { - if ( candidatePane->VisibleCandidateCount() != 1 ) - { - iOwner->ChangeState( ECandidate ); - candidatePane->SelectNext(); - UpdateIndicator(); - } - } - else if ( aKey == EStdKeyLeftArrow ) - { - if ( candidatePane->VisibleCandidateCount()!= 1 ) - { - iOwner->ChangeState( ECandidate ); - candidatePane->SelectLastPhrase(); - UpdateIndicator(); - } - } - else if(aLength == EShortKeyPress && iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - - if (stringBeforeLength != stringAfterLength) - { - if (ptiengine->GetPhoneticSpelling(1).Length() == 1) - { - // iOwner->FepMan()->UpdateCbaL(R_AVKON_SOFTKEYS_EMPTY); - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL); - } - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(!(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage())); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - SetInputPaneToneMark(); - uiContainer->InputPane()->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - - RefreshUI(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - - if (ptiengine->GetPhoneticSpelling(1).Length() == 0) - { - iOwner->FepMan()->UpdateCbaL(NULL); - } - } - else - { - ret = TAknFepInputStateEntryQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - - return ret; - } - - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryMiniQwertyCangJie::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryMiniQwertyCangJie::HandleCommandL( TInt aCommandId ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate( ); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan( ); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - // case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( text.Length( ) ) - { - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL( ); - iOwner->PtiEngine()->SetPredictiveChineseChar( text ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL( ); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUIInputStateEntryMiniQwertyPinyinPhrase.cpp --- a/fep/aknfep/src/AknFepUIInputStateEntryMiniQwertyPinyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,358 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryMiniQwertyPinyinPhrase methods. -* -*/ - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" -#include "AknFepUIInputStateEntryMiniQwertyPinyinPhrase.h" -#include "aknfepuictrleditpane.h" //pinyin phrase creation - -#include "AknFepManager.h" //FepMan flag -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include -#include //CPtiEngine -#include //keys -#include - -const TInt KManualChangeState = 0; -//const TUint16 KSegment = 0x0020; -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryMiniQwertyPinyinPhrase::TAknFepInputStateEntryMiniQwertyPinyinPhrase -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepInputStateEntryMiniQwertyPinyinPhrase::TAknFepInputStateEntryMiniQwertyPinyinPhrase( - MAknFepUIManagerStateInterface* aOwner,MAknFepUICtrlContainerChinese* aUIContainer ): - TAknFepInputMiniQwertyPinyinPhraseBase( aOwner, aUIContainer) - { - iState = EEntry; - iOwner->PtiEngine()->SetInputMode( EPtiEnginePinyinPhraseQwerty ); - iOwner->PtiEngine()->SetCase( EPtiCaseLower ); - UIContainer()->SetLayout( MAknFepUICtrlContainerChinese::ELayoutKeystroke ); - UIContainer()->FocusCandidatePane( ETrue ); - UIContainer()->CandidatePane()->SelectFirstPhrase(); - UIContainer()->CandidatePane()->ShowCandidateOrdinals( EFalse ); - UIContainer()->EditPaneWindow()->DeactiveCursor(); - UIContainer()->SetFepMan( iOwner->FepMan() ); - // so that it could handle EKeyCBA1 - iOwner->FepMan()->EntryPhrase( ETrue ); - RefreshUI( ETrue ); - } -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryMiniQwertyPinyinPhrase::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryMiniQwertyPinyinPhrase::HandleKeyL( TInt aKey, - TKeyPressLength aLength ) - { - TBool ret = ETrue; - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - switch ( aKey ) - { - case EStdKeyLeftFunc: //chr key - case EStdKeySpace: - case EStdKeyBackspace: - case EStdKeyEnter: - { - ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL( aKey, - aLength ); - break; - } - case EKeyLeftShift: - case EKeyRightShift: - case EKeyLeftCtrl: - case EKeyRightCtrl: - case EKeyRightFunc://fn - case EKeyLeftFunc: // fn - { - iOwner->FepMan()->TryCloseUiL(); - ret =EFalse; - break; - } - case EStdKeyUpArrow: - { - if ( candidatePane->IsFirstPage() ) - { - UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( KManualChangeState ); - iOwner->ChangeState( EMiniQwertyEdit ); - ret = ETrue; - } - else - { - candidatePane->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirst(); - UpdateIndicator(); - } - break; - } - case EStdKeyDownArrow: - { - ret = TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL( aKey, aLength ); - break; - } - case EStdKeyRightArrow: - { - if ( candidatePane->VisibleCandidateCount()!= 1 ) - { - iOwner->ChangeState( ECandidate ); - candidatePane->SelectNext(); - UpdateIndicator(); - } - break; - } - case EStdKeyLeftArrow: - { - if ( candidatePane->VisibleCandidateCount()!= 1 ) - { - iOwner->ChangeState( ECandidate ); - TInt numbertotal = UIContainer()->CandidatePane()->VisibleCandidateCount(); - UIContainer()->CandidatePane()->SelectIndex( numbertotal - 1 ); - UpdateIndicator(); - } - break; - } - case EStdKeyDevice0: //select key - case EStdKeyDevice3: // msk - { - ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL( - aKey, aLength ); - break; - } - case EStdKeyDevice1: - { - iOwner->FepMan()->TryCloseUiL(); - break; - } - case EStdKeySingleQuote: - { - iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick ); - break; - } - default: - // chr + character - if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed ) - || iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) ) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() - || CAknFepFnKeyManager::EFnKeyLock == iOwner->FepMan()->FnKeyState() - || CAknFepFnKeyManager::EFnKeyDown == iOwner->FepMan()->FnKeyState() - ||!iOwner->IsValidChineseInputKeyQwerty( aKey ) ) //fn play error tone - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else - { - ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL( - aKey, aLength ); - } - break; - } - return ret; - }; -// --------------------------------------------------------------------------- -// TAknFepInputStateEditinigMiniQwertyPinyinPhrase::TAknFepInputStateEditinigMiniQwertyPinyinPhrase -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepInputStateEditinigMiniQwertyPinyinPhrase::TAknFepInputStateEditinigMiniQwertyPinyinPhrase( - MAknFepUIManagerStateInterface* aOwner,MAknFepUICtrlContainerChinese* aUIContainer ): - TAknFepInputMiniQwertyPinyinPhraseBase( aOwner,aUIContainer ) - { - iState = EMiniQwertyEdit; - iOwner->PtiEngine()->SetInputMode( EPtiEnginePinyinPhraseQwerty ); - iOwner->PtiEngine()->SetCase( EPtiCaseLower ); - RefreshUI( ETrue ); - UIContainer()->FocusCandidatePane( EFalse ); - UIContainer()->CandidatePane()->ShowCandidateOrdinals( EFalse ); - UIContainer()->EditPaneWindow()->ActiveCursor(); - } -// --------------------------------------------------------------------------- -// TAknFepInputStateEditinigMiniQwertyPinyinPhrase::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEditinigMiniQwertyPinyinPhrase::HandleKeyL( TInt aKey ,TKeyPressLength aLength ) - { - TBool ret = ETrue; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - if ( iOwner->FepMan()->GetComposChrFlag() && aKey == EStdKeyLeftFunc ) - { - iOwner->FepMan()->SetComposChrFlag(EFalse); - return ETrue; - } - switch ( aKey ) - { - //the following key is handled by the base class - case EStdKeyLeftFunc: //chr key - case EStdKeySpace: - case EStdKeyBackspace: - case EStdKeyEnter: - case EStdKeyRightArrow: - case EStdKeyLeftArrow: - { - ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL( - aKey, aLength); - break; - } - case EKeyLeftShift: - case EKeyRightShift: - case EKeyLeftCtrl: - case EKeyRightCtrl: - case EKeyRightFunc://fn - case EKeyLeftFunc: // fn - { - if ( !uiContainer->EditPaneWindow()->GetAutoChangeStateFlag() - || uiContainer->EditPaneWindow()->PhraseArray()->Count() != 0) - { - iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick ); - ret = ETrue; - } - else - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - break; - } - // inactive - case EStdKeyUpArrow: - { - break; - } - //if the canidate is empty ,inactive;else candiniate selecting state - case EStdKeyDownArrow: - { - if ( 0 != candidatePane->VisibleCandidateCount() ) - { - uiContainer->EditPaneWindow()->SetChangeState( ETrue ); - iOwner->ChangeState( ECandidate ); - } - break; - } - case EStdKeyDevice0: - case EStdKeyDevice3: - { - ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL( - aKey, aLength); - break; - } - - case EStdKeyDevice1: - { - iOwner->FepMan()->TryCloseUiL(); - break; - } - case EStdKeySingleQuote: - { - iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick ); - break; - } - default: - // chr + character - if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed ) - || iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) ) - { - iOwner->FepMan()->SetComposChrFlag( ETrue ); - if ( !uiContainer->EditPaneWindow()->GetAutoChangeStateFlag() - || uiContainer->EditPaneWindow()->PhraseArray()->Count() != 0) - { - iOwner->FepMan()->PlaySound(EAvkonSIDStandardKeyClick); - return ETrue; - } - else - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - } - else - { - ret = TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL( - aKey, aLength); - break; - } - } - return ret; - } -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryMiniQwertyPinyinPhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryMiniQwertyPinyinPhrase::HandleCommandL( - TInt aCommandId ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate( ); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan( ); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - // case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( text.Length( ) ) - { - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL( ); - iOwner->PtiEngine()->SetPredictiveChineseChar( text ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL( ); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } -// --------------------------------------------------------------------------- -// TAknFepInputStateEditinigMiniQwertyPinyinPhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEditinigMiniQwertyPinyinPhrase::HandleCommandL( - TInt aCommandId ) - { - TAknFepInputMiniQwertyPinyinPhraseBase::HandleCommandL( aCommandId ); - } -// End Of File - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUIInputStatePredictiveInputMiniQwertyChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUIInputStatePredictiveInputMiniQwertyChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,212 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of predictive input phrase state -* -*/ - - - - - - - - - - - - -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiInputStatePredictiveInputMiniQwertyChinesePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "aknfepuictrleditpane.h" - -#include //CPtiEngine - -TAknFepInputStatePredictiveInputMiniQwertyChinesePhrase:: -TAknFepInputStatePredictiveInputMiniQwertyChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyBaseChinesePhrase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - candidatePane->SelectFirstPhrase(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - candidatePane->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - -TBool TAknFepInputStatePredictiveInputMiniQwertyChinesePhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - TInt selected = UIContainer()->CandidatePane()->SelectedIndex(); - TInt numbertotal = UIContainer()->CandidatePane()->VisibleCandidateCount(); - - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - return ETrue; - } - else if (iOwner->FepMan()->FnKeyState()) - { - return ETrue; - } - else if(aKey == EStdKeyBackspace ) - { - iOwner->FepMan()->TryCloseUiL(); - return ETrue; - } - else if (aKey ==EKeyRightFunc)//fn key - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ETrue; - } - else if ( aKey ==EStdKeySpace) - { - if (ECangJie ==iOwner->FepMan()->InputMode()) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - return ETrue; - } - else - { - return ETrue; - } - } - else if ( aKey == EKeyLeftShift || aKey == EKeyRightShift) - { -// iOwner->FepMan()->TryCloseUiL(); -// return EFalse; - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ETrue; - } - else if ( aKey == EStdKeyDevice0 || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - UIContainer()->EditPaneWindow()->SetChangeState(ETrue); - } - } - return ETrue; - } - else if (aKey == EStdKeyLeftArrow)//in the same row - { - if (selected == 0) - { - UIContainer()->CandidatePane()->SelectIndex(numbertotal-1); - } - else - { - UIContainer()->CandidatePane()->SelectIndex(selected - 1); - } - UIContainer()->CandidatePane()->SetHighlighted(ETrue); - return ETrue; - } - else if (aKey == EStdKeyRightArrow)//in the same row - { - if (selected == numbertotal-1) - { - UIContainer()->CandidatePane()->SelectIndex(0); - } - else - { - UIContainer()->CandidatePane()->SelectIndex(selected + 1); - } - UIContainer()->CandidatePane()->SetHighlighted(ETrue); - return ETrue; - } - else - { - return TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - // return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveInputMiniQwertyChinesePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStatePredictiveInputMiniQwertyChinesePhrase::HandleCommandL( - TInt aCommandId ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - // case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( text.Length() ) - { - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar( text ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } -} -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiIndicInputManager.cpp --- a/fep/aknfep/src/AknFepUiIndicInputManager.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1130 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUIIndicInputManager methods. -* -*/ - - - - - - - - - - - -#include "AknFepUiIndicInputManager.h" -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::ValidateInput - -// This function validates the input text given by PtiEngine. This function -// returns the resopnse code depending on the previous character, current input -// character and the next character. Depending on the response code apropriate -// action is taken for inputting the current inputed character. This function -// incorporates the logic for Devanagari alphabate input. -// ----------------------------------------------------------------------------- - - -TIndicInputResponse TAknFepUiIndicInputManager::ValidateInput( TInt aKey, - TUint aPrevChar, - TUint aCurrChar, - TUint /*aNextChar*/, - TBool& aIsHalantOrMatraAllowed, - TBool aIsStarKeyPressed, - TBool aIsKeyTimerExpired, - TPtiTextCase& aNewCase, - TKeyPressLength /*aLength*/, - TLanguage aLanguage, - TBool aIsRakarPresent /* = EFalse*/, - TBool aIsZWSPresent /* = EFalse */ -#ifdef RD_MARATHI - , TBool aIsChandraAPresent /* = EFalse */ -#endif // RD_MARATHI - ) - - { - TIndicInputResponse keyResponse = EIndicInputResponseNone; - - TPtiTextCase setcase = EPtiCaseLower; - - TAknFepUiIndicInputManager::SetHalantOrMatraAllowed( aPrevChar, - aIsHalantOrMatraAllowed, - aIsKeyTimerExpired, - aLanguage ); - - switch( aKey ) - { - case EPtiKey1: - { - if( IsCharNukta( aCurrChar, aLanguage ) && - ( IsCharNuktaConsonant( aPrevChar, aLanguage ) || - !IsCharBaseConsonant( aPrevChar, aLanguage ) ) ) - { - keyResponse = EIndicInputResponseInvalid; - } -#ifdef RD_MARATHI - else if( IsCharEyeLashRa( aCurrChar, aLanguage ) ) - { - keyResponse = EIndicInputResponseInsertEyeLashRa; - } -#endif // RD_MARATHI - - else if ( IsCharEmpty( aPrevChar, aLanguage ) ) - { - // The special characters present in key-1 have to be - // allowed. So the response is not set to digit directly - // But at the same time, skip the fallback modifiers. - if( IsCharModifier( aCurrChar, aLanguage ) ) - { - keyResponse = EIndicInputResponseInvalid; - } - } - else if( IsCharRakar( aCurrChar, aLanguage ) ) - { - if( aIsHalantOrMatraAllowed ) - { - keyResponse = EIndicInputResponseInsertRakar; - } - else - { - keyResponse = EIndicInputResponseInvalid; - } - } - else if( IsCharRepha( aCurrChar, aLanguage ) ) - { - if( IsRephaAllowed( aPrevChar, aLanguage ) || - ( aIsRakarPresent && !aIsKeyTimerExpired ) ) - { - keyResponse = EIndicInputResponseInsertRepha; - } - else - { - keyResponse = EIndicInputResponseInvalid; - } - } - else if ( IsCharOther( aPrevChar, aLanguage ) - || IsCharVirama( aPrevChar, aLanguage ) ) - { - // Since the response cannot be set to digit - // directly here, validate the modifiers first. - if( IsCharModifier( aCurrChar, aLanguage ) ) - { - if( !IsModifierAllowed( aPrevChar, aLanguage ) ) - { - keyResponse = EIndicInputResponseInvalid; - } - } - } - else if ( IsCharModifier( aPrevChar, aLanguage ) ) - { - // Unlike in earlier code, the response cannot be set to - // Digit directly here. The special characters present in - // key-1 have to be allowed. As a result, the fallback - // modifiers need to be skipped. - if( IsCharModifier( aCurrChar, aLanguage ) ) - { - if( !IsModifierAllowed( aPrevChar, aLanguage ) ) - { - keyResponse = EIndicInputResponseInvalid; - } - } - else - { - if ( ! aIsHalantOrMatraAllowed ) - { - setcase = EPtiCaseUpper; - } - else if ( IsCharVirama( aCurrChar, aLanguage ) ) - { - keyResponse = EIndicInputResponseInsertZWS; - } - } - } -#ifdef RD_MARATHI - else if( IsCharVirama( aCurrChar, aLanguage ) && - aIsHalantOrMatraAllowed ) - { - keyResponse = EIndicInputResponseInsertZWS; - } -#endif // RD_MARATHI - - // In cases where the response cannot be set to digit directly, - // each character in key-1 has to be validated. Example in an - // Here we validate the Virama, Rakara and Repha - if( IsCharVirama( aCurrChar, aLanguage ) ) - { - if( keyResponse != EIndicInputResponseInsertZWS ) - { - keyResponse = EIndicInputResponseInvalid; - } - } - else if( IsCharRakar( aCurrChar, aLanguage ) ) - { - if( keyResponse != EIndicInputResponseInsertRakar ) - { - keyResponse = EIndicInputResponseInvalid; - } - } - else if( IsCharRepha( aCurrChar, aLanguage ) ) - { - // In case of empty editor, all the modifiers, virama - // and rakar will be skipped. Even the Repha is to be skipped - if( keyResponse != EIndicInputResponseInsertRepha ) - { - keyResponse = EIndicInputResponseInvalid; - } - } - } - break; - - case EPtiKey2: - case EPtiKey3: - { - if ( IsCharEmpty( aPrevChar, aLanguage ) - || IsCharAnVowel( aPrevChar, aLanguage ) - || IsCharModifier( aPrevChar, aLanguage ) -#ifdef RD_MARATHI - || ( aIsChandraAPresent && !aIsKeyTimerExpired ) -#endif // RD_MARATHI - ) - { - setcase = EPtiCaseUpper; - } - else if( IsCharVirama( aPrevChar, aLanguage ) ) - { - setcase = EPtiCaseUpper; - - // Response code changed to EIndicInputResponseNone to avoid - // insertion of ZWS character for Vowels. - keyResponse = EIndicInputResponseNone; - } - else if ( IsCharOther( aPrevChar, aLanguage ) ) - { - if ( aIsKeyTimerExpired || IsCharSpace( aPrevChar ) || ( ! aIsHalantOrMatraAllowed ) ) - { - setcase = EPtiCaseUpper; - } - } - else if ( IsCharMatra( aPrevChar, aLanguage ) ) - { - if ( aIsKeyTimerExpired ) - { - setcase = EPtiCaseUpper; - } - } - else if ( IsCharBaseConsonant( aPrevChar, aLanguage ) - || IsCharNukta( aPrevChar, aLanguage ) ) - { - if ( aIsStarKeyPressed ) - { - setcase = EPtiCaseUpper; - } - } -#ifdef RD_MARATHI - if( IsCharChandraA( aCurrChar ) ) - { - keyResponse = EIndicInputResponseInsertChandraA; - } -#endif // RD_MARATHI - } - break; - - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - { - if ( aIsStarKeyPressed ) - { - if( IsCharBaseConsonant( aCurrChar, aLanguage ) - && ( IsCharBaseConsonant( aPrevChar, aLanguage ) || - IsCharNukta( aPrevChar, aLanguage ) ) ) - { - keyResponse = EIndicInputResponseInsertZWSandLigature; - } - else if( IsCharBaseConsonant( aCurrChar, aLanguage ) - && IsCharVirama( aPrevChar, aLanguage ) ) - { - keyResponse = EIndicInputResponseZWSandCharacter; - } - } - else if( IsCharVirama( aPrevChar, aLanguage ) ) - { - keyResponse = EIndicInputResponseZWSandCharacter; - } - } - break; - - case EPtiKey0: - { - // Special ligatures added in key-0. - if( IsCharLigature( aCurrChar, aLanguage ) ) - { - if ( aIsStarKeyPressed && - IsCharBaseConsonant( aPrevChar, aLanguage ) ) - { - keyResponse = EIndicInputResponseInsertViramaZWSandDirectLigature; - } - else if( IsCharVirama( aPrevChar, aLanguage ) && - IsCharAtStartOfLigature( aCurrChar, aLanguage ) && - !aIsZWSPresent ) - { - keyResponse = EIndicInputResponseZWSandDirectLigature; - } - else - { - keyResponse = EIndicInputResponseInsertDirectLigature; - } - } - } - break; - - default: - { - keyResponse = EIndicInputResponseIgnore; - } - break; - - } - aNewCase = setcase; - return keyResponse; - } - - - -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::IsCharOther - -// This function checks for wheather the character is other character. The other -// character includes numbers, character of other languages and spaces. -// ----------------------------------------------------------------------------- - -TBool TAknFepUiIndicInputManager::IsCharOther( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: -#ifdef RD_HINDI_PHONETIC_INPUT - - case KLangHindiPhonetic: -#endif - { - if ( !( IsCharBaseConsonant( aChar, aLanguage ) - || IsCharNukta( aChar, aLanguage ) - || IsCharMatra( aChar, aLanguage ) - || IsCharAnVowel( aChar, aLanguage ) - || IsCharModifier( aChar, aLanguage ) - || IsCharVirama( aChar, aLanguage ) - || IsCharRakar( aChar, aLanguage ) - || IsCharRepha( aChar, aLanguage ) - || IsCharLigature( aChar, aLanguage ) -#ifdef RD_MARATHI - || IsCharEyeLashRa( aChar, aLanguage ) - || IsCharChandraA( aChar ) -#endif - ) ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - return( result ); - } - -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::IsCharEmpty - -// This function checks wheather the character is null -// ----------------------------------------------------------------------------- - -TBool TAknFepUiIndicInputManager::IsCharEmpty( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: -#ifdef RD_HINDI_PHONETIC_INPUT - case KLangHindiPhonetic: -#endif - { - if ( aChar == 0 ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - return( result ); - } - - -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::IsCharBaseConsonant - -// This function checks wheather the character is base consonant -// ----------------------------------------------------------------------------- - -TBool TAknFepUiIndicInputManager::IsCharBaseConsonant( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: -#ifdef RD_HINDI_PHONETIC_INPUT - case KLangHindiPhonetic: -#endif - { - if ( ( aChar >= 0x0915 && aChar <= 0x0939 ) - ||( aChar >= 0x0958 && aChar <= 0x095F ) ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - return( result ); - } - - -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::IsCharNukta - -// This function checks wheather the character is Nukta. -// ----------------------------------------------------------------------------- - - TBool TAknFepUiIndicInputManager::IsCharNukta( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: -#ifdef RD_HINDI_PHONETIC_INPUT - case KLangHindiPhonetic: -#endif - { - if ( aChar == 0x093C ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - - return( result ); - } - -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::IsCharMatra - -// This function checks wheather the character is Nukta. -// ----------------------------------------------------------------------------- - -TBool TAknFepUiIndicInputManager::IsCharMatra( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: -#ifdef RD_HINDI_PHONETIC_INPUT - case KLangHindiPhonetic: -#endif - { - if ( ( aChar >= 0x093E && aChar <= 0x094C ) - ||( aChar == 0x0962 || aChar == 0x0963 ) ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - return( result ); - } - -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::IsCharAnVowel - -// This function checks for wheather the character is Nukta. -// ----------------------------------------------------------------------------- - - TBool TAknFepUiIndicInputManager::IsCharAnVowel( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: -#ifdef RD_HINDI_PHONETIC_INPUT - case KLangHindiPhonetic: -#endif - { - if ( ( aChar>=0x0904 && aChar<=0x0914 ) - ||( aChar==0x0960 || aChar==0x0961 ) ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - return( result ); - } - -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::IsCharModifier - -// This function checks wheather the character is Modifier. -// ----------------------------------------------------------------------------- - - TBool TAknFepUiIndicInputManager::IsCharModifier( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: -#ifdef RD_HINDI_PHONETIC_INPUT - case KLangHindiPhonetic: -#endif - { - if ( aChar>= 0x0901 && aChar <= 0x0903 ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - - return( result ); - } - -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::IsCharVirama - -// This function checks wheather the character is Halant. -// ----------------------------------------------------------------------------- - - - TBool TAknFepUiIndicInputManager::IsCharVirama( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: -#ifdef RD_HINDI_PHONETIC_INPUT - - case KLangHindiPhonetic: -#endif - { - if ( aChar == 0x094D ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - - return( result ); - } - -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::IsCharSpace - -// This function checks wheather the character is Space. -// ----------------------------------------------------------------------------- - -TBool TAknFepUiIndicInputManager::IsCharSpace( TUint aChar ) - { - TBool result = EFalse; - - if ( aChar == ( 0x0020 ) ) - { - result = ETrue; - } - return( result ); - } - -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::SetHalantAllowed - -// This function checks wheather the Halant can be inputted at the current curssor -// posiotion. -// ----------------------------------------------------------------------------- - -void TAknFepUiIndicInputManager::SetHalantOrMatraAllowed( TUint aPrevChar, - TBool& aViramaAllowed, - TBool aIsKeyTimerExpired, - TLanguage aLanguage ) - { - if ( IsCharAnVowel( aPrevChar, aLanguage ) ) - { - aViramaAllowed = EFalse; - } - else if ( IsCharBaseConsonant( aPrevChar, aLanguage ) || - IsCharNukta( aPrevChar, aLanguage ) ) - { - aViramaAllowed = ETrue; - } - if ( ( IsCharMatra( aPrevChar, aLanguage ) || - IsCharOther( aPrevChar, aLanguage ) || - IsCharVirama( aPrevChar, aLanguage ) || - IsCharModifier( aPrevChar, aLanguage ) ) && aIsKeyTimerExpired ) - { - // The new conditions are required as we are not making the response - // to digit as before. We iterate through all the characters in key-1 - // and skip the ones which are not required. - aViramaAllowed = EFalse; - } - } - -// ----------------------------------------------------------------------------- -// TAknFepUiIndicInputManager::Virama - -// This function returns back the unicode value for Halant. -// ----------------------------------------------------------------------------- - -TUint TAknFepUiIndicInputManager::Virama( TLanguage aLanguage ) - { - TUint ret = 0; - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: -#ifdef RD_HINDI_PHONETIC_INPUT - case KLangHindiPhonetic: -#endif - { - ret = 0x094D; - } - break; - default: /*Other Language*/ - break; - } - - return( ret ); - } - -TBool TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage aInputLanguage) - { - TBool ret = EFalse; - switch(aInputLanguage) - { - case ELangHindi: - case ELangMarathi: - ret = ETrue; - break; - - default: /*Other Language*/ - break; - } - return ret; - } - -TBool TAknFepUiIndicInputManager :: IsIndicDigitsSupported(TLanguage aInputLanguage) - { - TBool ret = EFalse; - switch(aInputLanguage) - { -#ifdef RD_HINDI_PHONETIC_INPUT - - case KLangHindiPhonetic: - ret = ETrue; - break; -#endif - default: - TLanguage uiLanguage = User::Language(); - switch(uiLanguage) - { - case ELangHindi: - case ELangMarathi: - ret = ETrue; - } - } - return ret; - } - -TBool TAknFepUiIndicInputManager::IsRephaAllowed( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: - { - if ( IsCharBaseConsonant( aChar, aLanguage ) || - IsCharMatra( aChar, aLanguage ) ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - return( result ); - } - -TBool TAknFepUiIndicInputManager::IsCharRepha( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: - { - if ( aChar == 0x0971 ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - - return( result ); - } - -TUint TAknFepUiIndicInputManager::RaCharacter( TLanguage aLanguage ) - { - TUint ret = 0; - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: - { - ret = 0x0930; - } - break; - - // Other Language - default: - break; - } - - return( ret ); - } - -void TAknFepUiIndicInputManager::GetRepha( TDes& aRepha, TLanguage aLanguage ) - { - aRepha.Zero(); - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: - { - TChar raChar( TAknFepUiIndicInputManager::RaCharacter( aLanguage ) ); - TChar virama( TAknFepUiIndicInputManager::Virama( aLanguage ) ); - aRepha.Append( raChar ); - aRepha.Append( virama ); - } - break; - - // Other Language - default: - break; - } - } - -TBool TAknFepUiIndicInputManager::IsCharRakar( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: - { - if ( aChar == 0x0972 ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - - return( result ); - } - -void TAknFepUiIndicInputManager::GetRakar( TDes& aRakar, TLanguage aLanguage ) - { - aRakar.Zero(); - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: - { - TChar virama( TAknFepUiIndicInputManager::Virama( aLanguage ) ); - TChar raChar( TAknFepUiIndicInputManager::RaCharacter( aLanguage ) ); - aRakar.Append( virama ); - aRakar.Append( raChar ); - } - break; - - // Other Language - default: - break; - } - } -#ifdef RD_HINDI_PHONETIC_INPUT -TBool TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage(TLanguage aInputLanguage) - { - TBool ret = EFalse; - switch(aInputLanguage) - { - case KLangHindiPhonetic: - ret = ETrue; - break; - default: - break; - } - return ret; - } -#endif - - -TBool TAknFepUiIndicInputManager::IsModifierAllowed( TUint aPrevChar, - TLanguage aLanguage ) - { - if( IsCharVirama( aPrevChar, aLanguage ) || - IsCharModifier( aPrevChar, aLanguage ) || - IsCharOther( aPrevChar, aLanguage ) ) - { - return EFalse; - } - - return ETrue; - } - -void TAknFepUiIndicInputManager::GetLigature( TDes& aLigature, - TUint aCurrChar, TLanguage aLanguage ) - { - aLigature.Zero(); - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: - { - switch( aCurrChar ) - { - case 0x0973: - { - // Ksha - aLigature.Append( 0x0915 ); - aLigature.Append( Virama( aLanguage ) ); - aLigature.Append( 0x0937 ); - } - break; - - case 0x0974: - { - // Gya(n) - aLigature.Append( 0x091C ); - aLigature.Append( Virama( aLanguage ) ); - aLigature.Append( 0x091E ); - } - break; - - case 0x0975: - { - // Shra - aLigature.Append( 0x0936 ); - aLigature.Append( Virama( aLanguage ) ); - aLigature.Append( 0x0930 ); - } - break; - - case 0x0976: - { - // Tra - aLigature.Append( 0x0924 ); - aLigature.Append( Virama( aLanguage ) ); - aLigature.Append( RaCharacter( aLanguage ) ); - } - break; - - default: - break; - } - } - - // Other Language - default: - break; - } - } - -TBool TAknFepUiIndicInputManager::IsCharLigature( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: - { - if ( aChar >= 0x0973 && aChar <= 0x0976 ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - - return( result ); - } - -TBool TAknFepUiIndicInputManager::IsCharAtStartOfLigature( TUint aChar, - TLanguage aLanguage) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: - { - if( aChar == 0x0973 ) - { - // Ksha is the first ligature in the key-map. - result = ETrue; - } - break; - default: /*Other Language*/ - break; - } - } - - return( result ); - } - -#ifdef RD_HINDI_PHONETIC_INPUT -TInt TAknFepUiIndicInputManager ::MapCharacterToKeys(TUint aChar, TLanguage aLanguage) - { - TPtiKey ret = EPtiKeyNone; - if( TAknFepUiIndicInputManager::IsCharOther( aChar, aLanguage ) - || TAknFepUiIndicInputManager::IsCharEmpty( aChar, aLanguage )) - { - ret = EPtiKey0; - } - else if(TAknFepUiIndicInputManager::IsCharBaseConsonant( aChar, aLanguage )) - { - ret = EPtiKey4; - } - else if( TAknFepUiIndicInputManager::IsCharMatra( aChar, aLanguage ) - || TAknFepUiIndicInputManager::IsCharAnVowel( aChar, aLanguage )) - { - ret = EPtiKey2; - } - else if( TAknFepUiIndicInputManager::IsCharNukta( aChar, aLanguage ) - || TAknFepUiIndicInputManager::IsCharModifier( aChar, aLanguage ) - || TAknFepUiIndicInputManager::IsCharVirama( aChar, aLanguage )) - { - ret = EPtiKey1; - } - return ret; - } -#endif - -TBool TAknFepUiIndicInputManager :: IsScriptDevanagari( TLanguage aInputLanguage ) - { - TBool ret = EFalse; - switch(aInputLanguage) - { - case ELangHindi: - case ELangMarathi: - ret = ETrue; - break; - - default: - break; - } - return ret; - } - -TBool TAknFepUiIndicInputManager::IsToCommitCharSeq( TIndicInputResponse aResponse ) - { - TBool result = EFalse; - - switch( aResponse ) - { - case EIndicInputResponseInsertZWSandLigature: - case EIndicInputResponseInsertViramaZWSandDirectLigature: - { - result = ETrue; - } - break; - default: - break; - } - return result; - } - -TBool TAknFepUiIndicInputManager::IsCharNuktaConsonant( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - case ELangHindi: -#ifdef RD_HINDI_PHONETIC_INPUT - - case KLangHindiPhonetic: -#endif - { - if ( aChar == 0x0929 || - aChar == 0x0931 || aChar == 0x0934 || - ( aChar >= 0x0958 && aChar <= 0x095F ) ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - return( result ); - } - -#ifdef RD_MARATHI - -TBool TAknFepUiIndicInputManager::IsCharEyeLashRa( TUint aChar, TLanguage aLanguage ) - { - TBool result = EFalse; - - switch( aLanguage ) - { - case ELangMarathi: - { - if ( aChar == 0x0977 ) - { - result = ETrue; - } - } - break; - default: /*Other Language*/ - break; - } - - return( result ); - } - -void TAknFepUiIndicInputManager::GetEyeLashRa( TDes& aEyeLashRa, - TLanguage aLanguage ) - { - aEyeLashRa.Zero(); - - switch( aLanguage ) - { - case ELangMarathi: - { - TChar virama( TAknFepUiIndicInputManager::Virama( aLanguage ) ); - aEyeLashRa.Append( 0x0931 ); - aEyeLashRa.Append( virama ); - aEyeLashRa.Append( ZERO_WIDTH_JOINER ); - } - break; - // Other Language - default: - break; - } - } - -TBool TAknFepUiIndicInputManager::IsCharChandraA( TUint aChar ) - { - // Since Chandra-A is specific to Marathi, we need not - // use the Language id check. - if ( aChar == 0x0978 ) - { - return ETrue; - } - - return EFalse; - } - -void TAknFepUiIndicInputManager::GetChandraA( TDes& aChandraA, - TBool aIsToGetSingleUnicodeValue /* = EFalse */ ) - { - aChandraA.Zero(); - - if( aIsToGetSingleUnicodeValue ) - { - aChandraA.Append( 0x0978 ); - } - else - { - aChandraA.Append( 0x0905 ); - aChandraA.Append( 0x0945 ); - } - } - -#endif //RD_MARATHI - -#ifndef RD_INTELLIGENT_TEXT_INPUT -TBool TAknFepUiIndicInputManager::IsIndicDependantCharacter(TUint aChar, TLanguage aLanguage) - { - - return (TAknFepUiIndicInputManager::IsCharModifier(aChar, aLanguage) - || TAknFepUiIndicInputManager::IsCharMatra(aChar, aLanguage) - || TAknFepUiIndicInputManager::IsCharVirama(aChar, aLanguage) - || TAknFepUiIndicInputManager::IsCharNukta(aChar, aLanguage)); - - - } -#endif //RD_INTELLIGENT_TEXT_INPUT -//End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputSAknFepUiInputStateCandidateQwertyStrokePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputSAknFepUiInputStateCandidateQwertyStrokePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,195 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateBase methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateBase.h" -#include "AknFepPanic.h" - -// CONSTANTS - -/** - * TAknFepInputStateBase class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepInputStateBase::TAknFepInputStateBase -// Constructor -// --------------------------------------------------------------------------- -// -TAknFepInputStateBase::TAknFepInputStateBase(MAknFepUIManagerStateInterface* aOwner) - :iOwner(aOwner), - iState(ENull), - iData(0) - { - } - -/** - * MPtiObserver interface. - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepInputStateBase::KeyTimerExpired -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateBase::KeyTimerExpired() - { - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateBase::LastWordInSelectionList -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateBase::LastWordInSelectionList() - { - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateBase::FirstWordInSelectionList -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateBase::FirstWordInSelectionList() - { - } - -/** - * TAknFepInputStateBase class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepInputStateBase::HandleKeyL -// Handling Keypress events -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateBase::HandleKeyL(TInt /*aKey*/, TKeyPressLength /*aLength*/) - { - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateBase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateBase::HandleCommandL(TInt /*aCommandId*/) - { - } -void TAknFepInputStateBase::HandleCommandL(TInt aCommandId, TInt /*aParam*/) - { - HandleCommandL(aCommandId); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateBase::State -// -// --------------------------------------------------------------------------- -// -TUIState TAknFepInputStateBase::State() const - { - return iState; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::CloseUI -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateBase::CloseUI() - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::InitializeStateL -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateBase::InitializeStateL() - { - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateBase::operator= -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateBase::operator=(const TAknFepInputStateBase& aState) - { - Mem::Copy(this, &aState, sizeof(TAknFepInputStateBase)); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateBase::SetStarKeyFlag -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateBase::SetStarKeyFlag( TBool aSet ) - { - iIsStarKeyPressed = aSet; - } -#ifdef RD_HINDI_PHONETIC_INPUT -// --------------------------------------------------------------------------- -// TAknFepInputStateInitialIndicPhoneticMultitap::GetPhoneticLatinChar -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateBase::GetPhoneticLatinChar(TChar& aChar)const - { - } -#endif -#ifdef RD_INTELLIGENT_TEXT_INPUT -// --------------------------------------------------------------------------- -// TAknFepInputStateBase::GetShortKeyPressTxtLength -// -// --------------------------------------------------------------------------- -// -TInt TAknFepInputStateBase::GetShortKeyPressTxtLength() - { - return iShortKeyPressText.Length(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateBase::SetShortKeyPressText -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateBase::SetShortKeyPressText(const TDesC& aText) - { - iShortKeyPressText.Zero(); - iShortKeyPressText.Copy(aText); - } -#endif // RD_INTELLIGENT_TEXT_INPUT - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidate.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidate.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStateCandidate methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidate.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUICtrlCandidatePane.h" //MAknFepUICtrlCandidatePane -#include //CPtiEngine - - -/////////////////// -// Candidate state -/////////////////// - -TAknFepInputStateCandidate::TAknFepInputStateCandidate( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBase(aOwner, aUIContainer) - { - iState = ECandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->CandidatePane()->SelectFirst(); - - TBool multiplePages = iOwner->PtiEngine()->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - } - - -TBool TAknFepInputStateCandidate::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - if(aKey==EKeyBackspace) - { - iOwner->ChangeState(EEntry); - return ETrue; - } - return TAknFepInputStateCandidateBase::HandleKeyL(aKey, aLength); - } - - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateBase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidateBase.h" - -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStateCandidateBase::TAknFepInputStateCandidateBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - } - -void TAknFepInputStateCandidateBase::HandleCommandL(TInt /*aCommandID*/) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - // get cursor position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable(ETrue); - } - -TBool TAknFepInputStateCandidateBase::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - if (aKey == EPtiKeyStar) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EKeyOK) - { - TPtrC text = candidatePane->CurrentCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - return ETrue; - } - -TBool TAknFepInputStateCandidateBase::HandleHorizontalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EKeyLeftArrow) - { - if(!candidatePane->SelectPrev()) - { - ptiengine->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectLast(); - } - response = ETrue; - } - else if (aKey == EKeyRightArrow) - { - if(!candidatePane->SelectNext()) - { - ptiengine->NextCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectFirst(); - } - response = ETrue; - } - return response; - } - -TBool TAknFepInputStateCandidateBase::HandleVerticalNavigation(TInt aKey) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (aKey == EKeyDownArrow) - { - ptiengine->NextCandidatePage(); - } - else if (aKey == EKeyUpArrow) - { - ptiengine->PreviousCandidatePage(); - } - else - { - return EFalse; - } - - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - candidatePane->SelectFirst(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - return ETrue; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateBaseChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateBaseChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1120 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of candidate base chinese phrase state -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidateBaseChinesePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" //FepMan flag - -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlPinyinPopup.h" -#include //CPtiEngine - -#include //CAknInformationNote - -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" //pinyin phrase creation -#include "aknfepzhuyinconvertion.h" -#include "aknfepzhuyinkeyhandlerinterface.h" -#include "AknFepZhuyinAnalyserDb.h" -#include "AknFepZhuyinAnalyser.h" - -_LIT( KPinyinListSeparator, "'" ); -_LIT( KPinyinStar, "*" ); -_LIT( KPinyinTone0ValidStr, "\x02C9"); -_LIT( KPinyinTone1ValidStr, "\x02CA"); -_LIT( KPinyinTone2ValidStr, "\x02C7"); -_LIT( KPinyinTone3ValidStr, "\x02CB"); -_LIT( KPinyinTone4ValidStr, "\x02D9"); - -const TText KPinyinTone0Valid = 0x02C9; -const TText KPinyinTone1Valid = 0x02CA; -const TText KPinyinTone2Valid = 0x02C7; -const TText KPinyinTone3Valid = 0x02CB; -const TText KPinyinTone4Valid = 0x02D9; -const TInt KKey0Code = 48; -const TInt KKey2Code = 50; -const TInt KKey3Code = 51; -const TInt KKey4Code = 52; -const TInt KKey5Code = 53; -const TInt KKey6Code = 54; -const TInt KKey7Code = 55; -const TInt KKey8Code = 56; -const TInt KKey9Code = 57; - -const TInt KMaxKeystrokeCount = 100; -const TInt KMaxPinyinLength = 60; - -const TInt KStarCount1 = 1; -const TInt KStarCount2 = 2; -const TInt KStarCount3 = 3; -const TInt KStarCount4 = 4; -const TInt KStarCount5 = 5; - -const TUint16 KSegment = 0x0020; - -_LIT( KKey0Num, "0"); -_LIT( KKey1Num, "1"); -_LIT( KKey2Num, "2"); -_LIT( KKey3Num, "3"); -_LIT( KKey4Num, "4"); -_LIT( KKey5Num, "5"); -_LIT( KKey6Num, "6"); -_LIT( KKey7Num, "7"); -_LIT( KKey8Num, "8"); -_LIT( KKey9Num, "9"); -_LIT( KPinyinSysSeparator, "\x002E"); - -TAknFepInputStateCandidateBaseChinesePhrase::TAknFepInputStateCandidateBaseChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBase(aOwner, aUIContainer) - { - } - -void TAknFepInputStateCandidateBaseChinesePhrase::HandleCommandL( - TInt aCommandId ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - // it may be one of the 'valid' numbers.. - MAknFepUICtrlCandidatePane* candidatePane = - UIContainer()->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - TPtrC text = candidatePane->CurrentPhraseCandidate(); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeyCancel: - // case (TUint16)EAknSoftkeyCancel: //the Cancle in soft CBA - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - case EAknSoftkeySelect: - //case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - HandleCommitL(); - break; - default: - TAknFepInputStateCandidateBase::HandleCommandL( aCommandId ); - break; - } - } - -TBool TAknFepInputStateCandidateBaseChinesePhrase::HandleKeyL( TInt aKey, - TKeyPressLength aLength ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if ( aKey == EPtiKeyStar ) - { - if ( fepMan->IsEnableKeyStar() ) - { - iOwner->FepMan()->TryCloseUiL(); - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return EFalse; - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - } - if ( !(HandleVerticalNavigation( aKey, aLength ) - || HandleHorizontalNavigation( aKey )) ) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex( aKey ); - MAknFepUICtrlCandidatePane* candidatePane = - UIContainer()->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - - TBool state = ETrue; - if ( popup->IsChangeStatet() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - if ( state ) - { - if ( candidatePane->SelectIndex( index, EFalse ) || aKey - == EKeyOK || aKey == EKeyCBA1 ) - { - HandleCommitL(); - } - } - } - return ETrue; - } - -TBool TAknFepInputStateCandidateBaseChinesePhrase::HandleHorizontalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EKeyLeftArrow) - { -// if (candidatePane->SelectedIndex() == 0 && -// candidatePane->IsFirstPage() ) -// { -// return ETrue; -// } - - if(!candidatePane->SelectPrev()) - { -// candidatePane->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectLastPhrase(); - } - response = ETrue; - } - else if (aKey == EKeyRightArrow) - { -// if (candidatePane->IsLastPage() && -// (candidatePane->SelectedIndex() == candidatePane->VisibleCandidateCount() - 1)) -// { -// return ETrue; -// } - - if(!candidatePane->SelectNext()) - { -// candidatePane->NextCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - } - response = ETrue; - } - - if (response) - { - UpdateIndicator(); - } - - return response; - } -TBool TAknFepInputStateCandidateBaseChinesePhrase::HandleVerticalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - MZhuyinKeyHandler* zhuyinKeyHandler = iOwner->ZhuyinKeyHandler(); - - if (aKey == EKeyDownArrow) - { - if (candidatePane->IsLastPage()) - { - return ETrue; - } - if ( iState != EPredictiveCandidate && - iState != EPredictiveInput ) - { - if (candidatePane->NeedGetNewCandidatePage() ) - { - if ( !iOwner->PtiEngine()->NextCandidatePage() ) - { - if ( candidatePane->IsLastPage() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - } - else - { - CDesCArrayFlat* phraseCandidates = - candidatePane->CandidateArray(); - RPointerArray list; - TRAP_IGNORE( - GetNewCandidatesL(iOwner->PtiEngine()->CandidatePage(), list); - for (TInt i = 0; i < list.Count(); ++i) - { - phraseCandidates->AppendL( *(list[i])); - } - list.ResetAndDestroy();); - } - } - } - candidatePane->NextCandidatePage(); - } - else if (aKey == EKeyUpArrow) - { - if ( candidatePane->IsFirstPage() && iState != EPredictiveCandidate ) - { - zhuyinKeyHandler->SetState(0); - iOwner->ChangeState(EZhuyinSequenceEdit); - return EFalse; - } - else if ( candidatePane->IsFirstPage() ) - { - return ETrue; - } - candidatePane->PreviousCandidatePage(); - } - else - { - return EFalse; - } - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - UpdateIndicator(); - return ETrue; - } - -TBool TAknFepInputStateCandidateBaseChinesePhrase::HandleVerticalNavigation(TInt aKey, TKeyPressLength aLength) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - - if (aKey == EKeyDownArrow) - { - TBool state = ETrue; - if ( popup->IsChangeStatet() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - if ( state ) - { - if (candidatePane->IsLastPage()) - { - return ETrue; - } - if ( iState != EPredictiveCandidate && - iState != EPredictiveInput ) - { - if (candidatePane->NeedGetNewCandidatePage() ) - { - if ( !iOwner->PtiEngine()->NextCandidatePage( ) ) - { - if ( candidatePane->IsLastPage() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - } - else - { - CDesCArrayFlat* phraseCandidates = - candidatePane->CandidateArray( ); - RPointerArray list; - TRAP_IGNORE( - GetNewCandidatesL( iOwner->PtiEngine()->CandidatePage( ), list ); - for (TInt i = 0; i < list.Count( ); ++i ) - { - phraseCandidates->AppendL( *(list[i]) ); - } - list.ResetAndDestroy();); - } - } - } - candidatePane->NextCandidatePage(); - } - } - else if (aKey == EKeyUpArrow) - { - if (candidatePane->IsFirstPage() ) - { - return ETrue; - } - candidatePane->PreviousCandidatePage(); - } - else - { - return EFalse; - } - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - UpdateIndicator(); - return ETrue; - } - -void TAknFepInputStateCandidateBaseChinesePhrase::UpdateIndicator() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (candidatePane->IsFirstPage()) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage()) - { - uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows(ETrue); - } - } - -// --------------------------------------------------------- -// get the valid keystroke -// --------------------------------------------------------- -// -void TAknFepInputStateCandidateBaseChinesePhrase::GetValidkeystrokeL( ) - { - TInt keyCode; - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - TBuf<1> keystroke; - TBuf<1> keystrokeTmp; - - CPtiEngine* ptiengine = iOwner->PtiEngine( ); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer( ); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow( ); - - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArray( ); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray( ); - - inEffectKeystrokeArray->Reset( ); - inEffectKeystrokeArray->Compress( ); - - for (TInt i = 0; i < keystrokeArray->Count( ); ++i ) - { - stringBeforeLength = 0; - stringAfterLength = 0; - keystroke.Copy( keystrokeArray->MdcaPoint( i ) ); - if ( 0 == i ) - { - if ( ( 0 == keystroke.Compare( KPinyinStar ) ) || ( 0 - == keystroke.Compare( KPinyinListSeparator ) ) ) - { - return; - } - } - else - { - keystrokeTmp.Copy( keystrokeArray->MdcaPoint( i - 1 ) ); - if ( 0 == keystroke.Compare( KPinyinListSeparator ) ) - { - if ( ( 0 != keystrokeTmp.Compare( KPinyinListSeparator ) ) - && ( 0 != keystrokeTmp.Compare( KPinyinStar ) ) ) - { - inEffectKeystrokeArray->AppendL( keystroke ); - } - return; - } - } - - if ( i >= 1 ) - { - keystrokeTmp.Copy( keystrokeArray->MdcaPoint( i - 1 ) ); - if ( ( 0 == keystroke.Compare( KPinyinStar ) ) && ( 0 - == keystrokeTmp.Compare( KPinyinStar ) ) ) - { - inEffectKeystrokeArray->AppendL( keystroke ); - ptiengine->IncrementToneMark( ETrue ); - } - else if ( ( 0 != keystrokeTmp.Compare( KPinyinStar ) ) && ( 0 - == keystroke.Compare( KPinyinStar ) ) ) - { - inEffectKeystrokeArray->AppendL( keystroke ); - ptiengine->IncrementToneMark( ETrue ); - } - else if ( ( 0 != keystroke.Compare( KPinyinStar ) ) && ( 0 - == keystrokeTmp.Compare( KPinyinStar ) ) ) - { - if ( !CheckSpellingOfPtiEngine( ) ) - { - ptiengine->DeleteKeyPress( ); - DeleteTonMarkFromInEffectKeytrokeArray( ); - } - return; - } - } - - if ( 0 != keystroke.Compare( KPinyinStar ) ) - { - - inEffectKeystrokeArray->AppendL( keystrokeArray->MdcaPoint( i ) ); - GetKeystrokeCode( keyCode, keystroke ); - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length( ); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)keyCode).Length( ); - if ( stringBeforeLength == stringAfterLength ) - { - inEffectKeystrokeArray->Delete( inEffectKeystrokeArray->Count( ) - - 1 ); - inEffectKeystrokeArray->Compress( ); - return; - } - if ( 0 == keystroke.Compare( KPinyinListSeparator ) ) - { - return; - } - - if ( !CheckSpellingOfPtiEngine( ) ) - { - ptiengine->DeleteKeyPress( ); - inEffectKeystrokeArray->Delete( i ); - return; - } - } - else - { - if ( i == keystrokeArray->Count( ) - 1 ) - { - if ( !CheckSpellingOfPtiEngine( ) ) - { - ptiengine->DeleteKeyPress( ); - DeleteTonMarkFromInEffectKeytrokeArray( ); - return; - } - } - } - } - } - -// --------------------------------------------------------- -// Check the Spelling of PtiEngine. -// --------------------------------------------------------- -// -TBool TAknFepInputStateCandidateBaseChinesePhrase::CheckSpellingOfPtiEngine( ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine( ); - TInt count = ptiengine->PhoneticSpellingCount( ); - - for (TInt i = 1; i <= count; ++i ) - { - TPtrC spelling = ptiengine->GetPhoneticSpelling( i ); - if ( KErrNotFound == spelling.Find( KPinyinListSeparator ) ) - { - return ETrue; - } - } - - return EFalse; - } - -void TAknFepInputStateCandidateBaseChinesePhrase::GetKeystrokeCode( - TInt& aKey, const TDesC& aKeystroke ) - { - if ( 0 == aKeystroke.Compare( KKey0Num ) ) - { - aKey = KKey0Code; - } - else if ( 0 == aKeystroke.Compare( KKey1Num ) ) - { - aKey = KKey0Code; - } - else if ( 0 == aKeystroke.Compare( KKey2Num ) ) - { - aKey = KKey2Code; - } - else if ( 0 == aKeystroke.Compare( KKey3Num ) ) - { - aKey = KKey3Code; - } - else if ( 0 == aKeystroke.Compare( KKey4Num ) ) - { - aKey = KKey4Code; - } - else if ( 0 == aKeystroke.Compare( KKey5Num ) ) - { - aKey = KKey5Code; - } - else if ( 0 == aKeystroke.Compare( KKey6Num ) ) - { - aKey = KKey6Code; - } - else if ( 0 == aKeystroke.Compare( KKey7Num ) ) - { - aKey = KKey7Code; - } - else if ( 0 == aKeystroke.Compare( KKey8Num ) ) - { - aKey = KKey8Code; - } - else if ( 0 == aKeystroke.Compare( KKey9Num ) ) - { - aKey = KKey9Code; - } - else if ( 0 == aKeystroke.Compare( KPinyinListSeparator ) ) - { - aKey = KKey0Code; - } - - } -// --------------------------------------------------------- -// clear the ptiengine keystroke; -// --------------------------------------------------------- -// -void TAknFepInputStateCandidateBaseChinesePhrase::ClearPtiEngineKeystroke( ) - { - CDesCArrayFlat* inEffectKeystrokeArray = UIContainer()->PinyinPopupWindow()->InEffectKeystrokeArray( ); - - for (TInt i = 0; i < KMaxKeystrokeCount; ++i ) - { - iOwner->PtiEngine()->DeleteKeyPress( ); - } - inEffectKeystrokeArray->Reset( ); - inEffectKeystrokeArray->Compress( ); - } - -// --------------------------------------------------------- -// delete tonmark from in effect keystroke array -// --------------------------------------------------------- -// -void TAknFepInputStateCandidateBaseChinesePhrase::DeleteTonMarkFromInEffectKeytrokeArray( ) - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray(); - TInt count = inEffectKeystrokeArray->Count() - 1; - TInt checkCount = 0; - for ( TInt i = count; i > 0 ; i-- ) - { - if ( 0 == inEffectKeystrokeArray->MdcaPoint( i ).Compare( KPinyinStar ) ) - { - inEffectKeystrokeArray->Delete( i ); - inEffectKeystrokeArray->Compress(); - checkCount = checkCount + 1; - } - else - { - break; - } - } - - if ( checkCount > 0 ) - { - if ( inEffectKeystrokeArray->Count() > 0 ) - { - inEffectKeystrokeArray->Delete( inEffectKeystrokeArray->Count() -1 ); - } - iOwner->PtiEngine()->DeleteKeyPress(); - } - } - -// --------------------------------------------------------- -// get the valid keystroke -// --------------------------------------------------------- -// -void TAknFepInputStateCandidateBaseChinesePhrase::CheckTonemarkL( ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine( ); - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow( ); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray( ); - CDesCArrayFlat* spelling = popup->OptimizeSpelling( ); - - TInt keystrokeStarCount = 0; - TInt validSpellCount = 0; - TInt i = 0; - TBuf<1> buf; - - TBuf<1> lastSpellTonemark; - TBuf<1> tonmarkBuf0; - TBuf<1> tonmarkBuf1; - TBuf<1> tonmarkBuf2; - TBuf<1> tonmarkBuf3; - TBuf<1> tonmarkBuf4; - TBuf spellBuf; - tonmarkBuf0.Append( KPinyinTone0Valid ); - tonmarkBuf1.Append( KPinyinTone1Valid ); - tonmarkBuf2.Append( KPinyinTone2Valid ); - tonmarkBuf3.Append( KPinyinTone3Valid ); - tonmarkBuf4.Append( KPinyinTone4Valid ); - - if ( 0 == inEffectKeystrokeArray->Count( ) ) - { - return; - } - - for (i = inEffectKeystrokeArray->Count( ) - 1; i >= 0; i-- ) - { - if ( 0 == inEffectKeystrokeArray->MdcaPoint( i ).Compare( KPinyinStar ) ) - { - keystrokeStarCount = keystrokeStarCount + 1; - } - else - { - break; - } - } - - if ( 0 == keystrokeStarCount ) - { - return; - } - - switch ( keystrokeStarCount ) - { - case KStarCount1: - buf.Copy( tonmarkBuf0 ); - break; - case KStarCount2: - buf.Copy( tonmarkBuf1 ); - break; - case KStarCount3: - buf.Copy( tonmarkBuf2 ); - break; - case KStarCount4: - buf.Copy( tonmarkBuf3 ); - break; - case KStarCount5: - buf.Copy( tonmarkBuf4 ); - break; - default: - break; - } - - spelling->Reset( ); - spelling->Compress( ); - - ptiengine->GetPhoneticSpellingsL( *spelling ); - - for (i = 0; i < spelling->Count( ); ++i ) - { - spellBuf.Copy( spelling->MdcaPoint( i ) ); - TInt position = spellBuf.Find( KPinyinListSeparator ); - if ( KErrNotFound == position ) - { - lastSpellTonemark.Copy( spellBuf.Mid( spellBuf.Length( ) - 1, 1 ) ); - if ( 0 == lastSpellTonemark.Compare( buf ) ) - { - validSpellCount = 1; - break; - } - } - } - - spelling->Reset( ); - spelling->Compress( ); - - if ( validSpellCount > 0 ) - { - return; - } - - for (i = 0; i < keystrokeStarCount; ++i ) - { - inEffectKeystrokeArray->Delete( inEffectKeystrokeArray->Count( ) -1 ); - } - - ptiengine->DeleteKeyPress( ); - - if ( inEffectKeystrokeArray->Count( ) > 0 ) - { - inEffectKeystrokeArray->Delete( inEffectKeystrokeArray->Count( ) - 1 ); - } - inEffectKeystrokeArray->Compress( ); - - ptiengine->DeleteKeyPress( ); - - while (inEffectKeystrokeArray->Count( ) > 0 ) - { - spelling->Reset( ); - spelling->Compress( ); - ptiengine->GetPhoneticSpellingsL( *spelling ); - - for (i = 0; i < spelling->Count( ); ++i ) - { - if ( KErrNotFound == spelling->MdcaPoint( i ).Find( KPinyinListSeparator ) ) - { - spelling->Reset( ); - spelling->Compress( ); - return; - } - } - ptiengine->DeleteKeyPress( ); - inEffectKeystrokeArray->Delete( inEffectKeystrokeArray->Count( ) - 1 ); - } - - spelling->Reset( ); - spelling->Compress( ); - } - -TBool TAknFepInputStateCandidateBaseChinesePhrase::IsValid( const TDesC& aDesC, TInt aCount ) - { - TBool lastIsToneMark = EFalse; - TBool ret = ETrue; - TInt charCount = aCount; - for ( TInt i = 0; i < aDesC.Length(); i++ ) - { - if ( ( aDesC.Mid( i, 1 ) == KPinyinSysSeparator ) || - ( aDesC.Mid( i, 1 ) == KPinyinListSeparator ) || - ( *aDesC.Mid( i , 1 ).Ptr() == KPinyinTone0Valid ) || - ( *aDesC.Mid( i , 1 ).Ptr() == KPinyinTone1Valid ) || - ( *aDesC.Mid( i , 1 ).Ptr() == KPinyinTone2Valid ) || - ( *aDesC.Mid( i , 1 ).Ptr() == KPinyinTone3Valid ) || - ( *aDesC.Mid( i , 1 ).Ptr() == KPinyinTone4Valid ) ) - { - if ( lastIsToneMark && charCount <= 0 ) - { - ret = EFalse; - } - lastIsToneMark = ETrue; - charCount--; - } - else - { - lastIsToneMark = EFalse; - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateBaseChinesePhrase::HandleCommitL -// Handle CBA1 or select event. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateBaseChinesePhrase::HandleCommitL() - { - // it may be one of the 'valid' numbers.. - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlCandidatePane* candidatePane = - UIContainer()->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if ( text.Length() ) - { - //commit and show char in editor - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - TInt i = 0; - CDesCArrayFlat* keystroke = - UIContainer()->PinyinPopupWindow()->KeystrokeArray(); - if ( keystroke->Count() != 0 && keystroke->Count() - > text.Length() ) - { - TBuf seq; - for (i = 0; i < keystroke->Count(); ++i ) - { - seq.Append( keystroke->MdcaPoint( i ) ); - } - TInt count = 0; - - TBufC buf1; - TPtr ptr1 = buf1.Des(); - TBufC keyseqBuf; - TPtr ptr2 = keyseqBuf.Des(); - TBuf ptr2Left; - ptr2.Copy( seq ); - if ( ptiengine->SelectedPhoneticSpelling() == 1 ) - { - ptr1 = ptiengine->GetPhoneticSpelling(1); - } - else - { - UIContainer()->InputPane()->GetText( ptr1 ); - } - TInt pos = 0; - TInt len = 0; - - CDesCArray - * chineseCharacterArrayKeystroke = - UIContainer()->PinyinPopupWindow()->ChooseChineseCharacterArrayKeystroke(); - chineseCharacterArrayKeystroke->Reset(); - for (i = 0; i < ptr1.Length() && count < text.Length() - && ptr2.Length() != 0; i++ ) - { - if ( ptr1.Mid( i, 1 ) == KPinyinSysSeparator || ptr1.Mid( - i, 1 ) == KPinyinListSeparator ) - { - pos = i - len - count; - if ( pos < 0 ) - { - pos = 0; - } - - if ( pos == ptr2.Length() ) - { - pos = ptr2.Length() - 1; - } - - if ( ptr2.Mid( pos, 1 ) == KPinyinListSeparator ) - { - i++; - pos += 1; - chineseCharacterArrayKeystroke->AppendL( - ptr2.Left( pos ) ); - ptr2 = ptr2.Mid( pos ); - } - else - { - chineseCharacterArrayKeystroke->AppendL( - ptr2.Left( pos ) ); - ptr2 = ptr2.Mid( pos ); - } - len += pos; - count++; - } - else if ( *ptr1.Mid( i, 1 ).Ptr() == KPinyinTone0Valid ) - { - pos = i + 1 - len - count; - len += pos; - ptr2Left.Zero(); - ptr2Left.Copy( ptr2.Left( pos - 1 ) ); - ptr2Left.Append( KPinyinTone0ValidStr ); - chineseCharacterArrayKeystroke->AppendL( ptr2Left ); - ptr2 = ptr2.Mid( pos ); - count++; - } - else if ( *ptr1.Mid( i, 1 ).Ptr() == KPinyinTone1Valid ) - { - pos = i + 2 - len - count; - len += pos - 1; - ptr2Left.Zero(); - ptr2Left.Copy( ptr2.Left( pos - 2 ) ); - ptr2Left.Append( KPinyinTone1ValidStr ); - chineseCharacterArrayKeystroke->AppendL( ptr2Left ); - ptr2 = ptr2.Mid( pos ); - count++; - } - else if ( *ptr1.Mid( i, 1 ).Ptr() == KPinyinTone2Valid ) - { - pos = i + 3 - len - count; - len += pos - 2; - ptr2Left.Zero(); - ptr2Left.Copy( ptr2.Left( pos - 3 ) ); - ptr2Left.Append( KPinyinTone2ValidStr ); - chineseCharacterArrayKeystroke->AppendL( ptr2Left ); - ptr2 = ptr2.Mid( pos ); - count++; - } - else if ( *ptr1.Mid( i, 1 ).Ptr() == KPinyinTone3Valid ) - { - pos = i + 4 - len - count; - len += pos - 3; - ptr2Left.Zero(); - ptr2Left.Copy( ptr2.Left( pos - 4 ) ); - ptr2Left.Append( KPinyinTone3ValidStr ); - chineseCharacterArrayKeystroke->AppendL( ptr2Left ); - ptr2 = ptr2.Mid( pos ); - count++; - } - else if ( *ptr1.Mid( i, 1 ).Ptr() == KPinyinTone4Valid ) - { - pos = i + 5 - len - count; - len += pos - 4; - ptr2Left.Zero(); - ptr2Left.Copy( ptr2.Left( pos - 5 ) ); - ptr2Left.Append( KPinyinTone4ValidStr ); - chineseCharacterArrayKeystroke->AppendL( ptr2Left ); - ptr2 = ptr2.Mid( pos ); - count++; - } - } - - TInt totalCount = 0; - for (i = 0; i < ptr1.Length(); i++ ) - { - if ( (ptr1.Mid( i, 1 ) == KPinyinSysSeparator) - || (ptr1.Mid( i, 1 ) == KPinyinListSeparator) - || (*ptr1.Mid( i, 1 ).Ptr() == KPinyinTone0Valid) - || (*ptr1.Mid( i, 1 ).Ptr() == KPinyinTone1Valid) - || (*ptr1.Mid( i, 1 ).Ptr() == KPinyinTone2Valid) - || (*ptr1.Mid( i, 1 ).Ptr() == KPinyinTone3Valid) - || (*ptr1.Mid( i, 1 ).Ptr() == KPinyinTone4Valid) ) - { - totalCount++; - } - } - - if ( !((ptr1.Right( 1 ) == KPinyinListSeparator) - || (*ptr1.Right( 1 ).Ptr() == KPinyinTone0Valid) - || (*ptr1.Right( 1 ).Ptr() == KPinyinTone1Valid) - || (*ptr1.Right( 1 ).Ptr() == KPinyinTone2Valid) - || (*ptr1.Right( 1 ).Ptr() == KPinyinTone3Valid) - || (*ptr1.Right( 1 ).Ptr() == KPinyinTone4Valid)) ) - { - totalCount++; - } - - if ( totalCount > text.Length() ) - { - CDesCArray - * chineseCharacterArray = - UIContainer()->PinyinPopupWindow()->ChooseChineseCharacterArray(); - chineseCharacterArray->Reset(); - for (i = 0; i < text.Length(); i++ ) - { - chineseCharacterArray->AppendL( text.Mid( i, 1 ) ); - } - //set key stroke - CDesCArray* keyStroke = - UIContainer()->PinyinPopupWindow()->KeystrokeArray(); - keyStroke->Reset(); - for (i = 0; i < ptr2.Length(); i++ ) - { - keyStroke->AppendL( ptr2.Mid( i, 1 ) ); - } - //set show stroke - CDesCArray - * showStroke = - UIContainer()->PinyinPopupWindow()->ShowKeystrokeArray(); - showStroke->Reset(); - TInt pinyinStarCount = 0; - for (i = 0; i < ptr2.Length(); ) - { - pinyinStarCount = 0; - if ( ptr2.Mid( i, 1 ) == KPinyinStar ) - { - while (i < ptr2.Length() && ptr2.Mid( i, 1 ) - == KPinyinStar ) - { - pinyinStarCount++; - i++; - } - switch ( pinyinStarCount ) - { - case 1: - showStroke->AppendL( KPinyinTone0ValidStr ); - break; - case 2: - showStroke->AppendL( KPinyinTone1ValidStr ); - break; - case 3: - showStroke->AppendL( KPinyinTone2ValidStr ); - break; - case 4: - showStroke->AppendL( KPinyinTone3ValidStr ); - break; - case 5: - showStroke->AppendL( KPinyinTone4ValidStr ); - break; - default: - break; - } - } - else - { - showStroke->AppendL( ptr2.Mid( i, 1 ) ); - i++; - } - } - fepMan->PinyinPhraseCreation( ETrue ); - ClearPtiEngineKeystroke(); - GetValidkeystrokeL(); - CheckTonemarkL(); - - CDesCArrayFlat* inEffectKeystrokeArray = - popup->InEffectKeystrokeArray(); - - if ( inEffectKeystrokeArray->Count() == 0 || !IsValid( - ptr1, text.Length() ) ) - { - UIContainer()->SetControlInVisible( EFalse ); - popup->SetPhraseCreationState( ETrue ); - iOwner->ChangeState( EKeySequenceEdit ); - } - else - { - popup->SetPhraseCreationState( ETrue ); - iOwner->ChangeState( ESpellingSelection ); - } - } - else - { - CDesCArray* keyStroke = - UIContainer()->PinyinPopupWindow()->KeystrokeArray(); - keyStroke->Reset(); - //commit and show char in editor - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL(); - fepMan->PinyinPhraseCreation( EFalse ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - } - else - { - CDesCArray* keyStroke = - UIContainer()->PinyinPopupWindow()->KeystrokeArray(); - keyStroke->Reset(); - //commit and show char in editor - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL(); - fepMan->PinyinPhraseCreation( EFalse ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState( EEntry ); - } - } - -void TAknFepInputStateCandidateBaseChinesePhrase::GetNewCandidatesL(const TDesC& aSource, - RPointerArray& aList) - { - TInt start = 0; - TInt length = 0; - - for (TInt ii = 0; ii < aSource.Length(); ii++) - { - if (aSource[ii] == KSegment) - { - TPtrC segment(aSource.Ptr() + start, length); - aList.AppendL(segment.AllocL()); - start += (length + 1); - length = 0; - } - else - { - length++; - } - } - - if (length) - { - TPtrC segm(aSource.Ptr() + start, length); - aList.AppendL(segm.AllocL()); - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateBasePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateBasePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateBasePhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidateBasePhrase.h" - -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStateCandidateBasePhrase::TAknFepInputStateCandidateBasePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBase(aOwner, aUIContainer) - { - } - -TBool TAknFepInputStateCandidateBasePhrase::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - if (aKey == EPtiKeyStar) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EKeyOK) - { - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - return ETrue; - } - -TBool TAknFepInputStateCandidateBasePhrase::HandleHorizontalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EKeyLeftArrow) - { - if(!candidatePane->SelectPrev()) - { - candidatePane->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectLastPhrase(); - } - response = ETrue; - } - else if (aKey == EKeyRightArrow) - { - if(!candidatePane->SelectNext()) - { - candidatePane->NextCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - } - response = ETrue; - } - return response; - } - -TBool TAknFepInputStateCandidateBasePhrase::HandleVerticalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - if (aKey == EKeyDownArrow) - { - candidatePane->NextCandidatePage(); - } - else if (aKey == EKeyUpArrow) - { - candidatePane->PreviousCandidatePage(); - } - else - { - return EFalse; - } - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - return ETrue; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateChinese.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateChinese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,265 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Pinyin phrase predictive Qwerty state -* -*/ - - - - - - - - - - - - -// System includes -#include //CPtiEngine - -// User includes -#include "AknFepUiInputStateCandidateChinese.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUICtrlCandidatePane.h" //MAknFepUICtrlCandidatePane -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" - -const TInt KMaxCandidateCountFromCore = 6; - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateChinese:: -// TAknFepInputStateCandidateChinese -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepInputStateCandidateChinese::TAknFepInputStateCandidateChinese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBase(aOwner, aUIContainer) - { - iState = ECandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->CandidatePane()->SelectFirst(); - - TBool multiplePages = iOwner->PtiEngine()->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateChinese:: -// HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateCandidateChinese::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - if(aKey==EKeyBackspace) - { - iOwner->ChangeState(EEntry); - return ETrue; - } - - if (aKey == EPtiKeyStar) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - - if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EKeyOK) - { - TPtrC text = candidatePane->CurrentCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - UpdateIndicator(); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateChinese:: -// HandleHorizontalNavigation -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateCandidateChinese::HandleHorizontalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EKeyLeftArrow) - { - if (candidatePane->SelectedIndex() == 0 && - ptiengine->NumberOfCandidates() == 0) - { - return ETrue; - } - if(!candidatePane->SelectPrev()) - { - ptiengine->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectLast(); - } - response = ETrue; - } - else if (aKey == EKeyRightArrow) - { - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - - if (bufLength != KMaxCandidateCountFromCore && - candidatePane->SelectedIndex() == (bufLength -1)) - { - return ETrue; - } - if(!candidatePane->SelectNext()) - { - ptiengine->NextCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectFirst(); - } - response = ETrue; - } - - if (response) - { - UpdateIndicator(); - } - - return response; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateChinese:: -// HandleVerticalNavigation -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateCandidateChinese::HandleVerticalNavigation(TInt aKey) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (aKey == EKeyDownArrow) - { - if (iOwner->PtiEngine()->CandidatePage().Length() != - KMaxCandidateCountFromCore) - { - return ETrue; - } - ptiengine->NextCandidatePage(); - } - else if (aKey == EKeyUpArrow) - { - if (ptiengine->NumberOfCandidates() == 0) - { - return ETrue; - } - ptiengine->PreviousCandidatePage(); - } - else - { - return EFalse; - } - - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - candidatePane->SelectFirst(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - UpdateIndicator(); - - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateChinese:: -// UpdateIndicator -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateChinese::UpdateIndicator() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - uiContainer->CandidatePane()->ShowDownScrollArrows - (bufLength == KMaxCandidateCountFromCore ? ETrue : EFalse); - - if (candidatePane->SelectedIndex() == 0 && - ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - } - - if (bufLength != KMaxCandidateCountFromCore && - candidatePane->SelectedIndex() == (bufLength -1)) - { - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,265 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of candidate chinese phrase state -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidateChinesePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" -#include "AknFepUICtrlCandidatePane.h" //MAknFepUICtrlCandidatePane -#include //CPtiEngine -#include -#include "aknfepzhuyinconvertion.h" -#include "aknfepzhuyinkeyhandlerinterface.h" -#include - -const TInt KMaxBufLen = 100; -const TInt KInputPhraseMaxLength = 7; - -_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" ); -/////////////////// -// Candidate state -/////////////////// - -TAknFepInputStateCandidateChinesePhrase::TAknFepInputStateCandidateChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBaseChinesePhrase(aOwner, aUIContainer) - { - iState = ECandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - uiContainer->CandidatePane()->SelectFirstPhrase(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - UIContainer()->EditPaneWindow()->DisableCursor(); - } - -TBool TAknFepInputStateCandidateChinesePhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - - CDesCArrayFlat* zhuyinSymbols = uiContainer->PinyinPopupWindow()->ZhuyinSymbols(); - CDesCArrayFlat* chineseDisped = uiContainer->PinyinPopupWindow()->ChineseCharsDisped(); - CDesCArrayFlat* zhuyinSymbolsForChinese = uiContainer->PinyinPopupWindow()->ZhuyinSymbolsForChineseCharsDisped(); - CDesCArrayFlat* candidateList = uiContainer->CandidatePane()->CandidateArray(); - MZhuyinKeyHandler* zhuyinKeyHandler = iOwner->ZhuyinKeyHandler(); - - TInt index = MapKeyToIndex(aKey); - - if(aKey == EKeyBackspace) - { - zhuyinKeyHandler->SetStatusChgFlag(MZhuyinKeyHandler::EFromCandidateToEntry); - iOwner->ChangeState(EEntry); - return ETrue; - } - - // for fix bug when press left or right arrow play err-tone - if ( HandleVerticalNavigation( aKey ) || HandleHorizontalNavigation( aKey ) ) - { - return ETrue; - } - - if ( aLength == EShortKeyPress && ( candidatePane->SelectIndex(index,EFalse) - || aKey == EKeyOK || aKey == EKeyCBA1 )) - { - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if ( text.Length() == 0 ) - { - return ETrue; - } - TBuf pinyinshown = UIContainer()->PinyinPopupWindow()->GetEEPContent(); - TInt count = TZhuyinSymbolsMethods::GetChineseCount(pinyinshown); - if ( count > text.Length() ) - { - fepMan->PhraseCreation(ETrue); - } - if ( fepMan->IsPhraseCreation( ) ) - { - TBuf buf; - buf.Copy( text ); - TBool commit = TZhuyinSymbolsMethods::AppendChineseChar( buf, - fepMan->ZhuyinAnalyser( ), zhuyinSymbols, chineseDisped, - zhuyinSymbolsForChinese ); - TBool changeState = UpdateEEPContent(); - if ( commit ) - { - TBuf commitbuf; - TZhuyinSymbolsMethods::Convert2Des(chineseDisped, commitbuf); - fepMan->NewTextL(commitbuf); - fepMan->CommitInlineEditL(); - AddPhraseToDB(commitbuf); - if ( chineseDisped->Count() < KInputPhraseMaxLength || - zhuyinSymbols->Count() == 0 ) - { - iOwner->FepMan()->TryCloseUiL(); - } - else - { - CAknWarningNote* errnote = new( ELeave ) CAknWarningNote(); - errnote->SetTone( CAknNoteDialog::EWarningTone ); - errnote->ExecuteLD( KMaxPhraseNote ); - fepMan->TryCloseUiL(); - } - popup->ResetStrokeArray(); - } - else - { - editPane->SetCursorIndexOfKeystroke( 0 ); - if ( changeState ) - { - for ( TInt i = 0; i < candidateList->Count(); i++ ) - { - if ( TZhuyinSymbolsMethods::IsZhuyinSymbol( - candidateList->MdcaPoint( i ) ) ) - { - candidateList->Delete( i, 1 ); - break; - } - } - if ( candidateList->Count() > 0 ) - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EEntry ); - } - else - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EZhuyinSequenceEdit ); - } - } - else - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EZhuyinSequenceEdit ); - } - } - } - else - { - TBuf textbuf; - for ( TInt i = 0; i < chineseDisped->Count(); i++ ) - { - textbuf.Append(chineseDisped->MdcaPoint(i)); - } - textbuf.Append(text); - fepMan->NewTextL(textbuf); - fepMan->CommitInlineEditL(); - AddPhraseToDB(textbuf); - popup->ResetStrokeArray(); - if ( text.Length() <= KInputPhraseMaxLength && !fepMan->IsPhraseCreation() ) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - else - { - fepMan->TryCloseUiL(); - } - } - } - else if ( aKey == EPtiKeyStar ) - { - return ETrue; - } - else if ( aKey == EKeyCBA2 ) - { - popup->ResetStrokeArray(); - iOwner->FepMan()->EntryPhrase( EFalse ); - iOwner->FepMan()->TryCloseUiL(); - } - else if ( !iOwner->IsValidChineseInputKey(aKey) ) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - return ETrue; - } - -TBool TAknFepInputStateCandidateChinesePhrase::UpdateEEPContent( ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - CDesCArrayFlat* zhuyinSymbols = UIContainer()->PinyinPopupWindow()->ZhuyinSymbols(); - CDesCArrayFlat* chineseDisped = UIContainer()->PinyinPopupWindow()->ChineseCharsDisped(); - CAknFepZhuyinAnalyser* analyser = iOwner->ZhuyinAnalyser(); - CDesCArrayFlat* candidateList = UIContainer()->CandidatePane()->CandidateArray(); - TBuf buf; - TBool isPhraseCreation = EFalse; - TBool valid = TZhuyinSymbolsMethods::UpdateEEPContent( - ptiengine, - analyser, - zhuyinSymbols, - chineseDisped, - candidateList, - buf, - isPhraseCreation - ); - - if ( chineseDisped->Count() != 0 || zhuyinSymbols->Count() > 1 ) - { - for ( TInt i = 0; i < candidateList->Count(); ++i ) - { - if ( TZhuyinSymbolsMethods::IsZhuyinSymbol( candidateList->MdcaPoint( i ) ) ) - { - candidateList->Delete( i, 1 ); - break; - } - } - } - iOwner->FepMan()->PhraseCreation(isPhraseCreation); - UIContainer()->PinyinPopupWindow()->SetEEPContent(buf); - UIContainer()->PinyinPopupWindow()->SetEEPContentValid(valid); - return valid; - } -void TAknFepInputStateCandidateChinesePhrase::AddPhraseToDB( TDes& aPhrase ) - { - TPtiUserDictionaryEntry addUdbEntry( aPhrase ); - //Add the phrase to the DB by PTI Engine - iOwner->PtiEngine()->AddUserDictionaryEntry( addUdbEntry ); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateHalfQwertyChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateHalfQwertyChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,204 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Pinyin and Stroke phrase candidate state -* -*/ - - - - - - - - - - - - -// System includes -#include - -// User includes -#include "AknFepUiInputStateCandidateHalfQwertyChinesePhrase.h" -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlPinyinPopup.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManager.h" -#include - -// Constant definition -const TInt KMinCandidateCount = 1; -//const TInt KInputPaneLength = 32; -//_LIT(KSep, "'"); -//_LIT(KReplace, ""); -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidateHalfQwertyChinesePhrase:: -// TAknFepUiInputStateCandidateHalfQwertyChinesePhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCandidateHalfQwertyChinesePhrase:: -TAknFepUiInputStateCandidateHalfQwertyChinesePhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyBaseChinesePhrase(aOwner, aUIContainer) - { - iState = ECandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength > KMinCandidateCount; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - uiContainer->CandidatePane()->SelectFirstPhrase(); - UpdateIndicator(); - } - -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateHalfQwertyChinesePhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - TInt selected = UIContainer()->CandidatePane()->SelectedIndex(); - TInt numbertotal = UIContainer()->CandidatePane()->VisibleCandidateCount(); - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - - - if ( aKey != EStdKeyLeftFunc && - (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed))) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ETrue; - } - else if ( aKey == EStdKeyLeftFunc ) - { - iOwner->FepMan()->TryCloseUiL(); - iOwner->FepMan()->LaunchSelectModeMenuL(); - } - else if ( aKey ==EStdKeySpace) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ETrue; - } - else if(aKey == EStdKeyBackspace) //clear key - { - UIContainer()->CandidatePane()->SplitPhraseCandidatesIntoPages(); - UIContainer()->CandidatePane()->SetCandidateBuffer(); - iOwner->ChangeState(EEntry); - popup->SetChangeState( ETrue ); - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL); - - return ETrue; - } - else if(aKey == EStdKeyUpArrow) //up key - { - if(UIContainer()->CandidatePane()->IsFirstPage()) - { - if ( EPinyin ==iOwner->FepMan()->InputMode() ) - { - iOwner->ChangeState(EEntry); - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL); - } - return ETrue; - } - else - { - return TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - } - else if ( aKey == EStdKeyDownArrow ) - { - TBool state = ETrue; - if ( popup->IsChangeStatet( ) && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - if ( state ) - { - return TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL( - aKey, aLength ); - } - } - else if (aKey == EStdKeyLeftArrow)//in the same row - { - if (selected == 0) - { - UIContainer()->CandidatePane()->SelectIndex(numbertotal-1); - } - else - { - UIContainer()->CandidatePane()->SelectIndex(selected - 1); - } - return ETrue; - } - else if (aKey == EStdKeyRightArrow)//in the same row - { - if (selected == numbertotal-1) - { - UIContainer()->CandidatePane()->SelectIndex(0); - } - else - { - UIContainer()->CandidatePane()->SelectIndex(selected + 1); - } - return ETrue; - } - else if ( aKey == EStdKeyDevice0 || - aKey == EStdKeyDevice3 || - aKey == EStdKeyEnter )//SK1,Select,Enter - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - return ETrue; - } - else - { - return TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - - return EFalse; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateHiraganaKanji.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateHiraganaKanji.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,274 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateCandidateHiraganaKanji methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES - - -#include "AknFepUiInputStateCandidateHiraganaKanji.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepUICtrlContainerJapanese.h" // MAknFepUICtrlContainerJapanese -#include "AknFepUICtrlCandidatePaneInterface.h" - // MAknFepUICtrlCandidatePaneInterface -#include "AknFepGlobalEnums.h" -#include "AknFepPanic.h" - -#include // keys -#include -#include // MPtiEngineCompositionDataInterfac -#include - -// CONSTANTS - -/** - * TAknFepUiInputStateCandidateHiraganaKanji class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateHiraganaKanji:: -// TAknFepUiInputStateCandidateHiraganaKanji -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCandidateHiraganaKanji::TAknFepUiInputStateCandidateHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - - :TAknFepUiInputStateEntryJapaneseMultitap(aOwner, aUIContainer) - { - iState = ECandidate; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialJapaneseBase::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCandidateHiraganaKanji::InitializeStateL() - { - iOwner->SetInlineEditUnderlineVisibility(ETrue); - - // Get index number to show at first - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TInt index; - CDesCArrayFlat* candidateArray = iOwner->CandidateArray(); - ptiEngine->GetCandidateListL(*candidateArray); - ptiEngine->HandleCommandL(EPtiCommandUserActionGetCurrentIndexOfCandidates, &index); - - UpdateCandidateListL(index); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateHiraganaKanji::CloseUI -// Closing UI -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCandidateHiraganaKanji::CloseUI() - { - UIContainer()-> - CandidatePane(MAknFepUICtrlContainerJapanese::EJapaneseCandidatePane)-> - HideWindow(); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateHiraganaKanji::HandleNumericKeyL -// Handling short keypress events of the numeric and the star -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateHiraganaKanji::HandleNumericShortKeyL(TInt /*aKey*/) - { - // This state doesn't handle numeric key. - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - ptiEngine->HandleCommandL(EPtiCommandUserActionAllComplete); - CloseUI(); - iOwner->ChangeState(EMultiCompletion); - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateHiraganaKanji::HandleNaviKeyL -// Handling Navigate keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateHiraganaKanji::HandleNaviKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - TBool ret = EFalse; - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepUICtrlCandidatePaneInterface* candidatePane = - UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapaneseCandidatePane); - TAknFepUICtrlScroll direction = EScrollNone; - TPtiEngineCommand ptiCommand = EPtiCommandNone; - - switch(aKey) - { - case EKeyLeftArrow: - case EKeyRightArrow: - case EStdKeyLeftArrow: /* 0x0e */ - case EStdKeyRightArrow: /* 0x0f */ - { // Change Conversion state - CloseUI(); - iOwner->ChangeState(EConversion); - ret = EFalse; - } - break; - case EKeyDownArrow: - case EKeyUpArrow: - case EStdKeyDownArrow: /* 0x11 */ - case EStdKeyUpArrow: /* 0x10 */ - case EStdKeySpace: - { // The highlight of candidate is moved up/down - // aKey == EKeyDownArrow - ptiCommand = EPtiCommandUserActionConvert; - direction = EScrollDown; - // aKey == EKeyUpArrow - if (aKey == EKeyUpArrow || aKey == EStdKeyUpArrow) - { - ptiCommand = EPtiCommandUserActionPrevious; - direction = EScrollUp; - } - - ptiEngine->HandleCommandL(ptiCommand); - UpdateInlineEditingCharacterL(); - candidatePane->MoveItem(direction); - ret = ETrue; - } - break; - default: - break; - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateHiraganaKanji::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateHiraganaKanji::HandleAuxKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - MAknFepUICtrlCandidatePaneInterface* candidatePane = - UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapaneseCandidatePane); - candidatePane->HideWindow(); - switch(aKey) - { - case EKeyOK: - case EStdKeyDevice3: /* 0xA7 */ - case EStdKeyEnter: /* 0x03 */ - case EStdKeyNkpEnter: /* 0x88 */ - { - iOwner->ChangeState(EMultiCompletion); - } - break; - case EKeyBackspace: - case EStdKeyBackspace: /* 0x01 */ - case EStdKeyEscape: /* 0x04 */ - { - iOwner->ChangeState(EConversion); - } - break; - default: // Panic - { - AknFepPanic(EAknFepPanicNotSupportKey); - } - break; - } - return EFalse; - } - - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateHiraganaKanji::UpdateCandidateListL -// Update candidate list -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCandidateHiraganaKanji::UpdateCandidateListL(TInt aIndex /*=0*/) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CDesCArrayFlat* candidateArray = iOwner->CandidateArray(); - MAknFepUICtrlCandidatePaneInterface* candidatePane = - UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapaneseCandidatePane); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - // Check ComposirionData - __ASSERT_DEBUG( data->CompletedString().Length() < 0, - RDebug::Print( - _L("In TAknFepUiInputStateCandidateHiraganaKanji::TAknFepUiInputStateCandidateHiraganaKanji INVALID DATA: ConvertingString!"))); - - // Get coordinate of input area - TPoint leftSideOfBaseLine; - TInt height; - TInt ascent; - TInt documentOffset = data->CursorPosition(); - if (data->NumberOfPhrase() > 0) - { - TPtrC8 clauseChar = data->LengthOfPhrase(); - documentOffset = clauseChar[0]; - } - fepMan->GetScreenCoordinatesL(leftSideOfBaseLine, height, ascent, documentOffset); - - // The showing candidate pop-up list - candidatePane->SetWindowPosition(leftSideOfBaseLine, height, ascent); - candidatePane->ShowCandidateListL(candidateArray, aIndex, - R_AKNFEP_SOFTKEYS_EMPTY_EMPTY_COMMIT); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateHiraganaKanji::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCandidateHiraganaKanji::HandleCommandL(TInt aCommandId) - { - if(aCommandId == EAknFepResourceChanged) - { - // Get the current index number - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - CDesCArrayFlat* candidateArray = iOwner->CandidateArray(); - TInt index; - ptiEngine->GetCandidateListL(*candidateArray); - ptiEngine->HandleCommandL(EPtiCommandUserActionGetCurrentIndexOfCandidates, &index); - - CloseUI(); - UpdateCandidateListL(index); - } - else - { - // Go through the event to base class. - TAknFepUiInputStateEntryJapaneseMultitap::HandleCommandL(aCommandId); - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,282 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Pinyin and Stroke phrase candidate state -* -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include //CAknWarningNote - -const TInt KMinCandidateCount = 1; -// User includes -#include "AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase.h" -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "aknfepuictrleditpane.h" //phrase creation -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManager.h" -#include - -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase:: -// TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase:: - TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputMiniQwertyPinyinPhraseBase(aOwner, aUIContainer) - { - iState = ECandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength > KMinCandidateCount; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - uiContainer->CandidatePane()->SelectFirstPhrase(); - UIContainer()->EditPaneWindow()->DisableCursor(); - } - -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - TInt selected = UIContainer()->CandidatePane()->SelectedIndex(); - TInt numbertotal = UIContainer()->CandidatePane()->VisibleCandidateCount(); - - if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) - || iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed ) ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - TBool ret = EFalse; - switch ( aKey ) - { - case EStdKeySpace: - { - if ( ECangJie ==iOwner->FepMan()->InputMode() ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if ( text.Length() ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar( text ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - UIContainer()->EditPaneWindow()->SetChangeState(ETrue); - iOwner->ChangeState( EPredictiveCandidate ); - } - } - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - ret = ETrue; - } - break; - case EStdKeyBackspace: - { - UIContainer()->CandidatePane()->SetCandidateBuffer(); - UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( EManualChangeState ); - UIContainer()->EditPaneWindow()->SetChangeState( ETrue ); - iOwner->ChangeState( EMiniQwertyEdit ); - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL ); - ret = ETrue; - } - break; - case EStdKeyLeftArrow: - { - if ( selected == 0 ) - { - UIContainer()->CandidatePane()->SelectIndex( numbertotal - 1 ); - } - else - { - UIContainer()->CandidatePane()->SelectIndex( selected - 1 ); - } - UpdateIndicator(); - ret = ETrue; - } - break; - case EStdKeyRightArrow: - { - if ( selected == numbertotal - 1 ) - { - UIContainer()->CandidatePane()->SelectIndex( 0 ); - } - else - { - UIContainer()->CandidatePane()->SelectIndex( selected + 1 ); - } - UpdateIndicator(); - ret = ETrue; - } - break; - case EStdKeyDownArrow: - { - ret = TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - break; - case EStdKeyUpArrow: - { - if ( UIContainer()->CandidatePane()->IsFirstPage() ) - { - UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( EManualChangeState ); - iOwner->ChangeState( EMiniQwertyEdit ); - return ETrue; - } - else - { - UIContainer()->CandidatePane()->PreviousCandidatePage(); - UIContainer()->CandidatePane()->SetCandidateBuffer(); - UIContainer()->CandidatePane()->SelectFirstPhrase(); - UpdateIndicator(); - } - ret = ETrue; - } - break; - case EStdKeyEnter: - { - if ( EStroke == iOwner->FepMan()->InputMode() || - ECangJie == iOwner->FepMan()->InputMode() || - EPinyin == iOwner->FepMan()->InputMode() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - ret = ETrue; - } - break; - case EStdKeyDevice0: - case EStdKeyDevice3: - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if ( text.Length() && aLength != ELongKeyPress ) - { - if ( !CommitInlineEEPL( text ) ) - { - DoActionAfterCommit(); - } - else - { - if ( CheckFirstGroupStroke() ) - { - RefreshUI( EFalse ); - UIContainer()->CandidatePane()->SelectFirstPhrase(); - } - else - { - UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( EAutoChangeStateFromCandidate ); - iOwner->ChangeState( EMiniQwertyEdit ); - } - } - } - } - ret = ETrue; - break; - case EKeyLeftCtrl: - case EKeyRightCtrl: - case EKeyLeftShift: - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - ret = ETrue; - } - break; - case EKeyRightShift: - { - ret = ETrue; - } - break; - default: - return TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL( - aKey, aLength ); - } - return ret; - } -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase::HandleCommandL( - TInt aCommandId ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate( ); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - // case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( text.Length( ) ) - { - if ( !CommitInlineEEPL( text ) ) - { - DoActionAfterCommit( ); - } - else - { - if ( CheckFirstGroupStroke( ) ) - { - RefreshUI( EFalse ); - UIContainer()->CandidatePane()->SelectFirstPhrase( ); - } - else - { - UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( EAutoChangeStateFromCandidate ); - iOwner->ChangeState( EMiniQwertyEdit ); - } - } - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,560 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Zhuyin phrase candidate state -* -*/ - - - - - - - - - - - - -// System includes -#include - -// User includes -#include "AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase.h" -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManager.h" -#include - -#include "aknfepuictrleditpane.h" //for zhuyin phrase creation -#include "aknfepinputstateminiqwertyzhuyinkeymap.h" -#include "aknfepuiinputstateminiqwertyzhuyinphrase.h" -// Constant definition -const TInt KMinCandidateCount = 1; -const TInt KInputPaneLength = 32; -//_LIT( KDelimiter, "\x2022"); -_LIT( KDelimiter, "'"); -_LIT( KSaiStroke,"\x311D" ); - -struct TToneZhuYinMap - { - TUint16 iValue; - TInt iInputTone; - }; -const TToneZhuYinMap ZhuyinToneMap[] = - { - {0x0020, 1}, - {0x02CA, 2}, - {0x02c7, 3}, - {0x02CB, 4}, - {0x02D9, 5} - }; - -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase:: -// TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ) : - TAknFepInputStateCandidateQwertyBaseChinesePhrase( aOwner, aUIContainer) - { - iState = ECandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength - > KMinCandidateCount; - - uiContainer->ShowHorizontalScrollArrows( showHorizontalScrollArrows ); - uiContainer->ShowVerticalScrollArrows( multiplePages ); - uiContainer->FocusCandidatePane( ETrue ); - uiContainer->CandidatePane()->ShowCandidateOrdinals( ETrue ); - uiContainer->CandidatePane()->SelectFirstPhrase(); - UpdateIndicator(); - - } - -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::HandleKeyL( - TInt aKey, TKeyPressLength aLength ) - { - if (iOwner->FepMan()->KeyboardLayout() == EPtiKeyboardQwerty4x10 || iOwner->FepMan()->KeyboardLayout() == EPtiKeyboardQwerty3x11) - { - return HandleKeyForMiniQwertyL(aKey, aLength); - } - else - { - return HandleKeyForHalfAndCustomQwertyL(aKey, aLength); - } - } -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::ComitPhraseCreatedToEditor() -// commit the phrase created to the editor -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::ComitPhraseCreatedToEditorL() - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if ( text.Length() ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - - TBuf highText; - UIContainer()->InputPane()->GetText( highText ); - TInt groupNum = GetInputPaneKeyStrokeCount( highText ); - TInt canidateCout = text.Length(); - if ( groupNum > canidateCout ) - { - FillPhraseAndStrokArrayL( highText, text ); - } - else - { - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar( text ); - UIContainer()->EditPaneWindow()->ResetAllArray(); - UIContainer()->EditPaneWindow()->SetEffictiveLength( 0 ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - UIContainer()->EditPaneWindow()->SetChangeState(ETrue); - iOwner->ChangeState( EPredictiveCandidate ); - } - } - } - return ETrue; - } -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::GetInputPaneKeyStrokeCount() -// get the input pane key stroke count -// --------------------------------------------------------------------------- -// -TInt TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::GetInputPaneKeyStrokeCount( - const TDesC& aBuf ) - { - TInt groupNum = 1; - for (TInt i = 0; i < aBuf.Length() - 1; i++ ) - { - TInt num = sizeof(ZhuyinToneMap )/( sizeof(ZhuyinToneMap[0] ) ); - TBool isFindTone = EFalse; - TInt isFindDel = 0; - for (TInt m =0; m< num; m++ ) - { - if ( aBuf[i] == ZhuyinToneMap[m].iValue ) - { - isFindTone = ETrue; - break; - } - } - if ( !isFindTone ) - { - isFindDel = aBuf.Mid(i,1).Compare( KDelimiter ); - } - if ( 0 == isFindDel || isFindTone ) - { - groupNum++; - } - } - if ( 0 == aBuf.Right( 1 ).Compare( KDelimiter ) ) - { - groupNum++; - } - return groupNum; - } -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::GetIndexOfToneMark() -// get the index of the tonemark -// --------------------------------------------------------------------------- -// -TInt TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::GetIndexOfToneMark( const TDesC& aText) - { - TInt num = sizeof(ZhuyinToneMap )/( sizeof(ZhuyinToneMap[0])); - TInt len = aText.Length(); - for( TInt j = 0; j< len ;j++ ) - { - for (TInt i = 0; iEditPaneWindow()->KeystrokeArray(); - CDesCArrayFlat* phraseKeyStrokeArray = UIContainer()->EditPaneWindow()->PhraseShowKeyStrokeArray() ; - CDesCArrayFlat* phraseArray = UIContainer()->EditPaneWindow()->PhraseArray(); - - RArray* keyCodeArray = UIContainer()->EditPaneWindow()->KeycodeArray(); - RArray* keyCodePhraseArray = UIContainer()->EditPaneWindow()->PhraseKeycodeArray(); - phraseArray->AppendL( aPhrase ); - TBuf keyStoke; - TInt replaceCount = 0; - TInt delimiterIndex = aText.Find( KDelimiter ); - if ( KErrNotFound == delimiterIndex ) - { - delimiterIndex = -1; - } - TInt indexOfToneMark = GetIndexOfToneMark( aText ); - if ( -1 == delimiterIndex && indexOfToneMark == -1 ) - { - replaceCount = aText.Length(); - } - else if ( delimiterIndex >= 0 && indexOfToneMark == -1 ) - { - replaceCount = delimiterIndex; - } - else if ( delimiterIndex >= 0 && indexOfToneMark >= 0 ) - { - replaceCount = Min( delimiterIndex, indexOfToneMark ); - if ( delimiterIndex > indexOfToneMark ) - { - replaceCount++; - } - } - else - { - replaceCount = indexOfToneMark + 1;// have tonemark but has not deli - } - for (TInt i = 0; i < replaceCount; i++ ) - { - TPtrC ptr = keyStrokeArray->MdcaPoint( 0 ); - keyStoke.Append( ptr ); - keyStrokeArray->Delete( 0 ); - // added for the keycode - TInt keyCodeValue = (*keyCodeArray)[0]; - keyCodePhraseArray->AppendL( keyCodeValue ); - keyCodeArray->Remove( 0 ); - } - phraseKeyStrokeArray->AppendL( keyStoke ); - if ( CheckToneMarkBorderUpon()|| 0 ==keyStrokeArray->MdcaPoint( 0 ).Compare( KSaiStroke ) ) - { - iOwner->ChangeState( EMiniQwertyEdit ); - } - else - { - //change to the spelling selecting state - iOwner->ChangeState( EZhuyinSpelling ); - } - } -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::GetValidKeystroke -// Get the valid keystroke. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::CheckToneMarkBorderUpon() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - - if ( keystroke->Count() > 1 ) - { - for ( TInt i = 1; i < keystroke->Count(); ++i ) - { - if ( ( 1 == keystroke->MdcaPoint( i - 1 ).Length() ) && - ( 1 == keystroke->MdcaPoint( i ).Length() ) ) - { - return ETrue; - } - } - } - - return EFalse; - } - -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::HandleKeyForHalfAndCustomQwertyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::HandleKeyForHalfAndCustomQwertyL(TInt aKey, - TKeyPressLength aLength) - { - TInt selected = UIContainer()->CandidatePane()->SelectedIndex(); - TInt numbertotal = UIContainer()->CandidatePane()->VisibleCandidateCount(); - - if (iOwner->FepMan()->FnKeyState()) - { - return ETrue; - } - else if(aKey == EStdKeySpace) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ETrue; - } - else if(aKey == EStdKeyBackspace ) - { - iOwner->ChangeState(EEntry); - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL); - - return ETrue; - } - else if(aKey == EStdKeyUpArrow) - { - if(UIContainer()->CandidatePane()->IsFirstPage()) - { - iOwner->ChangeState(EEntry); - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL); - return ETrue; - } - else - { - return TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - } - else if ( aKey == EStdKeyEnter) - { - TBuf atext; - UIContainer()->PinyinPopupWindow()->GetItemText( - UIContainer()->PinyinPopupWindow()->CurrentSelection(), - atext); - if(atext.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(atext); - fepMan->CommitInlineEditL(); - iOwner->FepMan()->TryCloseUiL(); - } - return ETrue; - } - else if ( aKey == EStdKeyLeftArrow ) - { - if ( selected == 0 ) - { - UIContainer()->CandidatePane()->SelectIndex( numbertotal - 1 ); - } - else - { - UIContainer()->CandidatePane()->SelectIndex( selected - 1 ); - } - UpdateIndicator(); - return ETrue; - } - else if ( aKey == EStdKeyRightArrow ) - { - if ( selected == numbertotal - 1 ) - { - UIContainer()->CandidatePane()->SelectIndex( 0 ); - } - else - { - UIContainer()->CandidatePane()->SelectIndex( selected + 1 ); - } - UpdateIndicator(); - return ETrue; - } - else if ( aKey == EStdKeyDevice0 || aKey == EStdKeyDevice3 ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - UIContainer()->EditPaneWindow()->SetChangeState(ETrue); - iOwner->ChangeState(EPredictiveCandidate); - } - } - return ETrue; - } - else - { - return TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - } -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::HandleKeyForMiniQwertyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::HandleKeyForMiniQwertyL( - TInt aKey, TKeyPressLength aLength ) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - TInt selected = UIContainer()->CandidatePane()->SelectedIndex(); - TInt numbertotal = UIContainer()->CandidatePane()->VisibleCandidateCount(); - // TInt isSelect = UIContainer()->CandidatePane()->SelectIndex( index, EFalse ); - if ( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || - CAknFepFnKeyManager::EFnKeyLock == iOwner->FepMan()->FnKeyState() ) - { - return ETrue; - } - else if ( aKey == EStdKeyDevice1 ) - { - iOwner->FepMan()->TryCloseUiL(); - return ETrue; - } - else if ( aKey == EStdKeySpace ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - else if ( aKey == EStdKeyBackspace ) - { - UIContainer()->EditPaneWindow()->SetChangeState( ETrue ); - iOwner->ChangeState( EEntry ); - return ETrue; - } - else if ( aKey == EStdKeyUpArrow ) - { - if ( UIContainer()->CandidatePane()->IsFirstPage() ) - { - iOwner->ChangeState( EEntry ); - return ETrue; - } - else - { - return TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL( - aKey, aLength ); - } - } - else if ( aKey == EStdKeyDownArrow || aKey == EStdKeySpace ) - { - TBool state = ETrue; - if ( editPane->IsChangeState() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - if ( state ) - { - return TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL( - aKey, aLength ); - } - } - else if ( aKey == EStdKeyEnter ) - { - return ETrue; - } - else if ( aKey == EStdKeyLeftArrow ) - { - if ( selected == 0 ) - { - UIContainer()->CandidatePane()->SelectIndex( numbertotal-1 ); - } - else - { - UIContainer()->CandidatePane()->SelectIndex( selected - 1 ); - } - return ETrue; - } - else if ( aKey == EStdKeyRightArrow ) - { - if ( selected == numbertotal-1 ) - { - UIContainer()->CandidatePane()->SelectIndex( 0 ); - } - else - { - UIContainer()->CandidatePane()->SelectIndex( selected + 1 ); - } - return ETrue; - } - else - { - TInt index = 0; - TBool isIndex = MapKeyToIndexSelectCandidate( aKey, index ); - if ( aLength == EShortKeyPress && - ( ( isIndex && UIContainer()->CandidatePane()->SelectIndex( index ) ) || - aKey == EStdKeyDevice0 || - aKey == EStdKeyDevice3 ) ) - { - editPane->SetNeedClearDeliberateSelection( ETrue ); - ComitPhraseCreatedToEditorL(); - return ETrue; - } - else - { - return TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL( - aKey, aLength ); - } - } - return EFalse; - } -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::HandleCommandL( - TInt aCommandId ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate( ); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - // case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( text.Length( ) ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan( ); - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL( ); - iOwner->PtiEngine()->SetPredictiveChineseChar( text ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL( ); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidatePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidatePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStateCandidate methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidatePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUICtrlCandidatePane.h" //MAknFepUICtrlCandidatePane -#include //CPtiEngine - - -/////////////////// -// Candidate state -/////////////////// - -TAknFepInputStateCandidatePhrase::TAknFepInputStateCandidatePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBasePhrase(aOwner, aUIContainer) - { - iState = ECandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - uiContainer->CandidatePane()->SelectFirstPhrase(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - } - -TBool TAknFepInputStateCandidatePhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - if(aKey == EKeyBackspace) - { - iOwner->ChangeState(EEntry); - return ETrue; - } - return TAknFepInputStateCandidateBasePhrase::HandleKeyL(aKey, aLength); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidatePinyinAndStrokePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidatePinyinAndStrokePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,101 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Pinyin and Stroke phrase candidate state -* -*/ - - - - - - - - - - - - -// System includes -#include - -// User includes -#include "AknFepUiInputStateCandidatePinyinAndStrokePhrase.h" -#include "AknFepUiInputStateCandidateBasePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManager.h" -// add for phrase creation -#include "AknFepUICtrlPinyinPopup.h" - -// Constant definition -const TInt KMinCnadidateCount = 1; - -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidatePinyinAndStrokePhrase:: -// TAknFepUiInputStateCandidatePinyinAndStrokePhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCandidatePinyinAndStrokePhrase:: - TAknFepUiInputStateCandidatePinyinAndStrokePhrase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBaseChinesePhrase(aOwner, aUIContainer) - { - iState = ECandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength > KMinCnadidateCount; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - uiContainer->CandidatePane()->SelectFirstPhrase(); - UpdateIndicator(); - } - -void TAknFepUiInputStateCandidatePinyinAndStrokePhrase::HandleCommandL(TInt aCommandID) - { - TAknFepInputStateCandidateBaseChinesePhrase::HandleCommandL(aCommandID); - } -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidatePinyinAndStrokePhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidatePinyinAndStrokePhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if ( ( aKey == EKeyBackspace ) || ( aKey == EKeyUpArrow && - iOwner->FepMan()->InputMode() == EPinyin && - candidatePane->IsFirstPage() ) ) - { - // the follow 2 lines add for phrase creation - UIContainer()->PinyinPopupWindow()->SetChangeState( ETrue ); - UIContainer()->PinyinPopupWindow()->SetFromCandidateChangeStateFlag( ETrue ); - iOwner->FepMan()->EntryPhrase( EFalse ); - iOwner->ChangeState(EEntry); - return ETrue; - } - - return TAknFepInputStateCandidateBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateQwerty.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateQwerty.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStateCandidateQwerty methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiInputStateCandidateQwerty.h" - -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine -#include //keys - -TAknFepInputStateCandidateQwerty::TAknFepInputStateCandidateQwerty( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyBase(aOwner, aUIContainer) - { - } - -TBool TAknFepInputStateCandidateQwerty::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateQwerty::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateQwerty::HandleCommandL( TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateQwertyBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateQwertyBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwertyBase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidateQwertyBase.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStateCandidateQwertyBase::TAknFepInputStateCandidateQwertyBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - } - -TBool TAknFepInputStateCandidateQwertyBase::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveInput); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - return ETrue; - } - -TBool TAknFepInputStateCandidateQwertyBase::HandleHorizontalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EStdKeyLeftArrow) - { - if(!candidatePane->SelectPrev()) - { - ptiengine->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectLast(); - } - response = ETrue; - } - else if (aKey == EStdKeyRightArrow) - { - if(!candidatePane->SelectNext()) - { - ptiengine->NextCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectFirst(); - } - response = ETrue; - } - return response; - } - -TBool TAknFepInputStateCandidateQwertyBase::HandleVerticalNavigation(TInt aKey) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (aKey == EStdKeyDownArrow || aKey == EStdKeySpace) - { - ptiengine->NextCandidatePage(); - } - else if (aKey == EStdKeyUpArrow) - { - ptiengine->PreviousCandidatePage(); - } - else - { - return EFalse; - } - - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - candidatePane->SelectFirst(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateQwertyBase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateQwertyBase::HandleCommandL( TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateQwertyBaseChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateQwertyBaseChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,408 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of candidate qwerty base chinese phrase state -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidateQwertyBaseChinesePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" //FepMan flag -#include "AknFepUICtrlPinyinPopup.h" - -#include //CPtiEngine - -const TUint16 KSegment = 0x0020; - -TAknFepInputStateCandidateQwertyBaseChinesePhrase:: -TAknFepInputStateCandidateQwertyBaseChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - } - -TBool TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - - else if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - TInt index = 0; -#ifdef RD_INTELLIGENT_TEXT_INPUT - // it may be one of the 'valid' numbers.. - TPtiKeyboardType keyboardtype = iOwner->FepMan()->KeyboardLayout(); - if ( EPtiKeyboardQwerty4x10 == keyboardtype || - EPtiKeyboardQwerty3x11 == keyboardtype || - EPtiKeyboardHalfQwerty == keyboardtype || - EPtiKeyboardCustomQwerty == keyboardtype) - { - MPtiLanguage *lang = NULL; - RArray < TPtiNumericKeyBinding > keybinding; - TBool validnumkey = EFalse; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if( ptiengine != NULL ) - { - lang = ptiengine->CurrentLanguage(); - } - if( ptiengine && lang ) - { - TRAP_IGNORE(ptiengine->GetNumericModeKeysForQwertyL(lang->LanguageCode(), - keybinding, keyboardtype)); - TInt numericKeysCount = keybinding.Count(); - TInt candidateCount = UIContainer()->CandidatePane()->VisibleCandidateCount(); - while ( numericKeysCount-- ) - { - TPtiNumericKeyBinding numKeyBind = keybinding[numericKeysCount]; - if ( (numKeyBind.iChar >= 0x31 && numKeyBind.iChar <= ( 0x31 + candidateCount - 1 )) - - &&(aKey == numKeyBind.iKey)) - { - index = numKeyBind.iChar - EPtiKey0 -1; - validnumkey = ETrue; - break; - } - } - } - keybinding.Reset(); - - if (!validnumkey) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ETrue; - } - - } - else - { -#endif - index = MapKeyToIndex(aKey); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == iOwner->FepMan()->KeyboardLayout() || - EPtiKeyboardHalfQwerty == iOwner->FepMan()->KeyboardLayout() || - EPtiKeyboardQwerty3x11 == iOwner->FepMan()->KeyboardLayout() ) - { - UIContainer()->PinyinPopupWindow()->SetChangeState( ETrue ); - iOwner->ChangeState(EPredictiveCandidate); - } -#endif - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - return ETrue; - } - -TBool TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleHorizontalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EStdKeyLeftArrow) - { - if (candidatePane->SelectedIndex() == 0 && - candidatePane->IsFirstPage() ) - { - return ETrue; - } - - if(!candidatePane->SelectPrev()) - { - candidatePane->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectLastPhrase(); - } - response = ETrue; - } - else if (aKey == EStdKeyRightArrow) - { - if ( candidatePane->IsLastPage() && - (candidatePane->SelectedIndex() == candidatePane->VisibleCandidateCount() - 1)) - { - return ETrue; - } - - if(!candidatePane->SelectNext()) - { - candidatePane->NextCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - } - response = ETrue; - } - if (response) - { - UpdateIndicator(); - } - return response; - } - -TBool TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleVerticalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if (aKey == EStdKeyDownArrow || aKey == EStdKeySpace) - { - if (candidatePane->IsLastPage()) - { - return ETrue; - } - if ( iState != EPredictiveCandidate && - iState != EPredictiveInput ) - { - if ( candidatePane->NeedGetNewCandidatePage() ) - { - if ( !iOwner->PtiEngine()->NextCandidatePage( ) ) - { - if ( candidatePane->IsLastPage() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - } - else - { - CDesCArrayFlat* phraseCandidates = candidatePane->CandidateArray(); - RPointerArray list; - TRAP_IGNORE( - GetNewCandidatesL( iOwner->PtiEngine()->CandidatePage( ), list ); - for (TInt i = 0; i < list.Count( ); ++i ) - { - phraseCandidates->AppendL( *(list[i]) ); - } - list.ResetAndDestroy();) - } - } - } - candidatePane->NextCandidatePage(); - } - else if (aKey == EStdKeyUpArrow) - { - if (candidatePane->IsFirstPage()) - { - return ETrue; - } - candidatePane->PreviousCandidatePage(); - } - else - { - return EFalse; - } - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - UpdateIndicator(); - return ETrue; - } - -void TAknFepInputStateCandidateQwertyBaseChinesePhrase::UpdateIndicator() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (candidatePane->IsFirstPage()) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage()) - { - uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows(ETrue); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iOwner->FepMan()->KeyboardLayout() == EPtiKeyboardQwerty4x10) - { - if(candidatePane->VisibleCandidateCount()==1) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } - else - { -#endif - if (candidatePane->SelectedIndex() == 0 && - candidatePane->IsFirstPage() ) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage() && - (candidatePane->SelectedIndex() == candidatePane->VisibleCandidateCount() - 1)) - { - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateQwertyBaseChinesePhrase::MapKeyToIndexSelectCandidate -// Check the select candidate numeric key is valid or not -// --------------------------------------------------------------------------- -// -#ifdef RD_INTELLIGENT_TEXT_INPUT -TBool TAknFepInputStateCandidateQwertyBaseChinesePhrase::MapKeyToIndexSelectCandidate( - TInt aKey,TInt& aIndex ) - { - TBool validnumkey = EFalse; - MPtiLanguage *lang= NULL; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TPtiKeyboardType keyboardtype = iOwner->FepMan()->KeyboardLayout(); - if (EPtiKeyboardQwerty4x10 == keyboardtype || EPtiKeyboardQwerty3x11 - == keyboardtype || EPtiKeyboardHalfQwerty == keyboardtype - || EPtiKeyboardCustomQwerty == keyboardtype) - { - RArray keybinding; - - if( ptiengine != NULL ) - { - lang = ptiengine->CurrentLanguage(); - } - if ( ptiengine && lang ) - { - TRAP_IGNORE(ptiengine->GetNumericModeKeysForQwertyL(lang->LanguageCode(), keybinding, keyboardtype)); - TInt numericKeysCount = keybinding.Count(); - while ( numericKeysCount-- ) - { - TPtiNumericKeyBinding numKeyBind = - keybinding[numericKeysCount]; - if ( (numKeyBind.iChar >= 0x31 && numKeyBind.iChar <= 0x36) - &&(aKey == numKeyBind.iKey)) - { - aIndex = numKeyBind.iChar - EPtiKey0 - 1; - validnumkey = ETrue; - break; - } - } - } - keybinding.Reset(); - if ( !validnumkey ) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - else - { - aIndex = MapKeyToIndex(aKey); - } - return validnumkey ; - } -#endif -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleCommandL( - TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } - -void TAknFepInputStateCandidateQwertyBaseChinesePhrase::GetNewCandidatesL(const TDesC& aSource, - RPointerArray& aList) - { - TInt start = 0; - TInt length = 0; - - for (TInt ii = 0; ii < aSource.Length(); ii++) - { - if (aSource[ii] == KSegment) - { - TPtrC segment(aSource.Ptr() + start, length); - aList.AppendL(segment.AllocL()); - start += (length + 1); - length = 0; - } - else - { - length++; - } - } - - if (length) - { - TPtrC segm(aSource.Ptr() + start, length); - aList.AppendL(segm.AllocL()); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateQwertyBasePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateQwertyBasePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,152 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwertyBasePhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidateQwertyBasePhrase.h" - -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStateCandidateQwertyBasePhrase::TAknFepInputStateCandidateQwertyBasePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - } - -TBool TAknFepInputStateCandidateQwertyBasePhrase::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - - else if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveInput); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - - return ETrue; - } - -TBool TAknFepInputStateCandidateQwertyBasePhrase::HandleHorizontalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EStdKeyLeftArrow) - { - if(!candidatePane->SelectPrev()) - { - candidatePane->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectLastPhrase(); - } - response = ETrue; - } - else if (aKey == EStdKeyRightArrow) - { - if(!candidatePane->SelectNext()) - { - candidatePane->NextCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - } - response = ETrue; - } - - return response; - } - -TBool TAknFepInputStateCandidateQwertyBasePhrase::HandleVerticalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if (aKey == EStdKeyDownArrow || aKey == EStdKeySpace) - { - candidatePane->NextCandidatePage(); - } - else if (aKey == EStdKeyUpArrow) - { - candidatePane->PreviousCandidatePage(); - } - else - { - return EFalse; - } - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateQwertyBasePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateQwertyBasePhrase::HandleCommandL( - TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateQwertyChinese.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateQwertyChinese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of candidate qwerty chinese phrase state -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiInputStateCandidateQwertyChinese.h" - -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine -#include //keys - - -TAknFepInputStateCandidateQwertyChinese::TAknFepInputStateCandidateQwertyChinese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyChineseBase(aOwner, aUIContainer) - { - } - -TBool TAknFepInputStateCandidateQwertyChinese::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - UpdateIndicator(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - return ETrue; - } -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateQwertyChinese::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateQwertyChinese::HandleCommandL( TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateQwertyChineseBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateQwertyChineseBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,220 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of candidate qwerty chinese base state -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidateQwertyChineseBase.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -const TInt KMaxCandidateCountFromCore = 6; - -TAknFepInputStateCandidateQwertyChineseBase::TAknFepInputStateCandidateQwertyChineseBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - } - -TBool TAknFepInputStateCandidateQwertyChineseBase::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveInput); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - return ETrue; - } - -TBool TAknFepInputStateCandidateQwertyChineseBase::HandleHorizontalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EStdKeyLeftArrow) - { - if (candidatePane->SelectedIndex() == 0 && - ptiengine->NumberOfCandidates() == 0) - { - return ETrue; - } - - if(!candidatePane->SelectPrev()) - { - ptiengine->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectLast(); - } - response = ETrue; - } - else if (aKey == EStdKeyRightArrow) - { - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - - if (bufLength != KMaxCandidateCountFromCore && - candidatePane->SelectedIndex() == (bufLength -1)) - { - return ETrue; - } - - if(!candidatePane->SelectNext()) - { - ptiengine->NextCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectFirst(); - } - response = ETrue; - } - if (response) - { - UpdateIndicator(); - } - - return response; - } - -TBool TAknFepInputStateCandidateQwertyChineseBase::HandleVerticalNavigation(TInt aKey) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (aKey == EStdKeyDownArrow || aKey == EStdKeySpace) - { - if (iOwner->PtiEngine()->CandidatePage().Length() != - KMaxCandidateCountFromCore) - { - return ETrue; - } - - ptiengine->NextCandidatePage(); - } - else if (aKey == EStdKeyUpArrow) - { - if (ptiengine->NumberOfCandidates() == 0) - { - return ETrue; - } - - ptiengine->PreviousCandidatePage(); - } - else - { - return EFalse; - } - - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - candidatePane->SelectFirst(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - UpdateIndicator(); - return ETrue; - } - -void TAknFepInputStateCandidateQwertyChineseBase::UpdateIndicator() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - uiContainer->CandidatePane()->ShowDownScrollArrows - (bufLength == KMaxCandidateCountFromCore ? ETrue : EFalse); - - if (candidatePane->SelectedIndex() == 0 && - ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - } - - if (bufLength != KMaxCandidateCountFromCore && - candidatePane->SelectedIndex() == (bufLength -1)) - { - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateQwertyChineseBase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateQwertyChineseBase::HandleCommandL( - TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateQwertyChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateQwertyChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of candidate qwerty chinese phrase state -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiInputStateCandidateQwertyChinesePhrase.h" - -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine -#include //keys - -TAknFepInputStateCandidateQwertyChinesePhrase::TAknFepInputStateCandidateQwertyChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyBaseChinesePhrase(aOwner, aUIContainer) - { - } - -TBool TAknFepInputStateCandidateQwertyChinesePhrase::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateQwertyChinesePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateQwertyChinesePhrase::HandleCommandL( - TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateQwertyPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateQwertyPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStateCandidateQwertyPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiInputStateCandidateQwertyPhrase.h" - -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine -#include //keys - -TAknFepInputStateCandidateQwertyPhrase::TAknFepInputStateCandidateQwertyPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyBasePhrase(aOwner, aUIContainer) - { - } - -TBool TAknFepInputStateCandidateQwertyPhrase::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateQwertyPhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateQwertyPhrase::HandleCommandL( TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateQwertyStrokePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateQwertyStrokePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Stroke phrase Qwerty candidate state -* -*/ - - - - - - - - - - - - -// System includes -#include - -// User includes -#include "AknFepUiInputStateCandidateQwertyStrokePhrase.h" -#include "AknFepUICtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManager.h" - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateQwertyStrokePhrase:: -// TAknFepUiInputStateCandidateQwertyStrokePhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCandidateQwertyStrokePhrase::TAknFepUiInputStateCandidateQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyPhrase(aOwner, aUIContainer) - { - iState = ECandidate; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - TBool multiplePages = iOwner->PtiEngine()->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - } - -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidatePinyinAndStrokePhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateQwertyStrokePhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - if(aKey == EStdKeyBackspace) - { - iOwner->ChangeState(EEntry); - return EFalse; - } - else - { - return TAknFepInputStateCandidateQwertyPhrase::HandleKeyL(aKey,aLength); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateQwertyZhuyin.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateQwertyZhuyin.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwertyZhuyin methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidateQwertyZhuyin.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUICtrlCandidatePane.h" //MAknFepUICtrlCandidatePane -#include //CPtiEngine - -#include "AknFepManager.h" //FepMan flag - -TAknFepInputStateCandidateQwertyZhuyin::TAknFepInputStateCandidateQwertyZhuyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyChinese(aOwner, aUIContainer) - { - iState = ECandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->CandidatePane()->SelectFirst(); - - TBool multiplePages = iOwner->PtiEngine()->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - -TBool TAknFepInputStateCandidateQwertyZhuyin::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - if(aKey == EStdKeyBackspace) - { - iOwner->ChangeState(EEntry); - return ETrue; - } - else - { - return TAknFepInputStateCandidateQwertyChinese::HandleKeyL(aKey,aLength); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateQwertyZhuyinPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateQwertyZhuyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCandidateQwertyZhuyinPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateCandidateQwertyZhuyinPhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUICtrlCandidatePane.h" //MAknFepUICtrlCandidatePane -#include //CPtiEngine - -#include "AknFepManager.h" //FepMan flag - -TAknFepInputStateCandidateQwertyZhuyinPhrase::TAknFepInputStateCandidateQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyChinesePhrase(aOwner, aUIContainer) - { - iState = ECandidate; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->CandidatePane()->SelectFirstPhrase(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - -TBool TAknFepInputStateCandidateQwertyZhuyinPhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - if(aKey == EStdKeyBackspace) - { - iOwner->ChangeState(EEntry); - return ETrue; - } - else if (aKey == EStdKeySpace || aKey == EStdKeyEnter) - { - return ETrue; - } - else - { - return TAknFepInputStateCandidateQwertyChinesePhrase::HandleKeyL(aKey,aLength); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCandidateRetroActive.cpp --- a/fep/aknfep/src/AknFepUiInputStateCandidateRetroActive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,378 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateCandidateRetroActive methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES - - -#include "AknFepUiInputStateCandidateRetroActive.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepUICtrlContainerJapanese.h" // MAknFepUICtrlContainerJapanese -#include "AknFepUICtrlCandidatePaneInterface.h" - // MAknFepUICtrlCandidatePaneInterface -#include "AknFepGlobalEnums.h" -#include "AknFepPanic.h" - -#include // keys -#include -#include // MPtiEngineCompositionDataInterfac -#include -#include - - -// CONSTANTS - -/** - * TAknFepUiInputStateCandidateRetroActive class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateRetroActive:: -// TAknFepUiInputStateCandidateRetroActive -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCandidateRetroActive::TAknFepUiInputStateCandidateRetroActive( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - - :TAknFepUiInputStateEntryJapaneseMultitap(aOwner, aUIContainer) - { - iState = ECandidateRetroActive; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialJapaneseBase::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCandidateRetroActive::InitializeStateL() - { - iOwner->SetInlineEditUnderlineVisibility(ETrue); - - ShowListL(EAknFepSoftkeyRetroActiveHalf); - iData = EAknFepSoftkeyRetroActiveHalf; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateRetroActive::CloseUI -// Closing UI -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCandidateRetroActive::CloseUI() - { - // commit the current item - TRAP_IGNORE(DoCommitItemL()); - // Move the status to EInitial. - iOwner->PtiEngine()->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateRetroActive::HandleNumericKeyL -// Handling short keypress events of the numeric and the star -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateRetroActive::HandleNumericShortKeyL(TInt /*aKey*/) - { - // This state doesn't handle numeric key. - // commit the current item - DoCommitItemL(); - // Move the status to EInitial. - iOwner->PtiEngine()->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - // Return EFalse, because of going through the event - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateRetroActive::HandleNaviKeyL -// Handling Navigate keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateRetroActive::HandleNaviKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - TBool ret = EFalse; - MAknFepUICtrlCandidatePaneInterface* candidatePane = - UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapaneseCandidatePane); - TAknFepUICtrlScroll direction = EScrollNone; - - switch(aKey) - { - case EKeyDownArrow: - case EKeyUpArrow: - case EStdKeyDownArrow: /* 0x11 */ - case EStdKeyUpArrow: /* 0x10 */ - case EStdKeySpace: - { // The highlight of candidate is moved up/down - direction = EScrollDown; - if (aKey == EKeyUpArrow || aKey == EStdKeyUpArrow) - { - direction = EScrollUp; - } - - candidatePane->MoveItem(direction); - ret = ETrue; - } - break; - case EKeyLeftArrow: - case EKeyRightArrow: - case EStdKeyLeftArrow: /* 0x0e */ - case EStdKeyRightArrow: /* 0x0f */ - ret = ETrue; - break; - default: - break; - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateRetroActive::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateRetroActive::HandleAuxKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepUICtrlCandidatePaneInterface* candidatePane = - UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapaneseCandidatePane); - TInt currentIdex = candidatePane->CurrentItemIndexOfCandidate(); - candidatePane->HideWindow(); - switch(aKey) - { - case EKeyOK: - case EStdKeyDevice3: /* 0xA7 */ - case EStdKeyEnter: /* 0x03 */ - case EStdKeyNkpEnter: /* 0x88 */ - { - DoSelectItemL(); - ret = ETrue; - } - break; - case EKeyBackspace: - case EStdKeyBackspace: /* 0x01 */ - case EStdKeyEscape: /* 0x04 */ - { - fepMan->SetInlineEditingCursorVisibilityL(ETrue); - ptiEngine->HandleCommandL(EPtiCommandUserActionCancel); - iOwner->SetInlineEditUnderlineVisibility(ETrue); - - if(iOwner->IsPredictive()) - { - iOwner->ChangeState(EPredictiveInput); - ShowPredictiveListL(); - } - else - { - UpdateInlineEditingCharacterL(); - iOwner->ChangeState(EEntry); - } - ret = ETrue; - } - break; - default: // Panic - { - AknFepPanic(EAknFepPanicNotSupportKey); - } - break; - } - return ret; - } - -void TAknFepUiInputStateCandidateRetroActive::HandleCommandL(TInt aCommandId) - { - // Close current popup window - MAknFepUICtrlCandidatePaneInterface* - candidatePane = UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapaneseCandidatePane); - switch (aCommandId) - { - case EAknFepSoftkeyCommit: - candidatePane->HideWindow(); - DoSelectItemL(); - break; - case EAknFepSoftkeyRetroActiveHalf: - case EAknFepSoftkeyRetroActiveFull: - { - candidatePane->HideWindow(); - // Change from half to full or from full to half - ShowListL(aCommandId); - iData = aCommandId; - } - break; - case EAknFepResourceChanged: - { - TInt currentIdex = candidatePane->CurrentItemIndexOfCandidate(); - candidatePane->HideWindow(); - // Change from half to full or from full to half - ShowListL(iData, currentIdex); - break; - } - default: - // Go through the event to base class. - TAknFepUiInputStateEntryJapaneseMultitap::HandleCommandL(aCommandId); - break; - } - } - -void TAknFepUiInputStateCandidateRetroActive::ShowListL(TInt aCommandId, TInt aIndex /*=0*/) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - CDesCArrayFlat* candidateArray = iOwner->CandidateArray(); - MAknFepUICtrlCandidatePaneInterface* - candidatePane = UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapaneseCandidatePane); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - // Check ComposirionData - __ASSERT_DEBUG( data->CompletedString().Length() < 0, - RDebug::Print( - _L("In TAknFepUiInputStateCandidateRetroActive::TAknFepUiInputStateCandidateRetroActive INVALID DATA: ConvertingString!"))); - - // Get coordinate of input area - TPoint leftSideOfBaseLine; - TInt height; - TInt ascent; - TInt documentOffset = data->CursorPosition(); - fepMan->GetScreenCoordinatesL(leftSideOfBaseLine, height, ascent, documentOffset); - - // Decide either half or full - TPtiEngineCommand command = EPtiCommandUserActionRetroActiveCandidateHalf; - TInt resId = R_AKNFEP_SOFTKEYS_RETROACTIVE_FULL_WIDTH; - if (aCommandId == EAknFepSoftkeyRetroActiveFull) - { - command = EPtiCommandUserActionRetroActiveCandidateFull; - resId = R_AKNFEP_SOFTKEYS_RETROACTIVE_HALF_WIDTH; - } - - // Get the showing candidates - ptiEngine->HandleCommandL(command, (TAny*)candidateArray); - if (candidateArray->Count() > 0) - { - // Show the retroactive popup - candidatePane->SetWindowPosition(leftSideOfBaseLine, height, ascent); - candidatePane->ShowCandidateListL(candidateArray, aIndex, resId); - } - else - { - // return to Entry state - iOwner->ChangeState(EEntry); - } - } - -void TAknFepUiInputStateCandidateRetroActive::ShowPredictiveListL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - // normal operation - if (UpdateInlineEditingCharacterL()) - { - // Get the candidate array object - CDesCArrayFlat* candidateArray = iOwner->CandidateArray(); - // Set the candidates to array on PtiEngine - ptiEngine->GetCandidateListL(*candidateArray); - - MAknFepUICtrlCandidatePaneInterface* predictivePane = - UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - // Get coordinate of input area - TPoint leftSideOfBaseLine; - TInt height; - TInt ascent; - TInt documentOffset = data->CursorPosition() > 0 ? data->CursorPosition() : 0; - - fepMan->GetScreenCoordinatesL(leftSideOfBaseLine, - height, - ascent, - documentOffset); - // show candidate pop-up list - predictivePane->SetWindowPosition(leftSideOfBaseLine, height, ascent); - predictivePane->ShowCandidateListL(candidateArray, 0, iCbaResourceID); - } - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateRetroActive::DoSelectItemL -// Select a current item, and commit it. -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCandidateRetroActive::DoSelectItemL() - { - // commit the current item - DoCommitItemL(); - if (iOwner->FepMan()->EditorHasFreeSpace() - && iOwner->IsPredictive()) - { - iOwner->ChangeState(ENextWord); - } - else - { - iOwner->PtiEngine()->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - } - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateRetroActive::DoCommitItemL -// Commit a current item -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCandidateRetroActive::DoCommitItemL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepUICtrlCandidatePaneInterface* candidatePane = - UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapaneseCandidatePane); - TInt currentIdex = candidatePane->CurrentItemIndexOfCandidate(); - candidatePane->HideWindow(); - - iOwner->ChangeState(EMultiCompletion); - CDesCArrayFlat* candidateArray = iOwner->CandidateArray(); - TPtrC ptr((*candidateArray)[currentIdex]); - ptiEngine->HandleCommandL(EPtiCommandUserActionRetroActiveCommit, &ptr); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - if (text.Length() > 0) - { - fepMan->CommitInlineEditL(text, text.Length()); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateChineseBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateChineseBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateChineseBase methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include - -#include "AknFepUiInputStateChineseBase.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include //keys -#include "AknFepGlobalEnums.h" -#include "AknFepPanic.h" - -// CONSTANTS - -/** -* TAknFepUiInputStateChineseBase class. -* -*/ - -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepInputStateChineseBase::TAknFepInputStateChineseBase -// Constractor -// --------------------------------------------------------------------------- -// -TAknFepInputStateChineseBase:: -TAknFepInputStateChineseBase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateBase(aOwner) - { - iUIContainer = aUIContainer; - - /* UI is not activated at this point yet. - if (aOwner) - { - aOwner->FepMan()->SendUIActivatedNotification(); - } - */ - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateChineseBase::operator= -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateChineseBase::operator=(const TAknFepInputStateBase& aState) - { - Mem::Copy(this, &aState, sizeof(TAknFepInputStateBase)); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateChineseBase::operator= -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateChineseBase::operator=(const TAknFepInputStateChineseBase& aState) - { - Mem::Copy(this, &aState, sizeof(TAknFepInputStateChineseBase)); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateChineseBase::UIContainer() -// Getting UI container object -// @return Japanese UI container object -// --------------------------------------------------------------------------- -// - -MAknFepUICtrlContainerChinese* TAknFepInputStateChineseBase::UIContainer() - { - return static_cast(iUIContainer); - } - - -// --------------------------------------------------------------------------- -// TAknFepInputStateChineseBase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateChineseBase::HandleCommandL(TInt aCommandId) - { - switch (aCommandId) - { - // Handle the event frome command. - case EAknSoftkeyCancel: - // case (TUint16)EAknSoftkeyCancel: //the Cancle in soft CBA - iOwner->FepMan()->TryCloseUiL(); - break; - case EAknSoftkeySelect: - //case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - break; - default: - break; - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateChineseBaseQwerty.cpp --- a/fep/aknfep/src/AknFepUiInputStateChineseBaseQwerty.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateChineseBaseQwerty methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIInputStateChineseBaseQwerty.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepCaseManager.h" - -#include -#include - -TAknFepInputStateChineseBaseQwerty::TAknFepInputStateChineseBaseQwerty( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner,aUIContainer) - { - } - -TBool TAknFepInputStateChineseBaseQwerty::IsQwertyKey(const TInt aKey) - { - TBool response = EFalse; - if ( (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - IsNumberKey( aKey ) || - aKey == EPtiKeyQwertyPlus || - aKey == EPtiKeyQwertyMinus || - aKey == EPtiKeyQwertyComma || - aKey == EPtiKeyQwertySemicolon || - aKey == EPtiKeyQwertyFullstop || - aKey == EPtiKeyQwertyHash || - aKey == EPtiKeyQwertySlash || - aKey == EPtiKeyQwertyApostrophe) - { - response = ETrue; - } - return response; - } - -TBool TAknFepInputStateChineseBaseQwerty::IsNumberKey(const TInt aKey) - { - TBool response = EFalse; - if (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9) - { - response = ETrue; - } - return response; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateChineseFindQwerty.cpp --- a/fep/aknfep/src/AknFepUiInputStateChineseFindQwerty.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateChineseFindQwerty methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateChineseFindQwerty.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManagerUIInterface.h" - -#include -#include -#include //keys - -TAknFepInputStateChineseFindQwerty::TAknFepInputStateChineseFindQwerty( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - iState = EQwerty; - } - -TBool TAknFepInputStateChineseFindQwerty::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = ETrue; - - if(!IsQwertyKey(aKey)) - { - ret = EFalse; - } - else if (aLength == EShortKeyPress && iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - ptiengine->AppendKeyPress((TPtiKey)aKey); - TPtrC text = ptiengine->GetPhoneticSpelling(1); - - if(text.Length()) - { - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - else - { - ret = EFalse; - } - } - return ret; - } - -TBool TAknFepInputStateChineseFindQwerty::IsQwertyKey(const TInt aKey) - { - TBool response = EFalse; - if ( (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - IsNumberKey( aKey ) || - aKey == EPtiKeyQwertyPlus || - aKey == EPtiKeyQwertyMinus || - aKey == EPtiKeyQwertyComma || - aKey == EPtiKeyQwertySemicolon || - aKey == EPtiKeyQwertyFullstop || - aKey == EPtiKeyQwertyHash || - aKey == EPtiKeyQwertySlash || - aKey == EPtiKeyQwertyApostrophe) - { - response = ETrue; - } - return response; - } - -TBool TAknFepInputStateChineseFindQwerty::IsNumberKey(const TInt aKey) - { - TBool response = EFalse; - if (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9) - { - response = ETrue; - } - return response; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCompletionHiraganaKanji.cpp --- a/fep/aknfep/src/AknFepUiInputStateCompletionHiraganaKanji.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,220 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateCompletionHiraganaKanji methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateCompletionHiraganaKanji.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePaneInterface.h" - // MAknFepUICtrlCandidatePaneInterface -#include "AknFepUICtrlContainerJapanese.h" -#include "AknFepGlobalEnums.h" -#include "AknFepManager.h" - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface - -/** - * TAknFepUiInputStateCompletionHiraganaKanji class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionHiraganaKanji:: -// TAknFepUiInputStateCompletionHiraganaKanji -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCompletionHiraganaKanji:: - TAknFepUiInputStateCompletionHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateCompletionJapaneseMultitap(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionHiraganaKanji::HandleNumericShortKeyL -// Handling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionHiraganaKanji::HandleNumericShortKeyL(TInt aKey) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = CommitInlineEditingCharacterL(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - if (text.Length() > 0) - { // for last character is space or line feed - iOwner->ChangeState(EInitial); - fepMan->SimulateKeyEventL(aKey, ETrue); - ret = ETrue; - } - else - { - iOwner->ChangeState(EInitial); - if (iOwner->IsQwerty()) - { - if (IsQwertyKey(aKey) && aKey != EStdKeySpace) - { - // Run on aKey if pressing qwerty key. - ret = EFalse; - } - } - else - { - if (IsNumberKey(aKey)) - { - // Run on aKey if pressing number key. - ret = EFalse; - } - } - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionHiraganaKanji::HandleNumericLongKeyL -// Handling Numeric long keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionHiraganaKanji::HandleNumericLongKeyL(TInt aKey) - { - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - ret = ProcessNumericLongKeyPressL(aKey); - if (iOwner->IsPredictive() && fepMan->EditorHasFreeSpace()) - { - iOwner->ChangeState(ENextWord); - } - else - { - iOwner->ChangeState(EInitial); - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionHiraganaKanji::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionHiraganaKanji::HandleAuxKeyL(TInt aKey, - TKeyPressLength aLength) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TPtiEngineCommand ptiCommand = EPtiCommandUserActionAllComplete; - - if (aKey == EKeyOK - || aKey == EStdKeyDevice3 /* 0xA7 */ - || aKey == EStdKeyEnter - || aKey == EStdKeyNkpEnter) - { - if (aLength == EShortKeyPress) - { - ptiCommand = EPtiCommandUserActionComplete; - } - ptiEngine->HandleCommandL(ptiCommand); - - UpdateInlineEditingCharacterL(); - return ETrue; - } - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionHiraganaKanji::UpdateInlineEditingCharacterL -// Update inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionHiraganaKanji::UpdateInlineEditingCharacterL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - - TBool isnextwordchar = !fepMan->IsFlagSet(CAknFepManager::EFlagLineFeedCharacter - | CAknFepManager::EFlagSpaceCharacter - | CAknFepManager::EFlagFullWidthSpaceCharacter); - - if(CommitInlineEditingCharacterL()) - { - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - TInt cursorpos = data->CursorPosition(); - if (text.Length() > 0) - { - if (fepMan->EditorHasFreeSpace()) - { - if (data->NumberOfPhrase() > 0) - { - TPtrC8 clauseChar = data->LengthOfPhrase(); - cursorpos = clauseChar[0]; - } - iOwner->ChangeState(EConversion); - fepMan->StartInlineEditL(); - fepMan->UpdateInlineEditL(text, cursorpos); - } - else - { - iOwner->ChangeState(EInitial); - } - } - else - { - __ASSERT_DEBUG(text.Length() == 0, - RDebug::Print( - _L("In TAknFepUiInputStateCompletionJapaneseMultitap::UpdateInlineEditingCharacterL,\nINVALID DATA: ConvertingString. Roll back to initial State!"))); - ptiEngine->ClearCurrentWord(); - if(iOwner->IsPredictive() - && (fepMan->EditorHasFreeSpace() && isnextwordchar) ) - { - iOwner->ChangeState(ENextWord); - } - else - { - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese::EJapanesePredictiveCandidatePane); - // Closeing candidate pop-up list - predictivePane->HideWindow(); - iOwner->ChangeState(EInitial); - } - } - - ret = ETrue; - } - - return ret; - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCompletionJapaneseMultitap.cpp --- a/fep/aknfep/src/AknFepUiInputStateCompletionJapaneseMultitap.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,285 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateCompletionJapaneseMultitap methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateCompletionJapaneseMultitap.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepGlobalEnums.h" -#include "AknFepPanic.h" -#include "AknFepManager.h" // CAknFepCaseManager - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface - -// CONSTANTS - -/** - * TAknFepUiInputStateCompletionJapaneseMultitap class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap:: -// TAknFepUiInputStateCompletionJapaneseMultitap -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCompletionJapaneseMultitap:: - TAknFepUiInputStateCompletionJapaneseMultitap( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateJapaneseBase(aOwner, aUIContainer) - { - iState = EMultiCompletion; - } - - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCompletionJapaneseMultitap::HandleCommandL(TInt aCommandId) - { - if (aCommandId == EAknFepAllCompletion) - { - iOwner->PtiEngine()->HandleCommandL(EPtiCommandUserActionAllComplete); - CommitInlineEditingCharacterL(); - iOwner->ChangeState(EInitial); - } - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap::HandleNumericShortKeyL -// Handling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionJapaneseMultitap::HandleNumericShortKeyL(TInt /*aKey*/) - { - return UpdateInlineEditingCharacterL(); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap::HandleNaviKeyL -// Handling Navigate keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionJapaneseMultitap::HandleNaviKeyL(TInt /*aKey*/, - TKeyPressLength /*aLength*/) - { - return UpdateInlineEditingCharacterL(); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionJapaneseMultitap::HandleAuxKeyL(TInt aKey, - TKeyPressLength aLength) - { - TBool ret = ETrue; - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - - if (aKey == EKeyOK - || aKey == EStdKeyDevice3 /* 0xA7 */ - || aKey == EStdKeyEnter - || aKey == EStdKeyNkpEnter) - { - TPtiEngineCommand ptiCommand = EPtiCommandUserActionComplete; - if (aLength == ELongKeyPress) - { - ptiCommand = EPtiCommandUserActionAllComplete; - } - ptiEngine->HandleCommandL(ptiCommand); - ret = UpdateInlineEditingCharacterL(); - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap::HandleNumericLongKeyL -// Handling Numeric long keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionJapaneseMultitap::HandleNumericLongKeyL(TInt aKey) - { - TBool ret = ProcessNumericLongKeyPressL(aKey); - iOwner->ChangeState(EInitial); - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap::UpdateInlineEditingCharacterL -// Update inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionJapaneseMultitap::UpdateInlineEditingCharacterL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - - if(CommitInlineEditingCharacterL()) - { - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - TInt cursorpos = data->CursorPosition(); - if (text.Length() > 0) - { - if (data->NumberOfPhrase() > 0) - { - TPtrC8 clauseChar = data->LengthOfPhrase(); - cursorpos = clauseChar[0]; - } - iOwner->ChangeState(EEntry); - fepMan->StartInlineEditL(); - fepMan->UpdateInlineEditL(text, cursorpos); - } - else - { - __ASSERT_DEBUG(text.Length() == 0, - RDebug::Print( - _L("In TAknFepUiInputStateCompletionJapaneseMultitap::UpdateInlineEditingCharacterL,\nINVALID DATA: ConvertingString. Roll back to initial State!"))); - ptiEngine->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - } - - ret = ETrue; - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap::CommitInlineEditingCharacterL -// Commit inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionJapaneseMultitap::CommitInlineEditingCharacterL() - { - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - if (text.Length() > 0) - { - fepMan->CommitInlineEditL(text, text.Length()); - ret = ETrue; - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap::ProcessNumericLongKeyPressL -// -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionJapaneseMultitap::ProcessNumericLongKeyPressL(TInt aKey) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - - ptiEngine->DeleteKeyPress(); - - if (!iOwner->IsQwerty() - && fepMan->IsSupportsSecretText() - && fepMan->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - iOwner->PtiEngine()->ClearCurrentWord(); - TPtiEngineCommand cmd = (TPtiEngineCommand)(EPtiCommandUserActionCompleteHalf0 + (aKey - '0')); - ptiEngine->HandleCommandL(cmd); - const MPtiEngineCompositionDataInterface* srcretdata = ptiEngine->CompositionData(); - TPtrC srcrettext = srcretdata->CompletedString(); - if (srcrettext.Length() > 0) - { - TBuf<1> buf; - buf.Append(srcrettext[0]); - - // if the previous character is the special character (line feed or space), - // it is necessary to clear the flag. - TInt specialcharFlags = CAknFepManager::EFlagLineFeedCharacter - | CAknFepManager::EFlagSpaceCharacter - | CAknFepManager::EFlagFullWidthSpaceCharacter; - if (fepMan->IsFlagSet(specialcharFlags)) - { - fepMan->ClearFlag(specialcharFlags); - } - - fepMan->NewCharacterL(buf); - fepMan->CommitInlineEditL(); - } - ptiEngine->ClearCurrentWord(); - ret = ETrue; - } - else - { - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - if (text.Length() > 0) - { - ptiEngine->HandleCommandL(EPtiCommandUserActionAllComplete); - ret = CommitInlineEditingCharacterL(); - __ASSERT_DEBUG(ret, AknFepPanic(EAknFepPanicCandidatesEmpty)); - } - else - { - fepMan->CancelInlineEdit(); - iOwner->PtiEngine()->ClearCurrentWord(); - } - if (fepMan->EditorHasFreeSpace()) - { - TPtiEngineCommand cmd = (TPtiEngineCommand)(EPtiCommandUserActionCompleteHalf0 + (aKey - '0')); - - ptiEngine->HandleCommandL(cmd); - fepMan->StartInlineEditL(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - if (text.Length() > 0) - { - fepMan->CommitInlineEditL(text, text.Length()); - ret = ETrue; - } - else - { - ptiEngine->ClearCurrentWord(); - fepMan->CancelInlineEdit(); - iOwner->ChangeState(EInitial); - } - } - } - return ret; - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCompletionKatakana.cpp --- a/fep/aknfep/src/AknFepUiInputStateCompletionKatakana.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,196 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateCompletionKatakana methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateCompletionKatakana.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepUICtrlContainerJapanese.h" - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface - - -/** -* TAknFepUiInputStateCompletionHiraganaKanji class. -* -*/ - -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionKatakana:: -// TAknFepUiInputStateCompletionKatakana -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCompletionKatakana:: - TAknFepUiInputStateCompletionKatakana( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateCompletionJapaneseMultitap(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionKatakana:: -// HandleNumericShortKeyL -// Handling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionKatakana::HandleNumericShortKeyL(TInt aKey) - { - TBool ret = ETrue; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - - CommitInlineEditingCharacterL(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - if (text.Length() > 0 && fepMan->EditorHasFreeSpace()) - { // for last character is space or line feed - iOwner->ChangeState(EInitial); - iOwner->FepMan()->SimulateKeyEventL(aKey, ETrue); - ret = ETrue; - } - else - { - ptiEngine->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap::UpdateInlineEditingCharacterL -// Update inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionKatakana::UpdateInlineEditingCharacterL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - - if(CommitInlineEditingCharacterL()) - { - ptiEngine->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - ret = ETrue; - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap::CommitInlineEditingCharacterL -// Commit inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionKatakana::CommitInlineEditingCharacterL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - if (text.Length() > 0) - { - HBufC* buf = HBufC::NewLC(text.Length()); - TPtr ptr(buf->Des()); - ptr.Copy(text); - if (fepMan->InputMode() == EHiragana) - { - for (TInt index=text.Length()-1; index >= 0; index-- ) - { - if (!IsFullHiragana(TChar(text[index]))) - { - ptr.Delete(index, 1); - } - } - } - - fepMan->CommitInlineEditL(ptr, ptr.Length()); - CleanupStack::PopAndDestroy(buf); - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionKatakana::IsFullHiragana -// Check a character whether it is Full-width Katakana -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionKatakana::IsFullHiragana(const TChar aChr) - { - TBool rtn = EFalse; - const TUint KFullHiraganaStart = 0x3041; - const TUint KFullHiraganaEnd = 0x3094; - - if (KFullHiraganaStart <= aChr && aChr <= KFullHiraganaEnd) - { - rtn = ETrue; - } - - return rtn; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionKatakana::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionKatakana::HandleAuxKeyL(TInt aKey, - TKeyPressLength aLength) - { - TBool ret = ETrue; - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - - if (aKey == EKeyOK - || aKey == EStdKeyDevice3 /* 0xA7 */ - || aKey == EStdKeyEnter - || aKey == EStdKeyNkpEnter) - { - TPtiEngineCommand ptiCommand = EPtiCommandUserActionComplete; - if (aLength == ELongKeyPress) - { - ptiCommand = EPtiCommandUserActionAllComplete; - } - ptiEngine->HandleCommandL(ptiCommand); - UpdateInlineEditingCharacterL(); - // OK-key or Enter-key shouldn't be consumed in Latin input. - // Because OK-key or Enter-key might be used in application side. - ret = EFalse; - } - - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCompletionLatinJapanese.cpp --- a/fep/aknfep/src/AknFepUiInputStateCompletionLatinJapanese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,161 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateCompletionLatinJapanese methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateCompletionLatinJapanese.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepCaseManager.h" // CAknFepCaseManager -#include "AknFepGlobalEnums.h" - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface - -// CONSTANTS - -/** -* TAknFepUiInputStateCompletionLatinJapanese class. -* -*/ - -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionLatinJapanese:: -// TAknFepUiInputStateCompletionLatinJapanese -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCompletionLatinJapanese::TAknFepUiInputStateCompletionLatinJapanese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateCompletionJapaneseMultitap(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionJapaneseMultitap::HandleNumericShortKeyL -// Handling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionLatinJapanese::HandleNumericShortKeyL(TInt aKey) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool ret = ETrue; - CommitInlineEditingCharacterL(); - iOwner->ChangeState(EInitial); - if (!iOwner->IsQwerty()) - { - fepMan->SimulateKeyEventL(aKey, ETrue); - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionLatinJapanese::CommitInlineEditingCharacterL -// Commit inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionLatinJapanese::CommitInlineEditingCharacterL() - { - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - if (!iOwner->IsQwerty() - && iOwner->FepMan()->IsSupportsSecretText() - && fepMan->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - fepMan->CommitInlineEditL(); - ptiEngine->ClearCurrentWord(); - iData = 0; - ret = ETrue; - } - else - { - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - if (text.Length() > 0) - { - // Update case without Qwerty - if (!iOwner->IsQwerty()) - { - UpdateCase(text); - } - - // Commit a character - fepMan->CommitInlineEditL(text, text.Length()); - - // Update case with Qwerty - if (iOwner->IsQwerty()) - { - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - caseMan->UpdateCase(ENullNaviEvent); - } - - ptiEngine->ClearCurrentWord(); - iData = 0; - ret = ETrue; - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionLatinJapanese::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionLatinJapanese::HandleAuxKeyL(TInt aKey, - TKeyPressLength aLength) - { - TBool ret = ETrue; - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - - if (aKey == EKeyOK - || aKey == EStdKeyDevice3 /* 0xA7 */ - || aKey == EStdKeyEnter - || aKey == EStdKeyNkpEnter) - { - TPtiEngineCommand ptiCommand = EPtiCommandUserActionComplete; - if (aLength == ELongKeyPress) - { - ptiCommand = EPtiCommandUserActionAllComplete; - } - ptiEngine->HandleCommandL(ptiCommand); - UpdateInlineEditingCharacterL(); - // OK-key or Enter-key shouldn't be consumed in Latin input. - // Because OK-key or Enter-key might be used in application side. - ret = EFalse; - } - - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateCompletionPredictiveHiraganaKanji.cpp --- a/fep/aknfep/src/AknFepUiInputStateCompletionPredictiveHiraganaKanji.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,154 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateCompletionPredictiveHiraganaKanji methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateCompletionPredictiveHiraganaKanji.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePaneInterface.h" - // MAknFepUICtrlCandidatePaneInterface -#include "AknFepUICtrlContainerJapanese.h" -#include "AknFepManager.h" -#include "AknFepGlobalEnums.h" - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface - -/** - * TAknFepUiInputStateCompletionPredictiveHiraganaKanji class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionPredictiveHiraganaKanji:: -// TAknFepUiInputStateCompletionPredictiveHiraganaKanji -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCompletionPredictiveHiraganaKanji:: - TAknFepUiInputStateCompletionPredictiveHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateCompletionHiraganaKanji(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionPredictiveHiraganaKanji::HandleNumericShortKeyL -// Handling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionPredictiveHiraganaKanji::HandleNumericShortKeyL(TInt aKey) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = CommitInlineEditingCharacterL(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - if (text.Length() > 0) - { - iOwner->ChangeState(EInitial); - iOwner->FepMan()->SimulateKeyEventL(aKey, ETrue); - ret = ETrue; - } - else - { - iOwner->ChangeState(EInitial); - if (iOwner->IsQwerty() && IsQwertyKey(aKey) && aKey != EStdKeySpace) - { - ret = EFalse; - } - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionPredictiveHiraganaKanji::HandleNumericLongKeyL -// Handling Numeric long keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionPredictiveHiraganaKanji::HandleNumericLongKeyL(TInt aKey) - { - TBool ret = EFalse; - - ret = ProcessNumericLongKeyPressL(aKey); - - if (ret && iOwner->FepMan()->EditorHasFreeSpace()) - { - iOwner->ChangeState(ENextWord); - } - else - { - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - // Closeing candidate pop-up list - predictivePane->HideWindow(); - iOwner->ChangeState(EInitial); - ret = ETrue; - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCompletionPredictiveHiraganaKanji::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCompletionPredictiveHiraganaKanji::HandleAuxKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - - if (aKey == EKeyOK - || aKey == EStdKeyDevice3 /* 0xA7 */ - || aKey == EStdKeyEnter - || aKey == EStdKeyNkpEnter) - { - TInt index = UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane)->CurrentItemIndexOfCandidate(); - if (index > -1) - { - ptiEngine->HandleCommandL(EPtiCommandUserActionCompleteCandidate, &index); - } - else - { - ptiEngine->HandleCommandL(EPtiCommandUserActionComplete); - } - - UpdateInlineEditingCharacterL(); - ret = ETrue; - } - return ret; - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateConversionHiraganaKanji.cpp --- a/fep/aknfep/src/AknFepUiInputStateConversionHiraganaKanji.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,191 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateConversionHiraganaKanji methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateConversionHiraganaKanji.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepGlobalEnums.h" - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface -#include - -// CONSTANTS - -/** - * TAknFepUiInputStateConversionHiraganaKanji class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateConversionHiraganaKanji:: -// TAknFepUiInputStateConversionHiraganaKanji -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateConversionHiraganaKanji:: - TAknFepUiInputStateConversionHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateEntryJapaneseMultitap(aOwner, aUIContainer) - { - iData = EStateEventCandidateOn; - iState = EConversion; - - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateConversionHiraganaKanji::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateConversionHiraganaKanji::InitializeStateL() - { - iOwner->SetInlineEditUnderlineVisibility(ETrue); - - // Update of CBA - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TInt newResource = R_AKNFEP_SOFTKEYS_EMPTY_EMPTY_COMMIT; - fepMan->UpdateCbaL(newResource); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateConversionHiraganaKanji::HandleNumericKeyL -// Handling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateConversionHiraganaKanji::HandleNumericShortKeyL(TInt /*aKey*/) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - ptiEngine->HandleCommandL(EPtiCommandUserActionAllComplete); - iOwner->ChangeState(EMultiCompletion); - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialJapaneseBase::HandleNaviKeyL -// Handling Navigate keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateConversionHiraganaKanji::HandleNaviKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TPtiEngineCommand ptiCommand = EPtiCommandNone; - - switch(aKey) - { - case EKeyLeftArrow: - case EKeyRightArrow: - case EStdKeyLeftArrow: /* 0x0e */ - case EStdKeyRightArrow: /* 0x0f */ - { - ptiCommand = EPtiCommandUserActionShorten; - if (aKey == EKeyRightArrow - || aKey == EStdKeyRightArrow) - ptiCommand = EPtiCommandUserActionLengthen; - - ptiEngine->HandleCommandL(ptiCommand); - UpdateInlineEditingCharacterL(); - iData = EStateEventCandidateOff; - } - break; - case EKeyDownArrow: - case EKeyUpArrow: - case EStdKeyDownArrow: /* 0x11 */ - case EStdKeyUpArrow: /* 0x10 */ - case EStdKeySpace: - { - ptiCommand = EPtiCommandUserActionConvert; - if (aKey == EKeyUpArrow - || aKey == EStdKeyUpArrow) - { - ptiCommand = EPtiCommandUserActionPrevious; - } - ptiEngine->HandleCommandL(ptiCommand); - UpdateInlineEditingCharacterL(); - if(iData == EStateEventCandidateOn) - { - iOwner->ChangeState(ECandidate); - } - iData = EStateEventCandidateOn; - } - break; - default: - break; - } - - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialJapaneseBase::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateConversionHiraganaKanji::HandleAuxKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - - switch(aKey) - { - case EKeyOK: - case EStdKeyDevice3: /* 0xA7 */ - case EStdKeyEnter: /* 0x03 */ - case EStdKeyNkpEnter: /* 0x88 */ - { - iOwner->ChangeState(EMultiCompletion); - } - break; - case EKeyBackspace: - case EStdKeyBackspace: /* 0x01 */ - case EStdKeyEscape: /* 0x04 */ - { - fepMan->SetInlineEditingCursorVisibilityL(ETrue); - ptiEngine->HandleCommandL(EPtiCommandUserActionCancel); - iOwner->SetInlineEditUnderlineVisibility(ETrue); - UpdateInlineEditingCharacterL(); - iOwner->ChangeState(EEntry); - ret = ETrue; - } - break; - default: - break; - } - - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryArabicHebrewPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryArabicHebrewPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryArabicHebrewPredictive methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryArabicHebrewPredictive.h" - -TAknFepInputStateEntryArabicHebrewPredictive:: -TAknFepInputStateEntryArabicHebrewPredictive(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateEntryWesternPredictive(aOwner) - { - } - - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryHalfQwertyWesternPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryHalfQwertyWesternPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,887 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateEntryHalfQwertyWesternPredictive methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryHalfQwertyWesternPredictive.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiManagerWestern.h" -#include "AknFepManager.h" -#include "AknFepPanic.h" -#include "AknFepCaseManager.h" - -#include //CPtiEngine -#include //keys -#include //MPtiEngineCompositionDataInterface -#include //FeatureManager -#include -#include -#include -// TODO: Remove this include -#include -#include - -static const TInt KKeyMappingsLength = 63; - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// -TAknFepUiInputStateEntryHalfQwertyWesternPredictive::TAknFepUiInputStateEntryHalfQwertyWesternPredictive(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateBase(aOwner) - { - //this class insists on the existence of a case manager - __ASSERT_DEBUG(iOwner->CaseMan(), AknFepPanic(EAknFepPanicNoCaseManager)); - - iState = EEntry; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - ptiengine->SetInputMode( EPtiEngineHalfQwertyPredictive ); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - TPtiTextCase caseMode = ptiengine->Case(); - - ptiengine->SetCase(caseMode); - TBool isUnlimitedEditor = EFalse; - ptiengine->SetMaxLengthForAutoCompletedCandidates(fepMan->EditorFreeSpaceForAutoWordCompletion(isUnlimitedEditor )); - - if(fepMan->IsAutoCompleteOn()) - { - TRAP_IGNORE( ptiengine->HandleCommandL( EPtiCommandEnableAutoCompletion ) ); - } - else - { - TRAP_IGNORE( ptiengine->HandleCommandL( EPtiCommandDisableAutoCompletion ) ); - } - -// TPtiErrorCorrectionLevel correctionLevel = (TPtiErrorCorrectionLevel)fepMan->AdvancedPredictiveTypingCorrectionLevel(); -// TRAP_IGNORE( ptiengine->HandleCommandL( EPtiCommandSetCorrectionLevel, &correctionLevel ) ); - - TPtiKeyboardType keyboard = fepMan->KeyboardLayout(); - ptiengine->SetKeyboardType(keyboard); - - -// TBool isNumberCandidateShown = fepMan->IsAdvancedPredictiveNumberCandidateShown(); -// TRAP_IGNORE( ptiengine->HandleCommandL( EPtiCommandSetNumberCandidateStatus, &isNumberCandidateShown ) ); -// -// TBool primaryCandidateState = fepMan->AdvancedPredictivePrimaryCandidate(); -// TRAP_IGNORE( ptiengine->HandleCommandL( EPtiCommandSetProactiveCorrection, &primaryCandidateState ) ); - } - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// -TBool TAknFepUiInputStateEntryHalfQwertyWesternPredictive::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - - if(fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - { - ptiengine->SetCase(EPtiCaseFnLower); - } - - // Handle the Chr cycling - if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) && aKey !=EKeyBackspace) - { - // if the key has no accented characters mapped to it, then just block the event - TBuf keyMappings; - ptiengine->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseChrLower ); - if( keyMappings.Length() == 0 ) - { - return EFalse; - } - // if there is a no matches indicator remove it - if ( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) && fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - fepMan->TryRemoveNoMatchesIndicatorL(); - fepMan->UpdateCbaL(NULL); - } - // if there is an autocompletion part rip it off - fepMan->RemoveSuggestedAdvanceCompletionL(); - - // now if the editor has no free space just return - if ( !fepMan->EditorHasFreeSpace() ) - { - return EFalse; - } - // if we are in inline editing, break the word - if( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { - TPtrC selectedWord = ptiengine->CurrentWord(); - if( ptiengine->CurrentWord() != KNullDesC) - { - fepMan->UpdateInlineEditL( selectedWord, selectedWord.Length() ); //selection.iAnchorPosition - ptiengine->CommitCurrentWord(); - } - fepMan->TryCloseUiL(); - } - - if ( iData && (iData != aKey) ) - { - // Chr key is still pressed down but character key was changed from previous one - // to new one. The previous character is committed and PtiEngine starts - // processing new key. - ptiengine->CancelTimerActivity(); - } - fepMan->SetFlag( CAknFepManager::EFlagInsideMultitapInlineEditingTransaction ); - } - - TBool response = EFalse; - - - // Handle dead keys with space or backspace. These keys are not mapped in PtiEngine, so they cannot - // be handled there. -/* if ( ptiengine->HandleCommandL(EPtiCommandDeadKeyWaiting) == 1 ) - { - if ( aKey == EStdKeyBackspace ) - { - // Pending dead key is removed with backspace. No other characters are removed. - ptiengine->HandleCommandL(EPtiCommandGetAndClearDeadKeyRootChar); - response = ETrue; - } - else if ( aKey == EStdKeySpace ) - { - // Dead key followed by space enters the dead key root character - TText deadRoot = ptiengine->HandleCommandL(EPtiCommandGetAndClearDeadKeyRootChar); - ptiengine->HandleCommandL( EPtiCommandAppendCharacter, &deadRoot ); - - TPtrC newText = ptiengine->CurrentWord(); - fepMan->UpdateInlineEditL( newText, newText.Length() ); - iOwner->CaseMan()->UpdateCase(ENullNaviEvent); - - response = ETrue; - } - } -*/ - if (!response) // key not yet handled - { - switch (aKey) - { - case EStdKeySpace: - if( fepMan->FnKeyState() - == CAknFepFnKeyManager::EFnKeyNone ) - { - response = HandleWordBreakingKeysL(aKey); - } - else - { - response = HandleQwertyKeysL( aKey, aLength); - } - break; - case EStdKeyFullStop: - if( aLength == ELongKeyPress ) - { - // first commit the word if in inline editing - if( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - fepMan->TryRemoveNoMatchesIndicatorL(); - fepMan->UpdateCbaL(NULL); - } - - TPtrC selectedWord = ptiengine->CurrentWord(); - if( ptiengine->CurrentWord() != KNullDesC) - { - fepMan->UpdateInlineEditL( selectedWord, selectedWord.Length() ); //selection.iAnchorPosition - ptiengine->CommitCurrentWord(); - } - fepMan->TryCloseUiL(); - } - response = EFalse; - } - else - { - HandleShiftState(aKey); - response = HandleQwertyKeysL( aKey, aLength); - } - break; - case EStdKeyEnter: - case EStdKeyTab: - case EStdKeyLeftArrow: - case EStdKeyRightArrow: - case EStdKeyUpArrow: - case EStdKeyDownArrow: - response = HandleWordBreakingKeysL(aKey); - break; - - // Long press of shift key start copy event. - // Its should handle by framework. - case EStdKeyF21: - case EKeyF21: - // Soft key handle by framework - // Selection key handle by AknFepManager. - case EStdKeyDevice0: // iCode:EKeyCBA1 - case EStdKeyDevice1: // iCode:EKeyCBA2 - case EStdKeyDevice3: // iCode:EKeyOK - case EKeyCBA1: - case EKeyCBA2: - case EKeyOK: - response = EFalse; - break; - - case EKeyUpArrow: - if ( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { - // Select the exact match with the up arrow and lock it. - // Another alternative could be to call function DoPreviousMatchL() from here - - TPtrC exactWord = ptiengine->FirstCandidate(); - ptiengine->HandleCommandL( EPtiCommandLockCurrentCandidate, NULL ); - - fepMan->UpdateInlineEditL(exactWord, exactWord.Length()); - - response = ETrue; - break; - } - // fall through - case EKeyDownArrow: - case EKeyLeftArrow: - case EKeyRightArrow: - case EKeyBackspace: - { - response = HandleNaviKeysL(aKey, aLength); - } - break; - - case EStdKeyLeftShift: - case EStdKeyRightShift: - case EStdKeyLeftFunc: - { - if( EPtiCaseFnLower == fepMan->PtiEngine()->Case() ) - { - if ( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { - fepMan->TryRemoveNoMatchesIndicatorL(); - } - - fepMan->UpdateCbaL(NULL); - - /*if (fepMan->IsFlagSet(CAknFepManager::EFlagCompoundWord)) - { - if (fepMan->IsCursorAtEndOfWord()) - { - fepMan->AddCompoundWordToUdbL(); - } - fepMan->ClearFlag(CAknFepManager::EFlagCompoundWord); - } - */ - - fepMan->RemoveSuggestedAdvanceCompletionL(); - ptiengine->CommitCurrentWord(); - fepMan->CommitInlineEditL(); - fepMan->TryCloseUiL(); - response = EFalse; - } - } - break; - - default: - HandleShiftState(aKey); - response = HandleQwertyKeysL(aKey, aLength); -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - if ( aLength == ELongKeyPress ) - { - // Expire multitap timer after long press. - ptiengine->CancelTimerActivity(); - } -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - break; - } - } - - if ( aKey == EStdKeyEnter) - { - iData = 0; - return 0; - } - - if (!iOwner->PtiEngine()->IsValidKey((TPtiKey)aKey)) - { - iData = 0; - fepMan->ClearFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - fepMan->PtiEngine()->CancelTimerActivity(); - - return response; - } - - - iData = aKey; // store the pressed key for future reference - return response; - } - - -////////////////////////////////////////////////////////////////////////////////// -// -void TAknFepUiInputStateEntryHalfQwertyWesternPredictive::HandleShiftState( TInt aKey ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - TPtiTextCase shiftedCase; - if(fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - { - shiftedCase = EPtiCaseFnLower; - } - else - { - shiftedCase= EPtiCaseLower; - } - - // Find out if the key is alphabetic - TBuf keyMappings; - ptiengine->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseUpper ); - TBool isAlpha = ( keyMappings.Length() && TChar(keyMappings[0]).IsAlpha() ); - - if (isAlpha && (fnKeyState == CAknFepFnKeyManager::EFnKeyNone)) - { - switch ( caseMan->CurrentCase() ) - { - case EAknEditorTextCase: - { - // Alphabetic characters are always capitalized in "Abc" mode - // unless the shift is pressed - if ( !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) ) - { - shiftedCase = EPtiCaseUpper; - } - } - break; - - case EAknEditorLowerCase: - { - // Pressing shift enters uppercae letters in the "abc" mode - if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) ) - { - shiftedCase = EPtiCaseUpper; - } - } - break; - - case EAknEditorUpperCase: - { - // In the "ABC" mode (capslock mode) the letters are uppercased - // unless the shift is pressed - if ( !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) ) - { - shiftedCase = EPtiCaseUpper; - } - } - break; - - default: - break; - } - - - } - else - { - // non-alphabetic keys are shifted if and only if shift is pressed, no matter what is the input state - if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) && (fnKeyState == CAknFepFnKeyManager::EFnKeyNone)) - { - shiftedCase = EPtiCaseUpper; - } - else if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) && (fnKeyState != CAknFepFnKeyManager::EFnKeyNone)) - { - shiftedCase = EPtiCaseFnUpper; - } - } - - - // Handle the Chr key state - if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) ) - { - // Chr key is pressed down. Chr mode is used. - if (shiftedCase == EPtiCaseLower) - { - shiftedCase = EPtiCaseChrLower; - } - else if (shiftedCase == EPtiCaseUpper) - { - shiftedCase = EPtiCaseChrUpper; - } - } - - ptiengine->SetCase(shiftedCase); - - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringShiftKeyPress); - } - -////////////////////////////////////////////////////////////////////////////////// -// - -TBool TAknFepUiInputStateEntryHalfQwertyWesternPredictive::HandleWordBreakingKeysL(TInt aKey) - { - TBool retVal = EFalse; // in most cases we let also the upper levels handle these key events - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - - // Up and down arrows break the inline word input only when shift or chr is held down - if ( !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) && - !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) && - ( aKey==EStdKeyUpArrow || aKey==EStdKeyDownArrow ) ) - { - return retVal; - } - - - if ( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { - TBool rightToLeftLang = fepMan->IsRightToLeftLanguage(); - TInt tailLength = 0; - ptiengine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - switch (aKey) - { - case EStdKeyLeftArrow: - case EStdKeyRightArrow: - // In case the inline editing is ongoing and there is a word completion - // currently shown, the first backwards tap will remove the suggested - // completion. - if(tailLength > 0) - { - if ((rightToLeftLang && aKey == EStdKeyLeftArrow) - || (! rightToLeftLang && aKey == EStdKeyRightArrow )) - { - ptiengine->HandleCommandL( EPtiCommandLockCurrentCandidate); - TPtrC selectedWord = ptiengine->CurrentWord(); - fepMan->UpdateInlineEditL( selectedWord, selectedWord.Length() ); //selection.iAnchorPosition - // To fix the bug: STAA-7GYBJC Suggested word is not committed when Arrow right key is pressed. - ptiengine->CommitCurrentWord(); - fepMan->TryCloseUiL(); - // Asyncronous case update after the editor has handled the key - fepMan->SimulateKeyEventL(EKeyF19); - retVal = ETrue; - } - else if((rightToLeftLang && aKey == EStdKeyRightArrow) - || (! rightToLeftLang && aKey == EStdKeyLeftArrow )) - { - fepMan->RemoveSuggestedAdvanceCompletionL(); - retVal = ETrue; - } - } - else - { - ptiengine->CommitCurrentWord(); - retVal = EFalse; - } - break; - case EStdKeyUpArrow: - case EStdKeyDownArrow: - case EStdKeyEnter: - case EStdKeySpace: - case EStdKeyTab: - { - //retVal = ETrue; - - if ( ( aKey == EStdKeySpace || aKey == EStdKeyEnter ||aKey == EStdKeyTab) - && fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) - && (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) ) - { - fepMan->TryRemoveNoMatchesIndicatorL(); - fepMan->UpdateCbaL(NULL); - } - - TBool wasInlineEditing = EFalse; - wasInlineEditing = fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction); - ptiengine->CommitCurrentWord(); - fepMan->CommitInlineEditL(); - /* Temporary Fix */ - //EFlagInsideInlineEditingTransaction flag check is not required - //but just to make sure. - if(aKey == EStdKeySpace && wasInlineEditing) - { - _LIT(KSpace," "); - fepMan->StartInlineEditL(); - fepMan->UpdateInlineEditL(KSpace,0); - fepMan->CommitInlineEditL(); - retVal = ETrue; - } - /* Temporary Fix */ - fepMan->TryCloseUiL(); - // Asyncronous case update after the editor has handled the key - fepMan->SimulateKeyEventL(EKeyF19); - } - break; - default: - __ASSERT_DEBUG( EFalse, AknFepPanic(EAknFepPanicNotSupportKey) ); - } - - } - else - { - iOwner->ChangeState( EInitial ); - } - - return retVal; - } - - -///////////////////////////////////////////////////////////////////////////////// -// -TBool TAknFepUiInputStateEntryHalfQwertyWesternPredictive::HandleQwertyKeysL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool retVal = EFalse; - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - - // Key is consumed if the PtiEngine maps it to some character - TBuf keyMappings; - - if(fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - { - ptiengine->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseFnLower); - } - else - { - ptiengine->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseLower); - } - //ptiengine->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseLower); - //ITI : Pti Engine can be asked to give the proper data for the keys under Fn Key. - TBool keyIsMapped = ( keyMappings.Length() > 0 ); - - // The dead key handling inside the PtiDefaultCore assumes that no other key mapping queries - // have been made between handling the dead key and the next one (these queries change the - // internal state of the key mapping object). For this reason, we must return the key mappings - // to their previous state. This is quite dirty hack, but so is the dead key handling code which - // forces us to do this. - if(fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - { - ptiengine->MappingDataForKey( (TPtiKey)iData, keyMappings, EPtiCaseFnLower); - } - else - { - ptiengine->MappingDataForKey( (TPtiKey)iData, keyMappings, EPtiCaseLower); - } - - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches) && fnKeyState == CAknFepFnKeyManager::EFnKeyNone ) - { - //no matches, so just play tone - fepMan->PlaySound(EAvkonSIDConfirmationTone); - return keyIsMapped; - } - - if ( keyIsMapped ) - { - if( fnKeyState != CAknFepFnKeyManager::EFnKeyNone ) - { - //closing the UI will commit the current word and move to intial state - - // break the word - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - fepMan->TryRemoveNoMatchesIndicatorL(); - } - fepMan->RemoveSuggestedAdvanceCompletionL(); - TPtrC selectedWord = ptiengine->CurrentWord(); - if( ptiengine->CurrentWord() != KNullDesC) - { - fepMan->UpdateInlineEditL( selectedWord, selectedWord.Length() ); //selection.iAnchorPosition - ptiengine->CommitCurrentWord(); - } - fepMan->TryCloseUiL(); - ptiengine->SetCase(EPtiCaseFnLower); - } - - if ( !(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) ) - { // 'new' inline edit - ptiengine->ClearCurrentWord(); - if (caseMan->CurrentCase() == EAknEditorTextCase) - { - ptiengine->MarkAutoCapitalized(); - } - - fepMan->StartInlineEditL(); - } - - TPtrC newText; - - if( aKey == EStdKeyFullStop ) - { - TInt tailLength = 0; - ptiengine->HandleCommandL( EPtiCommandLockCurrentCandidate, &tailLength ); -/* if( fepMan->IsAutoCompleteOn() ) - { - TInt tailLength = 0; - ptiengine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - if( tailLength > 0) - { - // if autoword part is visible update the input sequence - newText.Set(ptiengine->CurrentWord() ); - ptiengine->ClearCurrentWord(); - ptiengine->SetCurrentWord(newText); - } - }*/ - } - - newText.Set(ptiengine->AppendKeyPress((TPtiKey)aKey)); - - if ( aLength == EShortKeyPress ) - { - SetShortKeyPressText(newText); - } - if (ptiengine->NumberOfCandidates() > 0 ) - { - // more good words coming in from predictive text engine so carry on - if(newText.Length() == 1) - { - TDigitType digittype = fepMan->LocalDigit(); - TChar chchar(newText[0]); - if(!chchar.IsDigit() || (chchar.IsDigit() && !digittype)) - { - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - else - { - TBuf<1> tempbuf; - tempbuf.Append(newText[0]); - ConvertDigitToDigittype(digittype,tempbuf); - fepMan->UpdateInlineEditL(tempbuf, tempbuf.Length()); - } - if(fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - { - ptiengine->CommitCurrentWord(); - fepMan->CommitInlineEditL(); - } - } - else - { - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - - } - - else - { - // engine has run out of matches - // we are not in the functionized state - fepMan->SetFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - fepMan->SetFlag(CAknFepManager::EFlagNoMatches); - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY); - if(newText.Length() == 1) - { - TDigitType digittype = fepMan->LocalDigit(); - TChar chchar(newText[0]); - if(!chchar.IsDigit() || (chchar.IsDigit() && !digittype)) - { - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - else - { - TBuf<1> tempbuf; - tempbuf.Append(newText[0]); - ConvertDigitToDigittype(digittype,tempbuf); - fepMan->UpdateInlineEditL(tempbuf, tempbuf.Length()); - } - } - else - { - // Remove the autocompletion tail if present - if (fepMan->IsAutoCompleteOn()) - { - TInt tailLength = 0; - ptiengine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - if(tailLength > 0) - { - // To remove the autocompletion part, the below function is used. - // DeleteKeyPress was used earlier. This is removed to fix the bug : - // enter characters to show autocompletion part. Now press a - // character so that the no matches character is shown. Now press - // backspace key, last character is not deleted. - fepMan->RemoveSuggestedAdvanceCompletionL(); - fepMan->PlaySound(EAvkonSIDConfirmationTone); - return ETrue; - } - } - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - fepMan->PlaySound(EAvkonSIDConfirmationTone); - } - - // Normally we update the case after key press. However, if Chr key is held down, the case update - // must not happen until when the Chr is released or the timer expires (in both of these cases - // the function KeyTimerExpired() will get callled). - if ( !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) ) - { - iOwner->CaseMan()->UpdateCase(ENullNaviEvent); - } - else - { - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringChrKeyPress); - } - - retVal = ETrue; - } - else - { - retVal = EFalse; - } - - if(ptiengine->IsValidKey((TPtiKey)aKey)) - retVal = ETrue; - - if( aKey!=EStdKeyBackspace && fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - { - retVal = ETrue; - } - if( !fepMan->IsFlagSet( CAknFepManager::EFlagLongShiftKeyPress ) && - fnKeyState == CAknFepFnKeyManager::EFnKeyNext ) - { - fepMan->SetFnKeyState(CAknFepFnKeyManager::EFnKeyNone); - } - - return retVal; - } - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -// -TBool TAknFepUiInputStateEntryHalfQwertyWesternPredictive::HandleNaviKeysL(TInt aKey, TKeyPressLength /*aLength*/) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (!(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))) - { - TBuf textToUncommit; - TBool comsumeKey; - if (!(fepMan->TryGetTextToUncommitL(textToUncommit, aKey, comsumeKey))) - { - // If T9 word length > 32, the navi key is consumed without action. - // Maybe should navigate inside word. - return comsumeKey; - } - ptiengine->ClearCurrentWord(); - ptiengine->SetCurrentWord(textToUncommit); // this set the input sequence of PtiEngine - fepMan->StartInlineEditL(fepMan->UncommittedText(), textToUncommit, - textToUncommit.Length(), EFalse); - } - - if (aKey == EKeyBackspace) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - fepMan->TryRemoveNoMatchesIndicatorL(); - fepMan->UpdateCbaL(NULL); - ptiengine->HandleCommandL(EPtiCommandSetFlagToUpdateCandidates); - // Need to return as DeleteKeyPress should not be passed to ptiengine. - // This is because ptiengine does not maintain the input sequence - // if the key press does not increase the word length. So when no matches - // character is (?) is deleted, no need to pass to ptiengine. This is to done - // to solve the bug :enter characters till the no matches character is shown. Now press - // backspace, last character is not deleted. - return ETrue; - } - - TPtrC newText = ptiengine->DeleteKeyPress(); - // remove autocompletion part if any - // this has to be done before updateinlineedit to avoid flickering - TInt tailLength = 0; - ptiengine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, - &tailLength ); - if(tailLength > 0) - { - fepMan->RemoveSuggestedAdvanceCompletionL(); - newText.Set(ptiengine->CurrentWord()); - } - fepMan->UpdateInlineEditL(newText, newText.Length()); - - fepMan->ClearFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - if (ptiengine->NumberOfCandidates() <= 1) - { - fepMan->SetFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - } - - iOwner->CaseMan()->UpdateCase(EBackspaceEvent); - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringChrKeyPress); - fepMan->CloseUiIfWordDeletedL(); - } - - return ETrue; - } - - -///////////////////////////////////////////////////////////////////////////// -// -void TAknFepUiInputStateEntryHalfQwertyWesternPredictive::LastWordInSelectionList() - { - - } - - -////////////////////////////////////////////////////////////////////////////// -// -void TAknFepUiInputStateEntryHalfQwertyWesternPredictive::FirstWordInSelectionList() - { - } - - -///////////////////////////////////////////////////////////////// -// -void TAknFepUiInputStateEntryHalfQwertyWesternPredictive::KeyTimerExpired() - { - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - caseMan->UpdateCase(ENullNaviEvent); - fepMan->ClearFlag( CAknFepManager::EFlagInsideMultitapInlineEditingTransaction ); - iData = 0; - } - } - -void TAknFepUiInputStateEntryHalfQwertyWesternPredictive::ConvertDigitToDigittype(TDigitType& digittype,TDes& aConvertedNumeral) - { - TChar chchar(aConvertedNumeral[0]); - switch(digittype) - { - case EDigitTypeDevanagari: - { - chchar = (aConvertedNumeral[0] + KLatinToDevanagariDigitsDelta); - } - break; - case EDigitTypeArabicIndic: - { - chchar = (aConvertedNumeral[0] + KLatinToArabicIndicDigitsDelta); - } - break; - case EDigitTypeEasternArabicIndic: - { - chchar = (aConvertedNumeral[0] + KLatinToEasternArabicIndicDigitsDelta); - } - } - aConvertedNumeral.Zero(); - aConvertedNumeral.Append(chchar); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryHiraganaKanji.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryHiraganaKanji.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,230 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateEntryHiraganaKanji methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateEntryHiraganaKanji.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepGlobalEnums.h" - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface -#include - -// CONSTANTS - -/** - * TAknFepUiInputStateEntryHiraganaKanji class. - * - */ - -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryHiraganaKanji::TAknFepUiInputStateEntryHiraganaKanji -// Constractor -// --------------------------------------------------------------------------- -// - -TAknFepUiInputStateEntryHiraganaKanji::TAknFepUiInputStateEntryHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateEntryJapaneseMultitap(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryHiraganaKanji::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateEntryHiraganaKanji::InitializeStateL() - { - // Set on Underline visibility in inline editing - iOwner->SetInlineEditUnderlineVisibility(ETrue); - - // Update of CBA - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TInt newResource = R_AKNFEP_SOFTKEYS_PREDICT_OTHER_COMMIT; - if(!fepMan->IsAbleToChangePrediction()) - { - newResource = R_AKNFEP_SOFTKEYS_EMPTY_OTHER_COMMIT; - } - - fepMan->UpdateCbaL(newResource); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryHiraganaKanji::HandleNaviKeyL -// Handling Navigate keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryHiraganaKanji::HandleNaviKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TPtiEngineCommand ptiCommand = EPtiCommandNone; - - switch(aKey) - { - case EKeyLeftArrow: - case EStdKeyLeftArrow: /* 0x0e */ - { - fepMan->SetInlineEditingCursorVisibilityL(ETrue); - ptiCommand = EPtiCommandUserActionLeft; - } - break; - case EKeyRightArrow: - case EStdKeyRightArrow: /* 0x0f */ - { - fepMan->SetInlineEditingCursorVisibilityL(ETrue); - ptiCommand = EPtiCommandUserActionRight; - } - break; - case EKeyDownArrow: - case EStdKeyDownArrow: /* 0x11 */ - case EStdKeySpace: - { - ptiCommand = EPtiCommandUserActionConvert; - } - break; - case EKeyUpArrow: - case EStdKeyUpArrow: /* 0x10 */ - { - ptiCommand = EPtiCommandUserActionPrevious; - } - break; - default: - break; - } - ptiEngine->HandleCommandL(ptiCommand); - UpdateInlineEditingCharacterL(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - if (text.Length() > 0) - { - switch(aKey) - { - case EKeyDownArrow: - case EStdKeyDownArrow: /* 0x11 */ - case EKeyUpArrow: - case EStdKeyUpArrow: /* 0x10 */ - case EStdKeySpace: - { - iOwner->ChangeState(EConversion); - // Set OFF Cursor unvisibility - fepMan->SetInlineEditingCursorVisibilityL(EFalse); - } - break; - default: - break; - } - ret = ETrue; - } - - return ret; - } - - -TBool TAknFepUiInputStateEntryHiraganaKanji::HandleNumericShortKeyL(TInt aKey) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - TBool ret = EFalse; - - if (aKey == EStdKeySpace - && text.Length() > 0) - { - ret = HandleNaviKeyL(aKey, EShortKeyPress); - } - else - { - ret = TAknFepUiInputStateEntryJapaneseMultitap::HandleNumericShortKeyL(aKey); - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryHiraganaKanji::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateEntryHiraganaKanji:: - HandleCommandL(TInt aCommandId) - { - switch (aCommandId) - { - case EAknFepSoftkeyOtherModes: - { - // Change the status to Retroactive input - iOwner->ChangeState(ECandidateRetroActive); - } - break; - case EAknFepSoftkeyPredictiveOn: - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - - // Update of inline editing characters - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - TPtrC text2 = data->ConvertingString(); - if (text.Length() >0) - { - iOwner->ChangeState(EMultiCompletion); - fepMan->CommitInlineEditL(text, text.Length()); - if (fepMan->EditorHasFreeSpace()) - { - iOwner->ChangeState(ENextWord); - } - else - { - CloseUI(); - iOwner->ChangeState(EInitial); - } - } - else if (text2.Length() > 0) - { - // Change to ConversionState - iOwner->ChangeState(EPredictiveInput); - fepMan->UpdateInlineEditL(text2, text2.Length()); - } - } - break; - default: - TAknFepUiInputStateEntryJapaneseMultitap::HandleCommandL(aCommandId); - break; - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryIndicPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryIndicPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateEntryIndicPredictive Method. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryIndicPredictive.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepPanic.h" -#include "AknFepManagerUIInterface.h" -#include -#include -#include - -// ----------------------------------------------------------------------------- -// TAknFepInputStateEntryIndicPredictive::TAknFepInputStateEntryIndicPredictive - -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- - -TAknFepInputStateEntryIndicPredictive:: -TAknFepInputStateEntryIndicPredictive( MAknFepUIManagerStateInterface* aOwner, - TLanguage /*aLanguage*/ ) - :TAknFepInputStateEntryWesternPredictive( aOwner ) - { - } - -void TAknFepInputStateEntryIndicPredictive::LastWordInSelectionList() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - if (iMatchState != EWordMatchAfterLast) - { - TRAP_IGNORE(fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_PREVIOUS)); - iMatchState = EWordMatchLast; - } - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryJapaneseMultitap.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryJapaneseMultitap.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,333 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateEntryJapaneseMultitap methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateEntryJapaneseMultitap.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepGlobalEnums.h" -#include "AknFepManager.h" -#include "AknFepUICtrlCandidatePaneInterface.h" // MAknFepUICtrlCandidatePaneInterface - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface - -// CONSTANTS -const TText KAknFEPLineFeedSymbol = 0x21B2; -const TText KAknFEPMirroredLineFeedSymbol = 0x21B3; - -/** - * TAknFepUiInputStateEntryJapaneseMultitap class. - * - */ - -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap:: -// TAknFepUiInputStateEntryJapaneseMultitap -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateEntryJapaneseMultitap:: - TAknFepUiInputStateEntryJapaneseMultitap( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateJapaneseBase(aOwner, aUIContainer) - { - iState = EEntry; - } - -/** - * MPtiObserver interface. - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::KeyTimerExpired -// Call this function when Multitap timer of PtiEngine was time-out -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateEntryJapaneseMultitap::KeyTimerExpired() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - - if (text.Length() > 0) - { - iOwner->ChangeState(EMultiCompletion); - fepMan->ClearFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - TRAP_IGNORE(fepMan->CommitInlineEditL()); - iOwner->ChangeState(EInitial); - } - else - { - TPtrC text2 = data->ConvertingString(); - TInt cursorpos = data->CursorPosition(); - if (text2.Length() > 0) - { - if (text2[0] == KAknFEPLineFeedSymbol - || text2[0] == KAknFEPMirroredLineFeedSymbol) - { - iOwner->ChangeState(EInitial); - } - else - { - // Set on cursor visibility in inline editing - TRAPD(err, fepMan->SetInlineEditingCursorVisibilityL(ETrue)); - if (err == KErrNone) - { - TRAP(err, fepMan->UpdateInlineEditL(text2, cursorpos)); - } - if (err != KErrNone) - { - TRAP_IGNORE(iOwner->FepMan()->SimulateKeyEventL(EKeyEscape, ETrue)); - } - } - } - } - } - -/** - * TAknFepUiInputStateEntryJapaneseMultitap class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateEntryJapaneseMultitap::InitializeStateL() - { - iOwner->SetInlineEditUnderlineVisibility(EFalse); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::HandleNumericShortKeyL -// HHandling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::HandleNumericShortKeyL(TInt aKey) - { - TBool cursorVisibility = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - if (aKey == EPtiKeyStar) - { - cursorVisibility = ETrue; - } - fepMan->SetInlineEditingCursorVisibilityL(cursorVisibility); - ptiEngine->AppendKeyPress((TPtiKey)aKey); - ret = UpdateInlineEditingCharacterL(); - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::HandleNumericLongKeyL -// Handling Numeric long keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::HandleNumericLongKeyL(TInt /*aKey*/) - { - iOwner->ChangeState(EMultiCompletion); - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::HandleNaviKeyL -// Handling navigate keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::HandleNaviKeyL(TInt /*aKey*/, - TKeyPressLength /*aLength*/) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - - ptiEngine->HandleCommandL(EPtiCommandUserActionComplete); - ret = UpdateInlineEditingCharacterL(); - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::HandleAuxKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - - switch(aKey) - { - case EKeyBackspace: - case EStdKeyBackspace: /* 0x01 */ - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->SetInlineEditingCursorVisibilityL(ETrue); - ptiEngine->DeleteKeyPress(); - ret = UpdateInlineEditingCharacterL(); - } - break; - case EKeyOK: - case EStdKeyDevice3: /* 0xA7 */ - case EStdKeyEnter: /* 0x03 */ - case EStdKeyNkpEnter: /* 0x88 */ - { - iOwner->ChangeState(EMultiCompletion); - } - break; - default: - break; - } - - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::UpdateInlineEditingCharacterL -// Update inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::UpdateInlineEditingCharacterL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - - if (!CommitInlineEditingCharacterL()) - { - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - TInt cursorpos = data->CursorPosition(); - if (text.Length() > 0) - { - if (State() == EConversion - || State() == ECandidate - || State() == ECandidateRetroActive - || State() == EPredictiveInput) - { - if (data->NumberOfPhrase() > 0) - { - TPtrC8 clauseChar = data->LengthOfPhrase(); - cursorpos = clauseChar[0]; - } - } - fepMan->UpdateInlineEditL(text, cursorpos); - } - else - { - __ASSERT_DEBUG(text.Length() == 0, - RDebug::Print( - _L("In TAknFepUiInputStateEntryJapaneseMultitap::UpdateInlineEditingCharacterL,\nINVALID DATA: ConvertingString. Roll back to initial State!"))); - ptiEngine->ClearCurrentWord(); - fepMan->CancelInlineEdit(); - iOwner->ChangeState(EInitial); - } - ret = ETrue; - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryJapaneseMultitap::CommitInlineEditingCharacterL -// Commit inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryJapaneseMultitap::CommitInlineEditingCharacterL() - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - if (text.Length() > 0) - { - iOwner->ChangeState(EMultiCompletion); - ret = ETrue; - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStatePredictiveInputJapanese::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateEntryJapaneseMultitap:: - HandleCommandL(TInt aCommandId) - { - if(aCommandId == EAknFepSoftkeyCommit) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC textConv = data->ConvertingString(); - TPtrC textComp = data->CompletedString(); - MAknFepUICtrlCandidatePaneInterface* candidatePane = - UIContainer()->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapaneseCandidatePane); - TInt curr = candidatePane->CurrentItemIndexOfCandidate(); - if (curr > -1) - { - TInt old = 0; - ptiEngine->HandleCommandL(EPtiCommandUserActionGetCurrentIndexOfCandidates, &old); - while(curr > old) - { - ++old; - ptiEngine->HandleCommandL(EPtiCommandUserActionConvert); - } - while(curr < old) - { - --old; - ptiEngine->HandleCommandL(EPtiCommandUserActionPrevious); - } - } - candidatePane->HideWindow(); - if (textConv.Length() > 0 || textComp.Length() > 0) - { - iOwner->ChangeState(EMultiCompletion); - } - else - { - iOwner->ChangeState(EInitial); - } - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryKatakana.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryKatakana.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateEntryKatakana methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateEntryKatakana.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepGlobalEnums.h" - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface -#include - -// CONSTANTS - -/** - * TAknFepUiInputStateEntryKatakana class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryKatakana:: -// TAknFepUiInputStateEntryKatakana -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateEntryKatakana::TAknFepUiInputStateEntryKatakana( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateEntryJapaneseMultitap(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryKatakana::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateEntryKatakana::InitializeStateL() - { - // In case of Katakana and Hiragana input, underline and highlight aren't always shown. - iOwner->SetInlineEditUnderlineVisibility(EFalse); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryKatakana::HandleNumericShortKeyL -// Handling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryKatakana::HandleNumericShortKeyL(TInt aKey) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool ret = EFalse; - if (aKey == EPtiKeyStar) - { - iOwner->FepMan()->SetInlineEditingCursorVisibilityL(ETrue); - } - ptiEngine->AppendKeyPress((TPtiKey)aKey); - - if ( iOwner->IsQwerty() ) - { - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - // In case of Katakana and Hiragana transitory input, - // underline and highlight are shown. - iOwner->SetInlineEditUnderlineVisibility( - (text.Length() > 0)? EFalse : ETrue); - } - else - { - // In case of Katakana and Hiragana input, underline and highlight aren't always shown . - iOwner->SetInlineEditUnderlineVisibility( EFalse ); - } - - ret = UpdateInlineEditingCharacterL(); - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryLatinJapanese.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryLatinJapanese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,254 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateEntryLatinJapanese methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateEntryLatinJapanese.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepCaseManager.h" // CAknFepCaseManager -#include "AknFepManager.h" -#include "AknFepGlobalEnums.h" - -#include -#include // MPtiEngineCompositionDataInterface - -// CONSTANTS - -/** - * TAknFepUiInputStateEntryLatinJapanese class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryLatinJapanese:: -// TAknFepUiInputStateEntryLatinJapanese -// Default constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateEntryLatinJapanese::TAknFepUiInputStateEntryLatinJapanese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateEntryJapaneseMultitap(aOwner, aUIContainer) - { - } - -/** - * MPtiObserver interface. - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryLatinJapanese::KeyTimerExpired -// Call this function when Multitap timer of PtiEngine was time-out -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateEntryLatinJapanese::KeyTimerExpired() - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - if (text.Length() > 0) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - if (fepMan->IsSupportsSecretText() - && fepMan->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - TRAP_IGNORE(fepMan->CommitInlineEditL()); - // Update case without Qwerty - if (!iOwner->IsQwerty()) - { - UpdateCase(text); - } - } - else - { - iOwner->ChangeState(EMultiCompletion); - // Update case without Qwerty - if (!iOwner->IsQwerty()) - { - UpdateCase(text); - } - - // Commit a character - TRAP_IGNORE(iOwner->FepMan()->CommitInlineEditL(text, text.Length())); - - // Update case with Qwerty - if (iOwner->IsQwerty()) - { - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - caseMan->UpdateCase(ENullNaviEvent); - } - } - } - iData = 0; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - } - -/** -* TAknFepUiInputStateEntryLatinJapanese class. -* -*/ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateEntryLatinJapanese::HandleNumericShortKeyL -// Handling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateEntryLatinJapanese::HandleNumericShortKeyL(TInt aKey) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool ret = EFalse; - - if (iData && iData != aKey) - { - if (!iOwner->IsQwerty() - && iOwner->FepMan()->IsSupportsSecretText() - && fepMan->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - if (text.Length() > 0) - { - fepMan->CommitInlineEditL(); - if (!iOwner->IsQwerty()) - { - UpdateCase(text); - } - } - ptiEngine->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - iData = 0; - ret = EFalse; - } - else - { - ptiEngine->HandleCommandL(EPtiCommandUserActionComplete); - iOwner->ChangeState(EMultiCompletion); - } - } - else - { - iData = aKey; - - const MPtiEngineCompositionDataInterface* previousData = ptiEngine->CompositionData(); - TChar previousChar = 0; - TPtrC previousText(previousData->ConvertingString()); - if (previousText.Length() > 0) - { - previousChar = previousText[0]; - } - - // Append a key to PtiEngine - ptiEngine->AppendKeyPress((TPtiKey)aKey); - - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text(data->ConvertingString()); - if (text.Length() > 0) - { - TChar ch = text[0]; - TBool validNewCandidate = fepMan->CharIsValidInEditor(ch); - // Check if the character is valid for the editor. - if ( !validNewCandidate ) - { - TChar firstNewCandidate = ch; - TBool goneThroughAllCandidates(EFalse); - TPtrC8 sequence = ptiEngine->CurrentInputSequence(); - - if ( sequence.Length() ) - { - TPtiKey key = (TPtiKey)sequence[0]; - - // Go through candidates and check if valid characters are found. - do { - TPtrC text = ptiEngine->AppendKeyPress(key); - ch = text[0]; - goneThroughAllCandidates = (ch == firstNewCandidate); - validNewCandidate = fepMan->CharIsValidInEditor(ch); - } - while (!validNewCandidate && !goneThroughAllCandidates); - } - - if (!validNewCandidate) - { - // No valid characters at all. - ptiEngine->DeleteKeyPress(); - iOwner->ChangeState(EMultiCompletion); - ptiEngine->HandleCommandL(EPtiCommandUserActionComplete); - iOwner->FepMan()->CommitInlineEditL(); - ptiEngine->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - return ETrue; - } - else if (ch == previousChar) - { - // The valid key loop count is 1. - // The current characters are committed, and send the same key again. - iOwner->ChangeState(EMultiCompletion); - ptiEngine->HandleCommandL(EPtiCommandUserActionComplete); - iOwner->FepMan()->CommitInlineEditL(); - ptiEngine->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - iOwner->FepMan()->SimulateKeyEventL(aKey, ETrue); - return ETrue; - } - } - } - - ret = UpdateInlineEditingCharacterL(); - // Qwerty input without Secret input mode is continuing to Comleteion. - if (ret && iOwner->IsQwerty()) - { - if (iOwner->FepMan()->IsSupportsSecretText() - || iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagPassNextKey)) - { - iOwner->ChangeState(EMultiCompletion); - ptiEngine->HandleCommandL(EPtiCommandUserActionComplete); - iOwner->FepMan()->CommitInlineEditL(); - ptiEngine->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - ret = ETrue; - } - else - { - // Qwerty need to change status - ptiEngine->HandleCommandL(EPtiCommandUserActionComplete); - iOwner->ChangeState(EMultiCompletion); - ret = EFalse; - } - } - } - return ret; - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryMiniQwertyZhuyinPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryMiniQwertyZhuyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1010 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the CAknFepUIInputStateMiniQwertyZhuyinPhrase methods. - * -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryMiniQwertyZhuyinPhrase.h" -#include "AknFepUIManagerStateInterface.h" - -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" //FepMan flag -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" //phrase creation -#include "aknfepinputstateminiqwertyzhuyinkeymap.h" //phrase creation -#include -#include -#include -#include //keys -#include - -const TInt KInputPaneLength = 32; -_LIT(KSep, "'"); -_LIT(KReplace, ""); -_LIT(KLeftBracket, "("); -_LIT(KRightBracket, ")"); -const TText KPinyinTone4Valid = 0x02D9; -const TText KPinyinTone4Invalid = 0x0020; -const TInt KMaxKeystrokeCount = 31; -const TInt KKeystrokeMaxLength =5; -const TInt KKeyBufferMaxLength =150; - -const TUint16 KSai = 0x311D; -const TUint16 KToneMark1 = 0x0020; -const TUint16 KToneMark2 = 0x02CA; -const TUint16 KToneMark3 = 0x02c7; -const TUint16 KToneMark4 = 0x02CB; -const TUint16 KToneMark5 = 0x02D9; - -struct TToneZhuYinMap - { - TUint16 iValue; - TInt iInputTone; - }; -const TToneZhuYinMap ZhuyinToneMap[] = - { - { - KToneMark1, 1 - }, - { - KToneMark2, 2 - }, - { - KToneMark3, 3 - }, - { - KToneMark4, 4 - }, - { - KToneMark5, 5 - } - }; - -const TInt KMaxPhraseCount = 150;//This should be the same as that in pticpicore. - -_LIT( KZhuyinNote,"\x9020\x65B0\x8BCD" ); - -TAknFepInputStateEntryMiniQwertyZhuyinPhrase::TAknFepInputStateEntryMiniQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ) : - TAknFepInputStateEntryQwertyBaseChinesePhrase( aOwner, aUIContainer) - { - iState = EEntry; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->FocusCandidatePane( EFalse ); - uiContainer->CandidatePane()->ShowCandidateOrdinals( EFalse ); - uiContainer->SetLayout( MAknFepUICtrlContainerChinese::ELayoutInput ); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->ShowVerticalScrollArrows( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->InputPane()->SetOverrideFontId( 0 ); - uiContainer->SetFepMan( iOwner->FepMan() ); - - //For fix bug that the text in input pane could not be shown totally. - if ( iOwner->FepMan()->KeyboardLayout() == EPtiKeyboardQwerty4x10 || - iOwner->FepMan()->KeyboardLayout() == EPtiKeyboardQwerty3x11) - { - uiContainer->PinyinPopupWindow()->SetInputLayoutMiniQwertyZhuyin(); - } - - iOwner->PtiEngine()->SetCandidatePageLength( KMaxPhraseCount ); - // in the case that we are coming back to the input pane from the candidate pane, - // we need to ensure that the current selection is selected correctly - ImplicitlyUpdateSelection(); - // however we also need to clear the deliberate selection, in case we are not - // coming back to the input pane from the candidate pane - ClearDeliberateSelection(); - UpdateIndicator(); - - iOwner->PtiEngine()->SetInputMode( EPtiEngineZhuyinPhraseQwerty ); - iOwner->PtiEngine()->SetCase( EPtiCaseLower ); - } - -TBool TAknFepInputStateEntryMiniQwertyZhuyinPhrase::HandleKeyL( TInt aKey, - TKeyPressLength aLength ) - { - if ( iOwner->FepMan()->KeyboardLayout() == EPtiKeyboardQwerty4x10 || - iOwner->FepMan()->KeyboardLayout() == EPtiKeyboardQwerty3x11) - { - return HandleKeyForMiniQwertyL( aKey, aLength ); - } - else - { - return HandleKeyForHalfAndCustomQwertyL( aKey, aLength ); - } - } - -void TAknFepInputStateEntryMiniQwertyZhuyinPhrase::KeyTimerExpired() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - - // set container's position - TPoint baseLine = TPoint( 0, 0 ); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)) - ; - if ( ret == KErrNone ) - { - uiContainer->SetContainerPosition( baseLine, height ); - } - - TInt pinyinCountWithoutToneMarks = ptiengine->PhoneticSpellingCount(); - if ( editPane->GetEffictiveLength() < keystroke->Count() - || pinyinCountWithoutToneMarks == popup->CurrentSelection() ) - { - TBuf keystrokeBuf; - for (TInt i = 0; i < keystroke->Count(); i++ ) - { - keystrokeBuf.Append( keystroke->MdcaPoint( i ) ); - } - inputPane->SetText( keystrokeBuf ); - } - else - { - TPtrC ptr = ptiengine->GetPhoneticSpelling( 1 ); - TBuf currentText; - inputPane->GetText( currentText ); - if ( ptr.Length() < currentText.Length() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - inputPane->SetText( ptr ); - } - } - -void TAknFepInputStateEntryMiniQwertyZhuyinPhrase::DeliberatelyUpdateSelection() - { - TPtr deliberateSelection = iOwner->GetLatestDeliberateSelection(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - - TInt selected = popup->CurrentSelection(); - ptiengine->EnableToneMarks( EFalse ); - TPtrC spelling = ptiengine->GetPhoneticSpelling( selected + 1 ); // our index is zero based, engine index is one based - deliberateSelection - = spelling.Left( MAknFepUICtrlInputPane::EMaxInputCharsPinyinPopupNotIncludingToneMark ); - ptiengine->EnableToneMarks( ETrue ); - UIContainer()->PinyinPopupWindow()->SetFlag( MAknFepUICtrlPinyinPopup::ESpellingNavigation ); - RefreshUI( popup->CurrentVisibleSelection() ); - } - -void TAknFepInputStateEntryMiniQwertyZhuyinPhrase::ImplicitlyUpdateSelection() - { - TPtr oldDeliberateSelection = iOwner->GetLatestDeliberateSelection(); - TInt oldDeliberateSelectionLength = oldDeliberateSelection.Length(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - // previously selected is compared in turn to each of the new candidates - ptiengine->EnableToneMarks( EFalse ); - TInt pinyinCount = ptiengine->PhoneticSpellingCount(); - TInt newSelection = 0; - for (TInt i = 0; i < pinyinCount; i++ ) - { - TPtrC spelling = ptiengine->GetPhoneticSpelling( i + 1 ); // our index is zero based, engine index is one based - TInt spellingLength = spelling.Length(); - - // figure out how many characters we are comparing, this depends on the - // direction of the edit - TInt compareLength = oldDeliberateSelectionLength <= spellingLength - ? oldDeliberateSelectionLength : spellingLength; - - if ( oldDeliberateSelection.Left( compareLength ) - == spelling.Left( compareLength ) ) - { - // as soon as a substring match is found, the - // highlight position is set to that candidate in the new list. - // note that in the case of the first character entered, the - // oldBuf will be empty so it will always match... which is - // fine as we want to select the top one anyway, so we will - // quit the loop early. - newSelection = i; - break; - } - } - ptiengine->EnableToneMarks( ETrue ); - UIContainer()->PinyinPopupWindow()->SetFlag( MAknFepUICtrlPinyinPopup::ESpellingChanged ); - RefreshUI( newSelection ); - } - -void TAknFepInputStateEntryMiniQwertyZhuyinPhrase::ClearDeliberateSelection() - { - // we must have just deleted the last character, - // or we are starting a new zhuyin session, so wipe the last deliberate selection - CDesCArrayFlat* keystroke = UIContainer()->EditPaneWindow()->KeystrokeArray(); - if ( keystroke->Count() == 0 ) - { - TPtr oldDeliberateSelection = iOwner->GetLatestDeliberateSelection(); - oldDeliberateSelection = KNullDesC; - } - } - -void TAknFepInputStateEntryMiniQwertyZhuyinPhrase::RefreshUI( TInt aSelection ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - TBuf keystrokeBuf; - - // get cursor position - TPoint baseLine = TPoint( 0, 0 ); - TInt height = 0; - TInt ascent = 0; - - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if ( ret == KErrNone ) - { - uiContainer->SetContainerPosition( baseLine, height ); - } - - TText toneMark; - TBool toneMarkEntered = ptiengine->ToneMark( toneMark ); - TBuf<1> validToneMarkBuf; - if ( toneMarkEntered ) - { - // override specific invalid tonemark character only, the others are the same character - // when both valid and invalid - if ( toneMark == KPinyinTone4Invalid ) - toneMark = KPinyinTone4Valid; - validToneMarkBuf.Append( toneMark ); - } - - // to start with, disable the tone marks so we can get the list of all zhuyin matches - // later we will figure out which ones are invalid - ptiengine->EnableToneMarks( EFalse ); - TInt pinyinCountWithoutToneMarks = ptiengine->PhoneticSpellingCount(); - - for (TInt i = 0; i < keystroke->Count(); i++ ) - { - keystrokeBuf.Append( keystroke->MdcaPoint( i ) ); - } - - if ( pinyinCountWithoutToneMarks > 0 ) - { - if ( popup->IsFlagSet( MAknFepUICtrlPinyinPopup::ESpellingChanged ) ) - { - if ( editPane->GetEffictiveLength() < keystroke->Count() ) - { - spelling->Reset(); - spelling->Compress(); - } - else - { - TRAPD(ignore, ptiengine->GetPhoneticSpellingsL(*spelling)); - if ( ignore != KErrNone ) - { - return; - } - } - - TRAPD( retOptimize, spelling->AppendL( keystrokeBuf ) ); - if ( KErrNone != retOptimize ) - { - return; - } - - popup->SplitPhraseSpellingIntoPages(); - } - - // set display page for delibrate selection - popup->SetDisplayPage( aSelection ); - popup->SetPhraseItemTexts(); - - // fill in input pane although it's invisible - if ( editPane->GetEffictiveLength() < keystroke->Count() - || pinyinCountWithoutToneMarks == popup->CurrentSelection() ) - { - inputPane->SetText( keystrokeBuf ); - } - else - { - inputPane->SetText( ptiengine->GetPhoneticSpelling( popup->CurrentSelection() - + 1 ) ); - } - popup->PopupSizeChanged(); // phrase input - } - // turn tone marks back on so that we know where we are. - ptiengine->EnableToneMarks( ETrue ); - - // this is where we start to figure out whether the tonemarks are valid, - // whether the selected tonemark is valid, and what is the index of the - // selected candidate in the list of candidates with tonemarks... - TBool selectionToneMarkValid = EFalse; - TInt selectionIndexAdjustedForToneMarkValidity = - popup->CurrentSelection(); - - // we only need to deal with tone marks if there is one - if ( toneMarkEntered ) - { - if ( pinyinCountWithoutToneMarks > 0 ) - { - for (TInt i = popup->CurrentSelection() + 1; i < pinyinCountWithoutToneMarks; i++ ) - { - TBool valid = EFalse; - - TBuf - nextCandidateWithoutToneMark; - nextCandidateWithoutToneMark.Copy( ptiengine->GetPhoneticSpelling(i + 1).Left( MAknFepUICtrlInputPane::EMaxInputCharsPinyinPopupNotIncludingToneMark ) ); - - ptiengine->EnableToneMarks( EFalse ); - ptiengine->SelectPhoneticSpelling( i + 1 ); - - valid = ptiengine->IsToneMarkValidForSpelling(); - if ( valid ) - { - ptiengine->EnableToneMarks( ETrue ); - TInt pinyinCountWithToneMarks = - ptiengine->PhoneticSpellingCount(); - - for (TInt j = popup->CurrentSelection() + 1; j < pinyinCountWithToneMarks; j++ ) - { - // use j here not i as we are looking at the list with tonemarks - TPtrC nextCandidateWithToneMark = - ptiengine->GetPhoneticSpelling( j + 1 ); - if ( nextCandidateWithToneMark - == nextCandidateWithoutToneMark ) - { - if ( i == aSelection ) - { - selectionToneMarkValid = ETrue; - - // fill in input pane even if it can't be seen, for when we have to hide popup window - inputPane->SetText( nextCandidateWithoutToneMark ); - } - break; - } - } - } - } - } - } - ptiengine->EnableToneMarks( EFalse ); - ptiengine->SelectPhoneticSpelling( popup->CurrentSelection() + 1 ); - // next two lines are for tonemark validity - ptiengine->EnableToneMarks( selectionToneMarkValid ); - ptiengine->SelectPhoneticSpelling( selectionIndexAdjustedForToneMarkValidity - + 1 ); // our index is zero based, engine index is one based - - // update the candidate pane. - if ( popup->IsFlagSet( MAknFepUICtrlPinyinPopup::ESpellingChanged ) - || popup->IsFlagSet( MAknFepUICtrlPinyinPopup::ESpellingNavigation ) ) - { - CDesCArrayFlat* phraseCandidates = uiContainer->CandidatePane()->CandidateArray(); - if ( editPane->GetEffictiveLength() == keystroke->Count() - && pinyinCountWithoutToneMarks > popup->CurrentSelection() ) - { - TRAPD(ignore, ptiengine->GetChinesePhraseCandidatesL(*phraseCandidates)); - if ( ignore != KErrNone ) - { - return; - } - } - else if ( keystroke->Count() != 0 ) - { - phraseCandidates->Reset(); - phraseCandidates->Compress(); - TRAPD( retAddZhuyinNote, phraseCandidates->AppendL( KZhuyinNote ) ); - if ( KErrNone != retAddZhuyinNote ) - { - return; - } - } - - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - popup->ClearFlag( MAknFepUICtrlPinyinPopup::ESpellingChanged - | MAknFepUICtrlPinyinPopup::ESpellingNavigation ); - } - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - // need to enable the pinyin popup after the container so that it is raised to the front - popup->Enable( pinyinCountWithoutToneMarks > 0 ); - UpdateIndicator(); - } - -void TAknFepInputStateEntryMiniQwertyZhuyinPhrase::InitializeStateL( void ) - { - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL ); - } - -void TAknFepInputStateEntryMiniQwertyZhuyinPhrase::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - TInt pinyinCountWithoutToneMarks = ptiengine->PhoneticSpellingCount(); - - if (candidatePane->IsFirstPage()) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage()) - { - uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows(ETrue); - } - - if ( editPane->GetEffictiveLength() < keystroke->Count() || - pinyinCountWithoutToneMarks == popup->CurrentSelection() ) - { - uiContainer->ShowVerticalScrollArrows(EFalse); - } - else - { - uiContainer->ShowVerticalScrollArrows(ETrue); - } - } - -TBool TAknFepInputStateEntryMiniQwertyZhuyinPhrase::CheckToneMarkBorderUpon() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - TPtrC ptr = keystroke->MdcaPoint( keystroke->Count() - 1 ); - TInt num = sizeof(ZhuyinToneMap )/( sizeof(ZhuyinToneMap[0])); - for (TInt i = 0; i< num; i++ ) - { - //if ( ptr.Compare( ZhuyinToneMap[i].iValue) == 0 ) - if ( ptr[0] == ZhuyinToneMap[i].iValue ) - { - return ETrue; - } - } - - return EFalse; - } - -TBool TAknFepInputStateEntryMiniQwertyZhuyinPhrase::HandleKeyForMiniQwertyL( TInt aKey, - TKeyPressLength aLength ) - { - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - RArray* keycodeArray = editPane->KeycodeArray(); - TInt keystrokeLength = keystroke->Count(); - - TBool ret = ETrue; - - if ( (aKey == EPtiKeyQwertyE || aKey == EPtiKeyQwertyR || - aKey == EPtiKeyQwertyY || aKey == EPtiKeyQwertyU || aKey == EStdKeySpace) - && (aLength == EShortKeyPress) ) - { - if ( keystrokeLength == 0 ) - { - iOwner->FepMan()->TryCloseUiL(); - CommitToneMarkL( aKey ); - return ETrue; - } - - if ( keystrokeLength < KMaxKeystrokeCount && - !CheckToneMarkBorderUpon() ) - { - if ( editPane->GetEffictiveLength() == keystrokeLength ) - { - TBool isToneValid = ptiengine->SetToneMark(aKey); - TInt stringAfterLength = - ptiengine->GetPhoneticSpelling(1).Length(); - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - TInt spellSepLen = 0; - TInt keySepLen = 0; - for (TInt i = 0; i < stringAfterLength; i++) - { - if (ptr.Mid(i, 1).Compare(KSep) == 0) - { - spellSepLen++; - } - } - for ( TInt j = 0; j < keystrokeLength; j++ ) - { - if ( keystroke->MdcaPoint( j ).Compare(KSep) == 0 ) - { - keySepLen++; - } - } - - // +1 is for we had add tone mark to engine, perhaps it is legal, but - // We had not add it to keystroke array - if ((stringAfterLength - spellSepLen) == (keystrokeLength - - keySepLen + 1) && isToneValid) - { - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - - UIContainer()->ShowHorizontalScrollArrows(EFalse); - UIContainer()->ShowVerticalScrollArrows(ETrue); - SetInputPaneToneMark(); - editPane->AddEffictiveLength(); - } - } - - TBuf buf; - TAknFepInputStateMiniQwertyZhuyinKeyMap::GetKeyStroke( - ptiengine, aKey, buf ); - keystroke->AppendL( buf ); - keycodeArray->AppendL( aKey ); - ImplicitlyUpdateSelection(); - } - else - { - UpdateIndicator(); - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - - } - else if ( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || CAknFepFnKeyManager::EFnKeyLock - == iOwner->FepMan()->FnKeyState() || CAknFepFnKeyManager::EFnKeyDown - == iOwner->FepMan()->FnKeyState() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed ) - || iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) - || ((aKey == EStdKeyLeftFunc) && aLength == EShortKeyPress) ) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( aKey == EKeyLeftShift || aKey ==EKeyLeftCtrl || aKey - == EKeyRightCtrl || aKey ==EKeyRightFunc ) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( aKey == EStdKeyBackspace ) - { - TBool state = ETrue; - if ( editPane->IsChangeState() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - if ( state ) - { - if ( editPane->GetEffictiveLength() == keystrokeLength ) - { - if ( iOwner->PtiEngine()->DeleteKeyPress().Length() && keystrokeLength != 1 ) - { - editPane->DecEffictiveLength(); - keystroke->Delete( keystrokeLength - 1 ); - keycodeArray->Remove( keystrokeLength - 1 ); - inputPane->SetFlag( MAknFepUICtrlInputPane::EPhoneticChanged ); - ImplicitlyUpdateSelection(); - } - else - { - ClearDeliberateSelection(); - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - if ( aLength == ELongKeyPress ) - { - iOwner->FepMan()->SetLongClearAfterCloseUI( ETrue ); - } - } - } - else - { - keystroke->Delete( keystrokeLength - 1 ); - keycodeArray->Remove( keystrokeLength - 1 ); - ImplicitlyUpdateSelection(); - } - } - } - else if ( aKey ==EStdKeyDevice1 )//sk2 - { - iOwner->FepMan()->TryCloseUiL(); - } - else if ( aKey == EStdKeyRightArrow ) - { - if ( popup->IsEnabled() ) - { - if ( popup->SelectNextPhrase() ) - { - DeliberatelyUpdateSelection(); - UpdateIndicator(); - } - } - } - else if ( aKey == EStdKeyLeftArrow ) - { - if ( popup->IsEnabled() ) - { - if ( popup->SelectPrevPhrase() ) - { - DeliberatelyUpdateSelection(); - UpdateIndicator(); - } - } - } - else if ( aKey == EStdKeyDownArrow || aKey == EStdKeyDevice3 || aKey - == EStdKeyDevice0 )//selection key - { - editPane->SetChangeState( ETrue ); - if ( editPane->GetEffictiveLength() == keystroke->Count() - && ptiengine->PhoneticSpellingCount() - > popup->CurrentSelection() ) - { - if ( popup->IsEnabled() ) - { - popup->Enable( EFalse ); - } - iOwner->ChangeState( ECandidate ); - } - else - { - if ( keystrokeLength > 0 && keystroke->MdcaPoint( 0 )[0] == KSai ) - { - UIContainer()->SetControlInVisible( EFalse ); - iOwner->ChangeState( EMiniQwertyEdit ); - } - else - { - ClearDeliberateSelection(); - editPane->SetNeedClearDeliberateSelection( ETrue ); - iOwner->ChangeState( EZhuyinSpelling ); - } - } - } - else if ( aKey == EStdKeyEnter )//enter the characters in the entry pane into the editor - { - TInt currentIndex = uiContainer->PinyinPopupWindow()->CurrentSelection(); - TBuf currentText; - if ( currentIndex < ptiengine->PhoneticSpellingCount() ) - { - currentText.Copy(ptiengine->GetPhoneticSpelling( currentIndex + 1 )); - } - else - { - inputPane->GetText( currentText ); - } - - - while (currentText.Find( KSep )> 0 ) - { - currentText.Replace( currentText.Find( KSep ), 1, KReplace ); - } - while (currentText.Find( KLeftBracket ) >= 0 ) - { - currentText.Replace( currentText.Find( KLeftBracket ), 1, - KReplace ); - } - while (currentText.Find( KRightBracket ) >= 0 ) - { - currentText.Replace( currentText.Find( KRightBracket ), 1, - KReplace ); - } - - if ( currentText.Length() ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL( currentText ); - fepMan->CommitInlineEditL(); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - } - } - - iOwner->FepMan()->TryCloseUiL(); - - } - else if ( aLength == EShortKeyPress ) // don't want repeats on these keys - { - iOwner->FepMan()->SetCcpuFlag( CAknFepManager::ECcpuStateIgnoreStarUp ); - - if ( keystroke->Count() < KMaxKeystrokeCount - && (iOwner->IsValidChineseInputKeyQwerty( aKey ) || aKey - ==EStdKeySpace ) ) //seperator - { - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - - if ( stringBeforeLength != stringAfterLength ) - { - if ( ptiengine->GetPhoneticSpelling(1).Length() == 1 ) - { - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL ); - } - editPane->AddEffictiveLength(); - } - - TBuf buf; - TAknFepInputStateMiniQwertyZhuyinKeyMap::GetKeyStroke( - ptiengine, aKey, buf ); - keystroke->AppendL( buf ); - keycodeArray->AppendL( aKey ); - - ImplicitlyUpdateSelection(); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - return ret; - } - -TBool TAknFepInputStateEntryMiniQwertyZhuyinPhrase::HandleKeyForHalfAndCustomQwertyL( TInt aKey, - TKeyPressLength aLength ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - - TBool ret = ETrue; - - if((aKey == EPtiKeyQwertyE || - aKey == EPtiKeyQwertyR || - aKey == EPtiKeyQwertyY || - aKey == EPtiKeyQwertyU || - aKey == EStdKeySpace) && - (aLength == EShortKeyPress)) - { - if(ptiengine->SetToneMark(aKey)) - { - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(multiplePages); - SetInputPaneToneMark(); - ImplicitlyUpdateSelection(); - } - } - if(( aKey == EStdKeyLeftFunc) && aLength == EShortKeyPress) //chr key to tone mark - { - if(ptiengine->IncrementToneMark(ETrue)) - { - ImplicitlyUpdateSelection(); - } - } - else if( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || - CAknFepFnKeyManager::EFnKeyLock == iOwner->FepMan()->FnKeyState() || - CAknFepFnKeyManager::EFnKeyDown == iOwner->FepMan()->FnKeyState()) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - else if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed)|| - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if (aKey == EKeyLeftShift || aKey ==EKeyLeftCtrl || aKey == EKeyRightCtrl) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if (aKey ==EKeyRightFunc)//fn - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - else if(aKey == EStdKeyBackspace ) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - ImplicitlyUpdateSelection(); - } - else - { - ClearDeliberateSelection(); - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if(aKey ==EStdKeyDevice1)//sk2 - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(aKey == EStdKeyRightArrow) - { - if(popup->IsEnabled()) - { - if(popup->SelectNextPhrase()) - { - DeliberatelyUpdateSelection(); - } - } - } - else if(aKey == EStdKeyLeftArrow) - { - if(popup->IsEnabled()) - { - if(popup->SelectPrevPhrase()) - { - DeliberatelyUpdateSelection(); - } - } - } - else if (aKey == EStdKeyDownArrow || aKey == EStdKeyDevice3 || aKey == EStdKeyDevice0)//selection key - { - if(popup->IsEnabled()) - { - popup->Enable(EFalse); - } - iOwner->ChangeState(ECandidate); - } - else if (aKey == EStdKeyEnter)//enter the characters in the entry pane into the editor - { - TBuf currentText; - inputPane->GetText(currentText); - - while(currentText.Find(KSep)> 0) - { - currentText.Replace(currentText.Find(KSep), 1,KReplace); - } - - - if(currentText.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(currentText); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - } - } - - iOwner->FepMan()->TryCloseUiL(); - - } - else if(aLength == EShortKeyPress) // don't want repeats on these keys - { - iOwner->FepMan()->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - - if(iOwner->IsValidChineseInputKeyQwerty(aKey) || aKey ==EStdKeySpace ) //seperator - { - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - - if (stringBeforeLength != stringAfterLength) - { - if (ptiengine->GetPhoneticSpelling(1).Length() == 1) - { - //iOwner->FepMan()->UpdateCbaL(R_AVKON_SOFTKEYS_EMPTY); iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL); - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL); - } - - ImplicitlyUpdateSelection(); - } - - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - return ret; - } - -void TAknFepInputStateEntryMiniQwertyZhuyinPhrase::CommitToneMarkL( TInt aKey ) - { - TBuf<1> ToneMarkBuf; - switch ( aKey ) - { - case EPtiKeyQwertyE: - ToneMarkBuf.Append( KToneMark3 ); - break; - - case EPtiKeyQwertyR: - ToneMarkBuf.Append( KToneMark4 ); - break; - - case EPtiKeyQwertyY: - ToneMarkBuf.Append( KToneMark2 ); - break; - - case EPtiKeyQwertyU: - ToneMarkBuf.Append( KToneMark5 ); - break; - default: - break; - } - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewCharacterL(ToneMarkBuf); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryMiniQwertyZhuyinPhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryMiniQwertyZhuyinPhrase::HandleCommandL( - TInt aCommandId ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - // case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( popup->IsEnabled() ) - { - popup->Enable( EFalse ); - } - iOwner->ChangeState( ECandidate ); - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } -// End of file - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryPinyin.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryPinyin.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,452 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStatePinyin methods. -* -*/ - - - - - - - - - - - - -#include "AknFepPanic.h" -#include "AknFepUiInputStateEntryPinyin.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" -#include "AknFepManager.h" - -#include //CPtiEngine -#include //keys -#include - -const TText KPinyinTone4Valid = 0x0020; -const TText KPinyinTone4Invalid = 0x02D9; - - -TAknFepInputStateEntryPinyin::TAknFepInputStateEntryPinyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - iState = EEntry; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->FocusCandidatePane(EFalse); - uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutInput); - uiContainer->CandidatePane()->SelectFirst(); - uiContainer->ShowVerticalScrollArrows(EFalse); - uiContainer->ShowHorizontalScrollArrows(EFalse); - uiContainer->InputPane()->SetOverrideFontId(0); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - if (ptiengine->InputMode() != EPtiEnginePinyin) - { - ptiengine->SetInputMode(EPtiEnginePinyin); - } - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - ptiengine->EnableToneMarks(ETrue); - - // in the case that we are coming back to the input pane from the candidate pane, - // we need to ensure that the current selection is selected correctly - ImplicitlyUpdateSelection(); - - // however we also need to clear the deliberate selection, in case we are not - // coming back to the input pane from the candidate pane - ClearDeliberateSelection(); - } -void TAknFepInputStateEntryPinyin::HandleCommandL(TInt /*aCommandId*/) - { - DeliberatelyUpdateSelection(); - } - -TBool TAknFepInputStateEntryPinyin::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - - if(aKey == EKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - ImplicitlyUpdateSelection(); - } - else - { - ClearDeliberateSelection(); - iOwner->FepMan()->TryCloseUiL(); // no more keys, close the UI. - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if(aKey == EKeyRightArrow) - { - if(popup->IsEnabled()) - { - if(popup->SelectNextPhrase()) - { - DeliberatelyUpdateSelection(); - } - } - } - else if(aKey == EKeyLeftArrow) - { - if(popup->IsEnabled()) - { - if(popup->SelectPrevPhrase()) - { - DeliberatelyUpdateSelection(); - } - } - } - else if(aKey == EKeyOK || aKey == EKeyDownArrow) - { - if(popup->IsEnabled()) - { - popup->Enable(EFalse); - } - iOwner->ChangeState(ECandidate); - } - else if (aLength == EShortKeyPress) // don't want repeats on these keys - { - iOwner->FepMan()->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - if(iOwner->IsValidChineseInputKey(aKey)) - { - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - - if (stringBeforeLength != stringAfterLength) - { - if (ptiengine->GetPhoneticSpelling(1).Length() == 1) - { - iOwner->FepMan()->UpdateCbaL(R_AVKON_SOFTKEYS_EMPTY); - } - - ImplicitlyUpdateSelection(); - } - - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - else if(aKey == EPtiKeyStar) // we increment the tone mark. - { - if(ptiengine->IncrementToneMark(ETrue)) - { - ImplicitlyUpdateSelection(); - } - } - } - - return ETrue; - } - -void TAknFepInputStateEntryPinyin::DeliberatelyUpdateSelection() - { - TPtr deliberateSelection = iOwner->GetLatestDeliberateSelection(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - - // the selected is based on whole spelling candidates, not only current display page - TInt selected = popup->CurrentSelection(); - ptiengine->EnableToneMarks(EFalse); - TPtrC spelling = ptiengine->GetPhoneticSpelling(selected + 1); // our index is zero based, engine index is one based - deliberateSelection = spelling.Left( - MAknFepUICtrlInputPane::EMaxInputCharsPinyinPopupNotIncludingToneMark); - ptiengine->EnableToneMarks(ETrue); - - RefreshUI(selected); - } - -void TAknFepInputStateEntryPinyin::ImplicitlyUpdateSelection() - { - TPtr oldDeliberateSelection = iOwner->GetLatestDeliberateSelection(); - TInt oldDeliberateSelectionLength = oldDeliberateSelection.Length(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - ptiengine->EnableToneMarks(EFalse); - TInt pinyinCount = ptiengine->PhoneticSpellingCount(); - TInt maxUIPinyinCount = MAknFepUICtrlPinyinPopup::EMaxCandidates; - TInt visible = pinyinCount < maxUIPinyinCount ? pinyinCount : maxUIPinyinCount; - TInt newSelection = 0; - for(TInt i = 0; i < visible; i++) - { - TPtrC spelling = ptiengine->GetPhoneticSpelling(i + 1); // our index is zero based, engine index is one based - TInt spellingLength = spelling.Length(); - - // figure out how many characters we are comparing - TInt compareLength = oldDeliberateSelectionLength <= spellingLength ? - oldDeliberateSelectionLength : spellingLength; - - if(oldDeliberateSelection.Left(compareLength) == spelling.Left(compareLength)) - { - // as soon as a substring match is found, the - // highlight position is set to that candidate in the new list. - // note that in the case of the first character entered, the - // oldBuf will be empty so it will always match... which is - // fine as we want to select the top one anyway, so we will - // quit the loop early. - newSelection = i; - break; - } - } - ptiengine->EnableToneMarks(ETrue); - UIContainer()->PinyinPopupWindow()->SetFlag(MAknFepUICtrlPinyinPopup::ESpellingChanged); - RefreshUI(newSelection); - } - -void TAknFepInputStateEntryPinyin::ClearDeliberateSelection() - { - // we must have just deleted the last character, - // or we are starting a new pinyin session, so wipe the last deliberate selection - TPtr oldDeliberateSelection = iOwner->GetLatestDeliberateSelection(); - oldDeliberateSelection = KNullDesC; - } - -void TAknFepInputStateEntryPinyin::RefreshUI(TInt aSelection) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // get cursor position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - TText toneMark; - TBool toneMarkEntered = ptiengine->ToneMark(toneMark); - TText invalidToneMark = toneMark; - TBuf<1> validToneMarkBuf; - TBuf<1> invalidToneMarkBuf; - if(toneMarkEntered) - { - // override specific invalid tonemark character only, the others are the same character - // when both valid and invalid - if(toneMark == KPinyinTone4Valid) - invalidToneMark = KPinyinTone4Invalid; - validToneMarkBuf.Append(invalidToneMark); - invalidToneMarkBuf.Append(invalidToneMark); - } - - // to start with, disable the tone marks so we can get the list of all pinyin matches - // later we will figure out which are invalid - ptiengine->EnableToneMarks(EFalse); - TInt pinyinCountWithoutToneMarks = ptiengine->PhoneticSpellingCount(); - TInt maxUIPinyinCount = popup->EMaxCandidates; - TInt visible = pinyinCountWithoutToneMarks < maxUIPinyinCount ? - pinyinCountWithoutToneMarks : maxUIPinyinCount; - TInt visibleCount = 0; - TInt spellingStartIndex = 0; - TBool pinyinSpellingChanged = popup->IsFlagSet(MAknFepUICtrlPinyinPopup::ESpellingChanged); - TBool pinyinDisplayPageChanged = popup->IsFlagSet(MAknFepUICtrlPinyinPopup::EDispPageChanged); - - if(pinyinCountWithoutToneMarks > 0) - { - if(pinyinSpellingChanged) - { - visibleCount = visible; - spellingStartIndex = 0; - popup->SetVisibleCount(visible); - } - else if(pinyinDisplayPageChanged) - { - visibleCount = popup->VisibleSelectionCount(); - spellingStartIndex = popup->CurrentPageStartIndex(); - } - if(pinyinDisplayPageChanged || pinyinSpellingChanged) - { - TInt index; - for(TInt i = 0; i < visibleCount; i++) - { - if(pinyinDisplayPageChanged) - { - index = spellingStartIndex + i; - } - else - { - index = i; - } - TPtrC spelling = ptiengine->GetPhoneticSpelling(index + 1); // our index is zero based, engine index is one based - popup->SetItemText(i, spelling); - popup->SetToneMark(i, validToneMarkBuf); - if(i == aSelection) - { - // fill in input pane even if it can't be seen, for when we have to hide popup window - inputPane->SetText(spelling); - inputPane->SetToneMark(validToneMarkBuf); - } - } - popup->ClearFlag(MAknFepUICtrlPinyinPopup::EDispPageChanged); - } - if(pinyinSpellingChanged) - { - popup->SplitSpellingIntoPages(visible); - } - popup->SetDisplayPage(aSelection); - - if(pinyinSpellingChanged) - { - popup->ClearFlag(MAknFepUICtrlPinyinPopup::ESpellingChanged); - visibleCount = popup->VisibleSelectionCount(); - spellingStartIndex = popup->CurrentPageStartIndex(); - TInt index; - for(TInt i = 0; i < visibleCount; i++) - { - index = spellingStartIndex + i; - - TPtrC spelling = ptiengine->GetPhoneticSpelling(index + 1); // our index is zero based, engine index is one based - popup->SetItemText(i, spelling); - popup->SetToneMark(i, validToneMarkBuf); - if(i == aSelection) - { - // fill in input pane even if it can't be seen, for when we have to hide popup window - inputPane->SetText(spelling); - inputPane->SetToneMark(validToneMarkBuf); - } - } - } - else - { - inputPane->SetText(ptiengine->GetPhoneticSpelling(aSelection + 1)); - inputPane->SetToneMark(validToneMarkBuf); - } - popup->PopupSizeChanged(); - } - - // turn tone marks back on so that we know where we are. - ptiengine->EnableToneMarks(ETrue); - - // this is where we start to figure out whether the tonemarks are valid, - // whether the selected tonemark is valid, and what is the index of the - // selected candidate in the list of candidates with tonemarks... - TBool selectionToneMarkValid = EFalse; - TInt selectionIndexAdjustedForToneMarkValidity = aSelection; - - // we only need to deal with tone marks if there is one - if(toneMarkEntered) - { - if(pinyinCountWithoutToneMarks > 0) - { - visibleCount = visible; - - for(TInt i = 0; i < visibleCount; i++) - { - TBool valid = EFalse; - - // compare the list of answers with the ones in the UI controls... - // any missing from this list don't support the tone mark - TBuf nextCandidateWithoutToneMark; - popup->GetItemText(i, nextCandidateWithoutToneMark); - - // disable tone marks temporarily, as we need to switch the spelling, and it might have - // no valid tonemarks - ptiengine->EnableToneMarks(EFalse); - - // temporarily change the current selection in the engine, so - // that we can see what tonemarks would be valid for it - // we will set the real selection later on - - ptiengine->SelectPhoneticSpelling(spellingStartIndex + i + 1); - // if it's valid, we need to find it's position in the with tonemark list - // as the lists may be ordered differently, and different lengths - valid = ptiengine->IsToneMarkValidForSpelling(); - if(valid) - { - ptiengine->EnableToneMarks(ETrue); - TInt pinyinCountWithToneMarks = ptiengine->PhoneticSpellingCount(); - - for(TInt j = 0; j < pinyinCountWithToneMarks; j++) - { - - // use j here not i as we are looking at the list with tonemarks - TPtrC nextCandidateWithToneMark = ptiengine->GetPhoneticSpelling(j + 1); // our index is zero based, engine index is one based - - if(nextCandidateWithToneMark == nextCandidateWithoutToneMark) - { - // we are setting the tone mark for the i'th entry in the list without tonemarks - // but if its tonemark is valid, the selection in the engine will have to be relative - // to the list with tonemarks - if( i + spellingStartIndex == aSelection) - { - selectionToneMarkValid = ETrue; - selectionIndexAdjustedForToneMarkValidity = j; - - // fill in input pane even if it can't be seen, for when we have to hide popup window - inputPane->SetText(nextCandidateWithoutToneMark); - } - break; - } - } - } - popup->SetItemToneMarkValidity(i, valid); - popup->SetToneMark(i, valid ? validToneMarkBuf : invalidToneMarkBuf); - - // fill in input pane even if it can't be seen, for when we have to hide popup window - if(i == aSelection) - { - inputPane->SetToneMarkValidity(valid); - inputPane->SetToneMark(valid ? validToneMarkBuf : invalidToneMarkBuf); - } - - } - } - } - // set the spelling for the selection with no tone mark - ptiengine->EnableToneMarks(EFalse); - ptiengine->SelectPhoneticSpelling(popup->CurrentSelection() + 1); // our index is zero based, engine index is one based - - // now switch the tonemark on only if the selection has a valid tonemark - // and then set the spelling to the adjusted tonemark position - ptiengine->EnableToneMarks(selectionToneMarkValid); - ptiengine->SelectPhoneticSpelling(selectionIndexAdjustedForToneMarkValidity + 1); // our index is zero based, engine index is one based - - // update the candidate pane. - uiContainer->CandidatePane()->SetCandidateBuffer(ptiengine->CandidatePage()); - uiContainer->Enable(ETrue); - - // need to enable the pinyin popup after the container so that it is raised to the front - popup->Enable(pinyinCountWithoutToneMarks > 0); - } - -void TAknFepInputStateEntryPinyin::InitializeStateL(void) - { - iOwner->FepMan()->UpdateCbaL(R_AVKON_SOFTKEYS_EMPTY); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryPinyinPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryPinyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1463 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStatePinyinPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepPanic.h" -#include "AknFepUiInputStateEntryPinyinPhrase.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "AknFepManager.h" - -#include //CPtiEngine -#include //keys -#include -#include -#include - -const TText KPinyinTone0Valid = 0x02C9; -const TText KPinyinTone1Valid = 0x02CA; -const TText KPinyinTone2Valid = 0x02C7; -const TText KPinyinTone3Valid = 0x02CB; -const TText KPinyinTone4Valid = 0x02D9; -const TText KPinyinTone4Invalid = 0x0020; - -const TInt KMaxPhraseCount = 100; -const TInt KMaxKeystrokeCount = 100; -const TInt KMaxShowKeystrokeCount = 31; - -const TInt KMaxPinyinLength = 60; - -const TInt KMaxStarCount = 5; - -const TInt KKey0Code = 48; -const TInt KKey1Code = 49; -const TInt KKey2Code = 50; -const TInt KKey3Code = 51; -const TInt KKey4Code = 52; -const TInt KKey5Code = 53; -const TInt KKey6Code = 54; -const TInt KKey7Code = 55; -const TInt KKey8Code = 56; -const TInt KKey9Code = 57; - -_LIT( KPinyinListSeparator, "'" ); -_LIT( KPinyinStar, "*" ); -_LIT( KPinyinNote,"\x9020\x65B0\x8BCD" ); -_LIT( KPinyinManualSeparator, "\x002E"); - -TAknFepInputStateEntryPinyinPhrase::TAknFepInputStateEntryPinyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - iState = EEntry; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->FocusCandidatePane(EFalse); - uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutInput); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->ShowVerticalScrollArrows(ETrue); - uiContainer->ShowHorizontalScrollArrows(EFalse); - uiContainer->InputPane()->SetOverrideFontId(0); - - iOwner->PtiEngine()->SetInputMode(EPtiEnginePinyinByPhrase); - iOwner->PtiEngine()->SetCandidatePageLength(KMaxPhraseCount); - uiContainer->PinyinPopupWindow()->SetTonemarkState( ETrue ); - // set the state is in input state, - // so that it could handle EKeyCBA1 - iOwner->FepMan()->EntryPhrase( ETrue ); - uiContainer->SetFepMan( iOwner->FepMan() ); - - ClearKeystrokeBuf(); - // in the case that we are coming back to the input pane from the candidate pane, - // we need to ensure that the current selection is selected correctly - ImplicitlyUpdateSelection(); - // however we also need to clear the deliberate selection, in case we are not - // coming back to the input pane from the candidate pane - if ( uiContainer->PinyinPopupWindow()->GetFromCandidateChangeStateFlag() ) - { - uiContainer->PinyinPopupWindow()->SetFromCandidateChangeStateFlag( EFalse ); - } - else - { - ClearDeliberateSelection(); - } - - UpdateIndicator(); - TRAP_IGNORE( ChangeCbaL() ); - } - -void TAknFepInputStateEntryPinyinPhrase::HandleCommandL( TInt aCommandId) - { - CPtiEngine* ptiengine = iOwner->PtiEngine( ); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer( ); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow( ); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArray( ); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray( ); - CDesCArrayFlat* showKeystrokeArray = popup->ShowKeystrokeArray( ); - TInt currentSelect = popup->CurrentSelection( ); - TInt inEffectSpellingCount = ptiengine->PhoneticSpellingCount( ); - TBuf keystrokeBuf; - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeyCancel: - // case (TUint16)EAknSoftkeyCancel: //the Cancle in soft CBA - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - case EAknSoftkeySelect: - //case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( (currentSelect < inEffectSpellingCount) - && (keystrokeArray->Count( ) - == inEffectKeystrokeArray->Count( ) ) - && (popup->GetTonemarkState( ) ) ) - { - if ( popup->IsEnabled( ) ) - { - popup->Enable( EFalse ); - } - iOwner->FepMan()->PinyinPhraseCreation( EFalse ); - popup->SetChangeState( ETrue ); - iOwner->ChangeState( ECandidate ); - } - else - { - GetKeystrokeBuf( *keystrokeArray, keystrokeBuf ); - iOwner->FepMan()->PinyinPhraseCreation( ETrue ); - popup->SetChangeState( ETrue ); - popup->SetPhraseCreationState( ETrue ); - if ( GetChangeState( ) ) - { - ClearDeliberateSelection( ); - popup->Enable( EFalse ); - iOwner->ChangeState( ESpellingSelection ); - } - else - { - ClearDeliberateSelection( ); - popup->Enable( EFalse ); - iOwner->ChangeState( EKeySequenceEdit ); - } - } - break; - default: - DeliberatelyUpdateSelection( ); - break; - } - - } - -TBool TAknFepInputStateEntryPinyinPhrase::HandleKeyL( TInt aKey, TKeyPressLength aLength ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArray(); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray(); - CDesCArrayFlat* showKeystrokeArray = popup->ShowKeystrokeArray(); - TInt currentSelect = popup->CurrentSelection(); - TInt inEffectSpellingCount = ptiengine->PhoneticSpellingCount(); - TInt offset = 0; - - TBuf<1> keyBuf; - TBuf<1> keyShow; - TBuf keystrokeBuf; - - if(aKey == EKeyBackspace) - { - TBool state = ETrue; - if ( popup->IsChangeStatet() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - if ( state ) - { - DeleteCurrentKeystroke(); - showKeystrokeArray->Delete( showKeystrokeArray->Count() - 1 ); - showKeystrokeArray->Compress(); - if ( inEffectKeystrokeArray->Count()> 0 ) - { - ImplicitlyUpdateSelection(); - } - else - { - ClearDeliberateSelection(); - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - } - else if(aKey == EKeyRightArrow) - { - if(popup->IsEnabled()) - { - if(popup->SelectNextPhrase()) - { - DeliberatelyUpdateSelection(); - } - } - } - else if(aKey == EKeyLeftArrow) - { - if(popup->IsEnabled()) - { - if(popup->SelectPrevPhrase()) - { - DeliberatelyUpdateSelection(); - } - } - } - else if( ( aKey == EKeyOK || aKey == EKeyDownArrow || aKey == EKeyCBA1) - && aLength == EShortKeyPress) - { - if ( ( currentSelect < inEffectSpellingCount) && - ( keystrokeArray->Count() == inEffectKeystrokeArray->Count() ) && - ( popup->GetTonemarkState() ) ) - { - if(popup->IsEnabled()) - { - popup->Enable(EFalse); - } - iOwner->FepMan()->PinyinPhraseCreation( EFalse ); - popup->SetChangeState( ETrue ); - iOwner->ChangeState(ECandidate); - } - else - { - GetKeystrokeBuf( *keystrokeArray, keystrokeBuf ); - iOwner->FepMan()->PinyinPhraseCreation( ETrue ); - popup->SetChangeState( ETrue ); - popup->SetPhraseCreationState( ETrue ); - if ( GetChangeState() ) - { - ClearDeliberateSelection(); - popup->Enable( EFalse ); - iOwner->ChangeState(ESpellingSelection); - } - else - { - ClearDeliberateSelection(); - popup->Enable( EFalse ); - iOwner->ChangeState(EKeySequenceEdit); - } - } - } - else if (aLength == EShortKeyPress) // don't want repeats on these keys - { - iOwner->FepMan()->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - - if ( ( iOwner->IsValidChineseInputKey(aKey) ) && - ( CheckKeystroke( aKey, *keystrokeArray ) ) ) - { - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - GetKeystrokeNum( aKey, keyBuf ); - keystrokeArray->AppendL( keyBuf ); - showKeystrokeArray->AppendL( keyBuf ); - - if ( popup->GetTonemarkState() ) - { - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - if (stringBeforeLength != stringAfterLength) - { - if (ptiengine->GetPhoneticSpelling(1).Length() == 1) - { - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT); - } - inEffectKeystrokeArray->AppendL(keyBuf); - ImplicitlyUpdateSelection(); - } - else - { - ptiengine->EnableToneMarks(ETrue); - UIContainer()->PinyinPopupWindow()->SetFlag(MAknFepUICtrlPinyinPopup::ESpellingChanged); - RefreshUI(0); - } - } - else - { - ImplicitlyUpdateSelection(); - } - } - else if ( ( aKey == EPtiKeyStar ) && - ( CheckKeystroke( aKey, *keystrokeArray ) ) ) // we increment the tone mark. - { - keyBuf.Append( EPtiKeyStar ); - - if ( keystrokeArray->Count() == inEffectKeystrokeArray->Count() ) - { - inEffectKeystrokeArray->AppendL(keyBuf); - keystrokeArray->AppendL( keyBuf ); - GetPinyinToneMark( *keystrokeArray, keyShow ); - ShowKeystrokeAppendL( *showKeystrokeArray, *keystrokeArray, keyShow ); - CheckTonemarkL(); - } - else - { - keystrokeArray->AppendL( keyBuf ); - GetPinyinToneMark( *keystrokeArray, keyShow ); - ShowKeystrokeAppendL( *showKeystrokeArray, *keystrokeArray, keyShow ); - for ( TInt i = keystrokeArray->Count() - 1; i >= 0; i-- ) - { - if ( 0 == keystrokeArray->MdcaPoint( i ). - Compare( KPinyinStar ) ) - { - offset = offset + 1; - } - else - { - break; - } - } - if ( offset > KMaxStarCount ) - { - for ( TInt j = 0; j < KMaxStarCount; ++j ) - { - keystrokeArray->Delete( keystrokeArray->Count() - 1 ); - } - keystrokeArray->Compress(); - } - } - ImplicitlyUpdateSelection(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - return ETrue; - } - -// --------------------------------------------------------- -// Optimize spelling -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhrase::OptimizeSpellingL( CDesCArrayFlat& aOptimizeBefore, CDesCArrayFlat& aOptimizeAfter ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray(); - TBool checkSeparator = EFalse; - TBuf spellingBuf; - TInt bufLength = 0; - TInt countSeparator = 0; - - TInt countBuf[KMaxPhraseCount]; - memset( countBuf, 0, sizeof( countBuf ) ); - - TInt position = 0; - TInt i = 0; - TInt j = 0; - - if ( 0 == inEffectKeystrokeArray->Count() ) - { - return; - } - - for ( i = 0 ; i < inEffectKeystrokeArray->Count(); ++i ) - { - if ( 0 == inEffectKeystrokeArray->MdcaPoint( i ).Compare( KPinyinListSeparator ) ) - { - checkSeparator = ETrue; - countBuf[countSeparator] = j; - countSeparator = countSeparator + 1; - } - else - { - if ( 0 == i ) - { - j = j + 1; - } - else - { - if ( ( 0 == inEffectKeystrokeArray->MdcaPoint( i ).Compare( KPinyinStar ) ) && - ( 0 != inEffectKeystrokeArray->MdcaPoint( i - 1 ).Compare( KPinyinStar ) )) - { - j = j + 1; - } - else if ( 0 != inEffectKeystrokeArray->MdcaPoint( i ).Compare( KPinyinStar ) ) - { - j = j + 1; - } - } - } - } - - j = 0; - for ( i = 0; i < aOptimizeBefore.Count(); ++i ) - { - j = 0; - bufLength = 0; - position = 0; - spellingBuf.Size(); - spellingBuf.Copy( aOptimizeBefore.MdcaPoint( i ) ); - bufLength = spellingBuf.Length(); - while( j < bufLength ) - { - position = spellingBuf.Find( KPinyinListSeparator ); - if ( position != KErrNotFound ) - { - spellingBuf.Replace( position, 1, KPinyinManualSeparator ); - j = position + 1; - } - else - { - break; - } - } - aOptimizeAfter.AppendL( spellingBuf ); - } - - if ( !checkSeparator ) - { - return; - } - - aOptimizeBefore.Reset(); - aOptimizeBefore.Compress(); - - for ( i = 0; i < aOptimizeAfter.Count(); ++i ) - { - aOptimizeBefore.AppendL( aOptimizeAfter.MdcaPoint( i ) ); - } - - aOptimizeAfter.Reset(); - aOptimizeAfter.Compress(); - - - for ( TInt k = 0; k < aOptimizeBefore.Count(); ++k ) - { - j = 0; - bufLength = 0; - position = 0; - spellingBuf.Size(); - spellingBuf.Copy( aOptimizeBefore.MdcaPoint( k ) ); - bufLength = spellingBuf.Length(); - for ( TInt kk = 0; kk < bufLength; ++kk ) - { - if ( 0 == spellingBuf.Mid( kk, 1 ).Compare( KPinyinManualSeparator ) ) - { - for ( TInt kkk = 0; kkk < countSeparator; ++kkk) - { - if ( j == countBuf[kkk] ) - { - spellingBuf.Replace( kk, 1, KPinyinListSeparator ); - } - } - } - else - { - j = j + 1; - } - } - aOptimizeAfter.AppendL( spellingBuf ); - } - } -void TAknFepInputStateEntryPinyinPhrase::DeliberatelyUpdateSelection() - { - TPtr deliberateSelection = iOwner->GetLatestDeliberateSelection(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - - TInt selected = popup->CurrentSelection(); - ptiengine->EnableToneMarks(EFalse); - TPtrC spelling = ptiengine->GetPhoneticSpelling(selected + 1); // our index is zero based, engine index is one based - deliberateSelection = spelling.Left( - MAknFepUICtrlInputPane::EMaxInputCharsPinyinPopupNotIncludingToneMark); - ptiengine->EnableToneMarks(ETrue); - UIContainer()->PinyinPopupWindow()->SetFlag(MAknFepUICtrlPinyinPopup::ESpellingNavigation); - RefreshUI(popup->CurrentVisibleSelection()); - } - -void TAknFepInputStateEntryPinyinPhrase::ImplicitlyUpdateSelection() - { - TPtr oldDeliberateSelection = iOwner->GetLatestDeliberateSelection(); - TInt oldDeliberateSelectionLength = oldDeliberateSelection.Length(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - // previously selected is compared in turn to each of the new candidates - ptiengine->EnableToneMarks(EFalse); - TInt pinyinCount = ptiengine->PhoneticSpellingCount(); - TInt newSelection = 0; - for(TInt i = 0; i < pinyinCount; i++) - { - TPtrC spelling = ptiengine->GetPhoneticSpelling(i + 1); // our index is zero based, engine index is one based - TInt spellingLength = spelling.Length(); - - // figure out how many characters we are comparing, this depends on the - // direction of the edit - TInt compareLength = oldDeliberateSelectionLength <= spellingLength ? - oldDeliberateSelectionLength : spellingLength; - - if(oldDeliberateSelection.Left(compareLength) == spelling.Left(compareLength)) - { - // as soon as a substring match is found, the - // highlight position is set to that candidate in the new list. - // note that in the case of the first character entered, the - // oldBuf will be empty so it will always match... which is - // fine as we want to select the top one anyway, so we will - // quit the loop early. - newSelection = i; - break; - } - } - - ptiengine->EnableToneMarks(ETrue); - UIContainer()->PinyinPopupWindow()->SetFlag(MAknFepUICtrlPinyinPopup::ESpellingChanged); - RefreshUI(newSelection); - } - -void TAknFepInputStateEntryPinyinPhrase::ClearDeliberateSelection() - { - // we must have just deleted the last character, - // or we are starting a new pinyin session, so wipe the last deliberate selection - TPtr oldDeliberateSelection = iOwner->GetLatestDeliberateSelection(); - oldDeliberateSelection = KNullDesC; - } - -void TAknFepInputStateEntryPinyinPhrase::RefreshUI(TInt aSelection) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArray(); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray(); - CDesCArrayFlat* showKeystrokeArray = popup->ShowKeystrokeArray(); - CDesCArrayFlat* optimizeSpelling = popup->PhoneticSpellingArray(); - CDesCArrayFlat* spelling = popup->OptimizeSpelling(); - - TBuf keystrokeBuf; - - // get cursor position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - - TBool checkTonemark = popup->GetTonemarkState(); - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - TText toneMark; - TBool toneMarkEntered = ptiengine->ToneMark(toneMark); - TBuf<1> validToneMarkBuf; - if(toneMarkEntered) - { - // override specific invalid tonemark character only, the others are the same character - // when both valid and invalid - if(toneMark == KPinyinTone4Invalid) - toneMark = KPinyinTone4Valid; - validToneMarkBuf.Append(toneMark); - } - - // to start with, disable the tone marks so we can get the list of all pinyin matches - // later we will figure out which ones are invalid - ptiengine->EnableToneMarks(EFalse); - TInt pinyinCountWithoutToneMarks = ptiengine->PhoneticSpellingCount(); - if(pinyinCountWithoutToneMarks > 0) - { - if(popup->IsFlagSet(MAknFepUICtrlPinyinPopup::ESpellingChanged)) - { - if ( ( inEffectKeystrokeArray->Count() < keystrokeArray->Count() ) || - ( !checkTonemark ) ) - { - spelling->Reset(); - optimizeSpelling->Reset(); - spelling->Compress(); - optimizeSpelling->Compress(); - } - else - { - spelling->Reset(); - optimizeSpelling->Reset(); - spelling->Compress(); - optimizeSpelling->Compress(); - TRAPD(ignore, ptiengine->GetPhoneticSpellingsL(*spelling)); - if (ignore != KErrNone) - { - return; - } - - TRAPD( iOptimize, OptimizeSpellingL( *spelling, *optimizeSpelling ) ); - if ( KErrNone != iOptimize ) - { - return; - } - } - - GetKeystrokeBuf( *showKeystrokeArray, keystrokeBuf ); - - TRAPD( retOptimize, optimizeSpelling->AppendL( keystrokeBuf ) ); - if ( KErrNone != retOptimize ) - { - return; - } - popup->SplitPhraseSpellingIntoPages(); - } - - // set display page for delibrate selection - popup->SetDisplayPage(aSelection); - popup->SetPhraseItemTexts(); - - // fill in input pane although it's invisible - if ( inEffectKeystrokeArray->Count() < keystrokeArray->Count() ) - { - inputPane->SetText( keystrokeBuf ); - } - else - { - if ( optimizeSpelling->Count() > popup->CurrentSelection() ) - { - inputPane->SetText( optimizeSpelling->MdcaPoint( popup->CurrentSelection() ) ); - } - else - { - inputPane->SetText( KNullDesC ); - } - } - popup->PopupSizeChanged(); // phrase input - } - // turn tone marks back on so that we know where we are. - ptiengine->EnableToneMarks(ETrue); - - // this is where we start to figure out whether the tonemarks are valid, - // whether the selected tonemark is valid, and what is the index of the - // selected candidate in the list of candidates with tonemarks... - TBool selectionToneMarkValid = EFalse; - TInt selectionIndexAdjustedForToneMarkValidity = popup->CurrentSelection(); - - // we only need to deal with tone marks if there is one - if(toneMarkEntered) - { - if(pinyinCountWithoutToneMarks > 0) - { - for(TInt i = 0; i < pinyinCountWithoutToneMarks; i++) - { - TBool valid = EFalse; - - TBuf nextCandidateWithoutToneMark; - nextCandidateWithoutToneMark.Copy(ptiengine->GetPhoneticSpelling(i + 1).Left( - MAknFepUICtrlInputPane::EMaxInputCharsPinyinPopupNotIncludingToneMark)); - - ptiengine->EnableToneMarks(EFalse); - ptiengine->SelectPhoneticSpelling(i + 1); - - valid = ptiengine->IsToneMarkValidForSpelling(); - if(valid) - { - ptiengine->EnableToneMarks(ETrue); - TInt pinyinCountWithToneMarks = ptiengine->PhoneticSpellingCount(); - - for(TInt j = 0; j < pinyinCountWithToneMarks; j++) - { - // use j here not i as we are looking at the list with tonemarks - TPtrC nextCandidateWithToneMark = ptiengine->GetPhoneticSpelling(j + 1); - if(nextCandidateWithToneMark == nextCandidateWithoutToneMark) - { - if(i == aSelection) - { - selectionToneMarkValid = ETrue; - - // fill in input pane even if it can't be seen, for when we have to hide popup window - inputPane->SetText(nextCandidateWithoutToneMark); - } - break; - } - } - } - } - } - } - ptiengine->EnableToneMarks(EFalse); - ptiengine->SelectPhoneticSpelling(popup->CurrentSelection() + 1); - // next two lines are for tonemark validity - ptiengine->EnableToneMarks(selectionToneMarkValid); - ptiengine->SelectPhoneticSpelling(selectionIndexAdjustedForToneMarkValidity + 1); // our index is zero based, engine index is one based - - // update the candidate pane. - if(popup->IsFlagSet(MAknFepUICtrlPinyinPopup::ESpellingChanged) - || popup->IsFlagSet(MAknFepUICtrlPinyinPopup::ESpellingNavigation)) - { - CDesCArrayFlat* phraseCandidates = uiContainer->CandidatePane()->CandidateArray(); - if ( ( pinyinCountWithoutToneMarks > popup->CurrentSelection() ) && - ( inEffectKeystrokeArray->Count() == keystrokeArray->Count() ) && - checkTonemark ) - { - TRAPD(ignore, ptiengine->GetChinesePhraseCandidatesL(*phraseCandidates)); - if (ignore != KErrNone) - { - return; - } - } - else if ( keystrokeArray->Count() != 0 ) - { - phraseCandidates->Reset(); - TRAPD( retAddPinyinNote, phraseCandidates->AppendL( KPinyinNote ) ); - if ( KErrNone != retAddPinyinNote ) - { - return; - } - } - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - popup->ClearFlag(MAknFepUICtrlPinyinPopup::ESpellingChanged - | MAknFepUICtrlPinyinPopup::ESpellingNavigation); - } - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable(ETrue); - // need to enable the pinyin popup after the container so that it is raised to the front - popup->Enable(pinyinCountWithoutToneMarks > 0); - UpdateIndicator(); - } - -void TAknFepInputStateEntryPinyinPhrase::InitializeStateL(void) - { - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT); - } - -void TAknFepInputStateEntryPinyinPhrase::UpdateIndicator() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (candidatePane->IsFirstPage()) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage()) - { - uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows(ETrue); - } - - if (candidatePane->SelectedIndex() == 0 && - candidatePane->IsFirstPage() ) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage() && - (candidatePane->SelectedIndex() == candidatePane->VisibleCandidateCount() - 1)) - { - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } -// --------------------------------------------------------- -// Delete current keystroke. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhrase::DeleteCurrentKeystroke() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArray(); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TInt i = keystrokeArray->Count() - 1; - TInt count = keystrokeArray->Count() - 1; - TInt inECTKeystrokeCount = inEffectKeystrokeArray->Count(); - TInt validCount = 0; - - if ( keystrokeArray->Count() > inEffectKeystrokeArray->Count() ) - { - for ( i = keystrokeArray->Count() - 1; i >= 0; i-- ) - { - if ( 0 == keystrokeArray->MdcaPoint( i ).Compare( KPinyinStar ) ) - { - keystrokeArray->Delete( i ); - } - else - { - if ( i == count ) - { - keystrokeArray->Delete( i ); - break; - } - break; - } - } - } - else - { - for ( TInt j = 0; j < inECTKeystrokeCount; ++j ) - { - if ( 0 != inEffectKeystrokeArray-> - MdcaPoint( j ).Compare( KPinyinStar ) ) - { - validCount = validCount + 1; - } - if ( j > 1 ) - { - if ( ( 0 != inEffectKeystrokeArray->MdcaPoint( j ). - Compare( KPinyinStar ) ) && - ( 0 == inEffectKeystrokeArray->MdcaPoint( j - 1). - Compare( KPinyinStar ) ) ) - { - validCount = validCount + 1; - } - if ( ( j == inECTKeystrokeCount - 1 ) && - ( 0 == inEffectKeystrokeArray->MdcaPoint( j ). - Compare( KPinyinStar ) ) ) - { - validCount = validCount + 1; - } - } - } - - if ( inEffectKeystrokeArray->Count() > 0 ) - { - if ( 0 == inEffectKeystrokeArray->MdcaPoint( - inEffectKeystrokeArray->Count() - 1 ).Compare( KPinyinStar ) ) - { - popup->SetTonemarkState( ETrue ); - } - } - - if ( 0 == keystrokeArray->MdcaPoint( keystrokeArray->Count() - 1 ). - Compare( KPinyinStar ) ) - { - ptiengine->DeleteKeyPress(); - for ( i = keystrokeArray->Count() - 1; i >= 0; i-- ) - { - if ( 0 == keystrokeArray->MdcaPoint( i ).Compare( KPinyinStar ) ) - { - keystrokeArray->Delete( i ); - inEffectKeystrokeArray->Delete(i); - } - else - { - break; - } - } - } - else - { - keystrokeArray->Delete( i ); - inEffectKeystrokeArray->Delete(i); - ptiengine->DeleteKeyPress(); - } - } - keystrokeArray->Compress(); - inEffectKeystrokeArray->Compress(); - } - -// --------------------------------------------------------- -// Add current keystroke. -// --------------------------------------------------------- -void TAknFepInputStateEntryPinyinPhrase::AddCurrentKeystrokeL( const TDesC& keystroke ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArray(); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray(); - const TInt offsetSize = 4; - TInt count = keystrokeArray->Count(); - TInt offset = 0; - TInt i = count - 1; - - if ( 0 != keystroke.Compare( KPinyinStar ) ) - { - if ( keystrokeArray->Count() > inEffectKeystrokeArray->Count() ) - { - keystrokeArray->AppendL( keystroke ); - keystrokeArray->Compress(); - return; - } - else - { - keystrokeArray->AppendL( keystroke ); - keystrokeArray->Compress(); - inEffectKeystrokeArray->AppendL( keystroke ); - inEffectKeystrokeArray->Compress(); - return; - } - } - - for ( i = count - 1; i >= 0; i-- ) - { - if ( 0 == keystrokeArray->MdcaPoint( i ).Compare( KPinyinStar ) ) - { - offset = offset + 1; - } - else - { - break; - } - } - if ( ( 0 <= offset ) && ( offset <= offsetSize ) ) - { - if ( keystrokeArray->Count() > inEffectKeystrokeArray->Count() ) - { - keystrokeArray->AppendL( keystroke ); - keystrokeArray->Compress(); - } - else - { - keystrokeArray->AppendL( keystroke ); - keystrokeArray->Compress(); - inEffectKeystrokeArray->AppendL( keystroke ); - inEffectKeystrokeArray->Compress(); - } - } - else - { - if ( keystrokeArray->Count() > inEffectKeystrokeArray->Count() ) - { - for ( TInt ii = 0; ii < offsetSize; ++ii ) - { - keystrokeArray->Delete( count - 1 -ii ); - } - keystrokeArray->Compress(); - } - else - { - for ( TInt ii = 0; ii < offsetSize; ++ii ) - { - keystrokeArray->Delete( count - 1 -ii ); - inEffectKeystrokeArray->Delete( count - 1 -ii ); - } - keystrokeArray->Compress(); - inEffectKeystrokeArray->Compress(); - } - } - } - - -// --------------------------------------------------------- -// Get the keystroke. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhrase::GetKeystrokeNum( TInt aKey, TDes& aKeystroke ) - { - switch(aKey) - { - case KKey0Code: - aKeystroke.Append( KPinyinListSeparator ); - break; - case KKey1Code: - aKeystroke.Append( KPinyinListSeparator ); - break; - case KKey2Code: - aKeystroke.Append(EPtiKey2); - break; - case KKey3Code: - aKeystroke.Append(EPtiKey3); - break; - case KKey4Code: - aKeystroke.Append(EPtiKey4); - break; - case KKey5Code: - aKeystroke.Append(EPtiKey5); - break; - case KKey6Code: - aKeystroke.Append(EPtiKey6); - break; - case KKey7Code: - aKeystroke.Append(EPtiKey7); - break; - case KKey8Code: - aKeystroke.Append(EPtiKey8); - break; - case KKey9Code: - aKeystroke.Append(EPtiKey9); - break; - default: - aKeystroke.Append(EPtiKeyStar); - break; - } - } - -// --------------------------------------------------------- -// Get the keystroke buf. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhrase::GetKeystrokeBuf(const CDesCArrayFlat& aKeystrokeArray, TDes& aKeystrokeBuf ) - { - for ( TInt i = 0; i < aKeystrokeArray.Count(); ++i ) - { - aKeystrokeBuf.Append(aKeystrokeArray.MdcaPoint(i)); - } - } - -// --------------------------------------------------------- -// clear keystroke. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhrase::ClearKeystrokeBuf() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArray(); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray(); - CDesCArrayFlat* showKeystrokeArray = popup->ShowKeystrokeArray(); - CDesCArrayFlat* chooseChineseArray = popup->ChooseChineseCharacterArray(); - CDesCArrayFlat* chooseChienseKeystroke = popup->ChooseChineseCharacterArrayKeystroke(); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TInt pinyinCount = ptiengine->PhoneticSpellingCount(); - chooseChineseArray->Reset(); - chooseChienseKeystroke->Reset(); - - if ( 0 == pinyinCount ) - { - keystrokeArray->Reset(); - inEffectKeystrokeArray->Reset(); - showKeystrokeArray->Reset(); - } - } - -// --------------------------------------------------------- -// Get tome mark. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhrase::GetPinyinToneMark( const CDesCArrayFlat& aKeystrokeArray, TDes& aPinyinToneMark ) - { - TInt starCount = 0; - TInt pinyinToneMark; - TBuf<1> buf; - TInt count = aKeystrokeArray.Count(); - const TInt toneMark0 = 0; - const TInt toneMark1 = 1; - const TInt toneMark2 = 2; - const TInt toneMark3 = 3; - const TInt toneMark4 = 4; - - if ( 0 == count ) - { - aPinyinToneMark.Append( KPinyinTone0Valid ); - return; - } - - for ( TInt i = count - 1; i >= 0; --i ) - { - buf = aKeystrokeArray.MdcaPoint( i ); - if ( 0 == buf.Compare( KPinyinStar ) ) - { - starCount = starCount + 1; - } - else - { - break; - } - } - - if ( 0 == starCount ) - { - aPinyinToneMark.Append( KPinyinTone0Valid ); - } - else - { - pinyinToneMark = starCount % KMaxStarCount; - switch ( pinyinToneMark ) - { - case toneMark0: - aPinyinToneMark.Append( KPinyinTone4Valid ); - break; - case toneMark1: - aPinyinToneMark.Append( KPinyinTone0Valid ); - break; - case toneMark2: - aPinyinToneMark.Append( KPinyinTone1Valid ); - break; - case toneMark3: - aPinyinToneMark.Append( KPinyinTone2Valid ); - break; - case toneMark4: - aPinyinToneMark.Append( KPinyinTone3Valid ); - break; - default: - break; - } - } - } - -// --------------------------------------------------------- -// Check keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEntryPinyinPhrase::CheckKeystroke( TInt aKey, const CDesCArrayFlat& aKeystrokeArray ) - { - CDesCArrayFlat* showKeystrokeArray = UIContainer()-> - PinyinPopupWindow()->ShowKeystrokeArray(); - - TInt count = showKeystrokeArray->Count(); - TBuf<1> keyBuf; - - if ( count >= KMaxShowKeystrokeCount ) - { - if ( ( 0 != aKeystrokeArray.MdcaPoint( aKeystrokeArray.Count() - 1 ). - Compare( KPinyinStar ) ) || ( aKey != EPtiKeyStar ) ) - { - return EFalse; - } - } - - GetKeystrokeNum( aKey, keyBuf ); - - if ( 0 == aKeystrokeArray.Count() ) - { - if ( ( 0 == keyBuf.Compare ( KPinyinStar ) ) || ( 0 == keyBuf.Compare ( KPinyinListSeparator ) ) ) - { - return EFalse; - } - } - else - { - if ( 0 == aKeystrokeArray.MdcaPoint( aKeystrokeArray.Count() - 1 ).Compare( KPinyinStar ) && - ( 0 == keyBuf.Compare ( KPinyinListSeparator ) ) ) - { - return EFalse; - } - - if ( 0 == aKeystrokeArray.MdcaPoint( aKeystrokeArray.Count() - 1 ).Compare( KPinyinListSeparator ) && - ( 0 == keyBuf.Compare ( KPinyinStar ) ) ) - { - return EFalse; - } - } - return ETrue; - } - -// --------------------------------------------------------- -// Check tome mark. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhrase::CheckTonemarkL() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArray(); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray(); - CDesCArrayFlat* showKeystrokeArray = popup->ShowKeystrokeArray(); - CDesCArrayFlat* spelling = popup->OptimizeSpelling(); - - TInt tonemarkCount = 0; - TInt spellTonemarkCount = 0; - TInt keystrokeStarCount = 0; - - TInt offset = 0; - TInt i = 0; - TBool checkReturn = EFalse; - - TBuf<1> buf; - TBuf<1> lastTonemark; - TBuf<1> lastSpellTonemark; - TBuf<1> tonmarkBuf0; - TBuf<1> tonmarkBuf1; - TBuf<1> tonmarkBuf2; - TBuf<1> tonmarkBuf3; - TBuf<1> tonmarkBuf4; - TBuf spellBuf; - - tonmarkBuf0.Append( KPinyinTone0Valid ); - tonmarkBuf1.Append( KPinyinTone1Valid ); - tonmarkBuf2.Append( KPinyinTone2Valid ); - tonmarkBuf3.Append( KPinyinTone3Valid ); - tonmarkBuf4.Append( KPinyinTone4Valid ); - - if ( 0 == inEffectKeystrokeArray->Count() ) - { - popup->SetTonemarkState( EFalse ); - return; - } - - if ( keystrokeArray->Count() > inEffectKeystrokeArray->Count() ) - { - popup->SetTonemarkState( EFalse ); - return; - } - - for ( i = 0; i < showKeystrokeArray->Count(); ++i ) - { - buf.Copy( showKeystrokeArray->MdcaPoint( i ) ); - if ( 0 == buf.Compare( tonmarkBuf0 ) ) - { - tonemarkCount = tonemarkCount + 1; - lastTonemark.Copy( showKeystrokeArray->MdcaPoint( i ) ); - } - else if ( 0 == buf.Compare( tonmarkBuf1 ) ) - { - tonemarkCount = tonemarkCount + 1; - lastTonemark.Copy( showKeystrokeArray->MdcaPoint( i ) ); - } - else if ( 0 == buf.Compare( tonmarkBuf2 ) ) - { - tonemarkCount = tonemarkCount + 1; - lastTonemark.Copy( showKeystrokeArray->MdcaPoint( i ) ); - } - else if ( 0 == buf.Compare( tonmarkBuf3 ) ) - { - tonemarkCount = tonemarkCount + 1; - lastTonemark.Copy( showKeystrokeArray->MdcaPoint( i ) ); - } - else if ( 0 == buf.Compare( tonmarkBuf4 ) ) - { - tonemarkCount = tonemarkCount + 1; - lastTonemark.Copy( showKeystrokeArray->MdcaPoint( i ) ); - } - } - - if ( 0 == tonemarkCount ) - { - popup->SetTonemarkState( ETrue ); - return; - } - - for( i = 0; i < inEffectKeystrokeArray->Count(); ++i ) - { - if ( 0 == inEffectKeystrokeArray->MdcaPoint( - inEffectKeystrokeArray->Count() - 1 - i ).Compare( KPinyinStar ) ) - { - keystrokeStarCount = keystrokeStarCount + 1; - } - else - { - break; - } - } - if ( keystrokeStarCount > 1 ) - { - ptiengine->DeleteKeyPress(); - } - - if ( keystrokeStarCount > KMaxStarCount ) - { - offset = 1; - for ( i = 0; i < KMaxStarCount; ++i ) - { - keystrokeArray->Delete( keystrokeArray->Count() - 1 ); - inEffectKeystrokeArray->Delete( inEffectKeystrokeArray->Count() - 1 ); - } - } - else - { - offset = keystrokeStarCount; - } - - if ( 0 == offset ) - { - popup->SetTonemarkState( ETrue ); - return; - } - else - { - for( i = 0; i < offset; ++i ) - { - ptiengine->IncrementToneMark( ETrue ); - spelling->Reset(); - spelling->Compress(); - ptiengine->GetPhoneticSpellingsL(*spelling); - for ( TInt j = 0; j < spelling->Count(); ++j ) - { - spellTonemarkCount = 0; - spellBuf.Copy( spelling->MdcaPoint( j ) ); - for ( TInt jj = 0; jj < spellBuf.Length(); ++jj ) - { - if ( 0 == spellBuf.Mid( jj, 1 ).Compare( tonmarkBuf0 ) ) - { - spellTonemarkCount = spellTonemarkCount + 1; - lastSpellTonemark.Copy( tonmarkBuf0 ); - } - else if ( 0 == spellBuf.Mid( jj, 1 ).Compare( tonmarkBuf1 ) ) - { - spellTonemarkCount = spellTonemarkCount + 1; - lastSpellTonemark.Copy( tonmarkBuf1 ); - } - else if ( 0 == spellBuf.Mid( jj, 1 ).Compare( tonmarkBuf2 ) ) - { - spellTonemarkCount = spellTonemarkCount + 1; - lastSpellTonemark.Copy( tonmarkBuf2 ); - } - else if ( 0 == spellBuf.Mid( jj, 1 ).Compare( tonmarkBuf3 ) ) - { - spellTonemarkCount = spellTonemarkCount + 1; - lastSpellTonemark.Copy( tonmarkBuf3 ); - } - else if ( 0 == spellBuf.Mid( jj, 1 ).Compare( tonmarkBuf4 ) ) - { - spellTonemarkCount = spellTonemarkCount + 1; - lastSpellTonemark.Copy( tonmarkBuf4 ); - } - } - - if ( ( tonemarkCount != spellTonemarkCount ) || - ( 0 != lastSpellTonemark.Compare( lastTonemark ) )) - { - checkReturn = EFalse; - break; - } - else - { - checkReturn = ETrue; - } - } - if ( checkReturn ) - { - break; - } - } - } - - spelling->Reset(); - spelling->Compress(); - - if ( checkReturn ) - { - popup->SetTonemarkState( ETrue ); - return; - } - else - { - popup->SetTonemarkState( EFalse ); - return; - } - - } - -// --------------------------------------------------------- -// Get change state. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEntryPinyinPhrase::GetChangeState() - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - CDesCArrayFlat* KeystrokeArray = popup->KeystrokeArray(); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray(); - TInt firstIndex = -1; - TInt count = inEffectKeystrokeArray->Count() - 1; - - - - if ( 2 > inEffectKeystrokeArray->Count() ) - { - return ETrue; - } - - for ( TInt i = count; i >= 0; i-- ) - { - if ( 0 != inEffectKeystrokeArray->MdcaPoint( i ). - Compare( KPinyinStar ) ) - { - firstIndex = i; - break; - } - } - - if ( ( 0 == firstIndex ) && ( !popup->GetTonemarkState() ) ) - { - return EFalse; - } - - return ETrue; - } - -// --------------------------------------------------------- -// Append show keystroke. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhrase::ShowKeystrokeAppendL( - CDesCArrayFlat& aShowKeystrokeArray, - const CDesCArrayFlat& aKeystrokeArray, - const TDesC& aPinyinToneMark ) - { - TInt showCount = 0; - TInt count = 0; - TBuf<1> buf; - count = aKeystrokeArray.Count(); - showCount = aShowKeystrokeArray.Count(); - - if ( ( count > 2 ) && ( showCount > 1 ) ) - { - if ( 0 == aKeystrokeArray.MdcaPoint( count - 2 ).Compare( KPinyinStar ) ) - { - aShowKeystrokeArray.Delete( showCount - 1 ); - aShowKeystrokeArray.Compress(); - aShowKeystrokeArray.AppendL( aPinyinToneMark ); - } - else - { - aShowKeystrokeArray.AppendL( aPinyinToneMark ); - } - } - else - { - aShowKeystrokeArray.AppendL( aPinyinToneMark ); - } - } - -// --------------------------------------------------------- -// change CBA. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhrase::ChangeCbaL() - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - TInt lastRes = popup->GetLastResouce(); - if ( lastRes == R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ) - { - return; - } - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryQwertyBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,152 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUIInputStateEntryQwertyBase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiInputStateEntryQwertyBase.h" - -#include //CPtiEngine -#include //keys -#include - -const TText KPinyinTone4Valid = 0x02D9; -const TText KPinyinTone4Invalid = 0x0020; - -TAknFepInputStateEntryQwertyBase::TAknFepInputStateEntryQwertyBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwerty(aOwner,aUIContainer) - { - iState = EEntry; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->ShowHorizontalScrollArrows(EFalse); - uiContainer->FocusCandidatePane(ETrue); - - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - candidatePane->SetHighlighted(ETrue); - candidatePane->SelectFirst(); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutInput); - } - -TBool TAknFepInputStateEntryQwertyBase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TBool ret = ETrue; - - if(aKey == EStdKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(ptiengine->MoreCandidatePages()); - SetInputPaneToneMark(); - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - } - } - else if((aLength == EShortKeyPress) && iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - ptiengine->AppendKeyPress((TPtiKey)aKey); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(ptiengine->MoreCandidatePages()); - SetInputPaneToneMark(); - RefreshUI(); - } - else - { - ret = TAknFepInputStateCandidateQwertyBase::HandleKeyL(aKey, aLength); - } - return ret; - } - -void TAknFepInputStateEntryQwertyBase::RefreshUI() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // set container's position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - TText toneMark; - TBool toneMarkEntered = ptiengine->ToneMark(toneMark); - TBuf<1> validToneMarkBuf; - if(toneMarkEntered) - { - // override specific invalid tonemark character only, the others are the same character - // when both valid and invalid - if(toneMark == KPinyinTone4Invalid) - toneMark = KPinyinTone4Valid; - validToneMarkBuf.Append(toneMark); - } - - ptiengine->EnableToneMarks(ETrue); - TPtrC candidates = ptiengine->CandidatePage(); - uiContainer->CandidatePane()->SetCandidateBuffer(candidates); - uiContainer->Enable(ETrue); - uiContainer->CandidatePane()->SelectFirst(); - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - inputPane->SetText(ptr); - inputPane->SetToneMark(validToneMarkBuf); - } - -void TAknFepInputStateEntryQwertyBase::SetInputPaneToneMark() - { - } - -void TAknFepInputStateEntryQwertyBase::InitializeStateL(void) - { - iOwner->FepMan()->UpdateCbaL(R_AVKON_SOFTKEYS_EMPTY); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryQwertyBaseChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyBaseChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,164 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of entry qwertybase chinese phrase state -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiInputStateEntryQwertyBaseChinesePhrase.h" - -#include //CPtiEngine -#include //keys -#include - -const TInt KMaxPhraseCount = 50; - -TAknFepInputStateEntryQwertyBaseChinesePhrase::TAknFepInputStateEntryQwertyBaseChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyChinesePhrase(aOwner,aUIContainer) - { - iState = EEntry; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - iOwner->PtiEngine()->SetCandidatePageLength(KMaxPhraseCount); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - candidatePane->SetHighlighted(ETrue); - candidatePane->SelectFirstPhrase(); - candidatePane->ShowCandidateOrdinals(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutInput); - UpdateIndicator(); - } - -TBool TAknFepInputStateEntryQwertyBaseChinesePhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - TBool ret = ETrue; - - if(aKey == EStdKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - uiContainer->ShowVerticalScrollArrows(!(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage())); - SetInputPaneToneMark(); - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - } - } - else if(aLength == EShortKeyPress && iOwner->IsValidChineseInputKeyQwerty(aKey) ) - { - ptiengine->AppendKeyPress((TPtiKey)aKey); - uiContainer->ShowVerticalScrollArrows(!(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage())); - SetInputPaneToneMark(); - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - } - else - { - ret = TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(aKey,aLength); - } - - return ret; - } - -void TAknFepInputStateEntryQwertyBaseChinesePhrase::RefreshUI() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // get cursor position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - // layout candidate and fill candidate buffer for first display page - TInt candidateCount = 0; - if(inputPane->IsFlagSet(MAknFepUICtrlInputPane::EPhoneticChanged)) - { - inputPane->ClearFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - TRAPD(ignore, - candidateCount = ptiengine->GetChinesePhraseCandidatesL( - *(uiContainer->CandidatePane()->CandidateArray()))); - if(candidateCount == 0 || ignore != KErrNone) - { - return; - } - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - } - - uiContainer->Enable(ETrue); - uiContainer->CandidatePane()->SetCandidateBuffer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(multiplePages); - uiContainer->CandidatePane()->SelectFirstPhrase(); - - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - inputPane->SetText(ptr); - UpdateIndicator(); - } - -void TAknFepInputStateEntryQwertyBaseChinesePhrase::SetInputPaneToneMark() - { - } - -void TAknFepInputStateEntryQwertyBaseChinesePhrase::InitializeStateL(void) - { - iOwner->FepMan()->UpdateCbaL(R_AVKON_SOFTKEYS_EMPTY); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryQwertyBasePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyBasePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,160 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUIInputStateEntryQwertyBasePhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiInputStateEntryQwertyBasePhrase.h" - -#include //CPtiEngine -#include //keys -#include - -TAknFepInputStateEntryQwertyBasePhrase::TAknFepInputStateEntryQwertyBasePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyPhrase(aOwner,aUIContainer) - { - iState = EEntry; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - candidatePane->SetHighlighted(ETrue); - candidatePane->SelectFirstPhrase(); - candidatePane->ShowCandidateOrdinals(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutInput); - } - -TBool TAknFepInputStateEntryQwertyBasePhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - TBool ret = ETrue; - - if(aKey == EStdKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - uiContainer->ShowVerticalScrollArrows(!(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage())); - SetInputPaneToneMark(); - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - } - } - else if(aLength == EShortKeyPress && iOwner->IsValidChineseInputKeyQwerty(aKey) ) - { - ptiengine->AppendKeyPress((TPtiKey)aKey); - uiContainer->ShowVerticalScrollArrows(!(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage())); - SetInputPaneToneMark(); - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - } - else - { - ret = TAknFepInputStateCandidateQwertyBasePhrase::HandleKeyL(aKey,aLength); - } - - return ret; - } - -void TAknFepInputStateEntryQwertyBasePhrase::RefreshUI() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // get cursor position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - // layout candidate and fill candidate buffer for first display page - TInt candidateCount = 0; - if(inputPane->IsFlagSet(MAknFepUICtrlInputPane::EPhoneticChanged)) - { - inputPane->ClearFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - TRAPD(ignore, - candidateCount = ptiengine->GetChinesePhraseCandidatesL( - *(uiContainer->CandidatePane()->CandidateArray()))); - if(candidateCount == 0 || ignore != KErrNone) - { - return; - } - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - } - - uiContainer->Enable(ETrue); - uiContainer->CandidatePane()->SetCandidateBuffer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(multiplePages); - uiContainer->CandidatePane()->SelectFirstPhrase(); - - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - inputPane->SetText(ptr); - } - -void TAknFepInputStateEntryQwertyBasePhrase::SetInputPaneToneMark() - { - } - -void TAknFepInputStateEntryQwertyBasePhrase::InitializeStateL(void) - { - iOwner->FepMan()->UpdateCbaL(R_AVKON_SOFTKEYS_EMPTY); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryQwertyCangJie.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyCangJie.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUIInputStateEntryQwertyCangJie methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiInputStateEntryQwertyCangJie.h" -#include "AknFepUICtrlCandidatePane.h" - -#include //CPtiEngine -#include //keys -#include - -const TInt KEasyCangJieLengthLimit(2); // Spelling limit for Easy CangJie is 2 characters -const TInt KNormalAdvCangJieLengthLimit(5); // Spelling limit for Normal and Advanced CangJie is 5 characters - -TAknFepInputStateEntryQwertyCangJie::TAknFepInputStateEntryQwertyCangJie( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryQwertyBase(aOwner,aUIContainer) - { - UIContainer()->CandidatePane()->ShowCandidateOrdinals(ETrue); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - ptiengine->SetInputMode( ( TPtiEngineInputMode )iOwner->FepMan()->CangJieMode() ); - - // This is a must otherwise Engine cannot find keys in KeyMapping - ptiengine->SetCase(EPtiCaseLower); - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - } - -TBool TAknFepInputStateEntryQwertyCangJie::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TPtiEngineInputMode currentMode = ptiengine->InputMode(); - - TBool processKey = ETrue; - - if (!IsValidCangJieCode(aKey)) - return TAknFepInputStateEntryQwertyBase::HandleKeyL(aKey, aLength); - - TInt bufferLength = 0; - TInt lengthLimit = 0; - // Limit the length of the key append for different CangJie level - switch(currentMode) - { - case EPtiEngineEasyCangjieQwerty: - lengthLimit = KEasyCangJieLengthLimit; - break; - case EPtiEngineNormalCangjieQwerty: - case EPtiEngineAdvCangjieQwerty: - lengthLimit = KNormalAdvCangJieLengthLimit; - break; - default: - break; - } - - if (ptiengine->PhoneticSpellingCount() > 0) - { - TPtrC spellingBuf = ptiengine->GetPhoneticSpelling(1); - bufferLength = spellingBuf.Length(); - - if (bufferLength >= lengthLimit) - { - processKey = EFalse; - fepMan->PlaySound(EAvkonSIDConfirmationTone); - } - } - - return processKey ? TAknFepInputStateEntryQwertyBase::HandleKeyL(aKey, aLength) : ETrue; - } - - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryQwertyPinyin.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyPinyin.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,333 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStateEntryQwertyPinyin methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiInputStateEntryQwertyPinyin.h" -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine -#include //keys -#include - -const TText KPinyinTone4Valid = 0x02D9; -const TText KPinyinTone4Invalid = 0x0020; -const TInt KMaxCandidateCountFromCore = 6; - -TAknFepInputStateEntryQwertyPinyin::TAknFepInputStateEntryQwertyPinyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryQwertyBase(aOwner,aUIContainer) - { - UIContainer()->CandidatePane()->ShowCandidateOrdinals(ETrue); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->SetInputMode(EPtiEnginePinyinQwerty); - ptiengine->SetCase(EPtiCaseLower); - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - UpdateIndicator(); - } - -TBool TAknFepInputStateEntryQwertyPinyin::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TBool ret = ETrue; - - if((aKey == EStdKeyLeftFunc) && (aLength == EShortKeyPress)) - { - if(ptiengine->IncrementToneMark(ETrue)) - { - RefreshUI(); - } - } - else if(aKey == EStdKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if((aLength == EShortKeyPress) && iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - - if (stringBeforeLength != stringAfterLength) - { - if (ptiengine->GetPhoneticSpelling(1).Length() == 1) - { - iOwner->FepMan()->UpdateCbaL(R_AVKON_SOFTKEYS_EMPTY); - } - RefreshUI(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - - if (ptiengine->GetPhoneticSpelling(1).Length() == 0) - { - iOwner->FepMan()->UpdateCbaL(NULL); - } - } - else if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - iOwner->FepMan()->NewCharacterL(text); - iOwner->FepMan()->CommitInlineEditL(); - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - iOwner->FepMan()->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveInput); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - return ret; - } - -void TAknFepInputStateEntryQwertyPinyin::RefreshUI() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - SetInputPaneToneMark(); - - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(multiplePages); - - // set container's position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - TText toneMark; - TBool toneMarkEntered = ptiengine->ToneMark(toneMark); - TBuf<1> validToneMarkBuf; - if(toneMarkEntered) - { - // override specific invalid tonemark character only, the others are the same character - // when both valid and invalid - if(toneMark == KPinyinTone4Invalid) - toneMark = KPinyinTone4Valid; - validToneMarkBuf.Append(toneMark); - } - - ptiengine->EnableToneMarks(ETrue); - - if (ptr.Length() > 0) - { - TPtrC candidates = ptiengine->CandidatePage(); - uiContainer->CandidatePane()->SetCandidateBuffer(candidates); - uiContainer->Enable(ETrue); - uiContainer->CandidatePane()->SelectFirst(); - - inputPane->SetText(ptr); - inputPane->SetToneMark(validToneMarkBuf); - - UpdateIndicator(); - } - } - -TBool TAknFepInputStateEntryQwertyPinyin::HandleHorizontalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EStdKeyLeftArrow) - { - if (candidatePane->SelectedIndex() == 0 && - ptiengine->NumberOfCandidates() == 0) - { - return ETrue; - } - - if(!candidatePane->SelectPrev()) - { - ptiengine->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectLast(); - } - UpdateIndicator(); - response = ETrue; - } - else if (aKey == EStdKeyRightArrow) - { - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - - if (bufLength != KMaxCandidateCountFromCore && - candidatePane->SelectedIndex() == (bufLength -1)) - { - return ETrue; - } - - if(!candidatePane->SelectNext()) - { - ptiengine->NextCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectFirst(); - } - UpdateIndicator(); - response = ETrue; - } - return response; - } - -TBool TAknFepInputStateEntryQwertyPinyin::HandleVerticalNavigation(TInt aKey) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (aKey == EStdKeyDownArrow || aKey == EStdKeySpace) - { - if (iOwner->PtiEngine()->CandidatePage().Length() != - KMaxCandidateCountFromCore) - { - return ETrue; - } - ptiengine->NextCandidatePage(); - } - else if (aKey == EStdKeyUpArrow) - { - if (ptiengine->NumberOfCandidates() == 0) - { - return ETrue; - } - ptiengine->PreviousCandidatePage(); - } - else - { - return EFalse; - } - - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - candidatePane->SelectFirst(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - UpdateIndicator(); - return ETrue; - } - - void TAknFepInputStateEntryQwertyPinyin::UpdateIndicator() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - uiContainer->CandidatePane()->ShowDownScrollArrows - (bufLength == KMaxCandidateCountFromCore ? ETrue : EFalse); - - if (candidatePane->SelectedIndex() == 0 && - ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - } - - if (bufLength != KMaxCandidateCountFromCore && - candidatePane->SelectedIndex() == (bufLength -1)) - { - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryQwertyPinyin::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// - void TAknFepInputStateEntryQwertyPinyin::HandleCommandL( TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryQwertyPinyinPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyPinyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,214 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStateEntryQwertyPinyinPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUiInputStateEntryQwertyPinyinPhrase.h" -#include "AknFepManager.h" - -#include //CPtiEngine -#include //keys -#include - -const TInt KInputPaneLength = 32; -_LIT(KSep, "'"); -_LIT(KReplace, ""); - -TAknFepInputStateEntryQwertyPinyinPhrase::TAknFepInputStateEntryQwertyPinyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryQwertyBaseChinesePhrase(aOwner,aUIContainer) - { - iOwner->PtiEngine()->SetInputMode(EPtiEnginePinyinPhraseQwerty); - iOwner->PtiEngine()->SetCase(EPtiCaseLower); - } - -TBool TAknFepInputStateEntryQwertyPinyinPhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = ETrue; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress) - { - if(ptiengine->IncrementToneMark(ETrue)) - { - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(!(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage())); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->InputPane()->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - SetInputPaneToneMark(); - RefreshUI(); - } - } - else if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - ret = ETrue; - } - else if(aLength == EShortKeyPress && iOwner->IsValidChineseInputKeyQwerty(aKey) ) - { - if (!uiContainer->IsEnabled() && - (aKey == EPtiKeyQwertyI || aKey == EPtiKeyQwertyU || aKey == EPtiKeyQwertyV)) - { - iOwner->FepMan()->UpdateCbaL(NULL); - iOwner->ChangeState(EQwerty); - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ret; - } - - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - - if (stringBeforeLength != stringAfterLength) - { - if (ptiengine->GetPhoneticSpelling(1).Length() == 1) - { - iOwner->FepMan()->UpdateCbaL(R_AVKON_SOFTKEYS_EMPTY); - } - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(!(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage())); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - SetInputPaneToneMark(); - uiContainer->InputPane()->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - - RefreshUI(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - - if (ptiengine->GetPhoneticSpelling(1).Length() == 0) - { - iOwner->FepMan()->UpdateCbaL(NULL); - } - } - else if(aKey == EStdKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - uiContainer->ShowVerticalScrollArrows(!(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage())); - SetInputPaneToneMark(); - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if (aKey == EStdKeyEnter) - { - TBuf currentText; - inputPane->GetText(currentText); - - while(currentText.Find(KSep)> 0) - { - currentText.Replace(currentText.Find(KSep), 1,KReplace); - } - - - if(currentText.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(currentText); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - } - } - } - else if (aKey == EStdKeySpace) - { - TInt index = MapKeyToIndex(EStdKeyDevice3); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveInput); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - else - { - ret = TAknFepInputStateEntryQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryQwertyStroke.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyStroke.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,299 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStateEntryQwertyStroke methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiInputStateEntryQwertyStroke.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine -#include //keys - -const TInt KMaxCandidateCountFromCore = 6; - -TAknFepInputStateEntryQwertyStroke::TAknFepInputStateEntryQwertyStroke( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryQwertyBase(aOwner,aUIContainer) - { - UIContainer()->CandidatePane()->ShowCandidateOrdinals(ETrue); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - if (ptiengine->InputMode() != EPtiEngineStrokeQwerty) - { - ptiengine->SetInputMode(EPtiEngineStrokeQwerty); - } - - ptiengine->SetCase(EPtiCaseLower); - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - } - -TBool TAknFepInputStateEntryQwertyStroke::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TBool ret = ETrue; - - if((aLength == EShortKeyPress) && iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - - if (stringBeforeLength != stringAfterLength) - { - RefreshUI(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - else if(aKey == EStdKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(!( HandleVerticalNavigation(aKey) || HandleHorizontalNavigation(aKey) )) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveInput); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - else if (!iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - - return ret; - } - -void TAknFepInputStateEntryQwertyStroke::RefreshUI() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(multiplePages); - // set container's position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - TPtrC candidates = ptiengine->CandidatePage(); - uiContainer->CandidatePane()->SetCandidateBuffer(candidates); - - uiContainer->Enable(ETrue); - uiContainer->CandidatePane()->SelectFirst(); - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - inputPane->SetText(ptr); - UpdateIndicator(); - } - -TBool TAknFepInputStateEntryQwertyStroke::HandleHorizontalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EStdKeyLeftArrow) - { - if (candidatePane->SelectedIndex() == 0 && - ptiengine->NumberOfCandidates() == 0) - { - return ETrue; - } - - if(!candidatePane->SelectPrev()) - { - ptiengine->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectLast(); - } - UpdateIndicator(); - response = ETrue; - } - else if (aKey == EStdKeyRightArrow) - { - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - - if (bufLength != KMaxCandidateCountFromCore && - candidatePane->SelectedIndex() == (bufLength -1)) - { - return ETrue; - } - - if(!candidatePane->SelectNext()) - { - ptiengine->NextCandidatePage(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - candidatePane->SelectFirst(); - } - UpdateIndicator(); - response = ETrue; - } - return response; - } - -TBool TAknFepInputStateEntryQwertyStroke::HandleVerticalNavigation(TInt aKey) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (aKey == EStdKeyDownArrow || aKey == EStdKeySpace) - { - if (iOwner->PtiEngine()->CandidatePage().Length() != - KMaxCandidateCountFromCore) - { - return ETrue; - } - ptiengine->NextCandidatePage(); - } - else if (aKey == EStdKeyUpArrow) - { - if (ptiengine->NumberOfCandidates() == 0) - { - return ETrue; - } - ptiengine->PreviousCandidatePage(); - } - else - { - return EFalse; - } - - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - candidatePane->SelectFirst(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - UpdateIndicator(); - return ETrue; - } - -void TAknFepInputStateEntryQwertyStroke::UpdateIndicator() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - uiContainer->CandidatePane()->ShowDownScrollArrows - (bufLength == KMaxCandidateCountFromCore ? ETrue : EFalse); - - if (candidatePane->SelectedIndex() == 0 && - ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - } - - if (bufLength != KMaxCandidateCountFromCore && - candidatePane->SelectedIndex() == (bufLength -1)) - { - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryQwertyStroke::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// - -void TAknFepInputStateEntryQwertyStroke::HandleCommandL( TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryQwertyStrokePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyStrokePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Stroke phrase Qwerty entry state -* -*/ - - - - - - - - - - - - -// System includes -#include - -// User includes -#include "AknFepUiInputStateEntryQwertyStrokePhrase.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" - -// Constant definition -const TInt KMinCnadidateCount = 1; -const TInt KEnginePhoneticIndex = 1; - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryQwertyStrokePhrase:: -// TAknFepInputStateEntryQwertyStrokePhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepInputStateEntryQwertyStrokePhrase::TAknFepInputStateEntryQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryQwertyBaseChinesePhrase(aOwner, aUIContainer) - { - UIContainer()->CandidatePane()->ShowCandidateOrdinals(ETrue); - - if (EPtiEngineStrokePhraseQwerty != iOwner->PtiEngine()->InputMode()) - { - iOwner->PtiEngine()->SetInputMode(EPtiEngineStrokePhraseQwerty); - } - iOwner->PtiEngine()->SetCase(EPtiCaseLower); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryQwertyStrokePhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryQwertyStrokePhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - TBool ret = ETrue; - - - - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - ret = ETrue; - } - else if((aLength == EShortKeyPress) && iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - - stringBeforeLength = ptiengine->GetPhoneticSpelling(KEnginePhoneticIndex).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - - if (stringBeforeLength != stringAfterLength) - { - RefreshUI(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - else if(aKey == EStdKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if (aKey == EStdKeyEnter) - { - return ret; - } - else - { - ret = TAknFepInputStateEntryQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryQwertyStrokePhrase::RefreshUI -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryQwertyStrokePhrase::RefreshUI() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // get cursor position - TPoint baseLine; - TInt height(0); - TInt ascent(0); - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - // layout candidate and fill candidate buffer for first display page - TInt candidateCount(0); - TRAP(ret, - candidateCount = ptiengine->GetChinesePhraseCandidatesL( - *(uiContainer->CandidatePane()->CandidateArray()))); - if(candidateCount == 0 || ret != KErrNone) - { - return; - } - - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength > KMinCnadidateCount; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - - uiContainer->Enable(ETrue); - uiContainer->CandidatePane()->SelectFirstPhrase(); - TPtrC ptr = ptiengine->GetPhoneticSpelling(KEnginePhoneticIndex); - inputPane->SetText(ptr); - UpdateIndicator(); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryQwertyWesternPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyWesternPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,673 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryQwertyWesternPredictive methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryQwertyWesternPredictive.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiManagerWestern.h" -#include "AknFepManager.h" -#include "AknFepPanic.h" -#include "AknFepCaseManager.h" -#include "AknFepPluginManager.h" - -#include //CPtiEngine -#include //keys -#include //MPtiEngineCompositionDataInterface -#include //FeatureManager -#include -#include - - -static const TInt KKeyMappingsLength = 63; - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// -TAknFepInputStateEntryQwertyWesternPredictive:: -TAknFepInputStateEntryQwertyWesternPredictive(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateBase(aOwner) - { - //this class insists on the existence of a case manager - __ASSERT_DEBUG(iOwner->CaseMan(), AknFepPanic(EAknFepPanicNoCaseManager)); - - iState = EEntry; - iMatchState = EWordMatchNone; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - TPtiTextCase caseMode = ptiengine->Case(); - - ptiengine->SetInputMode(EPtiEngineQwertyPredictive ); - ptiengine->SetCase(caseMode); - TBool isUnlimitedEditor = EFalse; - ptiengine->SetMaxLengthForAutoCompletedCandidates( - fepMan->EditorFreeSpaceForAutoWordCompletion(isUnlimitedEditor )); - -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(fepMan->IsAutoCompleteOn()) - { - TRAP_IGNORE(ptiengine->HandleCommandL( EPtiCommandEnableAutoCompletion )); - } - else - { - TRAP_IGNORE(ptiengine->HandleCommandL( EPtiCommandDisableAutoCompletion )); - } - TPtiErrorCorrectionLevel correctionLevel = - (TPtiErrorCorrectionLevel)fepMan->AdvancedPredictiveTypingCorrectionLevel(); - TRAP_IGNORE(ptiengine->HandleCommandL( EPtiCommandSetCorrectionLevel, - &correctionLevel )); - - TPtiKeyboardType keyboard = fepMan->KeyboardLayout(); - ptiengine->SetKeyboardType(keyboard); - - TBool isNumberCandidateShown = fepMan->IsAdvancedPredictiveNumberCandidateShown(); - TRAP_IGNORE(ptiengine->HandleCommandL( EPtiCommandSetNumberCandidateStatus, - &isNumberCandidateShown )); - - TBool primaryCandidateState = fepMan->AdvancedPredictivePrimaryCandidate(); - TRAP_IGNORE(ptiengine->HandleCommandL( EPtiCommandSetProactiveCorrection, - &primaryCandidateState )); -#endif //RD_INTELLIGENT_TEXT_INPUT - } - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// -TBool TAknFepInputStateEntryQwertyWesternPredictive::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - if(fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - { - ptiengine->SetCase(EPtiCaseFnLower); - } - - // Handle the Chr cycling - if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) ) - { - if ( iData && (iData != aKey) ) - { - // Chr key is still pressed down but character key was changed from previous one - // to new one. The previous character is committed and PtiEngine starts - // prosessing new key. - ptiengine->CancelTimerActivity(); - - if ( !fepMan->EditorHasFreeSpace() ) - { - return EFalse; - } - } - fepMan->SetFlag( CAknFepManager::EFlagInsideMultitapInlineEditingTransaction ); - } - - TBool response = EFalse; - - - // Handle dead keys with space or backspace. These keys are not mapped in PtiEngine, so they cannot - // be handled there. - if ( ptiengine->HandleCommandL(EPtiCommandDeadKeyWaiting) == 1 ) - { - if ( aKey == EStdKeyBackspace ) - { - // Pending dead key is removed with backspace. No other characters are removed. - ptiengine->HandleCommandL(EPtiCommandGetAndClearDeadKeyRootChar); - response = ETrue; - } - else if ( aKey == EStdKeySpace ) - { - // Dead key followed by space enters the dead key root character - TText deadRoot = ptiengine->HandleCommandL(EPtiCommandGetAndClearDeadKeyRootChar); - ptiengine->HandleCommandL( EPtiCommandAppendCharacter, &deadRoot ); - - TPtrC newText = ptiengine->CurrentWord(); - fepMan->UpdateInlineEditL( newText, newText.Length() ); - iOwner->CaseMan()->UpdateCase(ENullNaviEvent); - - response = ETrue; - } - } - - if (!response) // key not yet handled - { - switch (aKey) - { - case EStdKeySpace: //fall through - case EStdKeyEnter: - case EStdKeyTab: - case EStdKeyLeftArrow: - case EStdKeyRightArrow: - case EStdKeyUpArrow: - case EStdKeyDownArrow: - response = HandleWordBreakingKeysL(aKey); - break; - - // Long press of shift key start copy event. - // Its should handle by framework. - case EStdKeyF21: - case EKeyF21: - // Soft key handle by framework - // Selection key handle by AknFepManeger. - case EStdKeyDevice0: // iCode:EKeyCBA1 - case EStdKeyDevice1: // iCode:EKeyCBA2 - case EStdKeyDevice3: // iCode:EKeyOK - case EKeyCBA1: - case EKeyCBA2: - case EKeyOK: - response = EFalse; - break; - - case EKeyUpArrow: - if ( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - //fepMan->HideExactWordPopUp(); - // Select the exact match with the up arrow and lock it. - // Another alternative could be to call function DoPreviousMatchL() from here - TBool primaryCandidateState = fepMan->AdvancedPredictivePrimaryCandidate(); - TInt wordIndexToSelect = 0; - if (EFalse == primaryCandidateState) - { - ptiengine->HandleCommandL( EPtiCommandUserActionGetIndexOfSecondaryCandidate, - &wordIndexToSelect ); - } - - if (fepMan->IsExactWordPopUpShown()) - { - fepMan->HideExactWordPopUp(); - ptiengine->HandleCommandL( - EPtiCommandUserActionSetCurrentIndexOfCandidates, - &wordIndexToSelect ); - ptiengine->HandleCommandL( EPtiCommandLockCurrentCandidate ); - TPtrC selectedWord = ptiengine->CurrentWord(); - fepMan->UpdateInlineEditL( selectedWord, selectedWord.Length() ); - response = ETrue; - break; - } - else - { - fepMan->LaunchCandidatePopupListL( wordIndexToSelect ); - response = ETrue; - break; - } - -#endif // RD_INTELLIGENT_TEXT_INPUT - } - // fall through - case EKeyDownArrow: - case EKeyLeftArrow: - case EKeyRightArrow: - case EKeyBackspace: - response = HandleNaviKeysL(aKey, aLength); - break; - - - default: - HandleShiftState(aKey); - response = HandleQwertyKeysL(aKey); -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( aLength == ELongKeyPress ) - { - // Expire multitap timer after long press. - ptiengine->CancelTimerActivity(); - } -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - break; - } - } - - iData = aKey; // store the pressed key for future reference - return response; - } - - -////////////////////////////////////////////////////////////////////////////////// -// -void TAknFepInputStateEntryQwertyWesternPredictive::HandleShiftState( TInt aKey ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - TPtiTextCase shiftedCase; - if(fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - { - shiftedCase = EPtiCaseFnLower; - } - else - { - shiftedCase= EPtiCaseLower; - } - - // For addition of ITI features. - // When FSQ is opened wiht ITI features enabled, - // after pressing keys, don't need to re-set current text case by editor's text or FN key state. - // Because FSQ's case doesn't obey editor's case and there is no fn key on FSQ. - if ( fepMan->PluginUIManager() - && fepMan->PluginUIManager()->PluginInputMode() == EPluginInputModeFSQ - && fepMan->WesternPredictive() ) - { - return; - } - - // Find out if the key is alphabetic - TBuf keyMappings; - ptiengine->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseUpper ); - TBool isAlpha = ( keyMappings.Length() && TChar(keyMappings[0]).IsAlpha() ); - - if (isAlpha && (fnKeyState == CAknFepFnKeyManager::EFnKeyNone)) - { - switch ( caseMan->CurrentCase() ) - { - case EAknEditorTextCase: - { - // Alphabetic characters are always capitalized in "Abc" mode - // unless the shift is pressed - // Thai language should not go to automatic capitalization in text case - // mode and predictive input. This is because it would lead to the character - // mapped to upper case being displayed instead of the intended character. - // So below is what is essentially a XNOR condition - - // 1) no-shiftkey and language with case => upper case - // 2) no-shiftkey and language without case => lower case - // 3) shiftkey and language with case => lower case - // 4) shiftkey and language without case => upper case - TInt inputLang = ptiengine->CurrentLanguage()->LanguageCode(); - if ( ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) || - fepMan->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress) ) - == ( inputLang == ELangThai || - inputLang == ELangArabic || - inputLang == ELangFarsi || - inputLang == ELangHebrew || - inputLang == ELangUrdu || - inputLang == ELangHindi ) ) - { - shiftedCase = EPtiCaseUpper; - } - } - break; - - case EAknEditorLowerCase: - { - // Pressing shift enters uppercae letters in the "abc" mode - if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) || - fepMan->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress) ) - { - shiftedCase = EPtiCaseUpper; - } - } - break; - - case EAknEditorUpperCase: - { - // In the "ABC" mode (capslock mode) the letters are uppercased - // unless the shift is pressed - if ( !(fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)|| - fepMan->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress)) ) - { - shiftedCase = EPtiCaseUpper; - } - } - break; - - default: - break; - } - - - } - else - { - // non-alphabetic keys are shifted if and only if shift is pressed, no matter what is the input state - if ( (fnKeyState == CAknFepFnKeyManager::EFnKeyNone) && - ( fepMan->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress) || - fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) ) ) - { - shiftedCase = EPtiCaseUpper; - } - else if( (fnKeyState == CAknFepFnKeyManager::EFnKeyNext) && - (caseMan->CurrentCase() == EAknEditorTextCase || - caseMan->CurrentCase() == EAknEditorUpperCase || - fepMan->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress) || - fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode))) - { - shiftedCase = EPtiCaseFnUpper; - } - else if (( fepMan->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress) || - fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)) && - (fnKeyState != CAknFepFnKeyManager::EFnKeyNone)) - { - shiftedCase = EPtiCaseFnUpper; - } - } - - - // Handle the Chr key state - if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) ) - { - // Chr key is pressed down. Chr mode is used. - if (shiftedCase == EPtiCaseLower) - { - shiftedCase = EPtiCaseChrLower; - } - else if (shiftedCase == EPtiCaseUpper) - { - shiftedCase = EPtiCaseChrUpper; - } - } - - ptiengine->SetCase(shiftedCase); - - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringShiftKeyPress); - } - - -////////////////////////////////////////////////////////////////////////////////// -// - -TBool TAknFepInputStateEntryQwertyWesternPredictive::HandleWordBreakingKeysL(TInt aKey) - { - TBool retVal = EFalse; // in most cases we let also the upper levels handle these key events - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - - - // Up and down arrows break the inline word input only when shift or chr is held down - if ( !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) && - !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) && - ( aKey==EStdKeyUpArrow || aKey==EStdKeyDownArrow ) ) - { - return retVal; - } - - - if ( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { - TBool rightToLeftLang = fepMan->IsRightToLeftLanguage(); - TInt tailLength = 0; - ptiengine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - switch (aKey) - { - case EStdKeyLeftArrow: - case EStdKeyRightArrow: - // In case the inline editing is ongoing and there is a word completion - // currently shown, the first backwards tap will remove the suggested - // completion. - if(tailLength > 0) - { - if ((rightToLeftLang && aKey == EStdKeyLeftArrow) - || (! rightToLeftLang && aKey == EStdKeyRightArrow )) - { - ptiengine->HandleCommandL( EPtiCommandLockCurrentCandidate); - TPtrC selectedWord = ptiengine->CurrentWord(); - fepMan->UpdateInlineEditL( selectedWord, selectedWord.Length() ); //selection.iAnchorPosition - // To fix the bug: STAA-7GYBJC Suggested word is not committed when Arrow right key is pressed. - ptiengine->CommitCurrentWord(); - fepMan->TryCloseUiL(); - // Asyncronous case update after the editor has handled the key - fepMan->SimulateKeyEventL(EKeyF19); - retVal = ETrue; - } - else if((rightToLeftLang && aKey == EStdKeyRightArrow) - || (! rightToLeftLang && aKey == EStdKeyLeftArrow )) - { - fepMan->RemoveSuggestedAdvanceCompletionL(); - retVal = ETrue; - } - } - else - { - ptiengine->CommitCurrentWord(); - retVal = EFalse; - } - break; - case EStdKeyUpArrow: - case EStdKeyDownArrow: - case EStdKeyEnter: - case EStdKeySpace: - case EStdKeyTab: - { - //retVal = ETrue; - TBool wasInlineEditing = EFalse; - wasInlineEditing = - fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction); - ptiengine->CommitCurrentWord(); - fepMan->CommitInlineEditL(); - /* Temporary Fix */ - //EFlagInsideInlineEditingTransaction flag check is not required - //but just to make sure. - if (aKey == EStdKeySpace && fnKeyState == CAknFepFnKeyManager::EFnKeyDown) - fepMan->LaunchSelectModeMenuL(); - else if(aKey == EStdKeySpace && wasInlineEditing) - { - _LIT(KSpace," "); - fepMan->StartInlineEditL(); - fepMan->UpdateInlineEditL(KSpace,0); - fepMan->CommitInlineEditL(); - retVal = ETrue; - } - /* Temporary Fix */ - fepMan->TryCloseUiL(); - // Asyncronous case update after the editor has handled the key - fepMan->SimulateKeyEventL(EKeyF19); - } - break; - default: - __ASSERT_DEBUG( EFalse, AknFepPanic(EAknFepPanicNotSupportKey) ); - } - - } - else - { - iOwner->ChangeState( EInitial ); - } - - return retVal; - } - - -///////////////////////////////////////////////////////////////////////////////// -// -TBool TAknFepInputStateEntryQwertyWesternPredictive::HandleQwertyKeysL(TInt aKey) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - - // Key is consumed if the PtiEngine maps it to some character - TBuf keyMappings; - - if(fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - { - - // Try to know is there any mapping for function upper - // char. For user point of view this changes has been made. - if( ptiengine->Case() == EPtiCaseFnUpper ) - { - ptiengine->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseFnUpper); - } - else - { - ptiengine->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseFnLower); - } - } - else - { - ptiengine->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseLower); - } - //ITI : Pti Engine can be asked to give the proper data for the keys under Fn Key. - TBool keyIsMapped = ( keyMappings.Length() > 0 ); - - // The dead key handling inside the PtiDefaultCore assumes that no other key mapping queries - // have been made between handling the dead key and the next one (these queries change the - // internal state of the key mapping object). For this reason, we must return the key mappings - // to their previous state. This is quite dirty hack, but so is the dead key handling code which - // forces us to do this. - if(fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - { - ptiengine->MappingDataForKey( (TPtiKey)iData, keyMappings, EPtiCaseFnLower); - } - else - { - ptiengine->MappingDataForKey( (TPtiKey)iData, keyMappings, EPtiCaseLower); - } - - // For user point of view this changes has been made. - // If key does not map to function upper char, then try to insert - // functionized char. - if( (EPtiCaseFnUpper == ptiengine->Case()) && !keyIsMapped ) - { - ptiengine->SetCase((TPtiTextCase)EPtiCaseFnLower); - ptiengine->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseFnLower); - keyIsMapped = ( keyMappings.Length() > 0 ); - } - - if ( keyIsMapped ) - { - if ( !(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) ) - { // 'new' inline edit - ptiengine->ClearCurrentWord(); - if (caseMan->CurrentCase() == EAknEditorTextCase) - { - ptiengine->MarkAutoCapitalized(); - } - - fepMan->StartInlineEditL(); - } - - TPtrC newText = ptiengine->AppendKeyPress((TPtiKey)aKey); - fepMan->UpdateInlineEditL(newText, newText.Length()); - - // Normally we update the case after key press. However, if Chr key is held down, the case update - // must not happen until when the Chr is released or the timer expires (in both of these cases - // the function KeyTimerExpired() will get callled). - if ( !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) ) - { - iOwner->CaseMan()->UpdateCase(ENullNaviEvent); - } - else - { - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringChrKeyPress); - } - - return ETrue; - } - // MT error fixing : If any key does not map any functionized char, - // its should not display any char fn mode, other behaviour as usual. - // If the Fn key stae indicate that fn key pres & we are looking for functionnized - // char, if its not availble it will do nothing. So we have to block the event - // go to framework. - if( aKey!=EStdKeyBackspace && fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - return ETrue; - - // Framework will handle the key event. - return EFalse; - } - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////// -// -TBool TAknFepInputStateEntryQwertyWesternPredictive::HandleNaviKeysL(TInt aKey, TKeyPressLength /*aLength*/) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (!(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))) - { - TBuf textToUncommit; - TBool comsumeKey; - if (!(fepMan->TryGetTextToUncommitL(textToUncommit, aKey, comsumeKey))) - { - // If T9 word length > 32, the navi key is consumed without action. - // Maybe should navigate inside word. - return comsumeKey; - } - ptiengine->ClearCurrentWord(); - ptiengine->SetCurrentWord(textToUncommit); // this set the input sequence of PtiEngine - fepMan->StartInlineEditL(fepMan->UncommittedText(), textToUncommit, - textToUncommit.Length(), EFalse); - } - - if (aKey == EKeyBackspace) - { - TInt activeIdx = KErrNone; - TPtrC newText = ptiengine->DeleteKeyPress(); - // To fix the Backspace Key issue in which focused word needs to be present in the editor. - ptiengine->HandleCommandL( EPtiCommandUserActionSetCurrentIndexOfCandidates, &activeIdx ); - TPtrC selectedWord = ptiengine->CurrentWord(); - fepMan->UpdateInlineEditL(selectedWord, selectedWord.Length()); - - fepMan->ClearFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - if (ptiengine->NumberOfCandidates() <= 1) - { - fepMan->SetFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - } - - iOwner->CaseMan()->UpdateCase(EBackspaceEvent); - fepMan->CloseUiIfWordDeletedL(); - } - - return ETrue; - } - - -///////////////////////////////////////////////////////////////////////////// -// -void TAknFepInputStateEntryQwertyWesternPredictive::LastWordInSelectionList() - { - - } - - -////////////////////////////////////////////////////////////////////////////// -// -void TAknFepInputStateEntryQwertyWesternPredictive::FirstWordInSelectionList() - { - } - - -///////////////////////////////////////////////////////////////// -// -void TAknFepInputStateEntryQwertyWesternPredictive::KeyTimerExpired() - { - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - caseMan->UpdateCase(ENullNaviEvent); - fepMan->ClearFlag( CAknFepManager::EFlagInsideMultitapInlineEditingTransaction ); - iData = 0; - } - } - - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryQwertyZhuyin.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyZhuyin.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,312 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStateEntryQwertyZhuyin methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryQwertyZhuyin.h" -#include "AknFepUIManagerStateInterface.h" - -#include -#include -#include //keys - -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" //FepMan flag - -const TInt KMaxCandidateCountFromCore = 6; - -TAknFepInputStateEntryQwertyZhuyin::TAknFepInputStateEntryQwertyZhuyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryQwertyBase(aOwner, aUIContainer) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - if (EPtiEngineZhuyinQwerty != ptiengine->InputMode()) - { - ptiengine->SetInputMode(EPtiEngineZhuyinQwerty); - } - TBool multiplePages = iOwner->PtiEngine()->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->CandidatePane()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->CandidatePane()->ShowVerticalScrollArrows(multiplePages); - - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - iOwner->PtiEngine()->SetCase(EPtiCaseLower); - _LIT(KToneNoneZhuyin, ""); - inputPane->SetToneMark(KToneNoneZhuyin); - - UpdateIndicator(); - } - -TBool TAknFepInputStateEntryQwertyZhuyin::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - TBool ret = ETrue; - - if((aKey == EPtiKey3 || - aKey == EPtiKey4 || - aKey == EPtiKey6 || - aKey == EPtiKey7 || - aKey == EStdKeySpace) && - (aLength == EShortKeyPress)) - { - ptiengine->CancelTimerActivity(); - if(ptiengine->SetToneMark(aKey)) - { - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(ptiengine->MoreCandidatePages()); - SetInputPaneToneMark(); - RefreshUI(); - } - } - else if(aKey == EStdKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(ptiengine->MoreCandidatePages()); - SetInputPaneToneMark(); - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if((aLength == EShortKeyPress) && iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - ptiengine->CancelTimerActivity(); - ptiengine->AppendKeyPress((TPtiKey)aKey); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(ptiengine->MoreCandidatePages()); - SetInputPaneToneMark(); - RefreshUI(); - } - else if(aKey == EStdKeyRightArrow || aKey == EStdKeyLeftArrow) - { - ptiengine->CancelTimerActivity(); - iOwner->ChangeState(ECandidate); - ret = EFalse; - } - else if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(!HandleVerticalNavigation(aKey)) - { - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if(candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - } - return ret; - } - -void TAknFepInputStateEntryQwertyZhuyin::KeyTimerExpired() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TPtrC candidates = ptiengine->CandidatePage(); - TText toneMark; - TBool toneMarkEntered = ptiengine->ToneMark(toneMark); - TBool toneMarkValid = ptiengine->IsToneMarkValidForSpelling(); - if(!candidates.Length() || (toneMarkEntered && !toneMarkValid)) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - ptiengine->DeleteKeyPress(); - SetInputPaneToneMark(); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(ptiengine->MoreCandidatePages()); - RefreshUI(); - } - } - -void TAknFepInputStateEntryQwertyZhuyin::RefreshUI() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // set container's position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - TPtrC candidates = ptiengine->CandidatePage(); - uiContainer->CandidatePane()->SetCandidateBuffer(candidates); - uiContainer->Enable(ETrue); - uiContainer->CandidatePane()->SelectFirst(); - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - inputPane->SetText(ptr); - UpdateIndicator(); - } - -void TAknFepInputStateEntryQwertyZhuyin::UpdateIndicator() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - uiContainer->CandidatePane()->ShowDownScrollArrows - (bufLength == KMaxCandidateCountFromCore ? ETrue : EFalse); - - if (candidatePane->SelectedIndex() == 0 && - ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - } - - if (bufLength != KMaxCandidateCountFromCore && - candidatePane->SelectedIndex() == (bufLength -1)) - { - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } - -TBool TAknFepInputStateEntryQwertyZhuyin::HandleVerticalNavigation(TInt aKey) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (aKey == EStdKeyDownArrow || aKey == EStdKeySpace) - { - if (iOwner->PtiEngine()->CandidatePage().Length() != - KMaxCandidateCountFromCore) - { - return ETrue; - } - ptiengine->NextCandidatePage(); - } - else if (aKey == EStdKeyUpArrow) - { - if (ptiengine->NumberOfCandidates() == 0) - { - return ETrue; - } - ptiengine->PreviousCandidatePage(); - } - else - { - return EFalse; - } - - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - candidatePane->SelectFirst(); - candidatePane->SetCandidateBuffer(ptiengine->CandidatePage()); - UpdateIndicator(); - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryQwertyZhuyin::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryQwertyZhuyin::HandleCommandL( TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryQwertyZhuyinPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryQwertyZhuyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,227 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStateQwertyZhuyinPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryQwertyZhuyinPhrase.h" -#include "AknFepUIManagerStateInterface.h" - -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" //FepMan flag - -#include -#include -#include //keys - -const TInt KInputPaneLength = 32; -_LIT(KSep, "'"); -_LIT(KReplace, ""); - - -TAknFepInputStateEntryQwertyZhuyinPhrase::TAknFepInputStateEntryQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryQwertyBaseChinesePhrase(aOwner, aUIContainer) - { - UIContainer()->CandidatePane()->ShowCandidateOrdinals(EFalse); - iOwner->PtiEngine()->SetInputMode(EPtiEngineZhuyinPhraseQwerty); - iOwner->PtiEngine()->SetCase(EPtiCaseLower); - } - -TBool TAknFepInputStateEntryQwertyZhuyinPhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - TBool ret = ETrue; - - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - return ret; - } - - if((aKey == EPtiKey3 || - aKey == EPtiKey4 || - aKey == EPtiKey6 || - aKey == EPtiKey7 || - aKey == EStdKeySpace) && - (aLength == EShortKeyPress)) - { - if(ptiengine->SetToneMark(aKey)) - { - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(multiplePages); - SetInputPaneToneMark(); - RefreshUI(); - } - } - else if(aKey == EStdKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - uiContainer->ShowVerticalScrollArrows(!(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage())); - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - SetInputPaneToneMark(); - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if((aLength == EShortKeyPress) && iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - ptiengine->AppendKeyPress((TPtiKey)aKey); - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - uiContainer->ShowVerticalScrollArrows(!(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage())); - SetInputPaneToneMark(); - RefreshUI(); - } - else if (aKey == EStdKeyLeftArrow ) - { - if (candidatePane->SelectedIndex() == 0 && - candidatePane->IsFirstPage()) - { - return ETrue; - } - else - { - iOwner->ChangeState(ECandidate); - return EFalse; - } - } - else if (aKey == EStdKeyRightArrow) - { - if (candidatePane->IsLastPage() && - (candidatePane->SelectedIndex() == candidatePane->VisibleCandidateCount() - 1)) - { - return ETrue; - } - else - { - iOwner->ChangeState(ECandidate); - return EFalse; - } - } - else if(aKey == EStdKeyDevice3) - { - TInt index = MapKeyToIndex(aKey); - - candidatePane->SelectIndex(index); - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - iOwner->ChangeState(EPredictiveCandidate); - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - else if (aKey == EStdKeyEnter) - { - TBuf currentText; - inputPane->GetText(currentText); - - while(currentText.Find(KSep)> 0) - { - currentText.Replace(currentText.Find(KSep), 1,KReplace); - } - - - if(currentText.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(currentText); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - } - } - } - else - { - ret = TAknFepInputStateEntryQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - return ret; - } - -void TAknFepInputStateEntryQwertyZhuyinPhrase::KeyTimerExpired() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // set container's position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - TBuf currentText; - inputPane->GetText(currentText); - if (ptr.Length() < currentText.Length()) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - inputPane->SetText(ptr); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryStroke.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryStroke.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,197 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryStroke methods. -* -*/ - - - - - - - - - - - - -#include -#include - -#include "AknFepUiInputStateEntryStroke.h" - -#include "AknFepUIManagerStateInterface.h" - -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" - -const TInt KMaxCandidateCountFromCore = 6; - -TAknFepInputStateEntryStroke::TAknFepInputStateEntryStroke( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryZhuyinStrokeBase(aOwner, aUIContainer) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutInput); - uiContainer->CandidatePane()->SelectFirst(); - uiContainer->InputPane()->SetOverrideFontId(KScreenFontUidStrokes); - uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - if ( EPtiEngineStroke != ptiengine->InputMode() ) - { - ptiengine->SetInputMode(EPtiEngineStroke); - } - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - } - -void TAknFepInputStateEntryStroke::HandleCommandL(TInt /*aCommandId*/) - { - RefreshUI(); - } - -TBool TAknFepInputStateEntryStroke::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if(aKey == EKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - RefreshUI(); - SetInputPaneToneMark(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if((aLength == EShortKeyPress) && iOwner->IsValidChineseInputKey(aKey)) - { - iOwner->FepMan()->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - - if (stringBeforeLength != stringAfterLength) - { - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - SetInputPaneToneMark(); - RefreshUI(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - else if(aKey == EKeyDownArrow) - { - if (iOwner->PtiEngine()->CandidatePage().Length() == - KMaxCandidateCountFromCore) - { - ptiengine->NextCandidatePage(); - RefreshUI(); - } - } - else if(aKey == EKeyUpArrow) - { - if (ptiengine->NumberOfCandidates() != 0) - { - ptiengine->PreviousCandidatePage(); - RefreshUI(); - } - } - else if(aKey == EKeyOK || aKey == EKeyRightArrow || aKey == EKeyLeftArrow) - { - iOwner->ChangeState(ECandidate); - return EFalse; - } - - else if(aKey == EPtiKeyStar) - { - return ETrue; - } - - else if (!iOwner->IsValidChineseInputKey(aKey)) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - - return ETrue; - } - -void TAknFepInputStateEntryStroke::RefreshUI() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - - // Universal layout - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - TPtrC candidates = ptiengine->CandidatePage(); - uiContainer->CandidatePane()->SetCandidateBuffer(candidates); - uiContainer->Enable(ETrue); - - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - inputPane->SetText(ptr); - if (ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - uiContainer->CandidatePane()->ShowDownScrollArrows - (bufLength == KMaxCandidateCountFromCore ? ETrue : EFalse); - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowRightScrollArrows(bufLength ? ETrue : EFalse); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryStrokePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryStrokePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,815 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Stroke phrase entry state -* -*/ - - - - - - - - - - - - -// System includes -#include -#include //CAknWarningNote - -// User includes -#include "AknFepUiInputStateEntryStrokePhrase.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" -#include "AknFepUICtrlInputPane.h" -#include "aknfepuictrleditpane.h" -#include "AknFepManager.h" - -// const param -const TInt KMinCnadidateCount = 1; -const TInt KMaxKeystrokeCount = 31; -const TInt KMaxPhraseCreationCount = 7; -const TInt KManualChangeState = 0; -const TInt KChangeStatebyBackSpce = 0x1000;//set popup flag for change state. -//const TUint16 KSegment = 0x0020; -_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" ); -_LIT( KDelimiter, "\x2022"); - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryStrokePhrase:: -// TAknFepInputStateEntryStrokePhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepInputStateEntryStrokePhrase::TAknFepInputStateEntryStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) : - TAknFepInputStateStrokePhraseBase( aOwner, aUIContainer) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - iState = EEntry; - uiContainer->SetLayout( MAknFepUICtrlContainerChinese::ELayoutKeystroke ); - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - candidatePane->SetHighlighted(ETrue); - candidatePane->ShowCandidateOrdinals(EFalse); - candidatePane->SelectFirstPhrase(); - uiContainer->InputPane()->SetOverrideFontId( 0 ); - iOwner->FepMan()->EntryPhrase( ETrue ); - - RefreshUI( ETrue ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryStrokePhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryStrokePhrase::HandleKeyL( - TInt aKey, - TKeyPressLength aLength ) - { - TBool ret = ETrue; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - switch ( aKey ) - { - case EPtiKeyStar: - { - break; - } - case EKeyUpArrow: - { - if ( !candidatePane->IsFirstPage() ) - { - candidatePane->PreviousCandidatePage(); - RefreshCandidate(); - } - else - { - popup->SetState( EFalse ); - popup->SetState( KManualChangeState ); - popup->SetChangeState( ETrue ); - //change state to sequence edit - iOwner->ChangeState( EStrokeSequenceEdit ); - } - break; - } - case EKeyDownArrow: - { - if ( CheckKeyNeedRepeat( aLength ) ) - { - if ( candidatePane->IsLastPage( ) ) - { - return ETrue; - } - if ( candidatePane->NeedGetNewCandidatePage( ) ) - { - if ( !iOwner->PtiEngine()->NextCandidatePage( ) ) - { - if ( candidatePane->IsLastPage( ) ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - } - else - { - CDesCArrayFlat* phraseCandidates = - candidatePane->CandidateArray( ); - RPointerArray list; - GetNewCandidatesL( iOwner->PtiEngine()->CandidatePage( ), list ); - for (TInt i = 0; i < list.Count( ); ++i ) - { - phraseCandidates->AppendL( *(list[i]) ); - } - list.ResetAndDestroy(); - } - } - candidatePane->NextCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - RefreshCandidate(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - break; - } - case EKeyLeftArrow: - case EKeyRightArrow: - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( ECandidate ); - ret = EFalse; - break; - } - case EKeyCBA1: - case EKeyOK: - { - if ( CheckKeyNeedRepeat( aLength ) ) - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( ECandidate ); - ret = EFalse; - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - break; - } - default: - return TAknFepInputStateStrokePhraseBase::HandleKeyL( aKey, aLength ); - } - - return ret; - } - - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryStrokePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryStrokePhrase::HandleCommandL( TInt aCommandId ) - { - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - HandleCommitL(); - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryStrokePhrase::HandleCommit -// Handle CBA1,ok and select candidate phrase key press. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryStrokePhrase::HandleCommitL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke(); - CDesCArrayFlat* phrase = popup->ChooseChineseCharacterArrayForStroke(); - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if( text.Length() ) - { - if ( CommitInlineEEPL( text ) ) - { - if ( phrase->Count() >= KMaxPhraseCreationCount ) - { - if ( keystrokeArray->Count() != 0 ) - { - CAknWarningNote* errnote = new( ELeave ) CAknWarningNote(); - errnote->SetTone( CAknNoteDialog::EWarningTone ); - errnote->ExecuteLD( KMaxPhraseNote ); - } - else - { - iOwner->FepMan()->PhraseCreation( EFalse ); - iOwner->FepMan()->EntryPhrase( EFalse ); - iOwner->FepMan()->PinyinPhraseCreation( EFalse ); - iOwner->FepMan()->EnableKeyStar( ETrue ); - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - } - } - else - { - if ( !iOwner->FepMan()->IsPhraseCreation() ) - { - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - iOwner->FepMan()->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - else - { - iOwner->FepMan()->PhraseCreation( EFalse ); - iOwner->FepMan()->EntryPhrase( EFalse ); - iOwner->FepMan()->PinyinPhraseCreation( EFalse ); - iOwner->FepMan()->EnableKeyStar( ETrue ); - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - } - } - popup->ResetStrokeArray(); - } - else - { - editPane->SetCursorIndexOfKeystroke( 0 ); - if ( CheckFirstGroupStroke() ) - { - popup->SetState( ETrue ); - iOwner->ChangeState( EEntry ); - } - else - { - popup->SetState( ETrue ); - //change state to sequence edit - iOwner->ChangeState( EStrokeSequenceEdit ); - } - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryStrokePhrase::CommitInlineEEPL -// Commit phrase to the EEP ctrl. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryStrokePhrase::CommitInlineEEPL( - const TDesC& aText ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke(); - CDesCArrayFlat* phrase = popup->ChooseChineseCharacterArrayForStroke(); - CDesCArrayFlat* phraseKeystroke = - popup->ChooseChineseCharacterArrayKeystrokeForStroke(); - - TBuf phraseCreated; - - TInt textCount = aText.Length(); - TInt allTextCount = 0; - TInt i = 0; - TInt j = 0; - // append character to chinese array - for ( i = 0; i < textCount; i++ ) - { - phrase->AppendL( aText.Mid( i, 1 ) ); - } - - TInt characterCount = phrase->Count(); - - // if chinese character is more than 7 or not - // if more than 7 show a warning not - if ( characterCount >= KMaxPhraseCreationCount ) - { - for ( i = 0; i < KMaxPhraseCreationCount; ++i ) - { - phraseCreated.Append( phrase->MdcaPoint(i) ); - } - AddPhraseToDB( phraseCreated ); - iOwner->FepMan()->NewTextL( phraseCreated ); - iOwner->FepMan()->CommitInlineEditL(); - } - - // calculate the total number of character according to stroke - for ( i = 0; i < keystrokeArray->Count(); i++ ) - { - if ( keystrokeArray->MdcaPoint( i ) == KDelimiter ) - { - allTextCount = allTextCount + 1; - } - } - - allTextCount = allTextCount + 1; - if ( keystrokeArray->MdcaPoint( keystrokeArray->Count() - 1 ) == - KDelimiter ) - { - allTextCount--; - } - - // if total number is less than the character's count which user has selected - // commit the character to editor and user db - if ( allTextCount <= textCount && characterCount < KMaxPhraseCreationCount ) - { - for ( i = 0; i < characterCount; ++i ) - { - phraseCreated.Append( phrase->MdcaPoint(i) ); - } - iOwner->FepMan()->NewTextL( phraseCreated ); - iOwner->FepMan()->CommitInlineEditL(); - AddPhraseToDB( phraseCreated ); - return ETrue; - } - - // add the stroke to chosen character array - // delete key stroke which charactor is corresponding - for ( j = 0; j < textCount; j++ ) - { - TInt keyCount = 0; - TInt ret = keystrokeArray->Find( KDelimiter , - keyCount, - ECmpFolded ); - - if ( ret != 0) - { - keyCount = keystrokeArray->Count(); - j = textCount; - } - else - { - keyCount++; - } - - TBuf keystroke; - for ( i = 0; i < keyCount; i++ ) - { - keystroke.Append( keystrokeArray->MdcaPoint( 0 ) ); - keystrokeArray->Delete( 0 ); - } - phraseKeystroke->AppendL( keystroke ); - } - if ( keystrokeArray->Count() > 0 ) - { - iOwner->FepMan()->PhraseCreation( ETrue ); - } - if ( characterCount >= KMaxPhraseCreationCount ) - { - return ETrue; - } - - return EFalse; - } - -// End of file - -// --------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------- -// -TAknFepInputStateEditStrokePhrase::TAknFepInputStateEditStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ) : - TAknFepInputStateStrokePhraseBase( aOwner, aUIContainer) - { - iState = EStrokeSequenceEdit; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->FocusCandidatePane( EFalse ); - uiContainer->CandidatePane()->ShowCandidateOrdinals( EFalse ); - uiContainer->SetLayout( MAknFepUICtrlContainerChinese::ELayoutKeystroke ); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->ShowVerticalScrollArrows( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->InputPane()->SetOverrideFontId( 0 ); - - RefreshUI(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEditStrokePhrase::HandleKeyL -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEditStrokePhrase::HandleKeyL( - TInt aKey, - TKeyPressLength aLength ) - { - return TAknFepInputStateStrokePhraseBase::HandleKeyL( - aKey, - aLength ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryStrokePhraseCreation:: -// TAknFepInputStateEntryStrokePhraseCreation -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepInputStateCandidateStrokePhrase::TAknFepInputStateCandidateStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateStrokePhraseBase(aOwner, aUIContainer) - { - iState = ECandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength > KMinCnadidateCount; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->EditPaneWindow()->DisableCursor(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateStrokePhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateCandidateStrokePhrase::HandleKeyL( - TInt aKey, - TKeyPressLength /*aLength*/ ) - { - TBool ret = ETrue; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - // it may be one of the 'valid' numbers.. - TInt index = MapKeyToIndex(aKey); - - switch( aKey ) - { - case EKeyBackspace: - { - editPane->EnableCursor(); - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EEntry ); - popup->SetFlag( KChangeStatebyBackSpce ); - break; - } - case EKeyDownArrow: - { - if ( candidatePane->IsLastPage() ) - { - return ETrue; - } - if ( candidatePane->NeedGetNewCandidatePage( ) ) - { - if ( !iOwner->PtiEngine()->NextCandidatePage( ) ) - { - if ( candidatePane->IsLastPage() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - } - else - { - CDesCArrayFlat* phraseCandidates = - candidatePane->CandidateArray( ); - RPointerArray list; - GetNewCandidatesL( iOwner->PtiEngine()->CandidatePage( ), list ); - for (TInt i = 0; i < list.Count( ); ++i ) - { - phraseCandidates->AppendL( *(list[i]) ); - } - list.ResetAndDestroy(); - } - } - candidatePane->NextCandidatePage( ); - RefreshCandidate( ); - break; - } - case EKeyUpArrow: - { - if( !candidatePane->IsFirstPage() ) - { - candidatePane->PreviousCandidatePage(); - RefreshCandidate(); - } - else - { - popup->SetChangeState( ETrue ); - popup->SetState( EFalse ); - iOwner->ChangeState( EStrokeSequenceEdit ); - } - break; - } - case EKeyLeftArrow: - case EKeyRightArrow: - { - HandleHorizontalNavigation( aKey ); - break; - } - case EPtiKeyStar: - { - break; - } - case EKeyCBA2: - { - popup->ResetStrokeArray(); - iOwner->FepMan()->EntryPhrase( EFalse ); - iOwner->FepMan()->PhraseCreation( EFalse ); - iOwner->FepMan()->TryCloseUiL(); - break; - } - default: - { - if ( ( aKey == EKeyOK ) || aKey == EKeyCBA1 || - candidatePane->SelectIndex( index,EFalse ) ) - { - HandleCommitL(); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - break; - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateStrokePhrase::HandleHorizontalNavigation -// Handle Horizontal Navigation. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateStrokePhrase::HandleHorizontalNavigation( - TInt aKey ) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - // Do navigation... - if (aKey == EKeyLeftArrow) - { - if(!candidatePane->SelectPrev()) - { - candidatePane->SetCandidateBuffer(); - candidatePane->SelectLastPhrase(); - } - } - else if (aKey == EKeyRightArrow) - { - if(!candidatePane->SelectNext()) - { - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateStrokePhrase::HandleCommit -// Handle CBA1,ok and select candidate phrase key press. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateStrokePhrase::HandleCommitL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke(); - CDesCArrayFlat* phrase = popup->ChooseChineseCharacterArrayForStroke(); - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if( text.Length() ) - { - if ( CommitInlineEEPL( text ) ) - { - if ( phrase->Count() <= KMaxPhraseCreationCount && !iOwner->FepMan()->IsPhraseCreation() ) - { - if ( !iOwner->FepMan()->IsPhraseCreation( ) ) - { - if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - iOwner->FepMan()->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL( ); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - else - { - iOwner->FepMan()->PhraseCreation( EFalse ); - iOwner->FepMan()->EntryPhrase( EFalse ); - iOwner->FepMan()->PinyinPhraseCreation( EFalse ); - iOwner->FepMan()->EnableKeyStar( ETrue ); - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - } - } - else - { - if ( keystrokeArray->Count() != 0 && phrase->Count() >= KMaxPhraseCreationCount ) - { - CAknWarningNote* errnote = new( ELeave ) CAknWarningNote(); - errnote->SetTone( CAknNoteDialog::EWarningTone ); - errnote->ExecuteLD( KMaxPhraseNote ); - } - else - { - iOwner->FepMan()->PhraseCreation( EFalse ); - iOwner->FepMan()->EntryPhrase( EFalse ); - iOwner->FepMan()->PinyinPhraseCreation( EFalse ); - iOwner->FepMan()->EnableKeyStar( ETrue ); - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - } - } - popup->ResetStrokeArray(); - } - else - { - editPane->SetCursorIndexOfKeystroke( 0 ); - if ( CheckFirstGroupStroke() ) - { - popup->SetState( ETrue ); - iOwner->ChangeState( EEntry ); - } - else - { - popup->SetState( ETrue ); - //change state to sequence edit - iOwner->ChangeState( EStrokeSequenceEdit ); - } - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateStrokePhrase::CommitInlineEEPL -// Commit phrase to the EEP ctrl. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateCandidateStrokePhrase::CommitInlineEEPL( - const TDesC& aText ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke(); - CDesCArrayFlat* phrase = popup->ChooseChineseCharacterArrayForStroke(); - CDesCArrayFlat* phraseKeystroke = - popup->ChooseChineseCharacterArrayKeystrokeForStroke(); - - TBuf phraseCreated; - - TInt textCount = aText.Length(); - TInt allTextCount = 0; - TInt i = 0; - TInt j = 0; - // append character to chinese array - for ( i = 0; i < textCount; i++ ) - { - phrase->AppendL( aText.Mid( i, 1 ) ); - } - - TInt characterCount = phrase->Count(); - - // if chinese character is more than 7 or not - // if more than 7 show a warning not - if ( characterCount >= KMaxPhraseCreationCount ) - { - for ( i = 0; i < KMaxPhraseCreationCount; ++i ) - { - phraseCreated.Append( phrase->MdcaPoint(i) ); - } - AddPhraseToDB( phraseCreated ); - iOwner->FepMan()->NewTextL( phraseCreated ); - iOwner->FepMan()->CommitInlineEditL(); - } - - // calculate the total number of character according to stroke - for ( i = 0; i < keystrokeArray->Count(); i++ ) - { - if ( keystrokeArray->MdcaPoint( i ) == KDelimiter ) - { - allTextCount = allTextCount + 1; - } - } - - allTextCount = allTextCount + 1; - if ( keystrokeArray->MdcaPoint( keystrokeArray->Count() - 1 ) == - KDelimiter ) - { - allTextCount--; - } - - // if total number is less than the character's count which user has selected - // commit the character to editor and user db - if ( allTextCount <= textCount && characterCount < KMaxPhraseCreationCount ) - { - for ( i = 0; i < characterCount; ++i ) - { - phraseCreated.Append( phrase->MdcaPoint(i) ); - } - iOwner->FepMan()->NewTextL( phraseCreated ); - iOwner->FepMan()->CommitInlineEditL(); - AddPhraseToDB( phraseCreated ); - return ETrue; - } - - // add the stroke to chosen character array - // delete key stroke which charactor is corresponding - for ( j = 0; j < textCount; j++ ) - { - TInt keyCount = 0; - TInt ret = keystrokeArray->Find( KDelimiter , - keyCount, - ECmpFolded ); - - if ( ret != 0) - { - keyCount = keystrokeArray->Count(); - j = textCount; - } - else - { - keyCount++; - } - - TBuf keystroke; - for ( i = 0; i < keyCount; i++ ) - { - keystroke.Append( keystrokeArray->MdcaPoint( 0 ) ); - keystrokeArray->Delete( 0 ); - } - phraseKeystroke->AppendL( keystroke ); - } - if ( keystrokeArray->Count() > 0 ) - { - iOwner->FepMan()->PhraseCreation( ETrue ); - } - - if ( characterCount >= KMaxPhraseCreationCount ) - { - return ETrue; - } - - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidateStrokePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCandidateStrokePhrase::HandleCommandL( TInt aCommandId ) - { - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - // case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - HandleCommitL(); - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryThaiPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryThaiPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,212 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryThaiPredictive methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryThaiPredictive.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" -#include "AknFepPanic.h" -#include "AknFepCaseManager.h" - -#include //CPtiEngine -#include //keys -#include -#include - -TAknFepInputStateEntryThaiPredictive:: -TAknFepInputStateEntryThaiPredictive(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateEntryWesternPredictive(aOwner) - { - //this class insists on the existence of a case manager - __ASSERT_DEBUG(iOwner->CaseMan(), AknFepPanic(EAknFepPanicNoCaseManager)); - - iState = EEntry; - iMatchState = EWordMatchNone; - CPtiEngine* ptiengine = iOwner->PtiEngine(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - ptiengine->SetInputMode(EPtiEnginePredictive); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool isUnlimitedEditor = EFalse; - ptiengine->SetMaxLengthForAutoCompletedCandidates(fepMan->EditorFreeSpaceForAutoWordCompletion(isUnlimitedEditor )); - // To set the input mode - if(fepMan->IsAutoCompleteOn()) - { - TRAP_IGNORE(ptiengine->HandleCommandL(EPtiCommandEnableAutoCompletion)); - } - else - { - TRAP_IGNORE(ptiengine->HandleCommandL(EPtiCommandDisableAutoCompletion)); - } - - TPtiKeyboardType keyboard = fepMan->KeyboardLayout(); - ptiengine->SetKeyboardType(keyboard); - TBool isNumberCandidateShown = fepMan->IsAdvancedPredictiveNumberCandidateShown(); - TRAP_IGNORE(ptiengine->HandleCommandL( EPtiCommandSetNumberCandidateStatus, &isNumberCandidateShown )); -#else - ptiengine->ClearCurrentWord(); -#ifdef RD_PRED_AW_COMPLETION - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - // To set the input mode - if(fepMan->IsAutoCompleteOn()) - { - ptiengine->SetInputMode(EPtiEngineWordCompletion); - } - else -#endif // RD_PRED_AW_COMPLETION - { - ptiengine->SetInputMode(EPtiEnginePredictive); - } -#endif // RD_INTELLIGENT_TEXT_INPUT - ptiengine->SetCase(EPtiCaseLower); - } - -TBool TAknFepInputStateEntryThaiPredictive::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool response = ETrue; - - switch (aKey) - { - case EPtiKey1: //fall through - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - case EPtiKey0: - case EPtiKeyStar: - response = HandleStandardNumericKeysL(aKey, aLength); - break; - case EKeyDownArrow: - response = HandleDownKeyL(); - break; - case EKeyUpArrow: - response = HandleUpKeyL(); - break; - case EKeyRightArrow: // fall through - case EKeyLeftArrow: - case EKeyBackspace: - response = HandleNaviKeysL(aKey, aLength); - break; - default: - response = EFalse; - break; - } - return response; - } - -TBool TAknFepInputStateEntryThaiPredictive::HandleDownKeyL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (!(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))) - { - return EFalse; - } - else - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - //no more matches - fepMan->PlaySound(EAvkonSIDWarningTone); - } - else if (ptiengine->NumberOfCandidates()<=1) - { - // only one match - if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY); - iMatchState = EWordMatchLast; - } - } - else - { - // > 1 match - if (iMatchState == EWordMatchLast && !(ptiengine->LastEnteredKey() == EPtiKey1)) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_PREVIOUS); - } - else if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_EMPTY_PREVIOUS); - iMatchState = EWordMatchStd; - } - TPtrC newText = ptiengine->NextCandidate(); - fepMan->UpdateInlineEditL(newText, 0); - } - } - return ETrue; - } - -TBool TAknFepInputStateEntryThaiPredictive::HandleUpKeyL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - if (!(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))) - { - return EFalse; - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT - TInt lastCandidateIndex = ptiengine->NumberOfCandidates() -1; - if(lastCandidateIndex >= 0) - { - // Get last word on list - fepMan->LaunchCandidatePopupListL( lastCandidateIndex ); - } - else - { - TInt wordIndexToSelect = 0; - // Get next word on list (wrap around if at end) - ptiengine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, - &wordIndexToSelect ); - wordIndexToSelect < lastCandidateIndex ? wordIndexToSelect++ : wordIndexToSelect = 0; - fepMan->LaunchCandidatePopupListL( wordIndexToSelect ); - } - -#else - if (!( (iMatchState == EWordMatchFirst) || !(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)))) - { - if (iMatchState == EWordMatchLast || iMatchState == EWordMatchAfterLast) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_EMPTY_PREVIOUS); - } - iMatchState = EWordMatchStd; - TPtrC prevText = ptiengine->PreviousCandidate(); - fepMan->UpdateInlineEditL(prevText, 0); - } - -#endif //RD_INTELLIGENT_TEXT_INPUT - return ETrue; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryVietnamesePredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryVietnamesePredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,370 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateEntryVietnamesePredictive methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryVietnamesePredictive.h" -#include "AknFepUIInputStateInitialVietnameseMultitap.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepCaseManager.h" -#include "AknFepVietnameseToneManager.h" - -#include -#include //CPtiEngine -#include //keys -#include -#include -#include - -#include "AknFepUiManagerWestern.h" -TAknFepInputStateEntryVietnamesePredictive:: -TAknFepInputStateEntryVietnamesePredictive(MAknFepUIManagerStateInterface* aOwner) -: TAknFepInputStateEntryWesternPredictive(aOwner) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - if (ptiengine->CurrentLanguage()->LanguageCode() != ELangVietnamese) - { - TRAP_IGNORE(ptiengine->ActivateLanguageL(ELangVietnamese)); - } -#ifndef RD_INTELLIGENT_TEXT_INPUT - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if(fepMan->IsAutoCompleteOn()) - { - ptiengine->SetInputMode(EPtiEngineWordCompletion); - } - else -#endif - { - ptiengine->SetInputMode(EPtiEnginePredictive); - } - } - -TBool TAknFepInputStateEntryVietnamesePredictive::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - TBool response = ETrue; - - switch (aKey) - { - case EPtiKey1: //fall through - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - response = HandleStandardNumericKeysL(aKey, aLength); - break; - case EPtiKey0: - if ( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { - fepMan->TryRemoveNoMatchesIndicatorL(); -#ifndef RD_INTELLIGENT_TEXT_INPUT - if(fepMan->IsAutoCompleteOn()) - { - fepMan->RemoveSuggestedCompletionL(); - } -#endif - } - fepMan->UpdateCbaL(NULL); - if (fepMan->IsFlagSet(CAknFepManager::EFlagCompoundWord)) - { - if (fepMan->IsCursorAtEndOfWord()) - { - fepMan->AddCompoundWordToUdbL(); - } - fepMan->ClearFlag(CAknFepManager::EFlagCompoundWord); - } - ptiengine->CommitCurrentWord(); // commit word after calling TryCloseUiL(). - fepMan->TryCloseUiL(); - response = EFalse; //pass to initial state to handle key - break; - case EKeyLeftArrow: // fall through - case EKeyRightArrow: - response = HandleNaviKeysL(aKey, aLength); - break; - case EKeyBackspace: - response = HandleDeleteKeysL(aKey, aLength); - break; - case EPtiKeyStar: - response = HandleStarKeyL(aLength); - break; - case EKeyDownArrow: // Japanese input required - if (fepMan->IsAbleScrollLatinPredictive()) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - DoNextMatch(); - } - else - { - response = EFalse; - } - } - else - { - response = EFalse; - } - break; - case EKeyUpArrow: // Japanese input required - if (fepMan->IsAbleScrollLatinPredictive()) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - DoPreviousMatchL(); - } - else - { - response = EFalse; - } - } - else - { - response = EFalse; - } - break; - default: - response = EFalse; - break; - } - return response; - } - -TBool TAknFepInputStateEntryVietnamesePredictive::HandleStarKeyL(TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (aLength == ELongKeyPress) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - // replace with previous match - fepMan->TryRemoveNoMatchesIndicatorL(); - iMatchState = EWordMatchStd; - TPtrC newText = ptiengine->PreviousCandidate(); - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - -#ifndef RD_INTELLIGENT_TEXT_INPUT - // to rip off suggested completion when SCT is launched - if(fepMan->IsAutoCompleteOn()) - { - fepMan->RemoveSuggestedCompletionL(); - } -#endif - if (!fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - //no more matches - fepMan->PlaySound(EAvkonSIDWarningTone); - } - else if (ptiengine->NumberOfCandidates()<=1) - { - // only one match - if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY); - iMatchState = EWordMatchLast; - } - } - else - { - // > 1 match - if (iMatchState == EWordMatchLast && !(ptiengine->LastEnteredKey() == EPtiKey1)) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_PREVIOUS); - } - else if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_EMPTY_PREVIOUS); - iMatchState = EWordMatchStd; - } - TPtrC newText = ptiengine->NextCandidate(); - if(newText.Length() == 1) - { - TDigitType digittype = fepMan->LocalDigit(); - TChar chchar(newText[0]); - if(!chchar.IsDigit() || (chchar.IsDigit() && !digittype)) - { - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - else - { - TBuf<1> tempbuf; - switch(digittype) - { - case EDigitTypeDevanagari: - { - chchar = (newText[0] + KLatinToDevanagariDigitsDelta); - } - break; - case EDigitTypeArabicIndic: - { - chchar = (newText[0] + KLatinToArabicIndicDigitsDelta); - } - break; - case EDigitTypeEasternArabicIndic: - { - chchar = (newText[0] + KLatinToEasternArabicIndicDigitsDelta); - } - } - tempbuf.Append(chchar); - fepMan->UpdateInlineEditL(tempbuf, tempbuf.Length()); - } - } - else - { - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - } - } - else - { - if (!fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - } - return ETrue; - } - -TBool TAknFepInputStateEntryVietnamesePredictive::HandleDeleteKeysL(TInt aKey, TKeyPressLength /*aLength*/) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (!(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))) - { - if(fepMan->PreviousChar() == TText(0x0020)) // 0x0020 is space - { - return EFalse; - } - TBuf textToUncommit; - TBool comsumeKey; - if (!(fepMan->TryGetTextToUncommitL(textToUncommit, aKey, comsumeKey))) - { - // If T9 word length > 32, the navi key is consumed without action. - // Maybe should navigate inside word. - return comsumeKey; - } - ptiengine->SetCurrentWord(textToUncommit); - fepMan->ClearFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - if (ptiengine->NumberOfCandidates() <= 1) - { - fepMan->SetFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - } - fepMan->StartInlineEditL(fepMan->UncommittedText(), textToUncommit, - textToUncommit.Length(), EFalse); - } - - if (aKey == EKeyBackspace) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - fepMan->TryRemoveNoMatchesIndicatorL(); - fepMan->UpdateCbaL(NULL); - return ETrue; - } - else if (iMatchState != EWordMatchFirst) - { - //let FirstWordInSelectionList() reset the CBA - iMatchState = EWordMatchNone; - } - - TBuf<2> newText; - // Get the last character from the current editor - TText prevChar = fepMan->PreviousChar(); - TBool vowelList = EFalse; - for (TInt index = 0; index < KNumberOfToneMarks; index ++) - { - if (VietToneMatrix[0][index] == prevChar) - { - vowelList = ETrue; - break; - } - } - - if (vowelList) - { - ((CAknFepManager*)fepMan)->RemovePreviousCharacterL(); - } - else - { - if (prevChar <= 0) - { - return EFalse; - } - - // Judge if the last character needs to be converted - if ( TAknFepInputStateInitialVietnameseMultitap::NeedsVietnameseBkDelSupport(prevChar, - newText) ) - { - ((CAknFepManager*)fepMan)->RemovePreviousCharacterL(); - } - else - { - TPtrC updatedText = ptiengine->DeleteKeyPress(); - if(ptiengine->InputMode() != EPtiEngineWordCompletion && newText.Length()) - { - fepMan->UpdateInlineEditL(updatedText, newText.Length()); - } - else - { - fepMan->UpdateInlineEditL(updatedText, updatedText.Length()); - } - } - } - - fepMan->ClearFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - if (ptiengine->NumberOfCandidates() <= 1) - { - fepMan->SetFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - } - - iOwner->CaseMan()->UpdateCase(EBackspaceEvent); - fepMan->CloseUiIfWordDeletedL(); - } - - return ETrue; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryWesternPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryWesternPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,938 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryWesternPredictive methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryWesternPredictive.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" -#include "AknFepPanic.h" -#include "AknFepCaseManager.h" -#include "AknFepPluginManager.h" -#include "AknFepManagerInterface.h" // MAknFepManagerInterface - -#include -#include //CPtiEngine -#include //keys -#include //FeatureManager -#include -#include -#include - -// The Maximum world size -const TInt KMaxWordSize = 63; -TAknFepInputStateEntryWesternPredictive:: -TAknFepInputStateEntryWesternPredictive(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateBase(aOwner) - { - //this class insists on the existence of a case manager - __ASSERT_DEBUG(iOwner->CaseMan(), AknFepPanic(EAknFepPanicNoCaseManager)); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - iState = EEntry; - iMatchState = EWordMatchNone; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - TPtiTextCase caseMode = ptiengine->Case(); - ptiengine->SetInputMode(EPtiEnginePredictive); - -#ifdef RD_SCALABLE_UI_V2 - - if (fepMan->PluginUIManager()->MatchCandidateList().Count() > 0) - { - fepMan->PluginUIManager()->ResetCandidateList(); - } - - iIsLastWord = EFalse; -/* - if (fepMan->PluginUIManager()->GetSpellText()) - { - TBuf textToUncommit; - textToUncommit.Zero(); - textToUncommit.Copy(*fepMan->PluginUIManager()->GetSpellText()); - ptiengine->SetCurrentWord(textToUncommit); - } -*/ -#ifdef RD_INTELLIGENT_TEXT_INPUT - ptiengine->SetInputMode(EPtiEnginePredictive); - TBool isUnlimitedEditor = EFalse; - ptiengine->SetMaxLengthForAutoCompletedCandidates( - fepMan->EditorFreeSpaceForAutoWordCompletion(isUnlimitedEditor )); - // To set the input mode - if(fepMan->IsAutoCompleteOn()) - { - TRAP_IGNORE(ptiengine->HandleCommandL(EPtiCommandEnableAutoCompletion)); - } - else - { - TRAP_IGNORE(ptiengine->HandleCommandL(EPtiCommandDisableAutoCompletion)); - } - - TPtiKeyboardType keyboard = fepMan->KeyboardLayout(); - ptiengine->SetKeyboardType(keyboard); - - TBool isNumberCandidateShown = fepMan->IsAdvancedPredictiveNumberCandidateShown(); - TRAP_IGNORE(ptiengine->HandleCommandL( EPtiCommandSetNumberCandidateStatus, - &isNumberCandidateShown )); -#endif - -#else - - ptiengine->ClearCurrentWord(); - -#ifndef RD_INTELLIGENT_TEXT_INPUT - - // To set the input mode - if(fepMan->IsAutoCompleteOn()) - { - ptiengine->SetInputMode(EPtiEngineWordCompletion); - } -#endif // RD_PRED_AW_COMPLETION -#endif //RD_SCALABLE_UI_V2 - ptiengine->SetCase(caseMode); - } - -TBool TAknFepInputStateEntryWesternPredictive::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - -#ifdef RD_SCALABLE_UI_V2 - - if (fepMan->PluginUIManager()->GetSpellText()) - { - fepMan->PluginUIManager()->SpellText(NULL); - } -#endif // - - TBool response = ETrue; - - switch (aKey) - { - case EPtiKey1: //fall through - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: -#ifdef RD_SCALABLE_UI_V2 - fepMan->PluginUIManager()->SetFingerMatchSelectionState(EFalse); -#endif //RD_SCALABLE_UI_V2 - - response = HandleStandardNumericKeysL(aKey, aLength); - break; - case EPtiKey0: - if ( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { - fepMan->TryRemoveNoMatchesIndicatorL(); -#ifndef RD_INTELLIGENT_TEXT_INPUT - // To rip off suggested word completion when user presses SPACE - if(fepMan->IsAutoCompleteOn()) - { - fepMan->RemoveSuggestedCompletionL(); - } -#endif - } - fepMan->UpdateCbaL(NULL); - if (fepMan->IsFlagSet(CAknFepManager::EFlagCompoundWord)) - { - if (fepMan->IsCursorAtEndOfWord()) - { - fepMan->AddCompoundWordToUdbL(); - } - fepMan->ClearFlag(CAknFepManager::EFlagCompoundWord); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { - ptiengine->CommitCurrentWord(); - fepMan->CommitInlineEditL(); - fepMan->TryCloseUiL(); - response = EFalse; - } - else - { -#endif - fepMan->SetDelayedCommit(); // Delayed 'commit'. - fepMan->TryCloseUiL(); - response = EFalse; //pass to initial state to handle key -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif -#ifdef RD_SCALABLE_UI_V2 - fepMan->PluginUIManager()->SetFingerMatchSelectionState(EFalse); -#endif //RD_SCALABLE_UI_V2 - break; - case EKeyLeftArrow: // fall through - case EKeyRightArrow: - case EKeyBackspace: - response = HandleNaviKeysL(aKey, aLength); -#ifdef RD_SCALABLE_UI_V2 - fepMan->PluginUIManager()->SetFingerMatchSelectionState(EFalse); -#endif //RD_SCALABLE_UI_V2 - break; - case EPtiKeyStar: - { - response = HandleStarKeyL(aLength); - } - break; - case EKeyDownArrow: // Japanese input required - if (fepMan->IsAbleScrollLatinPredictive()) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - DoNextMatch(); - } - else - { - response = EFalse; - } - } - else - { - response = EFalse; - } - break; - case EKeyUpArrow: // Japanese input required - if (fepMan->IsAbleScrollLatinPredictive()) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - DoPreviousMatchL(); - } - else - { - response = EFalse; - } - } - else - { - response = EFalse; - } - break; - default: - response = EFalse; -#ifdef RD_SCALABLE_UI_V2 - fepMan->PluginUIManager()->SetFingerMatchSelectionState(EFalse); -#endif //RD_SCALABLE_UI_V2 - break; - } - return response; - } - -void TAknFepInputStateEntryWesternPredictive::HandleCommandL(TInt aCommandId) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (aCommandId == EAknFepSoftkeyPrevious) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - __ASSERT_DEBUG(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction), - AknFepPanic(EAknFepPanicNotInsideInlineEdit)); - - if (iMatchState == EWordMatchLast || iMatchState == EWordMatchAfterLast) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_EMPTY_PREVIOUS); - } - iMatchState = EWordMatchStd; - TPtrC prevText = ptiengine->PreviousCandidate(); - if(prevText.Length() == 1) - { - TDigitType digittype = fepMan->LocalDigit(); - TChar chchar(prevText[0]); - if(!chchar.IsDigit() || (chchar.IsDigit() && !digittype)) - { - fepMan->UpdateInlineEditL(prevText, prevText.Length()); - } - else - { - TBuf<1> tempbuf; - tempbuf.Append(prevText[0]); - ConvertDigitToDigittype(digittype,tempbuf); - fepMan->UpdateInlineEditL(tempbuf, tempbuf.Length()); - } - } - else - { - fepMan->UpdateInlineEditL(prevText, prevText.Length()); - } - } - else if (aCommandId == ESignalSelectMatchSelectionText) - { - //fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_FINGER); -#ifdef RD_SCALABLE_UI_V2 - fepMan->PluginUIManager()->SetFingerMatchSelectionState(EFalse); -#endif //RD_SCALABLE_UI_V2 - iOwner->ChangeState(EInitial); - } - else if (aCommandId == ESignalNaviLeftMatchSelectionText) - { - //fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_FINGER); -#ifdef RD_SCALABLE_UI_V2 - fepMan->PluginUIManager()->SetFingerMatchSelectionState(EFalse); -#endif //RD_SCALABLE_UI_V2 - iOwner->ChangeState(EEntry); - - TRawEvent event; - event.Set(TRawEvent::EKeyDown, EStdKeyLeftArrow); - CCoeEnv::Static()->WsSession().SimulateRawEvent(event); - - event.Set(TRawEvent::EKeyUp, EStdKeyLeftArrow); - CCoeEnv::Static()->WsSession().SimulateRawEvent(event); - } - else if (aCommandId == ESignalNaviRightMatchSelectionText) - { - //fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_FINGER); -#ifdef RD_SCALABLE_UI_V2 - fepMan->PluginUIManager()->SetFingerMatchSelectionState(EFalse); -#endif //RD_SCALABLE_UI_V2 - iOwner->ChangeState(EEntry); - - TRawEvent event; - event.Set(TRawEvent::EKeyDown, EStdKeyRightArrow); - CCoeEnv::Static()->WsSession().SimulateRawEvent(event); - - event.Set(TRawEvent::EKeyUp, EStdKeyRightArrow); - CCoeEnv::Static()->WsSession().SimulateRawEvent(event); - } - } - -TBool TAknFepInputStateEntryWesternPredictive::HandleStandardNumericKeysL(TInt aKey, - TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - TBool response = ETrue; - - if (aLength == ELongKeyPress) - { - if (!fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - // No edit transaction going on, we have ended here because of long - // key press created editor on UI or some other similar non-standard situation. - // We can't handle key press, so just consume it. - return ETrue; - } - - // try and insert a digit - if (!fepMan->TryRemoveNoMatchesIndicatorL()) - { - // remove last character - TPtrC newText = ptiengine->DeleteKeyPress(); -#ifndef RD_INTELLIGENT_TEXT_INPUT - if(ptiengine->InputMode() == EPtiEngineWordCompletion - && (newText.Length() > ptiengine->CurrentInputSequence().Length())) - { - fepMan->RemoveSuggestedCompletionL(); - } - else -#endif - { - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - } - //closing the UI will commit the current word and move to intial state - fepMan->TryCloseUiL(); - //this flag to ensures that initial state does not send us back - //to this state as it would normally do for numeric keys - fepMan->SetFlag(CAknFepManager::EFlagSuppressInputStateChange); - response = EFalse; - } - else // short keypress - { - //To restrict up to 32 character.. - - if(ptiengine->CurrentInputSequence().Length() >= KMaxWordSize) - { - fepMan->SetFlag(CAknFepManager::EFlagNoMatches); - - // Enter word reach to max inline edit state - // if we call upadte inline edit, it will insert '?' mark - // which would be the 64th/33rd character - - // Not need to call appedkeypress/ updateinlineedit - // ignore the current key press - - //fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY); - //TPtrC newText = ptiengine->CurrentWord(); - //fepMan->UpdateInlineEditL(newText, newText.Length()); - } - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - //no matches, so just play tone - fepMan->PlaySound(EAvkonSIDConfirmationTone); - } - else //insert a letter - { - fepMan->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp | - CAknFepManager::ECcpuStateNewPredictiveWord); - if (iMatchState == EWordMatchLast || iMatchState == EWordMatchAfterLast) - { - iMatchState = EWordMatchNone; - } - if (!(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))) - { // 'new' inline edit - ptiengine->ClearCurrentWord(); - fepMan->StartInlineEditL(); - fepMan->TryStartCompoundWord(); - } -#ifndef RD_INTELLIGENT_TEXT_INPUT - TInt prevSeqLength = ptiengine->CurrentInputSequence().Length(); -#endif - TPtrC newText = ptiengine->AppendKeyPress((TPtiKey)aKey); - - fepMan->ClearFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (ptiengine->NumberOfCandidates() > 0) -#else - if ((fepMan->IsMoreGoodWordsComing(newText.Length()) -#ifndef RD_INTELLIGENT_TEXT_INPUT - && (ptiengine->InputMode() != EPtiEngineWordCompletion)) - || fepMan->IsMoreGoodAutoCompleteWordsComing(ptiengine->InputMode(), - prevSeqLength, ptiengine->CurrentInputSequence().Length() -#endif - )) -#endif - { - // more good words coming in from predictive text engine so carry on - if(newText.Length() == 1) - { - TDigitType digittype = fepMan->LocalDigit(); - TChar chchar(newText[0]); - if(!chchar.IsDigit() || (chchar.IsDigit() && !digittype)) - { - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - else - { - TBuf<1> tempbuf; - tempbuf.Append(newText[0]); - ConvertDigitToDigittype(digittype,tempbuf); - fepMan->UpdateInlineEditL(tempbuf, tempbuf.Length()); - } - } - else - { - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - - TBool lastEnteredDigitOne = (ptiengine->LastEnteredKey() == EPtiKey1); - if (!lastEnteredDigitOne) - { - iOwner->CaseMan()->UpdateCase(ENullNaviEvent); - } - fepMan->ClearFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - if (ptiengine->NumberOfCandidates() <= 1) - { - fepMan->SetFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - } - } - else - { - // engine has run out of matches - fepMan->SetFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - fepMan->SetFlag(CAknFepManager::EFlagNoMatches); - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY); - if(newText.Length() == 1) - { - TDigitType digittype = fepMan->LocalDigit(); - TChar chchar(newText[0]); - if(!chchar.IsDigit() || (chchar.IsDigit() && !digittype)) - { - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - else - { - TBuf<1> tempbuf; - tempbuf.Append(newText[0]); - ConvertDigitToDigittype(digittype,tempbuf); - fepMan->UpdateInlineEditL(tempbuf, tempbuf.Length()); - } - } - else - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Remove the autocompletion tail if present - if (fepMan->IsAutoCompleteOn()) - { - TInt tailLength = 0; - ptiengine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, - &tailLength ); - if(tailLength > 0) - { - // To remove the autocompletion part, the below function is used. - // DeleteKeyPress was used earlier. This is removed to fix the bug : - // enter characters to show autocompletion part. Now press a - // character so that the no matches character is shown. Now press - // backspace key, last character is not deleted. - fepMan->RemoveSuggestedAdvanceCompletionL(); - fepMan->PlaySound(EAvkonSIDConfirmationTone); - return response; - } - } -#endif - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - fepMan->PlaySound(EAvkonSIDConfirmationTone); - } - } - } - return response; - } - -TBool TAknFepInputStateEntryWesternPredictive::HandleNaviKeysL(TInt aKey, TKeyPressLength /*aLength*/) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (!(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))) - { - TBuf textToUncommit; - TBool comsumeKey; - if (!(fepMan->TryGetTextToUncommitL(textToUncommit, aKey, comsumeKey))) - { - // If T9 word length > 32, the navi key is consumed without action. - // Maybe should navigate inside word. - return comsumeKey; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - ptiengine->ClearCurrentWord(); // Clear the buffer or setting input may fail -#endif - ptiengine->SetCurrentWord(textToUncommit); - if( ptiengine->CurrentWord().Length() != textToUncommit.Length()) - { - TPtiUserDictionaryEntry newUdbEntry(textToUncommit); - ptiengine->AddUserDictionaryEntry(newUdbEntry); - ptiengine->SetCurrentWord(textToUncommit); - } - -#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ - // First generation ITUT support loops through candidate list on star key press. When we bring - // a word in inline edit by navigating with arrow keys, we need to fetch the candidate list in order - // to navigate through the predictive list if any or get spell CBA. - CDesCArrayFlat* matchesList=new(ELeave)CDesCArrayFlat(1); - CleanupStack::PushL(matchesList); - ptiengine->GetCandidateListL(*matchesList); - CleanupStack::PopAndDestroy();//matchesList -#endif - - fepMan->ClearFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - if (ptiengine->NumberOfCandidates() <= 1) - { - fepMan->SetFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - } - if (ptiengine->NumberOfCandidates() < 1) - { - fepMan->SetFlag(CAknFepManager::EFlagNoMatches); - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY); - } - - fepMan->StartInlineEditL(fepMan->UncommittedText(), textToUncommit, - textToUncommit.Length(), EFalse); - } - - if (aKey == EKeyBackspace) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - fepMan->TryRemoveNoMatchesIndicatorL(); - fepMan->UpdateCbaL(NULL); -#ifdef RD_INTELLIGENT_TEXT_INPUT - ptiengine->HandleCommandL(EPtiCommandSetFlagToUpdateCandidates); -#endif //RD_INTELLIGENT_TEXT_INPUT - // Need to return as DeleteKeyPress should not be passed to ptiengine. - // This is because ptiengine does not maintain the input sequence - // if the key press does not increase the word length. So when no matches - // character is (?) is deleted, no need to pass to ptiengine. This is to done - // to solve the bug :enter characters till the no matches character is shown. Now press - // backspace, last character is not deleted. - return ETrue; - } - else if (iMatchState != EWordMatchFirst) - { - //let FirstWordInSelectionList() reset the CBA - iMatchState = EWordMatchNone; - } - - TPtrC newText = ptiengine->DeleteKeyPress(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - TPtiEngineInputMode inputMode = ptiengine->InputMode(); - if((inputMode != EPtiEngineWordCompletion && inputMode != EPtiEnginePredictive ) - && newText.Length() != ptiengine->CurrentInputSequence().Length()) -#else - if((ptiengine->InputMode() != EPtiEngineWordCompletion ) - && newText.Length() != ptiengine->CurrentInputSequence().Length()) -#endif - { - TBuf textToUncommit; - TBool comsumeKey; - fepMan->TryGetTextToUncommitL(textToUncommit, aKey, comsumeKey); - textToUncommit.SetLength(textToUncommit.Length() - 1); - ptiengine->SetCurrentWord(textToUncommit); - newText.Set(textToUncommit); - } - - -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (!fepMan->IsAutoCompleteOn()) - { - // rip-off the autocompletion part if any, do this before updating the editor content - // this is done to avoid any flickering - TInt tailLength = 0; - ptiengine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, - &tailLength ); - if(tailLength > 0) - { - fepMan->RemoveSuggestedAdvanceCompletionL(); - // text would have changed after ripping off the autocompletion part - newText.Set(ptiengine->CurrentWord()); - } - } -#endif - - fepMan->UpdateInlineEditL(newText, newText.Length()); - fepMan->ClearFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - if (ptiengine->NumberOfCandidates() <= 1) - { - fepMan->SetFlag(CAknFepManager::EFlagRemoveMatchesMenuItem); - } - - iOwner->CaseMan()->UpdateCase(EBackspaceEvent); - fepMan->CloseUiIfWordDeletedL(); - } - return ETrue; - } - -TBool TAknFepInputStateEntryWesternPredictive::HandleStarKeyL(TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (aLength == ELongKeyPress) - { -// Fix for BSAN-7G5944. -// In non-ITI mode, during long star key press, initially it is treated as short key press -// and the next candidate word is shown. So before displaying the SCT, we revert to -// the previous candidate. In ITI, long star key press does not result in showing the next -// candidate, as short key press only launches the candidate list. -// So reverting to the previous candidate is not needed in ITI mode. -#ifndef RD_INTELLIGENT_TEXT_INPUT - if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - // replace with previous match - fepMan->TryRemoveNoMatchesIndicatorL(); - iMatchState = EWordMatchStd; - TPtrC newText = ptiengine->PreviousCandidate(); - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - // to rip off suggested completion when SCT is launched - if(fepMan->IsAutoCompleteOn()) - { - fepMan->RemoveSuggestedCompletionL(); - } -#endif - - fepMan->LaunchSpecialCharacterTableL(); - } - else - { -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifndef FF_ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT - // Short key presses get filtered in AknFepKeyCatcher, so that short star - // key press only gets through when the key is lifted. This means we can - // launch the candidate popup without worrying about long keypress - if (fepMan->WesternPredictive() && aLength == EShortKeyPress && !fepMan->IsQwerty() - && fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) - && ptiengine->NumberOfCandidates() > 0 - && fepMan->PluginUIManager()->PluginInputMode() == EPluginInputModeNone ) - { - // With short * key press and candidates remaining, override normal behaviour - // and function like arrow down - TInt wordIndexToSelect = 0; - TInt lastCandidateIndex = ptiengine->NumberOfCandidates()-1; - ptiengine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, - &wordIndexToSelect ); - wordIndexToSelect < lastCandidateIndex ? wordIndexToSelect++ : wordIndexToSelect = 0; - fepMan->LaunchCandidatePopupListL( wordIndexToSelect ); - return ETrue; - } -#endif // FF_ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT -#endif // RD_INTELLIGENT_TEXT_INPUT - if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { -#ifdef RD_SCALABLE_UI_V2 - if ( (iIsLastWord || ptiengine->NumberOfCandidates() == 1) - && ( fepMan->PluginUIManager()->PluginInputMode() == EPluginInputModeItut ) ) - { - fepMan->PluginUIManager()->SetFingerMatchSelectionState(ETrue); - fepMan->PluginUIManager()->ShowAllCandidates(); - iMatchState = EWordMatchNone; - iIsLastWord = EFalse; - return ETrue; - } - -#endif //RD_SCALABLE_UI_V2 - - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - CAknFepManager* fepMgr = static_cast(fepMan); - if(( fepMgr->EditorState()->Flags() & EAknEditorFlagEnablePartialScreen ) && - ( fepMgr->PluginUIManager()->PluginInputMode() == EPluginInputModeItut )) - { - // launch full screen query for split itut - fepMgr->LaunchEditWordQueryL(); - } - else - { - //no more matches - fepMan->PlaySound(EAvkonSIDWarningTone); - } - } - else if (ptiengine->NumberOfCandidates() <= 1) //1 - { - // only one match - if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY); - iMatchState = EWordMatchLast; - } - } - else - { - if (iMatchState == EWordMatchLast && !(ptiengine->LastEnteredKey() == EPtiKey1)) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_PREVIOUS); - } - else if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_EMPTY_PREVIOUS); - iMatchState = EWordMatchStd; - } - - TPtrC newText = ptiengine->NextCandidate(); - if(newText.Length() == 1) - { - TDigitType digittype = fepMan->LocalDigit(); - TChar chchar(newText[0]); - if(!chchar.IsDigit() || (chchar.IsDigit() && !digittype)) - { - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - else - { - TBuf<1> tempbuf; - tempbuf.Append(newText[0]); - ConvertDigitToDigittype(digittype,tempbuf); - fepMan->UpdateInlineEditL(tempbuf, tempbuf.Length()); - } - } - else - { - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - } - } - else - { - if (!fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - } - return ETrue; - } - -void TAknFepInputStateEntryWesternPredictive::LastWordInSelectionList() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - iIsLastWord = ETrue; - - if (iMatchState != EWordMatchAfterLast) - { - TInt newResource = R_AKNFEP_SOFTKEYS_SPELL_PREVIOUS; - if (ptiengine->LastEnteredKey() == EPtiKey1) - { - newResource=R_AKNFEP_SOFTKEYS_SYMBOL_PREVIOUS; - } - TRAP_IGNORE(fepMan->UpdateCbaL(newResource)); - iMatchState = EWordMatchLast; - } - } - -void TAknFepInputStateEntryWesternPredictive::FirstWordInSelectionList() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - iIsLastWord = EFalse; - - if (iMatchState == EWordMatchLast) - { - //have cycled past the last word back to the beginning - iMatchState = EWordMatchAfterLast; - } - else if (iMatchState == EWordMatchNone || iMatchState == EWordMatchStd) // called on every new keypress so checked to stop constant update - { - //have started/restarted a word or - //have got back to the beginning using previous - TRAP_IGNORE(fepMan->UpdateCbaL(NULL)); - iMatchState = EWordMatchFirst; - } - } - -void TAknFepInputStateEntryWesternPredictive::DoPreviousMatchL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - //no more matches - fepMan->PlaySound(EAvkonSIDWarningTone); - } - else if (ptiengine->NumberOfCandidates()<=1) - { - // only one match - if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY); - iMatchState = EWordMatchLast; - } - } - else - { - // > 1 match - if (iMatchState == EWordMatchLast || iMatchState == EWordMatchAfterLast) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_EMPTY_PREVIOUS); - } - else if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone) - { - fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_EMPTY_PREVIOUS); - } - iMatchState = EWordMatchStd; - TPtrC newText = ptiengine->PreviousCandidate(); - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - } - -void TAknFepInputStateEntryWesternPredictive::DoNextMatch() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - //no more matches - fepMan->PlaySound(EAvkonSIDWarningTone); - } - else if (ptiengine->NumberOfCandidates()<=1) - { - // only one match - if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone) - { - TRAP_IGNORE(fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY)); - iMatchState = EWordMatchLast; - } - } - else - { - // > 1 match - if (iMatchState == EWordMatchLast && !(ptiengine->LastEnteredKey() == EPtiKey1)) - { - TRAP_IGNORE(fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_PREVIOUS)); - } - else if (iMatchState == EWordMatchFirst || iMatchState == EWordMatchNone) - { - TRAP_IGNORE(fepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_EMPTY_PREVIOUS)); - iMatchState = EWordMatchStd; - } - TPtrC newText = ptiengine->NextCandidate(); - TRAP_IGNORE(fepMan->UpdateInlineEditL(newText, newText.Length())); - } - } - -void TAknFepInputStateEntryWesternPredictive::ConvertDigitToDigittype(TDigitType& digittype, - TDes& aConvertedNumeral) - { - TChar chchar(aConvertedNumeral[0]); - switch(digittype) - { - case EDigitTypeDevanagari: - { - chchar = (aConvertedNumeral[0] + KLatinToDevanagariDigitsDelta); - } - break; - case EDigitTypeArabicIndic: - { - chchar = (aConvertedNumeral[0] + KLatinToArabicIndicDigitsDelta); - } - break; - case EDigitTypeEasternArabicIndic: - { - chchar = (aConvertedNumeral[0] + KLatinToEasternArabicIndicDigitsDelta); - } - } - aConvertedNumeral.Zero(); - aConvertedNumeral.Append(chchar); - } - -TBool TAknFepInputStateEntryWesternPredictive::IsMoreCandidate() - { - TBool ret = ETrue; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if (fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - ret = EFalse; - } - - if (ptiengine->NumberOfCandidates() < 1) - { - ret = EFalse; - } - else if (ptiengine->NextCandidate().Length() == 0) - { - ret = EFalse; - } - else - { - ptiengine->PreviousCandidate(); - } - - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryWesternPredictiveJp.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryWesternPredictiveJp.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateEntryWesternPredictiveJp methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryWesternPredictiveJp.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" -#include "AknFepPanic.h" -#include "AknFepCaseManager.h" - -#include //CPtiEngine -#include //keys -#include //FeatureManager -#include -#include - -TAknFepInputStateEntryWesternPredictiveJp:: -TAknFepInputStateEntryWesternPredictiveJp(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateEntryWesternPredictive(aOwner) - { - } - -// --------------------------------------------------------------------------- -// Handle Star-key event -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryWesternPredictiveJp::HandleStarKeyL(TKeyPressLength aLength) - { - if (aLength == ELongKeyPress) - { - // Call the parent function - return TAknFepInputStateEntryWesternPredictive::HandleStarKeyL(aLength); - } - - // Check whether it is possible to change other cases. - if (!iOwner->CaseMan()->IsAbleChangeCase()) - { - return ETrue; - } - - // Change next case mode (Lower->Upper->Text->Lower) - TInt oldCase = iOwner->CaseMan()->CurrentCase(); - TInt newCase; - switch (oldCase) - { - default: - case EAknEditorLowerCase: - newCase = EAknEditorUpperCase; - break; - case EAknEditorUpperCase: - newCase = EAknEditorTextCase; - break; - case EAknEditorTextCase: - newCase = EAknEditorLowerCase; - break; - } - iOwner->CaseMan()->SetCurrentCase(newCase); - newCase = iOwner->CaseMan()->CurrentCase(); - if (oldCase != newCase) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TPtiTextCase caseMode = ptiengine->Case(); - TPtrC text = ptiengine->CurrentWord(); - HBufC* newText = HBufC::NewLC(text.Length()); - TPtr newPtr(newText->Des()); - newPtr.Copy(text); - switch (newCase) - { - default: - case EAknEditorLowerCase: // For Japanese, T9 lower mode(abc) - newPtr.LowerCase(); - caseMode = EPtiCaseLower; - break; - case EAknEditorUpperCase: // For Japanese, T9 upper mode(ABC) - newPtr.UpperCase(); - caseMode = EPtiCaseUpper; - break; - case EAknEditorTextCase: // For Japanese, T9 capitalize mode(Abc) - newPtr.Capitalize(); - caseMode = (newPtr.Length() > 1)? - EPtiCaseUpper : EPtiCaseLower; - break; - } - fepMan->UpdateInlineEditL(newPtr, newPtr.Length()); - ptiengine->SetCurrentWord(newPtr); - ptiengine->SetCase(caseMode); - CleanupStack::PopAndDestroy(newText); // newText - } - return ETrue; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryZhuyin.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryZhuyin.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,257 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStateZhuyin methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryZhuyin.h" -#include "AknFepUIManagerStateInterface.h" - -#include - -#include -#include //keys - -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManager.h" - -const TInt KMaxCandidateCountFromCore = 6; - -TAknFepInputStateEntryZhuyin::TAknFepInputStateEntryZhuyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryZhuyinStrokeBase(aOwner, aUIContainer) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutInput); - uiContainer->CandidatePane()->SelectFirst(); - uiContainer->InputPane()->SetOverrideFontId(0); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - if (EPtiEngineZhuyin != ptiengine->InputMode()) - { - ptiengine->SetInputMode(EPtiEngineZhuyin); - } - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - - if (ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - uiContainer->CandidatePane()->ShowDownScrollArrows - (bufLength == KMaxCandidateCountFromCore ? ETrue : EFalse); - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowRightScrollArrows(bufLength ? ETrue : EFalse); - - iUseforResourcechange = EFalse; - } -void TAknFepInputStateEntryZhuyin::HandleCommandL(TInt /*aCommandId*/) - { - RefreshUI(iUseforResourcechange); - } -TBool TAknFepInputStateEntryZhuyin::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - iOwner->FepMan()->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - if((aKey == EPtiKeyStar) && (aLength == EShortKeyPress)) - { - ptiengine->CancelTimerActivity(); - - if(ptiengine->IncrementToneMark(ETrue)) - { - uiContainer->ShowVerticalScrollArrows(ptiengine->MoreCandidatePages()); - SetInputPaneToneMark(); - iUseforResourcechange = EFalse; - RefreshUI(EFalse); - } - return ETrue; - } - else if(aKey == EKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - iUseforResourcechange = EFalse; - RefreshUI(EFalse); - SetInputPaneToneMark(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - return ETrue; - } - else if((aLength == EShortKeyPress) && iOwner->IsValidChineseInputKey(aKey)) - { - iOwner->FepMan()->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - - ptiengine->AppendKeyPress((TPtiKey)aKey); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - SetInputPaneToneMark(); - iUseforResourcechange = EFalse; - RefreshUI(EFalse); - return ETrue; - } - else if(aKey == EKeyDownArrow) - { - if (iOwner->PtiEngine()->CandidatePage().Length() == - KMaxCandidateCountFromCore) - { - ptiengine->CancelTimerActivity(); - ptiengine->NextCandidatePage(); - iUseforResourcechange = ETrue; - RefreshUI(ETrue); - } - return ETrue; - } - else if(aKey == EKeyUpArrow) - { - if (ptiengine->NumberOfCandidates() != 0) - { - ptiengine->CancelTimerActivity(); - ptiengine->PreviousCandidatePage(); - iUseforResourcechange = ETrue; - RefreshUI(ETrue); - } - return ETrue; - } - else if(aKey == EKeyOK || aKey == EKeyRightArrow || aKey == EKeyLeftArrow) - { - ptiengine->CancelTimerActivity(); - iOwner->ChangeState(ECandidate); - return EFalse; - } - - return TAknFepInputStateEntryZhuyinStrokeBase::HandleKeyL(aKey, aLength); - } - -void TAknFepInputStateEntryZhuyin::KeyTimerExpired() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TPtrC candidates = ptiengine->CandidatePage(); - TText toneMark; - TBool toneMarkEntered = ptiengine->ToneMark(toneMark); - TBool toneMarkValid = ptiengine->IsToneMarkValidForSpelling(); - if(!candidates.Length() || (toneMarkEntered && !toneMarkValid)) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - if(toneMarkEntered) - { - ptiengine->ResetToneMark(); - if( !candidates.Length() ) - { - ptiengine->DeleteKeyPress(); - } - } - else - { - ptiengine->DeleteKeyPress(); - } - SetInputPaneToneMark(); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(ptiengine->MoreCandidatePages()); - RefreshUI(EFalse); - } - } - -void TAknFepInputStateEntryZhuyin::RefreshUI(TBool aOrdinals) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // Universal layout - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - TPtrC candidates = ptiengine->CandidatePage(); - uiContainer->CandidatePane()->SetCandidateBuffer(candidates); - uiContainer->Enable(ETrue); - if (aOrdinals) - { - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - } - else - { - uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse); - } - - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - inputPane->SetText(ptr); - - if (ptiengine->NumberOfCandidates() == 0) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - uiContainer->CandidatePane()->ShowDownScrollArrows - (bufLength == KMaxCandidateCountFromCore ? ETrue : EFalse); - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowRightScrollArrows(bufLength ? ETrue : EFalse); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryZhuyinPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryZhuyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,470 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStateZhuyinPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryZhuyinPhrase.h" -#include "AknFepUIManagerStateInterface.h" -#include - -#include -#include //keys -#include -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManager.h" -#include "aknfepuictrleditpane.h" -#include "AknFepUICtrlPinyinPopup.h" -#include "aknfepzhuyinconvertion.h" -#include "aknfepzhuyinkeyhandlerinterface.h" -#include "AknFepZhuyinAnalyserDb.h" -#include "AknFepZhuyinAnalyser.h" -#include - -const TInt KMaxPhraseCount = 50; -const TInt KInputPaneLength = 32; -const TUint16 KSegment = 0x0020; - -const TInt KMaxBufLen = 100; -const TInt KInputPhraseMaxLength = 7; -_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" ); - -TAknFepInputStateEntryZhuyinPhrase::TAknFepInputStateEntryZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateZhuyinPhraseCreationBase(aOwner, aUIContainer) - { - iState = EEntry; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutKeystroke); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->InputPane()->SetOverrideFontId(0); - - if (iOwner->PtiEngine()->InputMode() != EPtiEngineZhuyinByPhrase) - { - iOwner->PtiEngine()->SetInputMode(EPtiEngineZhuyinByPhrase); - } - iOwner->PtiEngine()->SetCandidatePageLength(KMaxPhraseCount); - iOwner->FepMan()->EntryPhrase(ETrue); - uiContainer->SetFepMan(iOwner->FepMan()); - uiContainer->EditPaneWindow()->DeactiveCursor(); - UpdateEEPContent(); - RefreshUI(); - UpdateIndicator(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryZhuyinPhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryZhuyinPhrase::HandleCommandL( TInt aCommandId ) - { - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeyCancel: - // case (TUint16)EAknSoftkeyCancel: //the Cancle in soft CBA - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - case EAknSoftkeySelect: - //case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - HandleCommitL(); - break; - default: - TAknFepInputStateZhuyinPhraseCreationBase::HandleCommandL( - aCommandId ); - break; - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryZhuyinPhrase::HandleCommit -// Handle CBA1,ok and select candidate phrase key press. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryZhuyinPhrase::HandleCommitL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - - CDesCArrayFlat* zhuyinSymbols = - uiContainer->PinyinPopupWindow()->ZhuyinSymbols(); - CDesCArrayFlat* chineseDisped = - uiContainer->PinyinPopupWindow()->ChineseCharsDisped(); - CDesCArrayFlat - * zhuyinSymbolsForChinese = - uiContainer->PinyinPopupWindow()->ZhuyinSymbolsForChineseCharsDisped(); - CDesCArrayFlat* candidateList = - uiContainer->CandidatePane()->CandidateArray(); - MZhuyinKeyHandler* zhuyinKeyHandler = iOwner->ZhuyinKeyHandler(); - - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if ( text.Length() == 0 ) - { - return; - } - TBuf pinyinshown = - UIContainer()->PinyinPopupWindow()->GetEEPContent(); - TInt count = TZhuyinSymbolsMethods::GetChineseCount( pinyinshown ); - if ( count > text.Length() ) - { - fepMan->PhraseCreation( ETrue ); - } - if ( fepMan->IsPhraseCreation() ) - { - TBuf buf; - buf.Copy( text ); - TBool commit = TZhuyinSymbolsMethods::AppendChineseChar( buf, - fepMan->ZhuyinAnalyser(), zhuyinSymbols, chineseDisped, - zhuyinSymbolsForChinese ); - TBool changeState = UpdateEEPContent(); - if ( commit ) - { - TBuf commitbuf; - TZhuyinSymbolsMethods::Convert2Des( chineseDisped, commitbuf ); - fepMan->NewTextL( commitbuf ); - fepMan->CommitInlineEditL(); - AddPhraseToDB( commitbuf ); - if ( chineseDisped->Count() < KInputPhraseMaxLength - || zhuyinSymbols->Count() == 0 ) - { - iOwner->FepMan()->TryCloseUiL(); - } - else - { - CAknWarningNote* errnote = new (ELeave) CAknWarningNote(); - errnote->SetTone( CAknNoteDialog::EWarningTone ); - errnote->ExecuteLD( KMaxPhraseNote ); - fepMan->TryCloseUiL(); - } - popup->ResetStrokeArray(); - } - else - { - editPane->SetCursorIndexOfKeystroke( 0 ); - if ( changeState ) - { - for (TInt i = 0; i < candidateList->Count(); i++ ) - { - if ( TZhuyinSymbolsMethods::IsZhuyinSymbol( - candidateList->MdcaPoint( i ) ) ) - { - candidateList->Delete( i, 1 ); - break; - } - } - if ( candidateList->Count() > 0 ) - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EEntry ); - } - else - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EZhuyinSequenceEdit ); - } - } - else - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EZhuyinSequenceEdit ); - } - } - } - else - { - TBuf textbuf; - for (TInt i = 0; i < chineseDisped->Count(); i++ ) - { - textbuf.Append( chineseDisped->MdcaPoint( i ) ); - } - textbuf.Append( text ); - fepMan->NewTextL( textbuf ); - fepMan->CommitInlineEditL(); - AddPhraseToDB( textbuf ); - popup->ResetStrokeArray(); - if ( text.Length() <= KInputPhraseMaxLength - && !fepMan->IsPhraseCreation() ) - { - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - else - { - fepMan->TryCloseUiL(); - } - } - } - -void TAknFepInputStateEntryZhuyinPhrase::AddPhraseToDB( TDes& aPhrase ) - { - TPtiUserDictionaryEntry addUdbEntry( aPhrase ); - //Add the phrase to the DB by PTI Engine - iOwner->PtiEngine()->AddUserDictionaryEntry( addUdbEntry ); - } - -TBool TAknFepInputStateEntryZhuyinPhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MZhuyinKeyHandler* zhuyinKeyHandler = iOwner->ZhuyinKeyHandler(); - - CDesCArrayFlat* zhuyinSymbols = uiContainer->PinyinPopupWindow()->ZhuyinSymbols(); - CDesCArrayFlat* chineseDisped = uiContainer->PinyinPopupWindow()->ChineseCharsDisped(); - - iOwner->FepMan()->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - - if((aKey == EPtiKeyStar) && (aLength == EShortKeyPress)) - { - AddToneMarkL(); - if ( !UpdateEEPContent( ) ) - { - RefreshUI(); - ChangeCbaL(); - popup->SetChangeState( ETrue ); - iOwner->ZhuyinKeyHandler()->SetState(1); - iOwner->ChangeState(EZhuyinSequenceEdit); - return ETrue; - } - RefreshUI(); - ChangeCbaL(); - return ETrue; - } - else if (aKey == EKeyLeftArrow ) - { - iOwner->ChangeState(ECandidate); - return EFalse; - } - else if (aKey == EKeyRightArrow) - { - iOwner->ChangeState(ECandidate); - return EFalse; - } - else - { - if(aKey == EKeyBackspace) - { - if ( aLength == ELongKeyPress - && zhuyinKeyHandler->GetStatusChgFlag() == MZhuyinKeyHandler::EFromCandidateToEntry ) - { - return ETrue; - } - else - { - zhuyinKeyHandler->SetStatusChgFlag(MZhuyinKeyHandler::EInit); - } - - DeleteZhuyinSymbolOrChinese(); - - if ( !UpdateEEPContent( ) ) - { - RefreshUI(); - popup->SetChangeState( ETrue ); - iOwner->ZhuyinKeyHandler()->SetState(1); - ChangeCbaL(); - iOwner->ChangeState(EZhuyinSequenceEdit); - if ( zhuyinSymbols->Count() == 0 - && chineseDisped->Count() == 0 ) - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - if ( 0 == chineseDisped->Count() ) - { - iOwner->FepMan()->PhraseCreation( EFalse ); - } - return ETrue; - } - ChangeCbaL(); - RefreshUI(); - if ( zhuyinSymbols->Count() == 0 - && chineseDisped->Count() == 0 ) - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - if ( 0 == chineseDisped->Count() ) - { - iOwner->FepMan()->PhraseCreation( EFalse ); - } - } - else if((aLength == EShortKeyPress) && iOwner->IsValidChineseInputKey(aKey)) - { - if ( AddKeystrokeL( aKey ) ) - { - if ( !UpdateEEPContent( ) ) - { - RefreshUI(); - popup->SetChangeState( ETrue ); - iOwner->ZhuyinKeyHandler()->SetState(1); - iOwner->ChangeState(EZhuyinSequenceEdit); - return ETrue; - } - RefreshUI(); - ChangeCbaL(); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - return ETrue; - } - else if(aKey == EKeyDownArrow) - { - if ( aLength == ELongKeyPress - && zhuyinKeyHandler->GetStatusChgFlag() == MZhuyinKeyHandler::EFromSpellingEditingToEntry ) - { - return ETrue; - } - else if (!candidatePane->IsLastPage()) - { - zhuyinKeyHandler->SetStatusChgFlag(MZhuyinKeyHandler::EInit); - if ( candidatePane->NeedGetNewCandidatePage() ) - { - if ( !iOwner->PtiEngine()->NextCandidatePage( ) ) - { - if ( candidatePane->IsLastPage() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - } - else - { - CDesCArrayFlat* phraseCandidates = candidatePane->CandidateArray(); - RPointerArray list; - GetNewCandidatesL( iOwner->PtiEngine()->CandidatePage( ), list ); - for (TInt i = 0; i < list.Count( ); ++i ) - { - phraseCandidates->AppendL( *(list[i]) ); - } - list.ResetAndDestroy(); - } - } - candidatePane->NextCandidatePage(); - RefreshUI(); - } - } - else if(aKey == EKeyUpArrow) - { - if(!candidatePane->IsFirstPage()) - { - candidatePane->PreviousCandidatePage(); - RefreshUI(); - } - else - { - iOwner->ZhuyinKeyHandler()->SetState(0); - popup->SetState( EFalse ); - iOwner->ChangeState(EZhuyinSequenceEdit); - return EFalse; - } - } - else if ( (aKey == EKeyOK || aKey == EKeyCBA1 || aKey == EKeyRightArrow || aKey == EKeyLeftArrow) - && aLength == EShortKeyPress ) - { - iOwner->ChangeState(ECandidate); - return EFalse; - } - return ETrue; - } - } - -void TAknFepInputStateEntryZhuyinPhrase::KeyTimerExpired() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // set container's position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - inputPane->SetText(ptr); - TBuf currentText; - inputPane->GetText(currentText); - if (ptr.Length() < currentText.Length()) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - UpdateIndicator(); - } - -void TAknFepInputStateEntryZhuyinPhrase::GetNewCandidatesL(const TDesC& aSource, - RPointerArray& aList) - { - TInt start = 0; - TInt length = 0; - - for (TInt ii = 0; ii < aSource.Length(); ii++) - { - if (aSource[ii] == KSegment) - { - TPtrC segment(aSource.Ptr() + start, length); - aList.AppendL(segment.AllocL()); - start += (length + 1); - length = 0; - } - else - { - length++; - } - } - - if (length) - { - TPtrC segm(aSource.Ptr() + start, length); - aList.AppendL(segm.AllocL()); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryZhuyinStrokeBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryZhuyinStrokeBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,189 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryZhuyinStrokeBase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryZhuyinStrokeBase.h" - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepManager.h" - -#include //CPtiEngine -#include //keys -#include - -TAknFepInputStateEntryZhuyinStrokeBase::TAknFepInputStateEntryZhuyinStrokeBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - iState = EEntry; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength > 1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(EFalse); - uiContainer->FocusCandidatePane(ETrue); - candidatePane->SetHighlighted(ETrue); - candidatePane->ShowCandidateOrdinals(EFalse);// - candidatePane->SelectFirst(); - iUseforResourcechange = EFalse; - } -void TAknFepInputStateEntryZhuyinStrokeBase::HandleCommandL(TInt /*aCommandId*/) - { - RefreshUI(iUseforResourcechange); - } - -TBool TAknFepInputStateEntryZhuyinStrokeBase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - if(aKey == EKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - iUseforResourcechange = EFalse; - RefreshUI(EFalse); - SetInputPaneToneMark(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if((aLength == EShortKeyPress) && iOwner->IsValidChineseInputKey(aKey)) - { - iOwner->FepMan()->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - - ptiengine->AppendKeyPress((TPtiKey)aKey); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - SetInputPaneToneMark(); - iUseforResourcechange = EFalse; - RefreshUI(EFalse); - } - else if(aKey == EKeyDownArrow) - { - ptiengine->NextCandidatePage(); - iUseforResourcechange = EFalse; - RefreshUI(EFalse); - } - else if(aKey == EKeyUpArrow) - { - ptiengine->PreviousCandidatePage(); - iUseforResourcechange = EFalse; - RefreshUI(EFalse); - } - else if(aKey == EKeyOK || aKey == EKeyRightArrow || aKey == EKeyLeftArrow) - { - iOwner->ChangeState(ECandidate); - return EFalse; - } - return ETrue; - } - -void TAknFepInputStateEntryZhuyinStrokeBase::RefreshUI(TBool aOrdinals) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // Universal layout - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - TPtrC candidates = ptiengine->CandidatePage(); - uiContainer->CandidatePane()->SetCandidateBuffer(candidates); - uiContainer->Enable(ETrue); - if (aOrdinals) - { - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - } - else - { - uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse); - } - - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - inputPane->SetText(ptr); - } - -void TAknFepInputStateEntryZhuyinStrokeBase::SetInputPaneToneMark() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlInputPane* inputPane = UIContainer()->InputPane(); - - TText toneMark; - TBool toneMarkEntered = ptiengine->ToneMark(toneMark); - TBuf<1> buf; - if(toneMarkEntered) - { - buf.Append(toneMark); - } - inputPane->SetToneMark(buf); - } - -void TAknFepInputStateEntryZhuyinStrokeBase::KeyTimerExpired() - { - } - -void TAknFepInputStateEntryZhuyinStrokeBase::InitializeStateL(void) - { - iOwner->FepMan()->UpdateCbaL(R_AVKON_SOFTKEYS_EMPTY); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateEntryZhuyinStrokeBasePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStateEntryZhuyinStrokeBasePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,220 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryZhuyinStrokeBasePhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateEntryZhuyinStrokeBasePhrase.h" - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" - -#include //CPtiEngine -#include //keys -#include -#include - -TAknFepInputStateEntryZhuyinStrokeBasePhrase::TAknFepInputStateEntryZhuyinStrokeBasePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - iState = EEntry; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - uiContainer->FocusCandidatePane(EFalse); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - candidatePane->SetHighlighted(ETrue); - candidatePane->ShowCandidateOrdinals(EFalse); - candidatePane->SelectFirstPhrase(); - } -void TAknFepInputStateEntryZhuyinStrokeBasePhrase::HandleCommandL(TInt /*aCommandId*/) - { - RefreshUI(); - } - -TBool TAknFepInputStateEntryZhuyinStrokeBasePhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - if(aKey == EKeyBackspace) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - SetInputPaneToneMark(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - else if((aLength == EShortKeyPress) && iOwner->IsValidChineseInputKey(aKey)) - { - ptiengine->AppendKeyPress((TPtiKey)aKey); - SetInputPaneToneMark(); - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - } - else if(aKey == EKeyDownArrow) - { - if (!candidatePane->IsLastPage()) - { - candidatePane->NextCandidatePage(); - RefreshUI(); - } - } - else if(aKey == EKeyUpArrow) - { - if(!candidatePane->IsFirstPage()) - { - candidatePane->PreviousCandidatePage(); - RefreshUI(); - } - } - else if(aKey == EKeyOK || aKey == EKeyRightArrow || aKey == EKeyLeftArrow) - { - iOwner->ChangeState(ECandidate); - return EFalse; - } - return ETrue; - } - -void TAknFepInputStateEntryZhuyinStrokeBasePhrase::RefreshUI() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // get cursor position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - // layout candidate and fill candidate buffer for first display page - TInt candidateCount = 0; - if(inputPane->IsFlagSet(MAknFepUICtrlInputPane::EPhoneticChanged)) - { - inputPane->ClearFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - TRAPD(ignore,candidateCount = ptiengine->GetChinesePhraseCandidatesL( - *(uiContainer->CandidatePane()->CandidateArray()))); - if(candidateCount == 0 || ignore != KErrNone) - { - return; - } - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - } - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable(ETrue); - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - inputPane->SetText(ptr); - UpdateIndicator(); - } - -void TAknFepInputStateEntryZhuyinStrokeBasePhrase::SetInputPaneToneMark() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlInputPane* inputPane = UIContainer()->InputPane(); - - TText toneMark; - TBool toneMarkEntered = ptiengine->ToneMark(toneMark); - TBuf<1> buf; - if(toneMarkEntered) - { - buf.Append(toneMark); - } - inputPane->SetToneMark(buf); - } - -void TAknFepInputStateEntryZhuyinStrokeBasePhrase::KeyTimerExpired() - { - } - -void TAknFepInputStateEntryZhuyinStrokeBasePhrase::InitializeStateL(void) - { - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT); - } - -void TAknFepInputStateEntryZhuyinStrokeBasePhrase::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - TInt candidateCount = candidatePane->CandidateArray()->Count(); - - if ( candidatePane->IsFirstPage() || candidateCount== 0 ) - { - uiContainer->CandidatePane()->ShowUpScrollArrows( EFalse ); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows( ETrue ); - } - - if ( candidatePane->IsLastPage() || candidateCount== 0 ) - { - uiContainer->CandidatePane()->ShowDownScrollArrows( EFalse ); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows( ETrue ); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateHalfQwerty.cpp --- a/fep/aknfep/src/AknFepUiInputStateHalfQwerty.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,668 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateHalfQwerty methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateHalfQwerty.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepCaseManager.h" - -#include -#include -#include -#include -#include - - -TAknFepInputStateHalfQwerty::TAknFepInputStateHalfQwerty(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateBase(aOwner) - { - iState = EInitial; - iData = 0; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - ptiengine->SetInputMode(EPtiEngineHalfQwerty); - } - -TBool TAknFepInputStateHalfQwerty::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = EFalse; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - if( ptiengine == NULL || aKey == EStdKeyNull || - aKey == EStdKeyF21 || aKey == EKeyF21 || aKey == EKeyF20 || aKey == EKeyF19 || - aKey == EStdKeyLeftArrow || aKey == EStdKeyRightArrow || aKey == EStdKeyDownArrow || aKey == EStdKeyUpArrow ) - return ret; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - TPtiTextCase CurCase = ptiengine->Case(); - - if (iData && (iData != aKey) ) - { - ptiengine->CancelTimerActivity(); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - fepMan->ClearFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - iData = 0; - } - // if it is a long key press of the punctuation key, - - if( aLength == ELongKeyPress && aKey == EStdKeyFullStop) - { - // Commit the current word and then do the usual stuff - ptiengine->CancelTimerActivity(); - } - if( !fepMan->EditorHasFreeSpace() && !iData ) - { - // Do not proceed as we have reached max limit and timer has expired - ptiengine->CancelTimerActivity(); - ptiengine->ClearCurrentWord(); - fepMan->ClearFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - return 0; - } - - if( EStdKeyEnter == aKey ) - { - // Asynchronous case update. - fepMan->SimulateKeyEventL(EKeyF19); - return 0; - } - - if (!iOwner->PtiEngine()->IsValidKey((TPtiKey)aKey)) - { - iData = 0; - ChrKeyTimerExpired(); - fepMan->ClearFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - ptiengine->CancelTimerActivity(); - return ret; - } - TPtrC text; - /* - if ( fepMan->IsOnlyNumericPermitted() ) - { - ptiengine->CancelTimerActivity(); - text.Set(ptiengine->AppendKeyPress((TPtiKey)aKey)); - TPtrC numericChars(KAllAllowedNumericChars, KNumAllowedIdleNumericChars); - if (text.Length() && numericChars.Locate(text[0]) != KErrNotFound) - { - TBuf<1> chr; - chr.Append(text[0]); - fepMan->NewCharacterL(chr); - ptiengine->CancelTimerActivity(); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - - return ETrue; - } - */ -#ifdef __REVERSE_FN_KEY_SUPPORTED - TInt origLanguage = ptiengine->CurrentLanguage()->LanguageCode(); - TPtiEngineInputMode origInputMode = ptiengine->InputMode(); - TBool languageChanged = EFalse; - - // In reverse fn key mapping filter the char applicable for - // Numeric editor. - if( fepMan->IsOnlyNumericPermitted() ) - { - - if( EStdKeyLeftFunc == aKey ) - { - TCallBack timerExpire(TimerExpire, this); - fepMan->MultitapThroughSCTCharL(timerExpire); - return ETrue; - } - else - { - ChrKeyTimerExpired(); - } - if( !fepMan->IsValidCharForNumericInFnReverseL( aKey, iOwner->PtiEngine()->Case() ) ) - { - if(CheckHasValidNumerKeyMappedL(aKey,languageChanged)) - return ETrue; - } - } - -#endif //__REVERSE_FN_KEY_SUPPORTED - - -// if( aLength == EShortKeyPress ) - { - /* - if (aKey == EStdKeySpace && (fnKeyState == CAknFepFnKeyManager::EFnKeyNone)) - { - _LIT(KSpaceCharacter, " "); - text.Set(KSpaceCharacter); - } - else*/ - if( aKey == EStdKeySpace && fepMan->FnKeyState() == CAknFepFnKeyManager::EFnKeyNone) - { - _LIT(KSpace," "); - fepMan->StartInlineEditL(); - fepMan->UpdateInlineEditL(KSpace,0); - fepMan->CommitInlineEditL(); - return ETrue; - } - else - { - TBool isCharacter = ETrue; - if (!iData) - { - isCharacter = IsCharacterKey(aKey); - } - HandleCaseChange(aKey, isCharacter); - CurCase = ptiengine->Case(); - - if(( (fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric()) - || fepMan->IsPhoneNumberEditor() ) - && fepMan->FnKeyState() != CAknFepFnKeyManager::EFnKeyNone) - { - if( EStdKeyLeftFunc == aKey ) - { - TCallBack timerExpire(TimerExpire, this); - fepMan->MultitapThroughSCTCharL(timerExpire); - return ETrue; - } - else - { - ChrKeyTimerExpired(); - } - - if(!fepMan->IsPhoneNumberEditor()) - { - TChar validchr; - if(!CheckHasValidNumerKeyMappedL(aKey,languageChanged)) - ptiengine->SetCase((TPtiTextCase)EPtiCaseLower); - else - return ETrue; - } - } - if(!iData) - { - // this should be called after case change - // so that the shift state is taken care of - #ifdef __HALF_QWERTY_PREVIEW_PANE - fepMan->PreparePreviewPaneL((TPtiKey)aKey); - #endif //__HALF_QWERTY_PREVIEW_PANE - } - - // Over ride the case changes, force to fnLower for - // long key press. - if( aLength == ELongKeyPress && aKey == EStdKeyFullStop) - { - iOwner->PtiEngine()->SetCase( EPtiCaseFnLower ); - } - - // Get keymapping from PtiEngine. - text.Set(ptiengine->AppendKeyPress((TPtiKey)aKey)); - - // send the text to be highlighted here - #ifdef __HALF_QWERTY_PREVIEW_PANE - fepMan->ShowPaneL(); - #endif //__HALF_QWERTY_PREVIEW_PANE - } - - if (text.Length() > 0) - { - TBuf<1> chr; - chr.Append(text[0]); - if( fepMan->IsOnlyNumericPermitted() - && !iOwner->FepMan()->IsValidCharInNumericEditorL(text[0]) ) - { - ptiengine->CancelTimerActivity(); - -#ifdef __REVERSE_FN_KEY_SUPPORTED - if(languageChanged) - { - ptiengine->ActivateLanguageL(origLanguage); - ptiengine->SetInputMode(origInputMode ); - } -#endif - if(fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric()) - ptiengine->SetCase(CurCase); - return ETrue; - } - if(fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric() - && fepMan->FnKeyState() != CAknFepFnKeyManager::EFnKeyNone) - { - if(!iOwner->FepMan()->IsValidCharInNumericEditorL(text[0]) ) - { - ptiengine->CancelTimerActivity(); - -#ifdef __REVERSE_FN_KEY_SUPPORTED - if(languageChanged) - { - ptiengine->ActivateLanguageL(origLanguage); - ptiengine->SetInputMode(origInputMode ); - } -#endif - } - } - fepMan->NewCharacterL(chr); - - // if ( aKey == EStdKeyEnter) - // { - // fepMan->CommitInlineEditL(); - // ptiengine->ClearCurrentWord(); - // iData = 0; - // } - // else - // { - iData = aKey; - fepMan->SetFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - // } - - } - if((text.Length() > 0) || (IsKeymapped(aKey))) - { - ret = ETrue; - } - TBuf<32> mappedCharacters; - iOwner->PtiEngine()->MappingDataForKey((TPtiKey)aKey, mappedCharacters, iOwner->PtiEngine()->Case()); - if( mappedCharacters.Length() < 2 ) - { - ptiengine->CancelTimerActivity(); - if( aLength == EShortKeyPress ) - { - SetShortKeyPressText(text); - } - } - if(fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric()) - ptiengine->SetCase(CurCase); - } - -// else -// //Long key press -// { -// if (aKey == EStdKeyEnter) -// { - // PtiEngine does not have mapping for the enter key. -// const TText KAknFEPLineFeedSymbol = 0x21B2; -// TBuf<1> lineFeed; -// lineFeed.Zero(); -// lineFeed.Append(KAknFEPLineFeedSymbol); -// text.Set(lineFeed); -// } -// else -// { -// TBool isCharacter = ETrue; -// if (!iData) -// { -// isCharacter = IsCharacterKey(aKey); -// } -// //HandleCaseChange(aKey, isCharacter); -// //Forcing Fn mode for long key press -// -// /* -// //Start of Option-1 -// ptiengine->SetCase(EPtiCaseFnLower); -// text.Set(ptiengine->AppendKeyPress((TPtiKey)aKey)); -// // End of Option-1 -// */ -// -// //Start of Option-2 -// //To do: Space key lower case being mapped and removing -// //hard coding of space in UI State. -// TBuf<5> allFnMappedCharacters; -// ptiengine->MappingDataForKey((TPtiKey)aKey, allFnMappedCharacters, EPtiCaseFnLower); -// text.Set(allFnMappedCharacters); -// // End of Option-2 -// -// } -// #ifdef __HALF_QWERTY_PREVIEW_PANE -// // in any case hide the preview pane -// fepMan->HidePane(); -// #endif //__HALF_QWERTY_PREVIEW_PANE -// -// if (text.Length() > 0) -// { -// TBuf<1> chr; -// chr.Append(text[0]); -// fepMan->NewCharacterL(chr); -// fepMan->CommitInlineEditL(); -// ptiengine->ClearCurrentWord(); -// iData = 0; -// /* -// if (aKey == EStdKeyEnter) -// { -// fepMan->CommitInlineEditL(); -// ptiengine->ClearCurrentWord(); -// iLastKey = 0; -// } -// else -// { -// iLastKey = aKey; -// fepMan->SetFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); -// } -// */ -// -// ret = ETrue; -// } -// else -// { -// // text.Length is zero. Handle long key. -// if( aKey == EStdKeyFullStop ) -// { -// ptiengine->CancelTimerActivity(); -// } -// } -// } - if( aKey!=EStdKeyBackspace && fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - return ETrue; - - if(ptiengine->IsValidKey((TPtiKey)aKey)) - ret = ETrue; - -#ifdef __REVERSE_FN_KEY_SUPPORTED - if(languageChanged) - { - ptiengine->ActivateLanguageL(origLanguage); - ptiengine->SetInputMode(origInputMode ); - } -#endif - - return ret; - } - -// Functions from MPtiObserver interface -void TAknFepInputStateHalfQwerty::KeyTimerExpired() - { - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TRAP_IGNORE(fepMan->CommitInlineEditL()) - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - #ifdef __HALF_QWERTY_PREVIEW_PANE - fepMan->HidePane(); - #endif //__HALF_QWERTY_PREVIEW_PANE - iData = 0; - fepMan->ClearFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - if( !fepMan->IsFlagSet( CAknFepManager::EFlagLongShiftKeyPress ) ) - { - if(fnKeyState == CAknFepFnKeyManager::EFnKeyNext) - fepMan->SetFnKeyState(CAknFepFnKeyManager::EFnKeyNone); - } - } - } - -void TAknFepInputStateHalfQwerty::HandleCaseChange(TInt /*aKey*/, TBool aIsCharacter) - { - // Punctuation key multitapping should not change case - if( iData ) - return; - - TPtiTextCase caseMode = EPtiCaseLower; - - if (aIsCharacter) - { - if( iData == 0 || !( iOwner->FepMan()->IsOnlyNumericPermitted() ) ) - { - // use the Edwin case only when timer expires - // To handle cases like insert fn character empty editor - // followed by alpa character - switch(iOwner->CaseMan()->CurrentCase()) - { - case EAknEditorLowerCase: - caseMode = EPtiCaseLower; - break; - case EAknEditorTextCase: - case EAknEditorUpperCase: - caseMode = EPtiCaseUpper; - default: - break; - } - } - else - { - // user is still multitapping, use the existing PtiEngine case - caseMode = iOwner->PtiEngine()->Case(); - } - } - - TPtiTextCase shiftedCase = caseMode; - - TPtiTextCase curCase = iOwner->PtiEngine()->Case(); - if(curCase == EPtiCaseFnUpper || curCase == EPtiCaseFnLower) - return; - - if ( iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) && - ( !aIsCharacter|| iOwner->CaseMan()->IsAbleChangeCase() ) ) - { - // Case mode is changed to opposite because shift key is/was pressed and - // in case of character key case changes are allowed. In case of - // number or special key, shift mode is used always when - // shift key is pressed - - - // clear this flag so that the shift key mode gets reset - // when shift key up event is received - - iOwner->FepMan()->ClearFlag(CAknFepManager::EFlagNoActionDuringShiftKeyPress); - - // Do not toggle case while multitapping - if( !iData ) - { - switch ( caseMode ) - { - case EPtiCaseUpper: - shiftedCase = EPtiCaseLower; - break; - case EPtiCaseLower: - shiftedCase = EPtiCaseUpper; - break; - default: - break; - } - } - } - - if ( iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) ) - { - // Chr key is pressed down. Chr mode is used. - if (shiftedCase == EPtiCaseLower) - { - shiftedCase = EPtiCaseChrLower; - } - else if (shiftedCase == EPtiCaseUpper) - { - shiftedCase = EPtiCaseChrUpper; - } - } - iOwner->FepMan()->ClearFlag( CAknFepManager::EFlagNoActionDuringChrKeyPress ); - iOwner->PtiEngine()->SetCase(shiftedCase); - - } - -TBool TAknFepInputStateHalfQwerty::IsCharacterKey(const TInt aKey) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // Max length doesn't matter because we'll need only the first character. - TBuf lowerdata; - - ptiengine->MappingDataForKey((TPtiKey)aKey, lowerdata, EPtiCaseLower); - if (lowerdata.Length() > 0) - { - TChar lower = lowerdata[0]; - TUint upper = lower.GetUpperCase(); - - if ( TUint(lower) != upper ) - { - return ETrue; - } - } - - return EFalse; - } -TBool TAknFepInputStateHalfQwerty::TryGetValidCharForKey(const TInt& aKey, TChar& aChar) - { - if( ! TryGetValidCharForKeyAndCase( aKey, aChar, EPtiCaseFnLower) ) - { - if(! TryGetValidCharForKeyAndCase( aKey, aChar, EPtiCaseUpper)) - { - if(! TryGetValidCharForKeyAndCase( aKey, aChar, EPtiCaseLower)) - { - return EFalse; - } - } - } - return ETrue; - } -TBool TAknFepInputStateHalfQwerty::TryGetValidCharForKeyAndCase(const TInt& aKey, TChar& aChar, TPtiTextCase aCase) - { - TBuf mappedCharacters; - - iOwner->PtiEngine()->MappingDataForKey((TPtiKey)aKey, mappedCharacters, aCase); - TRAP_IGNORE( - for (TInt i = 0; i < mappedCharacters.Length(); i++ ) - { - if( iOwner->FepMan()->IsValidCharInNumericEditorL( mappedCharacters[i] ) ) - { - aChar = mappedCharacters[i]; - return ETrue; - } - }); - return EFalse; - } -TInt TAknFepInputStateHalfQwerty::TimerExpire(TAny* aPtr) - { - reinterpret_cast(aPtr)->ChrKeyTimerExpired(); - return 1; - } -TInt TAknFepInputStateHalfQwerty::ChrKeyTimerExpired() - { - if(iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - // this function is only called for number only editors - - TRAP_IGNORE(iOwner->FepMan()->CommitInlineEditL()); - } - return 1; - } - - -TBool TAknFepInputStateHalfQwerty::IsKeymapped(TInt aKey) - { - TBuf<20> mapData; - TBool ret = EFalse; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - for(TInt count=0;countMappingDataForKey(static_cast(aKey), mapData, static_cast (count)); - if(mapData.Length()) - { - ret = ETrue; - break; - } - } - return ret; - } - -TBool TAknFepInputStateHalfQwerty::CheckHasValidNumerKeyMappedL(TInt aKey, TBool &aLangChanged) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TInt origLanguage = ptiengine->CurrentLanguage()->LanguageCode(); - TPtiEngineInputMode origInputMode = ptiengine->InputMode(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - //TBool languageChanged = EFalse; - - TChar chr; - - if( ! TryGetValidCharForKey(aKey, chr) ) - { - // If the key in not valid char in the current input language in Fn reverse mode, - // then we will check if against English language. And if its valid then we will - // insert the char based out of key for English input language and revert back - // the change in input language at the end. - - if(ptiengine->CurrentLanguage()->LanguageCode() == ELangEnglish) - { - if(fepMan->IsOnlyNumericPermitted()) - return ETrue; - else - return EFalse; - } - - aLangChanged = ETrue; - ptiengine->ActivateLanguageL(ELangEnglish); - ptiengine->SetInputMode(EPtiEngineHalfQwerty); - - if( !fepMan->IsValidCharForNumericInFnReverseL(aKey, iOwner->PtiEngine()->Case()) ) - { - if( ! TryGetValidCharForKey(aKey, chr) ) - { - ptiengine->ActivateLanguageL(origLanguage); - ptiengine->SetInputMode(origInputMode ); - if(fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric()) - return EFalse; - else - return ETrue; - } - else - { - if(aLangChanged) - { - ptiengine->ActivateLanguageL(origLanguage); - ptiengine->SetInputMode(origInputMode ); - } - - TBuf<1> buf; - buf.Append(chr); - fepMan->NewCharacterL(buf); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - iData = 0; - ptiengine->CancelTimerActivity(); - return ETrue; - } - } - } - else - { - if(aLangChanged) - { - ptiengine->ActivateLanguageL(origLanguage); - ptiengine->SetInputMode(origInputMode ); - } - - TBuf<1> buf; - buf.Append(chr); - fepMan->NewCharacterL(buf); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - iData = 0; - ptiengine->CancelTimerActivity(); - return ETrue; - } - - - return EFalse; - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialArabicHebrewMultitap.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialArabicHebrewMultitap.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialArabicHebrewMultitap methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialArabicHebrewMultitap.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface - -#include "AknFepCaseManager.h" -#include - -#include - -TAknFepInputStateInitialArabicHebrewMultitap:: -TAknFepInputStateInitialArabicHebrewMultitap(MAknFepUIManagerStateInterface* aOwner) -:TAknFepInputStateInitialLatinMultitap(aOwner) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - // This can be removed now because the PTI engine is in use? - TPtiTextCase caseMode = ptiengine->Case(); - - ptiengine->ClearCurrentWord(); - ptiengine->SetInputMode(EPtiEngineMultitapping); - - ptiengine->SetCase(caseMode); - } - -TBool TAknFepInputStateInitialArabicHebrewMultitap::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = ETrue; - - if(iData && (iData != aKey)) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - caseMan->UpdateCase(ENullNaviEvent); - } - - iData = aKey; - if(aLength == EShortKeyPress) - { - if (aKey == EPtiKeyStar) - { - if (!fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else - { - TPtrC text = ptiengine->AppendKeyPress((TPtiKey)aKey); - if (text.Length()) - { - fepMan->NewCharacterL(text); - } - } - } - else // long keypress - { - if (aKey == EPtiKeyStar && fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - else - { - TChar ch(aKey); - - TBuf<1> buf; - buf.Append(ch); - fepMan->NewCharacterL(buf); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - } - - return ret; - } - - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialArabicHebrewPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialArabicHebrewPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialArabicHebrewPredictive methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialArabicHebrewPredictive.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" -#include "AknFepCaseManager.h" //CAknFepCaseManager - -#include - -TAknFepInputStateInitialArabicHebrewPredictive:: -TAknFepInputStateInitialArabicHebrewPredictive(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateInitialWesternPredictive(aOwner) - { - } - -TBool TAknFepInputStateInitialArabicHebrewPredictive::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool ret = ETrue; - - if (aKey == EPtiKey0) - { - TAknFepInputStateInitialWesternPredictive::HandleKeyL(aKey, aLength); - } - else if (aKey == EPtiKeyStar) - { - if (aLength == EShortKeyPress) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagLineFeedCharacter) && - fepMan->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - // User is interrupting multitap timer with star key, but there - // is line feed event waiting. Make sure that it is handled first. - fepMan->CommitInlineEditL(); - } - - if (!fepMan->EditSubmenuInUse()) - { - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - } - } - else - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - } - else - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagSuppressInputStateChange)) - { - // Long keypress of numeric keypress, we want to simply return EFalse - // to enter a number into the editor, rather than move back to - // entry state, so just clear the flag - fepMan->ClearFlag(CAknFepManager::EFlagSuppressInputStateChange); - // Asyncronous case update is not needed in Arabic and Hebrew. - // Arabic indic digits are handled in FepManager. - } - else - { - fepMan->TryCloseUiL(); //expires the multitap timer - iOwner->ChangeState(EEntry); - fepMan->SendUIActivatedNotification(); - } - ret = EFalse; - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialChineseGeneric.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialChineseGeneric.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialChineseGeneric methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialChineseGeneric.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" -#include "AknFepManager.h" - -#include -#include -#include //keys -#include - -TAknFepInputStateInitialChineseGeneric::TAknFepInputStateInitialChineseGeneric( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateInitialChineseMultitapBase(aOwner, aUIContainer) - { - } - -TBool TAknFepInputStateInitialChineseGeneric::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - TBool ret = ETrue; - - if(iData && (iData != aKey)) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - - //7,8,9 are not multitap in EStroke, so commit - if ((fepMan->InputMode() == EStroke) && - (iData == EPtiKey7 || iData == EPtiKey8 || iData == EPtiKey9 )) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - - iData = aKey; - - if(iOwner->IsValidChineseInputKey(aKey)) - { - if ( aLength == EShortKeyPress ) - { - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - if(iOwner->ChangeState(EEntry) == EEntry) - { - iOwner->FepMan()->SendUIActivatedNotification(); - } - ret = EFalse; //indicate we can't handle the key... - } - else - { - return ETrue; - } - - } - else if(aKey == EPtiKey0 || aKey == EPtiKey1) // do multitap on zero key... - { - if(aLength == EShortKeyPress) - { - const TPtiTextCase oldCase = ptiengine->Case(); - if (fepMan->InputMode() == EStroke) - { - ptiengine->SetCase(EPtiCaseUpper); - } - TPtrC aText = ptiengine->AppendKeyPress((TPtiKey)aKey); - fepMan->NewCharacterL(aText); - ptiengine->SetCase(oldCase); - } - else - { - //don't want long keypresses to result in numbers as this would be inconsistent in - //Chinese modes, so commit the current character - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - } - //do multitap on 7-9 key - else if ((fepMan->InputMode() == EStroke) && - (aKey == EPtiKey7 || aKey == EPtiKey8 || - aKey == EPtiKey9 )) - { - if(aLength == EShortKeyPress) - { - const TPtiTextCase oldCase = ptiengine->Case(); - ptiengine->SetCase(EPtiCaseUpper); - - TPtrC text = ptiengine->AppendKeyPress((TPtiKey)aKey); - fepMan->NewCharacterL(text); - ptiengine->SetCase(oldCase); - } - else - { - //don't want long keypresses to result in numbers as this would be inconsistent in - //Chinese modes, so commit the current character - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - } - else if (aKey == EPtiKeyStar) - { - if (aLength == EShortKeyPress) - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - return ret; - } - else if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - } - else if (aKey == EKeyOK) - { - ret = EFalse; //don't consume OK key in initial state - } - - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialChineseGenericQwerty.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialChineseGenericQwerty.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,410 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialChineseGenericQwerty methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialChineseGenericQwerty.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManagerUIInterface.h" - -#include "AknFepManager.h" //FepMan flag - -#include - -#ifdef RD_INTELLIGENT_TEXT_INPUT -#include -#endif -const TText KZhuyinTone2 = 0x02CA; // qwerty key6 -const TText KZhuyinTone3 = 0x02C7; // qwerty key3 -const TText KZhuyinTone4 = 0x02CB; // qwerty key4 -const TText KZhuyinTone5 = 0x02D9; // qwerty key7 - -TAknFepInputStateInitialChineseGenericQwerty:: -TAknFepInputStateInitialChineseGenericQwerty(MAknFepUIManagerStateInterface* aOwner, TInt aMode) - :TAknFepInputStateQwerty(aOwner) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - MPtiLanguage* ptilang = ptiengine->CurrentLanguage(); -#endif - - switch( aMode ) - { - case EPinyin: -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (ptilang->HasInputMode(EPtiEnginePinyinPhraseQwerty)) - { - ptiengine->SetInputMode(EPtiEnginePinyinPhraseQwerty); - } - else -#endif - ptiengine->SetInputMode(EPtiEnginePinyinQwerty); - break; - case EStroke: -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (ptilang->HasInputMode(EPtiEngineStrokePhraseQwerty)) - ptiengine->SetInputMode(EPtiEngineStrokePhraseQwerty); - else -#endif - ptiengine->SetInputMode(EPtiEngineStrokeQwerty); - break; - case EZhuyin: -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (ptilang->HasInputMode(EPtiEngineZhuyinPhraseQwerty)) - ptiengine->SetInputMode(EPtiEngineZhuyinPhraseQwerty); - else -#endif - ptiengine->SetInputMode(EPtiEngineZhuyinQwerty); - break; - case ECangJie: - ptiengine->SetInputMode(EPtiEngineNormalCangjieQwerty); - break; - default: - break; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - ptiengine->SetKeyboardType(iOwner->FepMan()->KeyboardLayout()); -#endif - } - -TBool TAknFepInputStateInitialChineseGenericQwerty::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - const TPtiKeyboardType keyboardType = ptiengine->KeyboardType(); -#endif - - if(iData) - { - iData = 0; - } - - if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress) - { - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if(iOwner->IsQwertyZhuyinToneMarkKey(aKey) && - aLength == EShortKeyPress -#ifdef RD_INTELLIGENT_TEXT_INPUT - && !fnKeyState -#endif - && !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) - && !fepMan->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed) - && !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - TBuf<1> ToneMarkBuf; -#ifdef RD_INTELLIGENT_TEXT_INPUT - if( keyboardType == EPtiKeyboardQwerty4x12) - { -#endif - switch(aKey) - { - case EPtiKeyQwerty3: - ToneMarkBuf.Append(KZhuyinTone3); - break; - - case EPtiKeyQwerty4: - ToneMarkBuf.Append(KZhuyinTone4); - break; - - case EPtiKeyQwerty6: - ToneMarkBuf.Append(KZhuyinTone2); - break; - - case EPtiKeyQwerty7: - ToneMarkBuf.Append(KZhuyinTone5); - break; - default: - break; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } - else - if (keyboardType == EPtiKeyboardQwerty4x10 || keyboardType - == EPtiKeyboardQwerty3x11) - { - switch (aKey) - { - case EPtiKeyQwertyE: - ToneMarkBuf.Append(KZhuyinTone3); - break; - - case EPtiKeyQwertyR: - ToneMarkBuf.Append(KZhuyinTone4); - break; - - case EPtiKeyQwertyY: - ToneMarkBuf.Append(KZhuyinTone2); - break; - - case EPtiKeyQwertyU: - ToneMarkBuf.Append(KZhuyinTone5); - break; - default: - break; - } - } -#endif - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewCharacterL(ToneMarkBuf); - fepMan->CommitInlineEditL(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - ret = ETrue; - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey) && - !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) && -#ifdef RD_INTELLIGENT_TEXT_INPUT - !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) && - !fepMan->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed) && - !fnKeyState) -#else - !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)) -#endif - { - if ( aLength == EShortKeyPress ) - { - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - if(iOwner->ChangeState(EEntry) == EEntry) - { - iOwner->FepMan()->SendUIActivatedNotification(); - } - } - else - { - return ETrue; - } - } - else if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) && - fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - ret = ETrue; - } - else if (IsCharacter(aKey) || IsSCTKey(aKey)) - { - HandleKeyByShiftOrCharPressed(aKey,aLength); - if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringChrKeyPress); - } - ret = ETrue; - } - else if ((IsCharacter(aKey) || aKey == EPtiKeyQwertySpace) - && fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - fepMan->ClearFlag(CAknFepManager::EFlagQwertyChrKeyDepressed); - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringChrKeyPress); -#ifdef RD_INTELLIGENT_TEXT_INPUT - if((aKey == EPtiKeyQwertySpace) &&EPtiKeyboardQwerty4x12 != ptiengine->KeyboardType()) - { - TPtrC text; - _LIT(KSpaceCharacter, " "); - text.Set(KSpaceCharacter); - - if (text.Length()) - { - TBuf<1> chr; - for (TInt jj = 0; jj < text.Length(); jj++) - { - chr.Zero(); - chr.Append(text[jj]); - fepMan->NewCharacterL(chr); - fepMan->CommitInlineEditL(); - } - ret = ETrue; - } - } -#endif - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - else if(aKey == EPtiKeyQwertySpace) - { - if (fnKeyState == CAknFepFnKeyManager::EFnKeyDown) - { - fepMan->LaunchSelectModeMenuL(); - ret = ETrue; - } - else - { - TPtrC text; - _LIT(KSpaceCharacter, " "); - text.Set(KSpaceCharacter); - - if (text.Length()) - { - TBuf<1> chr; - for (TInt jj = 0; jj < text.Length(); jj++) - { - chr.Zero(); - chr.Append(text[jj]); - fepMan->NewCharacterL(chr); - fepMan->CommitInlineEditL(); - //ptiengine->ClearCurrentWord(); - } - ret = ETrue; - } - } - } -#endif - return ret; - } - -TBool TAknFepInputStateInitialChineseGenericQwerty::IsSCTKey(TInt aKey) - { - TBool response = EFalse; -#ifdef RD_INTELLIGENT_TEXT_INPUT - CPtiEngine* ptiengine = iOwner->PtiEngine(); - if(EPtiKeyboardQwerty4x12 == ptiengine->KeyboardType()) - { -#endif - if (IsNumberKey( aKey ) || - aKey == EPtiKeyQwertyPlus || - aKey == EPtiKeyQwertyMinus || - aKey == EPtiKeyQwertyComma || - aKey == EPtiKeyQwertySemicolon || - aKey == EPtiKeyQwertyFullstop || - aKey == EPtiKeyQwertyHash || - aKey == EPtiKeyQwertySlash || - aKey == EPtiKeyQwertyApostrophe) - { - response = ETrue; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } - else if(EPtiKeyboardQwerty4x10 == ptiengine->KeyboardType()) - { - if(aKey == EPtiKeyQwertyComma || - aKey == EPtiKeyQwertyFullstop || - aKey == EPtiKeyQwertySlash || - aKey == EStdKeySingleQuote || - aKey == EStdKeySquareBracketRight || - aKey == EStdKeySquareBracketLeft) - { - response = ETrue; - } - } - else if(EPtiKeyboardQwerty3x11 == ptiengine->KeyboardType()) - { - if(aKey == EPtiKeyQwertyComma || - aKey == EPtiKeyQwertyFullstop || - aKey == EPtiKeyQwertySlash || - aKey == EStdKeySingleQuote || - aKey == EStdKeySquareBracketRight || - aKey == EPtiKeyQwertyAtCharacter ) - { - response = ETrue; - } - } -#endif - return response; - } - -TBool TAknFepInputStateInitialChineseGenericQwerty::IsCharacter(TInt aKey) - { - TBool response = EFalse; - if (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) - { - response = ETrue; - } - return response; - } - -TBool TAknFepInputStateInitialChineseGenericQwerty::HandleKeyByShiftOrCharPressed(TInt aKey, - TKeyPressLength /*aLength*/) - { - TBool ret = EFalse; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringShiftKeyPress); - - TPtiTextCase caseMode = EPtiCaseLower; - if (fepMan->IsOnlyNumericPermitted()) - { - return ret; - } - TPtiTextCase shiftedCase = caseMode; - if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode | CAknFepManager::EFlagShiftKeyDepressed)) - { - shiftedCase = EPtiCaseUpper; - } - - if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) ) - { - shiftedCase = EPtiCaseChrLower; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (fepMan->FnKeyState()) - { - shiftedCase = EPtiCaseFnLower; - } -#endif - - ptiengine->SetCase(shiftedCase); - - - TPtrC text; - text.Set(ptiengine->AppendKeyPress((TPtiKey)aKey)); - - if (text.Length()) - { - TBuf<1> chr; - for (TInt jj = 0; jj < text.Length(); jj++) - { - chr.Zero(); - chr.Append(text[jj]); - TRAP_IGNORE(fepMan->NewCharacterL(chr)); - TRAP_IGNORE(fepMan->CommitInlineEditL()); - ptiengine->ClearCurrentWord(); - } - ret = ETrue; - } - - return ret; - } - -void TAknFepInputStateInitialChineseGenericQwerty::KeyTimerExpired() - { - - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialChineseMultitapBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialChineseMultitapBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialChineseMultitapBase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialChineseMultitapBase.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepCaseManager.h" - -#include -#include - -TAknFepInputStateInitialChineseMultitapBase::TAknFepInputStateInitialChineseMultitapBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - iState = EInitial; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - TPtiTextCase caseMode = ptiengine->Case(); - - ptiengine->ClearCurrentWord(); - ptiengine->SetInputMode(EPtiEngineMultitapping); - - ptiengine->SetCase(caseMode); - } - -TBool TAknFepInputStateInitialChineseMultitapBase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = ETrue; - - if(iData && (iData != aKey)) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - caseMan->UpdateCase(ENullNaviEvent); - } - - iData = aKey; - if(aLength == EShortKeyPress) - { - if (aKey == EPtiKeyStar) - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - return ret; - } - else if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else - { - TPtrC text = ptiengine->AppendKeyPress((TPtiKey)aKey); - if (text.Length()) - { - fepMan->NewCharacterL(text); - } - } - } - else // long keypress - { - if (aKey == EPtiKeyStar) - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - } - - return ret; - } - -// Functions from MPtiObserver interface -void TAknFepInputStateInitialChineseMultitapBase::KeyTimerExpired() - { - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - //Changing the below line from "TRAPD(err," to TRAP_IGNORE - //to remove compiler warning - TRAP_IGNORE(fepMan->CommitInlineEditL()) - //do something if error?? - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - caseMan->UpdateCase(ENullNaviEvent); - - iData = 0; - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialFullNumber.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialFullNumber.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,356 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialFullNumber methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateInitialFullNumber.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepManager.h" - -#include -#include //FeatureManager -#include // MPtiEngineCompositionDataInterface -#include - -// CONSTANTS -const TInt KNumAllowedIdleNumericChars = 21; - -_LIT(KAknFepPlainNumbers, "1234567890"); -const TUint16 KAllAllowedNumericChars[] = - {'*','+','p','w','#','1','2','3','4','5','6','7','8','9','0', ';','.',',','-','E','?'}; -const TKeyEvent KEventsForSecondPass[] = - { - {42, EStdKeyNkpAsterisk, 3, 0}, - {43, EStdKeyNkpPlus, 3, 0}, - {112, 80, EModifierAutorepeatable, 0}, - {119, 87, EModifierAutorepeatable, 0}, - {35, EStdKeyHash, EModifierAutorepeatable, 0}, - {EPtiKey1, EPtiKey1, EModifierAutorepeatable, 0}, - {EPtiKey2, EPtiKey2, EModifierAutorepeatable, 0}, - {EPtiKey3, EPtiKey3, EModifierAutorepeatable, 0}, - {EPtiKey4, EPtiKey4, EModifierAutorepeatable, 0}, - {EPtiKey5, EPtiKey5, EModifierAutorepeatable, 0}, - {EPtiKey6, EPtiKey6, EModifierAutorepeatable, 0}, - {EPtiKey7, EPtiKey7, EModifierAutorepeatable, 0}, - {EPtiKey8, EPtiKey8, EModifierAutorepeatable, 0}, - {EPtiKey9, EPtiKey9, EModifierAutorepeatable, 0}, - {EPtiKey0, EPtiKey0, EModifierAutorepeatable, 0}, - {59, EStdKeySemiColon, EModifierAutorepeatable, 0}, - {46, 122, EModifierAutorepeatable, 0}, - {44, 121, EModifierAutorepeatable, 0}, - {45, 130, EModifierAutorepeatable, 0}, - {101, 69, EModifierAutorepeatable|EModifierLeftShift, 0}, - {63, EStdKeyForwardSlash, EModifierAutorepeatable|EModifierLeftShift, 0} - }; - -/** - * AknFepUiInputStateInitialFullNumber class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialFullNumber::TAknFepUiInputStateInitialFullNumber -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateInitialFullNumber::TAknFepUiInputStateInitialFullNumber( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateInitialJapaneseBase(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialFullNumber::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateInitialFullNumber::InitializeStateL() - { - TAknFepUiInputStateInitialJapaneseBase::InitializeStateL(); - - // Setup PtiEngine - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const TWidthChar width = iOwner->FepMan()->CharacterWidth(); - TPtiEngineInputMode inputmode = EPtiEngineInputModeNone; - switch(width) - { - case EHalfWidthChar: - inputmode = (iOwner->IsQwerty())? - EPtiEngineQwerty - : EPtiEngineNumeric; - break; - - case EFullWidthChar: - inputmode = (iOwner->IsQwerty())? - EPtiEngineFullWidthNumericQwerty - : EPtiEngineFullWidthNumeric; - break; - - default: // no operation - break; - } - if (inputmode != EPtiEngineInputModeNone) - { - ptiEngine->SetInputMode(inputmode); - - if (inputmode == EPtiEngineNumeric) - { - TRAP_IGNORE(ptiEngine->SetExternalKeyMapL(EPtiEngineNumeric, EPtiKeyStar, - (TDesC&)iOwner->NumberModeKeyMapping(), - EPtiCaseLower)) - } - } - - ptiEngine->ClearCurrentWord(); - } - -TBool TAknFepUiInputStateInitialFullNumber::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool rtn = EFalse; - - switch(ptiengine->InputMode()) - { - case EPtiEngineNumeric: // non-Qwerty number input - rtn = HandleOwnKeyL(aKey, aLength); - break; - case EPtiEngineQwerty: // Qwerty number input - case EPtiEngineFullWidthNumericQwerty: // Qwerty full-width number input - rtn = HandleQwertyKeyL(aKey, aLength, fepMan->CharacterWidth()); - break; - case EPtiEngineFullWidthNumeric: // non-Qwerty full-width number input - rtn = TAknFepUiInputStateInitialJapaneseBase::HandleKeyL(aKey, aLength); - break; - default: - break; - } - return rtn; - } - -TBool TAknFepUiInputStateInitialFullNumber::HandleOwnKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - if (aLength == ELongKeyPress) - { - switch (aKey) - { - case EKeyRightArrow: - case EKeyLeftArrow: - case EKeyDownArrow: - case EKeyUpArrow: - case EKeyBackspace: - return EFalse; - case EPtiKeyStar: - if (!fepMan->HashKeySelectionInUse() - && fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - default: - return ETrue; - } - } - - if(aKey == EPtiKeyStar) - { - TBool append = EFalse; - if (aLength == EShortKeyPress) - { - if (fepMan->EditSubmenuInUse()) - { - if (fepMan->IsOnlyNumericPermitted()) - { - append = ETrue; - } - else - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - } - } - else - { - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - else - { - append = ETrue; - } - } - } - else - { - if (fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - if (append) - { - iData = aKey; - TPtrC text = ptiengine->AppendKeyPress((TPtiKey)aKey); - - // star key is inactive if keymapping is empty. - if (text.Length() > 0 && text[0] != 0) - { - fepMan->NewCharacterL(text); - - // Commit immediately if there is only one character associated to the key. - TBuf mapdata; - ptiengine->MappingDataForKey((TPtiKey)aKey, mapdata, ptiengine->Case()); - if (mapdata.Length() <= 1) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - iData = 0; - } - } - } - - return ETrue; - } - - if(iData) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - - iData = 0; - } - return EFalse; - } - -TBool TAknFepUiInputStateInitialFullNumber::HandleQwertyKeyL(TInt aKey, - TKeyPressLength /*aLength*/, const TWidthChar aWidth) - { - TBool rtn = EFalse; - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringShiftKeyPress); - - if ( fepMan->IsOnlyNumericPermitted() ) - { - if (aKey == EStdKeySpace || aKey == EStdKeyEnter) - { - // return Consumed - return ETrue; - } - if (!IsQwertyKey(aKey)) - { - // return Not Consumed - return EFalse; - } - - TChar chr(0); - TKeyEvent numKey; - - ptiengine->AppendKeyPress((TPtiKey)aKey); - const MPtiEngineCompositionDataInterface* data = ptiengine->CompositionData(); - TPtrC text = data->CompletedString(); - if (text.Length() > 0 && text[0] != 0) - { - TChar compchar = text[0]; - if (aWidth == EFullWidthChar) - { - TBuf<2> halfstring; - TInt convlen = JPLangUtil::ConvertFullToHalfWidth( - text.Left(1), halfstring); - if (convlen > 0) - { - compchar = halfstring[0]; - } - } - for (TInt i = 0; i < KNumAllowedIdleNumericChars; i++) - { - - if (compchar == KAllAllowedNumericChars[i]) - { - numKey = KEventsForSecondPass[i]; - chr = KAllAllowedNumericChars[i]; - break; - } - } - } - - if ((chr != 0) && - ((iOwner->NumberModeKeyMapping().Locate(chr) != KErrNotFound) || - (KAknFepPlainNumbers().Locate(chr) != KErrNotFound)) || - fepMan->IsAllowedKeymappingForNumberMode(chr)) - { - if (aWidth == EFullWidthChar) - { - // Full-width characters are committed immediately. - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - } - else - { - // If editor is in number mode and incoming key press would produce - // any of the allowed number mode characters, - // resend suitable key event let it pass through FEP. That way phone idle - // receives the event too. This also takes care of remapping - // different qwerty keymap layouts to edwin events. - fepMan->SetFlag(CAknFepManager::EFlagPassNextKey); - CCoeEnv::Static()->SimulateKeyEventL(numKey, EEventKey); - } - } - ptiengine->ClearCurrentWord(); - - return ETrue; - } - - return rtn; - } - - - -// Functions from MPtiObserver interface -void TAknFepUiInputStateInitialFullNumber::KeyTimerExpired() - { - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TRAP_IGNORE(fepMan->CommitInlineEditL()) - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - - iData = 0; - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialHalfQwertyWesternPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialHalfQwertyWesternPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,357 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialHalfQwertyWesternPredictive methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialHalfQwertyWesternPredictive.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" -#include "AknFepCaseManager.h" //CAknFepCaseManager - -#include -#include - -// TODO: Remove this include -#include -static const TInt KKeyMappingsLength = 32; -TAknFepUiInputStateInitialHalfQwertyWesternPredictive::TAknFepUiInputStateInitialHalfQwertyWesternPredictive(MAknFepUIManagerStateInterface* aOwner) - //:TAknFepInputStateBase(aOwner), - :TAknFepInputStateInitialMultitapBase(aOwner) - { - iData = 0; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // this is already being done in the base constructor - // should not be done again -// TPtiTextCase caseMode = ptiengine->Case(); -// ptiengine->ClearCurrentWord(); -// ptiengine->SetCase(caseMode); - ptiengine->SetInputMode( EPtiEngineHalfQwerty ); - } - -TBool TAknFepUiInputStateInitialHalfQwertyWesternPredictive::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - TBool retVal = EFalse; - TBuf mappedCharacters; - if (iData && (iData != aKey) && fepMan->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - iOwner->PtiEngine()->CancelTimerActivity(); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->ClearCurrentWord(); - fepMan->ClearFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - iData = 0; - // if the current fn key state is FnNext, then clear it. - if( !fepMan->IsFlagSet( CAknFepManager::EFlagLongShiftKeyPress ) ) - { - if( CAknFepFnKeyManager::EFnKeyNext == fepMan->FnKeyState()) - { - fepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone ); - } - } - } - HandleShiftState(aKey); - if((fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed))&& (aKey !=EStdKeyBackspace) && (aKey!=EKeyBackspace)) - { - if ( fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { - fepMan->TryRemoveNoMatchesIndicatorL(); - } - if (fepMan->IsAutoCompleteOn()) - { - TInt tailLength = 0; - iOwner->PtiEngine()->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - if(tailLength > 0) - { - // To remove the autocompletion part, the below function is used. - // DeleteKeyPress was used earlier. This is removed to fix the bug : - // enter characters to show autocompletion part. Now press a - // character so that the no matches character is shown. Now press - // backspace key, last character is not deleted. - fepMan->RemoveSuggestedAdvanceCompletionL(); - return ETrue; - } - } - // for long key press do not go to multitap base - if( EShortKeyPress == aLength ) - { - TAknFepInputStateInitialMultitapBase::HandleKeyL(aKey, aLength); - } - else - { - mappedCharacters.Zero(); - iOwner->PtiEngine()->MappingDataForKey((TPtiKey)aKey - , mappedCharacters, iOwner->PtiEngine()->Case()); - fepMan->NewCharacterL(mappedCharacters); - fepMan->CommitInlineEditL(); - } - // cancel the multitap timer if only one character is mapped to it - mappedCharacters.Zero(); - - iOwner->PtiEngine()->MappingDataForKey((TPtiKey)aKey, mappedCharacters, iOwner->PtiEngine()->Case()); - - if( mappedCharacters.Length() < 2 ) - { - iOwner->PtiEngine()->CancelTimerActivity(); - } - - iData = aKey; - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringChrKeyPress); - return ETrue; - } - // for long press of punct key, a stream of characters mapped to - // that case should be shown both in predictive and non-predictive mode - if ( aLength == ELongKeyPress && aKey == EStdKeyFullStop ) - { - // Long press should always input fnlower character - iOwner->PtiEngine()->SetCase( EPtiCaseFnLower); - - mappedCharacters.Zero(); - iOwner->PtiEngine()->MappingDataForKey((TPtiKey)aKey - , mappedCharacters, iOwner->PtiEngine()->Case()); - fepMan->NewCharacterL(mappedCharacters); - fepMan->CommitInlineEditL(); - return ETrue; - } - switch (aKey) - { - case EStdKeyLeftShift: - case EStdKeyRightShift: - case EStdKeyLeftFunc: - { - // Handle shift key seperately only if fn state is set. - if( CAknFepFnKeyManager::EFnKeyPressed == fepMan->FnKeyState() || - CAknFepFnKeyManager::EFnKeyDown == fepMan->FnKeyState() || - CAknFepFnKeyManager::EFnKeyForced == fepMan->FnKeyState() || - CAknFepFnKeyManager::EFnKeyNext == fepMan->FnKeyState() || - CAknFepFnKeyManager::EFnKeyPressedAgain == fepMan->FnKeyState() || - CAknFepFnKeyManager::EFnKeyLock == fepMan->FnKeyState()) - { - fepMan->PtiEngine()->SetCase( EPtiCaseFnLower ); - TAknFepInputStateInitialMultitapBase::HandleKeyL(aKey, aLength); - // cancel the multitap timer if only one character is mapped to it - mappedCharacters.Zero(); - iOwner->PtiEngine()->MappingDataForKey((TPtiKey)aKey, mappedCharacters, iOwner->PtiEngine()->Case()); - - if( mappedCharacters.Length() < 2 ) - { - iOwner->PtiEngine()->CancelTimerActivity(); - } - } - } - break; - - case EStdKeyNull: - // Take no action if simulated key ends up here - break; - - case EStdKeySpace: //fall through - { - _LIT(KSpace," "); - if( fepMan->FnKeyState() == CAknFepFnKeyManager::EFnKeyNone) - { - fepMan->StartInlineEditL(); - fepMan->UpdateInlineEditL(KSpace,0); - fepMan->CommitInlineEditL(); - return ETrue; - } - else - { - // Most keys activate the entry state and are handled there - fepMan->TryCloseUiL(); //expires the multitap timer - iOwner->ChangeState(EEntry); - fepMan->SendUIActivatedNotification(); - } - break; - } - case EStdKeyEnter: - case EStdKeyTab: - case EStdKeyBackspace: - case EStdKeyLeftArrow: - case EStdKeyRightArrow: - case EStdKeyUpArrow: - case EStdKeyDownArrow: - { - // Navigation keys do not activate the entry state. Instead they are handled by the editor directly. - - // Asyncronous case update is needed after the editor has handled the key - fepMan->SimulateKeyEventL(EKeyF19); - if (((aKey == EStdKeyBackspace) || (aKey == EKeyBackspace)) && (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed))) - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringChrKeyPress); - } - break; - default: - { - // Most keys activate the entry state and are handled there - fepMan->TryCloseUiL(); //expires the multitap timer - iOwner->ChangeState(EEntry); - fepMan->SendUIActivatedNotification(); - } - } - - if ( aKey == EStdKeyEnter) - { - iData = 0; - return 0; - } - if( !iOwner->PtiEngine()->IsValidKey((TPtiKey)aKey)) - { - iData = 0; - fepMan->ClearFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - fepMan->PtiEngine()->CancelTimerActivity(); - - return retVal; - } - - iData = aKey; - - return retVal; - } - -void TAknFepUiInputStateInitialHalfQwertyWesternPredictive::KeyTimerExpired() - { - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - - TAknFepInputStateInitialMultitapBase::KeyTimerExpired(); - - caseMan->UpdateCase(ENullNaviEvent); - fepMan->ClearFlag( CAknFepManager::EFlagInsideMultitapInlineEditingTransaction ); - - iData = 0; - - // if the current fn key state is FnNext, then clear it. - if( !fepMan->IsFlagSet( CAknFepManager::EFlagLongShiftKeyPress ) ) - { - if( CAknFepFnKeyManager::EFnKeyNext == fepMan->FnKeyState()) - { - // This cannot be done in fn manager. It should happen only - // on timer expiry -> for shift key multitapping in fn mode - // when prediction is ON. - fepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone ); - } - } - } - } -void TAknFepUiInputStateInitialHalfQwertyWesternPredictive::HandleShiftState( TInt aKey ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - TPtiTextCase shiftedCase; - if(fnKeyState != CAknFepFnKeyManager::EFnKeyNone) - { - shiftedCase = EPtiCaseFnLower; - } - else - { - shiftedCase= EPtiCaseLower; - } - - // Find out if the key is alphabetic - TBuf keyMappings; - ptiengine->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseUpper ); - TBool isAlpha = ( keyMappings.Length() && TChar(keyMappings[0]).IsAlpha() ); - - if (isAlpha && (fnKeyState == CAknFepFnKeyManager::EFnKeyNone)) - { - switch ( caseMan->CurrentCase() ) - { - case EAknEditorTextCase: - { - // Alphabetic characters are always capitalized in "Abc" mode - // unless the shift is pressed - if ( !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) ) - { - shiftedCase = EPtiCaseUpper; - } - } - break; - - case EAknEditorLowerCase: - { - // Pressing shift enters uppercae letters in the "abc" mode - if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) ) - { - shiftedCase = EPtiCaseUpper; - } - } - break; - - case EAknEditorUpperCase: - { - // In the "ABC" mode (capslock mode) the letters are uppercased - // unless the shift is pressed - if ( !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) ) - { - shiftedCase = EPtiCaseUpper; - } - } - break; - - default: - break; - } - - - } - else - { - // non-alphabetic keys are shifted if and only if shift is pressed, no matter what is the input state - if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) && (fnKeyState == CAknFepFnKeyManager::EFnKeyNone)) - { - shiftedCase = EPtiCaseUpper; - } - else if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) && (fnKeyState != CAknFepFnKeyManager::EFnKeyNone)) - { - shiftedCase = EPtiCaseFnUpper; - } - } - - - // Handle the Chr key state - if ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) ) - { - // Chr key is pressed down. Chr mode is used. - if (shiftedCase == EPtiCaseLower) - { - shiftedCase = EPtiCaseChrLower; - } - else if (shiftedCase == EPtiCaseUpper) - { - shiftedCase = EPtiCaseChrUpper; - } - } - - ptiengine->SetCase(shiftedCase); - - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringShiftKeyPress); - }// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialHiragana.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialHiragana.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialHiragana methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateInitialHiragana.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface - -#include // keys -#include - -// CONSTANTS - -/** - * TAknFepUiInputStateInitialHiragana class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialHiragana::TAknFepUiInputStateInitialHiragana -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateInitialHiragana::TAknFepUiInputStateInitialHiragana( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateInitialJapaneseBase(aOwner, aUIContainer) - { - - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialHiragana::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateInitialHiragana::InitializeStateL() - { - TAknFepUiInputStateInitialJapaneseBase::InitializeStateL(); - - // Setup PtiEngine - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - ptiEngine->ClearCurrentWord(); - ptiEngine->SetInputMode( (iOwner->IsQwerty())? - EPtiEngineHiraganaQwerty - : EPtiEngineHiragana); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialHiragana::HandleNumericShortKeyL -// Handling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateInitialHiragana::HandleNumericShortKeyL(TInt aKey) - { - TBool ret = EFalse; - if (aKey == EPtiKeyStar) - { - ret = ETrue; - } - else - { - iOwner->FepMan()->StartInlineEditL(); - iOwner->ChangeState(EEntry); - } - return ret; - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialHiraganaKanji.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialHiraganaKanji.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialHiraganaKanji methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateInitialHiraganaKanji.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepGlobalEnums.h" - -#include // keys -#include - -// CONSTANTS - -/** - * TAknFepUiInputStateInitialHiraganaKanji class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// ----------------------------------------------------------------------------- -// TAknFepUiInputStateInitialHiraganaKanji::TAknFepUiInputStateInitialHiraganaKanji -// C++ default Constructor -// ----------------------------------------------------------------------------- -// -TAknFepUiInputStateInitialHiraganaKanji::TAknFepUiInputStateInitialHiraganaKanji( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateInitialJapaneseBase(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialHiraganaKanji::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateInitialHiraganaKanji::InitializeStateL() - { - TAknFepUiInputStateInitialJapaneseBase::InitializeStateL(); - - // Setup of PtiEngine - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TPtiEngineInputMode inputmode; - if(iOwner->IsPredictive()) - { - inputmode = (iOwner->IsQwerty())? - EPtiEngineHiraganaKanjiPredictiveQwerty - : EPtiEngineHiraganaKanjiPredictive; - } - else - { - inputmode = (iOwner->IsQwerty())? - EPtiEngineHiraganaKanjiQwerty - : EPtiEngineHiraganaKanji; - } - ptiEngine->SetInputMode(inputmode); - ptiEngine->ClearCurrentWord(); - } - -// ----------------------------------------------------------------------------- -// TAknFepUiInputStateInitialHiraganaKanji::HandleNumericShortKeyL -// Handling numeric short keypress event -// ----------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateInitialHiraganaKanji:: - HandleNumericShortKeyL(TInt aKey) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool ret = EFalse; - if (aKey == EPtiKeyStar) - { // Handling of launch special character table - if (!fepMan->HashKeySelectionInUse()) - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSelectModeMenuL(); - } - else if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - ret = ETrue; - } - else - { - iOwner->FepMan()->StartInlineEditL(); - - // Clear RetroActive buffer on PtiEngine - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - ptiEngine->HandleCommandL(EPtiCommandUserActionRetroActiveClear); - - // The numeric key will be handled by HandleNumericKeyL of - // EntryState or PredictiveInputState - if(iOwner->IsPredictive()) - { - iOwner->ChangeState(EPredictiveInput); - } - else - { - iOwner->ChangeState(EEntry); - } - } - - return ret; - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialIndicMultitap.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialIndicMultitap.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,712 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateInitialIndicMultitap methods. -* -*/ - - - - - - - - - - - -#include "AknFepUIInputStateInitialIndicMultitap.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiManagerWestern.h" -#include "AknFepUiIndicEnums.h" -#include "AknFepCaseManager.h" -#include "AknFepUiIndicInputManager.h" - -#include -#include -#include -#include -#include -#include -#include - -#define PTI_CLEAR_CURRENTWORD( A, B ) \ - ( A )->ClearCurrentWord(); \ - ( B ) = ETrue; \ - - -// ----------------------------------------------------------------------------- -// TAknFepInputStateInitialIndicMultitap::TAknFepInputStateInitialIndicMultitap - -// C++ default constructor can NOT contain any code, that -// might leave or if it is absolutely necessary then MUST be trapped. -// ----------------------------------------------------------------------------- - -TAknFepInputStateInitialIndicMultitap:: -TAknFepInputStateInitialIndicMultitap( MAknFepUIManagerStateInterface* aOwner, - TLanguage aLanguage ) - :TAknFepInputStateInitialMultitapBase( aOwner ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - iIsStarKeyPressed = EFalse; - iIsKeyTimerExpired = ETrue; - iIndicLanguage = aLanguage; - iIsHalantAllowed = EFalse; - iZWSPresent = EFalse; - iRephaPresent = EFalse; - iRakarPresent = EFalse; - iResponseInsertZWS = EFalse; - iLigaturePresent = EFalse; -#ifdef RD_MARATHI - iPreviousCommittedChar = 0; - iEyeLashRaPresent = EFalse; - iChandraAPresent = EFalse; -#endif // RD_MARATHI - TRAP_IGNORE( ptiengine->ActivateLanguageL( aLanguage ) ) - ptiengine->SetCase( EPtiCaseLower ); - } - -// ----------------------------------------------------------------------------- -// TAknFepInputStateInitialIndicMultitap::HandleKeyL - -// Handles the logic of Indic multitap input. This function first checks the validity -// of the inputed text and then enters it. -// ----------------------------------------------------------------------------- - -TBool TAknFepInputStateInitialIndicMultitap::HandleKeyL( TInt aKey, TKeyPressLength aLength ) - { - TBool result = ETrue; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - -#ifdef RD_MARATHI - if( iIsKeyTimerExpired ) - { - iPreviousCommittedChar = fepMan->PreviousChar( ETrue ); - - if( iIndicLanguage == ELangMarathi ) - { - HandleKeyMarathiL(); - } - } -#endif // RD_MARATHI - - if(aKey == EPtiKey1) - { - iKey1Pressed = ETrue; - } - else - { - iKey1Pressed = EFalse; - } - if ( iData && ( iData != aKey ) ) - { -#ifdef RD_MARATHI - iPreviousCommittedChar = fepMan->PreviousChar( ETrue ); - - if( iPreviousCommittedChar == ZERO_WIDTH_SPACE && - aKey == EPtiKey2 ) - { - // This is a scenario where the timer is forcefully - // expired by quickly pressing a different key. - // Should remove the ZWS from the editor. - fepMan->RemovePreviousCharacterL(); - iZWSPresent = EFalse; - - // Reset the previous committed character. - iPreviousCommittedChar = fepMan->PreviousChar( ETrue ); - } - - if( iIndicLanguage == ELangMarathi ) - { - HandleKeyMarathiL(); - } -#endif // RD_MARATHI - - fepMan->CommitInlineEditL(); - PTI_CLEAR_CURRENTWORD( ptiengine, iIsKeyTimerExpired ) - - if( iRephaPresent ) - { - fepMan->AlignLogicalAndVisualCursorL( TTmDocPosSpec::ELeading, EFalse ); - iRephaPresent = EFalse; - } - if( iRakarPresent ) - { - iRakarPresent = EFalse; - } - -#ifdef RD_MARATHI - // This check should be done only after the text is committed. - if( iEyeLashRaPresent ) - { - // Calls the overloaded method which used find doc pos. - // Reason: Unlike Repha, EyeLash Ra can be inserted in - // an empty editor. GetNextVisualCursorPosition would - // result in incorrect cursor alignment in this case. - fepMan->AlignLogicalAndVisualCursorL(); - iEyeLashRaPresent = EFalse; - } -#endif - - } - - if ( aLength == EShortKeyPress ) - { - if ( aKey == EPtiKeyStar ) // Overriding Key - { - iIsStarKeyPressed = ETrue; - fepMan->RemoveZWSCharacterL( iKey1Pressed, EFalse, EFalse, iLigaturePresent ); - } - else - { - TPtiTextCase newCase = ptiengine->Case(); - - TIndicInputResponse keyResponse = - TAknFepUiIndicInputManager::ValidateInput( aKey, - fepMan->PreviousChar( ETrue ), - NULL,NULL, - iIsHalantAllowed, - iIsStarKeyPressed, - iIsKeyTimerExpired, - newCase, - aLength, - iIndicLanguage -#ifdef RD_MARATHI - , EFalse, EFalse, iChandraAPresent - -#endif // RD_MARATHI - ); - - ptiengine->SetCase( newCase ); - TPtrC ptiText = ptiengine->AppendKeyPress( ( TPtiKey )aKey ); - - if ( ptiText.Length() ) - { - do - { - TText prChar; - // For Repha, use the Previous to Previous character - // only if multitap timer hasn't expired. This will - // handle cases like Matra attached to the consonant. - // Here, repha is not allowed and the character to - // to checked is Matra. In cases like a consonant with - // Virama, all the characters should be skipped including - // repha. In this this case the timer is set to expired. - // So the previous character is Virama. And as per the - // language rules, repha is not allowed after Virama. - if( TAknFepUiIndicInputManager::IsCharRepha( - ptiText[0], iIndicLanguage ) && !iIsKeyTimerExpired ) - { - prChar = fepMan->PreviousToPreviousChar( ETrue ); -#ifdef RD_MARATHI - prChar = iPreviousCommittedChar; -#endif // RD_MARATHI - } - else - { - prChar = fepMan->PreviousChar( ETrue ); - } - - // When a base consonant is already entered and the - // user starts multitapping, the second modifier in the - // key map will not be allowed if the previous character - // is considered. The base consonant has to be used - // instead. This change had to be added after the new - // function, IsModifierAllowed was added. - if( TAknFepUiIndicInputManager::IsCharModifier( - ptiText[0], iIndicLanguage ) && !iIsKeyTimerExpired ) - { - prChar = fepMan->PreviousToPreviousChar( ETrue ); - } - - if( TAknFepUiIndicInputManager::IsCharLigature( - ptiText[0], iIndicLanguage ) && !iIsKeyTimerExpired ) - { - if( fepMan->IsZWSCharacterPresent( ETrue ) ) - { - iZWSPresent = ETrue; - } - iLigaturePresent = ETrue; - prChar = fepMan->PreviousToPreviousChar( ETrue ); - } - else - { - iLigaturePresent = EFalse; - } - -#ifdef RD_MARATHI - - // While multitapping after inserting a base consonant, - // modifiers will get inserted first, followed by the - // Nukta character. Hence, use Prev to prev char which - // will be a base consonant. - if( TAknFepUiIndicInputManager::IsCharNukta( - ptiText[0], iIndicLanguage ) && !iIsKeyTimerExpired ) - { - prChar = fepMan->PreviousToPreviousChar( ETrue ); - } -#endif // RD_MARATHI - - keyResponse = - TAknFepUiIndicInputManager::ValidateInput( aKey, - prChar, - ptiText[0], - NULL, - iIsHalantAllowed, - iIsStarKeyPressed, - iIsKeyTimerExpired, - newCase, - aLength, - iIndicLanguage, - iRakarPresent, - iZWSPresent -#ifdef RD_MARATHI - , iChandraAPresent -#endif // RD_MARATHI - ); - - if( !IsFreeSpaceAvailable( keyResponse ) ) - { - keyResponse = EIndicInputResponseInvalid; - } - - if( keyResponse == EIndicInputResponseInvalid ) - { - ptiText.Set( ptiengine->AppendKeyPress( ( TPtiKey )aKey ) ); - } - - if( !ptiText.Length() ) - { - break; - } - - }while( keyResponse == EIndicInputResponseInvalid ); - - if( iIsStarKeyPressed && - aKey == EPtiKey0 && - TAknFepUiIndicInputManager::IsCharOther( - ptiText[0], iIndicLanguage ) ) - { - // Forcefully keep the star key flag to true. Else when - // the ligatures are entered, this flag will be false - // thus preventing the ligature formation. - iIsStarKeyPressed = ETrue; - } - else - { - iIsStarKeyPressed = EFalse; - } - - result = HandleIndicKeyResponseL( aKey, keyResponse, ptiText ); - } - } - } - else - { - /* Long press of a Key */ - if ( aKey == EPtiKeyStar ) - { - /* Launch the SCT For Indic */ - if( fepMan->EditorHasFreeSpace() ) - { - if (fepMan->IsAbleToLaunchSCT() && !fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - } - else - { - TUint prevchar = fepMan->PreviousChar(ETrue); - if(!((aKey == EPtiKey1) && ((0x0031 == prevchar) || (0x0967 == prevchar)) )) - { - TChar ch( aKey ); - TBuf<1> buf; - buf.Append( ch ); - fepMan->NewCharacterSequenceL( buf, EIndicInputResponseNumber ); - fepMan->CommitInlineEditL(); - PTI_CLEAR_CURRENTWORD( ptiengine, iIsKeyTimerExpired ) - } - } - } - iData = aKey; - return( result ); - } - -// ----------------------------------------------------------------------------- -// TAknFepInputStateInitialIndicMultitap::KeyTimerExpired - -// Handles the logic of post keytimerexpired event. This function commits -// the inline editing text to the editor. -// ----------------------------------------------------------------------------- - -void TAknFepInputStateInitialIndicMultitap::KeyTimerExpired() - { - iIsKeyTimerExpired = ETrue; - - if( iRakarPresent ) - { - iRakarPresent = EFalse; - } - - if( iRephaPresent -#ifdef RD_MARATHI - || ( iEyeLashRaPresent && - TAknFepUiIndicInputManager:: - IsCharBaseConsonant( iOwner->FepMan()->NextChar(), - iIndicLanguage ) ) -#endif // RD_MARATHI - ) - { - TRAP_IGNORE( iOwner->FepMan()->AlignLogicalAndVisualCursorL( TTmDocPosSpec::ELeading, EFalse ) ) - iRephaPresent = EFalse; - } - -#ifdef RD_MARATHI - iEyeLashRaPresent = EFalse; -#endif // RD_MARATHI - - if( iResponseInsertZWS || iZWSPresent ) - { - iZWSPresent = EFalse; - iResponseInsertZWS = EFalse; - TRAP_IGNORE( iOwner->FepMan()->RemoveZWSCharacterL( iKey1Pressed, EFalse, - EFalse, iLigaturePresent ) ) - } - iLigaturePresent = EFalse; - -#ifdef RD_MARATHI - iChandraAPresent = EFalse; -#endif // RD_MARATHI - - TAknFepInputStateInitialMultitapBase::KeyTimerExpired(); - } - -TBool TAknFepInputStateInitialIndicMultitap:: - HandleIndicKeyResponseL( TInt aKey, TIndicInputResponse aKeyResponse, TPtrC aPtiText ) - { - TBool result = ETrue; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - switch( aKeyResponse ) - { - case EIndicInputResponseNone: - { - if ( aPtiText.Length() && ( !iIsKeyTimerExpired || fepMan->EditorHasFreeSpace() ) ) - { - if ( iIsKeyTimerExpired ) - { - if ( iZWSPresent ) - { - fepMan->RemoveZWSCharacterL( iKey1Pressed,EFalse, - TAknFepUiIndicInputManager::IsCharModifier(aPtiText[0], iIndicLanguage)); - iZWSPresent = EFalse; - } - - fepMan->NewCharacterSequenceL( aPtiText, EIndicInputResponseNone ); - - if ( fepMan->IsZWSCharacterPresent() ) - { - iZWSPresent = ETrue; - } - } - else - { - if ( aKey == EPtiKey1 ) - { - if( iRephaPresent ) - { - fepMan->RemoveRephaCharacterL(); - iRephaPresent = EFalse; - } - if( iZWSPresent ) - { - fepMan->RemoveZWSCharacterL( iKey1Pressed, ETrue ); - iZWSPresent = EFalse; - } - if( iRakarPresent ) - { - // This is to handle the case when only - // two spaces are left in the editor. - fepMan->RemoveRakarCharacterL(); - iRakarPresent = EFalse; - } -#ifdef RD_MARATHI - iEyeLashRaPresent = EFalse; -#endif // RD_MARATHI - } - else if( aKey == EPtiKey2 ) - { -#ifdef RD_MARATHI - iChandraAPresent = EFalse; -#endif // RD_MARATHI - } - fepMan->NewCharacterSequenceL( aPtiText, EIndicInputResponseNone ); - } - } - iIsKeyTimerExpired = EFalse; - } - break; - - case EIndicInputResponseZWSandCharacter: - { - if( fepMan->EditorHasFreeSpace( 2 ) ) - { - fepMan->NewCharacterSequenceL( aPtiText, EIndicInputResponseZWSandCharacter ); - iZWSPresent = ETrue; - iIsKeyTimerExpired = EFalse; - } - } - break; - case EIndicInputResponseInsertZWS: - { - //Already in multitapping so we need to check wheather - //there is additional single space for ZWS - if( !iIsKeyTimerExpired || fepMan->EditorHasFreeSpace( 1 ) ) - { - fepMan->NewCharacterSequenceL( aPtiText, EIndicInputResponseInsertZWS ); - - // Using a seperate flag here. Cannot use the flag - // iZWSPresent. Consider the scenario:- User enters - // a consonant, then multitaps key-1 to insert halant. - // Now consider that we set the flag to ETrue. - // But before the key timer expires, key-5 is - // multitapped to insert another consonant. - // In this case the code flow will go to the case - // EIndicInputResponseNone. Here the condition, - // if ( iZWSPresent ) succeeds and ZWS is removed. - // This causes direct ligature formation. It should - // actually show the ligature formation after the timeout. - iResponseInsertZWS = ETrue; - } - else // Remove already entered Modifier "Visarga" if there is no space - { - fepMan->RemovePreviousCharacterL(); - } - iIsKeyTimerExpired = EFalse; - } - break; - case EIndicInputResponseInsertZWSandLigature: - { - if( fepMan->EditorHasFreeSpace( 3 ) ) - { - if ( iIsKeyTimerExpired ) - { - fepMan->RemoveZWSCharacterL( iKey1Pressed ); - } - fepMan->NewCharacterSequenceL( aPtiText, EIndicInputResponseInsertZWSandLigature ); - } - iIsKeyTimerExpired = EFalse; - iZWSPresent = ETrue; - } - break; - case EIndicInputResponseIgnore: - break; - - case EIndicInputResponseInsertRepha: - { - if( !iIsKeyTimerExpired ) - { - if( iRakarPresent ) - { - fepMan->RemoveRakarCharacterL(); - iRakarPresent = EFalse; - } -#ifdef RD_MARATHI - else if( iEyeLashRaPresent ) - { - // Remove eye lash ra - TBuf<3>buf; - - // Get the EyeLashRa string. - TAknFepUiIndicInputManager:: - GetEyeLashRa( buf, iIndicLanguage ); - - fepMan->RemoveTextFromEditorL( buf.Length(), 0, ETrue ); - iEyeLashRaPresent = EFalse; - } -#endif // RD_MARATHI - else if( TAknFepUiIndicInputManager::IsCharMatra( - fepMan->PreviousToPreviousChar( ETrue ), iIndicLanguage ) ) - { - // Consider that a matra is applied to any base - // consonant and two nore spaces are left in the editor. - // On multitapping, user will get the first four modifiers. - // After that, rakar should be inserted which requires two - // spaces. But since the modifier is present, only one - // space is available. Here we need to free up the space - // by removing the previous character which is a modifier. - // For inserting repha, the existing inline text needs to - // be first committed and then removed. - - fepMan->RemovePreviousCharacterL(); - } - - fepMan->NewCharacterSequenceL( aPtiText, EIndicInputResponseInsertRepha ); - iRephaPresent = ETrue; - } - } - break; - - case EIndicInputResponseInsertRakar: - { - if( !iIsKeyTimerExpired ) - { - // RemoveZWS is not invoked here as we are in inline - // editing state and we can as well overwrite the previous - // characters. Hence directly invoke NewCharacterSequenceL. - // Secondly, the flag iZWSPresent is not reset here since - // it will happen anyways after timeout. - - fepMan->NewCharacterSequenceL( aPtiText, EIndicInputResponseInsertRakar ); - iRakarPresent = ETrue; - -#ifdef RD_MARATHI - // This check assumes that Rakar comes after EyelashRa in - // Key map order. - iEyeLashRaPresent = EFalse; -#endif - } - } - break; - - case EIndicInputResponseInsertDirectLigature: - { - if( !iIsKeyTimerExpired ) - { - TBuf<3> ligature; - ligature.Zero(); - TAknFepUiIndicInputManager:: - GetLigature( ligature, aPtiText[0], - iIndicLanguage ); - - fepMan->NewCharacterSequenceL( ligature, - EIndicInputResponseInsertDirectLigature ); - } - } - break; - - case EIndicInputResponseInsertViramaZWSandDirectLigature: - { - if( fepMan->EditorHasFreeSpace( 5 ) ) - { - if ( iIsKeyTimerExpired ) - { - fepMan->RemoveZWSCharacterL( iKey1Pressed ); - } - - TBuf<3> ligature; - ligature.Zero(); - TAknFepUiIndicInputManager:: - GetLigature( ligature, aPtiText[0], - iIndicLanguage ); - fepMan->NewCharacterSequenceL( ligature, - EIndicInputResponseInsertViramaZWSandDirectLigature ); - } - iIsKeyTimerExpired = EFalse; - iZWSPresent = ETrue; - } - break; - - case EIndicInputResponseZWSandDirectLigature: - { - if( fepMan->EditorHasFreeSpace( 4 ) ) - { - TBuf<3> ligature; - ligature.Zero(); - TAknFepUiIndicInputManager:: - GetLigature( ligature, aPtiText[0], - iIndicLanguage ); - - fepMan->NewCharacterSequenceL( ligature, - EIndicInputResponseZWSandDirectLigature ); - iZWSPresent = ETrue; - iIsKeyTimerExpired = EFalse; - } - } - break; - -#ifdef RD_MARATHI - case EIndicInputResponseInsertEyeLashRa: - { - fepMan->NewCharacterSequenceL( aPtiText, EIndicInputResponseInsertEyeLashRa ); - iIsKeyTimerExpired = EFalse; - iEyeLashRaPresent = ETrue; - } - break; - - case EIndicInputResponseInsertChandraA: - { - fepMan->NewCharacterSequenceL( aPtiText, EIndicInputResponseInsertChandraA ); - iChandraAPresent = ETrue; - } - break; -#endif // RD_MARATHI - - case EindicInputResponseLast: - break; - default: - { - } - break; - } - return result; - } - -TBool TAknFepInputStateInitialIndicMultitap::IsFreeSpaceAvailable( - TIndicInputResponse aKeyResponse ) - { - TBool result = ETrue; - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - TBool isUnlimitedSpaceEditor; - - TInt freeSpaceLeft = - fepMan->EditorFreeSpace( isUnlimitedSpaceEditor, ETrue ); - - // Check if space is available. - if( ( !isUnlimitedSpaceEditor ) && - ( ( ( aKeyResponse == EIndicInputResponseInsertRepha || - aKeyResponse == EIndicInputResponseInsertRakar ) && ( freeSpaceLeft < 2 ) ) || - ( ( aKeyResponse == EIndicInputResponseInsertDirectLigature ) && ( freeSpaceLeft < 3 ) ) -#ifdef RD_MARATHI - || ( ( aKeyResponse == EIndicInputResponseInsertEyeLashRa ) && ( freeSpaceLeft < 3 ) ) - || ( ( aKeyResponse == EIndicInputResponseInsertChandraA ) && ( freeSpaceLeft < 2 ) ) -#endif // RD_MARATHI - ) ) - { - result = EFalse; - } - return result; - } - -#ifdef RD_MARATHI - -void TAknFepInputStateInitialIndicMultitap::HandleKeyMarathiL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - if( fepMan ) - { - if( fepMan->IsChandraAPresentL() ) - { - TBuf<1> buf; - TAknFepUiIndicInputManager::GetChandraA( buf, ETrue ); - iPreviousCommittedChar = buf[0]; - } - } - } -#endif // RD_MARATHI -//End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialIndicPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialIndicPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateInitialIndicPredictive Method. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialIndicPredictive.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" -#include "AknFepCaseManager.h" //CAknFepCaseManager - -#include -#include - -// ----------------------------------------------------------------------------- -// TAknFepInputStateInitialIndicPredictive::TAknFepInputStateInitialIndicPredictive - -// C++ default constructor can NOT contain any code, that -// might leave or if it is absolutely necessary then MUST be trapped. -// ----------------------------------------------------------------------------- - -TAknFepInputStateInitialIndicPredictive:: -TAknFepInputStateInitialIndicPredictive( MAknFepUIManagerStateInterface* aOwner, - TLanguage aLanguage ) - :TAknFepInputStateInitialMultitapBase( aOwner ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - TRAP_IGNORE( ptiengine->ActivateLanguageL( aLanguage ) ) - } - -// ----------------------------------------------------------------------------- -// TAknFepInputStateInitialIndicPredictive::HandleKeyL - -// Handles the logic of Intial state Predictive Indic input. -// ----------------------------------------------------------------------------- - -TBool TAknFepInputStateInitialIndicPredictive::HandleKeyL( TInt aKey, TKeyPressLength aLength ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool ret = ETrue; - - if ( aKey == EPtiKey0 ) - { - TAknFepInputStateInitialMultitapBase::HandleKeyL( aKey, aLength ); - } - else if ( aKey == EPtiKeyStar ) - { - if (aLength == EShortKeyPress) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagLineFeedCharacter) && - fepMan->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - // User is interrupting multitap timer with star key, but there - // is line feed event waiting. Make sure that it is handled first. - fepMan->CommitInlineEditL(); - } - - if (!fepMan->EditSubmenuInUse()) - { - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - return ( ETrue ); - } - } - else - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - } - } - else - { - if (fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - } - else - { - if ( fepMan->IsFlagSet( CAknFepManager::EFlagSuppressInputStateChange ) ) - { - // Long keypress of numeric keypress, we want to simply return EFalse - // to enter a number into the editor, rather than move back to - // entry state, so just clear the flag - fepMan->ClearFlag( CAknFepManager::EFlagSuppressInputStateChange ); - } - else - { - fepMan->TryCloseUiL(); //expires the multitap timer - iOwner->ChangeState( EEntry ); - fepMan->SendUIActivatedNotification(); - } - ret = EFalse; - } - return ret; - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialJapaneseBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialJapaneseBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialJapaneseBase methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateInitialJapaneseBase.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepGlobalEnums.h" - -#include // keys -#include - - -// CONSTANTS - -/** - * AknFepUIInputStateInitialJapanesBase class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialJapaneseBase:: -// TAknFepUiInputStateInitialJapaneseBase -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateInitialJapaneseBase::TAknFepUiInputStateInitialJapaneseBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateJapaneseBase(aOwner, aUIContainer) - { - iState = EInitial; - - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialJapaneseBase::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateInitialJapaneseBase::InitializeStateL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->SendUIDeActivatedNotification(); - TRAP_IGNORE(fepMan->UpdateCbaL(NULL)); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialJapaneseBase::HandleNumericShortKeyL -// Handling numeric short keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateInitialJapaneseBase:: - HandleNumericShortKeyL(TInt aKey) - { - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if(aKey == EPtiKeyStar) - { // Handling of launch special character table - if (!fepMan->HashKeySelectionInUse()) - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSelectModeMenuL(); - } - else if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - ret = ETrue; - } - else - { - fepMan->StartInlineEditL(); - iOwner->ChangeState(EEntry); - } - // All number keypress event must be handled by InputStateEntry. - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialJapaneseBase::HandleAuxKeyL -// Handling OK and Backspace keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateInitialJapaneseBase:: - HandleAuxKeyL(TInt /*aKey*/,TKeyPressLength /*aLength*/) - { - TBool ret = EFalse; - return ret; - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialKatakana.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialKatakana.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialKatakana methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateInitialKatakana.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepGlobalEnums.h" - -#include // keys -#include - -// CONSTANTS - -/** - * TAknFepUiInputStateInitialKatakana class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialKatakana::TAknFepUiInputStateInitialKatakana -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateInitialKatakana::TAknFepUiInputStateInitialKatakana( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateInitialJapaneseBase(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialKatakana::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateInitialKatakana::InitializeStateL() - { - TAknFepUiInputStateInitialJapaneseBase::InitializeStateL(); - - // Setup PtiEngine - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - ptiEngine->ClearCurrentWord(); - // Set Character Mode - SetInputMode(iOwner->FepMan()->CharacterWidth()); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialKatakana::HandleCommandL -// Handling command -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateInitialKatakana::HandleCommandL(TInt aCommandId) - { - if (aCommandId == EJapanFepCmdModeFullWidth - || aCommandId == EJapanFepCmdModeHalfWidth) - { - // Set Character Mode - SetInputMode(iOwner->FepMan()->CharacterWidth()); - } - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialKatakana::SetInputMode -// Setting input mode to PtiEngine -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateInitialKatakana::SetInputMode(const TWidthChar aWidth) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TPtiEngineInputMode inputmode = EPtiEngineInputModeNone; - switch(aWidth) - { - case EHalfWidthChar: - inputmode = (iOwner->IsQwerty())? - EPtiEngineKatakanaQwerty - : EPtiEngineKatakana; - break; - - case EFullWidthChar: - inputmode = (iOwner->IsQwerty())? - EPtiEngineFullWidthKatakanaQwerty - : EPtiEngineFullWidthKatakana; - break; - - default: // no operation - break; - } - if (inputmode != EPtiEngineInputModeNone) - { - ptiEngine->SetInputMode(inputmode); - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialKoreanMultitap.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialKoreanMultitap.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialKoreanMultitap methods. -* -*/ - -#include "AknFepUiInputStateInitialKoreanMultitap.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepCaseManager.h" -#include "AknFepUiIndicInputManager.h" -#include "AknFepManager.h" - -#include -#include - -TAknFepInputStateInitialKoreanMultitap::TAknFepInputStateInitialKoreanMultitap(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateInitialMultitapBase(aOwner) - { - iState = EInitial; - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - TPtiTextCase caseMode = ptiengine->Case(); - -#ifdef RD_INTELLIGENT_TEXT_INPUT - TRAP_IGNORE(ptiengine->ActivateLanguageL(ELangKorean, EPtiEngineMultitappingKorean)) - ptiengine->SetInputMode(EPtiEngineMultitappingKorean); -#else - TRAP_IGNORE(ptiengine->ActivateLanguageL(ELangKorean, EPtiEngineMultitapping)) - ptiengine->SetInputMode(EPtiEngineMultitapping); -#endif //RD_INTELLIGENT_TEXT_INPUT - - ptiengine->SetCase(caseMode); - } - -TBool TAknFepInputStateInitialKoreanMultitap::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = ETrue; - - if(aLength == EShortKeyPress) - { - - if(aKey == EKeyBackspace) - { - // Narat Geul engine tries first to disassemble hangul to jamos. if disassembly is not possible, - // then clear character. - if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - TPtrC newText = ptiengine->DeleteKeyPress(); - fepMan->UpdateInlineEditL(newText, newText.Length()); - - if (newText.Length() == 0) - { - fepMan->CancelInlineEdit(); - ptiengine->ClearCurrentWord(); - } - } - else - { - ret = EFalse; - } - } - else - { - - if(aKey == EKeyLeftArrow || - aKey == EKeyRightArrow || - aKey == EKeyDownArrow || - aKey == EKeyUpArrow) - { - ret = EFalse; - } - else - { - if (!(fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))) - { // 'new' inline edit - ptiengine->ClearCurrentWord(); - fepMan->StartInlineEditL(); - fepMan->SetInlineEditingCursorVisibilityL(ETrue); - } - - TPtrC aText = ptiengine->AppendKeyPress((TPtiKey)aKey); - fepMan->UpdateInlineEditL(aText, aText.Length()); - - // Force commit when buffer length is 511. Needs to be commited in order to - // prevent ptiengines iTextBuffer overflow. Even though it is very unlikely - // case - if(aText.Length() >= 254) - { - if (CommitOrNot(aText.Right(CAknFepManager::ESingleCharacter), aKey)) - { - TPtrC text = ptiengine->DeleteKeyPress(); - fepMan->UpdateInlineEditL(text, text.Length()); - fepMan->CommitInlineEditL(); - - ptiengine->ClearCurrentWord(); - - TPtrC newText = ptiengine->AppendKeyPress((TPtiKey)aKey); - fepMan->StartInlineEditL(); - fepMan->UpdateInlineEditL(newText, newText.Length()); - } - else if(aText.Length() >= 255) - {// force commit - fepMan->CommitInlineEditL(); - } - } - else - { - fepMan->UpdateInlineEditL(aText, aText.Length()); - } - } - } - } - else // long keypress - { - - if (aKey == EPtiKeyStar) - { - - ptiengine->DeleteKeyPress(); - TPtrC text = ptiengine->PreviousCandidate(); - fepMan->UpdateInlineEditL(text, text.Length()); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - - fepMan->LaunchSelectModeMenuL(); - } - else - { - // Insert number through long key press. - if (aKey != EKeyBackspace) - { - if (!fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - // No edit transaction going on, we have ended here because of long - // key press created editor on UI or some other similar non-standard situation. - // We can't handle key press, so just consume it. - return ETrue; - } - - TPtrC text = ptiengine->PreviousCandidate(); - fepMan->UpdateInlineEditL(text, text.Length()); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - ret = EFalse; - } - else if (aKey == EKeyBackspace) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - fepMan->TryCloseUiL(); - } - ret = EFalse; - } - else - { - ret = EFalse; - } - } - - } - return ret; - } - -// Decides wheather text should be commited or not. Makes comparison between latest key input -// and "seed" jamos. if latest input match with one of "seed" jamos and star or hash key cannot make -// any changes to input, then commit. -// NOTE; the "seed" jamos are characters that are printed on keymat. Narat geul engine compiles all -// the hanguls from 12 jamos. -TBool TAknFepInputStateInitialKoreanMultitap::CommitOrNot(TPtrC aData, TInt aKey) - { - TBool commit = EFalse; - TBuf mappings; - TInt len; - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - ptiengine->MappingDataForKey((TPtiKey)aKey, mappings, ptiengine->Case()); - len = mappings.Length(); - - for (TInt i = 0; i < len; i++ ) - { - if(aData.Compare(mappings.Left(i + 1)) == 0) - { - commit = ETrue; - break; - } - } - - return commit; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialLatinJapanese.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialLatinJapanese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateInitialLatinJapanese methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateInitialLatinJapanese.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepCaseManager.h" // CAknFepCaseManager -#include "AknFepManager.h" - -#include //keys -#include - -// CONSTANTS - -/** - * TAknFepUiInputStateInitialLatinJapanese class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialLatinJapanese::TAknFepUiInputStateInitialLatinJapanese -// Default constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateInitialLatinJapanese::TAknFepUiInputStateInitialLatinJapanese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateInitialJapaneseBase(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialLatinJapanese::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateInitialLatinJapanese::InitializeStateL() - { - TAknFepUiInputStateInitialJapaneseBase::InitializeStateL(); - - // Setup PtiEngine - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TPtiEngineInputMode ptiInputMode = (iOwner->IsQwerty())? - EPtiEngineQwerty - : EPtiEngineMultitapping; - if (iOwner->FepMan()->CharacterWidth() == EFullWidthChar) - { - ptiInputMode = (iOwner->IsQwerty())? - EPtiEngineFullWidthAlphabetQwerty - : EPtiEngineFullWidthAlphabet; - } - ptiEngine->SetInputMode(ptiInputMode); - ptiEngine->ClearCurrentWord(); - - // Setup Case - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - TInt currentCase = caseMan->CurrentCase(); - TPtiTextCase ptiCase = EPtiCaseUpper; - if (currentCase == EAknEditorLowerCase) - { - ptiCase = EPtiCaseLower; - } - ptiEngine->SetCase(ptiCase); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialLatinJapanese::HandleNumericShortKeyL -// Handling numeric short keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateInitialLatinJapanese:: -HandleNumericShortKeyL(TInt aKey) - { - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if(aKey == EPtiKeyStar) - { // Handling of launch special character table - if (!fepMan->HashKeySelectionInUse()) - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSelectModeMenuL(); - } - else if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - ret = ETrue; - } - else - { - fepMan->StartInlineEditL(); - iOwner->ChangeState(EEntry); - } - // Setup Case without Qwerty - if (!iOwner->IsQwerty()) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - TInt currentCase = caseMan->CurrentCase(); - TPtiTextCase ptiCase = EPtiCaseUpper; - if (currentCase == EAknEditorLowerCase) - { - ptiCase = EPtiCaseLower; - } - ptiEngine->SetCase(ptiCase); - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateInitialJapaneseBase::HandleAuxKeyL -// Handling OK and Backspace keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateInitialLatinJapanese:: - HandleAuxKeyL(TInt aKey,TKeyPressLength /*aLength*/) - { - TBool ret = EFalse; - - if (iOwner->IsQwerty()) - { - switch (aKey) - { - case EStdKeyEnter: /* 0x03 */ - case EStdKeyNkpEnter: /* 0x88 */ - { - // PtiEngine does not have mapping for the enter key. - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - const TText KAknFEPLineFeedSymbol = 0x21B2; - TBuf<1> lineFeed; - lineFeed.Zero(); - lineFeed.Append(KAknFEPLineFeedSymbol); - fepMan->NewCharacterL(lineFeed); - // Commit the character if chr key is not pressed. - fepMan->CommitInlineEditL(); - - ret = ETrue; - } - break; - default: - break; - } - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialLatinMultitap.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialLatinMultitap.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialLatinMultitap methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialLatinMultitap.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface - -#include "AknFepCaseManager.h" -#include - -#include - -TAknFepInputStateInitialLatinMultitap:: -TAknFepInputStateInitialLatinMultitap(MAknFepUIManagerStateInterface* aOwner) -:TAknFepInputStateInitialMultitapBase(aOwner) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TPtiTextCase caseMode = ptiengine->Case(); - ptiengine->SetCase(caseMode); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialMultitapBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialMultitapBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,184 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialMultitapBase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialMultitapBase.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepCaseManager.h" -#include "AknFepUiIndicInputManager.h" - -#include -#include - -TAknFepInputStateInitialMultitapBase:: -TAknFepInputStateInitialMultitapBase(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateBase(aOwner) - { - iState = EInitial; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - TPtiTextCase caseMode = ptiengine->Case(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - // This part of code TSW error fixing - // In case of ITU-T, whenever word is displaying along with autocompletion - // part and if some how editor will lose focus [example: launch candidate list, - // launch option menu] word along with auto completion part get locked and come to inline editing. - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool clearCurrentword(ETrue); - TRAP_IGNORE( - if( fepMan->WesternPredictive() ) - { - TInt tailLength = 0; - ptiengine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - if( tailLength > 0 ) - { - clearCurrentword = EFalse; - } - }); - - if( clearCurrentword ) - { -#endif - ptiengine->ClearCurrentWord(); - -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - ptiengine->SetInputMode(EPtiEngineMultitapping); - - ptiengine->SetCase(caseMode); - } - -TBool TAknFepInputStateInitialMultitapBase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = ETrue; - - if(iData && (iData != aKey)) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - - iData = aKey; - if(aLength == EShortKeyPress) - { - if (aKey == EPtiKeyStar) - { - if (fepMan->EditSubmenuInUse()) - { - return ret; - } - else if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else - { - TPtrC text = ptiengine->AppendKeyPress((TPtiKey)aKey); - - if( aKey == EPtiKey0 && text.Length()) - { - MPtiLanguage* ptilang = ptiengine->CurrentLanguage(); - TInt currentPtiLang = ( ptilang )? ptilang->LanguageCode() : 0; - if( TAknFepUiIndicInputManager::IsCharLigature( text[0], - ( TLanguage )currentPtiLang ) ) - { - ptiengine->ClearCurrentWord(); - text.Set( ptiengine->AppendKeyPress( ( TPtiKey )aKey ) ); - } - } - - if (text.Length()) - { - fepMan->NewCharacterL(text); - } - } - } - else // long keypress - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (aKey == EPtiKeyStar) - { - if(fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } -#else - if (aKey == EPtiKeyStar && fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } -#endif - else - { - if (aKey != EKeyBackspace) - { - TChar ch(aKey); - - TBuf<1> buf; - buf.Append(ch); - fepMan->NewCharacterL(buf); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - else - { - ret = EFalse; - } - } - } - - return ret; - } - -// Functions from MPtiObserver interface -void TAknFepInputStateInitialMultitapBase::KeyTimerExpired() - { - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TRAP_IGNORE(fepMan->CommitInlineEditL()) - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - - iData = 0; - } - } - -// Set the Star Key flag. -void TAknFepInputStateInitialMultitapBase::SetStarKeyFlag( TBool aSet) - { - TAknFepInputStateBase::SetStarKeyFlag( aSet ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialNumber.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialNumber.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,190 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialNumber methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialNumber.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" - -#include -#include -#include //FeatureManager - -TAknFepInputStateInitialNumber:: -TAknFepInputStateInitialNumber(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateInitialMultitapBase(aOwner) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->SetInputMode(EPtiEngineNumeric); - - TRAP_IGNORE(ptiengine->SetExternalKeyMapL(EPtiEngineNumeric, EPtiKeyStar, - (TDesC&)iOwner->NumberModeKeyMapping(), EPtiCaseLower)) - } - -TBool TAknFepInputStateInitialNumber::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - if (aLength == ELongKeyPress) - { - switch (aKey) - { - case EKeyRightArrow: - case EKeyLeftArrow: - case EKeyDownArrow: - case EKeyUpArrow: - case EKeyBackspace: - return EFalse; - case EPtiKeyStar: - if (fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT()) - { - if (ptiengine->CurrentLanguage()->LanguageCode() == ELangKorean) - { - fepMan->LaunchSelectModeMenuL(); - } - else - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - default: - return ETrue; - } - } - - if(aKey == EPtiKeyStar) - { - TBool append = EFalse; - if (aLength == EShortKeyPress) - { - if (fepMan->EditSubmenuInUse()) - { - if (fepMan->IsOnlyNumericPermitted()) - { - append = ETrue; - } - else - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - } - } - else - { - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - else - { - append = ETrue; - } - } - } - else - { - if (fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - if (append) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - - // check editor is phonenumber editor or not. - TBool phoneNumberEditor = (fepMan->EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor); - - if( (fepMan->IsOnlyNumericPermitted()|| phoneNumberEditor ) && fepMan->GetNumericSCTResID()) - { - TCallBack timerExpire(NumericResourceTimerTimeoutL, this); - fepMan->MultitapThroughSCTCharL(timerExpire); - return ETrue; - } - else - { - NumericResourceKeyTimerTimeoutL(); - } - -#else - iData = aKey; - TPtrC text = ptiengine->AppendKeyPress((TPtiKey)aKey); - - // star key is inactive if keymapping is empty. - if (text.Length() > 0 && text[0] != 0) - { - fepMan->NewCharacterL(text); - - // Commit immediately if there is only one character associated to the key. - TBuf mapdata; - ptiengine->MappingDataForKey((TPtiKey)aKey, mapdata, ptiengine->Case()); - if (mapdata.Length() <= 1) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - iData = 0; - } - } -#endif - } - - return ETrue; - } - - if(iData) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - - iData = 0; - } - return EFalse; - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT - -TInt TAknFepInputStateInitialNumber::NumericResourceTimerTimeoutL(TAny* aPtr) - { - reinterpret_cast(aPtr)->NumericResourceKeyTimerTimeoutL(); - return 1; - } -TInt TAknFepInputStateInitialNumber::NumericResourceKeyTimerTimeoutL() - { - if(iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - // this function is only called for number only editors - - iOwner->FepMan()->CommitInlineEditL(); - } - return 1; - } - -#endif //RD_INTELLIGENT_TEXT_INPUT - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialQwertyWesternPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialQwertyWesternPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialQwertyWesternPredictive methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialQwertyWesternPredictive.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" -#include "AknFepCaseManager.h" //CAknFepCaseManager - -#include - -TAknFepInputStateInitialQwertyWesternPredictive:: -TAknFepInputStateInitialQwertyWesternPredictive(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateBase(aOwner) - { - } - -TBool TAknFepInputStateInitialQwertyWesternPredictive::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - - switch (aKey) - { - case EStdKeyNull: - // Take no action if simulated key ends up here - break; - - case EStdKeySpace: //fall through - { - if (fnKeyState == CAknFepFnKeyManager::EFnKeyDown) - { - fepMan->LaunchSelectModeMenuL(); - } - else - { - _LIT(KSpace," "); - fepMan->StartInlineEditL(); - fepMan->UpdateInlineEditL(KSpace,0); - fepMan->CommitInlineEditL(); - return ETrue; - } - } - case EStdKeyEnter: - case EStdKeyTab: - case EStdKeyBackspace: - case EStdKeyLeftArrow: - case EStdKeyRightArrow: - case EStdKeyUpArrow: - case EStdKeyDownArrow: - { - // Navigation keys do not activate the entry state. Instead they are handled by the editor directly. - - // Asyncronous case update is needed after the editor has handled the key - fepMan->SimulateKeyEventL(EKeyF19); - } - break; - // In case of Forward Deletion, we should not be doing anything - case EStdKeyF21: - case EKeyLeftShift: - break; - default: - { - // Most keys activate the entry state and are handled there - fepMan->TryCloseUiL(); //expires the multitap timer - iOwner->ChangeState(EEntry); - fepMan->SendUIActivatedNotification(); - } - } - - return EFalse; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialThaiMultitap.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialThaiMultitap.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,106 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialThaiMultitap methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIInputStateInitialThaiMultitap.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface - -#include "AknFepCaseManager.h" -#include - -#include -#include -#include -#include -#include - - -TAknFepInputStateInitialThaiMultitap:: -TAknFepInputStateInitialThaiMultitap(MAknFepUIManagerStateInterface* aOwner) -:TAknFepInputStateInitialMultitapBase(aOwner) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TPtiTextCase caseMode = ptiengine->Case(); - TRAP_IGNORE(ptiengine->ActivateLanguageL(ELangThai)) - ptiengine->SetCase(caseMode); - } - -TBool TAknFepInputStateInitialThaiMultitap::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - if(aLength == EShortKeyPress) - { - if (aKey == EPtiKey0 && fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL( - iOwner->ThaiSCTResourceId(fepMan->PreviousChar(),aKey)); - return (ETrue); - } - else if (aKey == EPtiKeyStar) - { - if (!fepMan->EditSubmenuInUse()) - { - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL( - iOwner->ThaiSCTResourceId(fepMan->PreviousChar(),aKey)); - return (ETrue); - } - } - else - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - } - } - } - else - { - if (aKey == EPtiKeyStar && fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL( - iOwner->ThaiSCTResourceId(fepMan->PreviousChar(),aKey)); - return (ETrue); - } - } - - return (TAknFepInputStateInitialMultitapBase::HandleKeyL(aKey, aLength)); - } - - -void TAknFepInputStateInitialThaiMultitap::HandleCommandL(TInt aCommandId) - { - if (aCommandId == EAknCmdEditInsertSymbol) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->LaunchSpecialCharacterTableL( - iOwner->ThaiSCTResourceId(fepMan->PreviousChar(),EPtiKeyStar)); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialThaiPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialThaiPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,106 +0,0 @@ -/* -* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialThaiPredictive methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialThaiPredictive.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" -#include "AknFepCaseManager.h" //CAknFepCaseManager - -#include - - -TAknFepInputStateInitialThaiPredictive:: -TAknFepInputStateInitialThaiPredictive(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateInitialMultitapBase(aOwner) - { - } - -TBool TAknFepInputStateInitialThaiPredictive::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool ret = ETrue; - - if (aKey == EPtiKeyStar ) - { - if (aLength == EShortKeyPress) - { - if (!fepMan->EditSubmenuInUse()) - { - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(iOwner->ThaiSCTResourceId(0x0020,aKey)); - return (ETrue); - } - } - else - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - } - } - else - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(iOwner->ThaiSCTResourceId(0x0020,aKey)); - return (ETrue); - } - } - } - else - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagSuppressInputStateChange)) - { - // Long keypress of numeric keypress, we want to simply return EFalse - // to enter a number into the editor, rather than move back to - // entry state, so just clear the flag - fepMan->ClearFlag(CAknFepManager::EFlagSuppressInputStateChange); - } - else - { - fepMan->TryCloseUiL(); //expires the multitap timer - iOwner->ChangeState(EEntry); - fepMan->SendUIActivatedNotification(); - } - ret = EFalse; - } - return ret; - } - -void TAknFepInputStateInitialThaiPredictive::HandleCommandL(TInt aCommandId) - { - if (aCommandId == EAknCmdEditInsertSymbol) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->LaunchSpecialCharacterTableL( - iOwner->ThaiSCTResourceId(fepMan->PreviousChar(),EPtiKeyStar)); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialVietnameseMultitap.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialVietnameseMultitap.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,228 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialVietnameseMultitap methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIInputStateInitialVietnameseMultitap.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface - -#include "AknFepCaseManager.h" -#include "AknFepVietnameseToneManager.h" - -#include - -#include -#include -#include -#include -#include - -#include "AknFepUiManagerWestern.h" - -TAknFepInputStateInitialVietnameseMultitap:: -TAknFepInputStateInitialVietnameseMultitap(MAknFepUIManagerStateInterface* aOwner) -:TAknFepInputStateInitialMultitapBase(aOwner) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TPtiTextCase caseMode = ptiengine->Case(); - ptiengine->SetCase(caseMode); - } - -TBool TAknFepInputStateInitialVietnameseMultitap::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool bHandled = EFalse; - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepUIManagerWestern* uiMan = static_cast(iOwner); - CAknFepVietnameseToneManager* toneMgr = uiMan->VietnameseToneManager(); - CPtiEngine* ptiEng = fepMan->PtiEngine(); - - toneMgr->SetFepManager(fepMan); - - if (aKey == EPtiKeyStar) - { - if (aLength == EShortKeyPress) - { - if (!toneMgr->IsLooping()) - { - // Start looping status - if (toneMgr->StartToneMarkLooping()) - { - // Save the vowel for undo back deletion - toneMgr->SetDeletedVowel(fepMan->PreviousChar()); - - ((CAknFepManager*)fepMan)->RemovePreviousCharacterL(); // remove previous char - } - } - - // Process the interim looping state - if (toneMgr->IsLooping()) - { - // Get current tone mark - TText toneVowel = toneMgr->GetVowelWithToneMark(); - toneMgr->IncrementToneMark(); - - TBuf aChr; - aChr.Append(toneVowel); - - // Update inline character(s) - fepMan->CancelInlineEdit(); - fepMan->NewCharacterL(aChr); - - // Reset the engine timer so that we can get timer expired message - // We send the * key, and clear it in the next loop - ptiEng->ClearCurrentWord(); - ptiEng->AppendKeyPress((TPtiKey)aKey); - - bHandled = ETrue; - - if (fepMan->EditSubmenuInUse()) - { - // Looping tone marks, supress edit-menu. - fepMan->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - } - } - } - else if (aLength == ELongKeyPress) - { - // Reset the key event so that the TAknFepInputStateInitialMultitapBase will - // parse this event as a short key event, default reaction is to launch SCT - aLength = EShortKeyPress; - - if (toneMgr->IsLooping()) - { - // Remove the previous EShortKeyPress message - fepMan->CancelInlineEdit(); - toneMgr->StopToneMarkLooping(); - - // Undo the backdeletion - TText bkChr = toneMgr->GetDeletedVowel(); - - TBuf aChr; - aChr.Append(bkChr); - - fepMan->NewCharacterL(aChr); - fepMan->CommitInlineEditL(); - - if (fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - return ETrue; - } - } - else if (fepMan->EditSubmenuInUse()) - { - aLength = ELongKeyPress; - } - } - } - - // Implementation for the Vietnamese back deletion - if (aKey == EKeyBackspace) - { - TBuf<2> newText; - // Get the last character from the current editor - TText prevChar = fepMan->PreviousChar(); - - // Judge if the last character needs to be converted - if ( NeedsVietnameseBkDelSupport(prevChar, newText) ) - { - // Delete the prev character and send the new character to editor - ((CAknFepManager*)fepMan)->RemovePreviousCharacterL(); - fepMan->NewCharacterL(newText); - fepMan->CommitInlineEditL(); - // Stop looping for backspace operation - if( toneMgr->IsLooping() ) - { - toneMgr->StopToneMarkLooping(); - } - return ETrue; - } - else - { - if ( prevChar ) - { - ((CAknFepManager*)fepMan)->RemovePreviousCharacterL(); - } - else - { - return EFalse; - } - - bHandled = EFalse; - } - } - - if(!bHandled && toneMgr->IsLooping()) - { - toneMgr->StopToneMarkLooping(); - } - - return bHandled ? ETrue : TAknFepInputStateInitialMultitapBase::HandleKeyL(aKey, aLength); - } - -void TAknFepInputStateInitialVietnameseMultitap::KeyTimerExpired() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepUIManagerWestern* uiMan = static_cast(iOwner); - CAknFepVietnameseToneManager* toneMgr = uiMan->VietnameseToneManager(); - CPtiEngine* ptiEng = fepMan->PtiEngine(); - - // Try commit inline editting and clean up for future input attemps - TRAP_IGNORE(fepMan->CommitInlineEditL()); - - toneMgr->StopToneMarkLooping(); - ptiEng->ClearCurrentWord(); - } - -TBool TAknFepInputStateInitialVietnameseMultitap::NeedsVietnameseBkDelSupport( - TText aGlyphToDelete, TDes& aNewText) - { - TBool needBkDelSupport(EFalse); - - const TInt KMatrixColumn = sizeof(VietToneMatrix) / sizeof(TText) / KNumberOfToneMarks; - - aNewText.Zero(); - - // Loop of the ToneMatrix columns starts from 1 because the first column of the ToneMatrix stores the vowels - for (TUint i = 1; (i < KMatrixColumn) && (!needBkDelSupport); ++i) - { - for (TUint j = 0; j < KNumberOfToneMarks; ++j) - { - if (VietToneMatrix[i][j] == aGlyphToDelete) - { - needBkDelSupport = ETrue; - aNewText.Append(VietVowelList[i - 1]); - break; - } - } - } - - return needBkDelSupport; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialWesternPredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialWesternPredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialWesternPredictive methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialWesternPredictive.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" -#include "AknFepCaseManager.h" //CAknFepCaseManager -#include "AknFepUiIndicInputManager.h" - -#include -#include - -TAknFepInputStateInitialWesternPredictive:: -TAknFepInputStateInitialWesternPredictive(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateInitialMultitapBase(aOwner) - { - } - -TBool TAknFepInputStateInitialWesternPredictive::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool ret = ETrue; - - if (aKey == EPtiKey0) - { - TAknFepInputStateInitialMultitapBase::HandleKeyL(aKey, aLength); - } - else if (aKey == EPtiKeyStar) - { - if (aLength == EShortKeyPress) - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagLineFeedCharacter) && - fepMan->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - { - // User is interrupting multitap timer with star key, but there - // is line feed event waiting. Make sure that it is handled first. - fepMan->CommitInlineEditL(); - } - - if (!fepMan->EditSubmenuInUse()) - { - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - } - } - else - { - if (fepMan->EditSubmenuInUse() && fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - } - else - { - if (fepMan->IsFlagSet(CAknFepManager::EFlagSuppressInputStateChange)) - { - // Long keypress of numeric keypress, we want to simply return EFalse - // to enter a number into the editor, rather than move back to - // entry state, so just clear the flag - fepMan->ClearFlag(CAknFepManager::EFlagSuppressInputStateChange); - - // Asyncronous case update after the number has been entered to the editor. - fepMan->SimulateKeyEventL(EKeyF19); - } - else - { - fepMan->TryCloseUiL(); //expires the multitap timer - iOwner->ChangeState(EEntry); - fepMan->SendUIActivatedNotification(); - } - ret = EFalse; - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateInitialZhuyinFind.cpp --- a/fep/aknfep/src/AknFepUiInputStateInitialZhuyinFind.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialZhuyinFind methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialZhuyinFind.h" -#include "AknFepUIManagerStateInterface.h" - -#include - -TAknFepInputStateInitialZhuyinFind::TAknFepInputStateInitialZhuyinFind( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateInitialChineseMultitapBase(aOwner, aUIContainer) - { - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateJapaneseBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateJapaneseBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,459 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepUiInputStateJapaneseBase methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateJapaneseBase.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepCaseManager.h" // CAknFepCaseManager -#include "AknFepGlobalEnums.h" -#include "AknFepPanic.h" - -#include // keys -#include - -// CONSTANTS -#define EFirstHalfUpperChar 0x0041 -#define ELastHalfUpperChar 0x005A -#define EFirstFullUpperChar 0xff21 -#define ELastFullUpperChar 0xff3A -#define EFirstHalfLowerChar 0x0061 -#define ELastHalfLowerChar 0x007A -#define EFirstFullLowerChar 0xff41 -#define ELastFullLowerChar 0xff5A - -/** - * TAknFepUiInputStateJapaneseBase class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::TAknFepUiInputStateJapaneseBase -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateJapaneseBase:: -TAknFepUiInputStateJapaneseBase(MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepInputStateBase(aOwner) - { - iUIContainer = aUIContainer; - if (aOwner) - { - aOwner->FepMan()->SendUIActivatedNotification(); - } - } - -/** - * MPtiObserver interface. - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::KeyTimerExpired -// Call this function when Multitap timer of PtiEngine was time-out -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateJapaneseBase::KeyTimerExpired() - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::LastWordInSelectionList -// not-use Japanese state -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateJapaneseBase::LastWordInSelectionList() - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::FirstWordInSelectionList -// not-use Japanese state -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateJapaneseBase::FirstWordInSelectionList() - { - } - -/** - * TAknFepUiInputStateJapaneseBase class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::HandleKeyL -// Hnadling Keypress events. This Method is called by CAknFepUIManagerJapanese -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapaneseBase:: - HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = ETrue; - if(iState == EInitial) - { - ret = EFalse; - } - - if (iOwner->IsQwerty()) - { - switch(aKey) - { - case EStdKeyLeftArrow: /* 0x0e */ - case EStdKeyRightArrow: /* 0x0f */ - case EStdKeyUpArrow: /* 0x10 */ - case EStdKeyDownArrow: /* 0x11 */ - { - // Long and short keypress is same Handling - ret = HandleNaviKeyL(aKey, aLength); - } - break; - case EKeyOK: - case EStdKeyEnter: /* 0x03 */ - case EStdKeyNkpEnter: /* 0x88 */ - case EStdKeyDevice3: /* 0xA7 */ - { - ret = HandleAuxKeyL(aKey, aLength); - } - break; - case EStdKeyBackspace: /* 0x01 */ - case EStdKeyEscape: /* 0x04 */ - { - // Long and short keypress is same Handling - ret = HandleAuxKeyL(aKey, aLength); - } - break; - case EStdKeySpace: - if( iState == EConversion - || iState == ECandidate - || iState == ECandidateRetroActive ) - { - ret = HandleNaviKeyL(aKey, aLength); - } - else - { - ret = HandleNumericShortKeyL(aKey); - } - break; - default: - // for Qwerty - if (aLength == EShortKeyPress - && IsQwertyKey(aKey)) - { - ret = HandleNumericShortKeyL(aKey); - } - break; - } - } - else - { - switch(aKey) - { - case EPtiKey0: - case EPtiKey1: - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - case EPtiKeyStar: - { - if(aLength == ELongKeyPress) - { - if (aKey != EPtiKeyStar) - { - ret = HandleNumericLongKeyL(aKey); - } - else - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->HashKeySelectionInUse()) - { - ret = ETrue; - } - } - } - else if (aLength == EShortKeyPress) - { - ret = HandleNumericShortKeyL(aKey); - } - } - break; - case EKeyLeftArrow: - case EKeyRightArrow: - case EKeyDownArrow: - case EKeyUpArrow: - { - // Long and short keypress is same Handling - ret = HandleNaviKeyL(aKey, aLength); - } - break; - case EKeyOK: - { - ret = HandleAuxKeyL(aKey, aLength); - } - break; - case EKeyBackspace: - { - // Long and short keypress is same Handling - ret = HandleAuxKeyL(aKey, aLength); - } - break; - default: - { - AknFepPanic(EAknFepPanicNotSupportKey); - } - break; - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::HandleCommandL -// Handling Command events. This Method is called by CAknFepUIManagerJapanese. -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateJapaneseBase::HandleCommandL(TInt /*aCommandId*/) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::operator= -// A patch to force the vtable to be copied during an assignment. -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateJapaneseBase::operator=(const TAknFepInputStateBase& aState) - { - Mem::Copy(this, &aState, sizeof(TAknFepUiInputStateJapaneseBase)); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::HandleNumericKeyL -// Handling short keypress events of the numeric and the star. -// HandleKeyEventL() call this method. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapaneseBase::HandleNumericShortKeyL(TInt /*aKey*/) - { - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::HandleNumericLongKeyL -// Handling Numeric long keypress event. HandleKeyEventL() call this method. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapaneseBase::HandleNumericLongKeyL(TInt /*aKey*/) - { - iOwner->ChangeState(EMultiCompletion); - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::HandleNaviKeyL -// Handling navigate keypress event. HandleKeyEventL() call this method. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapaneseBase::HandleNaviKeyL(TInt /*aKey*/, - TKeyPressLength /*aLength*/) - { - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace. -// HandleKeyEventL() call this method. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapaneseBase::HandleAuxKeyL(TInt /*aKey*/, - TKeyPressLength /*aLength*/) - { - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::UpdateInlineEditingCharacterL -// Update inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapaneseBase::UpdateInlineEditingCharacterL() - { - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::CommitInlineEditingCharacterL -// Commit inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapaneseBase::CommitInlineEditingCharacterL() - { - return EFalse; - } - - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::UIContainer() -// Getting UI container object -// --------------------------------------------------------------------------- -// - -MAknFepUICtrlContainerJapanese* TAknFepUiInputStateJapaneseBase::UIContainer() - { - return static_cast(iUIContainer); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::UpdateCase -// Update character case -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateJapaneseBase::UpdateCase(TPtrC& aChar) - { - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - if (IsDiffrentCase(aChar)) - { - caseMan->ManualCaseUpdate(); - } - else - { - caseMan->UpdateCase(ENullNaviEvent); - } - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::IsDiffrentCase -// Check whether last catacter case and current catacter case is same -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapaneseBase::IsDiffrentCase(TPtrC& aChar) const - { - TBool ret = EFalse; - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - TInt currentCase = caseMan->CurrentCase(); - switch(currentCase) - { - case EAknEditorUpperCase: - { - if (IsLowerCase(aChar)) - { - ret = ETrue; - } - } - break; - case EAknEditorLowerCase: - { - if (IsUpperCase(aChar)) - { - ret = ETrue; - } - } - case EAknEditorTextCase: - break; - default: // Panic - { - AknFepPanic(EAknFepPanicBadCase); - } - break; - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::IsUpperCase -// Check a caracter case is upper -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapaneseBase::IsUpperCase(TPtrC& aChar) const - { - if ((EFirstHalfUpperChar <= aChar[0] && aChar[0] <= ELastHalfUpperChar) - || (EFirstFullUpperChar <= aChar[0] && aChar[0] <= ELastFullUpperChar)) - { - return ETrue; - } - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapaneseBase::IsLowerCase -// Check a caracter case is lower -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapaneseBase::IsLowerCase(TPtrC& aChar) const - { - if ((EFirstHalfLowerChar <= aChar[0] && aChar[0] <= ELastHalfLowerChar) - || (EFirstFullLowerChar <= aChar[0] && aChar[0] <= ELastFullLowerChar)) - { - return ETrue; - } - return EFalse; - } - -TBool TAknFepUiInputStateJapaneseBase::HandleQwertyShortKeyL(TInt /*aKey*/) - { - return EFalse; - } - -TBool TAknFepUiInputStateJapaneseBase::IsNumberKey(const TInt aKey) - { - TBool response = EFalse; - if (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9) - { - response = ETrue; - } - return response; - } - -TBool TAknFepUiInputStateJapaneseBase::IsQwertyKey(const TInt aKey) - { - TBool response = EFalse; - if ( (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - IsNumberKey( aKey ) || - aKey == EStdKeySpace || - aKey == EPtiKeyQwertyPlus || - aKey == EPtiKeyQwertyMinus || - aKey == EPtiKeyQwertyComma || - aKey == EPtiKeyQwertySemicolon || - aKey == EPtiKeyQwertyFullstop || - aKey == EPtiKeyQwertyHash || - aKey == EPtiKeyQwertySlash || - aKey == EPtiKeyQwertyApostrophe) - { - response = ETrue; - } - return response; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateJapanesePredictiveBase.cpp --- a/fep/aknfep/src/AknFepUiInputStateJapanesePredictiveBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,234 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the -* TAknFepUiInputStateJapanesePredictiveBase methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateJapanesePredictiveBase.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepUICtrlContainerJapanese.h" // MAknFepUICtrlContainerJapanese -#include "AknFepUICtrlCandidatePaneInterface.h" - // MAknFepUICtrlCandidatePaneInterface -#include "AknFepGlobalEnums.h" -#include "AknFepPanic.h" -#include // keys -#include -#include // MPtiEngineCompositionDataInterface -#include - - -// CONSTANTS - -/** - * TAknFepUiInputStateJapanesePredictiveBase class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapanesePredictiveBase:: -// TAknFepUiInputStateJapanesePredictiveBase -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateJapanesePredictiveBase:: - TAknFepUiInputStateJapanesePredictiveBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateJapaneseBase(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapanesePredictiveBase::CloseUI -// Closing UI -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateJapanesePredictiveBase::CloseUI() - { - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - // Closeing candidate pop-up list - predictivePane->HideWindow(); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapanesePredictiveBase::HandleNumericLongKeyL -// Handling Numeric long keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapanesePredictiveBase::HandleNumericLongKeyL(TInt /*aKey*/) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - // Not handling long keypress events if exist transitory input string - TPtrC text = data->ConvertingString(); - if (text.Length() > 1) - { - return ETrue; - } - // Long keypress events are handled by HandleNumericLongKeyL of - // CompletionState - iOwner->ChangeState(EMultiCompletion); - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapanesePredictiveBase::HandleNaviKeyL -// Handling Navigate keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapanesePredictiveBase:: - HandleNaviKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - TBool ret = EFalse; - if (predictivePane->CurrentItemIndexOfCandidate() > -1) - { - TAknFepUICtrlScroll direction = EScrollNone; - - // move hightlight of candidate in cadidate pop-up list - switch(aKey) - { - case EKeyLeftArrow: - case EStdKeyLeftArrow: /* 0x0e */ - { - direction = EScrollLeft; - } - break; - case EKeyRightArrow: - case EStdKeyRightArrow: /* 0x0f */ - { - direction = EScrollRight; - } - break; - case EKeyDownArrow: - case EStdKeyDownArrow: /* 0x11 */ - { - direction = EScrollDown; - } - break; - case EKeyUpArrow: - case EStdKeyUpArrow: /* 0x10 */ - { - direction = EScrollUp; - } - break; - default: - break; - } - - predictivePane->MoveItem(direction); - TInt index = predictivePane->CurrentItemIndexOfCandidate(); - ptiEngine->HandleCommandL(EPtiCommandUserActionSetCurrentIndexOfCandidates ,&index); - ret = ETrue; - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapanesePredictiveBase::UpdateInlineEditingCharacterL -// Update inline editing string -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapanesePredictiveBase::UpdateInlineEditingCharacterL() - { - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - // Check ComposirionData - __ASSERT_DEBUG(data->CompletedString().Length() <= 0, - RDebug::Print(_L("In TAknFepUiInputStateJapanesePredictiveBase::UpdateInlineEditingCharacterL,\nINVALID DATA: CompletedString. CompletedString was not OperaOperated!"))); - - TPtrC text = data->ConvertingString(); - - if (text.Length() > 0) - { - // Update of inline editing characters - fepMan->UpdateInlineEditL(text, text.Length()); - ret = ETrue; - } - else - { - // Check ConvertingString length - __ASSERT_DEBUG(text.Length() == 0, - RDebug::Print( - _L("In TAknFepUiInputStateJapanesePredictiveBase::UpdateInlineEditingCharacterL,\nINVALID DATA: ConvertingString. Roll back to initial State!"))); - - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - ptiEngine->ClearCurrentWord(); - fepMan->CancelInlineEdit(); - predictivePane->HideWindow(); - iOwner->ChangeState(EInitial); - - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapanesePredictiveBase::UpdateCandidateListL -// -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateJapanesePredictiveBase::UpdateCandidateListL(TInt aIndex /*= 0*/) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - CDesCArrayFlat* candidateArray = iOwner->CandidateArray(); - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - // Get coordinate of input area - TPoint leftSideOfBaseLine; - TInt height; - TInt ascent; - TInt documentOffset = data->CursorPosition() > 0 ? data->CursorPosition() : 0; - - fepMan->GetScreenCoordinatesL(leftSideOfBaseLine, - height, - ascent, - documentOffset); - // show candidate pop-up list - predictivePane->SetWindowPosition(leftSideOfBaseLine, height, ascent); - predictivePane->ShowCandidateListL(candidateArray, aIndex, iCbaResourceID); - return ETrue; - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateNextWordJapanesePredictive.cpp --- a/fep/aknfep/src/AknFepUiInputStateNextWordJapanesePredictive.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,183 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepUiInputStateNextWordJapanesePredictive methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStateNextWordJapanesePredictive.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepUICtrlContainerJapanese.h" // MAknFepUICtrlContainerJapanese -#include "AknFepUICtrlCandidatePaneInterface.h" - // MAknFepUICtrlCandidatePaneInterface -#include "AknFepGlobalEnums.h" -#include "AknFepPanic.h" - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface -#include - - -// CONSTANTS - -/** - * TAknFepUiInputStateNextWordJapanesePredictive class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateNextWordJapanesePredictive:: -// TAknFepUiInputStateNextWordJapanesePredictive -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateNextWordJapanesePredictive:: - TAknFepUiInputStateNextWordJapanesePredictive( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateJapanesePredictiveBase(aOwner, aUIContainer) - { - iState = ENextWord; - iCbaResourceID = R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_SELECT; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateNextWordJapanesePredictive::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateNextWordJapanesePredictive::InitializeStateL() - { - CDesCArrayFlat* candidateArray = iOwner->CandidateArray(); - iOwner->PtiEngine()->GetNextWordCandidateListL(*candidateArray); - UpdateCandidateListL(); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateNextWordJapanesePredictive::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateNextWordJapanesePredictive::HandleCommandL(TInt aCommandId) - { - if (aCommandId == EAknFepAllCompletion) - { - iOwner->PtiEngine()->ClearCurrentWord(); - iOwner->ChangeState(EInitial); - } - else if (aCommandId == EAknFepSoftkeyCloseWindow) - { - CloseUI(); - iOwner->ChangeState(EInitial); - } - else if(aCommandId == EAknFepSoftkeySelectCandidate) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->StartInlineEditL(); - iOwner->ChangeState(EMultiCompletion); - } - else if(aCommandId == EAknFepResourceChanged) - { - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - TInt index = predictivePane->CurrentItemIndexOfCandidate(); - predictivePane->HideWindow(); - UpdateCandidateListL(index); - } - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateNextWordJapanesePredictive::HandleNumericKeyL -// Handling short keypress events of the numeric and the star. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateNextWordJapanesePredictive::HandleNumericShortKeyL(TInt /*aKey*/) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - - ptiEngine->ClearCurrentWord(); - predictivePane->HideWindow(); - iOwner->ChangeState(EInitial); - // This State doesn't Handle numeric key, always return false. - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateNextWordJapanesePredictive::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateNextWordJapanesePredictive::HandleAuxKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - TBool ret = EFalse; - - switch(aKey) - { - case EKeyOK: - case EStdKeyDevice3: /* 0xA7 */ - case EStdKeyEnter: /* 0x03 */ - case EStdKeyNkpEnter: /* 0x88 */ - { - fepMan->StartInlineEditL(); - iOwner->ChangeState(EMultiCompletion); - } - break; - case EKeyBackspace: - case EStdKeyBackspace: /* 0x01 */ - case EStdKeyEscape: /* 0x04 */ - { - ptiEngine->ClearCurrentWord(); - predictivePane->HideWindow(); - iOwner->ChangeState(EInitial); - ret = ETrue; - } - break; - default: // Panic - { - AknFepPanic(EAknFepPanicNotSupportKey); - } - break; - } - - return ret; - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveCandidate.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveCandidate.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidate methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveCandidate.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface - -#include //CPtiEngine - -TAknFepInputStatePredictiveCandidate::TAknFepInputStatePredictiveCandidate( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBase(aOwner, aUIContainer) - { - iState = EPredictiveCandidate; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - uiContainer->FocusCandidatePane(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - - // for some reason needs to feed back to ptiengine current Chinese char just before get the prediction - TPtrC text = uiContainer->CandidatePane()->CurrentCandidate(); - uiContainer->CandidatePane()->SelectFirst(); - ptiengine->SetPredictiveChineseChar(text); - - uiContainer->CandidatePane()->SetCandidateBuffer(ptiengine->CandidatePage()); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse); -// Do standard candidate pane init... - } - - -TBool TAknFepInputStatePredictiveCandidate::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = ETrue; - if(aLength == ELongKeyPress) - { - return ret; - } - if(iOwner->IsValidChineseInputKey(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - if(!HandleVerticalNavigation(aKey)) - { - if (aKey == EKeyLeftArrow || aKey == EKeyRightArrow || aKey == EKeyOK) - { - iOwner->ChangeState(EPredictiveInput); - ret = EFalse; //passes to predictive input state to handle the key - } - else if(aKey == EKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if (aKey == EPtiKeyStar) - { - ret = TAknFepInputStateCandidateBase::HandleKeyL(aKey, aLength); - } - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveCandidateChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveCandidateChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,146 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of predictive candidate chinese phrase state -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveCandidateChinesePhrase.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface - -#include //CPtiEngine - -TAknFepInputStatePredictiveCandidateChinesePhrase:: -TAknFepInputStatePredictiveCandidateChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBaseChinesePhrase(aOwner, aUIContainer) - { - iState = EPredictiveCandidate; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - uiContainer->FocusCandidatePane(ETrue); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - // for some reason needs to feed back to ptiengine current Chinese phrase just before get the prediction - TPtrC text = candidatePane->CurrentPhraseCandidate(); - candidatePane->SelectFirstPhrase(); - ptiengine->SetPredictiveChineseChar(text); - - TRAPD(ignore,ptiengine->GetChinesePhraseCandidatesL(*(candidatePane->CandidateArray()))); - if (ignore == KErrNone) - { - candidatePane->SplitPhraseCandidatesIntoPages(); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - candidatePane->SetCandidateBuffer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - candidatePane->ShowCandidateOrdinals(EFalse); - UpdateIndicator(); - } - } - -TBool TAknFepInputStatePredictiveCandidateChinesePhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - TBool ret = ETrue; - - if(iOwner->IsValidChineseInputKey(aKey) && aLength != ELongKeyPress) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // needs to clear current word for current engine, otherwise buffer is not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - if(!HandleVerticalNavigation(aKey)) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - // Do navigation... - if (aKey == EKeyLeftArrow && aLength != ELongKeyPress) - { -// if (candidatePane->SelectedIndex() == 0 && -// candidatePane->IsFirstPage() ) -// { -// return ETrue; -// } -// else - { - iOwner->ChangeState(EPredictiveInput); - ret = EFalse; //passes to predictive input state to handle the key - } - } - else if (aKey == EKeyRightArrow && aLength != ELongKeyPress) - { - if (candidatePane->IsLastPage() && - (candidatePane->SelectedIndex() == candidatePane->VisibleCandidateCount() - 1)) - { - return ETrue; - } - else - { - iOwner->ChangeState(EPredictiveInput); - return EFalse; - } - } - else if ( ( aKey == EKeyOK || aKey == EKeyCBA1 ) && aLength != ELongKeyPress) - { - iOwner->ChangeState(EPredictiveInput); - ret = EFalse; //passes to predictive input state to handle the key - } - else if(aKey == EKeyBackspace && aLength != ELongKeyPress) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if (aKey == EPtiKeyStar && aLength != ELongKeyPress) - { - ret = TAknFepInputStateCandidateBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveCandidateHalfQwertyChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveCandidateHalfQwertyChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,297 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Pinyin phrase predictive candidate MiniQwerty state -* -*/ - - - - - - - - - - - - -// System includes -#include - -// User includes -#include "AknFepUiInputStatePredictiveCandidateHalfQwertyChinesePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" -#include "AknFepUICtrlCandidatePane.h" -#include "aknfepuictrleditpane.h" -#include "AknFepUICtrlPinyinPopup.h" - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase:: -// TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepInputStatePredictiveCandidateHalfQwertyChinesePhrase:: -TAknFepInputStatePredictiveCandidateHalfQwertyChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStatePredictiveInputQwertyChinesePhrase(aOwner, aUIContainer) - { - iState = EPredictiveCandidate; - UIContainer()->CandidatePane()->ShowCandidateOrdinals(EFalse); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStatePredictiveCandidateHalfQwertyChinesePhrase::HandleKeyL( - TInt aKey, TKeyPressLength aLength ) - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - TBool ret = ETrue; - - if ( aKey == EPtiKeyQwertyComma || aKey == EStdKeyForwardSlash|| aKey - == EStdKeySquareBracketRight ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - ret = ETrue; - } - else if ( aKey == EStdKeyFullStop ) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( aKey == EStdKeyLeftFunc ) - { - iOwner->FepMan()->TryCloseUiL(); - iOwner->FepMan()->LaunchSelectModeMenuL(); - } - else if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyShiftMode ) - || iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) - || iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed ) ) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || CAknFepFnKeyManager::EFnKeyLock - == iOwner->FepMan()->FnKeyState() || CAknFepFnKeyManager::EFnKeyDown - == iOwner->FepMan()->FnKeyState() ) // for fn + a character - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( aKey ==EKeyLeftCtrl || aKey == EKeyRightCtrl ) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( aKey == EStdKeyBackspace ) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if ( aKey ==EKeyRightFunc )//fn key - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( aKey ==EStdKeySpace ) - { - if ( ECangJie ==iOwner->FepMan()->InputMode() ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if ( text.Length() ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar( text ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - return ETrue; - } - else if ( EZhuyin ==iOwner->FepMan()->InputMode()&& - EPtiKeyboardHalfQwerty == iOwner->FepMan()->KeyboardLayout() ) - { - popup->SetPreStateIsPredictive( ETrue ); - iOwner->ChangeState( EEntry ); - ret = EFalse; - } - else - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - } - else if ( aKey == EStdKeyDevice0 || aKey == EStdKeyDevice3 || aKey - == EStdKeyEnter ) // Add for SK1, selection,enter - { - TBool state = ETrue; - if ( UIContainer()->EditPaneWindow()->IsChangeState() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - UIContainer()->EditPaneWindow()->SetChangeState( EFalse ); - } - if ( state ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if ( text.Length() ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar( text ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - } - } - else if ( aKey == EStdKeyRightArrow ) - { - iOwner->ChangeState( EPredictiveInput ); - UIContainer()->CandidatePane()->SelectNext(); - } - else if ( aKey == EStdKeyLeftArrow ) - { - iOwner->ChangeState( EPredictiveInput ); - UIContainer()->CandidatePane()->SelectLastPhrase(); - } - else if ( iOwner->IsValidChineseInputKeyQwerty( aKey ) ) - { - if ( aLength == ELongKeyPress ) - { - TBool state = ETrue; - if ( popup->IsChangeStatet() ) - { - state = EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - if ( state ) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - } - - if ( EPinyin ==iOwner->FepMan()->InputMode() ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - popup->SetPreStateIsPredictive( ETrue ); - iOwner->ChangeState( EEntry ); - ret = EFalse; //passes to entry state to handle the key - } - else if ( EZhuyin ==iOwner->FepMan()->InputMode() || - ECangJie ==iOwner->FepMan()->InputMode() || - EStroke ==iOwner->FepMan()->InputMode() ) - { - if ( EZhuyin ==iOwner->FepMan()->InputMode() && - ( aKey == EPtiKeyQwertyQ || - aKey == EPtiKeyQwertyA || - aKey == EPtiKeyQwertyO || - aKey == EPtiKeyQwertyL || - aKey == EPtiKeyQwertyZ ) ) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - popup->SetPreStateIsPredictive( ETrue ); - iOwner->ChangeState( EEntry ); - ret = EFalse; //passes to entry state to handle the key - } - } - else if ( aKey == EStdKeyDevice2 )//sk2 - { - iOwner->FepMan()->TryCloseUiL(); - } - else if ( aKey == EPtiKeyQwertyQ || - aKey == EPtiKeyQwertyW || - aKey == EPtiKeyQwertyO || - aKey == EPtiKeyQwertyP || - aKey == EPtiKeyQwertyA || - aKey == EPtiKeyQwertyS || - aKey == EPtiKeyQwertyL || - aKey == EPtiKeyQwertyZ || - aKey == EPtiKeyQwertyX || - aKey == EPtiKeyQwertyC || - aKey == EPtiKeyQwertyV || - aKey == EPtiKeyQwertyB || - aKey == EPtiKeyQwertyN || - aKey == EPtiKeyQwertyM ) - { - if ( EStroke ==iOwner->FepMan()->InputMode() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - } - else if ( (aKey == EPtiKeyQwerty7 || - aKey == EPtiKeyQwerty8 || - aKey == EPtiKeyQwerty9) && - iOwner->FepMan()->InputMode() == EStroke ) - { - if ( aLength == EShortKeyPress ) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - } - else - { - ret = TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL( - aKey, aLength ); - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveCandidateMiniQwertyChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveCandidateMiniQwertyChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,284 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Pinyin phrase predictive candidate MiniQwerty state -* -*/ - - - - - - - - - - - - -// System includes -#include - -// User includes -#include "AknFepUiInputStatePredictiveCandidateMiniQwertyChinesePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" -#include "AknFepUICtrlCandidatePane.h" -#include "aknfepuictrleditpane.h" - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase:: -// TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase:: -TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStatePredictiveInputQwertyChinesePhrase(aOwner, aUIContainer) - { - iState = EPredictiveCandidate; - UIContainer()->CandidatePane()->ShowCandidateOrdinals(EFalse); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase::HandleKeyL( - TInt aKey, TKeyPressLength aLength) - { - TBool ret = ETrue; - - if(iOwner->IsValidChineseSymbol(aKey)) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - ret = ETrue; - } - else if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)|| - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || - CAknFepFnKeyManager::EFnKeyLock == iOwner->FepMan()->FnKeyState() || - CAknFepFnKeyManager::EFnKeyDown == iOwner->FepMan()->FnKeyState()) // for fn + a character - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( aKey ==EKeyLeftCtrl || aKey == EKeyRightCtrl) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if (aKey == EStdKeyEnter) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if (aKey == EStdKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if (aKey ==EKeyRightFunc)//fn key - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( aKey ==EStdKeySpace) - { - if (ECangJie ==iOwner->FepMan()->InputMode()) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - return ETrue; - } - else - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - } - else if ( aKey == EStdKeyDevice0 || aKey == EStdKeyDevice3 ) // Add for SK1 and selection - { - TBool state = ETrue; - if ( UIContainer()->EditPaneWindow()->IsChangeState() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - UIContainer()->EditPaneWindow()->SetChangeState( EFalse ); - } - if ( state ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - } - } - } - } - else if(aKey == EStdKeyRightArrow ) - { - iOwner->ChangeState(EPredictiveInput); - UIContainer()->CandidatePane()->SelectNext(); - } - else if (aKey == EStdKeyLeftArrow) - { - iOwner->ChangeState(EPredictiveInput); - UIContainer()->CandidatePane()->SelectLastPhrase(); - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - if ( aLength == ELongKeyPress ) - { - return ETrue; - } - - if(EPinyin ==iOwner->FepMan()->InputMode()) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - else if(EZhuyin ==iOwner->FepMan()->InputMode() || - ECangJie ==iOwner->FepMan()->InputMode() || - EStroke ==iOwner->FepMan()->InputMode() ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - - } - else if( aKey == EPtiKeyQwertyQ || - aKey == EPtiKeyQwertyW || - aKey == EPtiKeyQwertyO || - aKey == EPtiKeyQwertyP || - aKey == EPtiKeyQwertyA || - aKey == EPtiKeyQwertyS || - aKey == EPtiKeyQwertyL || - aKey == EPtiKeyQwertyZ || - aKey == EPtiKeyQwertyX || - aKey == EPtiKeyQwertyC || - aKey == EPtiKeyQwertyV || - aKey == EPtiKeyQwertyB || - aKey == EPtiKeyQwertyN || - aKey == EPtiKeyQwertyM ) - { - if(EStroke ==iOwner->FepMan()->InputMode()) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - //iOwner->FepMan()->TryCloseUiL(); - } - } - else - { - ret = TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase::HandleCommandL( - TInt aCommandId ) - { - TBool state = ETrue; - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - // case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( UIContainer()->EditPaneWindow()->IsChangeState( ) ) - { - state = EFalse; - } - else - { - UIContainer()->EditPaneWindow()->SetChangeState( EFalse ); - } - if ( state ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate( ); - if ( text.Length( ) ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan( ); - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL( ); - iOwner->PtiEngine()->SetPredictiveChineseChar( text ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL( ); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveCandidatePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveCandidatePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidatePhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveCandidatePhrase.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface - -#include //CPtiEngine - -TAknFepInputStatePredictiveCandidatePhrase::TAknFepInputStatePredictiveCandidatePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBasePhrase(aOwner, aUIContainer) - { - iState = EPredictiveCandidate; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - uiContainer->FocusCandidatePane(ETrue); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - // for some reason needs to feed back to ptiengine current Chinese phrase just before get the prediction - TPtrC text = candidatePane->CurrentPhraseCandidate(); - candidatePane->SelectFirstPhrase(); - ptiengine->SetPredictiveChineseChar(text); - - TRAPD(ignore,ptiengine->GetChinesePhraseCandidatesL(*(candidatePane->CandidateArray()))); - if (ignore == KErrNone) - { - candidatePane->SplitPhraseCandidatesIntoPages(); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - candidatePane->SetCandidateBuffer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - candidatePane->ShowCandidateOrdinals(EFalse); - } - } - -TBool TAknFepInputStatePredictiveCandidatePhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = ETrue; - - if(aLength == ELongKeyPress) - { - return ret; - } - if(iOwner->IsValidChineseInputKey(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // needs to clear current word for current engine, otherwise buffer is not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - if(!HandleVerticalNavigation(aKey)) - { - if (aKey == EKeyLeftArrow || aKey == EKeyRightArrow || aKey == EKeyOK) - { - iOwner->ChangeState(EPredictiveInput); - ret = EFalse; //passes to predictive input state to handle the key - } - else if(aKey == EKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if (aKey == EPtiKeyStar) - { - ret = TAknFepInputStateCandidateBasePhrase::HandleKeyL(aKey, aLength); - } - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveCandidatePinyin.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveCandidatePinyin.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidatePinyin methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveCandidatePinyin.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface - -TAknFepInputStatePredictiveCandidatePinyin::TAknFepInputStatePredictiveCandidatePinyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStatePredictiveCandidate(aOwner, aUIContainer) - { - } - -TBool TAknFepInputStatePredictiveCandidatePinyin::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - if ((aKey == EPtiKey0) || (aKey == EPtiKey1)) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - else - { - return TAknFepInputStatePredictiveCandidate::HandleKeyL(aKey, aLength); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveCandidatePinyinPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveCandidatePinyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidatePinyinPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveCandidatePinyinPhrase.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" - -#include //CPtiEngine - -TAknFepInputStatePredictiveCandidatePinyinPhrase::TAknFepInputStatePredictiveCandidatePinyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStatePredictiveCandidateChinesePhrase(aOwner, aUIContainer) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - uiContainer->FocusCandidatePane(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(multiplePages); - UpdateIndicator(); - } - -TBool TAknFepInputStatePredictiveCandidatePinyinPhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - if(((aKey == EPtiKey0) || (aKey == EPtiKey1)) && aLength == EShortKeyPress ) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - else - { - return TAknFepInputStatePredictiveCandidateChinesePhrase::HandleKeyL(aKey, aLength); - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveCandidateQwertyZhuyin.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveCandidateQwertyZhuyin.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidateQwertyZhuyin methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveCandidateQwertyZhuyin.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStatePredictiveCandidateQwertyZhuyin::TAknFepInputStatePredictiveCandidateQwertyZhuyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyChinese(aOwner, aUIContainer) - { - iState = EPredictiveCandidate; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - uiContainer->FocusCandidatePane(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - uiContainer->CandidatePane()->SelectFirst(); - uiContainer->CandidatePane()->SetCandidateBuffer(ptiengine->CandidatePage()); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse); - UpdateIndicator(); - } - -TBool TAknFepInputStatePredictiveCandidateQwertyZhuyin::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - TBool ret = ETrue; - - if(aKey == EStdKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if(iOwner->IsQwertyZhuyinToneMarkKey(aKey)) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - else if(!HandleVerticalNavigation(aKey)) - { - if (aKey == EStdKeyLeftArrow || aKey == EStdKeyRightArrow) - { - iOwner->ChangeState(EPredictiveInput); - ret = EFalse; //passes to predictive input state to handle the key - } - else - { - ret = TAknFepInputStateCandidateQwertyChinese::HandleKeyL(aKey, aLength); - } - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveCandidateQwertyZhuyinPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveCandidateQwertyZhuyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidateQwertyZhuyinPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveCandidateQwertyZhuyinPhrase.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStatePredictiveCandidateQwertyZhuyinPhrase:: -TAknFepInputStatePredictiveCandidateQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyChinesePhrase(aOwner, aUIContainer) - { - iState = EPredictiveCandidate; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - uiContainer->FocusCandidatePane(ETrue); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - // for some reason needs to feed back to ptiengine current Chinese phrase just before get the prediction - candidatePane->SelectFirstPhrase(); - - TRAPD(ignore,ptiengine->GetChinesePhraseCandidatesL(*(candidatePane->CandidateArray()))); - if (ignore == KErrNone) - { - candidatePane->SplitPhraseCandidatesIntoPages(); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - candidatePane->SetCandidateBuffer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - candidatePane->ShowCandidateOrdinals(EFalse); - UpdateIndicator(); - } - } - -TBool TAknFepInputStatePredictiveCandidateQwertyZhuyinPhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - TBool ret = ETrue; - - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - if(aKey == EStdKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if(iOwner->IsQwertyZhuyinToneMarkKey(aKey)) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - else if (aKey == EStdKeyEnter || aKey == EStdKeySpace) - { - iOwner->FepMan()->TryCloseUiL(); - iOwner->ChangeState(EQwerty); - return EFalse; - } - else if(!HandleVerticalNavigation(aKey)) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if (aKey == EStdKeyLeftArrow ) - { - if (candidatePane->SelectedIndex() == 0 && - candidatePane->IsFirstPage()) - { - return ETrue; - } - else - { - iOwner->ChangeState(EPredictiveInput); - return EFalse; - } - } - else if (aKey == EStdKeyRightArrow) - { - if (candidatePane->IsLastPage() && - (candidatePane->SelectedIndex() == candidatePane->VisibleCandidateCount() - 1)) - { - return ETrue; - } - else - { - iOwner->ChangeState(EPredictiveInput); - return EFalse; - } - } - else - { - ret = TAknFepInputStateCandidateQwertyChinesePhrase::HandleKeyL(aKey, aLength); - } - } - - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveCandidateStroke.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveCandidateStroke.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveCandidateStroke methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveCandidateStroke.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" //MAknFepUICtrlCandidatePane -#include //CPtiEngine - -TAknFepInputStatePredictiveCandidateStroke::TAknFepInputStatePredictiveCandidateStroke( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateChinese(aOwner, aUIContainer) - { - iState = EPredictiveCandidate; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - uiContainer->FocusCandidatePane(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - - // for some reason needs to feed back to ptiengine current Chinese char just before get the prediction - TPtrC text = uiContainer->CandidatePane()->CurrentCandidate(); - uiContainer->CandidatePane()->SelectFirst(); - ptiengine->SetPredictiveChineseChar(text); - - uiContainer->CandidatePane()->SetCandidateBuffer(ptiengine->CandidatePage()); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse); - } - -TBool TAknFepInputStatePredictiveCandidateStroke::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - if (aKey == EPtiKey0 || aKey == EPtiKey7 || - aKey == EPtiKey8 || aKey == EPtiKey9) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - - TBool ret = ETrue; - if(aLength == ELongKeyPress) - { - return ret; - } - if(iOwner->IsValidChineseInputKey(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - - if(!HandleVerticalNavigation(aKey)) - { - if (aKey == EKeyLeftArrow || aKey == EKeyRightArrow || aKey == EKeyOK) - { - iOwner->ChangeState(EPredictiveInput); - ret = EFalse; //passes to predictive input state to handle the key - } - else if(aKey == EKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if (aKey == EPtiKeyStar) - { - ret = TAknFepInputStateCandidateChinese::HandleKeyL(aKey, aLength); - } - } - return ret; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveCandidateStrokePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveCandidateStrokePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Stroke phrase predictive candidate state -* -*/ - - - - - - - - - - - - -// System includes -#include - -// User includes -#include "AknFepUiInputStatePredictiveCandidateStrokePhrase.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" - -// Constant definition -const TInt KMinCnadidateCount = 1; - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveCandidateStrokePhrase:: -// TAknFepInputStatePredictiveCandidateStrokePhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepInputStatePredictiveCandidateStrokePhrase::TAknFepInputStatePredictiveCandidateStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStatePredictiveCandidateChinesePhrase(aOwner, aUIContainer) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - uiContainer->FocusCandidatePane(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength > KMinCnadidateCount; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - UpdateIndicator(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveCandidateStrokePhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStatePredictiveCandidateStrokePhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - if(aKey == EPtiKey0 || aKey == EPtiKey7 || - aKey == EPtiKey8 || aKey == EPtiKey9) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - - return TAknFepInputStatePredictiveCandidateChinesePhrase::HandleKeyL(aKey, aLength); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInput.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInput.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInput methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiInputStatePredictiveInput.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface - -#include //CPtiEngine - -TAknFepInputStatePredictiveInput::TAknFepInputStatePredictiveInput( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - uiContainer->CandidatePane()->SelectFirst(); - - TBool multiplePages = iOwner->PtiEngine()->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - } - -TBool TAknFepInputStatePredictiveInput::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool response = ETrue; - - switch (aKey) - { - case EKeyOK: //fall through - case EPtiKey0: - case EPtiKey1: - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - TAknFepInputStateCandidateBase::HandleKeyL(aKey, aLength); - break; - case EKeyBackspace: //fall through - iOwner->FepMan()->TryCloseUiL(); - break; - default: - response = TAknFepInputStateCandidateBase::HandleKeyL(aKey, aLength); - break; - } - return response; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputChinese.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputChinese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of ITUT preditive input state -* -*/ - - - - - - - - - - - - -// System includes -#include //CPtiEngine - -// User includes -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiInputStatePredictiveInputChinese.h" - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveInputChinese:: -// TAknFepInputStatePredictiveInputChinese -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepInputStatePredictiveInputChinese::TAknFepInputStatePredictiveInputChinese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateChinese(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->CandidatePane()->SelectFirst(); - - TBool multiplePages = iOwner->PtiEngine()->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength > 1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveInputChinese:: -// HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStatePredictiveInputChinese::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool response = ETrue; - - switch (aKey) - { - case EKeyOK: //fall through - case EPtiKey0: - case EPtiKey1: - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - TAknFepInputStateCandidateChinese::HandleKeyL(aKey, aLength); - break; - case EKeyBackspace: //fall through - iOwner->FepMan()->TryCloseUiL(); - break; - default: - response = TAknFepInputStateCandidateChinese::HandleKeyL(aKey, aLength); - break; - } - - return response; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of predictive input phrase state -* -*/ - - - - - - - - - - - - -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiInputStatePredictiveInputChinesePhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface - -#include //CPtiEngine - -TAknFepInputStatePredictiveInputChinesePhrase::TAknFepInputStatePredictiveInputChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBaseChinesePhrase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - candidatePane->SelectFirstPhrase(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - candidatePane->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - -TBool TAknFepInputStatePredictiveInputChinesePhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool response = ETrue; - - switch (aKey) - { - case EKeyOK: //fall through - case EPtiKey0: - case EPtiKey1: - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - TAknFepInputStateCandidateBaseChinesePhrase::HandleKeyL(aKey, aLength); - break; - case EKeyBackspace: //fall through - iOwner->FepMan()->TryCloseUiL(); - break; - default: - response = TAknFepInputStateCandidateBaseChinesePhrase::HandleKeyL(aKey, aLength); - break; - } - return response; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputJapanese.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputJapanese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,497 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the -* TAknFepUiInputStatePredictiveInputJapanese methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include "AknFepUiInputStatePredictiveInputJapanese.h" -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" // MAknFepManagerUIInterface -#include "AknFepUICtrlContainerJapanese.h" // MAknFepUICtrlContainerJapanese -#include "AknFepUICtrlCandidatePaneInterface.h" - // MAknFepUICtrlCandidatePaneInterface -#include "AknFepGlobalEnums.h" -#include "AknFepPanic.h" - -#include // keys -#include -#include // MPtiEngineCompositionDataInterface -#include -#include - -// CONSTANTS -const TText KAknFEPLineFeedSymbol = 0x21B2; -const TText KAknFEPMirroredLineFeedSymbol = 0x21B3; - -/** - * TAknFepUiInputStatePredictiveInputJapanese class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// TAknFepUiInputStatePredictiveInputJapanese:: -// TAknFepUiInputStatePredictiveInputJapanese -// C++ default Constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStatePredictiveInputJapanese:: - TAknFepUiInputStatePredictiveInputJapanese( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerJapanese* aUIContainer) - :TAknFepUiInputStateJapanesePredictiveBase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - iCbaResourceID = R_AKNFEP_SOFTKEYS_CONVERT_OTHER_SELECT; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStatePredictiveInputJapanese::KeyTimerExpired -// Call this function when Multitap timer of PtiEngine was time-out -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStatePredictiveInputJapanese::KeyTimerExpired() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - - TPtrC text = data->ConvertingString(); - TInt cursorpos = data->CursorPosition(); - if (text.Length() > 0) - { - if (text[0] == KAknFEPLineFeedSymbol - || text[0] == KAknFEPMirroredLineFeedSymbol) - { - iOwner->ChangeState(EInitial); - } - else - { - // Set on cursor visibility in inline editing - TRAPD(err, fepMan->SetInlineEditingCursorVisibilityL(ETrue)); - if (err == KErrNone) - { - TRAP(err, fepMan->UpdateInlineEditL(text, cursorpos)); - } - if (err != KErrNone) - { - TRAP_IGNORE(iOwner->FepMan()->SimulateKeyEventL(EKeyEscape, ETrue)); - } - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStatePredictiveInputJapanese::InitializeStateL -// Initialize State -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStatePredictiveInputJapanese::InitializeStateL() - { - iOwner->SetInlineEditUnderlineVisibility(ETrue); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStatePredictiveInputJapanese::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStatePredictiveInputJapanese:: - HandleCommandL(TInt aCommandId) - { - switch (aCommandId) - { - case EAknFepSoftkeySelectCandidate: - { - iOwner->FepMan()->UpdateCbaL(NULL); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC textConv = data->ConvertingString(); - TPtrC textComp = data->CompletedString(); - if (textConv.Length() > 0 || textComp.Length() > 0) - { - iOwner->ChangeState(EMultiCompletion); - } - else - { - iOwner->ChangeState(EInitial); - } - } - break; - case EAknFepSoftkeyConvert: - { - // change state to conversion - ChangeStateToConversionL(); - } - break; - case EAknFepSoftkeyOtherModes: - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - // Closeing candidate pop-up list - predictivePane->HideWindow(); - // Update of CBA - iOwner->FepMan()->UpdateCbaL(NULL); - // Delete Cursor - fepMan->SetInlineEditingCursorVisibilityL(EFalse); - // Change the status to Retroactive input - iOwner->ChangeState(ECandidateRetroActive); - } - break; - case EAknFepSoftkeyPredictiveOn: - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - // normal operation - if (UpdateInlineEditingCharacterL()) - { - CDesCArrayFlat* candidateArray = iOwner->CandidateArray(); - ptiEngine->GetCandidateListL(*candidateArray); - UpdateCandidateListL(); - } - } - break; - case EAknFepResourceChanged: - { - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - TInt index = predictivePane->CurrentItemIndexOfCandidate(); - predictivePane->HideWindow(); - UpdateCandidateListL(index); - } - break; - default: - break; - } - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStatePredictiveInputJapanese::HandleNumericShortKeyL -// Handling numeric keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStatePredictiveInputJapanese:: - HandleNumericShortKeyL(TInt aKey) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBool cursornisibility = EFalse; - TBool inputcontinue = ETrue; - - if (aKey == EStdKeySpace) - { - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->ConvertingString(); - if (text.Length() > 0) - { - HandleCommandL(EAknFepSoftkeyConvert); - inputcontinue = EFalse; - } - } - - if (inputcontinue) - { - if (aKey == EPtiKeyStar) - { - cursornisibility = ETrue; - } - // Setting Cursor visibility - fepMan->SetInlineEditingCursorVisibilityL(cursornisibility); - - // To send a key to PtiEngine - // Notice: AppendKeyPress() must be called after SetInlineEditingCursorVisibilityL(). - ptiEngine->AppendKeyPress((TPtiKey)aKey); - - // this process run if completion character (line feed or space) exist. - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - if (text.Length() > 0) - { - CloseUI(); - return ETrue; - } - // normal operation - if (UpdateInlineEditingCharacterL()) - { - // for Qwerty input, if including latin characters, - // close candidate list. - if (!iOwner->IsQwerty() - || !IsFullWidthAlphaChar(data->ConvertingString())) - { - CDesCArrayFlat* candidateArray = iOwner->CandidateArray(); - ptiEngine->GetCandidateListL(*candidateArray); - UpdateCandidateListL(); - } - } - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStatePredictiveInputJapanese::HandleAuxKeyL -// Handling auxiliary keypress events including OK and Backspace -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStatePredictiveInputJapanese::HandleAuxKeyL(TInt aKey, - TKeyPressLength /*aLength*/) - { - TBool ret = EFalse; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - - switch(aKey) - { - case EKeyOK: - case EStdKeyDevice3: /* 0xA7 */ - case EStdKeyEnter: /* 0x03 */ - case EStdKeyNkpEnter: /* 0x88 */ - { - iOwner->FepMan()->UpdateCbaL(NULL); - iOwner->ChangeState(EMultiCompletion); - ret = EFalse; - } - break; - case EKeyBackspace: - case EStdKeyBackspace: /* 0x01 */ - case EStdKeyEscape: /* 0x04 */ - { - fepMan->SetInlineEditingCursorVisibilityL(ETrue); - ptiEngine->DeleteKeyPress(); - - if (UpdateInlineEditingCharacterL()) - { - // get composition data. - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - // for Qwerty input, if including latin characters, - // close candidate list. - if (!iOwner->IsQwerty() - || !IsFullWidthAlphaChar(data->ConvertingString())) - { - CDesCArrayFlat* candidateArray = iOwner->CandidateArray(); - ptiEngine->GetCandidateListL(*candidateArray); - UpdateCandidateListL(); - } - else - { - // Update of CBA - TInt newResource = R_AVKON_SOFTKEYS_EMPTY; - fepMan->UpdateCbaL(newResource); - } - } - ret = ETrue; - } - break; - default: // Panic - { - AknFepPanic(EAknFepPanicNotSupportKey); - } - break; - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateJapanesePredictiveBase::HandleNaviKeyL -// Handling Navigate keypress event -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStatePredictiveInputJapanese:: - HandleNaviKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = EFalse; - switch(aKey) - { - case EKeyDownArrow: - case EStdKeyDownArrow: /* 0x11 */ - case EKeyUpArrow: - case EStdKeyUpArrow: /* 0x10 */ - case EKeyLeftArrow: - case EStdKeyLeftArrow: /* 0x0e */ - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - if (predictivePane->CurrentItemIndexOfCandidate() == 0 - && ptiEngine->NumberOfCandidates() == 1) - { - // change state to entry - ChangeStateToEntryL(); - // go through the key event. - return EFalse; - } - } - break; - default: - break; - } - if (!ret) - { - ret = TAknFepUiInputStateJapanesePredictiveBase::HandleNaviKeyL(aKey, aLength); - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStatePredictiveInputJapanese::IsFullWidthAlphaChar -// Check full-width alphabet character -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStatePredictiveInputJapanese::IsFullWidthAlphaChar(TPtrC aPtr) - { - const TUint KFullAlphaLargeA = 0xFF21; - const TUint KFullAlphaLargeZ = 0xFF3A; - const TUint KFullAlphaSmallA = 0xFF41; - const TUint KFullAlphaSmallZ = 0xFF5A; - - TBool isAlpha = EFalse; - for (TInt i=aPtr.Length()-1; i >= 0 && !isAlpha; i--) - { - TUint ch = aPtr[i]; - isAlpha = (KFullAlphaLargeA <= ch && ch <= KFullAlphaLargeZ) - || (KFullAlphaSmallA <= ch && ch <= KFullAlphaSmallZ); - } - return isAlpha; - } - -/** - * TAknFepUiInputStatePredictiveInputJapanese::ChangeStateToConversionL(); - * Change state to conversion - */ -void TAknFepUiInputStatePredictiveInputJapanese::ChangeStateToConversionL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - // Closeing candidate pop-up list - predictivePane->HideWindow(); - // Update of CBA - iOwner->FepMan()->UpdateCbaL(NULL); - // Delete Cursor - fepMan->SetInlineEditingCursorVisibilityL(EFalse); - - // Update of inline editing characters - ptiEngine->HandleCommandL(EPtiCommandUserActionConvert); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - TPtrC text2 = data->ConvertingString(); - if (text.Length() >0) - { - iOwner->ChangeState(EMultiCompletion); - fepMan->CommitInlineEditL(text, text.Length()); - if (fepMan->EditorHasFreeSpace()) - { - iOwner->ChangeState(ENextWord); - } - else - { - CloseUI(); - } - } - else if (text2.Length() > 0) - { - // Change to ConversionState - iOwner->ChangeState(EConversion); - fepMan->UpdateInlineEditL(text2, text2.Length()); - } - } - -/** - * TAknFepUiInputStatePredictiveInputJapanese::ChangeStateToEntryL(); - * Change state to Entry - */ -void TAknFepUiInputStatePredictiveInputJapanese::ChangeStateToEntryL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - // Closeing candidate pop-up list - predictivePane->HideWindow(); - // Update of CBA - iOwner->FepMan()->UpdateCbaL(NULL); - // Delete Cursor - fepMan->SetInlineEditingCursorVisibilityL(EFalse); - - // Change to EntryState - iOwner->ChangeState(EEntry); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStatePredictiveInputJapanese::CloseUI -// Closing UI -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStatePredictiveInputJapanese::CloseUI() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - MAknFepUICtrlContainerJapanese* uicontainer = UIContainer(); - MAknFepUICtrlCandidatePaneInterface* predictivePane = - uicontainer->CandidatePane(MAknFepUICtrlContainerJapanese:: - EJapanesePredictiveCandidatePane); - - const MPtiEngineCompositionDataInterface* currentdata = ptiEngine->CompositionData(); - if (currentdata->ConvertingString().Length() >0) - { - TInt index = predictivePane->CurrentItemIndexOfCandidate(); - if (index > -1) - { - TRAP_IGNORE( ptiEngine->HandleCommandL(EPtiCommandUserActionCompleteCandidate, &index)); - } - else - { - TRAP_IGNORE( ptiEngine->HandleCommandL(EPtiCommandUserActionComplete)); - } - } - const MPtiEngineCompositionDataInterface* commitdata = ptiEngine->CompositionData(); - TPtrC text = commitdata->CompletedString(); - if (text.Length() >0) - { - iOwner->ChangeState(EMultiCompletion); - TRAP_IGNORE( fepMan->CommitInlineEditL(text, text.Length())); - } - - ptiEngine->ClearCurrentWord(); - // Closing candidate pop-up list - predictivePane->HideWindow(); - iOwner->ChangeState(EInitial); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiInputStatePredictiveInputPhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface - -#include //CPtiEngine - -TAknFepInputStatePredictiveInputPhrase::TAknFepInputStatePredictiveInputPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateBasePhrase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - candidatePane->SelectFirstPhrase(); - - TBool multiplePages = iOwner->PtiEngine()->MoreCandidatePages(); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - candidatePane->ShowCandidateOrdinals(ETrue); - } - -TBool TAknFepInputStatePredictiveInputPhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool response = ETrue; - - switch (aKey) - { - case EKeyOK: //fall through - case EPtiKey0: - case EPtiKey1: - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - TAknFepInputStateCandidateBasePhrase::HandleKeyL(aKey, aLength); - break; - case EKeyBackspace: //fall through - iOwner->FepMan()->TryCloseUiL(); - break; - default: - response = TAknFepInputStateCandidateBasePhrase::HandleKeyL(aKey, aLength); - break; - } - return response; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputQwerty.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputQwerty.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputQwerty methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveInputQwerty.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStatePredictiveInputQwerty::TAknFepInputStatePredictiveInputQwerty( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyChineseBase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - uiContainer->FocusCandidatePane(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - - // for some reason needs to feed back to ptiengine current Chinese char just before get the prediction - TPtrC text = uiContainer->CandidatePane()->CurrentCandidate(); - uiContainer->CandidatePane()->SelectFirst(); - ptiengine->SetPredictiveChineseChar(text); - uiContainer->CandidatePane()->SetCandidateBuffer(ptiengine->CandidatePage()); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - -TBool TAknFepInputStatePredictiveInputQwerty::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = ETrue; - - if(aKey == EStdKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - else if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - else - { - ret = TAknFepInputStateCandidateQwertyChineseBase::HandleKeyL(aKey, aLength); - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveInputQwerty::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStatePredictiveInputQwerty::HandleCommandL( TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyChinesePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyChinesePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,127 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of predictive input qwerty chinese phrase state -* -*/ - - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveInputQwertyChinesePhrase.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStatePredictiveInputQwertyChinesePhrase:: -TAknFepInputStatePredictiveInputQwertyChinesePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyBaseChinesePhrase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - uiContainer->FocusCandidatePane(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - // for some reason needs to feed back to ptiengine current Chinese phrase just before get the prediction - candidatePane->SelectFirstPhrase(); - if(iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) - {// SetPredictiveChineseChar() should be called just after call fepMan->CommitInlineEditL() usually at some where - TPtrC text = candidatePane->CurrentPhraseCandidate(); - ptiengine->SetPredictiveChineseChar(text); - } - - - TRAPD(ignore,ptiengine->GetChinesePhraseCandidatesL(*(candidatePane->CandidateArray()))); - if (ignore == KErrNone) - { - candidatePane->SplitPhraseCandidatesIntoPages(); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - candidatePane->SetCandidateBuffer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - } - -TBool TAknFepInputStatePredictiveInputQwertyChinesePhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - TBool ret = ETrue; - - if(aKey == EStdKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress) // launch sct table - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - else - { - ret = TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputQwertyPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveInputQwertyPhrase.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStatePredictiveInputQwertyPhrase::TAknFepInputStatePredictiveInputQwertyPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyBasePhrase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - uiContainer->FocusCandidatePane(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - // for some reason needs to feed back to ptiengine current Chinese phrase just before get the prediction - TPtrC text = candidatePane->CurrentPhraseCandidate(); - candidatePane->SelectFirstPhrase(); - ptiengine->SetPredictiveChineseChar(text); - - TRAPD(ignore,ptiengine->GetChinesePhraseCandidatesL(*(candidatePane->CandidateArray()))); - if (ignore == KErrNone) - { - candidatePane->SplitPhraseCandidatesIntoPages(); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - candidatePane->SetCandidateBuffer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - } - } - -TBool TAknFepInputStatePredictiveInputQwertyPhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = ETrue; - - if(aKey == EStdKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress) // launch sct table - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - else - { - ret = TAknFepInputStateCandidateQwertyBasePhrase::HandleKeyL(aKey, aLength); - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyPinyin.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyPinyin.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,154 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputQwerty methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveInputQwertyPinyin.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStatePredictiveInputQwertyPinyin::TAknFepInputStatePredictiveInputQwertyPinyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyChineseBase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - uiContainer->FocusCandidatePane(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - - // for some reason needs to feed back to ptiengine current Chinese char just before get the prediction - TPtrC text = uiContainer->CandidatePane()->CurrentCandidate(); - uiContainer->CandidatePane()->SelectFirst(); - ptiengine->SetPredictiveChineseChar(text); - uiContainer->CandidatePane()->SetCandidateBuffer(ptiengine->CandidatePage()); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - -TBool TAknFepInputStatePredictiveInputQwertyPinyin::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = ETrue; - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if (IsValidEntryKey(aKey)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if(aKey == EStdKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - if (IsValidPinyinKey(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - } - else - { - ret = TAknFepInputStateCandidateQwertyChineseBase::HandleKeyL(aKey, aLength); - } - return ret; - } - -TBool TAknFepInputStatePredictiveInputQwertyPinyin::IsValidPinyinKey(TInt aKey) - { - TBool response = ETrue; - - if (aKey == EPtiKeyQwertyU || aKey == EPtiKeyQwertyV || - aKey == EPtiKeyQwertyI ) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - response = EFalse; - } - - return response; - } - -TBool TAknFepInputStatePredictiveInputQwertyPinyin::IsValidEntryKey(TInt aKey) - { - TBool response = ETrue; - - if ((aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - (aKey >= EStdKeyLeftArrow && aKey <= EStdKeyDownArrow) || - (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9) || - aKey == EStdKeyBackspace || aKey == EStdKeyLeftFunc || - aKey == EStdKeyDevice1) - { - response = EFalse; - } - - return response; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyPinyinPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyPinyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of Pinyin phrase predictive Qwerty state -* -*/ - - - - - - - - - - - - -// System includes -#include - -// User includes -#include "AknFepUiInputStatePredictiveInputQwertyPinyinPhrase.h" -#include "AknFepUiInputStatePredictiveInputQwertyPhrase.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" -#include "AknFepUICtrlCandidatePane.h" - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveInputQwertyPinyinPhrase:: -// TAknFepInputStatePredictiveInputQwertyPinyinPhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepInputStatePredictiveInputQwertyPinyinPhrase:: -TAknFepInputStatePredictiveInputQwertyPinyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStatePredictiveInputQwertyChinesePhrase(aOwner, aUIContainer) - { - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveInputQwertyPinyinPhrase::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStatePredictiveInputQwertyPinyinPhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - TBool ret = ETrue; - - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if (aKey == EStdKeyEnter) - { - iOwner->FepMan()->TryCloseUiL(); - iOwner->ChangeState(EQwerty); - return EFalse; - } - else if (IsValidEntryKey(aKey)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - if (IsValidPinyinKey(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDWarningTone); - } - } - else if (aKey == EStdKeySpace) - { - TInt index = MapKeyToIndex(EStdKeyDevice3); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - candidatePane->SelectIndex(index); - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if(text.Length()) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(text); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(text); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->ChangeState(EPredictiveInput); - } - } - else - { - // No candidates available. Back to Entry state. - iOwner->ChangeState(EEntry); - } - } - else - { - ret = TAknFepInputStatePredictiveInputQwertyChinesePhrase::HandleKeyL(aKey, aLength); - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveInputQwertyPinyinPhrase::IsValidPinyinKey -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStatePredictiveInputQwertyPinyinPhrase::IsValidPinyinKey(TInt aKey) - { - TBool response = ETrue; - - if (aKey == EPtiKeyQwertyU || aKey == EPtiKeyQwertyV || - aKey == EPtiKeyQwertyI ) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - response = EFalse; - } - - return response; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveInputQwertyPinyinPhrase::IsValidEntryKey -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStatePredictiveInputQwertyPinyinPhrase::IsValidEntryKey(TInt aKey) - { - TBool response = ETrue; - - if ((aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - (aKey >= EStdKeyLeftArrow && aKey <= EStdKeyDownArrow) || - (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9) || - aKey == EStdKeyBackspace || aKey == EStdKeyLeftFunc || - aKey == EStdKeyDevice1 || aKey == EStdKeySpace || - aKey == EStdKeyDevice0 ||aKey == EStdKeyDevice3) - { - response = EFalse; - } - - return response; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveInputQwertyPinyinPhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStatePredictiveInputQwertyPinyinPhrase::HandleCommandL( - TInt aCommandId ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate( ); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan( ); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - // case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( text.Length( ) ) - { - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL( ); - iOwner->PtiEngine()->SetPredictiveChineseChar( text ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL( ); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyStroke.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyStroke.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,151 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of predictive input qwertystroke state -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveInputQwertyStroke.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStatePredictiveInputQwertyStroke::TAknFepInputStatePredictiveInputQwertyStroke( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyChineseBase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - uiContainer->FocusCandidatePane(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->SetCandidatePageLength(MAknFepUICtrlContainerChinese::ELayoutInput); - - // for some reason needs to feed back to ptiengine current Chinese char just before get the prediction - TPtrC text = uiContainer->CandidatePane()->CurrentCandidate(); - uiContainer->CandidatePane()->SelectFirst(); - ptiengine->SetPredictiveChineseChar(text); - uiContainer->CandidatePane()->SetCandidateBuffer(ptiengine->CandidatePage()); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - -TBool TAknFepInputStatePredictiveInputQwertyStroke::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = ETrue; - - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if (IsValidEntryKey(aKey)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if(aKey == EStdKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - else if(aKey == EStdKeyDevice1) - { - iOwner->FepMan()->TryCloseUiL(); - } - else - { - ret = TAknFepInputStateCandidateQwertyChineseBase::HandleKeyL(aKey, aLength); - } - return ret; - } - -TBool TAknFepInputStatePredictiveInputQwertyStroke::IsValidEntryKey(TInt aKey) - { - TBool response = ETrue; - - if ((aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - (aKey >= EStdKeyLeftArrow && aKey <= EStdKeyDownArrow) || - (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9) || - aKey == EStdKeyBackspace || aKey == EStdKeyLeftFunc || - aKey == EStdKeyDevice1) - { - response = EFalse; - } - - return response; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveInputQwertyStroke::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStatePredictiveInputQwertyStroke::HandleCommandL( - TInt aCommandId ) - { - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyStrokePhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyStrokePhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,190 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of predictive input qwertystroke phrase state -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveInputQwertyStrokePhrase.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" //FepMan flag - -#include //CPtiEngine - -TAknFepInputStatePredictiveInputQwertyStrokePhrase:: -TAknFepInputStatePredictiveInputQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyBaseChinesePhrase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - // set container window position to follow cursor - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - - uiContainer->FocusCandidatePane(ETrue); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - // for some reason needs to feed back to ptiengine current Chinese phrase just before get the prediction - TPtrC text = candidatePane->CurrentPhraseCandidate(); - candidatePane->SelectFirstPhrase(); - ptiengine->SetPredictiveChineseChar(text); - - TRAPD(ignore,ptiengine->GetChinesePhraseCandidatesL(*(candidatePane->CandidateArray()))); - if (ignore == KErrNone) - { - candidatePane->SplitPhraseCandidatesIntoPages(); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutCandidate); - candidatePane->SetCandidateBuffer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - UIContainer()->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - UIContainer()->ShowVerticalScrollArrows(multiplePages); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - } - -TBool TAknFepInputStatePredictiveInputQwertyStrokePhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - TBool ret = ETrue; - - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if (IsValidEntryKey(aKey)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if(aKey == EStdKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress) // launch sct table - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if (aKey == EStdKeyEnter) - { - iOwner->FepMan()->TryCloseUiL(); - iOwner->ChangeState(EQwerty); - return EFalse; - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - else - { - ret = TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL(aKey, aLength); - } - - return ret; - } - -TBool TAknFepInputStatePredictiveInputQwertyStrokePhrase::IsValidEntryKey(TInt aKey) - { - TBool response = ETrue; - - if ((aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - (aKey >= EStdKeyLeftArrow && aKey <= EStdKeyDownArrow) || - (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9) || - aKey == EStdKeyBackspace || aKey == EStdKeyLeftFunc || - aKey == EStdKeyDevice1 || aKey == EStdKeyDevice3 || - aKey == EStdKeyDevice0) - { - response = EFalse; - } - - return response; - } -// --------------------------------------------------------------------------- -// TAknFepInputStatePredictiveInputQwertyStrokePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStatePredictiveInputQwertyStrokePhrase::HandleCommandL( - TInt aCommandId ) - { - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate( ); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - // case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( text.Length( ) ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan( ); - fepMan->NewTextL( text ); - fepMan->CommitInlineEditL( ); - iOwner->PtiEngine()->SetPredictiveChineseChar( text ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - iOwner->FepMan()->TryCloseUiL( ); - } - else - { - iOwner->ChangeState( EPredictiveCandidate ); - } - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyZhuyin.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyZhuyin.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputQwerty methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveInputQwertyZhuyin.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" //FepMan flag -#include "AknFepManagerUIInterface.h" - -#include //CPtiEngine - -TAknFepInputStatePredictiveInputQwertyZhuyin::TAknFepInputStatePredictiveInputQwertyZhuyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyChinese(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - uiContainer->CandidatePane()->SelectFirst(); - - TBool multiplePages = ptiengine->MoreCandidatePages(); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - -TBool TAknFepInputStatePredictiveInputQwertyZhuyin::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = ETrue; - - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if(aKey == EStdKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey) && - !(aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9)) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // it is needed when we use phrase input engine, otherwise it seems not cleared - ptiengine->ClearCurrentWord(); - ptiengine->ResetToneMark(); - - iOwner->ChangeState(EEntry); - ret = EFalse; //passes to entry state to handle the key - } - else - { - ret = TAknFepInputStateCandidateQwertyChinese::HandleKeyL(aKey, aLength); - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyZhuyinPhrase.cpp --- a/fep/aknfep/src/AknFepUiInputStatePredictiveInputQwertyZhuyinPhrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStatePredictiveInputQwertyPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatePredictiveInputQwertyZhuyinPhrase.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepManager.h" //FepMan flag -#include "AknFepManagerUIInterface.h" - -#include //CPtiEngine - -TAknFepInputStatePredictiveInputQwertyZhuyinPhrase:: -TAknFepInputStatePredictiveInputQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyChinesePhrase(aOwner, aUIContainer) - { - iState = EPredictiveInput; - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->CandidatePane()->SelectFirstPhrase(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = ptiengine->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - UpdateIndicator(); - } - -TBool TAknFepInputStatePredictiveInputQwertyZhuyinPhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - TBool ret = ETrue; - - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)) - { - return ret; - } - - if(aKey == EStdKeyBackspace) - { - iOwner->FepMan()->TryCloseUiL(); - } - else if(aKey == EStdKeyLeftFunc && aLength == EShortKeyPress && - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagNoActionDuringChrKeyPress)) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->ClearFlag(CAknFepManager::EFlagNoActionDuringChrKeyPress); - return ret; - } - else if(iOwner->IsValidChineseInputKeyQwerty(aKey) && - !(aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9)) - { - ret = ret; //passes to entry state to handle the key - } - else if (aKey == EStdKeyEnter || aKey == EStdKeySpace) - { - return ret; - } - else - { - ret = TAknFepInputStateCandidateQwertyChinesePhrase::HandleKeyL(aKey, aLength); - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateQwerty.cpp --- a/fep/aknfep/src/AknFepUiInputStateQwerty.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1221 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateQwerty methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateQwerty.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepCaseManager.h" -#include "AknFepUiIndicInputManager.h" - - -#include -#include -#include -#include -#include -#include -#ifdef RD_HINDI_PHONETIC_INPUT -#include -#endif -const TInt KEventIndexForW = 3; -const TInt KEventIndexForP = 2; -const TInt KPtiCapitalEIndex = 19; -const TInt KPtiStarIndex = 0; -const TInt KPtiPlusIndex = 1; -const TInt KPtiMinusIndex = 18; -const TInt KPtiCommaIndex = 17; -const TInt KPtiHashIndex = 4; -const TInt KMaxOutputSizeForAKeyPress = 10; - -_LIT(KAknFepPlainNumbers, "1234567890"); -const TInt KNumAllowedIdleNumericChars = 22; -const TUint16 KAllAllowedNumericChars[] = - {'*','+','p','w','#','1','2','3','4','5','6','7','8','9','0', ';','.',',','-','E','?','/'}; -const TKeyEvent KEventsForSecondPass[] = - { - {42, EStdKeyNkpAsterisk, 3, 0}, - {43, EStdKeyNkpPlus, 3, 0}, - {112, 80, EModifierAutorepeatable, 0}, - {119, 87, EModifierAutorepeatable, 0}, - {35, EStdKeyHash, EModifierAutorepeatable, 0}, - {EPtiKey1, EPtiKey1, EModifierAutorepeatable, 0}, - {EPtiKey2, EPtiKey2, EModifierAutorepeatable, 0}, - {EPtiKey3, EPtiKey3, EModifierAutorepeatable, 0}, - {EPtiKey4, EPtiKey4, EModifierAutorepeatable, 0}, - {EPtiKey5, EPtiKey5, EModifierAutorepeatable, 0}, - {EPtiKey6, EPtiKey6, EModifierAutorepeatable, 0}, - {EPtiKey7, EPtiKey7, EModifierAutorepeatable, 0}, - {EPtiKey8, EPtiKey8, EModifierAutorepeatable, 0}, - {EPtiKey9, EPtiKey9, EModifierAutorepeatable, 0}, - {EPtiKey0, EPtiKey0, EModifierAutorepeatable, 0}, - {59, EStdKeySemiColon, EModifierAutorepeatable, 0}, - {46, 122, EModifierAutorepeatable, 0}, - {44, 121, EModifierAutorepeatable, 0}, - {45, 130, EModifierAutorepeatable, 0}, - {101, 69, EModifierAutorepeatable|EModifierLeftShift, 0}, - {63, EStdKeyForwardSlash, EModifierAutorepeatable|EModifierLeftShift, 0}, - {47, 123, EModifierAutorepeatable, 0} - }; - -const TInt KFull_SimpleSymbolMapNumber = 8; -const TUint16 KFull_SimpleSymbolMaps[KFull_SimpleSymbolMapNumber][2] = - { {0xFF0A,'*'},{0xFF0B,'+'},{0xFF0D,'-'},{0xFF03,'#'}, - {0xFF1B,';'},{0xFF0E,'.'},{0xFF0C,','},{0x3002, '.'}}; - -const TInt KNumCharKeyExceptions = 14; -const TUint16 CharKeyExceptions[] = {0x00f2, 0x00e0, 0x00e8, 0x00e9, 0x00e7, 0x00f9, - 0x0161, 0x010d, 0x017e, 0x00fd, 0x00e1, 0x00ed, - 0x00e9, 0x00ec}; - -TAknFepInputStateQwerty::TAknFepInputStateQwerty(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateBase(aOwner) - { - iState = EInitial; - CPtiEngine* ptiengine = iOwner->PtiEngine(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - // The order of the following two commands has been swapped. This way the Xt9 core will keep its - // internal state while a dialog with no prediction is opened on top (like the "Edit word" query). - ptiengine->SetInputMode(EPtiEngineQwerty); - ptiengine->ClearCurrentWord(); - // Predictive QWERTY (XT9) changes <---- - - MAknFepManagerUIInterface *fepMan = iOwner->FepMan(); - TPtiKeyboardType keyLayout = fepMan->KeyboardLayout(); - ptiengine->SetKeyboardType(keyLayout); - if (keyLayout == EPtiKeyboardHalfQwerty) - { - ptiengine->SetInputMode(EPtiEngineHalfQwerty); - } -#else - ptiengine->ClearCurrentWord(); - ptiengine->SetInputMode(EPtiEngineQwerty); -#endif //RD_INTELLIGENT_TEXT_INPUT - } - -TBool TAknFepInputStateQwerty::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = EFalse; - CPtiEngine* ptiengine = iOwner->PtiEngine(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); -#endif - const TInt KDeleteKeyScanCode = 1; - - if (aKey == KDeleteKeyScanCode -#ifdef RD_INTELLIGENT_TEXT_INPUT - || CAknFepFnKeyManager::EFnKeyNone != fnKeyState -#endif - ) - { - // Pending dead key is handled as a special case. - if (ptiengine->HandleCommandL(EPtiCommandDeadKeyWaiting, NULL) == 1) - { - ptiengine->HandleCommandL(EPtiCommandGetAndClearDeadKeyRootChar, NULL); - return ETrue; - } - if (iFakeDelete) - { - ptiengine->HandleCommandL(EPtiCommandClearVowelSeq, NULL); - ptiengine->HandleCommandL(EPtiCommandGetAndClearLastVietnameseChar, NULL); - } - else - { - ptiengine->HandleCommandL(EPtiCommandResetVietnameseVowelSeqAndToneMark, NULL); - } - } - else if (aKey == EPtiKeyQwertySpace -#ifdef RD_INTELLIGENT_TEXT_INPUT - && (fnKeyState == CAknFepFnKeyManager::EFnKeyNone) -#endif - ) - { - // Space clears vietnamese vowels and tones. - ptiengine->HandleCommandL(EPtiCommandResetVietnameseVowelSeqAndToneMark, NULL); - } - if( aLength == ELongKeyPress ) - { - // the vowel seq tone mark of the short key press should be reset - ptiengine->HandleCommandL(EPtiCommandResetVietnameseVowelSeqAndToneMark, NULL); - } - iFakeDelete = EFalse; - iCharKeyException = EFalse; - -#ifdef RD_INTELLIGENT_TEXT_INPUT - CPtiCoreLanguage* langCur = static_cast(ptiengine->CurrentLanguage()); - TBool chinese = EFalse; - if(langCur->LanguageCode()==ELangPrcChinese || - langCur->LanguageCode()==ELangHongKongChinese || - langCur->LanguageCode()==ELangTaiwanChinese ) - { - chinese = ETrue; - } - if (chinese && fepMan->IsOnlyNumericPermitted()) - { - ptiengine->ActivateLanguageL(ELangEnglish); - ptiengine->SetInputMode(EPtiEngineQwerty); - ptiengine->SetKeyboardType( iOwner->FepMan()->KeyboardLayout()); - } - const TBool isQwertyKey = ptiengine->IsValidKey((TPtiKey)aKey); -#else - const TBool isQwertyKey = IsQwertyKey(aKey); -#endif - -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (aKey == EStdKeyEnter) - { - fepMan->SimulateKeyEventL(EKeyF19); // Asynchronous case update. - } -#endif - - if ( !isQwertyKey ) - { - return EFalse; - } -#ifndef RD_INTELLIGENT_TEXT_INPUT - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); -#endif - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringShiftKeyPress); - -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __REVERSE_FN_KEY_SUPPORTED - //Reverse Fn key mapping needs to be checked. - if ( fepMan->IsOnlyNumericPermitted() && !fepMan->IsReverseFnkeyInput()) -#else - if ( fepMan->IsOnlyNumericPermitted() ) -#endif //__REVERSE_FN_KEY_SUPPORTED - { - if ((fnKeyState == CAknFepFnKeyManager::EFnKeyNone) && - (aKey == EStdKeySpace || aKey == EStdKeyEnter)) -#else - if ( fepMan->IsOnlyNumericPermitted() ) - { - if (aKey == EStdKeyEnter) - { - return EFalse; - } - if (aKey == EStdKeySpace) -#endif - { - return ETrue; - } - - return CheckForValidNumberEntryForqwerty(aKey); - } - - if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) && - iData && (iData != aKey) ) - { - // Chr key is still pressed down but character key was changed from previous one - // to new one. The previous character is committed to the editor and we continue - // prosessing new key. - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - iData = 0; - caseMan->UpdateCase(ENullNaviEvent); - } - - TBool isCharacter = ETrue; - if (!iData) - { - isCharacter = IsCharacterKey(aKey); - } - - HandleCaseChange(aKey, isCharacter); - -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __REVERSE_FN_KEY_SUPPORTED - - TInt origLanguage = ptiengine->CurrentLanguage()->LanguageCode(); - TPtiEngineInputMode origInputMode = ptiengine->InputMode(); - TBool languageChanged = EFalse; - // In reverse fn key mapping filter the char applicable for - // Numeric editor. - if( fepMan->IsOnlyNumericPermitted() && fepMan->IsReverseFnkeyInput()) - { - if( !fepMan->IsValidCharForNumericInFnReverseL(aKey, iOwner->PtiEngine()->Case()) ) - { - TChar chr; - - if( ! TryGetValidCharForKey(aKey, chr) ) - { - // If the key in not valid char in the current input language in Fn reverse mode, - // then we will check if against English language. And if its valid then we will - // insert the char based out of key for English input language and revert back - // the change in input language at the end. - - if(ptiengine->CurrentLanguage()->LanguageCode() == ELangEnglish) - { - return ETrue; - } - - languageChanged = ETrue; - ptiengine->ActivateLanguageL(ELangEnglish); - ptiengine->SetInputMode(EPtiEngineQwerty); - - if( !fepMan->IsValidCharForNumericInFnReverseL(aKey, iOwner->PtiEngine()->Case()) ) - { - if( ! TryGetValidCharForKey(aKey, chr) ) - { - ptiengine->ActivateLanguageL(origLanguage); - ptiengine->SetInputMode(origInputMode ); - - return ETrue; - } - else - { - if(languageChanged) - { - ptiengine->ActivateLanguageL(origLanguage); - ptiengine->SetInputMode(origInputMode ); - } - - TBuf<1> buf; - buf.Append(chr); - fepMan->NewCharacterL(buf); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - iData = 0; - ptiengine->CancelTimerActivity(); - return ETrue; - } - } - } - else - { - if(languageChanged) - { - ptiengine->ActivateLanguageL(origLanguage); - ptiengine->SetInputMode(origInputMode ); - } - - TBuf<1> buf; - buf.Append(chr); - fepMan->NewCharacterL(buf); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - iData = 0; - ptiengine->CancelTimerActivity(); - return ETrue; - } - } - } - -#endif //__REVERSE_FN_KEY_SUPPORTED -#endif //RD_INTELLIGENT_TEXT_INPUT - - iData = aKey; - - TBool keyEventHandledByFep = ETrue; - TInt languageCode = 0; - MPtiLanguage* curlang = ptiengine->CurrentLanguage(); - if (curlang) - { - languageCode = curlang->LanguageCode(); - } - - TBuf filtered; - if ( keyEventHandledByFep && - (isCharacter || isQwertyKey) ) - { - TPtrC text; -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - TBool fnCaseActive = (ptiengine->Case()==EPtiCaseFnLower || ptiengine->Case()==EPtiCaseFnUpper); - if (aKey == EStdKeySpace && !fnCaseActive /*(fnKeyState == CAknFepFnKeyManager::EFnKeyNone)*/) - -#else - if (aKey == EStdKeySpace && (fnKeyState == CAknFepFnKeyManager::EFnKeyNone)) -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#else - if (aKey == EStdKeySpace) -#endif - { - // PtiEngine does not have mapping for the space key. - TUint16 deadRoot = ptiengine->HandleCommandL(EPtiCommandGetAndClearDeadKeyRootChar); - if (deadRoot) - { - // There was a dead key press waiting. Space will cancel it and - // insert the root char. - TBuf<1> dbuf; - dbuf.Append(deadRoot); - text.Set(dbuf); - } - else - { - _LIT(KSpaceCharacter, " "); - text.Set(KSpaceCharacter); - } - } - else if (aKey == EStdKeyEnter) - { - // PtiEngine does not have mapping for the enter key. - const TText KAknFEPLineFeedSymbol = 0x21B2; - TBuf<1> lineFeed; - lineFeed.Zero(); - lineFeed.Append(KAknFEPLineFeedSymbol); - text.Set(lineFeed); - } - else - { - TPtiTextCase CurCase = ptiengine->Case(); - if(fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric()) - { - if(CheckForValidNumberEntryForqwerty(aKey)) - ptiengine->SetCase((TPtiTextCase)EPtiCaseFnLower); - else - ptiengine->SetCase((TPtiTextCase)EPtiCaseLower); - } - // Get keymapping from PtiEngine. - text.Set(ptiengine->AppendKeyPress((TPtiKey)aKey)); - // Handle all exception cases. - CustomFilter(text, filtered, languageCode, caseMan->CurrentCase(), - ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)|| - fepMan->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress))); - text.Set(filtered); -#ifdef RD_INTELLIGENT_TEXT_INPUT - SetShortKeyPressText(text); - if( text.Length() == 0 ) // no mapping available - { - if( ( EStdKeySpace == aKey || EKeySpace == aKey )) - { - // Launching the Edit menu on press of Fn key and space - if(fnKeyState == CAknFepFnKeyManager::EFnKeyDown) - fepMan->LaunchSelectModeMenuL(); - else - { - // Editor should insert space when function key is in - // locked state and space key is pressed. - _LIT(KSpaceCharacter, " "); - text.Set(KSpaceCharacter); - } - } - } -#endif - if(fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric()) - ptiengine->SetCase(CurCase); - } - - TBuf<5> replacedText; - if (text.Length()) - { - MPtiLanguage* lang = ptiengine->CurrentLanguage(); - if (lang->LanguageCode() == ELangVietnamese) - { - if (ptiengine->HandleCommandL(EPtiCommandGetAndClearVowelSequence, NULL) > 0) - { - // This key press produced Vietnamese vowel sequence. - // Delete previous char, it will be replaced with accented char. - // This is done by sending delete event before accented character is - // added to buffer. - TInt lastChar = ptiengine->HandleCommandL(EPtiCommandGetAndClearLastVietnameseChar, - NULL); - iFakeDelete = ETrue; - TKeyEvent delKey = {8, EStdKeyBackspace, 1, 0}; - CCoeEnv::Static()->SimulateKeyEventL(delKey, EEventKey); - // Restore last char. - ptiengine->HandleCommandL(EPtiCommandSetVietnameseLastChar, (TAny*)lastChar); - } - else - { - TUint16 replaced = ptiengine->HandleCommandL(EPtiCommandQueryReplacePrevious, NULL); - if (replaced) - { - // Remember last key press, since delete will destroy it. - TInt last = ptiengine->HandleCommandL(EPtiCommandGetVietnameseLastKey, NULL); - if(!fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - iFakeDelete = ETrue; - TKeyEvent delKey = {8, EStdKeyBackspace, 1, 0}; - CCoeEnv::Static()->SimulateKeyEventL(delKey, EEventKey); - replacedText.Append(replaced); - replacedText.Append(text); - text.Set(replacedText); - // Restore last key. - ptiengine->HandleCommandL(EPtiCommandSetLastKeyForVietnamese, (TAny*)last); - } - } - } - - // Because of dead key functionality there may be several characters waiting. - TBuf<1> chr; - for (TInt jj = 0; jj < text.Length(); jj++) - { - chr.Zero(); - chr.Append(text[jj]); - fepMan->NewCharacterL(chr); - if ( !fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) || - (ELongKeyPress == aLength) ) - { - // Commit the character if chr key is not pressed. - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - iData = 0; - } - else - { - fepMan->ClearFlag(CAknFepManager::EFlagNoActionDuringChrKeyPress); - } - } - ret = ETrue; - } - else - { - if (ptiengine->HandleCommandL(EPtiCommandDeadKeyWaiting, NULL) == 1) - { - if (caseMan->CurrentCase() == EAknEditorTextCase - || caseMan->CurrentCase() == EAknEditorUpperCase) - { - ptiengine->SetCase(EPtiCaseUpper); - } - else if (fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) || - fepMan->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress)) - { - ptiengine->SetCase(EPtiCaseLower); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - else - { - fepMan->SimulateKeyEventL(EKeyF19); - } -#endif - ret = ETrue; - } - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __REVERSE_FN_KEY_SUPPORTED - - if(languageChanged) - { - ptiengine->ActivateLanguageL(origLanguage); - ptiengine->SetInputMode(origInputMode ); - } - -#endif //__REVERSE_FN_KEY_SUPPORTED -#endif //RD_INTELLIGENT_TEXT_INPUT - - return ret; - } - -// Functions from MPtiObserver interface -void TAknFepInputStateQwerty::KeyTimerExpired() - { - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TRAP_IGNORE(fepMan->CommitInlineEditL()) - //do something if error?? - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - caseMan->UpdateCase(ENullNaviEvent); - - iData = 0; - } - } - - - -TBool TAknFepInputStateQwerty::IsExceptionChar(TUint16 aChar) - { - for (TInt i = 0; i < KNumCharKeyExceptions; i++) - { - if (CharKeyExceptions[i] == aChar) - { - return ETrue; - } - } - - return EFalse; - } - - -TBool TAknFepInputStateQwerty::IsCharacterKey(const TInt aKey) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - // Max length doesn't matter because we'll need only the first character. - TBuf lowerdata; - - ptiengine->MappingDataForKey((TPtiKey)aKey, lowerdata, EPtiCaseLower); - if (lowerdata.Length() > 0) - { - TChar lower = lowerdata[0]; - - if (IsExceptionChar(lower)) - { - TBuf upperdata; - ptiengine->MappingDataForKey((TPtiKey)aKey, upperdata, EPtiCaseUpper); - if (upperdata.Length() > 0) - { - TChar upperchr = upperdata[0]; - upperchr.LowerCase(); - if (upperchr != lower) - { - iCharKeyException = ETrue; - return EFalse; - } - } - } - - TUint upper = lower.GetUpperCase(); - - if ( TUint(lower) != upper ) - { - return ETrue; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - //Characters from languages without case changes like Arabic/Urdu - //cannot be identified with above logic. Hence, a special check below: - else if ( IsLanguageWithoutCaseChanges() && fepMan->IsOnlyNumericPermitted() && lower.IsAlpha() ) - { - return ETrue; - } -#endif - } - - return EFalse; - } - -TBool TAknFepInputStateQwerty::IsNumberKey(const TInt aKey) - { - TBool response = EFalse; - if (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9) - { - response = ETrue; - } - return response; - } - -TBool TAknFepInputStateQwerty::IsQwertyKey(const TInt aKey) - { - TBool response = EFalse; - if ( (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - IsNumberKey( aKey ) || - aKey == EStdKeySpace || - aKey == EStdKeyEnter || - aKey == EPtiKeyQwertyPlus || - aKey == EPtiKeyQwertyMinus || - aKey == EPtiKeyQwertyComma || - aKey == EPtiKeyQwertySemicolon || - aKey == EPtiKeyQwertyFullstop || - aKey == EPtiKeyQwertyHash || - aKey == EPtiKeyQwertySlash || - aKey == EPtiKeyQwertyApostrophe -#ifdef RD_INTELLIGENT_TEXT_INPUT - || aKey == EPtiKeyQwertyAtCharacter -#endif - ) - { - response = ETrue; - } - return response; - } - - - -#ifdef RD_INTELLIGENT_TEXT_INPUT -TBool TAknFepInputStateQwerty::IsCharacterNumber(TChar aChar) - { - TBool isNumber; - isNumber = (iOwner->NumberModeKeyMapping().Locate(aChar) != KErrNotFound) || - (KAknFepPlainNumbers().Locate(aChar) != KErrNotFound) || - iOwner->FepMan()->IsAllowedKeymappingForNumberMode(aChar); - return isNumber; - } -#endif - -void TAknFepInputStateQwerty::NumericCharacterForQwertyKey(TInt aInScanCode, - TKeyEvent& aEvent, - TBool aShifted, TChar& aResult) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - MAknFepManagerUIInterface *fepMan = iOwner->FepMan(); -#endif - aResult = 0; - TUint16 firstChar; - - const TInt KMaxNumCharsPerCase = 50; - TBuf keys; - TInt langCode = 0; - - CPtiCoreLanguage* lang = static_cast(ptiengine->CurrentLanguage()); - if (lang) - { - langCode = lang->LanguageCode(); - if (langCode == ELangFarsi || langCode == ELangUrdu || langCode == ELangHindi - || langCode == ELangPrcChinese || langCode == ELangHongKongChinese - || langCode == ELangTaiwanChinese || langCode == ELangArabic - || TAknFepUiIndicInputManager :: IsIndicLangauge((TLanguage) langCode ) -#ifdef RD_HINDI_PHONETIC_INPUT - || TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage( (TLanguage)langCode ) -#endif - ) - { - lang = static_cast(ptiengine->GetLanguage(ELangEnglish)); - } - } - - if (lang) - { - - // If the key have scancode EPtiKeyQwertyW, EPtiKeyQwertyP map to any valid - // numeric character that valid numeric character never be inserted. - // Earlier this was not happening, because key map with numeric key always - - - CPtiQwertyKeyMappings* maps = static_cast(lang->GetQwertyKeymappings()); - TBool keyNotMapToNumeric(ETrue); -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(maps) - { - maps->GetDataForKey((TPtiKey)aInScanCode, keys, EPtiCaseFnLower); - keyNotMapToNumeric = !(keys.Length() && IsCharacterNumber(keys[0])); - } -#endif - - if (keyNotMapToNumeric && langCode == ELangVietnamese && aInScanCode == EPtiKeyQwertyW && - !aShifted) - { - // This is handled as a special case because 'w' is normally produced by double press - // of w-key in Vitenamese but in number mode that can't be done. - aResult = 'w'; - aEvent = KEventsForSecondPass[KEventIndexForW]; - return; - } - - if (langCode == ELangHindi -#ifdef RD_MARATHI - || langCode == ELangMarathi -#endif // RD_MARATHI - ) - { - if (aInScanCode == EPtiKeyQwertyPlus && aShifted) - { - aResult = '-'; - aEvent = KEventsForSecondPass[KPtiMinusIndex]; - return; - } - else if (aInScanCode == EPtiKeyQwertyMinus && !aShifted) - { - return; - } - } - - if (langCode == ELangArabic) - { - if (aInScanCode == EPtiKeyQwertyComma && !aShifted) - { - aResult = ','; - aEvent = KEventsForSecondPass[KPtiCommaIndex]; - return; - } - else if (aInScanCode == EPtiKeyQwertyE && aShifted) - { - aResult = 'E'; - aEvent = KEventsForSecondPass[KPtiCapitalEIndex]; - return; - } - } - - if (langCode == ELangFarsi) - { - // Farsi uses english numeric keymappings with following exceptions. - if ((aInScanCode == EPtiKeyQwertyPlus && !aShifted) || - (aInScanCode == EPtiKeyQwertyComma && !aShifted)) - { - return; // Block - } - - if (aInScanCode == EPtiKeyQwerty7 && aShifted) - { - aResult = '*'; - aEvent = KEventsForSecondPass[KPtiStarIndex]; - return; - } - if (aInScanCode == EPtiKeyQwerty8 && aShifted) - { - aResult = '-'; - aEvent = KEventsForSecondPass[KPtiMinusIndex]; - return; - } - if (aInScanCode == EPtiKeyQwerty9 && aShifted) - { - aResult = '+'; - aEvent = KEventsForSecondPass[KPtiPlusIndex]; - return; - } - if (aInScanCode == EPtiKeyQwerty2 && aShifted) - { - aResult = ','; - aEvent = KEventsForSecondPass[KPtiCommaIndex]; - return; - } - } - else if (langCode == ELangUrdu) - { - // urdu uses english numeric keymappings with following exceptions. - if (aInScanCode == EPtiKeyQwerty0 && aShifted) - { - aResult = '+'; - aEvent = KEventsForSecondPass[KPtiPlusIndex]; - return; - } - if (aInScanCode == EPtiKeyQwerty3 && aShifted) - { - aResult = '#'; - aEvent = KEventsForSecondPass[KPtiHashIndex]; - return; - } - if (aInScanCode == EPtiKeyQwertyP) - { - if (iOwner->NumberModeKeyMapping().Locate('p') == KErrNotFound) - { - if (!aShifted) - { - aResult = '-'; - aEvent = KEventsForSecondPass[KPtiMinusIndex]; - return; - } - else - { - return; - } - } - else - { - if (aShifted) - { - aResult = '-'; - aEvent = KEventsForSecondPass[KPtiMinusIndex]; - return; - } - else - { - aResult = 'p'; - aEvent = KEventsForSecondPass[KEventIndexForP]; - return; - - } - } - } - } - - // Handle other languages, which don't have 'p' and 'w' in normal keymapping data. - - if( keyNotMapToNumeric && - (langCode == ELangGreek || langCode == ELangRussian || - langCode == ELangArabic || langCode == ELangHebrew || - langCode == ELangBulgarian || langCode == ELangThai || - langCode == ELangUkrainian) && !aShifted) - { - if (aInScanCode == EPtiKeyQwertyW) - { - aResult = 'w'; - aEvent = KEventsForSecondPass[KEventIndexForW]; - return; - } - else if (aInScanCode == EPtiKeyQwertyP) - { - aResult = 'p'; - aEvent = KEventsForSecondPass[KEventIndexForP]; - return; - } - } - - - if (maps) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(aShifted) - { - maps->GetDataForKey((TPtiKey)aInScanCode, keys, EPtiCaseUpper); - } - else - { - maps->GetDataForKey((TPtiKey)aInScanCode, keys, EPtiCaseFnLower); - if( !(keys.Length() && IsCharacterNumber(keys[0]))) - maps->GetDataForKey((TPtiKey)aInScanCode, keys, EPtiCaseFnUpper); - if( !(keys.Length() && IsCharacterNumber(keys[0]))) - maps->GetDataForKey((TPtiKey)aInScanCode, keys, EPtiCaseLower); - if( !(keys.Length() && IsCharacterNumber(keys[0]))) - maps->GetDataForKey((TPtiKey)aInScanCode, keys, EPtiCaseUpper); - if( !(keys.Length() && IsCharacterNumber(keys[0]))) - keys.SetLength(0); - } - -#else - if (aShifted) - { - maps->GetDataForKey((TPtiKey)aInScanCode, keys, EPtiCaseUpper); - } - else - { - maps->GetDataForKey((TPtiKey)aInScanCode, keys, EPtiCaseLower); - } -#endif - if ( keys.Length() > 0 ) - { - switch (keys[0]) - { - case KPtiPinyinMarker: - case KPtiStrokeMarker: - case KPtiZhuyinMarker: - case KPtiCangjieMarker: - case KPtiGetAllMarker: - if (keys.Length() > 1) - firstChar = keys[1]; - else - firstChar = 0; - break; - default: - firstChar = keys[0]; - } - - for (TInt j = 0; j < KFull_SimpleSymbolMapNumber; j++) - { - if (firstChar == KFull_SimpleSymbolMaps[j][0]) - { - firstChar = KFull_SimpleSymbolMaps[j][1]; - break; - } - } - - for (TInt i = 0; i < KNumAllowedIdleNumericChars; i++) - { - if (firstChar == KAllAllowedNumericChars[i]) - { - aEvent = KEventsForSecondPass[i]; - aResult = KAllAllowedNumericChars[i]; - break; - } - } - } - } - } - } - - - -void TAknFepInputStateQwerty::CustomFilter(TPtrC aInput, TDes& aOutput, TInt /*aLanguage*/, - TInt aCurrentCase, TBool /*aShiftDown*/) - { - aOutput.Zero(); - - if (aInput.Length() && aInput.Length() <= aOutput.MaxLength()) - { - aOutput.Copy(aInput); - } - - if (aOutput.Length()) - { - if (aCurrentCase == EAknEditorTextCase || aCurrentCase == EAknEditorUpperCase) - { - if (iCharKeyException && IsExceptionChar(aOutput[0])) - { - TChar chr = aOutput[0]; - chr.UpperCase(); - aOutput[0] = chr; - } -#ifndef RD_INTELLIGENT_TEXT_INPUT - else if (aLanguage == ELangCzech) - { - if (aOutput[0] == '/' && !aShiftDown) - { - aOutput[0] = 0x00c4; - } - } -#endif // RD_INTELLIGENT_TEXT_INPUT - } - } - } - -void TAknFepInputStateQwerty::HandleCaseChange(TInt aKey, TBool aIsCharacter) - { - TPtiTextCase caseMode = EPtiCaseLower; - - if (aIsCharacter) - { - if( !( iOwner->FepMan()->IsOnlyNumericPermitted() && !IsNumberKey(aKey) ) ) - { - switch(iOwner->CaseMan()->CurrentCase()) - { - case EAknEditorLowerCase: - caseMode = EPtiCaseLower; - break; - case EAknEditorTextCase: - case EAknEditorUpperCase: - caseMode = EPtiCaseUpper; - default: - break; - } - } - else - { - caseMode = iOwner->PtiEngine()->Case(); - } - } - - TPtiTextCase shiftedCase = caseMode; -#ifdef RD_INTELLIGENT_TEXT_INPUT - - // If Fn key state is EFnKeyNone, Synchronise PtiEngine Textcase - if( CAknFepFnKeyManager::EFnKeyNone == iOwner->FepMan()->FnKeyState() ) - { - iOwner->PtiEngine()->SetCase((TPtiTextCase)EPtiCaseLower); - } - else - { - if( (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)|| - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress) )) - { - iOwner->PtiEngine()->SetCase((TPtiTextCase)EPtiCaseFnUpper); - } - - TPtiTextCase curCase = iOwner->PtiEngine()->Case(); - if( EPtiCaseFnUpper == curCase || EPtiCaseFnLower == curCase ) - { - if( EPtiCaseFnUpper == curCase ) - { - TBuf<32> keyMappings; - iOwner->PtiEngine()->MappingDataForKey( (TPtiKey)aKey, keyMappings, EPtiCaseFnUpper); - - if( keyMappings.Length() == 0) - { - iOwner->PtiEngine()->SetCase((TPtiTextCase)EPtiCaseFnLower); - } - } - return; - } - } -#endif - if ( (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)|| - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress) )&& - ( !aIsCharacter || iOwner->CaseMan()->IsAbleChangeCase() ) ) - { - // Case mode is changed to opposite because shift key is/was pressed and - // in case of character key case changes are allowed. In case of - // number or special key, shift mode is used always when - // shift key is pressed - switch ( caseMode ) - { - case EPtiCaseUpper: - shiftedCase = EPtiCaseLower; - break; - case EPtiCaseLower: - shiftedCase = EPtiCaseUpper; - break; - default: - break; - } - } - - if ( iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) ) - { - // Chr key is pressed down. Chr mode is used. - if (shiftedCase == EPtiCaseLower) - { - shiftedCase = EPtiCaseChrLower; - } - else if (shiftedCase == EPtiCaseUpper) - { - shiftedCase = EPtiCaseChrUpper; - } - } - - iOwner->PtiEngine()->SetCase(shiftedCase); - - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -TBool TAknFepInputStateQwerty::TryGetValidCharForKey(const TInt& aKey, TChar& aChar) - { - if( ! TryGetValidCharForKeyAndCase( aKey, aChar, EPtiCaseLower) ) - { - if(! TryGetValidCharForKeyAndCase( aKey, aChar, EPtiCaseUpper)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - //Do not check for FnUpper and FnLower case for Greek/Cyrillic/Hebrew script. - //This is for handling special characters in numeric editors. - if ( IsSpecialNonLatinScript() ) - { - return EFalse; - } -#endif - if(! TryGetValidCharForKeyAndCase( aKey, aChar, EPtiCaseFnLower)) - { - if(! TryGetValidCharForKeyAndCase( aKey, aChar, EPtiCaseFnUpper)) - { - return EFalse; - } - } - } - } - return ETrue; - } - -TBool TAknFepInputStateQwerty::TryGetValidCharForKeyAndCase(const TInt& aKey, TChar& aChar, TPtiTextCase aCase) - { - TBuf mappedCharacters; - - iOwner->PtiEngine()->MappingDataForKey((TPtiKey)aKey, mappedCharacters, aCase); - for (TInt i = 0; i < mappedCharacters.Length(); i++ ) - { - if( iOwner->FepMan()->IsValidCharInNumericEditorL( mappedCharacters[i] ) ) - { - aChar = mappedCharacters[i]; - return ETrue; - } - } - return EFalse; - } - -TBool TAknFepInputStateQwerty::IsLanguageWithoutCaseChanges() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TInt currLanguageCode = ptiengine->CurrentLanguage()->LanguageCode(); - //update below list as and when required. - if ( ELangArabic == currLanguageCode || - ELangFarsi == currLanguageCode || - ELangHebrew == currLanguageCode || - ELangHindi == currLanguageCode || - ELangUrdu == currLanguageCode - ) - { - return ETrue; - } - return EFalse; - } - -TBool TAknFepInputStateQwerty::IsSpecialNonLatinScript() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TInt currLanguageCode = ptiengine->CurrentLanguage()->LanguageCode(); - //update below list as and when required. - if ( ELangGreek == currLanguageCode || - ELangRussian == currLanguageCode || - ELangUkrainian == currLanguageCode || - ELangBulgarian == currLanguageCode || - ELangHebrew == currLanguageCode - ) - { - return ETrue; - } - return EFalse; - } -#endif - -TBool TAknFepInputStateQwerty::CheckForValidNumberEntryForqwerty(TInt aKey) - { - TChar chr; - TKeyEvent numKey; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - NumericCharacterForQwertyKey(aKey, numKey, - ( fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)|| - fepMan->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress) ), chr); - if ((chr != 0) && - ((iOwner->NumberModeKeyMapping().Locate(chr) != KErrNotFound) || - (KAknFepPlainNumbers().Locate(chr) != KErrNotFound)) || - fepMan->IsAllowedKeymappingForNumberMode(chr)) - { - if (chr == 'E') - { - TBuf<1> chrTmp; - chrTmp.Append(chr); - fepMan->NewCharacterL(chrTmp); - fepMan->CommitInlineEditL(); - } - else - { - // If editor is in number mode and incoming key press would produce - // any of the allowed number mode characters, - // resend suitable key event let it pass through FEP. That way phone idle - // receives the event too. This also takes care of remapping - // different qwerty keymap layouts to edwin events. - if(!(fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric())) - fepMan->SetFlag(CAknFepManager::EFlagPassNextKey); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - CPtiCoreLanguage* lang = static_cast(ptiengine->CurrentLanguage()); - - if (lang && (numKey.iScanCode >= EPtiKeyQwerty0 && numKey.iScanCode <= EPtiKeyQwerty9)) - { - const TInt langCode = lang->LanguageCode(); - - if(langCode == ELangUrdu || langCode == ELangFarsi) - { - numKey.iCode += KLatinToEasternArabicIndicDigitsDelta; - numKey.iModifiers = numKey.iModifiers|EModifierSpecial; - } - else if (langCode == ELangArabic && fepMan->ArabicIndicDigitsInUse()) - { - numKey.iCode += KLatinToArabicIndicDigitsDelta; - numKey.iModifiers = numKey.iModifiers|EModifierSpecial; - } - else if(TAknFepUiIndicInputManager::IsIndicLangauge(TLanguage(langCode)) -#ifdef RD_HINDI_PHONETIC_INPUT - || TAknFepUiIndicInputManager::IsIndicPhoneticLanguage(TLanguage(langCode)) -#endif - ) - { - numKey.iCode += KLatinToDevanagariDigitsDelta; - numKey.iModifiers = numKey.iModifiers|EModifierSpecial; - } - } - // Disable UI framewroks's qwerty iCode conversion for simulated event. - numKey.iModifiers |= EModifierSpecial; - if(!(fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric())) - { - CCoeEnv::Static()->SimulateKeyEventL(numKey, EEventKey); -#ifdef RD_INTELLIGENT_TEXT_INPUT - CCoeEnv::Static()->SimulateKeyEventL(numKey, EEventKeyUp); -#endif - } - } - } - - if((fepMan->IsHybridAplhaEditor() && !fepMan->IsHybridAlphaModeChangedtoAplhanumeric()) - &&(numKey.iCode == 112 /*p*/ || numKey.iCode == 119/*w*/)) - return EFalse; - else if(!fepMan->IsHybridAplhaEditor() || fepMan->IsHybridAlphaModeChangedtoAplhanumeric()) - return ETrue; - else if(!fepMan->IsHybridAlphaModeChangedtoAplhanumeric() && - (chr !=0 || (chr==0 && fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)))) - return ETrue; - else - return EFalse; - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateStrokeFindQwerty.cpp --- a/fep/aknfep/src/AknFepUiInputStateStrokeFindQwerty.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,183 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateStrokeFindQwerty methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStatelStrokeFindQwerty.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManagerUIInterface.h" - -#include -#include -#include //keys - -TAknFepInputStateStrokeFindQwerty::TAknFepInputStateStrokeFindQwerty( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseFindQwerty(aOwner, aUIContainer) - { - iOwner->PtiEngine()->SetInputMode(EPtiEngineStrokeQwerty); - } - - -#ifdef RD_INTELLIGENT_TEXT_INPUT -TAknFepInputStateStrokeFindMiniQwerty::TAknFepInputStateStrokeFindMiniQwerty( - MAknFepUIManagerStateInterface* aOwner, TInt aMode) : - TAknFepInputStateInitialChineseGenericQwerty(aOwner, aMode) - { - iOwner->PtiEngine()->SetInputMode(EPtiEngineStrokePhraseQwerty); - - iOwner->PtiEngine()->SetKeyboardType(iOwner->FepMan()->KeyboardLayout()); - - } - -TBool TAknFepInputStateStrokeFindMiniQwerty::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - TBool ret = EFalse; - - if (aLength == EShortKeyPress && CAknFepFnKeyManager::EFnKeyNone - == iOwner->FepMan()->FnKeyState() - && iOwner->IsValidChineseInputKeyQwerty(aKey)) - { - HandleCaseChange(aKey, ETrue); - ptiengine->AppendKeyPress((TPtiKey)aKey); - TPtrC text = ptiengine->GetPhoneticSpelling(1); - - if (text.Length()) - { - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - ret = ETrue; - } - } - else if ( CAknFepFnKeyManager::EFnKeyNone == fnKeyState - && (aLength == EShortKeyPress && aKey >=EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ )) - { - ret = ETrue; - } - else if ( fnKeyState != CAknFepFnKeyManager::EFnKeyNone - && aKey >=EPtiKeyQwertyA - && aKey <= EPtiKeyQwertyZ ) - { - ret = TAknFepInputStateQwerty::HandleKeyL( aKey, aLength ); - } - else - { - return TAknFepInputStateInitialChineseGenericQwerty::HandleKeyL(aKey, - aLength); - } - return ret; - } - - - -#ifdef __HALF_QWERTY_KEYPAD -TAknFepInputStateStrokeFindHalfQwerty::TAknFepInputStateStrokeFindHalfQwerty( - MAknFepUIManagerStateInterface* aOwner, TInt aMode) : - TAknFepInputStateInitialChineseGenericHalfQwerty(aOwner, aMode) - { - iOwner->PtiEngine()->SetInputMode(EPtiEngineStrokePhraseHalfQwerty); - - iOwner->PtiEngine()->SetKeyboardType(iOwner->FepMan()->KeyboardLayout()); - - } - -TBool TAknFepInputStateStrokeFindHalfQwerty::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = EFalse; - - if (iOwner->IsValidChineseInputKeyQwerty(aKey) - && CAknFepFnKeyManager::EFnKeyNone == iOwner->FepMan()->FnKeyState() && aLength == EShortKeyPress) - { - - ptiengine->SetCase(EPtiCaseLower); - ptiengine->SetInputMode(EPtiEngineStrokePhraseHalfQwerty); - - ptiengine->AppendKeyPress((TPtiKey)aKey); - TPtrC text = ptiengine->GetPhoneticSpelling(1); - - if (text.Length()) - { - fepMan->StartInlineEditL(); - fepMan->UpdateInlineEditL(text,0); - fepMan->CommitInlineEditL(); -// fepMan->NewCharacterL(aText); -// fepMan->CommitInlineEditL(); -// ptiengine->ClearCurrentWord(); - ret = ETrue; - } - } - else if( iOwner->IsValidChineseInputKeyQwerty(aKey) && aLength == ELongKeyPress ) - { - TPtrC text; - TBuf<5> allFnMappedCharacters; - ptiengine->MappingDataForKey((TPtiKey)aKey, allFnMappedCharacters, EPtiCaseFnLower); - text.Set(allFnMappedCharacters); - if (text.Length()) - { - TBuf<1> chr; - chr.Append( text[0] ); - fepMan->RemovePreviousCharacterL(); - fepMan->NewCharacterL(chr); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - iData = 0; - } - ret = ETrue; - } - else - { - TPtiTextCase caseMode = ptiengine->Case(); - if (ptiengine->InputMode()!=EPtiEngineHalfQwerty) - { - ptiengine->ClearCurrentWord(); - ptiengine->SetInputMode(EPtiEngineHalfQwerty); - } - ptiengine->SetCase(caseMode); - - return TAknFepInputStateInitialChineseGenericHalfQwerty::HandleKeyL( - aKey, aLength); - - - /*if (fepMan->FnKeyState() == CAknFepFnKeyManager::EFnKeyNext) - fepMan->SetFnKeyState(CAknFepFnKeyManager::EFnKeyNone);*/ - } - - return ret; - } -#endif - -#endif -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputStateZhuyinFindQwerty.cpp --- a/fep/aknfep/src/AknFepUiInputStateZhuyinFindQwerty.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,352 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateZhuyinFindQwerty methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateZhuyinFindQwerty.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepCaseManager.h" - -#include -#include -#include //keys - -TAknFepInputStateZhuyinFindQwerty::TAknFepInputStateZhuyinFindQwerty( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) : - TAknFepInputStateChineseFindQwerty(aOwner, aUIContainer) - { - iOwner->PtiEngine()->SetInputMode(EPtiEngineZhuyinQwerty); - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -TAknFepInputStateZhuyinFindMiniQwerty::TAknFepInputStateZhuyinFindMiniQwerty( - MAknFepUIManagerStateInterface* aOwner, TInt aMode) : - TAknFepInputStateInitialChineseGenericQwerty(aOwner, aMode) - { - iState = EInitial; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - ptiengine->SetInputMode(EPtiEngineInputModeZhuyinMiniQwertyFind); - ptiengine->SetKeyboardType(iOwner->FepMan()->KeyboardLayout()); - - } - -TBool TAknFepInputStateZhuyinFindMiniQwerty::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = EFalse; - - if (iData != aKey) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - caseMan->UpdateCase(ENullNaviEvent); - } - - iData = aKey; - if ( aLength == EShortKeyPress && CAknFepFnKeyManager::EFnKeyNone - == iOwner->FepMan()->FnKeyState() && (!fepMan->IsFlagSet( - CAknFepManager::EFlagQwertyShiftMode - | CAknFepManager::EFlagShiftKeyDepressed )) ) - { - if (ptiengine->InputMode()!= EPtiEngineInputModeZhuyinMiniQwertyFind) - { - ptiengine->SetInputMode(EPtiEngineInputModeZhuyinMiniQwertyFind); - } - switch (aKey) - { - case EPtiKeyQwerty1: - aKey = EPtiKeyQwertyQ; - break; - case EPtiKeyQwerty2: - aKey = EPtiKeyQwertyW; - break; - case EPtiKeyQwerty3: - aKey = EPtiKeyQwertyE; - break; - case EPtiKeyQwerty4: - aKey = EPtiKeyQwertyR; - break; - case EPtiKeyQwerty5: - aKey = EPtiKeyQwertyT; - break; - case EPtiKeyQwerty6: - aKey = EPtiKeyQwertyY; - break; - case EPtiKeyQwerty7: - aKey = EPtiKeyQwertyU; - break; - case EPtiKeyQwerty8: - aKey = EPtiKeyQwertyI; - break; - case EPtiKeyQwerty9: - aKey = EPtiKeyQwertyO; - break; - case EPtiKeyQwerty0: - aKey = EPtiKeyQwertyP; - break; - default: - break; - } - - if (aKey == EPtiKeyQwertyE || aKey == EPtiKeyQwertyR || aKey - == EPtiKeyQwertyY || aKey == EPtiKeyQwertyU) - { - ret= ETrue; - } - else if (iOwner->IsValidChineseInputKeyQwerty(aKey) ) - { - HandleCaseChange(aKey, ETrue); - TPtrC text = ptiengine->AppendKeyPress((TPtiKey)aKey); - if (text.Length()) - { - fepMan->NewCharacterL(text); - ret = ETrue; - } - } - else if (aKey == EStdKeyBackspace) - { - iOwner->PtiEngine()->DeleteKeyPress(); - } - else if ( EPtiKeyQwertyComma == aKey ) - { - //show the width comma - TPtrC text = ptiengine->AppendKeyPress((TPtiKey)aKey); - if (text.Length()) - { - fepMan->NewCharacterL(text); - ret = ETrue; - } - } - } - else - { - ptiengine->SetInputMode( EPtiEngineZhuyinPhraseQwerty ); - ptiengine->ClearCurrentWord(); - if ( !fepMan->IsFlagSet( CAknFepManager::EFlagQwertyShiftMode - | CAknFepManager::EFlagShiftKeyDepressed ) ) - { - // the case for Fn mode - fepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNext ); - } - ret = TAknFepInputStateInitialChineseGenericQwerty::HandleKeyL( aKey, - aLength ); - } - return ret; - } - -void TAknFepInputStateZhuyinFindMiniQwerty::KeyTimerExpired() - { - - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TRAP_IGNORE(fepMan->CommitInlineEditL()) - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - - fepMan->ClearFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - } - - } - -#ifdef __HALF_QWERTY_KEYPAD - -TAknFepInputStateZhuyinFindHalfQwerty::TAknFepInputStateZhuyinFindHalfQwerty( - MAknFepUIManagerStateInterface* aOwner, TInt aMode) : - TAknFepInputStateInitialChineseGenericHalfQwerty(aOwner, aMode) - { - iState = EInitial; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - ptiengine->SetInputMode(EPtiEngineZhuyinPhraseHalfQwerty); - ptiengine->SetKeyboardType(iOwner->FepMan()->KeyboardLayout()); - - } - -TBool TAknFepInputStateZhuyinFindHalfQwerty::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = EFalse; - - if (iData && (iData != aKey)) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - fepMan->ClearFlag( - CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - iOwner->CaseMan()->UpdateCase(ENullNaviEvent); - } - - iData = aKey; - - if (IsValidZhuyinKey(aKey) && CAknFepFnKeyManager::EFnKeyNone - == iOwner->FepMan()->FnKeyState() && aLength == EShortKeyPress ) - { - TPtrC text; - switch (aKey) - { - case EPtiKeyQwertyE: - aKey = EPtiKey1; - break; - case EPtiKeyQwertyT: - aKey = EPtiKey2; - break; - case EPtiKeyQwertyU: - aKey = EPtiKey3; - break; - case EPtiKeyQwertyD: - aKey = EPtiKey4; - break; - case EPtiKeyQwertyG: - aKey = EPtiKey5; - break; - case EPtiKeyQwertyJ: - aKey = EPtiKey6; - break; - case EPtiKeyQwertyC: - aKey = EPtiKey7; - break; - case EPtiKeyQwertyB: - aKey = EPtiKey8; - break; - case EPtiKeyQwertyM: - aKey = EPtiKey9; - break; - case EPtiKeyQwertySpace: - aKey = EPtiKey0; - break; - default: - break; - } - ptiengine->SetCase(EPtiCaseLower); - ptiengine->SetInputMode(EPtiEngineZhuyinPhraseHalfQwerty); - text.Set(ptiengine->AppendKeyPress((TPtiKey)aKey)); - if (text.Length()) - { - fepMan->StartInlineEditL(); - fepMan->UpdateInlineEditL(text,0); - fepMan->CommitInlineEditL(); - ret = ETrue; - } - } - else if ( IsValidZhuyinKey(aKey) && aLength == ELongKeyPress) - { - TPtrC text; - TBuf<5> allFnMappedCharacters; - ptiengine->MappingDataForKey((TPtiKey)aKey, allFnMappedCharacters, EPtiCaseFnLower); - text.Set(allFnMappedCharacters); - if (text.Length()) - { - TBuf<1> chr; - chr.Append( text[0] ); - fepMan->RemovePreviousCharacterL(); - fepMan->NewCharacterL(chr); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - iData = 0; - } - ret = ETrue; - } - else if (IsValidZhuyinKey(aKey) && aLength == ELongKeyPress - && CAknFepFnKeyManager::EFnKeyLock - != iOwner->FepMan()->FnKeyState()) - { - ret = EFalse; - } - else if (fepMan->EditorHasFreeSpace()) - { - TPtiTextCase caseMode = ptiengine->Case(); - if (ptiengine->InputMode() != EPtiEngineHalfQwerty) - { - ptiengine->ClearCurrentWord(); - ptiengine->SetInputMode(EPtiEngineHalfQwerty); - } - ptiengine->SetCase(caseMode); - - ret = TAknFepInputStateInitialChineseGenericHalfQwerty::HandleKeyL( - aKey, aLength); - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateZhuyinFindHalfQwerty::KeyTimerExpired -// -// Functions from MPtiObserver interface -// --------------------------------------------------------------------------- -// -void TAknFepInputStateZhuyinFindHalfQwerty::KeyTimerExpired() - { - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->EditorHasFreeSpace()) - { - TRAP_IGNORE(fepMan->CommitInlineEditL()) - } - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - - fepMan->ClearFlag( - CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - CAknFepFnKeyManager::TFnKeyState fnKeyState = fepMan->FnKeyState(); - if ( !fepMan->IsFlagSet(CAknFepManager::EFlagLongShiftKeyPress) ) - { - if (fnKeyState == CAknFepFnKeyManager::EFnKeyNext) - fepMan->SetFnKeyState(CAknFepFnKeyManager::EFnKeyNone); - } - } - } - -TBool TAknFepInputStateZhuyinFindHalfQwerty::IsValidZhuyinKey(TInt aKey) - { - if (aKey == EPtiKeyQwertyE|| aKey == EPtiKeyQwertyT|| aKey - == EPtiKeyQwertyU|| aKey == EPtiKeyQwertyD|| aKey - == EPtiKeyQwertyG|| aKey == EPtiKeyQwertyJ|| aKey - == EPtiKeyQwertyC|| aKey == EPtiKeyQwertyB|| aKey - == EPtiKeyQwertyM|| aKey == EPtiKeyQwertySpace) - { - return ETrue; - } - else - { - return EFalse; - } - - } -#endif //__HALF_QWERTY_KEYPAD - -#endif //RD_INTELLIGENT_TEXT_INPUT -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiInputstateInitialStrokeFind.cpp --- a/fep/aknfep/src/AknFepUiInputstateInitialStrokeFind.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateInitialStrokeFind methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUiInputStateInitialStrokeFind.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManagerUIInterface.h" - -#include -#include -#include //keys - -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" - -TAknFepInputStateInitialStrokeFind::TAknFepInputStateInitialStrokeFind( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - iState = EInitial; - iOwner->PtiEngine()->SetInputMode(EPtiEngineStroke); - } - -TBool TAknFepInputStateInitialStrokeFind::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = ETrue; - - if (aKey == EKeyBackspace || aKey == EKeyOK) - { - ret = EFalse; - } - - else if (aLength == EShortKeyPress) - { - if (aKey == EPtiKeyStar) - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - return ret; - } - else if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else if (iOwner->IsValidChineseInputKey(aKey)) - { - ptiengine->AppendKeyPress((TPtiKey)aKey); - TPtrC text = ptiengine->GetPhoneticSpelling(1); - - if(text.Length()) - { - fepMan->NewCharacterL(text); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - else - { - ret = EFalse; - } - } - } - else - { - if (aKey == EPtiKeyStar) - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - } - return ret; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiManagerBase.cpp --- a/fep/aknfep/src/AknFepUiManagerBase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1020 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIManagerBase methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include -#include // RDebug stuff... - -#include "AknFepGlobalEnums.h" -#include "AknFepUiManagerBase.h" - -// Western input -#include "AknFepUiInputStateInitialLatinMultitap.h" -#include "AknFepUiInputStateInitialNumber.h" -#include "AknFepUiInputStateInitialWesternPredictive.h" -#include "AknFepUiInputStateEntryWesternPredictive.h" - -#include "AknFepCaseManager.h" -#include "AknFepPanic.h" - -#include -#include // CAknIndicatorContainer::TIndicatorContext -#include -#include - -// CONSTANTS -const TInt KNumberOfKeymapResources = 8; -const TInt KNumericKeymapResourceIds[KNumberOfKeymapResources] = - { - R_AKNFEP_NUMBER_MODE_KEYMAP_STANDARD, - R_AKNFEP_NUMBER_MODE_KEYMAP_PLAIN, - R_AKNFEP_NUMBER_MODE_KEYMAP_CALCULATOR, - R_AKNFEP_NUMBER_MODE_KEYMAP_CONVERTER, - R_AKNFEP_NUMBER_MODE_KEYMAP_TO_FIELD, - R_AKNFEP_NUMBER_MODE_KEYMAP_FIXED_DIALLING, - R_AKNFEP_NUMBER_MODE_KEYMAP_SAT, - R_AKNFEP_NUMBER_MODE_KEYMAP_SAT_HIDDEN - }; - -#define EAknEditorNativeKeysNumberModeKeymap EAknEditorReservedInternalUseKeymap - -/** -* CAknFepUIManagerBase class. -* -*/ - -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::NewL -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerBase* CAknFepUIManagerBase::NewL(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan, TLanguage aLanguage) - { - CAknFepUIManagerBase* self = new(ELeave)CAknFepUIManagerBase(aFepMan, aCaseMan); - CleanupStack::PushL(self); - self->ConstructL(aLanguage); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::~CAknFepUIManagerBase -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerBase::~CAknFepUIManagerBase() - { - CloseUI(); - delete iNumericKeymapBuffer; - } - -/** - * MAknFepManagerInterface class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SetMode -// -// -// --------------------------------------------------------------------------- -// -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CAknFepUIManagerBase::SetMode(TInt aMode, - TBool aPredictive, - TBool aQwertyInputMode, - TInt aKeyboardType) -#else -void CAknFepUIManagerBase::SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode) -#endif - { - iMode=aMode; - iPredictive = aPredictive; -#ifdef RD_INTELLIGENT_TEXT_INPUT - iQwertyInputMode = aQwertyInputMode; // predictive QWERTY changes (e.g. XT9) -#endif //RD_INTELLIGENT_TEXT_INPUT - if (aQwertyInputMode -#ifdef RD_INTELLIGENT_TEXT_INPUT - && !aPredictive // predictive QWERTY changes (e.g. XT9): added second condition -#endif //RD_INTELLIGENT_TEXT_INPUT - ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (aKeyboardType == EPtiKeyboardHalfQwerty) - { - ChangeState(EHalfQwerty); - } - else - { -#endif - ChangeState(EQwerty); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - else - { - ChangeState(EInitial); - } - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SetCase -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::SetCase(TCase aCase) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - TPtiTextCase newCase = EPtiCaseLower; - - TBool noResetCase = EFalse; - - switch( aCase ) - { - case EUpperCase: - { - newCase = EPtiCaseUpper; - } - break; - case ELowerCase: - { - newCase = EPtiCaseLower; - } - break; - case EFnKeyLowerCase: - { - newCase = EPtiCaseFnLower; - } - break; - - case EFnKeyUpperCase: - { - newCase = EPtiCaseFnUpper; - noResetCase = ETrue; - } - break; - - default: - break; - } - - CAknFepFnKeyManager::TFnKeyState fnKeyState = iFepMan->FnKeyState(); -#ifdef __REVERSE_FN_KEY_SUPPORTED - // For Reverse Fn key mapping - if(!iFepMan->IsReverseFnkeyInput()) - { -#endif //__REVERSE_FN_KEY_SUPPORTED - switch (fnKeyState) - { - case CAknFepFnKeyManager::EFnKeyLock: - case CAknFepFnKeyManager::EFnKeyForced: - case CAknFepFnKeyManager::EFnKeyDown: - if( !noResetCase ) - newCase = EPtiCaseFnLower; - break; - case CAknFepFnKeyManager::EFnKeyNone: - case CAknFepFnKeyManager::EFnKeyPressed: - case CAknFepFnKeyManager::EFnKeyNext: - case CAknFepFnKeyManager::EFnKeyPressedAgain: - default: - break; - } -#ifdef __REVERSE_FN_KEY_SUPPORTED - } -#endif //__REVERSE_FN_KEY_SUPPORTED - PtiEngine()->SetCase( newCase ); -#else - PtiEngine()->SetCase((aCase == EUpperCase)? EPtiCaseUpper : EPtiCaseLower); -#endif - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SetNumberModeKeyMappingL -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::SetNumberModeKeyMappingL( - TAknEditorNumericKeymap aAknEditorNumericKeymap) - { - __ASSERT_DEBUG( - (aAknEditorNumericKeymap >= 0 && aAknEditorNumericKeymap < KNumberOfKeymapResources) || - (aAknEditorNumericKeymap == EAknEditorAlphanumericNumberModeKeymap) || - (aAknEditorNumericKeymap == EAknEditorNativeKeysNumberModeKeymap), - AknFepPanic(EAknFepPanicIllegalNumberModeKeymapping)); - -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (aAknEditorNumericKeymap == EAknEditorAlphanumericNumberModeKeymap && iNumericKeymapBuffer) - { - delete iNumericKeymapBuffer; - iNumericKeymapBuffer = NULL; - return; - } -#endif - - // Fep does not handle keys when EAknEditorNativeKeysNumberModeKeymap is used. - if (aAknEditorNumericKeymap != EAknEditorNativeKeysNumberModeKeymap && - aAknEditorNumericKeymap != EAknEditorAlphanumericNumberModeKeymap) - { - TInt keymapResourceId = KNumericKeymapResourceIds[aAknEditorNumericKeymap]; - if (iNumericKeymapResourceId != keymapResourceId || !iNumericKeymapBuffer) - { - delete iNumericKeymapBuffer; - iNumericKeymapBuffer = NULL; - iNumericKeymapBuffer = CCoeEnv::Static()->AllocReadResourceL( keymapResourceId ); - iNumericKeymapResourceId = keymapResourceId; - } - } - } - -const TDesC& CAknFepUIManagerBase::NumberModeKeyMapping() const - { - if (iNumericKeymapBuffer) - { - return *iNumericKeymapBuffer; - } - return KNullDesC; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::HandleKeyL -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerBase::HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode /*aEventCode*/) - { - if (!iStatePtr) - { - return EFalse; - } - - TUIState currentState = iStatePtr->State(); - if (aLength == EShortKeyPress) - { - iInitialFepUIState = currentState; - } -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Calculate and store the number of characters now and the delta with - // the last key press to be used when long press substitutes the initial - // character. - - // This change is done for fixing the error :- Long keypress - // inputs the alphabet as well along with number/special character - // when candidate list is open. - - TInt curInputSeqLen = 0; - TInt curEditorTextLen = 0; - TInt curWordLen = 0; - if (aLength == EShortKeyPress) - { - curInputSeqLen = PtiEngine()->CurrentInputSequence().Length(); - curWordLen = PtiEngine()->CurrentWord().Length(); - curEditorTextLen = FepMan()->DocumentLength(); - iCaseBeforeLongKey = CaseMan()->CurrentCase(); - } - - if ( aLength == ELongKeyPress ) - { - if ( HandleLongKeyL( aKey ) ) - { - return ETrue; - } - } - - TInt retVal = ETrue; - TBool handledKey = iStatePtr->HandleKeyL(aKey, aLength); - if(!handledKey) - { - if(currentState != iStatePtr->State()) //Check to see if we've changed state. - { - retVal = iStatePtr->HandleKeyL(aKey, aLength); - } - else - { - retVal = EFalse; // we've failed to handle it.. - } - } - - // The delta is calculated after the short key press character is entered. - // The check with EStdKeyF21 is done to fix the bug : - // When prediction is off, keep shift key pressed down. - // Just before the editor enters the selection mode, - // do a long press of a number key. Along with the number - // even the alphabet is entered. - if (aLength == EShortKeyPress && (handledKey || retVal) && (aKey!=EStdKeyF21)) - { - // for the punctuation key, the autocompletion part is accepted, - // because of which the delta has to be calculated - // based on the current word length - if( aKey == EStdKeyFullStop && EPtiKeyboardHalfQwerty == FepMan()->KeyboardLayout()) - { - iInputSeqLenDeltaWithLastKey = PtiEngine()->CurrentWord().Length() - curWordLen; - } - else - { - iInputSeqLenDeltaWithLastKey = PtiEngine()->CurrentInputSequence().Length() - curInputSeqLen; - } - iEditorTextLenDeltaWithLastKey = FepMan()->DocumentLength() - curEditorTextLen; - // This change is done to fix the bug : Select the text - // using shift key. Do a long press of a key. Along - // with the number even the alphabet is entered. - if(iEditorTextLenDeltaWithLastKey <= 0) - { - iEditorTextLenDeltaWithLastKey = iStatePtr->GetShortKeyPressTxtLength(); - } - } - - else if ( aLength == EShortKeyPress && - EPtiKeyboardHalfQwerty == FepMan()->KeyboardLayout() && - EFalse == retVal && PtiEngine()->IsValidKey((TPtiKey)aKey)) - { - // reset the two deltas - iInputSeqLenDeltaWithLastKey = 0; - iEditorTextLenDeltaWithLastKey = 0; - } - - return retVal; -#endif // RD_INTELLIGENT_TEXT_INPUT -#else - - if(!iStatePtr->HandleKeyL(aKey, aLength)) - { - if(currentState != iStatePtr->State()) //Check to see if we've changed state. - { - return iStatePtr->HandleKeyL(aKey, aLength); - } - return EFalse; // we've failed to handle it.. - } - return ETrue; //we're ok. -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::HandleCommandL -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::HandleCommandL(TInt aCommandId) - { - iStatePtr->HandleCommandL(aCommandId); - } - -void CAknFepUIManagerBase::HandleCommandL(TInt aCommandId, TInt /*aParam*/) - { - iStatePtr->HandleCommandL(aCommandId); - } -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::CloseUI -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::CloseUI() - { - ChangeState(EInitial); - } - - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::ExpireMultitapTimer -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::ExpireMultitapTimer() - { - PtiEngine()->CancelTimerActivity(); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::IsValidNumericLongKeyPress -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerBase::IsValidNumericLongKeyPress(TInt aKey) const - { - TBool response = EFalse; - - switch(aKey) - { - case EPtiKey0: - case EPtiKey1: - case EPtiKey2: - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - if (iInitialFepUIState == EInitial || - iInitialFepUIState == EPredictiveCandidate) - { - response = ETrue; - } - break; - default: - break; - } - return response; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::AddTextToUserDictionaryL -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::AddTextToUserDictionaryL(const TDesC& /*aText*/) - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::GetFormatOfFepInlineText -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::GetFormatOfFepInlineText(TCharFormat& /*aFormat*/, TInt& /*aNumberOfCharactersWithSameFormat*/, TInt /*aPositionOfCharacter*/) const - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SupportLanguage -// -// -// --------------------------------------------------------------------------- -// -TInt CAknFepUIManagerBase::SupportLanguage(TInt /*aMode*/) const - { - return iLanguage; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SetInputLanguageL -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::SetInputLanguageL(TLanguage aLanguage) - { - iLanguage = aLanguage; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::IsValidShiftKeyPress -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerBase::IsValidShiftKeyPress() const - { - return ETrue; - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -TBool CAknFepUIManagerBase::IsValidFnKeyPress() const - { - return ETrue; - } - - -TBool CAknFepUIManagerBase::IsValidLongChrKeyPress() const - { - return ETrue; - } - -#endif -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SetEditorContext -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::SetEditorContext(TInt /*aContext*/) - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::ActivateUI -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::ActivateUI() - { - } - -/** - * MAknFepUIManagerStateInterface class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::State -// -// -// --------------------------------------------------------------------------- -// -TUIState CAknFepUIManagerBase::State() const - { - return iStatePtr->State(); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::ChangeState -// -// -// --------------------------------------------------------------------------- -// -TUIState CAknFepUIManagerBase::ChangeState(TUIState aState) - { -// iFepUiState = TAknFepInputStateBase(this); -#ifdef _DEBUG - RDebug::Print(_L("UI Manager: New State: %d"), iStatePtr->State()); -#endif - return aState; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::FepMan -// -// -// --------------------------------------------------------------------------- -// -MAknFepManagerUIInterface* CAknFepUIManagerBase::FepMan() const - { - return iFepMan; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::PtiEngine -// -// -// --------------------------------------------------------------------------- -// -CPtiEngine* CAknFepUIManagerBase::PtiEngine() const - { - return iPtiEngine; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::IsValidChineseInputKey -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerBase::IsValidChineseInputKey(TInt /*aKey*/) const - { - return ETrue; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::IsValidChineseInputKeyQwerty -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerBase::IsValidChineseInputKeyQwerty(TInt /*aKey*/) const - { - return ETrue; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::UpdateCangJieState -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::UpdateCangJieState() - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::IsValidChineseSymbol -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerBase::IsValidChineseSymbol(TInt /*akey*/) const - { - return ETrue; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::IsQwertyZhuyinToneMarkKey -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerBase::IsQwertyZhuyinToneMarkKey(TInt /*aKey*/) const - { - return ETrue; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::GetLanguage -// -// -// --------------------------------------------------------------------------- -// -TLanguage CAknFepUIManagerBase::GetLanguage() const - { - return iLanguage; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::CaseMan -// -// -// --------------------------------------------------------------------------- -// -CAknFepCaseManager* CAknFepUIManagerBase::CaseMan() const - { - return iCaseMan; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::GetLatestDeliberateSelection -// -// -// --------------------------------------------------------------------------- -// -TPtr CAknFepUIManagerBase::GetLatestDeliberateSelection() const - { - return TPtr(NULL, 0, 0); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::ThaiSCTResourceId -// -// -// --------------------------------------------------------------------------- -// -TInt CAknFepUIManagerBase::ThaiSCTResourceId(TUint /*aPrewChar*/,TInt /*aKey*/) - { - return 0; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::CandidateArray -// -// -// --------------------------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUIManagerBase::CandidateArray() - { - return NULL; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::IsPredictive -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerBase::IsPredictive() const - { - return EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SetInlineEditUnderlineVisibility -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::SetInlineEditUnderlineVisibility(TBool /*aFlag*/) - { - } - -/** - * CAknFepUIManagerBase class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::CAknFepUIManagerBase -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerBase::CAknFepUIManagerBase(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan) - :iMode(ENumber), - iFepMan(aFepMan), - iCaseMan(aCaseMan) - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::ConstructL -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::ConstructL(TLanguage aLanguage) - { - iPtiEngine = iFepMan->PtiEngine(); // Get PtiEngine - iLanguage = aLanguage; - iStatePtr = FepUIState(); - SetNumberModeKeyMappingL(EAknEditorStandardNumberModeKeymap); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::FepUIState -// -// -// --------------------------------------------------------------------------- -// -TAknFepInputStateBase* CAknFepUIManagerBase::FepUIState() - { - return NULL; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::IsQwerty -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerBase::IsQwerty() const - { - return EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SetFepAwareEditorText -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::SetFepAwareEditorText(const TFepInputContextFieldData& /*aIcfData*/) - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::EditorMaxLength -// -// -// --------------------------------------------------------------------------- -// -TInt CAknFepUIManagerBase::EditorMaxLength() - { - return 0; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SizeChanged -// -// -// --------------------------------------------------------------------------- -// -const TInt KResourceChanged = 1; -void CAknFepUIManagerBase::ResourceChanged(TInt /*aType*/) - { - if ( !iStatePtr ) - { - return; - } - - TRAP_IGNORE(iStatePtr->HandleCommandL(KResourceChanged)); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SetNextFepUI -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::SetNextFepUI(MAknFepManagerInterface* /*aNextUi*/) - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SetStarKeyFlag -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerBase::SetStarKeyFlag( TBool aSet ) - { - if ( iStatePtr ) - { - iStatePtr->SetStarKeyFlag( aSet ); - } - } -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::HandleLongKeyL -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerBase::HandleLongKeyL( TInt aKey ) - { -#ifdef _DEBUG - RDebug::Print( _L("HandleLongKeyL(%c)"), aKey ); -#endif - - TBool consume = EFalse; - - if ( iQwertyInputMode && // Long press implementation for non-QWERTY modes is elsewhere - iFepMan->LongPressNumberEntryOnQwerty() && // Is long press number entry supported - iFepMan->FnKeyState() == CAknFepFnKeyManager::EFnKeyNone && // Long press is handled differently only in non-Fn modes - iFepMan->KeyMapsDifferentCharacterWithFn( (TPtiKey)aKey ) ) // Does the given key have a different character in Fn mode - { - TBool charRemoved = RollbackPreviousCharL(); - - // Continue only if there's space left in the editor field after the rollback. - // In case of secret editor, the removal of the initial character is asynchronous. - // In that case the editor may still seem to be filled up although we have already - // queued the rollback event. - if ( iFepMan->EditorHasFreeSpace() || charRemoved ) - { - // Long key press load, if editor in textcase mode reload the - // text case mode, because shrot key press reset textcase mode. - CaseMan()->SetCurrentCase(iCaseBeforeLongKey); - - iFepMan->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNext ); - - // Figure out the used case (upper/lower) - TPtiTextCase ptiCase = EPtiCaseFnLower; - - if ( CaseMan()->CurrentCase() == EAknEditorTextCase || - CaseMan()->CurrentCase() == EAknEditorUpperCase ) - { - ptiCase = EPtiCaseFnUpper; - } - - if ( iFepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) && - CaseMan()->IsAbleChangeCase() ) - { - // QWERTY shift mode => swap the case - if ( ptiCase == EPtiCaseFnLower ) - ptiCase = EPtiCaseFnUpper; - else - ptiCase = EPtiCaseFnLower; - } - - // In case we are in uppercase mode but there's no characters mapped to that mode, - // use the lower case instead. - if ( ptiCase == EPtiCaseFnUpper ) - { - TBuf<1> upperFnMapping; - iPtiEngine->MappingDataForKey( (TPtiKey)aKey, upperFnMapping, EPtiCaseFnUpper ); - if ( !upperFnMapping.Length() ) - { - ptiCase = EPtiCaseFnLower; - } - } - - iPtiEngine->SetCase( ptiCase ); - } - else - { - consume = ETrue; - } - } - return consume; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::RollbackPreviousCharL -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerBase::RollbackPreviousCharL() - { - TBool characterRemoved = ETrue; - - if( iFepMan->KeyboardLayout() == EPtiKeyboardHalfQwerty ) - { - if (iFepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - iFepMan->TryRemoveNoMatchesIndicatorL(); - iFepMan->UpdateCbaL(NULL); - // make sure that the candidates - // will be updated the next time - iPtiEngine->HandleCommandL(EPtiCommandSetFlagToUpdateCandidates); - // Need to return as DeleteKeyPress should not be passed to ptiengine. - // This is because ptiengine does not maintain the input sequence - // if the key press does not increase the word length. So when no matches - // character is (?) is deleted, no need to pass to ptiengine. This is to done - // to solve the bug :enter characters till the no matches character is shown. Now press - // backspace, last character is not deleted. - return ETrue; - } - } - - // It depends on the editor type and input mode, how the previous character - // can be rolled back. - if ( iPtiEngine->HandleCommandL(EPtiCommandDeadKeyWaiting) > 0 ) - { - // The previous key entered a dead character - iPtiEngine->HandleCommandL(EPtiCommandGetAndClearDeadKeyRootChar); - } - else if ( iInputSeqLenDeltaWithLastKey > 0 ) - { - // The previous key entered chracter(s) to input sequence of PtiEngine - for ( TInt i=0 ; iDeleteKeyPress(); - } - if ( iFepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) ) - { - TPtrC curWord = iPtiEngine->CurrentWord(); - iFepMan->UpdateInlineEditL( curWord, curWord.Length() ); - } - if ( iFepMan->IsSupportsSecretText() ) - { - // Fep communicates with secret text editors using simulated events. - iFepMan->SimulateKeyEventL(EKeyF20); - iFepMan->ClearFlag( CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - } - - } - else if ( iEditorTextLenDeltaWithLastKey > 0 ) - { - // The previous key entered character(s) directly to the editor - for ( TInt i=0 ; iIsSupportsSecretText() ) - { - // Fep communicates with secret text editors using simulated events. - iFepMan->SimulateKeyEventL(EKeyF20); - iFepMan->ClearFlag(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction); - } - else - { - // In normal editors, the character can be removed directly - iFepMan->RemovePreviousCharacterL(); - } - } - } - else - { - // The previous key press produced no characters => do nothing - characterRemoved = EFalse; - } - - return characterRemoved; - } -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - -// add for phrase creation -MZhuyinKeyHandler* CAknFepUIManagerBase::ZhuyinKeyHandler() - { - return iFepMan->ZhuyinKeyHandler(); - } -//add for phrase creation -CAknFepZhuyinAnalyser* CAknFepUIManagerBase::ZhuyinAnalyser() - { - return iFepMan->ZhuyinAnalyser(); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiManagerChinese.cpp --- a/fep/aknfep/src/AknFepUiManagerChinese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1744 +0,0 @@ -/* -* Copyright (c) 2003-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIManagerChinese methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include // RDebug stuff... -#include - -#include "AknFepUiManagerBase.h" -#include "AknFepUiManagerChinese.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepGlobalEnums.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" -#include "AknFepUiInputStateCandidate.h" -#include "AknFepUiInputStateCandidateChinese.h" -#include "AknFepUiInputStatePredictiveCandidate.h" -#include "AknFepUiInputStatePredictiveInput.h" -#include "AknFepUiInputStatePredictiveInputChinese.h" -#include "AknFepUiInputStateInitialChineseGeneric.h" -#include "AknFepUiInputStateInitialLatinMultitap.h" -#include "AknFepUiInputStateInitialNumber.h" -#include "AknFepUiInputStateEntryPinyin.h" -#include "AknFepUiInputStateEntryZhuyin.h" -#include "AknFepUiInputStateInitialZhuyinFind.h" -#include "AknFepUiInputStateInitialStrokeFind.h" -#include "AknFepUiInputStateEntryStroke.h" -#include "AknFepUiInputStateInitialWesternPredictive.h" -#include "AknFepUiInputStateEntryWesternPredictive.h" -#include "AknFepUiInputStatePredictiveCandidatePinyin.h" -#include "AknFepUiInputStatePredictiveCandidateStroke.h" -#include "AknFepCaseManager.h" -#include "AknFepPanic.h" - -#include "AknFepUiCtrlContainerChinese.h" // phrase input container -#include "AknFepUiInputStateEntryPinyinPhrase.h" // phrase pinyin entry state class -#include "aknfepuiinputstateentrypinyinphrasecreation.h" // pinyin phrase creation -#include "aknfepinputstatespellingpinyinphrasecreation.h" // pinyin phrase creation -#include "aknfepinputstatecandidatepinyinphrasecreation.h" // pinyin phrase creation -#include "aknfepuiinputstateentryzhuyinphrasecreation.h" // zhuyin phrase creation -#include "AknFepUiInputStateEntryZhuyinPhrase.h" // phrase zhuyin entry state class -#include "AknFepUiInputStateEntryStrokePhrase.h" // phrase Stroke entry state class -#include "AknFepUiInputStateCandidateChinesePhrase.h" // phrase candidate state class -#include "aknfepuictrleditpane.h" //phrase EEP control -#include "AknFepUiInputStateCandidatePinyinAndStrokePhrase.h" -#include "AknFepUiInputStatePredictiveInputPhrase.h" -#include "AknFepUiInputStatePredictiveInputChinesePhrase.h" -// Qwerty input -#include "AknFepUiInputStateInitialChineseGenericQwerty.h" -#include "AknFepUiInputStateEntryQwertyPinyin.h" -#include "AknFepUiInputStateEntryQwertyStroke.h" -#include "AknFepUiInputStateEntryQwertyCangJie.h" -#include "AknFepUiInputStateEntryQwertyZhuyin.h" -#include "AknFepUiInputStateCandidateQwertyZhuyin.h" -#include "AknFepUiInputStatePredictiveCandidateQwertyZhuyin.h" -#include "AknFepUiInputStatePredictiveInputQwerty.h" -#include "AknFepUiInputStatePredictiveInputQwertyPinyin.h" -#include "AknFepUiInputStatePredictiveInputQwertyZhuyin.h" -#include "AknFepUiInputStatePredictiveCandidatePinyinPhrase.h" -#include "AknFepUiInputStatePredictiveCandidateStrokePhrase.h" -#include "AknFepUiInputStatePredictiveCandidatePhrase.h" -#include "AknFepUiInputStatePredictiveInputQwertyStroke.h" -// Qwerty phrase input -#include "AknFepUiInputStateEntryQwertyStrokePhrase.h" -#include "AknFepUiInputStateEntryQwertyPinyinPhrase.h" -#include "AknFepUiInputStatePredictiveInputQwertyChinesePhrase.h" -#include "AknFepUiInputStatePredictiveInputQwertyPinyinPhrase.h" -#include "AknFepUiInputStateEntryQwertyZhuyinPhrase.h" -#include "AknFepUiInputStateCandidateQwertyZhuyinPhrase.h" -#include "AknFepUiInputStatePredictiveCandidateQwertyZhuyinPhrase.h" -#include "AknFepUiInputStatePredictiveInputQwertyZhuyinPhrase.h" -#include "AknFepUiInputStatePredictiveInputQwertyStrokePhrase.h" -#ifdef RD_INTELLIGENT_TEXT_INPUT -#include "AknFepUIInputStateEntryMiniQwertyPinyinPhrase.h" -#include "AknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase.h" -#include "AknFepUiInputStatePredictiveInputMiniQwertyChinesePhrase.h" -#include "AknFepUiInputStatePredictiveCandidateMiniQwertyChinesePhrase.h" -#include "AknFepUiInputStateEntryMiniQwertyZhuyinPhrase.h" -#include "AknFepUiInputStateCandidateMiniQwertyZhuyinPhrase.h" -#include "aknfepuiinputstateminiqwertyzhuyinphrase.h"//phrase creation for mini qwerty zhuyin -#include "aknfepuiinputstateminiqwertystrokephrase.h" -#include "AknFepUIInputStateEntryMiniQwertyCangJie.h" -#include "aknfepuiinputstateentryhalfqwertyphrase.h" -#include "AknFepUiInputStateCandidateHalfQwertyChinesePhrase.h" -#include "AknFepUiInputStateInitialChineseGenericHalfQwerty.h" -#include "AknFepUiInputStatePredictiveCandidateHalfQwertyChinesePhrase.h" -#endif -// Qwerty Chinese find -#include "AknFepUiInputStatelStrokeFindQwerty.h" -#include "AknFepUiInputStateZhuyinFindQwerty.h" -#include - -#include -#include - -#include //phrase creation -#include - -// CONSTANTS -const TInt16 KStrokeHorizontalValue = 0x4e00; -const TInt16 KStrokeVerticalValue = 0x4e28; -const TInt16 KStrokeDownToLeftValue = 0x4e3f; -const TInt16 KStrokeDownToRightValue = 0x4e36; -const TInt16 KStrokeBendingValue = 0x4e5b; -const TInt16 KStrokeQuestionValue = 0x003f; -const TInt16 KStrokeUnicode = 0x2461; -const TInt16 KZhuyinIndicator = 0x2462; -/** -* CAknFepUIManagerChinese class. -* -*/ - -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::NewL -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerChinese* CAknFepUIManagerChinese::NewL(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan, TLanguage aLanguage) - { - CAknFepUIManagerChinese* self = new(ELeave)CAknFepUIManagerChinese(aFepMan, aCaseMan); - CleanupStack::PushL(self); - self->ConstructL(aLanguage); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::~CAknFepUIManagerChinese -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerChinese::~CAknFepUIManagerChinese() - { - delete iContainerPane; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::HandleKeyL -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerChinese::HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode aEventCode) - { -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - // In the initial state, use the base implementation which support long - // press number entry on QWERTY. In other states the long press is not - // handled. - if ( (aLength == EShortKeyPress && iFepUiState.State() == EInitial) || - (aLength == ELongKeyPress && iInitialFepUIState == EInitial) ) - { - return CAknFepUIManagerBase::HandleKeyL( aKey, aLength ); - } - else if ( iFepMan->EditorHasFreeSpace() ) - { -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - TUIState currentState = iFepUiState.State(); - - //when the state is EEntry and input mode is pinyin or zhuyin and akey = starkey - //just handles EEventKey - if( EPtiKeyStar == aKey && currentState == EEntry - && ( iFepMan->InputMode() == EPinyin || iFepMan->InputMode() == EZhuyin ) - && aEventCode != EEventKey ) - { - return EFalse; - } - if (aLength == EShortKeyPress) - { - iInitialFepUIState = currentState; - } - - if(!iStatePtr->HandleKeyL(aKey, aLength)) - { - if(currentState != iStatePtr->State()) //Check to see if we've changed state. - { - return iStatePtr->HandleKeyL(aKey, aLength); - } - return EFalse; // we've failed to handle it.. - } - return ETrue; //we're ok. -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - } - else - { - // FepManager must let some long press events to pass here even when - // editor has no space, because long press may still work. But if - // the long press was not handled, then the key event should not be - // handled at all in this case. - return EFalse; - } -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::CloseUI -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerChinese::CloseUI() - { - // update cba - TRAP_IGNORE(FepMan()->UpdateCbaL(NULL)); - iContainerPane->EditPaneWindow()->SetCurrentCBAResID( 0 ); - - if (iQwertyMode) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardHalfQwerty == iPtiEngine->KeyboardType() ) - { - ChangeState(EHalfQwerty); - } - else -#endif - { - ChangeState(EQwerty); - } - } - else - { - ChangeState(EInitial); - } - if (iContainerPane) - { - iContainerPane->CandidatePane()->ResetCandidateState(); - iContainerPane->EditPaneWindow()->ResetAllArray(); - iContainerPane->Enable(EFalse); - } - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::GetFormatOfFepInlineText -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerChinese::GetFormatOfFepInlineText(TCharFormat& aFormat, - TInt& aNumberOfCharactersWithSameFormat, TInt aPositionOfCharacter) const - { - if (iPredictive && iFepUiState.State() == EEntry) // EInitial??? - { - aFormat.iFontPresentation.iUnderline = EUnderlineOn; - if (iFepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - aFormat.iFontPresentation.iHighlightStyle = - TFontPresentation::EFontHighlightNoMatchesIndicator; - } - TCursorSelection uncommit = iFepMan->UncommittedText(); - if (uncommit.Length()-aPositionOfCharacter>0) - { - aNumberOfCharactersWithSameFormat=uncommit.Length() - aPositionOfCharacter; - } - } - } - - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::SupportLanguage -// -// -// --------------------------------------------------------------------------- -// -TInt CAknFepUIManagerChinese::SupportLanguage(TInt aMode) const - { - TInt lang = iLanguage; - switch (aMode) - { - case ELatin: - { - lang = ELangEnglish; - } - break; - case ENumber: - case EPinyin: - case EStroke: - case ECangJie: - case EStrokeFind: - case EZhuyin: - case EZhuyinFind: - default: - break; - } - return lang; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::SetEditorContext -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerChinese::SetEditorContext(TInt aContext) - { - if(iContainerPane) - { - iContainerPane->SetIsShownWithPopupWindows( - aContext == CAknIndicatorContainer::EQueryEditorIndicators); - } - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::ChangeState -// -// -// --------------------------------------------------------------------------- -// -TUIState CAknFepUIManagerChinese::ChangeState(TUIState aState) - { - // ask pti engine if phrase input is supported - if(iPrevMode != iMode) - { - iPrevMode = iMode; - ResetFlags(); - } - if(!IsFlagSet(EQueryPtiEngineAlready)) - { - QueryPtiEngine(); - } - - // distinguish if Qwerty input in editing window state - if(aState == EQwerty) - { - iQwertyMode = ETrue; - } - else if(aState == EInitial) - { - iQwertyMode = EFalse; - } - - if(iQwertyMode) - { - ChangeStateQwerty(aState); - } - else - { - ChangeStatetItut(aState); - } - - iPtiEngine->SetObserver(&iFepUiState); -#ifdef _DEBUG - RDebug::Print(_L("UI Manager: New State: %d"), iFepUiState.State()); -#endif - // cba update: when input window exists, softkeys are not shown. - TRAPD(err, iStatePtr->InitializeStateL()); - if(err != KErrNone) - { -#ifdef _DEBUG - RDebug::Print(_L("UI Manager: Initial Error: Mode = %d, State = %d"), - iMode, iStatePtr->State()); -#endif - } - return iStatePtr->State(); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::IsValidChineseInputKey -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerChinese::IsValidChineseInputKey(TInt aKey) const - { - // This doesn't include checking for the 'tone' key, which is different... - - TBool response = ETrue; - switch(aKey) - { - case EPtiKey0: - if(((iMode == EPinyin) && (!IsFlagSet(ESupportPinyinPhrase) || - !iContainerPane->IsEnabled())) || - ((iMode == EStroke) && (!IsFlagSet(ESupportStrokePhrase) || - !iContainerPane->IsEnabled())) || (iMode == EStrokeFind)) - { - response = EFalse; - } - break; - case EPtiKey1: - if((iMode == EPinyin)&& (!IsFlagSet(ESupportPinyinPhrase) || !iContainerPane->IsEnabled())) - { - response = EFalse; - } - break; - case EPtiKey2: //fall through - case EPtiKey3: - case EPtiKey4: - case EPtiKey5: - case EPtiKey6: - break; //always valid - case EPtiKey7: //fall through - case EPtiKey8: - case EPtiKey9: - if((iMode == EStroke) || (iMode == EStrokeFind)) - response = EFalse; - break; - default: - response = EFalse; - break; - } - return response; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::IsKeyMappedStroke -// -// -// --------------------------------------------------------------------------- -// - -TBool CAknFepUIManagerChinese::IsKeyMappedStroke(TInt aKey) const - { - TBuf lowerdata; - iPtiEngine->MappingDataForKey((TPtiKey)aKey, lowerdata, EPtiCaseLower); - TInt StrokeUnicodePosition =0; - - if(lowerdata.Length()>0) - { - for(TInt i=0;i StrokeUnicodePosition) - { - if (lowerdata[StrokeUnicodePosition] == KStrokeHorizontalValue || - lowerdata[StrokeUnicodePosition] == KStrokeVerticalValue || - lowerdata[StrokeUnicodePosition] == KStrokeDownToLeftValue || - lowerdata[StrokeUnicodePosition] == KStrokeDownToRightValue || - lowerdata[StrokeUnicodePosition] == KStrokeBendingValue || - lowerdata[StrokeUnicodePosition] == KStrokeQuestionValue) - { - return ETrue; - } - } - - return EFalse; - } -#endif -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::IsValidChineseInputKeyQwerty -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerChinese::IsValidChineseInputKeyQwerty(TInt aKey) const - { - TBool response = EFalse; -#ifdef RD_INTELLIGENT_TEXT_INPUT - - TPtiKeyboardType keyboardType = EPtiKeyboardNone; - if( iPtiEngine != NULL ) - { - keyboardType = iPtiEngine->KeyboardType(); - } -#endif - - if(iMode == EPinyin) - { - if( (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - (aKey >= EPtiKeyQwerty1 && aKey <= EPtiKeyQwerty9) || - (IsFlagSet(ESupportPinyinPhrase) && aKey == EPtiKeyQwertyApostrophe - && State() != EInitial)) - { - response = ETrue; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( State() == EInitial && EPtiKeyboardHalfQwerty == keyboardType && - ( aKey == EPtiKeyQwertyU || aKey == EPtiKeyQwertyI || aKey == EPtiKeyQwerty3 )) - { - response = EFalse; - } -#endif - } - - if(iMode == EStroke || iMode == EStrokeFind) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(EPtiKeyboardQwerty4x10 == keyboardType ||EPtiKeyboardQwerty3x11 == keyboardType ) - { - if( IsKeyMappedStroke(aKey)|| EPtiKeyQwertySpace == aKey) - { - response = ETrue; - if(aKey == EPtiKeyQwertySpace && (State() == EInitial || State() ==EPredictiveInput)) - { - response = EFalse; - } - } - } - else if( EPtiKeyboardHalfQwerty == keyboardType || - EPtiKeyboardCustomQwerty == keyboardType) - { - MPtiLanguage *lang = NULL; - RArray < TPtiNumericKeyBinding > keybinding; - TBool IsStrokeKey = EFalse; - if(iPtiEngine) - { - lang = iPtiEngine->CurrentLanguage(); - } - if( iPtiEngine && lang ) - { - TRAP_IGNORE(iPtiEngine->GetNumericModeKeysForQwertyL( - lang->LanguageCode(), - keybinding, keyboardType)); - TInt numericKeysCount = keybinding.Count(); - while ( numericKeysCount-- ) - { - TPtiNumericKeyBinding numKeyBind = keybinding[numericKeysCount]; - if ( (numKeyBind.iChar >= 0x31 && numKeyBind.iChar <= 0x36)&&(aKey == numKeyBind.iKey)) - { - IsStrokeKey = ETrue; - break; - } - } - } - keybinding.Reset(); - if(IsStrokeKey || (aKey == EPtiKeyQwertySpace)) - { - if((aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty6) || - (aKey == EPtiKeyQwertySpace)) - { - response = ETrue; - if(aKey == EPtiKeyQwertySpace && - (State() == EInitial || State() ==EPredictiveInput)) - { - response = EFalse; - } - } - } - } - else - { -#endif - switch(aKey) - { - case EPtiKeyQwertyQ: - case EPtiKeyQwertyW: - case EPtiKeyQwertyE: - case EPtiKeyQwertyA: - case EPtiKeyQwertyS: - case EPtiKeyQwertyD: - case EPtiKeyQwertyI: - case EPtiKeyQwertyO: - case EPtiKeyQwertyP: - case EPtiKeyQwertyJ: - case EPtiKeyQwertyK: - case EPtiKeyQwertyL: - case EPtiKeyQwertySpace: - { - response = ETrue; - if(aKey == EPtiKeyQwertySpace && (State() == EInitial - || State() ==EPredictiveInput)) - { - response = EFalse; - } - } - break; - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - - if(iMode == ECangJie) - { - if (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) - { - response = ETrue; - } - } - - if(iMode == EZhuyin || iMode == EZhuyinFind) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(EPtiKeyboardQwerty4x10 == keyboardType || - EPtiKeyboardQwerty3x11 == keyboardType ) - { - TBuf lowerdata; - iPtiEngine->MappingDataForKey((TPtiKey)aKey, lowerdata, EPtiCaseLower); - // TInt ZhuyinUnicodeCur =0; - for(TInt i=0;i= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ)) - { - response = ETrue; - } - } - else if ( EPtiKeyboardHalfQwerty == keyboardType ) - { - if((aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - (aKey >= EPtiKey0 && aKey <= EPtiKey9) || - aKey == EPtiKeyQwertySpace ) - { - response = ETrue; - } - } - else - { -#endif - if((aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9)|| - (aKey == EPtiKeyQwertySemicolon) || - (aKey == EPtiKeyQwertyApostrophe) || - (aKey == EPtiKeyQwertyComma) || - (aKey == EPtiKeyQwertyFullstop) || - (aKey == EPtiKeyQwertySlash)) - { - response = ETrue; - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif -#ifdef RD_INTELLIGENT_TEXT_INPUT - - if( iPtiEngine != NULL && EPtiKeyboardQwerty4x12 == iPtiEngine->KeyboardType()) - { -#endif - if(iMode == EZhuyin && IsFlagSet(ESupportZhuyinPhrase) && aKey == EPtiKeyQwertyApostrophe) - { - response = ETrue; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - return response; - } - -TBool CAknFepUIManagerChinese::IsQwertyZhuyinToneMarkKey(TInt aKey) const - { - // only return ETrue when qwerty and zhuyin symbol input supported for corresponding key - TInt supportSCTToneMarks = EFalse; - MPtiCoreInfo* ptiCoreInfo = iPtiEngine->CoreInfo(EPtiEngineZhuyin); -#ifdef RD_INTELLIGENT_TEXT_INPUT - TPtiKeyboardType keyboardType = iPtiEngine->KeyboardType(); -#endif - - if(ptiCoreInfo) - { - supportSCTToneMarks = ptiCoreInfo->CapsBits() & ESupportSCTToneMarks; - } - - ptiCoreInfo = iPtiEngine->CoreInfo(EPtiEngineZhuyinByPhrase); - if(ptiCoreInfo) - { - supportSCTToneMarks = - supportSCTToneMarks || (ptiCoreInfo->CapsBits() & ESupportSCTToneMarks); - } - - if(iQwertyMode && (iMode == EZhuyin) && supportSCTToneMarks) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if( keyboardType == EPtiKeyboardQwerty4x12) - { -#endif - if(aKey == EPtiKeyQwerty3 || aKey == EPtiKeyQwerty4 || aKey == EPtiKeyQwerty6 || aKey == EPtiKeyQwerty7) - { - return ETrue; - } - else - { - return EFalse; - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } - else if( keyboardType == EPtiKeyboardQwerty4x10 || keyboardType == EPtiKeyboardQwerty3x11) - { - if(aKey == EPtiKeyQwertyE || aKey == EPtiKeyQwertyR || aKey == EPtiKeyQwertyY || aKey == EPtiKeyQwertyU) - { - return ETrue; - } - else - { - return EFalse; - } - } -#endif - } - else - { - return EFalse; - } - return EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::GetLatestDeliberateSelection -// -// -// --------------------------------------------------------------------------- -// -TPtr CAknFepUIManagerChinese::GetLatestDeliberateSelection() const - { - // need to cast around constness, as this is a const get but needs to call Des which isn't const - typedef TBufC pinyinBuffer; - pinyinBuffer* bufPtr = CONST_CAST(pinyinBuffer*, &iLatestDeliberateSelection); - return TPtr(bufPtr->Des()); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::FepUIState -// -// -// --------------------------------------------------------------------------- -// -TAknFepInputStateBase* CAknFepUIManagerChinese::FepUIState() - { - return &iFepUiState; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::UIContainer -// -// -// --------------------------------------------------------------------------- -// -MAknFepUICtrlContainerChinese* CAknFepUIManagerChinese::UIContainer() const - { - return iContainerPane; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::IsValidShiftKeyPress -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerChinese::IsValidShiftKeyPress() const - { - TUIState state = State(); - TInt mode = FepMan()->InputMode(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - TPtiKeyboardType kbdType = iFepMan->KeyboardLayout(); - if (EPtiKeyboardQwerty4x12 == kbdType) - { -#endif - if (mode == EPinyin || mode == EZhuyin || mode == EStroke || mode == ECangJie) - { - if (mode == EZhuyin && state == EPredictiveInput) - { - return EFalse; - } - if (mode == EZhuyin && state == EPredictiveCandidate) - { - return ETrue; - } - - if (state == EEntry || state == ECandidate || state == EPredictiveCandidate) - { - return EFalse; - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } - else if(EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardHalfQwerty == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - if (mode == EPinyin || mode == EZhuyin || mode == EStroke || mode == ECangJie) - { - if ( state == EEntry || state == ECandidate || /*state == EPredictiveCandidate ||*/ - state == EPredictiveInput || state == EMiniQwertyEdit || - state == EZhuyinSpelling || state == EZhuyinCandidate ) - { - return EFalse; - } - } - } -#endif - - return ETrue; - } - -#ifdef RD_INTELLIGENT_TEXT_INPUT -TBool CAknFepUIManagerChinese::IsValidFnKeyPress() const - { - TUIState uiState = State(); - TInt mode = FepMan()->InputMode(); - if (mode == EPinyin || mode == EZhuyin || mode == EStroke || mode == ECangJie) - { - //if (uiState == EPredictiveCandidate || uiState == ECandidate) - if (uiState == EEntry || - uiState == ECandidate || - uiState == EPredictiveCandidate || - uiState == EPredictiveInput || - uiState == EMiniQwertyEdit || uiState == EZhuyinSpelling || - uiState == EZhuyinCandidate ) - { - return EFalse; - } - } - - return ETrue; - } - -TBool CAknFepUIManagerChinese::IsValidLongChrKeyPress() const - { - TUIState state = State(); - TInt mode = FepMan()->InputMode(); - if ( mode == EPinyin || mode == EZhuyin || mode == EStroke ) - { - if ( state == EEntry || state == EPredictiveInput ) - { - return EFalse; - } - } - return ETrue; - } - -#endif - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::SetInputLanguageL -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerChinese::SetInputLanguageL(TLanguage aLanguage) - { - iLanguage = aLanguage; - CloseUI(); - } - - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::CAknFepUIManagerChinese -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerChinese::CAknFepUIManagerChinese(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan) - : CAknFepUIManagerBase(aFepMan, aCaseMan), - iFepUiState(NULL, NULL), - iPrevMode(ENumber), - iQwertyMode(ETrue) - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::ConstructL -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerChinese::ConstructL(TLanguage aLanguage) - { - CAknFepUIManagerBase::ConstructL(aLanguage); - iContainerPane = FepMan()->UiInterface()->NewAknFepUICtrlContainerChineseL(); - ResetFlags(); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::QueryPtiEngine -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerChinese::QueryPtiEngine(void) - { - MPtiLanguage* ptiLang = iPtiEngine->CurrentLanguage(); - - // query ptiengine - if(ptiLang) - { - SetFlag(EQueryPtiEngineAlready); - if(ptiLang->HasInputMode(EPtiEnginePinyinByPhrase)) - { - SetFlag(ESupportPinyinPhrase); - } - - if(ptiLang->HasInputMode(EPtiEngineZhuyinByPhrase)) - { - SetFlag(ESupportZhuyinPhrase); - } - - if (ptiLang->HasInputMode(EPtiEngineStrokeByPhrase)) - { - SetFlag(ESupportStrokePhrase); - } - } - } - -void CAknFepUIManagerChinese::ChangeStatetItut(TUIState aState) - { - switch(aState) - { - case EInitial: - { - switch(iMode) - { - case EPinyin: - case EZhuyin: - case EStroke: - case ECangJie: - iFepUiState = TAknFepInputStateInitialChineseGeneric(this, iContainerPane); - break; - case EZhuyinFind: - iFepUiState = TAknFepInputStateInitialZhuyinFind(this, iContainerPane); - break; - case EStrokeFind: - iFepUiState = TAknFepInputStateInitialStrokeFind(this, iContainerPane); - break; - case ELatin: - { - if (iPredictive) - { - iFepUiState = TAknFepInputStateInitialWesternPredictive(this); - } - else - { - iFepUiState = TAknFepInputStateInitialLatinMultitap(this); - } - } - break; - case ENumber: - { - // Map directly to the resources... - iFepUiState = TAknFepInputStateInitialNumber(this); - break; - } - default: - AknFepPanic(EAknFepPanicBadInputState); - } - break; - } - case EEntry: - { - switch(iMode) - { - case EPinyin: - if(IsFlagSet(ESupportPinyinPhrase)) - { - iFepUiState = TAknFepInputStateEntryPinyinPhrase(this,iContainerPane); - } - else - { - iFepUiState = TAknFepInputStateEntryPinyin(this,iContainerPane); - } - break; - case EZhuyin: - if(IsFlagSet(ESupportZhuyinPhrase)) - { - iFepUiState = TAknFepInputStateEntryZhuyinPhrase(this,iContainerPane); - } - else - { - iFepUiState = TAknFepInputStateEntryZhuyin(this,iContainerPane); - } - break; - case EStroke: - if (IsFlagSet(ESupportStrokePhrase)) - { - iFepUiState = TAknFepInputStateEntryStrokePhrase(this,iContainerPane); - } - else - { - iFepUiState = TAknFepInputStateEntryStroke(this,iContainerPane); - } - break; - case ELatin: - iFepUiState = TAknFepInputStateEntryWesternPredictive(this); - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - } - } - break; - case ECandidate: - { - // modify for phrase creation - FepMan()->EntryPhrase( ETrue ); - FepMan()->EnableKeyStar( EFalse ); - switch ( iMode ) - { - case EPinyin: - { - if ( IsFlagSet( ESupportPinyinPhrase ) ) - { - iFepUiState - = TAknFepUiInputStateCandidatePinyinAndStrokePhrase( - this, iContainerPane ); - } - } - break; - case EStroke: - { - if ( IsFlagSet( ESupportStrokePhrase ) ) - { - iFepUiState - = TAknFepInputStateCandidateStrokePhrase( - this, iContainerPane ); - } - } - break; - case EZhuyin: - { - if ( IsFlagSet( ESupportZhuyinPhrase ) ) - { - iFepUiState - = TAknFepInputStateCandidateChinesePhrase( this, - iContainerPane ); - } - } - break; - default: - { - iFepUiState = TAknFepInputStateCandidateChinese( this, - iContainerPane ); - } - } - } - break; - - case EPredictiveCandidate: - { - // add for phrase creation - FepMan()->PhraseCreation( EFalse ); - FepMan()->PinyinPhraseCreation( EFalse ); - FepMan()->EntryPhrase( ETrue ); - FepMan()->EnableKeyStar( ETrue ); - TRAP_IGNORE( FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ) ); - iContainerPane->PinyinPopupWindow()->ResetStrokeArray(); - switch(iMode) - { - case EPinyin: - if(IsFlagSet(ESupportPinyinPhrase)) - { - iFepUiState = TAknFepInputStatePredictiveCandidatePinyinPhrase( - this,iContainerPane); - } - else - { - iFepUiState = TAknFepInputStatePredictiveCandidatePinyin( - this,iContainerPane); - } - break; - case EStroke: - if (IsFlagSet(ESupportStrokePhrase)) - { - iFepUiState = TAknFepInputStatePredictiveCandidateStrokePhrase( - this,iContainerPane); - } - else - { - iFepUiState = TAknFepInputStatePredictiveCandidateStroke( - this,iContainerPane); - } - break; - case EZhuyin: - if(IsFlagSet(ESupportZhuyinPhrase)) - { - iFepUiState = TAknFepInputStatePredictiveCandidateChinesePhrase( - this,iContainerPane); - } - else - { - iFepUiState = TAknFepInputStatePredictiveCandidate(this,iContainerPane); - } - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - } - } - break; - case EPredictiveInput: - if((IsFlagSet(ESupportPinyinPhrase) || IsFlagSet(ESupportZhuyinPhrase) - || IsFlagSet(ESupportStrokePhrase)) - && (iMode != ECangJie)) - { - iFepUiState = TAknFepInputStatePredictiveInputChinesePhrase(this, iContainerPane); - } - else - { - iFepUiState = TAknFepInputStatePredictiveInputChinese(this, iContainerPane); - } - break; - // add for phrase creation - case EStrokeSequenceEdit: - if ( IsFlagSet( ESupportStrokePhrase ) && ( iMode != ECangJie ) ) - { - FepMan()->EnableKeyStar( EFalse ); - iFepUiState = TAknFepInputStateEditStrokePhrase( this, iContainerPane ); - } - break; - // add for phrase creation - case EKeySequenceEdit: - if ( IsFlagSet( ESupportPinyinPhrase ) && ( iMode != ECangJie ) ) - { - iFepUiState = TAknFepInputStateEntryPinyinPhraseCreation( this, iContainerPane ); - } - break; - // add for phrase creation - case EZhuyinSequenceEdit: - if ( IsFlagSet( ESupportZhuyinPhrase ) && ( iMode != ECangJie ) ) - { - iFepUiState = TAknFepInputStateEntryZhuyinPhraseCreation( this, iContainerPane ); - } - break; - // add for phrase creation - case ESpellingSelection: - if ( IsFlagSet( ESupportPinyinPhrase ) && (iMode != ECangJie) ) - { - FepMan()->EnableKeyStar( EFalse ); - iFepUiState = TAknFepInputStateSpellingPinyinPhraseCreation( this, iContainerPane ); - } - break; - // add for phrase creation - case ECandidateSelection: - if ( IsFlagSet (ESupportPinyinPhrase) && ( iMode != ECangJie ) ) - { - FepMan()->EnableKeyStar( EFalse ); - iFepUiState = TAknFepInputStateCandidatePinyinPhraseCreation( this, iContainerPane ); - } - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - } - - } - -void CAknFepUIManagerChinese::ChangeStateQwerty(TUIState aState) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - TPtiKeyboardType kbdType = iFepMan->KeyboardLayout(); -#endif - switch(aState) - { - case EQwerty: - if(iMode == EPinyin || iMode == EStroke || iMode == EZhuyin || iMode == ECangJie) - { - iFepUiState = TAknFepInputStateInitialChineseGenericQwerty(this, iMode); - } - else if(iMode == EStrokeFind) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType) - { - iFepUiState = TAknFepInputStateStrokeFindMiniQwerty(this,iMode); - } - else - { -#endif //RD_INTELLIGENT_TEXT_INPUT - iFepUiState = TAknFepInputStateStrokeFindQwerty(this,iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - else if(iMode == EZhuyinFind) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType) - { - iFepUiState = TAknFepInputStateZhuyinFindMiniQwerty(this,iMode); - } - else - { -#endif //RD_INTELLIGENT_TEXT_INPUT - iFepUiState = TAknFepInputStateZhuyinFindQwerty(this,iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - break; -#ifdef RD_INTELLIGENT_TEXT_INPUT -#ifdef __HALF_QWERTY_KEYPAD - case EHalfQwerty: - if (iMode == EPinyin || iMode == EStroke || iMode == EZhuyin) - { - iFepUiState = TAknFepInputStateInitialChineseGenericHalfQwerty( - this, iMode); - } - else if(iMode ==EStrokeFind) - { - iFepUiState = TAknFepInputStateStrokeFindHalfQwerty(this, - iMode); - } - else if(iMode ==EZhuyinFind) - { - iFepUiState = TAknFepInputStateZhuyinFindHalfQwerty(this, - iMode); - } - break; -#endif -#endif - case EEntry: - { - switch(iMode) - { - case EZhuyin: - if(IsFlagSet(ESupportZhuyinPhrase)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStateEntryMiniQwertyZhuyinPhrase(this, iContainerPane); - } - else if(EPtiKeyboardHalfQwerty == kbdType) - { - iFepUiState = TAknFepInputStateEntryHalfQwertyZhuyinPhrase(this, iContainerPane); - } - else - { -#endif - iFepUiState = TAknFepInputStateEntryQwertyZhuyinPhrase(this, - iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - else - { - iFepUiState = TAknFepInputStateEntryQwertyZhuyin(this, iContainerPane); - } - - break; - case EPinyin: - if(IsFlagSet(ESupportPinyinPhrase)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStateEntryMiniQwertyPinyinPhrase(this, iContainerPane); - } - else if (EPtiKeyboardHalfQwerty == kbdType) - { - iFepUiState = TAknFepInputStateEntryHalfQwertyPinyinPhrase(this, iContainerPane); - } - else - { -#endif - iFepUiState = TAknFepInputStateEntryQwertyPinyinPhrase( - this, iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - else - { - iFepUiState = TAknFepInputStateEntryQwertyPinyin(this, iContainerPane); - } - break; - case EStroke: - if (IsFlagSet(ESupportStrokePhrase)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStateEntryMiniQwertyStrokePhrase( - this, iContainerPane); - } - else if (EPtiKeyboardHalfQwerty == kbdType) - { - iFepUiState= TAknFepInputStateEntryHalfQwertyStrokePhrase(this, iContainerPane); - } - else - { -#endif - iFepUiState = TAknFepInputStateEntryQwertyStrokePhrase( - this, iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - else - { - iFepUiState = TAknFepInputStateEntryQwertyStroke(this, iContainerPane); - } - break; - case ECangJie: -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardHalfQwerty == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStateEntryMiniQwertyCangJie(this, iContainerPane); - } - else - { -#endif - iFepUiState = TAknFepInputStateEntryQwertyCangJie(this, iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - } - } - break; - case ECandidate: - if(iMode == EZhuyin) - { - if(IsFlagSet(ESupportZhuyinPhrase)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase( - this, iContainerPane); - } -#ifdef __HALF_QWERTY_KEYPAD - else if ( EPtiKeyboardHalfQwerty == kbdType ) - { - iFepUiState = TAknFepUiInputStateCandidateHalfQwertyChinesePhrase( - this, iContainerPane); - } -#endif - else - { -#endif - iFepUiState = TAknFepInputStateCandidateQwertyZhuyinPhrase( - this, iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - else - { - iFepUiState = TAknFepInputStateCandidateQwertyZhuyin(this, iContainerPane); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - else if(iMode == EPinyin) - { - if(IsFlagSet(ESupportPinyinPhrase)) - { - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase(this, iContainerPane); - } - else if(EPtiKeyboardHalfQwerty == kbdType) - { - iFepUiState=TAknFepUiInputStateCandidateHalfQwertyChinesePhrase( - this, iContainerPane); - } - } - } - else if(iMode == EStroke) - { - if (IsFlagSet(ESupportStrokePhrase)) - { - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepUiInputStateCandidateMiniQwertyStrokePhrase(this, iContainerPane); - } - else if ( EPtiKeyboardHalfQwerty == kbdType ) - { - iFepUiState=TAknFepUiInputStateCandidateHalfQwertyChinesePhrase( this, iContainerPane); - } - } - } - else if(iMode == ECangJie) - { - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardHalfQwerty == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepUiInputStateCandidateMiniQwertyPinyinAndStrokePhrase( - this, iContainerPane); - } - } -#endif - break; - case EPredictiveCandidate: - if(iMode == EZhuyin) - { - if(IsFlagSet(ESupportZhuyinPhrase)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase( - this, iContainerPane); - } -#ifdef __HALF_QWERTY_KEYPAD - else if( EPtiKeyboardHalfQwerty == kbdType ) - { - iFepUiState = TAknFepInputStatePredictiveCandidateHalfQwertyChinesePhrase( - this, iContainerPane); - } -#endif - else - { -#endif - iFepUiState = TAknFepInputStatePredictiveCandidateQwertyZhuyinPhrase( - this, iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - else - { - iFepUiState = TAknFepInputStatePredictiveCandidateQwertyZhuyin( - this, iContainerPane); - } - - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - else if(iMode == EPinyin) - { - if(IsFlagSet(ESupportPinyinPhrase)) - { - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase( - this, iContainerPane); - } -#ifdef __HALF_QWERTY_KEYPAD - else if( EPtiKeyboardHalfQwerty == kbdType ) - { - iFepUiState = TAknFepInputStatePredictiveCandidateHalfQwertyChinesePhrase( - this, iContainerPane); - } -#endif - } - } - else if(iMode == EStroke) - { - if (IsFlagSet(ESupportStrokePhrase)) - { - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = - TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase( - this, iContainerPane); - } -#ifdef __HALF_QWERTY_KEYPAD - else if( EPtiKeyboardHalfQwerty == kbdType ) - { - iFepUiState = TAknFepInputStatePredictiveCandidateHalfQwertyChinesePhrase( - this, iContainerPane); - } -#endif - } - - } - else if(iMode == ECangJie) - { - - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardHalfQwerty == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStatePredictiveCandidateMiniQwertyChinesePhrase( - this, iContainerPane); - } - - } -#endif - break; - case EPredictiveInput: - { - switch(iMode) - { - case EPinyin: - if(IsFlagSet(ESupportPinyinPhrase)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardHalfQwerty == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStatePredictiveInputMiniQwertyChinesePhrase/*TAknFepInputStatePredictiveInputQwertyPinyinPhrase*/(this, iContainerPane); - } - else - { -#endif - iFepUiState = TAknFepInputStatePredictiveInputQwertyPinyinPhrase( - this, iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - else - { - iFepUiState = TAknFepInputStatePredictiveInputQwertyPinyin( - this, iContainerPane); - } - break; - case EStroke: - if(IsFlagSet(ESupportStrokePhrase)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardHalfQwerty == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStatePredictiveInputMiniQwertyChinesePhrase( - this, iContainerPane); - } - else - { -#endif - iFepUiState = TAknFepInputStatePredictiveInputQwertyStrokePhrase( - this, iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - else - { - iFepUiState = TAknFepInputStatePredictiveInputQwertyStroke( - this, iContainerPane); - } - break; - case ECangJie: -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardHalfQwerty == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStatePredictiveInputMiniQwertyChinesePhrase( - this,iContainerPane); - - } - else - { -#endif - iFepUiState = TAknFepInputStatePredictiveInputQwerty(this, iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - break; - case EZhuyin: - if(IsFlagSet(ESupportZhuyinPhrase)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardHalfQwerty == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStatePredictiveInputMiniQwertyChinesePhrase/*TAknFepInputStatePredictiveInputQwertyPinyinPhrase*/(this, iContainerPane); - } - else - { -#endif - iFepUiState = TAknFepInputStatePredictiveInputQwertyZhuyinPhrase( - this, iContainerPane); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - } - else - { - iFepUiState = TAknFepInputStatePredictiveInputQwertyZhuyin( - this, iContainerPane); - } - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - } - } - break; -#ifdef RD_INTELLIGENT_TEXT_INPUT - case EMiniQwertyEdit: - { - switch(iMode) - { - case EZhuyin: - if(IsFlagSet(ESupportZhuyinPhrase)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardHalfQwerty == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = TAknFepInputStateEditingMiniQwertyZhuyinPhrase( this, iContainerPane ); - } -#endif - } - break; - case EPinyin: - if(IsFlagSet(ESupportPinyinPhrase)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardHalfQwerty == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = - TAknFepInputStateEditinigMiniQwertyPinyinPhrase( - this, - iContainerPane ); - } -#endif - } - break; - case EStroke: - if (IsFlagSet(ESupportStrokePhrase)) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( EPtiKeyboardQwerty4x10 == kbdType || - EPtiKeyboardQwerty3x11 == kbdType || - EPtiKeyboardHalfQwerty == kbdType || - EPtiKeyboardCustomQwerty == kbdType) - { - iFepUiState = - TAknFepInputStateEditingMiniQwertyStrokePhrase( - this, - iContainerPane); - } -#endif - } - break; - default: - break; - } - } - break; - case EZhuyinSpelling: - { - iFepUiState = TAknFepInputStateSpellingMiniQwertyZhuyin( this, iContainerPane ); - } - break; - case EZhuyinCandidate: - { - iFepUiState = TAknFepInputStateCanindateSelectingMiniQwertyZhuyin( this, iContainerPane ); - } - break; -#endif - default: - AknFepPanic(EAknFepPanicBadInputState); - } -} - -void CAknFepUIManagerChinese::UpdateCangJieState() - { - // Reset mode - if (iMode == ECangJie) - { - ChangeStateQwerty( EQwerty ); - } - } - -TBool CAknFepUIManagerChinese::IsValidChineseSymbol(TInt aKey) const - { - TBool respond = EFalse; - if((aKey >= EStdKeyComma && aKey <= EStdKeyNkpPlus)|| aKey == EPtiKeyStar ) - { - respond = ETrue; - } - return respond; - } -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT -// --------------------------------------------------------------------------- -// CAknFepUIManagerChinese::RollbackPreviousCharL -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerChinese::RollbackPreviousCharL() - { - if ( iInputSeqLenDeltaWithLastKey > 0 ) - { - HandleKeyL( EStdKeyBackspace, EShortKeyPress ); - return ETrue; - } - else - { - return CAknFepUIManagerBase::RollbackPreviousCharL(); - } - } -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiManagerJapanese.cpp --- a/fep/aknfep/src/AknFepUiManagerJapanese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,866 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIManagerJapanese methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include // RDebug stuff... -#include -#include - -#include "AknFepGlobalEnums.h" -#include "AknFepUiManagerBase.h" -#include "AknFepUIManagerJapanese.h" -#include "AknFepManagerInterface.h" // MAknFepManagerInterface -#include "AknFepUIManagerStateInterface.h" // MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" -#include "AknFepGlobalEnums.h" -#include "AknFepCaseManager.h" - -#include "AknFepUiInputStateInitialHiraganaKanji.h" -#include "AknFepUiInputStateInitialHiragana.h" -#include "AknFepUiInputStateInitialKatakana.h" -#include "AknFepUiInputStateInitialLatinJapanese.h" -#include "AknFepUiInputStateInitialFullNumber.h" -#include "AknFepUiInputStateEntryJapaneseMultitap.h" -#include "AknFepUiInputStateEntryHiraganaKanji.h" -#include "AknFepUiInputStateEntryKatakana.h" -#include "AknFepUiInputStateEntryLatinJapanese.h" -#include "AknFepUiInputStateConversionHiraganaKanji.h" -#include "AknFepUiInputStateCandidateHiraganaKanji.h" -#include "AknFepUiInputStateCompletionHiraganaKanji.h" -#include "AknFepUiInputStateCompletionPredictiveHiraganaKanji.h" -#include "AknFepUiInputStateCompletionJapaneseMultitap.h" -#include "AknFepUiInputStateCompletionKatakana.h" -#include "AknFepUiInputStateCompletionLatinJapanese.h" -#include "AknFepUiInputStatePredictiveInputJapanese.h" -#include "AknFepUiInputStateNextWordJapanesePredictive.h" -#include "AknFepUICtrlContainerJapanese.h" -#include "AknFepPanic.h" -#include "AknFepUiInputStateCandidateRetroActive.h" - -#include // CAknIndicatorContainer::TIndicatorContext -#include -#include // MPtiEngineCompositionDataInterface -#include // keys - -// CONSTANTS - -// LOCAL FUNCTION PROTOTYPES -static TBool IsNumericKey(TInt aKey); -static TBool IsQwertyKey(TInt aKey); - -//============================ LOCAL FUNCTIONS ============================== - -// ----------------------------------------------------------------------------- -// IsNumericKey -// -// Returns: ETrue is returned if aKey is number key -// -// ----------------------------------------------------------------------------- -// -static TBool IsNumericKey(const TInt aKey) - { - TBool response = EFalse; - if (aKey >= EPtiKeyQwerty0 && aKey <= EPtiKeyQwerty9) - { - response = ETrue; - } - return response; - } - -// ----------------------------------------------------------------------------- -// IsQwertyKey -// -// Returns: ETrue is returned if aKey is qwerty key -// -// ----------------------------------------------------------------------------- -// -static TBool IsQwertyKey(const TInt aKey) - { - TBool response = EFalse; - if ( (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ) || - IsNumericKey( aKey ) || - aKey == EStdKeySpace || - aKey == EPtiKeyQwertyPlus || - aKey == EPtiKeyQwertyMinus || - aKey == EPtiKeyQwertyComma || - aKey == EPtiKeyQwertySemicolon || - aKey == EPtiKeyQwertyFullstop || - aKey == EPtiKeyQwertyHash || - aKey == EPtiKeyQwertySlash || - aKey == EPtiKeyQwertyApostrophe) - { - response = ETrue; - } - return response; - } - -/** - * CAknFepUIManagerJapanese class. - * - */ -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::NewL -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerJapanese* CAknFepUIManagerJapanese::NewL(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan, - TLanguage aLanguage) - { - CAknFepUIManagerJapanese* self = new(ELeave)CAknFepUIManagerJapanese(aFepMan, aCaseMan); - CleanupStack::PushL(self); - self->ConstructL(aLanguage); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::~CAknFepUIManagerJapanese -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerJapanese::~CAknFepUIManagerJapanese() - { - delete iCandidateArray; - delete iContainerPane; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::SetCase -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerJapanese::SetCase(TCase aCase) - { - CAknFepUIManagerBase::SetCase(aCase); - - if (iMode != ENumber) - { - if (!iCaseMan->IsAbleChangeCase()) - { - if (iCaseMan->CurrentCase() == EAknEditorLowerCase) - { - TRAP_IGNORE(iPtiEngine->HandleCommandL(EPtiCommandUseLatinCaseLowerOnlyKeyMap)); - } - else if (iCaseMan->CurrentCase() == EAknEditorUpperCase) - { - TRAP_IGNORE(iPtiEngine->HandleCommandL(EPtiCommandUseLatinCaseUpperOnlyKeyMap)); - } - } - else - { - TRAP_IGNORE(iPtiEngine->HandleCommandL(EPtiCommandUseLatinDefaultKeyMap)); - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::HandleKeyL -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerJapanese::HandleKeyL(TInt aKey, TKeyPressLength aLength, TEventCode /*aEventCode*/) - { - TUIState currentState = iFepUiState.State(); - if (aLength == EShortKeyPress) - { - iInitialFepUIState = currentState; - } - - // If current input mode is Number or Hiragana, - // numeric long keypress doesn't operate. - if (iMode == ENumber || iMode == EHiragana) - { - if (IsNumericKey(aKey) && aLength == ELongKeyPress) - { - return ETrue; - } - } - - if (iMode == EHiragana) - { - if( aKey == EPtiKeyStar && aLength == ELongKeyPress) - { - return ETrue; - } - } - // CBA keypress is valid when input state is Initial, Entry - // Predictive input or NextWord. - switch (aKey) - { - case EKeyCBA1: // ITU-T left softkey - case EKeyCBA2: // ITU-T right softkey - case EStdKeyDevice0: // Qwerty left softkey (=0xa4) - case EStdKeyDevice1: // Qwerty right softkey(=0xa5) - // In case of Latin and Number, all characters must be committed. - if (iMode != EHiraganaKanji) - { - CloseUI(); - } - switch (iStatePtr->State()) - { - case EInitial: - case EEntry: - case EPredictiveInput: - case ENextWord: - return EFalse; - default: - return ETrue; - } - //break; not needed - default: - // move to next line - break; - } - - TPtiTextCase oldPtiCaseMode = iPtiEngine->Case(); - TPtiTextCase caseMode = EPtiCaseLower; - TPtiTextCase shiftedCase = caseMode; - if (IsQwerty()) - { - caseMode = EPtiCaseLower; - if (!FepMan()->IsOnlyNumericPermitted()) - { - caseMode = oldPtiCaseMode; - if (iMode & (EHiraganaKanji|EHiragana|EKatakana)) - { - if (CaseMan()->CurrentCase() == EAknEditorTextCase - && caseMode == EPtiCaseUpper - && iStatePtr->State() == EInitial) - { - iPtiEngine->SetCase(EPtiCaseLower); - caseMode = EPtiCaseLower; - oldPtiCaseMode = EPtiCaseLower; - } - } - else if (iMode == ELatin) - { - switch (CaseMan()->CurrentCase()) - { - case EAknEditorUpperCase: - case EAknEditorTextCase: - caseMode = EPtiCaseUpper; - break; - case EAknEditorLowerCase: - default: - caseMode = EPtiCaseLower; - break; - } - } - } - shiftedCase = caseMode; - if ( FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode) ) - { - // while pressing Shift key - if ( aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ ) - { - shiftedCase = (caseMode != EPtiCaseUpper)? EPtiCaseUpper : EPtiCaseLower; - } - else - { - // except alpha key - shiftedCase = EPtiCaseUpper; - } - } - else if (!(aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ)) - { - // out of A-Z key - shiftedCase = EPtiCaseLower; - } - - if (shiftedCase != oldPtiCaseMode) - { - iPtiEngine->SetCase(shiftedCase); - } - } - - TBool ret = iStatePtr->HandleKeyL(aKey, aLength); - // If the state was changed by keypress event and not handle keypress event, - // changed state handle it keypress event. - while (!ret && currentState != iFepUiState.State()) - { - // If editor was filled by characters, - // don't handle no more numeric keypress or qwerty keypress - if (iStatePtr->State() == EInitial - && !FepMan()->EditorHasFreeSpace()) - if (!IsQwerty() && IsNumericKey(aKey)) - { - return ETrue; - } - else if (IsQwerty() && IsQwertyKey(aKey)) - { - return ETrue; - } - - if ( (IsQwerty()) - && (iPtiEngine->Case() != shiftedCase) ) - { - iPtiEngine->SetCase(shiftedCase); - } - - currentState = iFepUiState.State(); - ret = iFepUiState.HandleKeyL(aKey, aLength); - } - - if (IsQwerty()) - { - if (oldPtiCaseMode != iPtiEngine->Case()) - { - iPtiEngine->SetCase(oldPtiCaseMode); - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::CloseUI -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerJapanese::CloseUI() - { - if (iStatePtr->State() != EInitial) - { - iStatePtr->CloseUI(); - if (iStatePtr->State() == EMultiCompletion) - { - ChangeState(EInitial); - } - else - { - // Commit Uncommited string - if (iStatePtr->State() != ENextWord) - { - ChangeState(EMultiCompletion); - } - TRAP_IGNORE(iStatePtr->HandleCommandL(EAknFepAllCompletion)); - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::GetFormatOfFepInlineText -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerJapanese::GetFormatOfFepInlineText(TCharFormat& aFormat, - TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter) const - { - TRgb highlightColor1 = AKN_LAF_COLOR_STATIC(244); - TRgb highlightColor2 = AKN_LAF_COLOR_STATIC(210); - TRgb textColor = AKN_LAF_COLOR_STATIC(0); - if ((iFepUiState.State() == EEntry) - || (iFepUiState.State() == EConversion) - || (iFepUiState.State() == ECandidate) - || (iFepUiState.State() == ECandidateRetroActive) - || (iFepUiState.State() == EPredictiveInput)) - { - const MPtiEngineCompositionDataInterface* data = PtiEngine()->CompositionData(); - TInt length = 0; - TInt clauseCount = 0; - TInt preLength = 0; - TPtrC8 clauseChar = data->LengthOfPhrase(); -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - if ( clauseChar.Length() ) - { -#endif //RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - for (; length < aPositionOfCharacter; ++clauseCount) - { - preLength = length; - length += clauseChar[clauseCount]; - } - if (length == aPositionOfCharacter) - aNumberOfCharactersWithSameFormat = clauseChar[clauseCount]; - else - { - --clauseCount; - aNumberOfCharactersWithSameFormat = clauseChar[clauseCount] - + preLength - - aPositionOfCharacter; - } - switch (data->AttributeOfPhrase()[clauseCount]) - { - //Input phase - case MPtiEngineCompositionDataInterface::EPtiAttributeTransitoryInput: - { - if (iFlagInlineEditUnderline) - { - aFormat.iFontPresentation.iHighlightColor = highlightColor1; - aFormat.iFontPresentation.iHighlightStyle = TFontPresentation:: - EFontHighlightNormal; - } - else - { - } - } - break; - // Conversion phase(no target phrase) - case MPtiEngineCompositionDataInterface::EPtiAttributeNonTargetConvert: - { - aFormat.iFontPresentation.iHighlightColor = highlightColor1; - aFormat.iFontPresentation.iHighlightStyle = TFontPresentation:: - EFontHighlightNormal; - } - break; - // Conversion phase(target Phrase) - case MPtiEngineCompositionDataInterface::EPtiAttributeTargetConvert: - { - aFormat.iFontPresentation.iTextColor = textColor; - aFormat.iFontPresentation.iHighlightColor = highlightColor2; - aFormat.iFontPresentation.iHighlightStyle = TFontPresentation:: - EFontHighlightNormal; - } - break; - default: - break; -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif // RD_INTELLIGENT_TEXT_INPUT -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - } - } - else if (iFepUiState.State() == EMultiCompletion) - { - const MPtiEngineCompositionDataInterface* data = PtiEngine()->CompositionData(); - TInt length = data->CompletedString().Length(); - // Panic in case (aNumberOfCharactersWithSameFormat < 1) - if( !(length > 0) ) - { - length = 1; - } - - aNumberOfCharactersWithSameFormat = length; - } - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::IsValidShiftKeyPress -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerJapanese::IsValidShiftKeyPress() const - { - TBool ret = ETrue; - switch (iMode) - { - case EHiraganaKanji: - // ITU-T has to check Edit-key(= Shift-key). If the state is Initial - // or NextWord, Edit-key is valid, the other states are invalid. - // However, in Qwerty input, shift-key is used for changing Case mode, - // so, shift-key is always valid even if the statue is anything. - if (!iQwerty) - { - if (iStatePtr->State() == EInitial || iStatePtr->State()== ENextWord) - { - ret = ETrue; - } - else - { - ret = EFalse; - } - } - break; - case EHiragana: - ret = EFalse; - break; - case EKatakana: - default: - break; - } - - return ret; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::ChangeState -// -// -// --------------------------------------------------------------------------- -// -TUIState CAknFepUIManagerJapanese::ChangeState(TUIState aState) - { - switch(aState) - { - case EInitial: - { - switch(iMode) - { - case EHiragana: - iFepUiState = TAknFepUiInputStateInitialHiragana(this, UIContainer()); - break; - case EHiraganaKanji: - iFepUiState = TAknFepUiInputStateInitialHiraganaKanji(this, UIContainer()); - break; - case EKatakana: - iFepUiState = TAknFepUiInputStateInitialKatakana(this, UIContainer()); - break; - case ELatin: - { - iFepUiState = TAknFepUiInputStateInitialLatinJapanese(this, UIContainer()); - } - break; - case ENumber: - iFepUiState = TAknFepUiInputStateInitialFullNumber(this, UIContainer()); - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - break; - } - case EEntry: - { - switch(iMode) - { - case EHiraganaKanji: - iFepUiState = TAknFepUiInputStateEntryHiraganaKanji(this, UIContainer()); - break; - case EHiragana: - case EKatakana: - iFepUiState = TAknFepUiInputStateEntryKatakana(this, UIContainer()); - break; - case ELatin: - iFepUiState = TAknFepUiInputStateEntryLatinJapanese(this, UIContainer()); - break; - case ENumber: - iFepUiState = TAknFepUiInputStateEntryJapaneseMultitap(this, UIContainer()); - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - } - break; - case ECandidate: - iFepUiState = TAknFepUiInputStateCandidateHiraganaKanji(this, UIContainer()); - break; - case EPredictiveInput: - iFepUiState = TAknFepUiInputStatePredictiveInputJapanese(this, UIContainer()); - break; - case EConversion: - iFepUiState = TAknFepUiInputStateConversionHiraganaKanji(this, UIContainer()); - break; - case EMultiCompletion: // Only Japanese version uses this flag. - switch(iMode) - { - case EHiraganaKanji: - if(iPredictive) - { - if(iFepUiState.State() == EPredictiveInput || - iFepUiState.State() == ENextWord) - { - iFepUiState = TAknFepUiInputStateCompletionPredictiveHiraganaKanji(this, UIContainer()); - } - else - { - iFepUiState = TAknFepUiInputStateCompletionHiraganaKanji(this, UIContainer()); - } - } - else - { - iFepUiState = TAknFepUiInputStateCompletionHiraganaKanji(this, UIContainer()); - } - break; - case EHiragana: - case EKatakana: - { - iFepUiState = TAknFepUiInputStateCompletionKatakana(this, UIContainer()); - } - break; - case ENumber: - iFepUiState = TAknFepUiInputStateCompletionJapaneseMultitap(this, UIContainer()); - break; - case ELatin: - iFepUiState = TAknFepUiInputStateCompletionLatinJapanese(this, UIContainer()); - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - break; - case ENextWord: // Only Japanese version uses this flag - { - switch(iMode) - { - case EHiraganaKanji: - if(iPredictive) - { - iFepUiState = TAknFepUiInputStateNextWordJapanesePredictive(this, UIContainer()); - break; - } - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - } - break; - case ECandidateRetroActive: - { - switch(iMode) - { - case EHiraganaKanji: - iFepUiState = TAknFepUiInputStateCandidateRetroActive(this, UIContainer()); - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - } - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - } - - PtiEngine()->SetObserver(&iFepUiState); - -#ifdef _DEBUG - RDebug::Print(_L("UI Manager: New State: %d"), iFepUiState.State()); -#endif - TRAPD(err, iStatePtr->InitializeStateL()); - if (err != KErrNone) - { -#ifdef _DEBUG - RDebug::Print(_L("UI Manager: Setup Error: Mode = %d, State = %d"), - iMode, iStatePtr->State()); -#endif - CloseUI(); - } - return iStatePtr->State(); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::CandidateArray -// -// -// --------------------------------------------------------------------------- -// -CDesCArrayFlat* CAknFepUIManagerJapanese::CandidateArray() - { - return iCandidateArray; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::IsPredictive -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerJapanese::IsPredictive() const - { - return iPredictive; - } - - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::SetInlineEditUnderlineVisibility -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerJapanese::SetInlineEditUnderlineVisibility(TBool aFlag) - { - iFlagInlineEditUnderline = aFlag; - } - - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::SetMode -// -// -// --------------------------------------------------------------------------- -// -#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ -#ifdef RD_INTELLIGENT_TEXT_INPUT -void CAknFepUIManagerJapanese::SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode, TInt aKeyboardType) -#else -void CAknFepUIManagerJapanese::SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode) -#endif // RD_INTELLIGENT_TEXT_INPUT -#else -void CAknFepUIManagerJapanese::SetMode(TInt aMode, TBool aPredictive, TBool aQwertyInputMode) -#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__ - { - iMode=aMode; - iPredictive = aPredictive; - iQwerty = aQwertyInputMode; - ChangeState(EInitial); - } - - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::FepUIState -// -// -// --------------------------------------------------------------------------- -// -TAknFepInputStateBase* CAknFepUIManagerJapanese::FepUIState() - { - return &iFepUiState; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::UIContainer -// -// -// --------------------------------------------------------------------------- -// -MAknFepUICtrlContainerJapanese* CAknFepUIManagerJapanese::UIContainer() const - { - return iContainerPane; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::CAknFepUIManagerJapanese -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerJapanese::CAknFepUIManagerJapanese(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan) - : CAknFepUIManagerBase(aFepMan, aCaseMan), - iFepUiState(NULL,NULL), - iFlagInlineEditUnderline(ETrue) - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::ConstructL -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerJapanese::ConstructL(TLanguage aLanguage) - { - CAknFepUIManagerBase::ConstructL(aLanguage); - - PtiEngine()->ActivateLanguageL(aLanguage, EPtiEngineInputModeNone); - - iCandidateArray = new(ELeave) CDesCArrayFlat(1); - iContainerPane = FepMan()->UiInterface()->NewAknFepUICtrlContainerJapaneseL(this); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::IsQwerty -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerJapanese::IsQwerty() const - { - return iQwerty; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerJapanese::HandleCommandL -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerJapanese::HandleCommandL(TInt aCommandId) - { - switch (aCommandId) - { - case EAknFepSoftkeyCommit: - case EAknFepSoftkeySelectCandidate: - { - TUIState currentState = iFepUiState.State(); - iStatePtr->HandleCommandL(aCommandId); - if (currentState != iFepUiState.State()) - { - if (iFepUiState.State() == EMultiCompletion) - { - iFepUiState.HandleKeyL(EKeyOK, EShortKeyPress); - } - } - } - break; - case EAknFepSoftkeyPredictiveOn: - { - MAknFepManagerUIInterface* fepMan = FepMan(); - CPtiEngine* ptiEngine = PtiEngine(); - - // Update of inline editing characters - TPtiEngineInputMode inputmode = (IsQwerty())? - EPtiEngineHiraganaKanjiPredictiveQwerty - : EPtiEngineHiraganaKanjiPredictive; - ptiEngine->SetInputMode(inputmode); - const MPtiEngineCompositionDataInterface* data = ptiEngine->CompositionData(); - TPtrC text = data->CompletedString(); - TPtrC text2 = data->ConvertingString(); - if (text.Length() >0) - { - ChangeState(EMultiCompletion); - fepMan->CommitInlineEditL(text, text.Length()); - if (fepMan->EditorHasFreeSpace()) - { - ChangeState(ENextWord); - } - else - { - CloseUI(); - ChangeState(EInitial); - } - } - else if (text2.Length() > 0) - { - // Change to Predictive State - ChangeState(EPredictiveInput); - iPredictive = ETrue; - iStatePtr->HandleCommandL(aCommandId); - } - } - break; - default: - iStatePtr->HandleCommandL(aCommandId); - break; - } - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerBase::ResourceChanged -// This API is called when FEP control handles the changing resource event. -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerJapanese::ResourceChanged(TInt /*aType*/) - { - TRAP_IGNORE( iStatePtr->HandleCommandL(EAknFepResourceChanged)); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiManagerKorean.cpp --- a/fep/aknfep/src/AknFepUiManagerKorean.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,285 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the CAknFepUIManagerKorean Methods. -* -*/ - -// INCLUDE FILES -#include // RDebug stuff... -#include - -#include "AknFepGlobalEnums.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepManagerInterface.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUiManagerBase.h" -#include "AknFepUiManagerKorean.h" - -// Western input -#include "AknFepUiInputStateInitialLatinMultitap.h" -#include "AknFepUiInputStateInitialNumber.h" - -//Korean input -#include "AknFepUiInputStateInitialKoreanMultitap.h" -#include "AknFepUiInputStateQwertyKorean.h" -#include "AknFepPanic.h" - -#include // CAknIndicatorContainer::TIndicatorContext -#include -#include - -// CONSTANTS - -/** - * CAknFepUIManagerKorean class. - * - */ - -//============================ MEMBER FUNCTIONS ============================== - - -// --------------------------------------------------------------------------- -// CAknFepUIManagerKorean::NewL -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerKorean* CAknFepUIManagerKorean::NewL(MAknFepManagerUIInterface* aFepMan, CAknFepCaseManager* aCaseMan, TLanguage aLanguage) - { - CAknFepUIManagerKorean* self = new(ELeave)CAknFepUIManagerKorean(aFepMan, aCaseMan); - CleanupStack::PushL(self); - self->ConstructL(aLanguage); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerKorean::~CAknFepUIManagerKorean -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerKorean::~CAknFepUIManagerKorean() - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerKorean::HandleKeyL -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerKorean::HandleKeyL( TInt aKey, TKeyPressLength aLength, - TEventCode /*aEventCode*/ ) - { - TUIState currentState = iFepUiState.State(); - if (aLength == EShortKeyPress) - { - iInitialFepUIState = currentState; - } - - if(!iStatePtr->HandleKeyL(aKey, aLength)) - { - if(currentState != iStatePtr->State()) //Check to see if we've changed state. - { - return iStatePtr->HandleKeyL(aKey, aLength); - } - return EFalse; // we've failed to handle it.. - } - return ETrue; //we're ok. - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerKorean::CloseUI -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerKorean::CloseUI() - { - ChangeState(EInitial); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerKorean::SupportLanguage -// -// -// --------------------------------------------------------------------------- -// -TInt CAknFepUIManagerKorean::SupportLanguage(TInt aMode) const - { - TInt lang = iLanguage; - switch (aMode) - { - case ELatin: - { - lang = ELangEnglish; - } - break; - case EHangul: - case ENumeric: - default: - break; - } - return lang; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerKorean::ActivateUI -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerKorean::ActivateUI() - { - ChangeState(EEntry); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerKorean::ChangeState -// -// -// --------------------------------------------------------------------------- -// MAknFepUIManagerStateInterface -TUIState CAknFepUIManagerKorean::ChangeState(TUIState aState) - { - switch(aState) - { - case EInitial: - { - switch(iMode) - { - case ELatin: - { - iFepUiState = TAknFepInputStateInitialLatinMultitap(this); - break; - } - case EHangul: - { - iFepUiState = TAknFepInputStateInitialKoreanMultitap(this); - break; - } - case ENumber: - case ENativeNumber: - { - //Map directly to the resources... - iFepUiState = TAknFepInputStateInitialNumber(this); - break; - } - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - break; - } - case EEntry: - { - switch(iMode) - { - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - break; - } - case ECandidate: - { - switch(iMode) - { - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - break; - } - - case EPredictiveCandidate: - { - switch(iMode) - { - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - break; - } - - case EQwerty: - { - switch(iMode) - { - case ELatin: - { - iFepUiState = TAknFepInputStateQwertyKorean(this); - break; - } - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - break; - } - - case EPredictiveInput: - AknFepPanic(EAknFepPanicBadInputState); - break; - - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - - iPtiEngine->SetObserver(&iFepUiState); -#ifdef _DEBUG - RDebug::Print(_L("UI Manager: New State: %d"), iFepUiState.State()); -#endif - return iStatePtr->State(); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerKorean::CAknFepUIManagerKorean -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerKorean::CAknFepUIManagerKorean(MAknFepManagerUIInterface* aFepMan, CAknFepCaseManager* aCaseMan) - : CAknFepUIManagerBase(aFepMan, aCaseMan), - iFepUiState(NULL) - - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerKorean::ConstructL -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerKorean::ConstructL(TLanguage aLanguage) - { - CAknFepUIManagerBase::ConstructL(aLanguage); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerKorean::FepUIState -// -// -// --------------------------------------------------------------------------- -// -TAknFepInputStateBase* CAknFepUIManagerKorean::FepUIState() - { - return &iFepUiState; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepUiManagerWestern.cpp --- a/fep/aknfep/src/AknFepUiManagerWestern.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,710 +0,0 @@ -/* -* Copyright (c) 2003-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIManagerWestern methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include // RDebug stuff... -#include -#include - -#include "AknFepGlobalEnums.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepManagerInterface.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUiManagerBase.h" -#include "AknFepUiManagerWestern.h" - -// Western input -#include "AknFepUiInputStateInitialLatinMultitap.h" -#include "AknFepUiInputStateInitialNumber.h" -#include "AknFepUiInputStateInitialWesternPredictive.h" -#include "AknFepUiInputStateEntryWesternPredictive.h" -#include "AknFepUiInputStateInitialHalfQwertyWesternPredictive.h" -#include "AknFepUiInputStateEntryHalfQwertyWesternPredictive.h" -#ifdef RD_INTELLIGENT_TEXT_INPUT -// Predictive QWERTY changes ----> -#include "AknFepUiInputStateInitialQwertyWesternPredictive.h" -#include "AknFepUiInputStateEntryQwertyWesternPredictive.h" -// Predictive QWERTY changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT -#include "AknFepPluginManager.h" - -// Arabic & Hebrew input -#include "AknFepUiInputStateInitialArabicHebrewMultitap.h" -#include "AknFepUiInputStateInitialArabicHebrewPredictive.h" -#include "AknFepUiInputStateEntryArabicHebrewPredictive.h" - -// Thai input -#include "AknFepUIInputStateInitialThaiMultitap.h" -#include "AknFepUiInputStateInitialThaiPredictive.h" -#include "AknFepUiInputStateEntryThaiPredictive.h" - -#include "AknFepThaiSCTSelector.h" - -//Hindi Input -#include "AknFepUIInputStateInitialIndicMultitap.h" -#include "AknFepUiInputStateInitialIndicPredictive.h" -#include "AknFepUiInputStateEntryIndicPredictive.h" -#include "AknFepUiIndicInputManager.h" - -// Qwerty input -#include "AknFepUiInputStateQwerty.h" -#ifdef RD_INTELLIGENT_TEXT_INPUT -#include "AknFepUiInputStateHalfQwerty.h" -#endif - -#ifdef RD_HINDI_PHONETIC_INPUT -#include "aknfepuiinputstateinitialindicphoneticmultitap.h" -#include "aknfepuiinputstateindicphoneticqwerty.h" -#endif -// Vietnamese input -#include "AknFepUIInputStateInitialVietnameseMultitap.h" -#include "AknFepVietnameseToneManager.h" -#include "AknFepUiInputStateEntryVietnamesePredictive.h" -#include "AknFepCaseManager.h" -#include "AknFepPanic.h" - -// Japanese input -#include "AknFepUiInputStateEntryWesternPredictiveJp.h" - -#include // CAknIndicatorContainer::TIndicatorContext -#include -#include -#include -#include -// CONSTANTS - -/** - * CAknFepUIManagerWestern class. - * - */ - -//============================ MEMBER FUNCTIONS ============================== - - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::NewL -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerWestern* CAknFepUIManagerWestern::NewL(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan, - TLanguage aLanguage) - { - CAknFepUIManagerWestern* self = new(ELeave)CAknFepUIManagerWestern(aFepMan, aCaseMan); - CleanupStack::PushL(self); - self->ConstructL(aLanguage); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::~CAknFepUIManagerWestern -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerWestern::~CAknFepUIManagerWestern() - { - delete iAknFepThaiSCTSelector; - delete iVietToneMarkMgr; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::HandleKeyL -// -// -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerWestern::HandleKeyL( TInt aKey, TKeyPressLength aLength, - TEventCode /*aEventCode*/ ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - // The implementation is anyway identical with the base class, so we can - // as well call the base implementation. - return CAknFepUIManagerBase::HandleKeyL(aKey, aLength); -#else - TUIState currentState = iFepUiState.State(); - if (aLength == EShortKeyPress) - { - iInitialFepUIState = currentState; - } - - if(!iStatePtr->HandleKeyL(aKey, aLength)) - { - if(currentState != iStatePtr->State()) //Check to see if we've changed state. - { - return iStatePtr->HandleKeyL(aKey, aLength); - } - return EFalse; // we've failed to handle it.. - } - return ETrue; //we're ok. -#endif // RD_INTELLIGENT_TEXT_INPUT - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::CloseUI -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerWestern::CloseUI() - { - ChangeState(EInitial); - } - - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::AddTextToUserDictionaryL -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerWestern::AddTextToUserDictionaryL(const TDesC& aText) - { - HBufC* udbTextBuf = HBufC::NewLC(CAknFepManager::EMaximumFepWordLength); // buffer for text - TPtr udbText=udbTextBuf->Des(); - TChar ch; - - TInt textLengthToAdd = Min((TInt)CAknFepManager::EMaximumFepWordLength, aText.Length()); - - for (TInt ii=0; ii < textLengthToAdd; ii++) - { - ch = STATIC_CAST(TChar, aText[ii]); - udbText.Append(ch); - if (ch.IsSpace() || ii == textLengthToAdd-1) - { - if (ch.IsSpace()) - { - udbText.Delete(udbText.Length()-1, CAknFepManager::ESingleCharacter); - } - if (udbText.Length()) - { - // add the contents of udbText to the user dictionary. - CPtiEngine* ptiengine = PtiEngine(); - TPtiUserDictionaryEntry newUdbEntry(udbText); - TPtiEngineInputMode currentInputMode = ptiengine->InputMode(); - // PtiEngine needs to be in predictive mode when the word is added to UDB. -#ifdef RD_INTELLIGENT_TEXT_INPUT - if(iQwertyInputMode) - { -#ifdef __HALF_QWERTY_KEYPAD - if( EPtiKeyboardHalfQwerty == iFepMan->KeyboardLayout()) - { - ptiengine->SetInputMode( EPtiEngineHalfQwertyPredictive ); - } - else -#endif //__HALF_QWERTY_KEYPAD - { - ptiengine->SetInputMode(EPtiEngineQwertyPredictive ); - } - } - else -#endif //RD_INTELLIGENT_TEXT_INPUT - { - ptiengine->SetInputMode(EPtiEnginePredictive); - } - ptiengine->AddUserDictionaryEntry(newUdbEntry); - ptiengine->SetInputMode(currentInputMode); - } - udbText.Zero(); - } - } - CleanupStack::PopAndDestroy(); // udbTextBuf - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::GetFormatOfFepInlineText -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerWestern::GetFormatOfFepInlineText(TCharFormat& aFormat, - TInt& aNumberOfCharactersWithSameFormat, - TInt aPositionOfCharacter) const - { - if ( (iPredictive && iFepUiState.State() == EEntry ) -#ifdef RD_HINDI_PHONETIC_INPUT -//adding condition to underline uncommitted text for hindi phonetic - || TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage( ( TLanguage )iLanguage ) -#endif - ) // EInitial??? - { - aFormat.iFontPresentation.iUnderline = EUnderlineOn; - if (iFepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - aFormat.iFontPresentation.iHighlightStyle = - TFontPresentation::EFontHighlightNoMatchesIndicator; - } - TCursorSelection uncommit = iFepMan->UncommittedText(); - TInt lengthOfRemainderOfInlineText = uncommit.Length()-aPositionOfCharacter; -#ifndef RD_INTELLIGENT_TEXT_INPUT - if(iFepMan->IsAutoCompleteOn()) - { - // For AutoWord Completion - the suggested completion has to be gray slated - CPtiEngine* ptiengine = PtiEngine(); - TInt actualLength = (ptiengine->CurrentInputSequence()).Length(); - - if(lengthOfRemainderOfInlineText>0) - { - if(actualLength < lengthOfRemainderOfInlineText) - { - if(iLanguage == ELangHindi) - { - TBuf currentWord(ptiengine->CurrentWord()); // - // AutoComplete - Fix - Begin - if(actualLength < currentWord.Length()) - { - TUint currentchar = TUint(currentWord[actualLength]); - while((TAknFepUiIndicInputManager::IsIndicDependantCharacter(currentchar, iLanguage))) - { - actualLength++; - if(!(actualLength < currentWord.Length())) - break; - currentchar = TUint(currentWord[actualLength]); - } - // AutoComplete - Fix - Begin - } - } - } - - if (aPositionOfCharacter0)) - { - aFormat.iFontPresentation.iUnderline = EUnderlineOn; - aNumberOfCharactersWithSameFormat = actualLength; - } - else - { - // Display the autocompleted text in gray colour - TRgb autoTextColor; - MAknsSkinInstance *skin = AknsUtils::SkinInstance(); - TInt err = AknsUtils::GetCachedColor( skin, autoTextColor, KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG64 ); - if (!err) - { - aFormat.iFontPresentation.iTextColor = autoTextColor; - } - else - { - // In case of error occurs, display text in hardcoded slate gray color - aFormat.iFontPresentation.iTextColor = KSLATEGRAY; - } - - aNumberOfCharactersWithSameFormat=lengthOfRemainderOfInlineText; - } - } - } - else -#endif -#ifdef RD_INTELLIGENT_TEXT_INPUT -// Predictive QWERTY (XT9) changes ----> - TInt wordLength = uncommit.Length(); - if ( lengthOfRemainderOfInlineText > 0 ) - { - TInt tailLength = 0; - //TInt err = PtiEngine()->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ); - TRAP_IGNORE( PtiEngine()->HandleCommandL( - EPtiCommandGetAutoCompletionTailLength, - &tailLength )); - - if ( aPositionOfCharacter < wordLength-tailLength ) - { - aFormat.iFontPresentation.iUnderline = EUnderlineOn; - aNumberOfCharactersWithSameFormat = lengthOfRemainderOfInlineText-tailLength; - } - else - { - aFormat.iFontPresentation.iUnderline = EUnderlineOff; - aFormat.iFontPresentation.iTextColor = KSLATEGRAY; - aNumberOfCharactersWithSameFormat=lengthOfRemainderOfInlineText; - } - } -#else -#ifdef RD_HINDI_PHONETIC_INPUT - //for phonetic, space character needs to be checked explicitly so that it is not underlined - //for predictive when space is entered it gets committed and changes to initial state, hence check is not present - if(TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage( ( TLanguage )iLanguage ) ) - { - TChar tempChar(0); - iFepUiState.GetPhoneticLatinChar(tempChar); - if(tempChar.IsSpace()) - aFormat.iFontPresentation.iUnderline = EUnderlineOff; - } - #else - if (lengthOfRemainderOfInlineText>0) - { - aFormat.iFontPresentation.iUnderline = EUnderlineOn; - aNumberOfCharactersWithSameFormat=lengthOfRemainderOfInlineText; - } - #endif -// Predictive QWERTY (XT9) changes <---- -#endif //RD_INTELLIGENT_TEXT_INPUT - } - } - - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::SupportLanguage -// -// -// --------------------------------------------------------------------------- -// -TInt CAknFepUIManagerWestern::SupportLanguage(TInt aMode) const - { - TInt lang = iLanguage; - switch (aMode) - { - case ELatin: - { - if ( iLanguage == ELangTaiwanChinese || - iLanguage == ELangHongKongChinese || - iLanguage == ELangPrcChinese || - iLanguage == ELangJapanese || - iLanguage == ELangHindi ) - { - // Chinese and Japanese languages uses always English as a latin language. - lang = ELangEnglish; - } - else - { - lang = iLanguage; - } - } - break; - case ENumber: - { - if ( iLanguage == ELangJapanese ) - { - // Japanese languages uses always English as a number language for qwerty. - lang = ELangEnglish; - } - else - { - lang = iLanguage; - } - } - break; - case EHindi: - case ENativeNumber: - lang = iLanguage; - break; - - - default: - break; - } - return lang; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::ActivateUI -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerWestern::ActivateUI() - { - ChangeState(EEntry); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::ChangeState -// -// -// --------------------------------------------------------------------------- -// MAknFepUIManagerStateInterface -TUIState CAknFepUIManagerWestern::ChangeState(TUIState aState) - { -#ifdef RD_SCALABLE_UI_V2 - if (iFepMan->PluginUIManager() && - iFepMan->PluginUIManager()->IsMatchState() && - !iFepMan->PluginUIManager()->IsSpellVisible()) - { - //TRAP_IGNORE(iFepMan->UpdateCbaL(R_AKNFEP_SOFTKEYS_FINGER)); - iFepMan->PluginUIManager()->SetFingerMatchSelectionState(EFalse); - } - - // For addition of ITI features on FSQ - // When candidate list on FSQ is opened, some HW keys may cause state change, - // e.g. left/right keys, need to hide candidate list - if ( iFepMan->PluginUIManager() - && iFepMan->PluginUIManager()->EnableITIOnFSQ() ) - { - TRAP_IGNORE( iFepMan->PluginUIManager()->HideCandidateListL() ); - } - -#endif //RD_SCALABLE_UI_V2 - switch(aState) - { - case EInitial: - { - switch(iMode) - { - case ELatin: - { - if (iPredictive) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - if (iQwertyInputMode) - { -#ifdef __HALF_QWERTY_KEYPAD - if( EPtiKeyboardHalfQwerty == iFepMan->KeyboardLayout()) - { - iFepUiState = TAknFepUiInputStateInitialHalfQwertyWesternPredictive( this ); - } - else -#endif // Half Qwerty - iFepUiState = TAknFepInputStateInitialQwertyWesternPredictive(this); - } // Predictive QWERTY (XT9) changes <---- - else -#endif // RD_INTELLIGENT_TEXT_INPUT - if ( iLanguage == ELangArabic || iLanguage == ELangHebrew - || iLanguage == ELangFarsi || iLanguage == ELangUrdu ) - { - iFepUiState = TAknFepInputStateInitialArabicHebrewPredictive(this); - } - else if (iLanguage == ELangThai) - { - iFepUiState = TAknFepInputStateInitialThaiPredictive(this); - } - // Indic Script - else - { - iFepUiState = TAknFepInputStateInitialWesternPredictive(this); - } - } - else - { - if ( iLanguage == ELangArabic || iLanguage == ELangHebrew - || iLanguage == ELangFarsi || iLanguage == ELangUrdu ) - { - iFepUiState = TAknFepInputStateInitialArabicHebrewMultitap(this); - } - else if (iLanguage == ELangThai) - { - iFepUiState = TAknFepInputStateInitialThaiMultitap(this); - } - /* Indic Script */ - -#ifdef RD_HINDI_PHONETIC_INPUT - - else if(TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage( - ( TLanguage )iLanguage ) ) - { - iFepUiState = TAknFepInputStateInitialIndicPhoneticMultitap( - this, KLangHindiPhonetic); - } -#endif - else if(iLanguage == ELangVietnamese) - { - iFepUiState = TAknFepInputStateInitialVietnameseMultitap(this); - } - else - { - iFepUiState = TAknFepInputStateInitialLatinMultitap(this); - } - } - } - break; - case EHindi: - iFepUiState = TAknFepInputStateInitialIndicMultitap(this, iLanguage); - break; - case ENumber: - case ENativeNumber: - { - // Map directly to the resources... - iFepUiState = TAknFepInputStateInitialNumber(this); - break; - } - default: - AknFepPanic(EAknFepPanicBadInputState); - } - break; - } - case EEntry: - { - switch(iMode) - { - case ELatin: -#ifdef RD_INTELLIGENT_TEXT_INPUT - // Predictive QWERTY (XT9) changes ----> - if (iQwertyInputMode) - { -#ifdef __HALF_QWERTY_KEYPAD - if( EPtiKeyboardHalfQwerty == iFepMan->KeyboardLayout()) - { - iFepUiState = TAknFepUiInputStateEntryHalfQwertyWesternPredictive( this ); - } - else -#endif // Half Qwerty - iFepUiState = TAknFepInputStateEntryQwertyWesternPredictive(this); - } // Predictive QWERTY (XT9) changes <---- - else -#endif // RD_INTELLIGENT_TEXT_INPUT - if ( iLanguage == ELangArabic || iLanguage == ELangHebrew - || iLanguage == ELangFarsi || iLanguage == ELangUrdu) - { - iFepUiState = TAknFepInputStateEntryArabicHebrewPredictive(this); - } - else if (iLanguage == ELangThai) - { - iFepUiState = TAknFepInputStateEntryThaiPredictive(this); - } - /* Indic Script */ - else if (iLanguage == ELangVietnamese) - { - iFepUiState = TAknFepInputStateEntryVietnamesePredictive(this); - } - else if (iLanguage == ELangJapanese) - { - iFepUiState = TAknFepInputStateEntryWesternPredictiveJp(this); - } - else - { - iFepUiState = TAknFepInputStateEntryWesternPredictive(this); - } - break; - case EHindi: - iFepUiState = TAknFepInputStateEntryIndicPredictive(this, iLanguage); - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - break; - } - } - break; - case EQwerty: -#ifdef RD_HINDI_PHONETIC_INPUT - - if(iLanguage == KLangHindiPhonetic) - { - iFepUiState = TAknFepInputStateIndicPhoneticQwerty(this); - } - else - { -#endif - iFepUiState = TAknFepInputStateQwerty(this); -#ifdef RD_HINDI_PHONETIC_INPUT - - } -#endif - break; -#ifdef RD_INTELLIGENT_TEXT_INPUT - case EHalfQwerty: - iFepUiState = TAknFepInputStateHalfQwerty(this); - break; -#endif - case ECandidate: - AknFepPanic(EAknFepPanicBadInputState); - break; - case EPredictiveCandidate: - { - AknFepPanic(EAknFepPanicBadInputState); - } - break; - case EPredictiveInput: - AknFepPanic(EAknFepPanicBadInputState); - break; - default: - AknFepPanic(EAknFepPanicBadInputState); - } - - iPtiEngine->SetObserver(&iFepUiState); -#ifdef _DEBUG - RDebug::Print(_L("UI Manager: New State: %d"), iFepUiState.State()); -#endif - return iStatePtr->State(); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::ThaiSCTResourceId -// -// -// --------------------------------------------------------------------------- -// -TInt CAknFepUIManagerWestern::ThaiSCTResourceId(TUint aPrewChar,TInt aKey) - { - TInt resourceId = 0; - if (iAknFepThaiSCTSelector) - { - resourceId = iAknFepThaiSCTSelector->ThaiSCRResourceId(aPrewChar,aKey); - } - return resourceId; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::VietnameseToneManager -// -// -// --------------------------------------------------------------------------- -// -CAknFepVietnameseToneManager* CAknFepUIManagerWestern::VietnameseToneManager() const - { - return iVietToneMarkMgr; - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::CAknFepUIManagerWestern -// -// -// --------------------------------------------------------------------------- -// -CAknFepUIManagerWestern::CAknFepUIManagerWestern(MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan) - : CAknFepUIManagerBase(aFepMan, aCaseMan), - iFepUiState(NULL) - { - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::ConstructL -// -// -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerWestern::ConstructL(TLanguage aLanguage) - { - CAknFepUIManagerBase::ConstructL(aLanguage); - iAknFepThaiSCTSelector = CAknFepThaiSCTSelector::NewL(); - iVietToneMarkMgr = CAknFepVietnameseToneManager::NewL(); - } - -// --------------------------------------------------------------------------- -// CAknFepUIManagerWestern::FepUIState -// -// -// --------------------------------------------------------------------------- -// -TAknFepInputStateBase* CAknFepUIManagerWestern::FepUIState() - { - return &iFepUiState; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepVietnameseToneManager.cpp --- a/fep/aknfep/src/AknFepVietnameseToneManager.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - - - - - - - -#include "AknFepVietnameseToneManager.h" -#include "AknFepManager.h" - - -CAknFepVietnameseToneManager::CAknFepVietnameseToneManager() - { - } - -CAknFepVietnameseToneManager::~CAknFepVietnameseToneManager() - { - } - -CAknFepVietnameseToneManager* CAknFepVietnameseToneManager::NewL() - { - CAknFepVietnameseToneManager* self = new (ELeave) CAknFepVietnameseToneManager; - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -void CAknFepVietnameseToneManager::ConstructL() - { - } - -void CAknFepVietnameseToneManager::StopToneMarkLooping() - { - iToneIndex = 0; - iVowelIndex = 0; - iIsLooping = EFalse; - } - -TBool CAknFepVietnameseToneManager::StartToneMarkLooping() - { - __ASSERT_DEBUG(iFepMan != NULL, - RDebug::Print( - _L("In CAknFepVietnameseToneManager::StartLooping,\nINVALID PARAM: Empty Fep Manager!"))); - - StopToneMarkLooping(); - - const TText prevChr = iFepMan->PreviousChar(); - - // Judge if the prevChr is a vowel or not - for (TUint i = 0; i < sizeof(VietVowelList) / sizeof(TText); ++i) - { - if (prevChr == VietVowelList[i]) - { - iIsLooping = ETrue; - iVowelIndex = i; - break; - } - } - - return iIsLooping; - } - -TText CAknFepVietnameseToneManager::GetVowelWithToneMark() const - { - // First vowel row lists those tone marks themselves - return VietToneMatrix[iVowelIndex+1][iToneIndex]; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepZhuyinAnalyser.cpp --- a/fep/aknfep/src/AknFepZhuyinAnalyser.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,481 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of the vkb data manager - * -*/ - - - - - - - - - - - - -// system includes - - -// user includes -#include "AknFepZhuyinAnalyser.h" -#include "AknFepZhuyinAnalyserDb.h" - -class TSpellBand - { -public: - int iStart; - int iCount; - }; - -class TSpellAnalysis : public TPriQueLink - { -public: - RArray iSeparators; - TSpellAnalysis( ) - { - iPriority = -0x10000; - } - ~TSpellAnalysis( ) - { - iSeparators.Close( ); - } - - TSpellAnalysis( const TSpellAnalysis& aSource ) - { - iPriority = aSource.iPriority; - for (TInt i = 0; i < aSource.iSeparators.Count( ); ++i ) - { - iSeparators.Append( aSource.iSeparators[i] ); - } - } - void Calculate( ) - { - iPriority = (iSeparators.Count() + 1) << 16; - TInt multi = 12; - for (TInt i = 0; i < iSeparators.Count(); ++i ) - { - iPriority += ( 6 - iSeparators[i]) << multi; - if ( multi >= 3 ) - { - multi -= 3; - } - } - iPriority = -iPriority; - } - TInt GetStartPos( ) - { - if ( iSeparators.Count() == 0 ) - { - return 0; - } - else - { - return iSeparators[ iSeparators.Count() - 1 ]; - } - } - void AddSeparator( TInt aPos ) - { - iSeparators.Append( aPos ); - Calculate( ); - } - }; - -// ----------------------------------------------------------------------------- -// CAknFepVkbPinyinAnalyser::CAknFepVkbPinyinAnalyser -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CAknFepZhuyinAnalyser::CAknFepZhuyinAnalyser( ) - { - iAnalysisFlag = EFalse; - } - -// ----------------------------------------------------------------------------- -// CAknFepVkbPinyinAnalyser::NewL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CAknFepZhuyinAnalyser* CAknFepZhuyinAnalyser::NewL( CZhuyinAnalyserDbFeed* aDb ) - { - CAknFepZhuyinAnalyser* self = new ( ELeave ) CAknFepZhuyinAnalyser(); - CleanupStack::PushL( self ); - self->ConstructL( aDb ); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// CAknFepVkbPinyinAnalyser::~CAknFepVkbPinyinAnalyser -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CAknFepZhuyinAnalyser::~CAknFepZhuyinAnalyser( ) - { - delete []iParagraph; - delete []iSpellLibrary; - delete iLastResult; - delete iDb; - } - -void CAknFepZhuyinAnalyser::ConstructL( CZhuyinAnalyserDbFeed* aDb ) - { - ASSERT( aDb != NULL ); - iDb = aDb; - - TInt length = iDb->GetSpellCount( ); - - iSpellLibrary = new(ELeave) TPtrC[length]; - for (TInt i = 0; i < length; ++i ) - { - iSpellLibrary[i].Set( aDb->GetSpellByIndex( i ) ); - } - - TInt current = 0; - TInt pinyinElementCount = iDb->GetSpellElementCount( ); - iParagraph = new(ELeave) TSpellBand[pinyinElementCount]; - iParagraph[current].iStart = 0; - for (TInt i = 0; i < length; ++i ) - { - if ( iSpellLibrary[i][0] != iDb->GetSpellElementByIndex( current ) ) - { - iParagraph[current].iCount = i - iParagraph[current].iStart; - current++; - iParagraph[current].iStart = i; - while (iSpellLibrary[i][0] - != iDb->GetSpellElementByIndex( current ) ) - { - iParagraph[current].iCount = 0; - current ++; - iParagraph[current].iStart = i; - } - } - } - - iParagraph[current].iCount = length - iParagraph[current].iStart; - - } - -HBufC* CAknFepZhuyinAnalyser::LastAnalysisResult( ) - { - return iLastResult; - } - -TBool CAknFepZhuyinAnalyser::AnalyzeL( const TDesC& aInputString ) - { - delete iLastResult; - iLastResult = NULL; - - iLastResult = HBufC::NewL( aInputString.Length( ) * 2 ); - - if ( aInputString.Length( ) < 1 ) - { - return ETrue; - } - - if ( aInputString.Length( ) == 1 ) - { - iLastResult->Des().Append( aInputString[0] ); - if ( iDb->IsFirstElement( aInputString[0] ) ) - { - return ETrue; - } - else - { - return EFalse; - } - } - - if ( !iDb->IsFirstElement( aInputString[0] ) ) - { - iLastResult->Des().Append( aInputString ); - return EFalse; - } - - int first = 0, second = 1; - TBool seriateTonemark = EFalse; - for (; second < aInputString.Length( ); first++, second++ ) - { - if ( iDb->IsToneMark( aInputString[first], aInputString[second] ) ) - { - iLastResult->Des().Append( aInputString ); - seriateTonemark = ETrue; - break; - } - } - - first = 0; - second = 1; - int previous = 0; - iAnalysisFlag = ETrue; - //rough spilit - for (; second < aInputString.Length( ) && !seriateTonemark; first++, second++ ) - { - if ( !iDb->IsNormalElement( aInputString[first] ) ) - { - //go to detail analysis - if ( first > previous ) - { - TPtrC toanalysis = aInputString.Mid( previous, first - - previous ); - DetailAnalyseL( toanalysis ); - } - - iLastResult->Des().Append( aInputString[first] ); - previous = first + 1; - } - else if ( !iDb->IsNormalElement( aInputString[second] ) ) - { - //go to detail analysis - if ( second > previous ) - { - TPtrC toanalysis = aInputString.Mid( previous, second - - previous ); - DetailAnalyseL( toanalysis ); - } - - iLastResult->Des().Append( aInputString[second] ); - previous = second + 1; - first ++; - second ++; - } - else if ( iDb->GetSpellElementType( aInputString[first] ) - == ESpellVowel || iDb->GetSpellElementType( aInputString[second] ) - == ESpellVowel ) - { - continue; - } - else if ( iDb->GetSpellElementType( aInputString[first] ) - == ESpellConsonant - || iDb->GetSpellElementType( aInputString[second] ) - == ESpellConsonant ) - { - //go to detail analysis - TPtrC toanalysis = aInputString.Mid( previous, second - previous ); - DetailAnalyseL( toanalysis ); - iLastResult->Des().Append( KProgramSeparator ); - previous = second; - } - else - { - if ( (aInputString[second] == L'h'&& ( aInputString[first] == L'z' || aInputString[first] == L'c' || aInputString[first] == L's')) || //ch, sh, zh - (aInputString[second] == L'g' && aInputString[first] == L'n') || //ng - (aInputString[second] == L'n' && aInputString[first] == L'h') //hn - ) - { - } - else - { - //go to detail analysis - TPtrC toanalysis = aInputString.Mid(previous, second - previous); - DetailAnalyseL(toanalysis); - iLastResult->Des().Append(KProgramSeparator); - previous = second; - } - } - } - - if( aInputString.Length() <= previous - || second> aInputString.Length() - || seriateTonemark ) - { - return TRUE; - } - - TPtrC toanalysis = aInputString.Mid(previous, second - previous); - DetailAnalyseL(toanalysis); - return iAnalysisFlag; - } - -TBool CAknFepZhuyinAnalyser::DetailAnalyseL( const TDesC& aInputString ) - { - TPriQue open; - TSpellAnalysis* p = new(ELeave) TSpellAnalysis(); - - open.Add( *p ); - - int sameLength; - int startPos; - TBool findRes; - TSpellAnalysis* pNext= NULL; - - while ( !open.IsEmpty( ) ) - { - pNext = open.First( ); - pNext->Deque( ); - - startPos = pNext->GetStartPos( ); - findRes = FindSpell( aInputString.Mid( startPos ), sameLength ); - - if ( findRes || sameLength + startPos == aInputString.Length( ) ) - { - //got it! - int start = 0; - for (TInt j = 0; j < pNext->iSeparators.Count( ); ++j ) - { - iLastResult->Des().Append( aInputString.Mid( start, pNext->iSeparators[j] - - start ) ); - start = pNext->iSeparators[j]; - iLastResult->Des().Append( KProgramSeparator ); - } - - iLastResult->Des().Append( aInputString.Mid( start, aInputString.Length( ) - - start ) ); - break; - } - else if ( sameLength == 0 ) - { - delete pNext; - pNext = NULL; - } - else - { - int partLength = sameLength - 1; - while (partLength > 0 ) - { - int templen; - if ( FindSpell( aInputString.Mid( startPos, partLength ), - templen ) ) - { - TSpellAnalysis* q = new TSpellAnalysis(*pNext); - q->AddSeparator( startPos + partLength ); - open.Add( *q ); - } - partLength --; - } - pNext->AddSeparator( startPos + sameLength ); - open.Add( *pNext ); - } - } - if ( pNext ) - { - delete pNext; - pNext = NULL; - while ( !open.IsEmpty( ) ) - { - TSpellAnalysis* p = open.First( ); - p->Deque( ); - delete p; - } - return true; - } - else - { - //not found - /* - FindSpell(aInputString, sameLength); - int offset = 0; - TBool rtn = sameLength > 0; - while( sameLength > 0 ) - { - iLastResult->Des().Append(aInputString.Mid(offset, sameLength)); - iLastResult->Des().Append(KProgramSeparator); - offset += sameLength; - FindSpell(aInputString.Mid(offset), sameLength); - } - */ - //FindSpell(aInputString, sameLength); - int offset = 0; - - while (offset < aInputString.Length( ) ) - { - FindSpell( aInputString.Mid( offset ), sameLength ); - - if ( sameLength ) - { - iLastResult->Des().Append( aInputString.Mid( offset, sameLength ) ); - iLastResult->Des().Append( KProgramSeparator ); - offset += sameLength; - } - else - { - iLastResult->Des().Append( aInputString.Mid( offset, 1 ) ); - - iLastResult->Des().Append( KProgramSeparator ); - - offset += 1; - } - } - if ( iLastResult->Des()[ iLastResult->Length() - 1 ] == KProgramSeparator ) - { - iLastResult->Des().SetLength( iLastResult->Length( ) - 1 ); - } - iAnalysisFlag = EFalse; - return EFalse; - } - } - -TBool CAknFepZhuyinAnalyser::FindSpell( const TDesC& aSpell, TInt& aSameLength ) - { - int index = aSpell[0] - iDb->GetSpellElementByIndex( 0 ); - - int start = iParagraph[index].iStart; - int end = iParagraph[index].iCount + iParagraph[index].iStart - 1; - int mid = (start + end ) >> 1; - int result = 0; - aSameLength = 0; - while (mid > start && mid < end ) - { - result = Compare( iSpellLibrary[mid], aSpell, aSameLength ); - if ( result == 0 ) - { - return true; - } - else if ( result < 0 ) - { - start = mid; - mid = (start + end ) >> 1; - } - else - { - end = mid; - mid = (start + end) >> 1; - } - } - int newLength; - if ( result > 0 ) - { - result = Compare( iSpellLibrary[start], aSpell, newLength ); - } - else - { - result = Compare( iSpellLibrary[end], aSpell, newLength ); - } - newLength > aSameLength ? aSameLength = newLength : aSameLength; - - return result == 0; - } - -TInt CAknFepZhuyinAnalyser::Compare( const TDesC& aFirst, - const TDesC& aSecond, TInt& aSameLength ) - { - aSameLength = 0; - - TInt length = aFirst.Length( ) > aSecond.Length( ) ? aSecond.Length( ) - : aFirst.Length( ); - - for (TInt i = 0; i < length; ++i ) - { - if ( aFirst[i] != aSecond[i] ) - { - return aFirst[i] - aSecond[i]; - } - - aSameLength ++; - } - - return aFirst.Length( ) - aSecond.Length( ); - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/AknFepZhuyinAnalyserDb.cpp --- a/fep/aknfep/src/AknFepZhuyinAnalyserDb.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1067 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of the vkb data manager -* -*/ - - - - - - - - - - - - - -#include "AknFepZhuyinAnalyserDb.h" -// constant define - -// Zhuyin DB data -const TUint16 KZhuyinBase = 0x3105; -const TInt16 KZhuyinElementCount = 37; -const TUint16 KZhuyinSpellsLength[] = - { - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, - 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, - 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, - 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, 0x2, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, - 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x3, 0x3, 0x3, - 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, - 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, 0x1, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x1, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x1, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, - 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x1, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, - 0x3, 0x3, 0x3, 0x3, 0x1, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, - 0x3, 0x3, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, 0x3, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, - 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x2, 0x2, - 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x2, 0x2, - 0x2, 0x2 - }; -const TUint16 KZhuyinSpellsLib[] = - { - 0x3105, 0x311a, - 0x3105, 0x311b, - 0x3105, 0x311e, - 0x3105, 0x311f, - 0x3105, 0x3120, - 0x3105, 0x3122, - 0x3105, 0x3123, - 0x3105, 0x3124, - 0x3105, 0x3125, - 0x3105, 0x3127, - 0x3105, 0x3127, 0x311d, - 0x3105, 0x3127, 0x3120, - 0x3105, 0x3127, 0x3122, - 0x3105, 0x3127, 0x3123, - 0x3105, 0x3127, 0x3125, - 0x3105, 0x3128, - 0x3106, 0x311a, - 0x3106, 0x311b, - 0x3106, 0x311e, - 0x3106, 0x311f, - 0x3106, 0x3120, - 0x3106, 0x3121, - 0x3106, 0x3122, - 0x3106, 0x3123, - 0x3106, 0x3124, - 0x3106, 0x3125, - 0x3106, 0x3127, - 0x3106, 0x3127, 0x311d, - 0x3106, 0x3127, 0x3120, - 0x3106, 0x3127, 0x3122, - 0x3106, 0x3127, 0x3123, - 0x3106, 0x3127, 0x3125, - 0x3106, 0x3128, - 0x3107, 0x311a, - 0x3107, 0x311b, - 0x3107, 0x311c, - 0x3107, 0x311e, - 0x3107, 0x311f, - 0x3107, 0x3120, - 0x3107, 0x3121, - 0x3107, 0x3122, - 0x3107, 0x3123, - 0x3107, 0x3124, - 0x3107, 0x3125, - 0x3107, 0x3127, - 0x3107, 0x3127, 0x311d, - 0x3107, 0x3127, 0x3120, - 0x3107, 0x3127, 0x3121, - 0x3107, 0x3127, 0x3122, - 0x3107, 0x3127, 0x3123, - 0x3107, 0x3127, 0x3125, - 0x3107, 0x3128, - 0x3108, 0x311a, - 0x3108, 0x311b, - 0x3108, 0x311f, - 0x3108, 0x3121, - 0x3108, 0x3122, - 0x3108, 0x3123, - 0x3108, 0x3124, - 0x3108, 0x3125, - 0x3108, 0x3128, - 0x3109, 0x311a, - 0x3109, 0x311c, - 0x3109, 0x311e, - 0x3109, 0x311f, - 0x3109, 0x3120, - 0x3109, 0x3121, - 0x3109, 0x3122, - 0x3109, 0x3124, - 0x3109, 0x3125, - 0x3109, 0x3127, - 0x3109, 0x3127, 0x311d, - 0x3109, 0x3127, 0x3120, - 0x3109, 0x3127, 0x3121, - 0x3109, 0x3127, 0x3122, - 0x3109, 0x3127, 0x3125, - 0x3109, 0x3128, - 0x3109, 0x3128, 0x311b, - 0x3109, 0x3128, 0x311f, - 0x3109, 0x3128, 0x3122, - 0x3109, 0x3128, 0x3123, - 0x3109, 0x3128, 0x3125, - 0x310a, 0x311a, - 0x310a, 0x311c, - 0x310a, 0x311e, - 0x310a, 0x3120, - 0x310a, 0x3121, - 0x310a, 0x3122, - 0x310a, 0x3124, - 0x310a, 0x3125, - 0x310a, 0x3127, - 0x310a, 0x3127, 0x311d, - 0x310a, 0x3127, 0x3120, - 0x310a, 0x3127, 0x3122, - 0x310a, 0x3127, 0x3125, - 0x310a, 0x3128, - 0x310a, 0x3128, 0x311b, - 0x310a, 0x3128, 0x311f, - 0x310a, 0x3128, 0x3122, - 0x310a, 0x3128, 0x3123, - 0x310a, 0x3128, 0x3125, - 0x310b, 0x311a, - 0x310b, 0x311c, - 0x310b, 0x311e, - 0x310b, 0x311f, - 0x310b, 0x3120, - 0x310b, 0x3121, - 0x310b, 0x3122, - 0x310b, 0x3123, - 0x310b, 0x3124, - 0x310b, 0x3125, - 0x310b, 0x3127, - 0x310b, 0x3127, 0x311d, - 0x310b, 0x3127, 0x3120, - 0x310b, 0x3127, 0x3121, - 0x310b, 0x3127, 0x3122, - 0x310b, 0x3127, 0x3123, - 0x310b, 0x3127, 0x3124, - 0x310b, 0x3127, 0x3125, - 0x310b, 0x3128, - 0x310b, 0x3128, 0x311b, - 0x310b, 0x3128, 0x3122, - 0x310b, 0x3128, 0x3125, - 0x310b, 0x3129, - 0x310b, 0x3129, 0x311d, - 0x310c, 0x311a, - 0x310c, 0x311c, - 0x310c, 0x311e, - 0x310c, 0x311f, - 0x310c, 0x3120, - 0x310c, 0x3121, - 0x310c, 0x3122, - 0x310c, 0x3124, - 0x310c, 0x3125, - 0x310c, 0x3127, - 0x310c, 0x3127, 0x311a, - 0x310c, 0x3127, 0x311d, - 0x310c, 0x3127, 0x3120, - 0x310c, 0x3127, 0x3121, - 0x310c, 0x3127, 0x3122, - 0x310c, 0x3127, 0x3123, - 0x310c, 0x3127, 0x3124, - 0x310c, 0x3127, 0x3125, - 0x310c, 0x3128, - 0x310c, 0x3128, 0x311b, - 0x310c, 0x3128, 0x3122, - 0x310c, 0x3128, 0x3123, - 0x310c, 0x3128, 0x3125, - 0x310c, 0x3129, - 0x310c, 0x3129, 0x311d, - 0x310c, 0x3129, 0x3122, - 0x310d, 0x311a, - 0x310d, 0x311c, - 0x310d, 0x311e, - 0x310d, 0x311f, - 0x310d, 0x3120, - 0x310d, 0x3121, - 0x310d, 0x3122, - 0x310d, 0x3123, - 0x310d, 0x3124, - 0x310d, 0x3125, - 0x310d, 0x3128, - 0x310d, 0x3128, 0x311a, - 0x310d, 0x3128, 0x311b, - 0x310d, 0x3128, 0x311e, - 0x310d, 0x3128, 0x311f, - 0x310d, 0x3128, 0x3122, - 0x310d, 0x3128, 0x3123, - 0x310d, 0x3128, 0x3124, - 0x310d, 0x3128, 0x3125, - 0x310e, 0x311a, - 0x310e, 0x311c, - 0x310e, 0x311e, - 0x310e, 0x3120, - 0x310e, 0x3121, - 0x310e, 0x3122, - 0x310e, 0x3123, - 0x310e, 0x3124, - 0x310e, 0x3125, - 0x310e, 0x3128, - 0x310e, 0x3128, 0x311a, - 0x310e, 0x3128, 0x311b, - 0x310e, 0x3128, 0x311e, - 0x310e, 0x3128, 0x311f, - 0x310e, 0x3128, 0x3122, - 0x310e, 0x3128, 0x3123, - 0x310e, 0x3128, 0x3124, - 0x310e, 0x3128, 0x3125, - 0x310f, 0x311a, - 0x310f, 0x311c, - 0x310f, 0x311e, - 0x310f, 0x311f, - 0x310f, 0x3120, - 0x310f, 0x3121, - 0x310f, 0x3122, - 0x310f, 0x3123, - 0x310f, 0x3124, - 0x310f, 0x3125, - 0x310f, 0x3128, - 0x310f, 0x3128, 0x311a, - 0x310f, 0x3128, 0x311b, - 0x310f, 0x3128, 0x311e, - 0x310f, 0x3128, 0x311f, - 0x310f, 0x3128, 0x3122, - 0x310f, 0x3128, 0x3123, - 0x310f, 0x3128, 0x3124, - 0x310f, 0x3128, 0x3125, - 0x3110, 0x3127, - 0x3110, 0x3127, 0x311a, - 0x3110, 0x3127, 0x311d, - 0x3110, 0x3127, 0x3120, - 0x3110, 0x3127, 0x3121, - 0x3110, 0x3127, 0x3122, - 0x3110, 0x3127, 0x3123, - 0x3110, 0x3127, 0x3124, - 0x3110, 0x3127, 0x3125, - 0x3110, 0x3129, - 0x3110, 0x3129, 0x311d, - 0x3110, 0x3129, 0x3122, - 0x3110, 0x3129, 0x3123, - 0x3110, 0x3129, 0x3125, - 0x3111, 0x3127, - 0x3111, 0x3127, 0x311a, - 0x3111, 0x3127, 0x311d, - 0x3111, 0x3127, 0x3120, - 0x3111, 0x3127, 0x3121, - 0x3111, 0x3127, 0x3122, - 0x3111, 0x3127, 0x3123, - 0x3111, 0x3127, 0x3124, - 0x3111, 0x3127, 0x3125, - 0x3111, 0x3129, - 0x3111, 0x3129, 0x311d, - 0x3111, 0x3129, 0x3122, - 0x3111, 0x3129, 0x3123, - 0x3111, 0x3129, 0x3125, - 0x3112, 0x3127, - 0x3112, 0x3127, 0x311a, - 0x3112, 0x3127, 0x311d, - 0x3112, 0x3127, 0x3120, - 0x3112, 0x3127, 0x3121, - 0x3112, 0x3127, 0x3122, - 0x3112, 0x3127, 0x3123, - 0x3112, 0x3127, 0x3124, - 0x3112, 0x3127, 0x3125, - 0x3112, 0x3129, - 0x3112, 0x3129, 0x311d, - 0x3112, 0x3129, 0x3122, - 0x3112, 0x3129, 0x3123, - 0x3112, 0x3129, 0x3125, - 0x3113, - 0x3113, 0x311a, - 0x3113, 0x311c, - 0x3113, 0x311e, - 0x3113, 0x311f, - 0x3113, 0x3120, - 0x3113, 0x3121, - 0x3113, 0x3122, - 0x3113, 0x3123, - 0x3113, 0x3124, - 0x3113, 0x3125, - 0x3113, 0x3128, - 0x3113, 0x3128, 0x311a, - 0x3113, 0x3128, 0x311b, - 0x3113, 0x3128, 0x311e, - 0x3113, 0x3128, 0x311f, - 0x3113, 0x3128, 0x3122, - 0x3113, 0x3128, 0x3123, - 0x3113, 0x3128, 0x3124, - 0x3113, 0x3128, 0x3125, - 0x3114, - 0x3114, 0x311a, - 0x3114, 0x311c, - 0x3114, 0x311e, - 0x3114, 0x3120, - 0x3114, 0x3121, - 0x3114, 0x3122, - 0x3114, 0x3123, - 0x3114, 0x3124, - 0x3114, 0x3125, - 0x3114, 0x3128, - 0x3114, 0x3128, 0x311b, - 0x3114, 0x3128, 0x311e, - 0x3114, 0x3128, 0x311f, - 0x3114, 0x3128, 0x3122, - 0x3114, 0x3128, 0x3123, - 0x3114, 0x3128, 0x3124, - 0x3114, 0x3128, 0x3125, - 0x3115, - 0x3115, 0x311a, - 0x3115, 0x311c, - 0x3115, 0x311e, - 0x3115, 0x311f, - 0x3115, 0x3120, - 0x3115, 0x3121, - 0x3115, 0x3122, - 0x3115, 0x3123, - 0x3115, 0x3124, - 0x3115, 0x3125, - 0x3115, 0x3128, - 0x3115, 0x3128, 0x311a, - 0x3115, 0x3128, 0x311b, - 0x3115, 0x3128, 0x311e, - 0x3115, 0x3128, 0x311f, - 0x3115, 0x3128, 0x3122, - 0x3115, 0x3128, 0x3123, - 0x3115, 0x3128, 0x3124, - 0x3116, - 0x3116, 0x311c, - 0x3116, 0x3120, - 0x3116, 0x3121, - 0x3116, 0x3122, - 0x3116, 0x3123, - 0x3116, 0x3124, - 0x3116, 0x3125, - 0x3116, 0x3128, - 0x3116, 0x3128, 0x311b, - 0x3116, 0x3128, 0x311f, - 0x3116, 0x3128, 0x3122, - 0x3116, 0x3128, 0x3123, - 0x3116, 0x3128, 0x3125, - 0x3117, - 0x3117, 0x311a, - 0x3117, 0x311c, - 0x3117, 0x311e, - 0x3117, 0x311f, - 0x3117, 0x3120, - 0x3117, 0x3121, - 0x3117, 0x3122, - 0x3117, 0x3123, - 0x3117, 0x3124, - 0x3117, 0x3125, - 0x3117, 0x3128, - 0x3117, 0x3128, 0x311b, - 0x3117, 0x3128, 0x311f, - 0x3117, 0x3128, 0x3122, - 0x3117, 0x3128, 0x3123, - 0x3117, 0x3128, 0x3125, - 0x3118, - 0x3118, 0x311a, - 0x3118, 0x311c, - 0x3118, 0x311e, - 0x3118, 0x3120, - 0x3118, 0x3121, - 0x3118, 0x3122, - 0x3118, 0x3123, - 0x3118, 0x3124, - 0x3118, 0x3125, - 0x3118, 0x3128, - 0x3118, 0x3128, 0x311b, - 0x3118, 0x3128, 0x311f, - 0x3118, 0x3128, 0x3122, - 0x3118, 0x3128, 0x3123, - 0x3118, 0x3128, 0x3125, - 0x3119, - 0x3119, 0x311a, - 0x3119, 0x311c, - 0x3119, 0x311e, - 0x3119, 0x3120, - 0x3119, 0x3121, - 0x3119, 0x3122, - 0x3119, 0x3123, - 0x3119, 0x3124, - 0x3119, 0x3125, - 0x3119, 0x3128, - 0x3119, 0x3128, 0x311b, - 0x3119, 0x3128, 0x311f, - 0x3119, 0x3128, 0x3122, - 0x3119, 0x3128, 0x3123, - 0x3119, 0x3128, 0x3125, - 0x311a, - 0x311b, - 0x311c, - 0x311e, - 0x311f, - 0x3120, - 0x3121, - 0x3122, - 0x3123, - 0x3124, - 0x3125, - 0x3126, - 0x3127, - 0x3127, 0x311a, - 0x3127, 0x311b, - 0x3127, 0x311d, - 0x3127, 0x311e, - 0x3127, 0x3120, - 0x3127, 0x3121, - 0x3127, 0x3122, - 0x3127, 0x3123, - 0x3127, 0x3124, - 0x3127, 0x3125, - 0x3128, - 0x3128, 0x311a, - 0x3128, 0x311b, - 0x3128, 0x311e, - 0x3128, 0x311f, - 0x3128, 0x3122, - 0x3128, 0x3123, - 0x3128, 0x3124, - 0x3128, 0x3125, - 0x3129, - 0x3129, 0x311d, - 0x3129, 0x3122, - 0x3129, 0x3123, - 0x3129, 0x3125 - }; - -const TUint16 KZhuyinTypeTable[] = - { - // 21 ESpellConsonant - ESpellConsonant, ESpellConsonant, ESpellConsonant, ESpellConsonant, ESpellConsonant, - ESpellConsonant, ESpellSpecialConsonnant, ESpellConsonant, ESpellSpecialConsonnant, ESpellConsonant, - ESpellSpecialConsonnant, ESpellConsonant, ESpellConsonant, ESpellConsonant, ESpellConsonant, - ESpellConsonant, ESpellConsonant, ESpellConsonant, ESpellSpecialConsonnant, ESpellSpecialConsonnant, - ESpellSpecialConsonnant, - //16 ESpellVowel - ESpellVowel, ESpellVowel, ESpellVowel, ESpellVowel, ESpellVowel, - ESpellVowel, ESpellVowel, ESpellVowel, ESpellVowel, ESpellVowel, - ESpellVowel, ESpellVowel, ESpellVowel, ESpellVowel, ESpellVowel, - ESpellVowel - - }; - -const TUint16 KZhuyinNoFirstElem[] = - { - //0x311D - 0x0020, 0x02CA, 0x02C7, 0x02CB, 0x02D9 - }; - -// Pinyin DB data -const TUint16 KPinyinBase = L'a'; -const TUint16 KPinyinElementCount = 26; -const TUint16 KPinyinSpellsLength[] = - { - 1,2,2,3,2,2,3,3,4,3,3,3,4,2,4,4,3,3,4,2, - 2,2,3,3,4,3,2,3,4,3,4,4,5,4,3,4,5,3,5,4, - 3,4,5,5,6,4,4,4,2,4,3,2,4,3,3,3,2,3,3,4, - 3,2,3,3,4,2,3,4,4,3,4,3,4,3,2,4,3,3,3,1, - 2,2,3,2,2,3,4,3,3,4,2,3,2,2,3,3,4,3,2,3, - 3,4,4,3,2,3,4,4,5,3,3,3,2,3,3,4,3,2,3,3, - 4,2,3,4,3,2,3,4,4,5,3,3,3,2,3,4,5,4,3,3, - 4,5,3,2,4,3,3,2,3,3,4,3,2,3,3,4,4,3,2,3, - 4,4,5,3,3,3,2,3,3,4,3,2,3,4,2,3,4,5,4,3, - 3,4,3,2,4,3,2,4,3,3,2,3,1,2,3,3,4,3,2,3, - 3,4,2,4,4,3,3,4,3,2,3,2,1,2,3,3,4,3,2,3, - 3,4,2,2,3,4,5,4,3,3,4,3,4,3,2,4,3,2,3,1, - 2,2,3,3,4,3,3,3,4,2,4,4,3,3,4,2,3,2,2,3, - 4,5,4,3,3,4,5,3,2,4,3,3,3,4,3,2,3,4,2,4, - 3,2,4,3,3,3,2,3,3,4,3,2,3,4,3,4,4,5,4,3, - 4,4,5,3,4,3,4,5,5,6,4,4,4,2,4,3,2,4,3,3, - 3,2,3,3,4,3,2,4,2,4,4,3,4,4,3,2,4,3,3,3, - 2,3,3,4,3,3,4,2,2,2,3,4,5,4,3,3,4,5,3,2, - 4,3,3,2,3,4,3,2,2,3,4,2,4,3,2,4,3,3,2,3, - 3,4,3,2,3,3,4,3,4,4,5,4,3,4,4,5,3,5,4,3, - 4,5,5,6,4,4,4,2,4,3,2,4,3,3,3 - }; -const TUint16 KPinyinSpellsLib[] = - { - 0x61, //a - 0x61, 0x69, //ai - 0x61, 0x6e, //an - 0x61, 0x6e, 0x67, //ang - 0x61, 0x6f, //ao - 0x62, 0x61, //ba - 0x62, 0x61, 0x69, //bai - 0x62, 0x61, 0x6e, //ban - 0x62, 0x61, 0x6e, 0x67, //bang - 0x62, 0x61, 0x6f, //bao - 0x62, 0x65, 0x69, //bei - 0x62, 0x65, 0x6e, //ben - 0x62, 0x65, 0x6e, 0x67, //beng - 0x62, 0x69, //bi - 0x62, 0x69, 0x61, 0x6e, //bian - 0x62, 0x69, 0x61, 0x6f, //biao - 0x62, 0x69, 0x65, //bie - 0x62, 0x69, 0x6e, //bin - 0x62, 0x69, 0x6e, 0x67, //bing - 0x62, 0x6f, //bo - 0x62, 0x75, //bu - 0x63, 0x61, //ca - 0x63, 0x61, 0x69, //cai - 0x63, 0x61, 0x6e, //can - 0x63, 0x61, 0x6e, 0x67, //cang - 0x63, 0x61, 0x6f, //cao - 0x63, 0x65, //ce - 0x63, 0x65, 0x6e, //cen - 0x63, 0x65, 0x6e, 0x67, //ceng - 0x63, 0x68, 0x61, //cha - 0x63, 0x68, 0x61, 0x69, //chai - 0x63, 0x68, 0x61, 0x6e, //chan - 0x63, 0x68, 0x61, 0x6e, 0x67, //chang - 0x63, 0x68, 0x61, 0x6f, //chao - 0x63, 0x68, 0x65, //che - 0x63, 0x68, 0x65, 0x6e, //chen - 0x63, 0x68, 0x65, 0x6e, 0x67, //cheng - 0x63, 0x68, 0x69, //chi - 0x63, 0x68, 0x6f, 0x6e, 0x67, //chong - 0x63, 0x68, 0x6f, 0x75, //chou - 0x63, 0x68, 0x75, //chu - 0x63, 0x68, 0x75, 0x61, //chua - 0x63, 0x68, 0x75, 0x61, 0x69, //chuai - 0x63, 0x68, 0x75, 0x61, 0x6e, //chuan - 0x63, 0x68, 0x75, 0x61, 0x6e, 0x67, //chuang - 0x63, 0x68, 0x75, 0x69, //chui - 0x63, 0x68, 0x75, 0x6e, //chun - 0x63, 0x68, 0x75, 0x6f, //chuo - 0x63, 0x69, //ci - 0x63, 0x6f, 0x6e, 0x67, //cong - 0x63, 0x6f, 0x75, //cou - 0x63, 0x75, //cu - 0x63, 0x75, 0x61, 0x6e, //cuan - 0x63, 0x75, 0x69, //cui - 0x63, 0x75, 0x6e, //cun - 0x63, 0x75, 0x6f, //cuo - 0x64, 0x61, //da - 0x64, 0x61, 0x69, //dai - 0x64, 0x61, 0x6e, //dan - 0x64, 0x61, 0x6e, 0x67, //dang - 0x64, 0x61, 0x6f, //dao - 0x64, 0x65, //de - 0x64, 0x65, 0x69, //dei - 0x64, 0x65, 0x6e, //den - 0x64, 0x65, 0x6e, 0x67, //deng - 0x64, 0x69, //di - 0x64, 0x69, 0x61, //dia - 0x64, 0x69, 0x61, 0x6e, //dian - 0x64, 0x69, 0x61, 0x6f, //diao - 0x64, 0x69, 0x65, //die - 0x64, 0x69, 0x6e, 0x67, //ding - 0x64, 0x69, 0x75, //diu - 0x64, 0x6f, 0x6e, 0x67, //dong - 0x64, 0x6f, 0x75, //dou - 0x64, 0x75, //du - 0x64, 0x75, 0x61, 0x6e, //duan - 0x64, 0x75, 0x69, //dui - 0x64, 0x75, 0x6e, //dun - 0x64, 0x75, 0x6f, //duo - 0x65, //e - 0x65, 0x69, //ei - 0x65, 0x6e, //en - 0x65, 0x6e, 0x67, //eng - 0x65, 0x72, //er - 0x66, 0x61, //fa - 0x66, 0x61, 0x6e, //fan - 0x66, 0x61, 0x6e, 0x67, //fang - 0x66, 0x65, 0x69, //fei - 0x66, 0x65, 0x6e, //fen - 0x66, 0x65, 0x6e, 0x67, //feng - 0x66, 0x6f, //fo - 0x66, 0x6f, 0x75, //fou - 0x66, 0x75, //fu - 0x67, 0x61, //ga - 0x67, 0x61, 0x69, //gai - 0x67, 0x61, 0x6e, //gan - 0x67, 0x61, 0x6e, 0x67, //gang - 0x67, 0x61, 0x6f, //gao - 0x67, 0x65, //ge - 0x67, 0x65, 0x69, //gei - 0x67, 0x65, 0x6e, //gen - 0x67, 0x65, 0x6e, 0x67, //geng - 0x67, 0x6f, 0x6e, 0x67, //gong - 0x67, 0x6f, 0x75, //gou - 0x67, 0x75, //gu - 0x67, 0x75, 0x61, //gua - 0x67, 0x75, 0x61, 0x69, //guai - 0x67, 0x75, 0x61, 0x6e, //guan - 0x67, 0x75, 0x61, 0x6e, 0x67, //guang - 0x67, 0x75, 0x69, //gui - 0x67, 0x75, 0x6e, //gun - 0x67, 0x75, 0x6f, //guo - 0x68, 0x61, //ha - 0x68, 0x61, 0x69, //hai - 0x68, 0x61, 0x6e, //han - 0x68, 0x61, 0x6e, 0x67, //hang - 0x68, 0x61, 0x6f, //hao - 0x68, 0x65, //he - 0x68, 0x65, 0x69, //hei - 0x68, 0x65, 0x6e, //hen - 0x68, 0x65, 0x6e, 0x67, //heng - 0x68, 0x6d, //hm - 0x68, 0x6e, 0x67, //hng - 0x68, 0x6f, 0x6e, 0x67, //hong - 0x68, 0x6f, 0x75, //hou - 0x68, 0x75, //hu - 0x68, 0x75, 0x61, //hua - 0x68, 0x75, 0x61, 0x69, //huai - 0x68, 0x75, 0x61, 0x6e, //huan - 0x68, 0x75, 0x61, 0x6e, 0x67, //huang - 0x68, 0x75, 0x69, //hui - 0x68, 0x75, 0x6e, //hun - 0x68, 0x75, 0x6f, //huo - 0x6a, 0x69, //ji - 0x6a, 0x69, 0x61, //jia - 0x6a, 0x69, 0x61, 0x6e, //jian - 0x6a, 0x69, 0x61, 0x6e, 0x67, //jiang - 0x6a, 0x69, 0x61, 0x6f, //jiao - 0x6a, 0x69, 0x65, //jie - 0x6a, 0x69, 0x6e, //jin - 0x6a, 0x69, 0x6e, 0x67, //jing - 0x6a, 0x69, 0x6f, 0x6e, 0x67, //jiong - 0x6a, 0x69, 0x75, //jiu - 0x6a, 0x75, //ju - 0x6a, 0x75, 0x61, 0x6e, //juan - 0x6a, 0x75, 0x65, //jue - 0x6a, 0x75, 0x6e, //jun - 0x6b, 0x61, //ka - 0x6b, 0x61, 0x69, //kai - 0x6b, 0x61, 0x6e, //kan - 0x6b, 0x61, 0x6e, 0x67, //kang - 0x6b, 0x61, 0x6f, //kao - 0x6b, 0x65, //ke - 0x6b, 0x65, 0x69, //kei - 0x6b, 0x65, 0x6e, //ken - 0x6b, 0x65, 0x6e, 0x67, //keng - 0x6b, 0x6f, 0x6e, 0x67, //kong - 0x6b, 0x6f, 0x75, //kou - 0x6b, 0x75, //ku - 0x6b, 0x75, 0x61, //kua - 0x6b, 0x75, 0x61, 0x69, //kuai - 0x6b, 0x75, 0x61, 0x6e, //kuan - 0x6b, 0x75, 0x61, 0x6e, 0x67, //kuang - 0x6b, 0x75, 0x69, //kui - 0x6b, 0x75, 0x6e, //kun - 0x6b, 0x75, 0x6f, //kuo - 0x6c, 0x61, //la - 0x6c, 0x61, 0x69, //lai - 0x6c, 0x61, 0x6e, //lan - 0x6c, 0x61, 0x6e, 0x67, //lang - 0x6c, 0x61, 0x6f, //lao - 0x6c, 0x65, //le - 0x6c, 0x65, 0x69, //lei - 0x6c, 0x65, 0x6e, 0x67, //leng - 0x6c, 0x69, //li - 0x6c, 0x69, 0x61, //lia - 0x6c, 0x69, 0x61, 0x6e, //lian - 0x6c, 0x69, 0x61, 0x6e, 0x67, //liang - 0x6c, 0x69, 0x61, 0x6f, //liao - 0x6c, 0x69, 0x65, //lie - 0x6c, 0x69, 0x6e, //lin - 0x6c, 0x69, 0x6e, 0x67, //ling - 0x6c, 0x69, 0x75, //liu - 0x6c, 0x6f, //lo - 0x6c, 0x6f, 0x6e, 0x67, //long - 0x6c, 0x6f, 0x75, //lou - 0x6c, 0x75, //lu - 0x6c, 0x75, 0x61, 0x6e, //luan - 0x6c, 0x75, 0x6e, //lun - 0x6c, 0x75, 0x6f, //luo - 0x6c, 0x76, //lv - 0x6c, 0x76, 0x65, //lve - 0x6d, //m - 0x6d, 0x61, //ma - 0x6d, 0x61, 0x69, //mai - 0x6d, 0x61, 0x6e, //man - 0x6d, 0x61, 0x6e, 0x67, //mang - 0x6d, 0x61, 0x6f, //mao - 0x6d, 0x65, //me - 0x6d, 0x65, 0x69, //mei - 0x6d, 0x65, 0x6e, //men - 0x6d, 0x65, 0x6e, 0x67, //meng - 0x6d, 0x69, //mi - 0x6d, 0x69, 0x61, 0x6e, //mian - 0x6d, 0x69, 0x61, 0x6f, //miao - 0x6d, 0x69, 0x65, //mie - 0x6d, 0x69, 0x6e, //min - 0x6d, 0x69, 0x6e, 0x67, //ming - 0x6d, 0x69, 0x75, //miu - 0x6d, 0x6f, //mo - 0x6d, 0x6f, 0x75, //mou - 0x6d, 0x75, //mu - 0x6e, //n - 0x6e, 0x61, //na - 0x6e, 0x61, 0x69, //nai - 0x6e, 0x61, 0x6e, //nan - 0x6e, 0x61, 0x6e, 0x67, //nang - 0x6e, 0x61, 0x6f, //nao - 0x6e, 0x65, //ne - 0x6e, 0x65, 0x69, //nei - 0x6e, 0x65, 0x6e, //nen - 0x6e, 0x65, 0x6e, 0x67, //neng - 0x6e, 0x67, //ng - 0x6e, 0x69, //ni - 0x6e, 0x69, 0x61, //nia - 0x6e, 0x69, 0x61, 0x6e, //nian - 0x6e, 0x69, 0x61, 0x6e, 0x67, //niang - 0x6e, 0x69, 0x61, 0x6f, //niao - 0x6e, 0x69, 0x65, //nie - 0x6e, 0x69, 0x6e, //nin - 0x6e, 0x69, 0x6e, 0x67, //ning - 0x6e, 0x69, 0x75, //niu - 0x6e, 0x6f, 0x6e, 0x67, //nong - 0x6e, 0x6f, 0x75, //nou - 0x6e, 0x75, //nu - 0x6e, 0x75, 0x61, 0x6e, //nuan - 0x6e, 0x75, 0x6f, //nuo - 0x6e, 0x76, //nv - 0x6e, 0x76, 0x65, //nve - 0x6f, //o - 0x6f, 0x75, //ou - 0x70, 0x61, //pa - 0x70, 0x61, 0x69, //pai - 0x70, 0x61, 0x6e, //pan - 0x70, 0x61, 0x6e, 0x67, //pang - 0x70, 0x61, 0x6f, //pao - 0x70, 0x65, 0x69, //pei - 0x70, 0x65, 0x6e, //pen - 0x70, 0x65, 0x6e, 0x67, //peng - 0x70, 0x69, //pi - 0x70, 0x69, 0x61, 0x6e, //pian - 0x70, 0x69, 0x61, 0x6f, //piao - 0x70, 0x69, 0x65, //pie - 0x70, 0x69, 0x6e, //pin - 0x70, 0x69, 0x6e, 0x67, //ping - 0x70, 0x6f, //po - 0x70, 0x6f, 0x75, //pou - 0x70, 0x75, //pu - 0x71, 0x69, //qi - 0x71, 0x69, 0x61, //qia - 0x71, 0x69, 0x61, 0x6e, //qian - 0x71, 0x69, 0x61, 0x6e, 0x67, //qiang - 0x71, 0x69, 0x61, 0x6f, //qiao - 0x71, 0x69, 0x65, //qie - 0x71, 0x69, 0x6e, //qin - 0x71, 0x69, 0x6e, 0x67, //qing - 0x71, 0x69, 0x6f, 0x6e, 0x67, //qiong - 0x71, 0x69, 0x75, //qiu - 0x71, 0x75, //qu - 0x71, 0x75, 0x61, 0x6e, //quan - 0x71, 0x75, 0x65, //que - 0x71, 0x75, 0x6e, //qun - 0x72, 0x61, 0x6e, //ran - 0x72, 0x61, 0x6e, 0x67, //rang - 0x72, 0x61, 0x6f, //rao - 0x72, 0x65, //re - 0x72, 0x65, 0x6e, //ren - 0x72, 0x65, 0x6e, 0x67, //reng - 0x72, 0x69, //ri - 0x72, 0x6f, 0x6e, 0x67, //rong - 0x72, 0x6f, 0x75, //rou - 0x72, 0x75, //ru - 0x72, 0x75, 0x61, 0x6e, //ruan - 0x72, 0x75, 0x69, //rui - 0x72, 0x75, 0x6e, //run - 0x72, 0x75, 0x6f, //ruo - 0x73, 0x61, //sa - 0x73, 0x61, 0x69, //sai - 0x73, 0x61, 0x6e, //san - 0x73, 0x61, 0x6e, 0x67, //sang - 0x73, 0x61, 0x6f, //sao - 0x73, 0x65, //se - 0x73, 0x65, 0x6e, //sen - 0x73, 0x65, 0x6e, 0x67, //seng - 0x73, 0x68, 0x61, //sha - 0x73, 0x68, 0x61, 0x69, //shai - 0x73, 0x68, 0x61, 0x6e, //shan - 0x73, 0x68, 0x61, 0x6e, 0x67, //shang - 0x73, 0x68, 0x61, 0x6f, //shao - 0x73, 0x68, 0x65, //she - 0x73, 0x68, 0x65, 0x69, //shei - 0x73, 0x68, 0x65, 0x6e, //shen - 0x73, 0x68, 0x65, 0x6e, 0x67, //sheng - 0x73, 0x68, 0x69, //shi - 0x73, 0x68, 0x6f, 0x75, //shou - 0x73, 0x68, 0x75, //shu - 0x73, 0x68, 0x75, 0x61, //shua - 0x73, 0x68, 0x75, 0x61, 0x69, //shuai - 0x73, 0x68, 0x75, 0x61, 0x6e, //shuan - 0x73, 0x68, 0x75, 0x61, 0x6e, 0x67, //shuang - 0x73, 0x68, 0x75, 0x69, //shui - 0x73, 0x68, 0x75, 0x6e, //shun - 0x73, 0x68, 0x75, 0x6f, //shuo - 0x73, 0x69, //si - 0x73, 0x6f, 0x6e, 0x67, //song - 0x73, 0x6f, 0x75, //sou - 0x73, 0x75, //su - 0x73, 0x75, 0x61, 0x6e, //suan - 0x73, 0x75, 0x69, //sui - 0x73, 0x75, 0x6e, //sun - 0x73, 0x75, 0x6f, //suo - 0x74, 0x61, //ta - 0x74, 0x61, 0x69, //tai - 0x74, 0x61, 0x6e, //tan - 0x74, 0x61, 0x6e, 0x67, //tang - 0x74, 0x61, 0x6f, //tao - 0x74, 0x65, //te - 0x74, 0x65, 0x6e, 0x67, //teng - 0x74, 0x69, //ti - 0x74, 0x69, 0x61, 0x6e, //tian - 0x74, 0x69, 0x61, 0x6f, //tiao - 0x74, 0x69, 0x65, //tie - 0x74, 0x69, 0x6e, 0x67, //ting - 0x74, 0x6f, 0x6e, 0x67, //tong - 0x74, 0x6f, 0x75, //tou - 0x74, 0x75, //tu - 0x74, 0x75, 0x61, 0x6e, //tuan - 0x74, 0x75, 0x69, //tui - 0x74, 0x75, 0x6e, //tun - 0x74, 0x75, 0x6f, //tuo - 0x77, 0x61, //wa - 0x77, 0x61, 0x69, //wai - 0x77, 0x61, 0x6e, //wan - 0x77, 0x61, 0x6e, 0x67, //wang - 0x77, 0x65, 0x69, //wei - 0x77, 0x65, 0x6e, //wen - 0x77, 0x65, 0x6e, 0x67, //weng - 0x77, 0x6f, //wo - 0x77, 0x75, //wu - 0x78, 0x69, //xi - 0x78, 0x69, 0x61, //xia - 0x78, 0x69, 0x61, 0x6e, //xian - 0x78, 0x69, 0x61, 0x6e, 0x67, //xiang - 0x78, 0x69, 0x61, 0x6f, //xiao - 0x78, 0x69, 0x65, //xie - 0x78, 0x69, 0x6e, //xin - 0x78, 0x69, 0x6e, 0x67, //xing - 0x78, 0x69, 0x6f, 0x6e, 0x67, //xiong - 0x78, 0x69, 0x75, //xiu - 0x78, 0x75, //xu - 0x78, 0x75, 0x61, 0x6e, //xuan - 0x78, 0x75, 0x65, //xue - 0x78, 0x75, 0x6e, //xun - 0x79, 0x61, //ya - 0x79, 0x61, 0x6e, //yan - 0x79, 0x61, 0x6e, 0x67, //yang - 0x79, 0x61, 0x6f, //yao - 0x79, 0x65, //ye - 0x79, 0x69, //yi - 0x79, 0x69, 0x6e, //yin - 0x79, 0x69, 0x6e, 0x67, //ying - 0x79, 0x6f, //yo - 0x79, 0x6f, 0x6e, 0x67, //yong - 0x79, 0x6f, 0x75, //you - 0x79, 0x75, //yu - 0x79, 0x75, 0x61, 0x6e, //yuan - 0x79, 0x75, 0x65, //yue - 0x79, 0x75, 0x6e, //yun - 0x7a, 0x61, //za - 0x7a, 0x61, 0x69, //zai - 0x7a, 0x61, 0x6e, //zan - 0x7a, 0x61, 0x6e, 0x67, //zang - 0x7a, 0x61, 0x6f, //zao - 0x7a, 0x65, //ze - 0x7a, 0x65, 0x69, //zei - 0x7a, 0x65, 0x6e, //zen - 0x7a, 0x65, 0x6e, 0x67, //zeng - 0x7a, 0x68, 0x61, //zha - 0x7a, 0x68, 0x61, 0x69, //zhai - 0x7a, 0x68, 0x61, 0x6e, //zhan - 0x7a, 0x68, 0x61, 0x6e, 0x67, //zhang - 0x7a, 0x68, 0x61, 0x6f, //zhao - 0x7a, 0x68, 0x65, //zhe - 0x7a, 0x68, 0x65, 0x69, //zhei - 0x7a, 0x68, 0x65, 0x6e, //zhen - 0x7a, 0x68, 0x65, 0x6e, 0x67, //zheng - 0x7a, 0x68, 0x69, //zhi - 0x7a, 0x68, 0x6f, 0x6e, 0x67, //zhong - 0x7a, 0x68, 0x6f, 0x75, //zhou - 0x7a, 0x68, 0x75, //zhu - 0x7a, 0x68, 0x75, 0x61, //zhua - 0x7a, 0x68, 0x75, 0x61, 0x69, //zhuai - 0x7a, 0x68, 0x75, 0x61, 0x6e, //zhuan - 0x7a, 0x68, 0x75, 0x61, 0x6e, 0x67, //zhuang - 0x7a, 0x68, 0x75, 0x69, //zhui - 0x7a, 0x68, 0x75, 0x6e, //zhun - 0x7a, 0x68, 0x75, 0x6f, //zhuo - 0x7a, 0x69, //zi - 0x7a, 0x6f, 0x6e, 0x67, //zong - 0x7a, 0x6f, 0x75, //zou - 0x7a, 0x75, //zu - 0x7a, 0x75, 0x61, 0x6e, //zuan - 0x7a, 0x75, 0x69, //zui - 0x7a, 0x75, 0x6e, //zun - 0x7a, 0x75, 0x6f //zuo - }; - -const TUint16 KPinyinTypeTable[] = -{ - //a, b, c, d, e, f - ESpellVowel, ESpellConsonant, ESpellSpecialConsonnant, ESpellConsonant, ESpellVowel, ESpellConsonant, - //g, h, i, j, k, l - ESpellSpecialConsonnant, ESpellSpecialConsonnant, ESpellVowel, ESpellConsonant, ESpellConsonant, ESpellConsonant, - //m, n, o, p, q, r - ESpellConsonant, ESpellSpecialConsonnant, ESpellVowel, ESpellConsonant, ESpellConsonant, ESpellConsonant, - //s, t, u, v, w, x - ESpellSpecialConsonnant, ESpellConsonant, ESpellVowel, ESpellVowel, ESpellConsonant, ESpellConsonant, - //y, z - ESpellConsonant, ESpellSpecialConsonnant -}; - -const TUint16 KPinyinNoFirstElem[] = - { - 0x69, 0x76, 0x75 - }; - -// ----------------------------------------------------------------------------- -// CPinyinAnalyserDbFeed::NewL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CZhuyinAnalyserDbFeed* CZhuyinAnalyserDbFeed::NewL( TPinyinAnalyserDbType aType ) - { - CZhuyinAnalyserDbFeed* self = new ( ELeave ) CZhuyinAnalyserDbFeed(); - CleanupStack::PushL(self); - self->ConstructL( aType ); - CleanupStack::Pop(); - return self; - } - -CZhuyinAnalyserDbFeed::~CZhuyinAnalyserDbFeed() - { - - } -// ----------------------------------------------------------------------------- -// CPinyinAnalyserDbFeed::~CPinyinAnalyserDbFeed -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CZhuyinAnalyserDbFeed::CZhuyinAnalyserDbFeed() - { - } - -// ----------------------------------------------------------------------------- -// CPinyinAnalyserDbFeed::~CPinyinAnalyserDbFeed -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CZhuyinAnalyserDbFeed::ConstructL( TPinyinAnalyserDbType aType ) - { - - if ( aType == EPinyinAnalyserTypePinyin ) - { - iSpellBuf.Set( KPinyinSpellsLib, sizeof( KPinyinSpellsLib ) / sizeof( KPinyinSpellsLib[0] ) ); - iSpellLenBuf.Set( KPinyinSpellsLength, sizeof( KPinyinSpellsLength ) / sizeof ( KPinyinSpellsLength[0] ) ); - iSpellElemBase = KPinyinBase; - iSpellElemLen = KPinyinElementCount; - iSpellTypeBuf.Set( KPinyinTypeTable, sizeof( KPinyinTypeTable ) / sizeof ( KPinyinTypeTable[0] ) ); - iNoFirstElements.Set( KPinyinNoFirstElem, sizeof( KPinyinNoFirstElem) / sizeof( KPinyinNoFirstElem[0] ) ); - } - else if ( aType == EPinyinAnalyserTypeZhuyin ) - { - iSpellBuf.Set( KZhuyinSpellsLib, sizeof( KZhuyinSpellsLib ) / sizeof( KZhuyinSpellsLib[0] ) ); - iSpellLenBuf.Set( KZhuyinSpellsLength, sizeof( KZhuyinSpellsLength ) / sizeof ( KZhuyinSpellsLength[0] ) ); - iSpellElemBase = KZhuyinBase; - iSpellElemLen = KZhuyinElementCount; - iSpellTypeBuf.Set( KZhuyinTypeTable, sizeof( KZhuyinTypeTable ) / sizeof ( KZhuyinTypeTable[0] ) ); - iNoFirstElements.Set( KZhuyinNoFirstElem, sizeof( KZhuyinNoFirstElem) / sizeof( KZhuyinNoFirstElem[0] ) ); - } - else - { - ASSERT( 0 ); - } - - } - -TBool CZhuyinAnalyserDbFeed::IsToneMark( TUint16 acoseFirst, TUint16 aCodeSecond ) - { - TBool first = EFalse; - TBool seconde = EFalse; - - for ( TInt i = 0; i < iNoFirstElements.Length(); ++i ) - { - if ( iNoFirstElements[i] == acoseFirst ) - { - first = ETrue; - } - if ( iNoFirstElements[i] == aCodeSecond ) - { - seconde = ETrue; - } - } - - if ( first && seconde ) - { - return ETrue; - } - else - { - return EFalse; - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepinputstatecandidatepinyinphrasecreation.cpp --- a/fep/aknfep/src/aknfepinputstatecandidatepinyinphrasecreation.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,367 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the aknfepinputstatecandidatepinyinphrasecreation definition. -* -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include -//#include //CAknQueryDialog - -// User includes -#include "aknfepinputstatecandidatepinyinphrasecreation.h" -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" //pinyin phrase creation -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManager.h" - -// Constant definition -const TInt KMinCnadidateCount = 1; -const TInt KMaxSpellingLength = 10; -const TInt KMaxPhraseCreationCount = 7; - -//add the max phrase is seven -_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" ); - - -// --------------------------------------------------------------------------- -// AknFepUiInputStateCandidatePinyinAndStrokePhrase:: -// TAknFepUiInputStateCandidatePinyinAndStrokePhrase -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TAknFepInputStateCandidatePinyinPhraseCreation:: - TAknFepInputStateCandidatePinyinPhraseCreation( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) : - TAknFepInputStatePinyinPhraseCreationBase( aOwner, aUIContainer) - { - iState = ECandidateSelection; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength > KMinCnadidateCount; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(ETrue); - uiContainer->FocusCandidatePane(ETrue); - uiContainer->CandidatePane()->ShowCandidateOrdinals(ETrue); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->SetFepMan( iOwner->FepMan() ); - - UpdateIndicator(); - ChangeCba(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCandidatePinyinPhraseCreation::HandleKeyL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateCandidatePinyinPhraseCreation::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - switch( aKey ) - { - case EKeyBackspace: - KeyBackspace(); - break; - case EKeyCBA2: - iOwner->FepMan()->TryCloseUiL(); - break; - default: - HandleKeyUpDownLeftRightArrowOrKeyCBA1OKL( aKey, aLength ); - break; - } - return ETrue; - } - -// --------------------------------------------------------- -// Update indicator. -// --------------------------------------------------------- -// -void TAknFepInputStateCandidatePinyinPhraseCreation::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (candidatePane->IsFirstPage()) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - if ( candidatePane->IsLastPage() ) - { - uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows(ETrue); - } - } - -// --------------------------------------------------------- -// Handle horizontal navigation. -// --------------------------------------------------------- -// -TBool TAknFepInputStateCandidatePinyinPhraseCreation::HandleHorizontalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EKeyLeftArrow) - { - if( !candidatePane->SelectPrev() ) - { - candidatePane->SetCandidateBuffer(); - candidatePane->SelectLastPhrase(); - } - response = ETrue; - } - else if (aKey == EKeyRightArrow) - { - if( !candidatePane->SelectNext() ) - { - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - } - response = ETrue; - } - - if (response) - { - UpdateIndicator(); - } - - return response; - } - -// --------------------------------------------------------- -// Handle vertical navigation. -// --------------------------------------------------------- -// -TBool TAknFepInputStateCandidatePinyinPhraseCreation::HandleVerticalNavigation(TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if (aKey == EKeyDownArrow) - { - if (candidatePane->IsLastPage()) - { - return ETrue; - } - candidatePane->NextCandidatePage(); - } - else if (aKey == EKeyUpArrow) - { - if (candidatePane->IsFirstPage() ) - { - return ETrue; - } - candidatePane->PreviousCandidatePage(); - } - else - { - return EFalse; - } - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - UpdateIndicator(); - - return ETrue; - } - -// --------------------------------------------------------- -// Commit inline to the EEP ctrl. -// --------------------------------------------------------- -// -TBool TAknFepInputStateCandidatePinyinPhraseCreation::CommitInlineEEPL( const TDesC& aText ) - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - CDesCArrayFlat* keystrokeArray = popup->ShowKeystrokeArray(); - CDesCArrayFlat* validKeystroke = popup->InEffectKeystrokeArray(); - CDesCArrayFlat* chooseChineseCharacterArray = - popup->ChooseChineseCharacterArray(); - CDesCArrayFlat* chooseChineseCharacterArrayKeystroke = - popup->ChooseChineseCharacterArrayKeystroke(); - TInt keyCount = validKeystroke->Count(); - - TBuf keystroke; - - popup->SetPhraseCreationState( ETrue ); - - for ( TInt i = 0; i < keyCount; i++ ) - { - keystroke.Append( keystrokeArray->MdcaPoint( 0 ) ); - keystrokeArray->Delete( 0 ); - } - - chooseChineseCharacterArray->AppendL( aText ); - chooseChineseCharacterArrayKeystroke->AppendL( keystroke ); - validKeystroke->Reset(); - - if ( chooseChineseCharacterArray->Count() >= KMaxPhraseCreationCount ) - { - keystrokeArray->Reset(); - CDesCArrayFlat* phraseCandidates = - UIContainer()->CandidatePane()->CandidateArray(); - phraseCandidates->Reset(); - phraseCandidates->AppendL( KMaxPhraseNote ); - RefreshUI( 0 ); - return EFalse; - } - return keystrokeArray->Count(); - } - -// --------------------------------------------------------- -// KeyBackspace. -// --------------------------------------------------------- -// -void TAknFepInputStateCandidatePinyinPhraseCreation::KeyBackspace() - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - // there is "ChangeCba()" before - popup->SetChangeState( ETrue ); - iOwner->ChangeState(ESpellingSelection); - } - -// --------------------------------------------------------- -// Key Up,Down,Left,RightArrow Or Key CBA1,OK. -// --------------------------------------------------------- -// -void TAknFepInputStateCandidatePinyinPhraseCreation::HandleKeyUpDownLeftRightArrowOrKeyCBA1OKL( - TInt aKey, - TKeyPressLength aLength ) - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - TInt index = MapKeyToIndex(aKey); - - if ( aKey == EKeyUpArrow && - iOwner->FepMan()->InputMode() == EPinyin && - candidatePane->IsFirstPage()) - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState(ESpellingSelection); - return; - } - TBool state = ETrue; - if ( popup->IsChangeStatet() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - - if ( state ) - { - if ( !(HandleVerticalNavigation( aKey ) - || HandleHorizontalNavigation( aKey ) ) ) - { - // it may be one of the 'valid' numbers.. - if ( candidatePane->SelectIndex( index, EFalse ) || aKey == EKeyOK - || aKey == EKeyCBA1 ) - { - ChangeStateOrNotL(); - } - ChangeCba(); - } - } - } - -// --------------------------------------------------------- -// change the state or not -// --------------------------------------------------------- -// -void TAknFepInputStateCandidatePinyinPhraseCreation::ChangeStateOrNotL() - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if ( text.Length() ) - { - CDesCArrayFlat* chooseChineseCharacterArray = - popup->ChooseChineseCharacterArray(); - //here need Commit text to EEP and change - //state to EEP entry state if keystroke is empty - //else keep spelling state - if ( chooseChineseCharacterArray->Count() < KMaxPhraseCreationCount ) - { - if ( !CommitInlineEEPL( text ) ) - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EKeySequenceEdit ); - TBool visible = - ( chooseChineseCharacterArray->Count() == KMaxPhraseCreationCount ); - UIContainer()->SetControlInVisible( visible ); - } - else - { - if ( !popup->IsEnabled() ) - { - popup->Enable( ETrue ); - } - if ( !GetValidKeystroke() ) - { - UIContainer()->SetControlInVisible( EFalse ); - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EKeySequenceEdit ); - } - else - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( ESpellingSelection ); - } - } - } - else - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EKeySequenceEdit ); - } - } - else - { - // No candidates available. Back to Entry state. - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EKeySequenceEdit ); - } - } - - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepinputstateminiqwertyzhuyinkeymap.cpp --- a/fep/aknfep/src/aknfepinputstateminiqwertyzhuyinkeymap.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: This file contains classes of phrase creation layout data management -* -*/ - - - - - - - - - - - - - -#include "aknfepinputstateminiqwertyzhuyinkeymap.h" -#include - -const TInt16 KZhuyinSymbolUnicode = 0x2462; - -_LIT(KToneMark1, "\x02D9"); -_LIT(KToneMark2, "\x02CA"); -_LIT(KToneMark3, "\x02C7"); -_LIT(KToneMark4, "\x02CB"); -_LIT(KToneMark5, "\x0020"); -_LIT(KRightBracket, "("); -_LIT(KLeftBracket, ")"); - -// --------------------------------------------------------------------------- -// TAknFepInputStateMiniQwertyZhuyinKeyMap::GetKeyStroke -// Get the key stroke. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateMiniQwertyZhuyinKeyMap::GetKeyStroke( - CPtiEngine* aPtiEngine, TInt& aKey, TDes& aKeystroke ) - { - TBuf lowerdata; - aPtiEngine->MappingDataForKey( (TPtiKey)aKey, lowerdata, EPtiCaseLower ); - - TBuf<2> zhuyinStoke; - if ( lowerdata.Length( ) > 0 ) - { - for (TInt i=0; i //CPtiEngine -#include -#include -#include - -#include "aknfepinputstatepinyinphrasecreationbase.h" -#include "AknFepPanic.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" - -const TUint16 KToneMarkLib[] = - { - 0x02C9, 0x02CA, 0x02C7, 0x02CB, 0x02D9 - }; - -const TUint16 KDelimiter =0x0027; -const TInt KToneMarkMax = 5; -const TInt KMaxKeystrokeCount = 31; -const TInt KMaxPhraseCreationCount = 7; - -_LIT( KKey2, "2"); -_LIT( KKey3, "3"); -_LIT( KKey4, "4"); -_LIT( KKey5, "5"); -_LIT( KKey6, "6"); -_LIT( KKey7, "7"); -_LIT( KKey8, "8"); -_LIT( KKey9, "9"); -//KMaxPhraseNote means the max phrase is seven -_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" ); - -// --------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------- -// -TAknFepInputStatePinyinPhraseCreationBase::TAknFepInputStatePinyinPhraseCreationBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ) : - TAknFepInputStateCandidateBase( aOwner, aUIContainer ) - { - } - -// --------------------------------------------------------- -// Add keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::AddKeystroke( TInt aKey ) - { - TBool result = ETrue; - TRAPD( ret, result = AddKeystrokeL( aKey ) ); - if ( KErrNone != ret ) - { - return EFalse; - } - return result; - } - -// --------------------------------------------------------- -// Add tone mark. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::AddToneMark() - { - TBool result = ETrue; - TRAPD( ret, result = AddToneMarkL() ); - if ( KErrNone != ret ) - { - return EFalse; - } - return result; - } - -// --------------------------------------------------------- -// get the valid keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::GetValidKeystroke() - { - TBool result = ETrue; - TRAPD( ret, result = GetValidKeystrokeL() ); - if ( KErrNone != ret ) - { - return EFalse; - } - return result; - } - -// --------------------------------------------------------- -// Delete current keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::DeleteCurrentKeystroke() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* showKeystroke = popup->ShowKeystrokeArray(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - - if ( 0 == index ) - { - return EFalse; - } - - showKeystroke->Delete( index - 1 ); - editPane->SetCursorIndexOfKeystroke( index - 1 ); - - return ETrue; - } - -// --------------------------------------------------------- -// Delete current keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::ChineseRevertKeystroke() - { - TBool result = ETrue; - TRAPD( ret, result = ChineseRevertKeystrokeL() ); - if ( KErrNone != ret ) - { - return EFalse; - } - return result; - } - -// --------------------------------------------------------- -// show info to the eep ctrl. -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::ShowInfo() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* showKeystroke = popup->ShowKeystrokeArray(); - CDesCArrayFlat* chinese = popup->ChooseChineseCharacterArray(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - - TBuf buf; - - for ( TInt i = 0; i < chinese->Count(); ++i ) - { - buf.Append( chinese->MdcaPoint( i ) ); - } - - for ( TInt i = 0; i < showKeystroke->Count(); ++i ) - { - buf.Append( showKeystroke->MdcaPoint( i ) ); - } - - if ( showKeystroke->Count() == 0 ) - { - editPane->SetCursorIndexOfKeystroke( 0 ); - index = 0; - } - - editPane->SetText( buf, chinese->Count() + index ); - } - -// --------------------------------------------------------- -// set the show info warning color. -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::SetWarningColor() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt showKeystrokeCount = popup->ShowKeystrokeArray()->Count(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - TInt validKeytrokeCount = popup->KeystrokeArray()->Count(); - if ( 0 == validKeytrokeCount ) - { - editPane->SetHighlight( chineseCount, chineseCount + showKeystrokeCount ); - } - } - -// --------------------------------------------------------- -// Get the candidate info. -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::GetCandidate( TInt aSelection ) - { - TRAP_IGNORE( GetCandidateL( aSelection ) ); - } - -// --------------------------------------------------------- -// Change CBA -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::ChangeCba() - { - TRAP_IGNORE( ChangeCbaL() ); - } - -// --------------------------------------------------------- -// Refresh UI -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::RefreshCandidate() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - CDesCArrayFlat* validKeystroke = popup->InEffectKeystrokeArray(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - CDesCArrayFlat* candidateArray = - uiContainer->CandidatePane()->CandidateArray(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - // have valid keystroke. - if ( validKeystroke->Count() > 0 ) - { - uiContainer->SetControlInVisible( ETrue ); - // set display page for delibrate selection - ClearDeliberateSelection(); - GetCandidate( ); - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->ShowVerticalScrollArrows( ETrue ); - } - else - { - candidateArray->Reset(); - if ( KMaxPhraseCreationCount == chineseCount ) - { - uiContainer->SetControlInVisible( ETrue ); - TRAP_IGNORE( candidateArray->AppendL( KMaxPhraseNote ) ); - } - else - { - uiContainer->SetControlInVisible( EFalse ); - } - - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->ShowVerticalScrollArrows( EFalse ); - } - - if ( EKeySequenceEdit == iState ) - { - //popup->SetNoneHighlighted(); - } - uiContainer->Enable(ETrue); - popup->Enable( validKeystroke->Count() > 0 ); - UpdateIndicator(); - } - -// --------------------------------------------------------- -// Refresh UI -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::RefreshUI(TInt aSelection) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - CDesCArrayFlat* validKeystroke = popup->InEffectKeystrokeArray(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - CDesCArrayFlat* candidateArray = - uiContainer->CandidatePane()->CandidateArray(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - // have valid keystroke. - if ( validKeystroke->Count() > 0 ) - { - uiContainer->SetControlInVisible( ETrue ); - popup->SplitPhraseSpellingIntoPages(); - inputPane->SetText( spelling->MdcaPoint( aSelection ) ); - // set display page for delibrate selection - popup->SetDisplayPage(aSelection); - popup->SetPhraseItemTexts(); - popup->PopupSizeChanged(); - GetCandidate( aSelection ); - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->ShowVerticalScrollArrows( ETrue ); - } - else - { - candidateArray->Reset(); - if ( KMaxPhraseCreationCount == chineseCount ) - { - uiContainer->SetControlInVisible( ETrue ); - TRAP_IGNORE( candidateArray->AppendL( KMaxPhraseNote ) ); - } - else - { - uiContainer->SetControlInVisible( EFalse ); - } - - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->ShowVerticalScrollArrows( EFalse ); - } - - if ( EKeySequenceEdit == iState ) - { - popup->SetNoneHighlighted(); - } - uiContainer->Enable(ETrue); - popup->Enable( validKeystroke->Count() > 0 ); - UpdateIndicator(); - } - -// --------------------------------------------------------- -// clear selection. -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::ClearDeliberateSelection() - { - // we must have just deleted the last character, - // or we are starting a new pinyin session, so wipe the last deliberate selection - TPtr oldDeliberateSelection = iOwner->GetLatestDeliberateSelection(); - oldDeliberateSelection = KNullDesC; - } - -// --------------------------------------------------------- -// clear the keystroke of PtiEngine. -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::ClearPtiEngineKeystroke() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - for ( TInt i = 0; i < KMaxKeystrokeCount; ++i ) - { - ptiengine->DeleteKeyPress(); - } - } - - -// --------------------------------------------------------- -// Get the code of Keystroke in ITUT. -// --------------------------------------------------------- -// -TInt TAknFepInputStatePinyinPhraseCreationBase::GetKeystrokeCode( - TPtiKey& aKey, - const TDesC& aKeystroke ) - { - if ( aKeystroke.Length() < 1 ) - { - return EKeyStrokeNull; - } - - // the input key is delimiter the return -1. - if ( KDelimiter == aKeystroke[0] ) - { - aKey = EPtiKey1; - return EKeyDelimiter; - } - // the input key is tone mark return tone mark. - for ( TInt i = 0; i < KToneMarkMax; ++i ) - { - if ( KToneMarkLib[i] == aKeystroke[0] ) - { - return i + 1; - } - } - // the keystroke is 2 - 9. - if ( 0 == aKeystroke.Compare( KKey2 ) ) - { - aKey = EPtiKey2; - } - else if ( 0 == aKeystroke.Compare( KKey3 ) ) - { - aKey = EPtiKey3; - } - else if ( 0 == aKeystroke.Compare( KKey4 ) ) - { - aKey = EPtiKey4; - } - else if ( 0 == aKeystroke.Compare( KKey5 ) ) - { - aKey = EPtiKey5; - } - else if ( 0 == aKeystroke.Compare( KKey6 ) ) - { - aKey = EPtiKey6; - } - else if ( 0 == aKeystroke.Compare( KKey7 ) ) - { - aKey = EPtiKey7; - } - else if ( 0 == aKeystroke.Compare( KKey8 ) ) - { - aKey = EPtiKey8; - } - else if ( 0 == aKeystroke.Compare( KKey9 ) ) - { - aKey = EPtiKey9; - } - return EkeyNumber; - } - - -// --------------------------------------------------------- -// Append the key to the ptiengine. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::AppendKeyPressL( - TPtiKey& aKey, - TBool aAddSpellingFlag - ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* tempSpelling = popup->TempSpelling(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - CDesCArrayFlat* afterCheck = popup->OptimizeSpelling(); - - tempSpelling->Reset(); - afterCheck->Reset(); - TInt stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - TInt stringAfterLength = ptiengine->AppendKeyPress(aKey).Length(); - // the pti can't append key. - if ( stringBeforeLength == stringAfterLength ) - { - return EFalse; - } - // get the spelling by pti. - ptiengine->GetPhoneticSpellingsL( *tempSpelling ); - // delete the phrase spelling. - CheckSpellingL( tempSpelling, afterCheck ); - if ( afterCheck->Count() > 0 ) - { - if ( !aAddSpellingFlag ) - { - for( TInt i = afterCheck->Count() - 1; i >= 0; --i ) - { - spelling->InsertL( 0, afterCheck->MdcaPoint( i ) ); - } - } - return ETrue; - } - - return EFalse; - } - -// --------------------------------------------------------- -// Append the tone mark to the ptiengine. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::AppendToneMarkL( TInt& aToneMark ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* tempSpelling = popup->TempSpelling(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - - for ( TInt i = 0; i < aToneMark; ++i ) - { - tempSpelling->Reset(); - ptiengine->IncrementToneMark( ETrue ); - // get the spelling by pti. - ptiengine->GetPhoneticSpellingsL( *tempSpelling ); - if ( CheckToneMark( aToneMark ) ) - { - break; - } - } - - if ( tempSpelling->Count() > 0 ) - { - for ( TInt i = tempSpelling->Count() - 1; i >= 0; --i ) - { - spelling->InsertL( 0, tempSpelling->MdcaPoint( i ) ); - } - return ETrue; - } - - return EFalse; - } - -// --------------------------------------------------------- -// check the spelling delete the phrase spelling. -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::CheckSpellingL( - CDesCArrayFlat* aTempSpelling, - CDesCArrayFlat* aAfterCheck - ) - { - TBuf<1> buf; - buf.Append( KDelimiter ); - for (TInt i = 0; i < aTempSpelling->Count(); ++i ) - { - if ( KErrNotFound == aTempSpelling->MdcaPoint(i).Find( buf ) ) - { - aAfterCheck->AppendL( aTempSpelling->MdcaPoint(i) ); - } - } - } - -// --------------------------------------------------------- -// check the tone mark and delete the phrase spelling. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::CheckToneMark( TInt& aToneMark ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* tempSpelling = popup->TempSpelling(); - TBuf<1> delimiter; - delimiter.Append( KDelimiter ); - - for ( TInt i = tempSpelling->Count() - 1; i >= 0; --i ) - { - if ( KErrNotFound != tempSpelling->MdcaPoint( i ).Find( delimiter ) ) - { - tempSpelling->Delete( i ); - } - else - { - if ( KToneMarkLib[ aToneMark - 1 ] != - tempSpelling->MdcaPoint( i ).Right( 1 )[0] ) - { - tempSpelling->Delete( i ); - } - } - } - tempSpelling->Compress(); - return tempSpelling->Count(); - } - - -// --------------------------------------------------------- -// Add keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::AddKeystrokeL( TInt aKey ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* showKeystroke = popup->ShowKeystrokeArray(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - TBuf<1> key; - - if ( showKeystroke->Count() + chineseCount >= KMaxKeystrokeCount ) - { - return EFalse; - } - - if ( KMaxPhraseCreationCount == chineseCount ) - { - return EFalse; - } - - switch( (TPtiKey)aKey ) - { - case EPtiKey0: - key.Append( KDelimiter ); - break; - case EPtiKey1: - key.Append( KDelimiter ); - break; - case EPtiKey2: - key.Append( EPtiKey2 ); - break; - case EPtiKey3: - key.Append( EPtiKey3 ); - break; - case EPtiKey4: - key.Append( EPtiKey4 ); - break; - case EPtiKey5: - key.Append( EPtiKey5 ); - break; - case EPtiKey6: - key.Append( EPtiKey6 ); - break; - case EPtiKey7: - key.Append( EPtiKey7 ); - break; - case EPtiKey8: - key.Append( EPtiKey8 ); - break; - case EPtiKey9: - key.Append( EPtiKey9 ); - break; - default: - return EFalse; - } - - if ( index > showKeystroke->Count() ) - { - index = showKeystroke->Count(); - } - - showKeystroke->InsertL( index, key ); - editPane->SetCursorIndexOfKeystroke( index + 1 ); - return ETrue; - } - -// --------------------------------------------------------- -// Add tone mark. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::AddToneMarkL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* showKeystroke = popup->ShowKeystrokeArray(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - TBuf<1> key; - TInt toneMark( 0 ); - - if ( KMaxPhraseCreationCount == chineseCount ) - { - return EFalse; - } - - if ( showKeystroke->Count() + chineseCount >= KMaxKeystrokeCount ) - { - if ( 0 == index ) - { - return EFalse; - } - for ( TInt i = 0; i < KToneMarkMax; ++i ) - { - if ( KToneMarkLib[i] == showKeystroke->MdcaPoint( index - 1 )[0] ) - { - toneMark = i + 1; - break; - } - } - if ( 0 == toneMark ) - { - return EFalse; - } - } - - if ( 0 == index ) - { - key.Append( KToneMarkLib[0] ); - showKeystroke->InsertL( 0, key ); - editPane->SetCursorIndexOfKeystroke( 1 ); - return ETrue; - } - - for ( TInt i = 0; i < KToneMarkMax; ++i ) - { - if ( KToneMarkLib[i] == showKeystroke->MdcaPoint( index - 1 )[0] ) - { - toneMark = i + 1; - break; - } - } - - if ( 0 == toneMark ) - { - key.Append( KToneMarkLib[0] ); - showKeystroke->InsertL( index, key ); - editPane->SetCursorIndexOfKeystroke( index + 1 ); - } - else if ( KToneMarkMax == toneMark ) - { - key.Append( KToneMarkLib[0] ); - showKeystroke->Delete( index - 1 ); - showKeystroke->InsertL( index - 1, key ); - } - else - { - key.Append( KToneMarkLib[toneMark] ); - showKeystroke->Delete( index - 1 ); - showKeystroke->InsertL( index - 1, key ); - } - - return ETrue; - } - -// --------------------------------------------------------- -// check the keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::IsToneMark( const TDesC& aInput ) - { - for ( TInt i = 0; i < KToneMarkMax; ++i ) - { - if ( KToneMarkLib[i] == aInput[0] ) - { - return ETrue; - } - } - return EFalse; - } -// --------------------------------------------------------- -// check the keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::CheckKeystroke() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* showKeystroke = popup->ShowKeystrokeArray(); - TBuf<1> buf; - buf.Append( KDelimiter ); - // if the keystroke is null then the keystroke is invalid. - if ( 0 == showKeystroke->Count() ) - { - return EFalse; - } - // if the first keystroke is delimiter then keytroke is invalid. - if ( KDelimiter == showKeystroke->MdcaPoint( 0 )[0] ) - { - return EFalse; - } - // if the first keystroke is Tone mark then keytroke is invalid. - for ( TInt i = 0; i < KToneMarkMax; ++i ) - { - if ( KToneMarkLib[i] == showKeystroke->MdcaPoint( 0 )[0] ) - { - return EFalse; - } - } - // the first keystroke is not delimiter and tone mark, if the number of keystroke - // is not more than two then must the keytroke are all valid. - if ( showKeystroke->Count() <= 2 ) - { - return ETrue; - } - - return ETrue; - } - -// --------------------------------------------------------- -// get the valid keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::GetValidKeystrokeL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* showKeystroke = popup->ShowKeystrokeArray(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - CDesCArrayFlat* allValidKeystroke = popup->KeystrokeArray(); - CDesCArrayFlat* validKeystroke = popup->InEffectKeystrokeArray(); - TInt allValidKeyLen = allValidKeystroke->Count(); - TPtiKey key; - TInt retCode(0); - TBool nextIsToneMark = EFalse; - TBuf<1> delimiter; - TBuf beforeBuf; - TBuf afterBuf; - - delimiter.Append( KDelimiter ); - - for ( TInt i = 0; i < allValidKeyLen; ++i ) - { - if ( 0 == allValidKeystroke->MdcaPoint( i ).Compare( delimiter ) ) - { - break; - } - beforeBuf.Append( allValidKeystroke->MdcaPoint( i ) ); - } - - spelling->Reset(); - validKeystroke->Reset(); - allValidKeystroke->Reset(); - - ClearPtiEngineKeystroke(); - if ( !CheckKeystroke() ) - { - if ( allValidKeyLen > 0 ) - { - popup->SetValidKeystrokeChange( ETrue ); - } - else - { - popup->SetValidKeystrokeChange( EFalse ); - } - return EFalse; - } - - // the firts keystroke is key 2 - 9. - for ( TInt i = 0; i < showKeystroke->Count(); ++i ) - { - retCode = GetKeystrokeCode( key, showKeystroke->MdcaPoint( i ) ); - //the keystroke is delimiter. - if ( -1 == retCode ) - { - validKeystroke->AppendL( showKeystroke->MdcaPoint( i ) ); - allValidKeystroke->AppendL( showKeystroke->MdcaPoint( i ) ); - break; - } - //the keystroke is 2 - 9 - else if ( 0 == retCode ) - { - //if the next keystroke is tone mark, then current keystroke and - //the next keystroke need to whole check. - if ( i < showKeystroke->Count() - 1 ) - { - TPtiKey keyTmp; - if ( GetKeystrokeCode( keyTmp, - showKeystroke->MdcaPoint( i + 1) ) > 0 ) - { - nextIsToneMark = ETrue; - } - } - if ( AppendKeyPressL( key, nextIsToneMark ) ) - { - //the next keystroke is not tone mark. - if ( !nextIsToneMark ) - { - validKeystroke->AppendL( showKeystroke->MdcaPoint( i ) ); - allValidKeystroke->AppendL( showKeystroke->MdcaPoint( i ) ); - } - } - else - { - break; - } - } - else - { - if ( AppendToneMarkL( retCode ) ) - { - validKeystroke->AppendL( showKeystroke->MdcaPoint( i - 1 ) ); - validKeystroke->AppendL( showKeystroke->MdcaPoint( i ) ); - allValidKeystroke->AppendL( showKeystroke->MdcaPoint( i - 1 ) ); - allValidKeystroke->AppendL( showKeystroke->MdcaPoint( i ) ); - } - break; - } - } - for ( TInt i = 0; i < allValidKeystroke->Count(); ++i ) - { - if ( 0 == allValidKeystroke->MdcaPoint( i ).Compare( delimiter ) ) - { - break; - } - afterBuf.Append( allValidKeystroke->MdcaPoint( i ) ); - } - - if ( allValidKeystroke->Count() > 0 ) - { - if ( ( 0 == allValidKeyLen ) || - ( 0 != afterBuf.Compare( beforeBuf ) ) ) - { - popup->SetValidKeystrokeChange( ETrue ); - } - else - { - popup->SetValidKeystrokeChange( EFalse ); - } - return ETrue; - } - - return EFalse; - } - -// --------------------------------------------------------- -// Revert the current chinse to keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStatePinyinPhraseCreationBase::ChineseRevertKeystrokeL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* showKeystroke = popup->ShowKeystrokeArray(); - CDesCArrayFlat* chinese = popup->ChooseChineseCharacterArray(); - CDesCArrayFlat* chineseKeystroke = - popup->ChooseChineseCharacterArrayKeystroke(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - - if ( ( 0 != index ) || ( 0 == chinese->Count() ) ) - { - return EFalse; - } - - if ( chineseKeystroke->MdcaPoint( chineseKeystroke->Count() - 1 ).Length() < 1 ) - { - return EFalse; - } - - for( TInt i = chineseKeystroke->MdcaPoint( chineseKeystroke->Count() - 1 ). - Length() - 1; i >= 0 ; --i ) - { - showKeystroke->InsertL( 0, chineseKeystroke->MdcaPoint( - chineseKeystroke->Count() - 1 ).Mid( i, 1 ) ); - } - - editPane->SetCursorIndexOfKeystroke( - chineseKeystroke->MdcaPoint( chineseKeystroke->Count() - 1 ).Length() ); - chinese->Delete( chinese->Count() - 1 ); - chineseKeystroke->Delete( chineseKeystroke->Count() - 1 ); - - // if the show inof's length more than KMaxKeystrokeCount, delete more inof. - for ( TInt i = chinese->Count() + showKeystroke->Count() - KMaxKeystrokeCount; - i > 0; --i ) - { - showKeystroke->Delete( showKeystroke->Count() - 1 ); - } - - showKeystroke->Compress(); - chinese->Compress(); - chineseKeystroke->Compress(); - return ETrue; - } - - -// --------------------------------------------------------- -// Get the candidate info. -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::GetCandidateL( TInt aSelection ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* phraseCandidates = - uiContainer->CandidatePane()->CandidateArray(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - - phraseCandidates->Reset(); - if ( ( aSelection > spelling->Count() ) || ( 0 == spelling->Count() ) ) - { - return; - } - extern void CleanArray( TAny* aAny ); - RPointerArray list; - TCleanupItem cleanitem( CleanArray, &list ); - CleanupStack::PushL( cleanitem ); - TPtrC curSpell = spelling->MdcaPoint( aSelection ); - HBufC* retString = ptiengine->GetCandidatesByInputString( - spelling->MdcaPoint( aSelection ), - list, - EFalse ); - - CleanupStack::PushL( retString ); - for (int index = 0; index < ptiengine->PhoneticSpellingCount(); index++) - { - TPtrC ptr = ptiengine->GetPhoneticSpelling(index + 1); - if (ptr.Length() == curSpell.Length()) - { - ptiengine->SelectPhoneticSpelling(index + 1); - ptiengine->GetChinesePhraseCandidatesL(*phraseCandidates); - break; - } - } - - CleanupStack::PopAndDestroy( retString ); - CleanupStack::PopAndDestroy(); // cleanitem - } - -// --------------------------------------------------------- -// Change CBA -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::ChangeCbaL() - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - TInt keystrokeCount = popup->ShowKeystrokeArray()->Count(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - TInt validKeystrokeCount = popup->InEffectKeystrokeArray()->Count(); - TInt lastRes = popup->GetLastResouce(); - - if ( ( chineseCount == KMaxPhraseCreationCount ) || - ( ( 0 == keystrokeCount ) && ( chineseCount > 1 ) ) ) - { - if ( lastRes == R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ) - { - return; - } - //User cba done-done-cancel - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - } - else if ( ( 0 != keystrokeCount ) && ( 0 != validKeystrokeCount ) ) - { - if ( lastRes == R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ) - { - return; - } - //User cba select-select-cancel - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ); - } - else - { - if ( lastRes == R_AKNFEP_SOFTKEYS__PHRASE_CREATION_EMPTY_CANCEL_EMPTY ) - { - return; - } - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS__PHRASE_CREATION_EMPTY_CANCEL_EMPTY ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS__PHRASE_CREATION_EMPTY_CANCEL_EMPTY ); - } - } - -// --------------------------------------------------------- -// Update Indicator. -// --------------------------------------------------------- -// -void TAknFepInputStatePinyinPhraseCreationBase::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if ( candidatePane->IsFirstPage() ) - { - uiContainer->CandidatePane()->ShowUpScrollArrows( EFalse ); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows( ETrue ); - } - - if ( candidatePane->IsLastPage() ) - { - uiContainer->CandidatePane()->ShowDownScrollArrows( EFalse ); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows( ETrue ); - } - - if ( candidatePane->SelectedIndex() == 0 - && candidatePane->IsFirstPage() ) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows( EFalse ); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows( ETrue ); - } - - if ( candidatePane->IsLastPage() && (candidatePane->SelectedIndex() - == candidatePane->VisibleCandidateCount() - 1 ) ) - { - uiContainer->CandidatePane()->ShowRightScrollArrows( EFalse ); - } - else - { - uiContainer->CandidatePane()->ShowRightScrollArrows( ETrue ); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepinputstatespellingpinyinphrasecreation.cpp --- a/fep/aknfep/src/aknfepinputstatespellingpinyinphrasecreation.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,402 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the CAknFepUIInputStatePinyinPhrase methods. -* -*/ - - - - - - - - - - - -#include //CPtiEngine -#include //keys -#include -#include -#include - -#include "AknFepPanic.h" -#include "aknfepinputstatespellingpinyinphrasecreation.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" //pinyin phrase creation -#include "AknFepManager.h" - -const TUint16 KDelimiter =0x0027; -const TInt KMaxPhraseCreationCount = 7; -const TInt KMaxSpellingLength = 10; - -// --------------------------------------------------------- -// C++ construct. -// --------------------------------------------------------- -// -TAknFepInputStateSpellingPinyinPhraseCreation::TAknFepInputStateSpellingPinyinPhraseCreation( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStatePinyinPhraseCreationBase( aOwner, aUIContainer ) - { - iState = ESpellingSelection; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->FocusCandidatePane(EFalse); - uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutPhraseCreation); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->ShowVerticalScrollArrows(ETrue); - uiContainer->ShowHorizontalScrollArrows(EFalse); - uiContainer->InputPane()->SetOverrideFontId(0); - uiContainer->SetFepMan( iOwner->FepMan() ); - uiContainer->EditPaneWindow()->DeactiveCursor(); - - // in the case that we are coming back to the input pane from the candidate pane, - // we need to ensure that the current selection is selected correctly - if ( uiContainer->PinyinPopupWindow()->GetFromEditToSpellingFlag() ) - { - TInt validCount = uiContainer-> - PinyinPopupWindow()->InEffectKeystrokeArray()->Count(); - TInt chineseCount = uiContainer-> - PinyinPopupWindow()->ChooseChineseCharacterArray()->Count(); - TInt index = 0; - if ( !uiContainer->PinyinPopupWindow()->GetPhraseCreationEditingState() ) - { - index = uiContainer->PinyinPopupWindow()->CurrentSelection(); - } - uiContainer->EditPaneWindow()->SetCursorIndexOfKeystroke( validCount ); - ShowInfo(); - uiContainer->EditPaneWindow()-> - SetUnderline( chineseCount, chineseCount + validCount - 1 ); - uiContainer->InputPane()->SetText( uiContainer-> - PinyinPopupWindow()->PhoneticSpellingArray()->MdcaPoint( index ) ); - uiContainer->PinyinPopupWindow()->SetFromEditToSpellingFlag(); - uiContainer->PinyinPopupWindow()->SplitPhraseSpellingIntoPages(); - uiContainer->PinyinPopupWindow()->SetDisplayPage( index ); - uiContainer->PinyinPopupWindow()->SetPhraseItemTexts(); - uiContainer->PinyinPopupWindow()->PopupSizeChanged(); // phrase input - uiContainer->PinyinPopupWindow()->Enable( ETrue ); - } - else - { - ImplicityShowInfo( ETrue ); - } - - ChangeCba(); - } - -// --------------------------------------------------------- -// HandleKeyL -// --------------------------------------------------------- -// -TBool TAknFepInputStateSpellingPinyinPhraseCreation::HandleKeyL( - TInt aKey, - TKeyPressLength aLength ) - { - switch( aKey ) - { - case EKeyBackspace: - case EKeyUpArrow: - HandleKeyBackspaceOrKeyUpArrow( aLength ); - break; - case EKeyRightArrow: - HandleKeyRightArrow(); - break; - case EKeyLeftArrow: - HandleKeyLeftArrow(); - break; - case EKeyOK: - case EKeyDownArrow: - case EKeyCBA1: - HandleKeyOKOrKeyDownArrowOrKeyCBA1( aLength ); - break; - case EKeyCBA2: - iOwner->FepMan()->TryCloseUiL(); - break; - default: - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - break; - } - return ETrue; - } - -// --------------------------------------------------------- -// Initialize state -// --------------------------------------------------------- -// -void TAknFepInputStateSpellingPinyinPhraseCreation::InitializeStateL(void) - { - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT); - } - -// --------------------------------------------------------- -// Implicity the show info -// --------------------------------------------------------- -// -void TAknFepInputStateSpellingPinyinPhraseCreation::ImplicityShowInfo( - TBool aGetScreenCoordinates ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* validKeystroke = popup->InEffectKeystrokeArray(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - TInt selection(0); - // get cursor position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - if ( aGetScreenCoordinates ) - { - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - } - if ( popup->GetPhraseCreationState() ) - { - GetValidKeystroke(); - editPane->SetCursorIndexOfKeystroke( validKeystroke->Count() ); - } - else - { - editPane->SetCursorIndexOfKeystroke( validKeystroke->Count() ); - } - - ShowInfo(); - editPane->SetUnderline( chineseCount, chineseCount + - validKeystroke->Count() - 1 ); - if ( popup->GetPhraseCreationState() ) - { - ClearDeliberateSelection(); - } - else - { - selection = popup->CurrentSelection(); - } - RefreshUI( selection ); - if ( popup->GetPhraseCreationState() ) - { - popup->SetPhraseCreationState( EFalse ); - } - } - -// --------------------------------------------------------- -// Refresh the show info -// --------------------------------------------------------- -// -void TAknFepInputStateSpellingPinyinPhraseCreation::RefreshShowInfo() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - CDesCArrayFlat* validKeystroke = popup->InEffectKeystrokeArray(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - CDesCArrayFlat* candidateArray = - uiContainer->CandidatePane()->CandidateArray(); - TInt selection = popup->CurrentSelection(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - TPtr deliberateSelection = iOwner->GetLatestDeliberateSelection(); - - editPane->SetCursorIndexOfKeystroke( validKeystroke->Count() ); - ShowInfo(); - editPane->SetUnderline( chineseCount, chineseCount + - validKeystroke->Count() - 1 ); - inputPane->SetText( spelling->MdcaPoint( selection ) ); - deliberateSelection = spelling->MdcaPoint( selection ); - - popup->SplitPhraseSpellingIntoPages(); - popup->SetDisplayPage(selection); - popup->SetPhraseItemTexts(); - popup->PopupSizeChanged(); - popup->Enable( validKeystroke->Count() ); - GetCandidate( selection ); - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->ShowVerticalScrollArrows( ETrue ); - UpdateIndicator(); - } - -// --------------------------------------------------------- -// KeyBackspace Or KeyUpArrow -// --------------------------------------------------------- -// -void TAknFepInputStateSpellingPinyinPhraseCreation::HandleKeyBackspaceOrKeyUpArrow( - TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - - TBool state = ETrue; - if ( popup->IsChangeStatet() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - if ( state ) - { - popup->SetChangeState( ETrue ); - //change state to EKeySequenceEdit - popup->SetFromEditToSpellingFlag( ETrue ); - iOwner->ChangeState( EKeySequenceEdit ); - } - } - -// --------------------------------------------------------- -// KeyOK Or KeyDownArrow Or KeyCBA1 -// --------------------------------------------------------- -// -void TAknFepInputStateSpellingPinyinPhraseCreation::HandleKeyOKOrKeyDownArrowOrKeyCBA1( - TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - TBool state = ETrue; - if ( popup->IsChangeStatet() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - - TBool changeState = ( popup->ChooseChineseCharacterArray()->Count() != - KMaxPhraseCreationCount ) && ( popup->KeystrokeArray()->Count() != 0 ); - - if ( changeState && state ) - { - if(popup->IsEnabled()) - { - popup->Enable(EFalse); - } - popup->SetChangeState( ETrue ); - iOwner->ChangeState(ECandidateSelection); - } - } - -// --------------------------------------------------------- -// KeyRightArrow -// --------------------------------------------------------- -// -void TAknFepInputStateSpellingPinyinPhraseCreation::HandleKeyRightArrow() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - TBuf spelling; - popup->SetPhraseCreationState( EFalse ); - if( popup->SelectNextPhrase() ) - { - if ( RefreshValidKeystroke() ) - { - RefreshShowInfo(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - -// --------------------------------------------------------- -// KeyRightArrow -// --------------------------------------------------------- -// -void TAknFepInputStateSpellingPinyinPhraseCreation::HandleKeyLeftArrow() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - - if( popup->SelectPrevPhrase() ) - { - if ( RefreshValidKeystroke() ) - { - RefreshShowInfo(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - -// --------------------------------------------------------- -// Refresh Valid Keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStateSpellingPinyinPhraseCreation::RefreshValidKeystroke() - { - TRAPD( ret, RefreshValidKeystrokeL() ); - if ( KErrNone != ret ) - { - return EFalse; - } - return ETrue; - } - -// --------------------------------------------------------- -// Refresh Valid Keystroke. -// --------------------------------------------------------- -// -void TAknFepInputStateSpellingPinyinPhraseCreation::RefreshValidKeystrokeL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* validKeystroke = popup->InEffectKeystrokeArray(); - CDesCArrayFlat* keystroke = popup->ShowKeystrokeArray(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - TInt selection = popup->CurrentSelection(); - validKeystroke->Reset(); - TInt spellLength = spelling->MdcaPoint( selection ).Length(); - - for ( TInt i = 0; ( i < spellLength ) && ( spellLength <= - keystroke->Count() ); ++i ) - { - validKeystroke->AppendL( keystroke->MdcaPoint( i ) ); - } - - if ( spellLength < keystroke->Count() ) - { - if ( KDelimiter == keystroke->MdcaPoint( spellLength )[0] ) - { - validKeystroke->AppendL( keystroke->MdcaPoint( spellLength ) ); - } - } - - validKeystroke->Compress(); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuifingeritutinputstategeneric.cpp --- a/fep/aknfep/src/aknfepuifingeritutinputstategeneric.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,208 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateInitialChineseGeneric methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include -#include -#include - -#include "aknfepuifingeritutinputstategeneric.h" -#include "AknFepCaseManager.h" -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManager.h" - -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepUIFingerItutInputStateChineseGeneric::TAknFepUIFingerItutInputStateChineseGeneric( - MAknFepUIManagerStateInterface* aOwner/*, - MAknFepUICtrlContainerChinese* aUIContainer*/) - :TAknFepInputStateBase(aOwner),//TAknFepInputStateInitialChineseMultitapBase(aOwner, aUIContainer), - iPreObserver(NULL) - { - } - -// --------------------------------------------------------------------------- -// Handle key event -// --------------------------------------------------------------------------- -// -TBool TAknFepUIFingerItutInputStateChineseGeneric::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBool ret = ETrue; - - if (aLength == ELongKeyPress && - (aKey >= EPtiKey0 && aKey <= EPtiKey9)) - { - TChar ch(aKey); - TBuf<1> buf; - buf.Append(ch); - fepMan->NewCharacterL(buf); - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - return ret; - } - - if(iData && (iData != aKey)) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - - //7,8,9 are not multitap in EStroke, so commit - if ((fepMan->InputMode() == EStroke) && - (iData == EPtiKey7 || iData == EPtiKey8 || iData == EPtiKey9 )) - { - fepMan->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - } - - iData = aKey; - - switch(aKey) - { - case EPtiKey0: - case EPtiKey1: - { - const TPtiTextCase oldCase = ptiengine->Case(); - if (fepMan->InputMode() == EStroke) - { - ptiengine->SetCase(EPtiCaseUpper); - } - SetPreObserver(ptiengine->Observer()); - ptiengine->SetObserver(this); - TPtrC retText = ptiengine->AppendKeyPress((TPtiKey)aKey); - fepMan->NewCharacterL(retText); - ptiengine->SetCase(oldCase); - } - break; - case EPtiKey7: - case EPtiKey8: - case EPtiKey9: - { - if (fepMan->InputMode() == EStroke) - { - const TPtiTextCase oldCase = ptiengine->Case(); - ptiengine->SetCase(EPtiCaseUpper); - - SetPreObserver(ptiengine->Observer()); - ptiengine->SetObserver(this); - - TPtrC retText = ptiengine->AppendKeyPress((TPtiKey)aKey); - fepMan->NewCharacterL(retText); - ptiengine->SetCase(oldCase); - } - } - break; - case EPtiKeyStar: - { - if (aLength == EShortKeyPress) - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->ClearCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - } - else if (fepMan->IsAbleToLaunchSCT()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - else - { - if (fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - } - break; - case EStdKeyNull: - { - ret = EFalse; - } - break; - case EKeyOK: - case EKeyBackspace: - default: - { - ret = EFalse; - } - } - - return ret; - } - -// --------------------------------------------------------------------------- -// Set Previous ptiengine observer -// --------------------------------------------------------------------------- -// -void TAknFepUIFingerItutInputStateChineseGeneric::SetPreObserver(MPtiObserver* aPreObserver) - { - if (aPreObserver != this) - { - iPreObserver = aPreObserver; - } - } - -// --------------------------------------------------------------------------- -// Get Previous ptiengine observer -// --------------------------------------------------------------------------- -// -MPtiObserver* TAknFepUIFingerItutInputStateChineseGeneric::PreObserver() - { - return iPreObserver; - } - -// --------------------------------------------------------------------------- -// Key timer expired called by ptiengine -// --------------------------------------------------------------------------- -// -void TAknFepUIFingerItutInputStateChineseGeneric::KeyTimerExpired() - { - if (iData) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TRAP_IGNORE(fepMan->CommitInlineEditL()); - - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - caseMan->UpdateCase(ENullNaviEvent); - - iData = 0; - - ptiengine->SetObserver(PreObserver()); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputminiqwertypinyinphrasebase.cpp --- a/fep/aknfep/src/aknfepuiinputminiqwertypinyinphrasebase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2684 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TAknFepInputStateStrokePhraseCreationBase definition. - * -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include -#include -#include -#include -#include //CAknWarningNote -// User includes -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" //pinyin phrase creation -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManager.h" -#include "aknfepuiinputminiqwertypinyinphrasebase.h" - -// Constant definition -const TInt KMaxPhraseCount = 50; -const TInt KMaxPhraseCreationCount = 7; -const TInt KMaxKeystrokeCount = 31; -const TInt KInvalidToneMark = -1; -const TUint16 KAutoDLT = 0x002E; -const TUint16 KManualDLT = 0x0027; -const TUint16 KPYa = 0x0061; -const TUint16 KPYb = 0x0062; -const TUint16 KPYc = 0x0063; -const TUint16 KPYd = 0x0064; -const TUint16 KPYe = 0x0065; -const TUint16 KPYf = 0x0066; -const TUint16 KPYg = 0x0067; -const TUint16 KPYh = 0x0068; -const TUint16 KPYi = 0x0069; -const TUint16 KPYj = 0x006A; -const TUint16 KPYk = 0x006B; -const TUint16 KPYl = 0x006C; -const TUint16 KPYm = 0x006D; -const TUint16 KPYn = 0x006E; -const TUint16 KPYo = 0x006F; -const TUint16 KPYp = 0x0070; -const TUint16 KPYq = 0x0071; -const TUint16 KPYr = 0x0072; -const TUint16 KPYs = 0x0073; -const TUint16 KPYt = 0x0074; -const TUint16 KPYu = 0x0075; -const TUint16 KPYv = 0x0076; -const TUint16 KPYw = 0x0077; -const TUint16 KPYx = 0x0078; -const TUint16 KPYy = 0x0079; -const TUint16 KPYz = 0x007A; - -_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" ); - -const TMiniQwertyKeyMap StrokeMap[] = - { - {KPYa, EPtiKeyQwertyA}, - {KPYb, EPtiKeyQwertyB}, - {KPYc, EPtiKeyQwertyC}, - {KPYd, EPtiKeyQwertyD}, - {KPYe, EPtiKeyQwertyE}, - {KPYf, EPtiKeyQwertyF}, - {KPYg, EPtiKeyQwertyG}, - {KPYh, EPtiKeyQwertyH}, - {KPYi, EPtiKeyQwertyI}, - {KPYj, EPtiKeyQwertyJ}, - {KPYk, EPtiKeyQwertyK}, - {KPYl, EPtiKeyQwertyL}, - {KPYm, EPtiKeyQwertyM}, - {KPYn, EPtiKeyQwertyN}, - {KPYo, EPtiKeyQwertyO}, - {KPYp, EPtiKeyQwertyP}, - {KPYq, EPtiKeyQwertyQ}, - {KPYr, EPtiKeyQwertyR}, - {KPYs, EPtiKeyQwertyS}, - {KPYt, EPtiKeyQwertyT}, - {KPYu, EPtiKeyQwertyU}, - {KPYv, EPtiKeyQwertyV}, - {KPYw, EPtiKeyQwertyW}, - {KPYx, EPtiKeyQwertyX}, - {KPYy, EPtiKeyQwertyY}, - {KPYz, EPtiKeyQwertyZ}, - {KManualDLT, EPtiKeyQwertySpace} - }; - -const TMiniQwertyToneMap PinyinToneMap[] = - { - {0x02C9, 1}, - {0x02CA, 2}, - {0x02C7, 3}, - {0x02CB, 4}, - {0x02D9, 5} - }; - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseCreationBase::TAknFepInputStateStrokePhraseCreationBase -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepInputMiniQwertyPinyinPhraseBase::TAknFepInputMiniQwertyPinyinPhraseBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) : - TAknFepInputStateCandidateQwertyBaseChinesePhrase(aOwner, aUIContainer) - { - if (iOwner->PtiEngine()->InputMode() != EPtiEnginePinyinPhraseQwerty) - { - iOwner->PtiEngine()->SetInputMode(EPtiEnginePinyinPhraseQwerty); - } - iOwner->PtiEngine()->SetCandidatePageLength(KMaxPhraseCount); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && uiContainer->CandidatePane()->IsFirstPage()); - uiContainer->ShowVerticalScrollArrows(multiplePages); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL(TInt aKey, - TKeyPressLength aLength) - { - // - switch (aKey) - { - case EKeyLeftShift: - case EKeyLeftCtrl: - case EKeyRightCtrl: - case EStdKeyDevice1:// CBA2 - { - iOwner->FepMan()->TryCloseUiL(); - break; - } - case EKeyRightFunc: - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - break; - } - case EStdKeyLeftFunc: //tone mark. - { - HandlToneMarkL(); - break; - } - case EStdKeyBackspace: - { - if (CheckKeyNeedRepeat(aLength) ) - { - HandleKeyBackspaceL(aLength); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - break; - } - case EStdKeyEnter://Enter keypress. - { - HandlEnterKeyL(); - break; - } - case EStdKeyDevice0:// CBA1 - case EStdKeyDevice3:// CBASelect - { - HandleCommitL(); - break; - } - case EStdKeyUpArrow: - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - break; - } - case EStdKeyDownArrow: - { - if (EMiniQwertyEdit == iState) - { - if (CheckFirstGroupStroke() ) - { - iOwner->ChangeState(EEntry); - } - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - break; - } - case EStdKeyLeftArrow: - { - if (EMiniQwertyEdit == iState) - { - UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( EManualChangeState ); - MoveCursorLeft(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - break; - } - case EStdKeyRightArrow: - { - if (EMiniQwertyEdit == iState) - { - UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( EManualChangeState ); - MoveCursorRight(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - break; - } - case EStdKeySpace: - { - if (EShortKeyPress == aLength) - { - HandlSpaceKeyL(); - break; - } - break; - } - default: - { - if (CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || CAknFepFnKeyManager::EFnKeyLock - == iOwner->FepMan()->FnKeyState() - || ( CAknFepFnKeyManager::EFnKeyDown == iOwner->FepMan()->FnKeyState() && iState != ECandidate )) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ETrue; - } - else - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed) - || iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - else - if ( (EShortKeyPress == aLength ) - && (iOwner->IsValidChineseInputKeyQwerty(aKey) )) - { - if (iState == ECandidate) - { - HandleKeyFromCandidateL(aKey, aLength); - } - else - { - HandleDefaultKeyL(aKey); - } - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - break; - } - } - - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::RefreshUI -// Update input window. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::RefreshUI(TBool aRefresh) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - // get cursor position - if (aRefresh) - { - TPoint baseLine; - TInt height(0); - TInt ascent(0); - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)) - ; - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - } - if ( (uiContainer->EditPaneWindow()->KeystrokeArray()->Count() > 0 ) || - (uiContainer->EditPaneWindow()->PhraseArray()->Count() > 0 ) ) - { - ShowInfoOnEEPPane(); - SetWarningColor(); - ShowInfoOnCandidatePane(); - UpdateIndicator(); - TRAP_IGNORE( ChangeCbaL() ); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::CheckFirstGroupStroke -// check the first group stroke of keystroke. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckFirstGroupStroke() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray(); - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - TInt keyCode = 0; - TInt toneMark = 0; - if ( 0 == showKeystroke->Count() ) - { - return EFalse; - } - - if (KInvalidToneMark != ToneMark(showKeystroke->MdcaPoint( 0) ) ) - { - return EFalse; - } - - ClearPtiEngineKeystroke(); - for (TInt i = 0; i < showKeystroke->Count(); ++i) - { - if (CheckSpellingDLT(showKeystroke->MdcaPoint(i) ) ) - { - if ( 0 == i) - { - return EFalse; - } - else - { - return ETrue; - } - } - toneMark = ToneMark(showKeystroke->MdcaPoint(i) ); - if (KInvalidToneMark != toneMark) - { - for (TInt j = 0; j < toneMark; ++j) - { - ptiengine->IncrementToneMark(ETrue); - TPtrC ptr0 = getCurrentLeastDLTSpell(); - if (ptr0.Length() > 0) - { - if ( 0 - == ptr0.Mid( ptr0.Length() - 1, 1 ).Compare(showKeystroke->MdcaPoint(i) ) ) - { - return ETrue; - } - } - } - TPtrC ptr = getCurrentLeastDLTSpell(); - if ( 0 == ptr.Mid( ptr.Length() - 1, 1 ).Compare(showKeystroke->MdcaPoint(i) ) ) - { - return ETrue; - } - else - { - return EFalse; - } - } - GetKeystrokeCode(keyCode, showKeystroke->MdcaPoint(i) ); - stringBeforeLength = getCurrentLeastDLTSpell().Length(); - ptiengine->AppendKeyPress((TPtiKey)keyCode).Length(); - stringAfterLength = getCurrentLeastDLTSpell().Length(); - //the keystroke is invalid. - if (stringBeforeLength == stringAfterLength) - { - return EFalse; - } - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::HandlEnterKey -// Handle Enter key press -// --------------------------------------------------------------------------- -// -TInt TAknFepInputMiniQwertyPinyinPhraseBase::GetCursorPos() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TInt pos = 0; - TInt count = 0; - TBuf<1> autoDLT; - autoDLT.Append(KAutoDLT); - - if ( 0 == index) - { - pos = phraseCount; - } - else - if (keystroke->Count() == index) - { - pos = phraseCount + showKeystroke->Count(); - } - else - { - for (TInt i = 0; i < showKeystroke->Count(); ++i) - { - if ( 0 != showKeystroke->MdcaPoint( i ).Compare(autoDLT) ) - { - count = count + 1; - } - if (count == index) - { - pos = phraseCount + i + 1; - break; - } - } - } - return pos; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::HandlEnterKeyL -// Handle Enter key press -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::HandlEnterKeyL() - { - TBuf currentText; - MAknFepUICtrlEditPane* editpane = UIContainer()->EditPaneWindow(); - CDesCArrayFlat* showkeyStoke = editpane->ShowKeystrokeArray(); - CDesCArrayFlat* phraseArray = editpane->PhraseArray(); - TInt phraseCount = phraseArray->Count(); - TInt keyStrokeCount = showkeyStoke->Count(); - TInt i = 0; - TBuf<1> autoDLT; - autoDLT.Append(KAutoDLT); - - for (i = 0; i < phraseCount; i++) - { - currentText.Append(phraseArray->MdcaPoint(i) ); - } - for (i = 0; i < keyStrokeCount; i++) - { - currentText.Append(showkeyStoke->MdcaPoint(i) ); - } - - while (currentText.Find(autoDLT)> 0) - { - currentText.Replace(currentText.Find(autoDLT), 1, KNullDesC); - } - - if (currentText.Length() ) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - fepMan->NewTextL(currentText); - fepMan->CommitInlineEditL(); - if (keyStrokeCount == 0 && currentText.Length() > 1) - { - AddPhraseToDB(currentText); - } - - UIContainer()->EditPaneWindow()->ResetAllArray(); - UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse); - - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::HandlToneMarkL -// Handle tone mark key press. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::HandlSpaceKeyL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TInt showKeystrokeCount = editPane->ShowKeystrokeArray()->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TBuf<1> manualDLT; - TBuf<1> autoDLT; - manualDLT.Append( KManualDLT ); - autoDLT.Append( KAutoDLT ); - - TBool firstGroup = CheckFirstGroupStroke(); - - keystrokeArray->InsertL(index, manualDLT); - editPane->SetCursorIndexOfKeystroke(index + 1); - AnalyseL(); - - if ( editPane->ShowKeystrokeArray()->Count() > KMaxKeystrokeCount ) - { - keystrokeArray->Delete( index ); - editPane->SetCursorIndexOfKeystroke( index ); - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - AnalyseL(); - return; - } - - //Auto change from EMiniQwertyEdit state to EEntry state. - if (EMiniQwertyEdit == iState) - { - if ( ( !firstGroup ) && CheckFirstGroupStroke() ) - { - if ( EAutoChangeStateFromCandidate == editPane->GetAutoChangeStateFlag() ) - { - RefreshUI(); - editPane->SetChangeState(ETrue); - iOwner->ChangeState(ECandidate); - } - else if ( EAutoChangeStateFromInput == editPane->GetAutoChangeStateFlag() ) - { - editPane->SetChangeState(ETrue); - iOwner->ChangeState(EEntry); - } - else - { - RefreshUI(); - } - return; - } - } - - //Auto change from EEntry state to EMiniQwertyEdit state. - if (EEntry == iState) - { - if ( !CheckFirstGroupStroke() ) - { - editPane->SetAutoChangeStateFlag(EAutoChangeStateFromInput); - editPane->SetChangeState(ETrue); - iOwner->ChangeState(EMiniQwertyEdit); - return; - } - } - - RefreshUI(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::HandlToneMarkL -// Handle tone mark key press. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::HandlToneMarkL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TBool firstGroup = CheckFirstGroupStroke(); - AddToneMarkL(); - AnalyseL(); - //Auto change from EMiniQwertyEdit state to EEntry state. - if (EMiniQwertyEdit == iState) - { - if ( ( !firstGroup ) && CheckFirstGroupStroke() ) - { - if ( EAutoChangeStateFromCandidate == editPane->GetAutoChangeStateFlag() ) - { - RefreshUI(); - editPane->SetChangeState(ETrue); - iOwner->ChangeState(ECandidate); - } - else if ( EAutoChangeStateFromInput == editPane->GetAutoChangeStateFlag() ) - { - editPane->SetChangeState(ETrue); - iOwner->ChangeState(EEntry); - } - else - { - RefreshUI(); - } - return; - } - } - - //Auto change from EEntry state to EMiniQwertyEdit state. - if (EEntry == iState) - { - if ( !CheckFirstGroupStroke() ) - { - editPane->SetAutoChangeStateFlag(EAutoChangeStateFromInput); - editPane->SetChangeState(ETrue); - iOwner->ChangeState(EMiniQwertyEdit); - return; - } - } - RefreshUI(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::CheckManualDelimiter -// Check the delimiter that wether is manual delimiter. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckManualDelimiter( - const TInt aCount, const TDesC& aKeystroke) - { - TInt keyCount = 0; - for (TInt i = 0; i < aKeystroke.Length(); ++i) - { - if (KManualDLT != aKeystroke[i]) - { - keyCount = keyCount + 1; - } - if (aCount == keyCount) - { - break; - } - } - - if (keyCount != aCount) - { - return EFalse; - } - - if (aKeystroke.Length() == keyCount) - { - return EFalse; - } - - if (KManualDLT != aKeystroke[keyCount]) - { - return EFalse; - } - - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingL -// Analyse Pinyin spelling. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingL( - const TDesC& aKeystroke, const TDesC& aSpelling, - CDesCArrayFlat* aShowKeystroke) - { - TInt count = 0; - TBuf<1> manualDLT; - TBuf<1> autoDLT; - manualDLT.Append(KManualDLT); - autoDLT.Append(KAutoDLT); - - if ( 0 == aSpelling.Compare(aKeystroke) ) - { - for (TInt i = 0; i < aKeystroke.Length(); ++i) - { - aShowKeystroke->AppendL(aKeystroke.Mid(i, 1) ); - } - return; - } - - for (TInt i = 0; i < aSpelling.Length(); ++i) - { - if (KManualDLT == aSpelling[i]) - { - //Manual delimiter - if (CheckManualDelimiter(count, aKeystroke) ) - { - aShowKeystroke->AppendL(manualDLT); - } - else - { - aShowKeystroke->AppendL(autoDLT); - } - } - else - { - aShowKeystroke->AppendL(aSpelling.Mid(i, 1) ); - count = count + 1; - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingAddToneMarkL -// Analyse spelling after user press tone mark. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingAddToneMarkL( - TInt aI, - TInt aToneMarkCount, - CDesCArrayFlat* aKeystroke, - CDesCArrayFlat* aShowKeystroke ) - { - TBuf<1> atuoDLT; - TBuf<1> manualDLT; - atuoDLT.Append(KAutoDLT); - manualDLT.Append(KManualDLT); - if ( CheckSpellingDLT( aKeystroke->MdcaPoint( aI - 1 ) ) || - ( KInvalidToneMark != ToneMark( aKeystroke->MdcaPoint( aI - 1 ) ) ) ) - { - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) ); - } - else - { - if ( CheckSpellingAddToneMarkToPTIL( aToneMarkCount ) ) - { - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI - 1 ) ); - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) ); - } - else - { - if ( aShowKeystroke->Count() == 0 ) - { - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI - 1 ) ); - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) ); - } - else - { - if ( ( !CheckSpellingDLT(aShowKeystroke->MdcaPoint( - aShowKeystroke->Count() - 1 ) ) ) && - ( KInvalidToneMark == ToneMark( aShowKeystroke-> - MdcaPoint( aShowKeystroke->Count() - 1 ) ) ) ) - { - aShowKeystroke->AppendL( atuoDLT ); - } - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI - 1 ) ); - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) ); - } - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingAddKeyL -// Analyse spelling after user press key that is not tone mark. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingAddKeyL( - TInt& aI, - TInt aDelimterPos, - CDesCArrayFlat* aKeystroke, - CDesCArrayFlat* aShowKeystroke ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TBuf<1> atuoDLT; - TBuf<1> manualDLT; - atuoDLT.Append(KAutoDLT); - manualDLT.Append(KManualDLT); - if ( 0 == aI ) - { - if ( aI + 1 < aKeystroke->Count() ) - { - if ( ( KInvalidToneMark != ToneMark( aKeystroke->MdcaPoint( aI + 1 ) ) ) || - ( CheckSpellingDLT( aKeystroke->MdcaPoint( aI + 1 ) ) ) ) - { - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) ); - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI + 1 ) ); - aI = aI + 1; - } - else - { - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) ); - aShowKeystroke->AppendL( atuoDLT ); - } - } - else - { - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) ); - } - } - else if ( aI + 1 == aKeystroke->Count() ) - { - if ( ( 1 == aDelimterPos ) || ( -1 == aDelimterPos ) ) - { - if ( ( !CheckSpellingDLT( aShowKeystroke-> - MdcaPoint( aShowKeystroke->Count() - 1 ) ) && - ( KInvalidToneMark == ToneMark( aShowKeystroke-> - MdcaPoint( aShowKeystroke->Count() - 1 ) ) ) ) ) - { - aShowKeystroke->AppendL( atuoDLT ); - } - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) ); - } - else - { - for ( TInt ii = 0; ii < aDelimterPos - 1; ++ii ) - { - aShowKeystroke->Delete( aShowKeystroke->Count() - 1 ); - } - if ( ( !CheckSpellingDLT( aShowKeystroke-> - MdcaPoint( aShowKeystroke->Count() - 1 ) ) ) && - ( KInvalidToneMark == ToneMark( aShowKeystroke->MdcaPoint( - aShowKeystroke->Count() - 1 ) ) ) ) - { - aShowKeystroke->AppendL( atuoDLT ); - } - aI = aI - aDelimterPos; - } - } - else - { - if ( -1 == aDelimterPos ) - { - if ( ( !CheckSpellingDLT( aShowKeystroke->MdcaPoint( - aShowKeystroke->Count() - 1 ) ) ) && - ( KInvalidToneMark == ToneMark( aShowKeystroke->MdcaPoint( - aShowKeystroke->Count() - 1 ) ) ) ) - { - aShowKeystroke->AppendL( atuoDLT ); - } - if ( 0 == getCurrentLeastDLTSpell().Length() ) - { - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) ); - if ( KInvalidToneMark != ToneMark( aKeystroke->MdcaPoint( aI + 1 ) ) ) - { - aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI + 1 ) ); - aI = aI + 1; - } - } - else - { - aI = aI - 1; - } - } - else - { - for ( TInt ii = 0; ii < aDelimterPos - 1; ++ii ) - { - aShowKeystroke->Delete( aShowKeystroke->Count() - 1 ); - } - if ( ( !CheckSpellingDLT( aShowKeystroke->MdcaPoint( - aShowKeystroke->Count() - 1 ) ) ) && - ( KInvalidToneMark == ToneMark( aShowKeystroke->MdcaPoint( - aShowKeystroke->Count() - 1 ) ) ) ) - { - aShowKeystroke->AppendL( atuoDLT ); - } - aI = aI - aDelimterPos; - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseL -// Analyse key storke. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseL() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - //user pressed keystroke sequence - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - //stroke to be shown - CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray(); - TInt start = 0; - TInt toneMarkCount = KInvalidToneMark; - TInt delimiterPosition = 0; - showKeystroke->Reset(); - TBuf<1> atuoDLT; - TBuf<1> manualDLT; - atuoDLT.Append(KAutoDLT); - manualDLT.Append(KManualDLT); - TBuf keyTmp; - - if ( keystroke->Count() == 0 ) - { - return; - } - - //if the first keystroke is delimiter or ToneMark, analyse frome the next one - if ( CheckSpellingDLT( keystroke->MdcaPoint( 0 ) ) || - ( KInvalidToneMark != ToneMark( keystroke->MdcaPoint( 0 ) ) ) ) - { - showKeystroke->AppendL(keystroke->MdcaPoint( 0 ) ); - start = 1; - } - - ClearPtiEngineKeystroke(); - - for ( TInt i = start; i < keystroke->Count(); ++i ) - { - toneMarkCount = ToneMark( keystroke->MdcaPoint( i ) ); - // current keystroke is delimiter - if ( CheckSpellingDLT( keystroke->MdcaPoint( i ) ) ) - { - showKeystroke->AppendL(keystroke->MdcaPoint( i ) ); - ClearPtiEngineKeystroke(); - } - // current keystroke is tone mark - else if ( KInvalidToneMark != toneMarkCount ) - { - AnalyseSpellingAddToneMarkL( i, toneMarkCount, keystroke, showKeystroke ); - ClearPtiEngineKeystroke(); - } - // current keystroke is A - Z - else - { - delimiterPosition = CheckSpellingAddKeyToPTIL( keystroke->MdcaPoint( i ) ); - if ( 0 == delimiterPosition ) - { - if ( ( 0 != i ) && - ( 1 == this->getCurrentLeastDLTSpell().Length() ) ) - { - if ( ( !CheckSpellingDLT( showKeystroke-> - MdcaPoint( showKeystroke->Count() - 1 ) ) ) && - ( KInvalidToneMark == ToneMark( showKeystroke-> - MdcaPoint( showKeystroke->Count() - 1 ) ) ) ) - { - showKeystroke->AppendL( atuoDLT ); - } - } - if ( i + 1 < keystroke->Count() ) - { - if ( KInvalidToneMark == ToneMark( keystroke->MdcaPoint( i + 1 ) ) ) - { - showKeystroke->AppendL( keystroke->MdcaPoint( i ) ); - } - } - else - { - showKeystroke->AppendL( keystroke->MdcaPoint( i ) ); - } - } - else - { - AnalyseSpellingAddKeyL( i, delimiterPosition, keystroke, showKeystroke ); - ClearPtiEngineKeystroke(); - } - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::HandleCommitL -// Handle CBA1 or select event. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::HandleCommitL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt keyCount = editPane->KeystrokeArray()->Count(); - TInt showKeyCount = editPane->ShowKeystrokeArray()->Count(); - CDesCArrayFlat* phrase = editPane->PhraseArray(); - TInt cdtCount = uiContainer->CandidatePane()->CandidateArray()->Count(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - if (EMiniQwertyEdit == iState) - { - if ( ( showKeyCount > 0 ) && (cdtCount > 0 ) ) - { - UIContainer()->EditPaneWindow()->SetChangeState(ETrue); - iOwner->ChangeState(ECandidate); - return; - } - - if ( keyCount > 0 ) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return; - } - } - - if ( ( 0 == keyCount ) && (phrase->Count() <= 1 ) ) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return; - } - - if ( ( 0 == keyCount ) && (phrase->Count() > 1 ) ) - { - TBuf phraseCreated; - for (TInt i = 0; ( (i < phrase->Count() ) && (i - < KMaxPhraseCreationCount ) ); ++i ) - { - phraseCreated.Append(phrase->MdcaPoint( i ) ); - AddPhraseToDB(phraseCreated); - } - fepMan->NewTextL(phraseCreated); - fepMan->CommitInlineEditL(); - if ( !UIContainer()->EditPaneWindow()->GetPhraseCreationFlag() ) - { - UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse); - iOwner->PtiEngine()->SetPredictiveChineseChar(phraseCreated); -#ifdef RD_INTELLIGENT_TEXT_INPUT - UIContainer()->EditPaneWindow()->SetChangeState(ETrue); - if (EPtiKeyboardQwerty4x10 == iOwner->FepMan()->KeyboardLayout() || - EPtiKeyboardQwerty3x11 == iOwner->FepMan()->KeyboardLayout() ) - { - iOwner->ChangeState(EPredictiveCandidate); - } -#endif - } - else - { - UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse); - iOwner->FepMan()->TryCloseUiL(); - } - return; - } - - TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if (text.Length() == 0) - { - return; - } - - if ( !CommitInlineEEPL(text) ) - { - DoActionAfterCommit(); - } - else - { - if ( !CheckFirstGroupStroke() ) - { - if ( iState == EEntry ) - { - editPane->SetAutoChangeStateFlag(EAutoChangeStateFromInput); - } - else - { - editPane->SetAutoChangeStateFlag(EAutoChangeStateFromCandidate); - } - iOwner->ChangeState(EMiniQwertyEdit); - return; - } - else - { - if ( iState == EEntry ) - { - UIContainer()->EditPaneWindow()->SetChangeState( ETrue ); - iOwner->ChangeState( ECandidate ); - } - } - AnalyseL(); - RefreshUI(); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyBackspaceL -// Handle KeyBackspace event. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyBackspaceL( - TKeyPressLength aLength) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TBool firstGroup = CheckFirstGroupStroke(); - - if ( ( 0 == index ) && (phraseCount != 0 ) ) - { - RevertPhraseToKeystrokeL(); - } - else - if ( ( 0 == index ) && (keystroke->Count() > 0 ) ) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - else - { - if ( !DeleteKeystrokeL() ) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - - //if the keystroke is null and phrase is null then close input window. - if ( ( 0 == phraseCount ) && (keystroke->Count() == 0 )) - { - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - return; - } - - AnalyseL(); - //Auto change from EMiniQwertyEdit state to EEntry state. - if (EMiniQwertyEdit == iState) - { - if ( ( !firstGroup ) && CheckFirstGroupStroke() ) - { - if ( EAutoChangeStateFromCandidate == editPane->GetAutoChangeStateFlag() ) - { - RefreshUI(); - editPane->SetChangeState(ETrue); - iOwner->ChangeState(ECandidate); - } - else if ( EAutoChangeStateFromInput == editPane->GetAutoChangeStateFlag() ) - { - editPane->SetChangeState(ETrue); - iOwner->ChangeState(EEntry); - } - else - { - RefreshUI(); - } - return; - } - } - - //Auto change from EEntry state to EMiniQwertyEdit state. - if (EEntry == iState) - { - if ( (firstGroup ) && ( !CheckFirstGroupStroke() )) - { - editPane->SetChangeState(EFalse); - editPane->SetAutoChangeStateFlag(EAutoChangeStateFromInput); - iOwner->ChangeState(EMiniQwertyEdit); - return; - } - } - - RefreshUI(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::HandleDefaultKeyL -// Handle default key press event. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::HandleDefaultKeyL(TInt aKey) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TBool firstGroup = CheckFirstGroupStroke(); - - if ( !AddKeystrokeL(aKey) ) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return; - } - - AnalyseL(); - - //Auto change from EMiniQwertyEdit state to EEntry state. - if (EMiniQwertyEdit == iState) - { - if ( ( !firstGroup ) && CheckFirstGroupStroke() ) - { - if ( EAutoChangeStateFromCandidate == editPane->GetAutoChangeStateFlag() ) - { - RefreshUI(); - editPane->SetChangeState(ETrue); - iOwner->ChangeState(ECandidate); - } - else if ( EAutoChangeStateFromInput == editPane->GetAutoChangeStateFlag() ) - { - editPane->SetChangeState(ETrue); - iOwner->ChangeState(EEntry); - } - else - { - RefreshUI(); - } - return; - } - } - - //Auto change from EEntry state to EMiniQwertyEdit state. - if (EEntry == iState) - { - if ( !CheckFirstGroupStroke() ) - { - editPane->SetAutoChangeStateFlag(EAutoChangeStateFromInput); - editPane->SetChangeState(ETrue); - iOwner->ChangeState(EMiniQwertyEdit); - return; - } - } - - RefreshUI(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::ShowInfoOnEEP -// Show the showinfo on the EEP ctrl. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::ShowInfoOnEEPPane() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - CDesCArrayFlat* phrase = editPane->PhraseArray(); - TBuf showInfo; - TBuf keyBuf; - for (TInt i = 0; i < phrase->Count(); ++i) - { - showInfo.Append(phrase->MdcaPoint(i) ); - } - - for (TInt ii = 0; ii < showKeystroke->Count(); ++ii) - { - showInfo.Append(showKeystroke->MdcaPoint(ii) ); - } - - for (TInt j = 0; j < keystrokeArray->Count(); ++j) - { - keyBuf.Append(keystrokeArray->MdcaPoint(j) ); - } - - editPane->SetTextForZhuyin(showInfo, GetCursorPos(), phrase->Count(), - keyBuf, editPane->GetCursorIndexOfKeystroke() ); - - if (iState == ECandidate) - { - editPane->DisableCursor(); - } - else - if (iState == EEntry) - { - editPane->EnableCursor(); - editPane->DeactiveCursor(); - } - else - if (iState == EMiniQwertyEdit) - { - editPane->EnableCursor(); - editPane->ActiveCursor(); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::ShowInfoOnEEP -// Show the showinfo on the EEP ctrl. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::ShowInfoOnCandidatePane() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - CDesCArrayFlat* phrase = uiContainer->CandidatePane()->CandidateArray(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - if (KMaxPhraseCreationCount == editPane->PhraseArray()->Count() ) - { - phrase->Reset(); - TRAP_IGNORE( phrase->AppendL( KMaxPhraseNote ) ); - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable(ETrue); - uiContainer->ShowHorizontalScrollArrows(EFalse); - uiContainer->ShowVerticalScrollArrows(EFalse); - } - - TRAP_IGNORE( GetCandidateL() ); - if (phrase->Count() > 0) - { - // layout candidate and fill candidate buffer for first display page - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable(ETrue); - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && uiContainer->CandidatePane()->IsFirstPage()); - uiContainer->ShowVerticalScrollArrows(multiplePages); - if (iState == EMiniQwertyEdit) - { - UIContainer()->FocusCandidatePane(EFalse); - } - else - { - UIContainer()->FocusCandidatePane(ETrue); - UIContainer()->CandidatePane()->SelectFirstPhrase(); - } - } - else - { - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable(ETrue); - uiContainer->ShowHorizontalScrollArrows(EFalse); - uiContainer->ShowVerticalScrollArrows(EFalse); - uiContainer->SetControlInVisible( EFalse ); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::GetShowKeystroke -//Handle horizontal navigation. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::GetShowKeystroke(TInt aKey, - TDes& aKeystroke) - { - TInt count = sizeof(StrokeMap )/sizeof(StrokeMap[0] ); - for (TInt i = 0; i < count; i++) - { - if (aKey == StrokeMap[i].iKeyCode) - { - aKeystroke.Append(StrokeMap[i].iValue); - break; - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::HandleHorizontalNavigation -//Handle horizontal navigation. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::HandleHorizontalNavigation( - TInt aKey) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EStdKeyLeftArrow) - { - if (!candidatePane->SelectPrev()) - { - candidatePane->SetCandidateBuffer(); - candidatePane->SelectLastPhrase(); - } - response = ETrue; - } - else - if (aKey == EStdKeyRightArrow) - { - if (!candidatePane->SelectNext()) - { - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - } - response = ETrue; - } - - if (response) - { - UpdateIndicator(); - } - - return response; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::UpdateIndicator -// Update Indicator. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (candidatePane->IsFirstPage()) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage()) - { - uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows(ETrue); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (iOwner->FepMan()->KeyboardLayout() == EPtiKeyboardQwerty4x10) - { - if (candidatePane->VisibleCandidateCount()==1) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } - else - { -#endif - if (candidatePane->SelectedIndex() == 0 - && candidatePane->IsFirstPage() ) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage() && (candidatePane->SelectedIndex() - == candidatePane->VisibleCandidateCount() - 1)) - { - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::DeleteMoreKeystrokeL -// Delete more keystroke than max leng. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::DeleteMoreKeystrokeL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TBuf<1> autoDLT; - autoDLT.Append( KAutoDLT ); - AnalyseL(); - // the count keystroke more than max length. - TInt count = showKeystroke->Count() - KMaxKeystrokeCount; - - for ( TInt i = 0; i < count; ++i ) - { - if ( 0 != showKeystroke->MdcaPoint( showKeystroke->Count() - 1 ).Compare( autoDLT ) ) - { - showKeystroke->Delete( showKeystroke->Count() - 1 ); - keystroke->Delete( keystroke->Count() - 1 ); - } - } - - if ( index > keystroke->Count() ) - { - editPane->SetCursorIndexOfKeystroke( keystroke->Count() ); - } - } -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::DeleteKeystrokeL -// Delete current keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::DeleteKeystrokeL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TInt showKeyCount = editPane->ShowKeystrokeArray()->Count(); - - if ( ( 0 == index ) || (keystroke->Count() == 0 )) - { - return EFalse; - } - if ( 1 == index ) - { - editPane->Reset(); - } - if (index >= keystroke->Count() ) - { - keystroke->Delete(keystroke->Count() - 1); - editPane->SetCursorIndexOfKeystroke(keystroke->Count() ); - } - else - { - keystroke->Delete(index - 1); - editPane->SetCursorIndexOfKeystroke(index - 1); - } - - if ( showKeyCount >= KMaxKeystrokeCount - 1 ) - { - DeleteMoreKeystrokeL(); - } - - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::AddPhraseToDB -// Add phrase to DB. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::AddPhraseToDB( - const TDesC& aPhraseAdd) - { - TPtiUserDictionaryEntry addUdbEntry(aPhraseAdd); - //Add the phrase to the DB by PTI Engine - iOwner->PtiEngine()->AddUserDictionaryEntry(addUdbEntry); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::RefreshCandidate -// Refresh candidate -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::RefreshCandidate() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable(ETrue); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - uiContainer->ShowVerticalScrollArrows(multiplePages); - - uiContainer->CandidatePane()->SelectFirstPhrase(); - UpdateIndicator(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::CheckKeyNeedRepeat -// Check key whether need repeat. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckKeyNeedRepeat( - TKeyPressLength aLength) - { - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - if (editPane->IsChangeState() && aLength == ELongKeyPress) - { - return EFalse; - } - else - { - editPane->SetChangeState(EFalse); - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::CommitInlineEEPL -// Commint text to EEP or editor -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::CommitInlineEEPL( - const TDesC& aDes) - { - TInt charCount = aDes.Length(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - MAknFepUICtrlEditPane* editpane = UIContainer()->EditPaneWindow(); - CDesCArrayFlat* showkeyStoke = editpane->ShowKeystrokeArray(); - CDesCArrayFlat* keyStoke = editpane->KeystrokeArray(); - CDesCArrayFlat* phraseArray = editpane->PhraseArray(); - CDesCArrayFlat* phraseShowKeyStroke = - editpane->PhraseShowKeyStrokeArray(); - TBuf buf; - TBuf<1> autoDLT; - autoDLT.Append(KAutoDLT); - - if (phraseArray->Count() == 0) - { - editpane->SetPhraseCreationFlag(EFalse); - } - phraseArray->AppendL(aDes); - - TInt delCount = 0; - for (TInt i = 0; i < showkeyStoke->Count() && charCount - && keyStoke->Count() != 0; i++) - { - TPtrC showptr = showkeyStoke->MdcaPoint(i); - TPtrC ptr = keyStoke->MdcaPoint( 0); - if (CheckSpellingDLT(showptr) || (KInvalidToneMark - != ToneMark(showptr) )) - { - charCount--; - } - if (showptr.Compare(autoDLT) != 0) - { - buf.Append(ptr); - keyStoke->Delete( 0); - } - delCount++; - } - - TInt phraseCount = phraseArray->Count(); - if (phraseCount > KMaxPhraseCreationCount) - { - phraseCount = KMaxPhraseCreationCount; - } - - if (keyStoke->Count() == 0 || phraseCount == KMaxPhraseCreationCount) - { - TBuf phraseCreated; - for (TInt ii = 0; ii < phraseCount; ++ii) - { - phraseCreated.Append(phraseArray->MdcaPoint(ii) ); - } - fepMan->NewTextL(phraseCreated); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(phraseCreated); - AddPhraseToDB(phraseCreated); - return EFalse; - } - - for (TInt j = 0; j < delCount; j++) - { - showkeyStoke->Delete( 0); - } - phraseShowKeyStroke->AppendL(buf); - - editpane->SetCursorIndexOfKeystroke( 0); - editpane->DisableCursor(); - editpane->SetPhraseCreationFlag(ETrue); - return ETrue; - } -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::ClearPtiEngineKeystroke -// clear the ptiengine keystroke; -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::ClearPtiEngineKeystroke() - { - iOwner->PtiEngine()->ClearCurrentWord(); - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::AddKeystrokeL -// Add keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::AddKeystrokeL(TInt aKey) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TInt showKeystrokeCount = editPane->ShowKeystrokeArray()->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TBuf<1> keystroke; - - if ( phraseCount + showKeystrokeCount >= KMaxKeystrokeCount ) - { - return EFalse; - } - - GetShowKeystroke(aKey, keystroke); - if ( index >= keystrokeArray->Count() ) - { - keystrokeArray->AppendL(keystroke); - editPane->SetCursorIndexOfKeystroke(keystrokeArray->Count() ); - } - else - { - keystrokeArray->InsertL(index, keystroke); - editPane->SetCursorIndexOfKeystroke(index + 1); - } - - if ( phraseCount + showKeystrokeCount >= KMaxKeystrokeCount - 1 ) - { - AnalyseL(); - if ( phraseCount + editPane->ShowKeystrokeArray()->Count() <= KMaxKeystrokeCount ) - { - return ETrue; - } - else - { - keystrokeArray->Delete( index ); - editPane->SetCursorIndexOfKeystroke( index ); - AnalyseL(); - return EFalse; - } - } - - - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::AddToneMarkL -// Add tone mark. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::AddToneMarkL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TInt showKeystrokeCount = editPane->ShowKeystrokeArray()->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TInt i = 0; - const TInt MaxToneMark = 4; - if ( phraseCount + showKeystrokeCount >= KMaxKeystrokeCount ) - { - if ( 0 == index ) - { - return EFalse; - } - else - { - if ( KInvalidToneMark == ToneMark( keystrokeArray->MdcaPoint( index - 1 ) ) ) - { - return EFalse; - } - } - } - - TBuf<1> toneMark; - - if ( 0 == index ) - { - toneMark.Append(PinyinToneMap[0].iValue); - keystrokeArray->InsertL( 0, toneMark); - editPane->SetCursorIndexOfKeystroke( 1); - return ETrue; - } - - TInt num = sizeof(PinyinToneMap )/( sizeof(PinyinToneMap[0])); - for ( i = 0; i < num; ++i ) - { - if (PinyinToneMap[i].iValue == keystrokeArray->MdcaPoint( index - 1 )[0]) - { - break; - } - } - - if ( i > MaxToneMark ) - { - toneMark.Append(PinyinToneMap[0].iValue); - keystrokeArray->InsertL(index, toneMark); - editPane->SetCursorIndexOfKeystroke( index + 1 ); - } - else - { - if ( MaxToneMark == i ) - { - toneMark.Append(PinyinToneMap[0].iValue); - } - else - { - toneMark.Append(PinyinToneMap[ i + 1 ].iValue); - } - keystrokeArray->Delete(index - 1); - keystrokeArray->InsertL(index - 1, toneMark); - } - - if ( phraseCount + showKeystrokeCount >= KMaxKeystrokeCount - 1 ) - { - AnalyseL(); - if ( phraseCount + editPane->ShowKeystrokeArray()->Count() > KMaxKeystrokeCount ) - { - if ( i > MaxToneMark ) - { - keystrokeArray->Delete( index ); - editPane->SetCursorIndexOfKeystroke( index ); - } - else - { - toneMark.Zero(); - toneMark.Append( PinyinToneMap[i].iValue ); - keystrokeArray->Delete( index - 1 ); - keystrokeArray->InsertL( index - 1, toneMark ); - } - AnalyseL(); - return EFalse; - } - } - - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::GetCandidateL -// Get the candidate info. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::GetCandidateL() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* phraseCandidates = - uiContainer->CandidatePane()->CandidateArray(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - phraseCandidates->Reset(); - TBuf buf; - TBuf<1> delimiter; - delimiter.Append( KManualDLT ); - TInt keyCode; - TInt count = KInvalidToneMark; - ClearPtiEngineKeystroke(); - - if ( showKeystroke->Count() == 0 ) - { - return; - } - - if ( CheckAllGroupStroke() && ( phraseCount == 0 ) ) - { - getCurrentLeastDLTSpell(); - ptiengine->GetChinesePhraseCandidatesL( *phraseCandidates ); - return; - } - - if ( CheckFirstGroupStroke() ) - { - ClearPtiEngineKeystroke(); - for ( TInt i = 0; i < showKeystroke->Count(); ++i ) - { - count = ToneMark( keystroke->MdcaPoint( i ) ); - if ( CheckSpellingDLT( showKeystroke->MdcaPoint( i ) ) ) - { - break; - } - else if ( KInvalidToneMark != count ) - { - for ( TInt j = 0; j < count; ++j ) - { - ptiengine->IncrementToneMark( ETrue ); - } - break; - } - else - { - GetKeystrokeCode( keyCode, keystroke->MdcaPoint( i ) ); - ptiengine->AppendKeyPress((TPtiKey)keyCode); - } - } - } - else - { - return; - } - getCurrentLeastDLTSpell(); - ptiengine->GetChinesePhraseCandidatesL( *phraseCandidates ); - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::GetKeystrokeCode -// get Code of the key stroke. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::GetKeystrokeCode(TInt& aKey, - const TDesC& aKeystroke) - { - TInt count = sizeof(StrokeMap )/sizeof(StrokeMap[0] ); - for (TInt i = 0; i < count; i++) - { - TBuf<1> buf; - buf.Append(StrokeMap[i].iValue); - if (0 == aKeystroke.Compare(buf)) - { - aKey = StrokeMap[i].iKeyCode; - break; - } - } - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::RevertPhraseToKeystrokeL -// Revert the phrase to keystroke. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::RevertPhraseToKeystrokeL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - CDesCArrayFlat* shownKeystrokeArray = editPane->ShowKeystrokeArray(); - CDesCArrayFlat* phrase = editPane->PhraseArray(); - CDesCArrayFlat* phraseStroke = editPane->PhraseShowKeyStrokeArray(); - TBuf buf; - if ( (phrase->Count() == 0 ) || (phraseStroke->Count() == 0 )) - { - return; - } - - buf.Append(phraseStroke->MdcaPoint(phraseStroke->Count() - 1) ); - for (TInt i = buf.Length() - 1; i >= 0; --i) - { - keystrokeArray->InsertL( 0, buf.Mid(i, 1) ); - } - phrase->Delete(phrase->Count() - 1); - phraseStroke->Delete(phraseStroke->Count() - 1); - AnalyseL(); - TInt showCount = editPane->ShowKeystrokeArray()->Count(); - TInt leng = phrase->Count() + showCount; - TInt deleteCount = 0; - if (leng > KMaxKeystrokeCount) - { - for (TInt i = 0; i < leng - KMaxKeystrokeCount; ++i) - { - if (KAutoDLT != shownKeystrokeArray->MdcaPoint( shownKeystrokeArray->Count() - 1 )[0]) - { - deleteCount = deleteCount + 1; - } - shownKeystrokeArray->Delete(shownKeystrokeArray->Count() - 1); - } - if (KAutoDLT == shownKeystrokeArray->MdcaPoint( shownKeystrokeArray->Count() - 1 )[0]) - { - shownKeystrokeArray->Delete(shownKeystrokeArray->Count() - 1); - } - } - for (TInt i = 0; i < deleteCount; ++i) - { - keystrokeArray->Delete(keystrokeArray->Count() - 1); - } - - editPane->SetCursorIndexOfKeystroke(buf.Length() ); - keystrokeArray->Compress(); - phrase->Compress(); - phraseStroke->Compress(); - - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::SetWarningColor -// Set warning color. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::SetWarningColor( - TInt aCount, - TInt aIndex, - TInt aI, - TInt aPhraseCount, - TInt aToneMark, - TBool aValid, - CDesCArrayFlat* aShowKeystroke - ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - if ( ( !aValid ) || CheckSpellingDLT(aShowKeystroke->MdcaPoint(aI - - 1) ) || (KInvalidToneMark - != ToneMark( aShowKeystroke->MdcaPoint( aI - 1 ) ) )) - { - editPane->SetHighlight(aPhraseCount + aIndex, aPhraseCount - + aIndex + aCount - 1 ); - } - else - { - TPtrC ptr1 = getCurrentLeastDLTSpell(); - for (TInt j = 0; j < aToneMark; ++j) - { - ptiengine->IncrementToneMark(ETrue); - TPtrC ptr0 = getCurrentLeastDLTSpell(); - if (ptr0.Length() > 0) - { - if ( 0 == ptr0.Mid( ptr0.Length() - 1, 1 ). - Compare(aShowKeystroke->MdcaPoint( aI ) ) ) - { - break; - } - } - } - TPtrC ptr2 = getCurrentLeastDLTSpell(); - if ( ( ( 1 + ptr1.Length() ) != ptr2.Length() ) || ( 0 - != ptr2.Mid( ptr2.Length() - 1, 1 ). - CompareC( aShowKeystroke->MdcaPoint( aI ) ) )) - { - editPane->SetHighlight( aPhraseCount + aIndex, aPhraseCount - + aIndex + aCount - 1); - } - } - ClearPtiEngineKeystroke(); - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::SetWarningColor -// Set warning color. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::SetWarningColor() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TBool valid = ETrue; - TInt index = 0; - TInt count = 0; - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - TInt start = 0; - TInt keyCode = 0; - TInt toneMark = KInvalidToneMark; - - if (showKeystroke->Count() == 0) - { - return; - } - - if (CheckAllGroupStroke() ) - { - return; - } - ClearPtiEngineKeystroke(); - if (CheckSpellingDLT(showKeystroke->MdcaPoint( 0) ) || (KInvalidToneMark - != ToneMark(showKeystroke->MdcaPoint( 0) ) )) - { - start = 1; - editPane->SetHighlight(phraseCount, phraseCount); - index = 1; - } - - for ( TInt i = start; i < showKeystroke->Count(); ++i ) - { - count = count + 1; - // tone mark - toneMark = ToneMark(showKeystroke->MdcaPoint(i) ); - if ( KInvalidToneMark != toneMark ) - { - SetWarningColor( count, - index, - i, - phraseCount, - toneMark, - valid, - showKeystroke ); - index = i + 1; - count = 0; - valid = ETrue; - } - else - if ( CheckSpellingDLT(showKeystroke->MdcaPoint(i) ) ) - { - if ( ( !valid ) - || CheckSpellingDLT(showKeystroke->MdcaPoint(i - 1) ) - || (KInvalidToneMark - != ToneMark(showKeystroke->MdcaPoint(i - 1) ) )) - { - editPane->SetHighlight(phraseCount + index, phraseCount - + index + count - 1); - } - ClearPtiEngineKeystroke(); - index = i + 1; - count = 0; - valid = ETrue; - } - else - { - if ( valid ) - { - GetKeystrokeCode(keyCode, showKeystroke->MdcaPoint(i) ); - stringBeforeLength = getCurrentLeastDLTSpell().Length(); - ptiengine->AppendKeyPress((TPtiKey)keyCode).Length(); - stringAfterLength = getCurrentLeastDLTSpell().Length(); - if ( stringBeforeLength == stringAfterLength )//the keystroke is invalid - { - ClearPtiEngineKeystroke(); - valid = EFalse; - } - } - } - - if ( ( showKeystroke->Count() == i + 1 ) && ( !valid ) ) - { - editPane->SetHighlight( - phraseCount + index, - phraseCount + index + count - 1 ); - ClearPtiEngineKeystroke(); - } - } - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::SetWarningColor -// Set warning color. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::ChangeCbaL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan( ); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow( ); - TInt candidateCount = UIContainer()->CandidatePane()->CandidateArray()->Count( ); - TInt keyStrokeCount = editPane->KeystrokeArray()->Count( ); - TInt phraseCount = editPane->PhraseArray()->Count( ); - TInt currentCBAResId = editPane->GetCurrentCBAResID( ); - if ( (candidateCount == 0 && keyStrokeCount != 0 ) || (phraseCount == 1 - && keyStrokeCount == 0 ) ) - { - if ( R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY != currentCBAResId ) - { - fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY ); - editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY ); - } - - } - else if ( keyStrokeCount == 0 ) - { - if ( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE != currentCBAResId ) - { - fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - } - } - else if ( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL != currentCBAResId ) - { - fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL ); - editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL ); - } - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::MoveCursorLeft -// Move the cursor to Left. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::MoveCursorLeft() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* showKeyStoke = editPane->ShowKeystrokeArray(); - TInt showKeyStokeCount = editPane->ShowKeystrokeArray()->Count(); - TInt indexOfKeystroke = editPane->GetCursorIndexOfKeystroke(); - TInt cursorPos = editPane->GetCursor() - editPane->PhraseArray()->Count(); - - TBuf<1> autoDLT; - autoDLT.Append(KAutoDLT); - const TInt offset = 2; - if (cursorPos <= 0) - { - cursorPos = 0; - } - else - if (cursorPos >= showKeyStokeCount) - { - cursorPos = showKeyStokeCount; - } - - if (cursorPos == 0) - { - editPane->SetCursorIndexOfKeystroke(editPane->KeystrokeArray()->Count() ); - ShowInfoOnEEPPane(); - SetWarningColor(); - } - else - if (cursorPos == 1) - { - editPane->SetCursorIndexOfKeystroke( 0); - ShowInfoOnEEPPane(); - SetWarningColor(); - } - else - { - if (showKeyStoke->MdcaPoint( cursorPos - 2 ).Compare(autoDLT) == 0) - { - editPane->MoveCursorLeft(offset); - editPane->SetCursorIndexOfKeystroke(indexOfKeystroke - 1); - } - else - { - editPane->MoveCursorLeft(); - editPane->SetCursorIndexOfKeystroke(indexOfKeystroke - 1); - } - } - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::MoveCursorRight -// Move the cursor to Right. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::MoveCursorRight() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* showKeyStoke = editPane->ShowKeystrokeArray(); - TInt showKeyStokeCount = editPane->ShowKeystrokeArray()->Count(); - TInt indexOfKeystroke = editPane->GetCursorIndexOfKeystroke(); - TInt cursorPos = editPane->GetCursor() - editPane->PhraseArray()->Count(); - TBuf<1> autoDLT; - autoDLT.Append(KAutoDLT); - const TInt offset = 2; - - if (cursorPos <= 0) - { - cursorPos = 0; - } - else - if (cursorPos >= showKeyStokeCount) - { - cursorPos = showKeyStokeCount; - } - - if (cursorPos == showKeyStokeCount) - { - editPane->SetCursorIndexOfKeystroke( 0); - ShowInfoOnEEPPane(); - SetWarningColor(); - } - else - if (cursorPos == showKeyStokeCount - 1) - { - editPane->MoveCursorRight(); - editPane->SetCursorIndexOfKeystroke(editPane->KeystrokeArray()->Count() ); - ShowInfoOnEEPPane(); - SetWarningColor(); - } - else - { - if (showKeyStoke->MdcaPoint( cursorPos ).Compare(autoDLT) == 0) - { - editPane->MoveCursorRight(offset); - editPane->SetCursorIndexOfKeystroke(indexOfKeystroke + 1); - } - else - { - editPane->MoveCursorRight(); - editPane->SetCursorIndexOfKeystroke(indexOfKeystroke + 1); - } - } - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpecialKey -// Check the special keystroke( i,u,v ). -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpecialKey(const TInt aKey) - { - if ( (aKey == EPtiKeyQwertyI ) || (aKey == EPtiKeyQwertyU ) || (aKey - == EPtiKeyQwertyV )) - { - return ETrue; - } - return EFalse; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpellingDLT -// Check the delimiter of spelling. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpellingDLT( - const TDesC& aKeystroke) - { - if ( aKeystroke.Length() == 0 ) - { - return EFalse; - } - - if ( ( KAutoDLT == aKeystroke[0] ) || ( KManualDLT == aKeystroke[0] ) ) - { - return ETrue; - } - - return EFalse; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::ToneMark -// Get pinyin tone mark. -// --------------------------------------------------------- -// -TInt TAknFepInputMiniQwertyPinyinPhraseBase::ToneMark(const TDesC& aKeystroke) - { - TInt numOfToneMark = sizeof (PinyinToneMap)/sizeof(PinyinToneMap[0]); - for (TInt i = 0; i < numOfToneMark; i++) - { - if (PinyinToneMap[i].iValue == aKeystroke[0]) - return PinyinToneMap[i].iInputTone; - } - return KInvalidToneMark; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::ToneMark -// Get pinyin tone mark. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpellingAddToneMarkToPTIL( - const TInt aToneMark ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TBuf<1> toneMark; - TBuf<1> delimiter; - - toneMark.Append( PinyinToneMap[aToneMark - 1].iValue ); - delimiter.Append( KManualDLT ); - - for ( TInt i = 0; i < aToneMark; ++i ) - { - ptiengine->IncrementToneMark(ETrue); - TPtrC ptr = getCurrentLeastDLTSpell(); - if ( ( 0 == ptr.Mid( ptr.Length() - 1, 1 ).Compare( toneMark ) ) && - ( KErrNotFound == ptr.Find( delimiter ) ) - ) - { - return ETrue; - } - } - - - return EFalse; - } -TPtrC TAknFepInputMiniQwertyPinyinPhraseBase::getCurrentLeastDLTSpell() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - CDesC16ArrayFlat* allSpell = new CDesC16ArrayFlat(1); - TPtrC currentSpell; - TBuf<1> delimiter; - TBuf preDltPosizeArr; - TBuf curDltPosizeArr; - preDltPosizeArr.FillZ(KMaxKeystrokeCount); - preDltPosizeArr.SetLength(KMaxKeystrokeCount); - curDltPosizeArr.FillZ(KMaxKeystrokeCount); - curDltPosizeArr.SetLength(KMaxKeystrokeCount); - - TInt index = 1; - delimiter.Append( KManualDLT ); - TRAP_IGNORE( ptiengine->GetPhoneticSpellingsL(*allSpell)); - TInt allCount = ptiengine->PhoneticSpellingCount(); - - - for( TInt i = 0; i < allCount; i++) - { - - currentSpell.Set(allSpell->MdcaPoint(i)); - TInt dltIndex = 0; - curDltPosizeArr.FillZ(KMaxKeystrokeCount); - curDltPosizeArr.SetLength(KMaxKeystrokeCount); - TInt preIndex = 0; - for (TInt j = 0; j < currentSpell.Length(); j++) - { - - if (currentSpell.Mid(j, 1).Compare(delimiter) == 0 ) - { - curDltPosizeArr[dltIndex] = j - preIndex - 1; - preIndex = j; - dltIndex++; - } - else if ((j+1) == currentSpell.Length()) - { - curDltPosizeArr[dltIndex] = j - preIndex; - } - - } - - for (TInt k = 0; k < KMaxKeystrokeCount; k++) - { - - if (preDltPosizeArr[k] < curDltPosizeArr[k] ) - { - preDltPosizeArr.Copy(curDltPosizeArr); - index = i + 1; - break; - } - else if (preDltPosizeArr[k] > curDltPosizeArr[k] ) - { - break; - } - } - - } - - if (allSpell) - { - delete allSpell; - } - ptiengine->SelectPhoneticSpelling( index ); - return ptiengine->GetPhoneticSpelling(index); - - } -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpellingAddKeyToPTIL -// Check the spelling after add key to the PTI. -// --------------------------------------------------------- -// -TInt TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpellingAddKeyToPTIL( - const TDesC& aKeystroke ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - - TBuf<1> delimiter; - TInt keyCode = 0; - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - TInt delimiterIndex = 0; - delimiter.Append( KManualDLT ); - - GetKeystrokeCode( keyCode, aKeystroke ); - //get the string before append this keystroke - TPtrC ptr = getCurrentLeastDLTSpell(); - stringBeforeLength = ptr.Length(); - //get the string after append this keystroke - ptiengine->AppendKeyPress((TPtiKey)keyCode); - TPtrC ptr1 = getCurrentLeastDLTSpell(); - stringAfterLength = ptr1.Length(); - - if ( stringBeforeLength != stringAfterLength ) - { - TPtrC ptr = getCurrentLeastDLTSpell(); - if ( KErrNotFound == ptr.Find( delimiter ) ) - { - return 0; - } - else - { - delimiterIndex = ptr.Length() - ptr.Find( delimiter ) - 1; - return delimiterIndex; - } - } - else - { - return -1; - } - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyFromCandidateL -// Handle key from candidate. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyFromCandidateL( - TInt aKey, TKeyPressLength /*aLength*/) - { - TInt index = 0; -#ifdef RD_INTELLIGENT_TEXT_INPUT - // it may be one of the 'valid' numbers.. - TPtiKeyboardType keyboardtype = iOwner->FepMan()->KeyboardLayout(); - if (EPtiKeyboardQwerty4x10 == keyboardtype || EPtiKeyboardQwerty3x11 - == keyboardtype || EPtiKeyboardHalfQwerty == keyboardtype - || EPtiKeyboardCustomQwerty == keyboardtype) - { - MPtiLanguage *lang= NULL; - RArray keybinding; - TBool validnumkey = EFalse; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if( ptiengine != NULL ) - { - lang = ptiengine->CurrentLanguage(); - } - if (ptiengine && lang) - { - TRAP_IGNORE(ptiengine->GetNumericModeKeysForQwertyL(lang->LanguageCode(), keybinding, keyboardtype)); - TInt numericKeysCount = keybinding.Count(); - while (numericKeysCount--) - { - TPtiNumericKeyBinding numKeyBind = - keybinding[numericKeysCount]; - if ( (numKeyBind.iChar >= 0x31 && numKeyBind.iChar <= 0x36) - &&(aKey == numKeyBind.iKey)) - { - index = numKeyBind.iChar - EPtiKey0 -1; - validnumkey = ETrue; - break; - } - } - } - keybinding.Reset(); - keybinding.Close(); - if ( !validnumkey) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return; - } - } - else - { -#endif - index = MapKeyToIndex(aKey); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - if (candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey - == EStdKeyEnter) - { - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if (text.Length() ) - { - if ( !CommitInlineEEPL(text) ) - { - DoActionAfterCommit(); - } - else - { - if (CheckFirstGroupStroke() ) - { - RefreshUI(EFalse); - UIContainer()->CandidatePane()->SelectFirstPhrase(); - } - else - { - UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag(EAutoChangeStateFromCandidate); - iOwner->ChangeState(EMiniQwertyEdit); - } - } - } - } - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::CheckAllGroupStroke -// check the all group stroke of keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckAllGroupStroke() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TInt keyCode = 0; - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - TInt toneMarkCount = KInvalidToneMark; - - ClearPtiEngineKeystroke(); - - //If there is phrase on the entry pane then the all keystroke is invalid. - if ( phraseCount > 0 ) - { - return EFalse; - } - - //If the first keystroke is delimiter or tone mark - //then all keystroke is invalid. - if ( ( keystroke->Count() == 0 ) - || (CheckSpellingDLT(keystroke->MdcaPoint( 0 ) ) ) - || (KInvalidToneMark != ToneMark(keystroke->MdcaPoint( 0 ) ) ) ) - { - return EFalse; - } - - for (TInt i = 0; i < keystroke->Count(); ++i ) - { - toneMarkCount = ToneMark(keystroke->MdcaPoint( i ) ); - if ( KInvalidToneMark != toneMarkCount ) - { - if ( (CheckSpellingDLT(keystroke->MdcaPoint( i - 1 ) ) ) - || (KInvalidToneMark != ToneMark(keystroke->MdcaPoint( i - 1 ) ) ) ) - { - return EFalse; - } - for (TInt j =0; j < toneMarkCount; ++j) - { - ptiengine->IncrementToneMark(ETrue); - TPtrC ptr1 = getCurrentLeastDLTSpell(); - if (ptr1.Length() > 0) - { - if ( 0 == ptr1.Mid( ptr1.Length() - 1 ).Compare(keystroke->MdcaPoint( i ) ) ) - { - break; - } - } - } - TPtrC ptr = getCurrentLeastDLTSpell(); - if ( 0 != ptr.Mid( ptr.Length() - 1, 1 ).Compare(keystroke->MdcaPoint( i ) ) ) - { - return EFalse; - } - } - else - { - if ( (CheckSpellingDLT(keystroke->MdcaPoint( i ) ) ) - && (KInvalidToneMark != ToneMark(keystroke->MdcaPoint( i - 1 ) ) ) ) - { - return EFalse; - } - GetKeystrokeCode(keyCode, keystroke->MdcaPoint(i) ); - stringBeforeLength = getCurrentLeastDLTSpell().Length(); - ptiengine->AppendKeyPress((TPtiKey)keyCode).Length(); - stringAfterLength = getCurrentLeastDLTSpell().Length(); - if ( stringBeforeLength == stringAfterLength ) - { - return EFalse; - } - } - } - - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::DoActionAfterCommit -// Do action afer commit, change state to predictive or not. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::DoActionAfterCommit() - { - TRAP_IGNORE( DoActionAfterCommitL() ); - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::DoActionAfterCommitL -// Do action afer commit, change state to predictive or not. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::DoActionAfterCommitL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull) ) - { - UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse); - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse); - if (UIContainer()->EditPaneWindow()->KeystrokeArray()->Count() != 0) - { - UIContainer()->EditPaneWindow()->ResetAllArray(); - UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse); - CAknWarningNote* errnote = new( ELeave ) CAknWarningNote(); - errnote->SetTone(CAknNoteDialog::EWarningTone); - errnote->ExecuteLD(KMaxPhraseNote); - } - iOwner->FepMan()->TryCloseUiL(); - } - else - { - if (UIContainer()->EditPaneWindow()->KeystrokeArray()->Count() != 0) - { - UIContainer()->EditPaneWindow()->ResetAllArray(); - UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse); - CAknWarningNote* errnote = new( ELeave ) CAknWarningNote(); - errnote->SetTone(CAknNoteDialog::EWarningTone); - errnote->ExecuteLD(KMaxPhraseNote); - } - else - { - UIContainer()->EditPaneWindow()->ResetAllArray(); - if ( !UIContainer()->EditPaneWindow()->GetPhraseCreationFlag() ) - { - UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse); - UIContainer()->EditPaneWindow()->SetChangeState(ETrue); - iOwner->ChangeState(EPredictiveCandidate); - } - else - { - UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse); - iOwner->FepMan()->TryCloseUiL(); - } - } - } - } -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyPinyinPhraseBase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyPinyinPhraseBase::HandleCommandL( TInt aCommandId ) - { - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - //case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - HandleCommitL( ); - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputminiqwertystrokephrasebase.cpp --- a/fep/aknfep/src/aknfepuiinputminiqwertystrokephrasebase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1469 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateStrokePhraseCreationBase definition. -* -*/ - - - - - - - - - - - - - -// System includes -#include -#include -#include -#include -#include -#include -#include //CAknWarningNote - -// User includes -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUICtrlInputPane.h" -#include "aknfepuictrleditpane.h" //Stroke phrase creation -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManager.h" -#include "aknfepuiinputminiqwertystrokephrasebase.h" - -// CONSTANTS - -const TInt KMaxPhraseCount = 50; -const TInt KMaxPhraseCreationCount = 7; -const TInt KMaxKeystrokeCount = 31; -const TInt16 KStrokeDelimiter = 0x2022; -const TInt16 KStrokeUnicode = 0x2461; -const TInt16 KKey1 = 0x31; -const TInt16 KKey6 = 0x36; - -_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" ); - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseCreationBase::TAknFepInputStateStrokePhraseCreationBase -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepInputMiniQwertyStrokePhraseBase::TAknFepInputMiniQwertyStrokePhraseBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateCandidateQwertyBaseChinesePhrase(aOwner, aUIContainer) - { - iOwner->PtiEngine()->SetInputMode(EPtiEngineStrokePhraseQwerty); - iOwner->PtiEngine()->SetCase(EPtiCaseLower); - iOwner->PtiEngine()->SetCandidatePageLength( KMaxPhraseCount ); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - TBool multiplePages = !(candidatePane->IsLastPage() && - candidatePane->IsFirstPage()); - uiContainer->ShowVerticalScrollArrows(multiplePages); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::HandleKeyL( - TInt aKey, - TKeyPressLength aLength ) - { - TBool ret = ETrue; - const TPtiKeyboardType keyboardType = iOwner->PtiEngine()->KeyboardType(); - - switch( aKey ) - { - case EKeyLeftShift: - case EKeyLeftCtrl: - case EKeyRightCtrl: - case EStdKeyLeftFunc: - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - break; - } - case EStdKeyDevice1:// CBA2 - { - iOwner->FepMan()->TryCloseUiL(); - break; - } - case EStdKeyUpArrow: - case EStdKeyDownArrow: - case EKeyRightFunc: - case EStdKeyEnter: - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - break; - } - case EStdKeyBackspace: - { - HandleKeyBackspaceL( aLength ); - break; - } - case EStdKeyDevice0:// CBA1 - case EStdKeyDevice3:// CBASelect - { - HandleCommitL( aLength ); - break; - } - case EStdKeyLeftArrow: - { - if ( !MoveCursorLeft() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - break; - } - case EStdKeyRightArrow: - { - if ( !MoveCursorRight() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - break; - } - default: - { - ret = HandleDefaultL( aKey, aLength ); - break; - } - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::RefreshUI -// Update input window. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::RefreshUI() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - // get cursor position - if ( ( uiContainer->EditPaneWindow()->KeystrokeArray()->Count() == 0 ) && - ( uiContainer->EditPaneWindow()->PhraseArray()->Count() == 0 ) ) - { - TPoint baseLine; - TInt height(0); - TInt ascent(0); - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - } - if ( ( uiContainer->EditPaneWindow()->KeystrokeArray()->Count() > 0 ) || - ( uiContainer->EditPaneWindow()->PhraseArray()->Count() > 0 ) ) - { - ShowInfoOnEEPPane(); - SetWarningColor(); - ShowInfoOnCandidatePane(); - UpdateIndicator(); - TRAP_IGNORE( ChangeCbaL() ); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::CheckFirstGroupStroke -// check the first group stroke of keystroke. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::CheckFirstGroupStroke() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - RArray* keycodeArray = editPane->KeycodeArray(); - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - TInt keyCode = 0; - TInt pos = 0; - TBuf<1> delimiter; - - if ( 0 == keystroke->Count() ) - { - return EFalse; - } - - delimiter.Append( KStrokeDelimiter ); - - //the keystroke is not delimiter the all keystroke is first group keystroke. - if ( 0 != keystroke->Find( delimiter, pos ) ) - { - pos = keystroke->Count(); - } - //first keystroke is delimiter then first group keystroke is invalid. - if ( 0 == pos ) - { - return EFalse; - } - - ClearPtiEngineKeystroke(); - - for ( TInt i = 0; i < pos; ++i ) - { - //GetKeystrokeCode( keyCode, keystroke->MdcaPoint( i ) ); - keyCode = (*keycodeArray)[i]; - stringBeforeLength = - ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = - ptiengine->AppendKeyPress((TPtiKey)keyCode).Length(); - //the keystroke is invalid. - if ( stringBeforeLength == stringAfterLength ) - { - return EFalse; - } - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::HandleCommitL -// Handle CBA1 or select event. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::HandleCommitL( - TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt keyCount = editPane->KeystrokeArray()->Count(); - CDesCArrayFlat* phrase = editPane->PhraseArray(); - TInt cdtCount = uiContainer->CandidatePane()->CandidateArray()->Count(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - - if ( !CheckKeyNeedRepeat( aLength ) ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return; - } - - if ( EMiniQwertyEdit == iState ) - { - if ( cdtCount > 0 ) - { - UIContainer()->EditPaneWindow()->SetChangeState( ETrue ); - iOwner->ChangeState( ECandidate ); - return; - } - - if ( keyCount > 0 ) - { - fepMan->PlaySound( EAvkonSIDErrorTone ); - return; - } - } - - if ( phrase->Count( ) <= 1 ) - { - fepMan->PlaySound( EAvkonSIDErrorTone ); - return; - } - - TBuf phraseCreated; - for (TInt i = 0; i < phrase->Count( ); ++i ) - { - phraseCreated.Append( phrase->MdcaPoint( i ) ); - } - fepMan->NewTextL( phraseCreated ); - fepMan->CommitInlineEditL( ); - AddPhraseToDB( phraseCreated ); - fepMan->TryCloseUiL( ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::HandleAutoChangeState -// Auto change state. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::HandleAutoChangeState() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TBool FirstStrokeValid = CheckFirstGroupStroke(); - //Auto change from EMiniQwertyEdit state to EEntry state. - if ( EMiniQwertyEdit == iState ) - { - if ( FirstStrokeValid ) - { - if ( EAutoChangeStateFromInput == editPane->GetAutoChangeStateFlag() ) - { - editPane->SetChangeState( EFalse ); - iOwner->ChangeState( EEntry ); - return ETrue; - } - else if ( EAutoChangeStateFromCandidate == editPane->GetAutoChangeStateFlag() ) - { - editPane->SetChangeState( ETrue ); - iOwner->ChangeState( ECandidate ); - return ETrue; - } - } - } - - //Auto change from EEntry state to EMiniQwertyEdit state. - if ( EEntry == iState ) - { - if ( ( 0 <= index ) && ( !FirstStrokeValid ) ) - { - editPane->SetChangeState( EFalse ); - editPane->SetAutoChangeStateFlag( EAutoChangeStateFromInput ); - iOwner->ChangeState( EMiniQwertyEdit ); - return ETrue; - } - } - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::HandleKeyBackspaceL -// Handle KeyBackspace event. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::HandleKeyBackspaceL( - TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - - if ( !CheckKeyNeedRepeat( aLength ) ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return; - } - - if ( ( 0 == index ) && ( phraseCount != 0 ) ) - { - RevertPhraseToKeystrokeL(); - } - else if ( ( 0 == index ) && ( keystroke->Count() > 0 ) ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return; - } - else - { - if ( !DeleteKeystroke() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return; - } - } - - //if the keystroke is null and phrase is null then close input window. - if ( ( 0 == phraseCount ) && ( keystroke->Count() == 0 ) ) - { - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - if ( aLength == ELongKeyPress ) - { - iOwner->FepMan()->SetLongClearAfterCloseUI( ETrue ); - } - return; - } - - if ( !HandleAutoChangeState() ) - { - RefreshUI(); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::HandleDefaultL -// Handle default event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::HandleDefaultL( - TInt aKey, - TKeyPressLength aLength ) - { - TBool ret = ETrue; - if( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || - CAknFepFnKeyManager::EFnKeyLock == iOwner->FepMan()->FnKeyState() || - ( CAknFepFnKeyManager::EFnKeyDown == iOwner->FepMan()->FnKeyState() && iState != ECandidate )) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - else if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( ( EShortKeyPress == aLength ) && - ( iOwner->IsValidChineseInputKeyQwerty( aKey ) ) ) - { - if ( iState == ECandidate ) - { - HandleKeyFromCandidateL( aKey, aLength ); - } - else - { - HandleDefaultKeyL( aKey ); - } - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::HandleDefaultKeyL -// Handle default key press event. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::HandleDefaultKeyL( TInt aKey ) - { - if ( !AddKeystrokeL( aKey ) ) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return; - } - - if ( !HandleAutoChangeState() ) - { - RefreshUI(); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::ShowInfoOnEEP -// Show the showinfo on the EEP ctrl. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::ShowInfoOnEEPPane() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - CDesCArrayFlat* phrase = editPane->PhraseArray(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TBuf showInfo; - - for ( TInt i = 0; i < phrase->Count(); ++i ) - { - showInfo.Append( phrase->MdcaPoint( i ) ); - } - - for ( TInt ii = 0; ii < keystroke->Count(); ++ii ) - { - showInfo.Append( keystroke->MdcaPoint( ii ) ); - } - - editPane->SetText( showInfo, index + phrase->Count() ); - - switch ( iState ) - { - case ECandidate: - editPane->DisableCursor(); - break; - case EEntry: - editPane->EnableCursor(); - editPane->DeactiveCursor(); - break; - case EMiniQwertyEdit: - editPane->EnableCursor(); - editPane->ActiveCursor(); - break; - default: - break; - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::ShowInfoOnEEP -// Show the showinfo on the EEP ctrl. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::ShowInfoOnCandidatePane() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - CDesCArrayFlat* phrase = uiContainer->CandidatePane()->CandidateArray(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - if ( KMaxPhraseCreationCount == editPane->PhraseArray()->Count() ) - { - phrase->Reset(); - TRAP_IGNORE( phrase->AppendL( KMaxPhraseNote ) ); - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->ShowVerticalScrollArrows( EFalse ); - } - - TRAP_IGNORE( GetCandidateL() ); - if ( phrase->Count() > 0 ) - { - // layout candidate and fill candidate buffer for first display page - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - uiContainer->ShowVerticalScrollArrows( multiplePages ); - if ( iState == EMiniQwertyEdit ) - { - UIContainer()->FocusCandidatePane( EFalse ); - } - else - { - UIContainer()->FocusCandidatePane( ETrue ); - UIContainer()->CandidatePane()->SelectFirstPhrase(); - } - } - else - { - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->ShowVerticalScrollArrows( EFalse ); - uiContainer->SetControlInVisible( EFalse ); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::HandleHorizontalNavigation -//Handle horizontal navigation. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::HandleHorizontalNavigation( - TInt aKey ) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - TBool response = EFalse; - - // Do navigation... - if ( aKey == EStdKeyLeftArrow ) - { - if(!candidatePane->SelectPrev()) - { - candidatePane->SetCandidateBuffer(); - candidatePane->SelectLastPhrase(); - } - response = ETrue; - } - else if ( aKey == EStdKeyRightArrow ) - { - if(!candidatePane->SelectNext()) - { - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - } - response = ETrue; - } - - if (response) - { - UpdateIndicator(); - } - - return response; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::UpdateIndicator -// Update Indicator. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (candidatePane->IsFirstPage()) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage()) - { - uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows(ETrue); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (iOwner->FepMan()->KeyboardLayout() == EPtiKeyboardQwerty4x10) - { - if (candidatePane->VisibleCandidateCount()==1) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } - else - { -#endif - if (candidatePane->SelectedIndex() == 0 - && candidatePane->IsFirstPage() ) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage() && (candidatePane->SelectedIndex() - == candidatePane->VisibleCandidateCount() - 1)) - { - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::DeleteKeystroke -// Delete current keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::DeleteKeystroke() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - RArray* keycodeArray = editPane->KeycodeArray(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - - if ( ( 0 == index ) || ( keystroke->Count() == 0 ) ) - { - return EFalse; - } - - if ( 1 == index ) - { - editPane->Reset(); - } - - if ( index >= keystroke->Count() ) - { - keystroke->Delete( keystroke->Count() - 1 ); - keycodeArray->Remove( keycodeArray->Count() - 1 ); - editPane->SetCursorIndexOfKeystroke( keystroke->Count() ); - } - else - { - keystroke->Delete( index - 1 ); - keycodeArray->Remove( index - 1 ); - editPane->SetCursorIndexOfKeystroke( index - 1 ); - } - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::AddPhraseToDB -// Add phrase to DB. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::AddPhraseToDB( - const TDesC& aPhraseAdd ) - { - TPtiUserDictionaryEntry addUdbEntry( aPhraseAdd ); - //Add the phrase to the DB by PTI Engine - iOwner->PtiEngine()->AddUserDictionaryEntry( addUdbEntry ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::RefreshCandidate -// Refresh candidate -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::RefreshCandidate() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - uiContainer->ShowVerticalScrollArrows( multiplePages ); - - uiContainer->CandidatePane()->SelectFirstPhrase(); - UpdateIndicator(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::CheckKeyNeedRepeat -// Check key whether need repeat. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::CheckKeyNeedRepeat( TKeyPressLength aLength ) - { - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - if ( editPane->IsChangeState() && aLength == ELongKeyPress ) - { - return EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::CommitInlineEEPL -// Commint text to EEP or editor -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::CommitInlineEEPL( const TDesC& aDes ) - { - TInt charCount = aDes.Length(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - MAknFepUICtrlEditPane* editpane = UIContainer()->EditPaneWindow(); - CDesCArrayFlat* keyStoke = editpane->KeystrokeArray(); - RArray* keycode = editpane->KeycodeArray(); - CDesCArrayFlat* phraseArray = editpane->PhraseArray(); - CDesCArrayFlat* phraseShowKeyStroke = editpane->PhraseShowKeyStrokeArray(); - RArray* phraseKeycode = editpane->PhraseKeycodeArray(); - TBuf buf; - TBuf<1> strokeDLT; - strokeDLT.Append( KStrokeDelimiter ); - - phraseArray->AppendL( aDes ); - - TInt phraseCount = phraseArray->Count(); - TInt index = 0; - TInt isFound = keyStoke->Find( strokeDLT, index ); - - //phrase creation state - if ( phraseCount > 1 || ( 0 == isFound && charCount <= 1 )) - { - editpane->SetPhraseCreationFlag( ETrue ); - if ( 0 == isFound && phraseCount < 7 && index < keyStoke->Count() - 1 ) - { - for ( TInt i = 0; i <= index; i++ ) - { - TPtrC ptr = keyStoke->MdcaPoint( 0 ); - buf.Append( ptr ); - keyStoke->Delete( 0); - phraseKeycode->AppendL( (*keycode)[0]); - keycode->Remove( 0 ); - } - phraseShowKeyStroke->AppendL( buf ); - editpane->SetCursorIndexOfKeystroke( 0 ); - editpane->DisableCursor(); - return ETrue; - } - else - { - TBuf phraseCreated; - for ( TInt ii = 0; ii < phraseCount; ++ii ) - { - phraseCreated.Append( phraseArray->MdcaPoint(ii) ); - } - if ( 0 != isFound || ( 0 == isFound && index == keyStoke->Count() - 1 ) ) - { - editpane->ResetAllArray(); - } - fepMan->NewTextL( phraseCreated ); - fepMan->CommitInlineEditL(); - AddPhraseToDB( phraseCreated ); - return EFalse; - } - } - else - { - TBuf phraseCreated; - for ( TInt ii = 0; ii < phraseCount; ++ii ) - { - phraseCreated.Append( phraseArray->MdcaPoint( ii ) ); - } - editpane->ResetAllArray(); - editpane->SetPhraseCreationFlag( EFalse ); - fepMan->NewTextL( phraseCreated ); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar( phraseCreated ); - return EFalse; - } - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::ClearPtiEngineKeystroke -// clear the ptiengine keystroke; -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::ClearPtiEngineKeystroke() - { - iOwner->PtiEngine()->ClearCurrentWord(); - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::AddKeystrokeL -// Add keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::AddKeystrokeL( TInt aKey ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - RArray* keycodeArray = editPane->KeycodeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TInt keystrokeCount = keystrokeArray->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - - if ( phraseCount + keystrokeCount >= KMaxKeystrokeCount ) - { - return EFalse; - } - - - TBuf<1> keystroke; - GetShowKeystroke( aKey, keystroke ); - if ( index >= keystrokeCount ) - { - keystrokeArray->AppendL( keystroke ); - keycodeArray->AppendL( aKey ); - editPane->SetCursorIndexOfKeystroke( keystrokeCount + 1 ); - } - else - { - keystrokeArray->InsertL( index, keystroke ); - keycodeArray->InsertL( aKey, index ); - editPane->SetCursorIndexOfKeystroke( index + 1 ); - } - - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::GetCandidateL -// Get the candidate info. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::GetCandidateL() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* phraseCandidates = - uiContainer->CandidatePane()->CandidateArray(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - phraseCandidates->Reset(); - - if ( keystrokeArray->Count() == 0 ) - { - return; - } - - if ( ( 0 == phraseCount ) && editPane->GetAllValidFlag() ) - { - ptiengine->GetChinesePhraseCandidatesL( *phraseCandidates ); - return; - } - - if ( !CheckFirstGroupStroke() ) - { - return; - } - - ptiengine->GetChinesePhraseCandidatesL( *phraseCandidates ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::GetShowKeystroke -// get the show keystroke. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::GetShowKeystroke( - TInt aKey, - TDes& aKeystroke - ) - { - CPtiEngine* ptiEngine = iOwner->PtiEngine(); - TBuf lowerdata; - ptiEngine->MappingDataForKey((TPtiKey)aKey, lowerdata, EPtiCaseLower); - TInt StrokeUnicodePosition =0; - - if(lowerdata.Length()>0) - { - for(TInt i=0;iEditPaneWindow(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - RArray* keycodeArray = editPane->KeycodeArray(); - RArray* phraseKeycodeArray = editPane->PhraseKeycodeArray(); - CDesCArrayFlat* phrase = editPane->PhraseArray(); - CDesCArrayFlat* phraseStroke = editPane->PhraseShowKeyStrokeArray(); - - TBuf buf; - - if ( ( phrase->Count() == 0 ) || ( phraseStroke->Count() == 0 ) ) - { - return; - } - - buf.Append( phraseStroke->MdcaPoint( phraseStroke->Count() - 1 ) ); - - for ( TInt i = buf.Length() - 1; i >= 0; --i ) - { - keystrokeArray->InsertL( 0, buf.Mid( i, 1 ) ); - keycodeArray->Insert( (*phraseKeycodeArray)[phraseKeycodeArray->Count()-1], 0 ); - phraseKeycodeArray->Remove( phraseKeycodeArray->Count()-1 ); - } - phrase->Delete( phrase->Count() - 1 ); - phraseStroke->Delete( phraseStroke->Count() - 1 ); - - TInt leng = phrase->Count() + keystrokeArray->Count(); - if ( leng > KMaxKeystrokeCount ) - { - for ( TInt i = 0; i < leng - KMaxKeystrokeCount; ++i ) - { - if ( keystrokeArray->Count() == 0 ) - { - break; - } - keystrokeArray->Delete( keystrokeArray->Count() - 1 ); - keycodeArray->Remove( keycodeArray->Count() - 1 ); - } - } - - editPane->SetCursorIndexOfKeystroke( buf.Length() ); - keystrokeArray->Compress(); - phrase->Compress(); - phraseStroke->Compress(); - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::SetWarningColor -// Set warning color. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::SetWarningColor() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - RArray* keycodeArray = editPane->KeycodeArray(); - TInt keystrokeCount = keystrokeArray->Count(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TBool valid = ETrue; - TInt index = 0; - TInt count = 0; - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - TInt keyCode = 0; - TInt invalidPos = 0; - TBuf<1> delimiter; - delimiter.Append( KStrokeDelimiter ); - - //set warning color stroke after 7th group when it's more than 7 groups. - if ( 0 == keystrokeCount ) - { - return; - } - - if ( CheckAllGroupStroke() ) - { - return; - } - - TInt delimiterCount = phraseCount + editPane->GetDelimiterCount(); - invalidPos = editPane->GetInvalidIndex(); - index = invalidPos; - ClearPtiEngineKeystroke(); - for ( TInt i = invalidPos; i < keystrokeCount; ++i ) - { - count = count + 1; - //GetKeystrokeCode( keyCode, keystrokeArray->MdcaPoint( i ) ); - keyCode = (*keycodeArray)[i]; - if ( EPtiKeyQwertySpace == keyCode ) - { - delimiterCount = delimiterCount + 1; - if ( delimiterCount == KMaxPhraseCreationCount ) - { - if ( !valid ) - { - editPane->SetHighlight( - phraseCount + index, - phraseCount + keystrokeCount - 1 ); - } - else - { - editPane->SetHighlight( - phraseCount + i, - phraseCount + keystrokeCount - 1 ); - } - break; - } - if ( ( !valid ) || ( 0 == i ) ) - { - editPane->SetHighlight( - phraseCount + index, - phraseCount + index + count - 1 ); - } - else if ( i > 0 ) - { - if ( 0 == keystrokeArray->MdcaPoint( i - 1 ).Compare( delimiter ) ) - { - editPane->SetHighlight( - phraseCount + index, - phraseCount + index + count - 1 ); - } - } - valid = ETrue; - index = i + 1; - count = 0; - ClearPtiEngineKeystroke(); - } - else if ( valid ) - { - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = - ptiengine->AppendKeyPress((TPtiKey)keyCode).Length(); - if ( stringBeforeLength == stringAfterLength ) - { - valid = EFalse; - } - } - - if ( ( !valid ) && - ( keystrokeCount == i + 1 ) && - ( EPtiKeyQwertySpace != keyCode ) ) - { - editPane->SetHighlight( - phraseCount + index, - phraseCount + index + count - 1 ); - } - } - - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::SetWarningColor -// Set warning color. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::ChangeCbaL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - TInt candidateCount = UIContainer()->CandidatePane()->CandidateArray()->Count(); - TInt keyStrokeCount = editPane->KeystrokeArray()->Count(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TInt currentCBAResId = editPane->GetCurrentCBAResID(); - if ( ( candidateCount == 0 && keyStrokeCount != 0 ) || - ( phraseCount == 1 && keyStrokeCount == 0 ) ) - { - if (R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY != currentCBAResId ) - { - fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY ); - editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY ); - } - - } - else if ( keyStrokeCount == 0 ) - { - if ( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE != currentCBAResId ) - { - fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - } - } - else if ( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL != currentCBAResId ) - { - fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL ); - editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL ); - } - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::MoveCursorLeft -// Move the cursor to Left. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::MoveCursorLeft() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt keystrokeCount = editPane->KeystrokeArray()->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TInt phraseCount = editPane->PhraseArray()->Count(); - - if ( EMiniQwertyEdit != iState ) - { - return EFalse; - } - if ( 0 == keystrokeCount ) - { - return EFalse; - } - - if ( 0 == index ) - { - editPane->SetCursorIndexOfKeystroke( keystrokeCount ); - ShowInfoOnEEPPane(); - SetWarningColor(); - } - else if ( ( phraseCount > 0 ) && ( 1 == index ) ) - { - editPane->SetCursorIndexOfKeystroke( 0 ); - ShowInfoOnEEPPane(); - SetWarningColor(); - } - else - { - editPane->MoveCursorLeft(); - editPane->SetCursorIndexOfKeystroke( index - 1 ); - } - - editPane->SetAutoChangeStateFlag( EManualChangeState ); - - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::MoveCursorRight -// Move the cursor to Right. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::MoveCursorRight() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt keystrokeCount = editPane->KeystrokeArray()->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - - if ( EMiniQwertyEdit != iState ) - { - return EFalse; - } - if ( 0 == keystrokeCount ) - { - return EFalse; - } - if ( index >= keystrokeCount ) - { - editPane->SetCursorIndexOfKeystroke( 0 ); - ShowInfoOnEEPPane(); - SetWarningColor(); - } - else - { - editPane->MoveCursorRight(); - editPane->SetCursorIndexOfKeystroke( index + 1 ); - } - - editPane->SetAutoChangeStateFlag( EManualChangeState ); - - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::HandleKeyFromCandidateL -// Handle key from candidate. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::HandleKeyFromCandidateL( - TInt aKey, TKeyPressLength /*aLength*/ ) - { - TInt index = 0; - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); -#ifdef RD_INTELLIGENT_TEXT_INPUT - // it may be one of the 'valid' numbers.. - TPtiKeyboardType keyboardtype = iOwner->FepMan()->KeyboardLayout(); - if ( EPtiKeyboardQwerty4x10 == keyboardtype || EPtiKeyboardQwerty3x11 - == keyboardtype || EPtiKeyboardHalfQwerty == keyboardtype - || EPtiKeyboardCustomQwerty == keyboardtype ) - { - MPtiLanguage *lang= NULL; - RArray < TPtiNumericKeyBinding > keybinding; - TBool validnumkey = EFalse; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if( ptiengine != NULL ) - { - lang = ptiengine->CurrentLanguage(); - } - if ( ptiengine && lang ) - { - TRAP_IGNORE(ptiengine->GetNumericModeKeysForQwertyL(lang->LanguageCode(), keybinding, keyboardtype)); - TInt numericKeysCount = keybinding.Count(); - while (numericKeysCount-- ) - { - TPtiNumericKeyBinding numKeyBind = - keybinding[numericKeysCount]; - if ( (numKeyBind.iChar >= KKey1 && numKeyBind.iChar <= KKey6) - &&(aKey == numKeyBind.iKey) ) - { - index = numKeyBind.iChar - EPtiKey0 -1; - if ( candidatePane->SelectIndex( index ) ) - { - validnumkey = ETrue; - } - break; - } - } - } - keybinding.Reset(); - keybinding.Close(); - if ( !validnumkey ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return; - } - } - else - { -#endif - index = MapKeyToIndex( aKey ); -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - TPtrC text = candidatePane->CurrentPhraseCandidate(); - if ( text.Length( ) ) - { - if ( !CommitInlineEEPL( text ) ) - { - DoActionAfterCommit( ); - } - else - { - if ( CheckFirstGroupStroke( ) ) - { - RefreshUI( ); - UIContainer()->CandidatePane()->SelectFirstPhrase( ); - } - else - { - UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( EAutoChangeStateFromCandidate ); - iOwner->ChangeState( EMiniQwertyEdit ); - } - } - } - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::CheckAllGroupStroke -// check the all group stroke of keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::CheckAllGroupStroke() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - RArray* keycodeArray = editPane->KeycodeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TInt keystrokeCount = keystroke->Count(); - TInt keyCode = 0; - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - TInt lastDLTPos = 0; - TBool check = ETrue; - TInt delimiterCount = 0; - //If has phrase on the entry pane then the all keystroke is invalid. - if ( ( phraseCount > 0 ) || ( 0 == keystrokeCount ) ) - { - editPane->SetAllValidFlag( EFalse ); - editPane->SetDelimiterCount( 0 ); - editPane->SetInvalidIndex( 0 ); - return EFalse; - } - - ClearPtiEngineKeystroke(); - for ( TInt i = 0; i < keystrokeCount; ++i ) - { - //GetKeystrokeCode( keyCode, keystroke->MdcaPoint( i ) ); - keyCode = (*keycodeArray)[i]; - if ( EPtiKeyQwertySpace == keyCode ) - { - //If first keystroke is delimiter then all keystroke is not valid. - if ( i == 0 ) - { - editPane->SetAllValidFlag( EFalse ); - editPane->SetDelimiterCount( 0 ); - editPane->SetInvalidIndex( 0 ); - return EFalse; - } - //If two delimiter is border upon then the check evaluate EFalse. - else if ( lastDLTPos == ( i - 1 ) ) - { - check = EFalse; - } - //lastDLTPos evaluate last delimiter that has not border upon deliminter. - else if ( check ) - { - delimiterCount = delimiterCount + 1; - lastDLTPos = i; - } - } - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = - ptiengine->AppendKeyPress((TPtiKey)keyCode).Length(); - if ( stringBeforeLength == stringAfterLength ) - { - editPane->SetAllValidFlag( EFalse ); - if ( 0 == lastDLTPos ) - { - editPane->SetDelimiterCount( 0 ); - editPane->SetInvalidIndex( 0 ); - } - else - { - editPane->SetDelimiterCount( delimiterCount ); - editPane->SetInvalidIndex( lastDLTPos + 1 ); - } - return EFalse; - } - } - - editPane->SetAllValidFlag( ETrue ); - editPane->SetDelimiterCount( 0 ); - editPane->SetInvalidIndex( 0 ); - return ETrue; - } - - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::DoActionAfterCommit -// Do action afer commit, change state to predictive or not. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::DoActionAfterCommit() - { - TRAP_IGNORE( DoActionAfterCommitL() ); - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::DoActionAfterCommitL -// Do action afer commit, change state to predictive or not. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::DoActionAfterCommitL( ) - { - if ( UIContainer()->EditPaneWindow()->KeystrokeArray()->Count( ) != 0 ) - { - UIContainer()->EditPaneWindow()->ResetAllArray( ); - CAknWarningNote* errnote = new( ELeave ) CAknWarningNote(); - errnote->SetTone( CAknNoteDialog::EWarningTone ); - errnote->ExecuteLD( KMaxPhraseNote ); - } - else if ( !UIContainer()->EditPaneWindow()->GetPhraseCreationFlag( ) ) - { -#ifdef RD_INTELLIGENT_TEXT_INPUT - TBool isEditorFull = iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagEditorFull); - if ( !isEditorFull ) - { - iOwner->ChangeState( EPredictiveCandidate ); - UIContainer()->EditPaneWindow()->SetChangeState(ETrue); - } - else - { - iOwner->FepMan()->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - } -#endif - } - else - { - iOwner->FepMan()->TryCloseUiL( ); - } - } -// --------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::CheckSpellingDLT -// Check the delimiter of spelling. -// --------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyStrokePhraseBase::CheckSpellingDLT( const TDesC& aKeystroke ) - { - if ( aKeystroke.Length() == 0 ) - { - return EFalse; - } - if ( KStrokeDelimiter == aKeystroke[0] ) - { - return ETrue; - } - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyStrokePhraseBase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyStrokePhraseBase::HandleCommandL( TInt aCommandId ) - { - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - //case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - HandleCommitL( EShortKeyPress ); - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputminiqwertyzhuyinphrasebase.cpp --- a/fep/aknfep/src/aknfepuiinputminiqwertyzhuyinphrasebase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,625 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TAknFepInputMiniQwertyZhuyinPhraseBase definition. - * -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include -#include -#include -#include -#include //CAknWarningNote -// User includes -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" //pinyin phrase creation -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManager.h" -#include "aknfepuiinputminiqwertyzhuyinphrasebase.h" -#include "aknfepinputstateminiqwertyzhuyinkeymap.h" - -const TInt KMaxPhraseCount = 100; -const TInt KMaxBufLength = 150; -const TInt KMaxPhraseCreationCount = 7; -//KMaxPhraseNote means the max phrase is seven -_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" ); - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::TAknFepInputMiniQwertyZhuyinPhraseBase -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepInputMiniQwertyZhuyinPhraseBase::TAknFepInputMiniQwertyZhuyinPhraseBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) : - TAknFepInputStateCandidateQwertyBaseChinesePhrase( aOwner, aUIContainer ) - { - if (iOwner->PtiEngine()->InputMode() != EPtiEngineZhuyinPhraseQwerty) - { - iOwner->PtiEngine()->SetInputMode( EPtiEngineZhuyinPhraseQwerty ); - } - iOwner->PtiEngine()->SetCandidatePageLength( KMaxPhraseCount ); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->SetLayout( MAknFepUICtrlContainerChinese::ELayoutPhraseCreation ); - iOwner->PtiEngine()->SetCase(EPtiCaseLower); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyZhuyinPhraseBase::HandleKeyL( - TInt /*aKey*/ , - TKeyPressLength /*aLength*/ ) - { - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::GetValidKeystroke -// Get the valid keystroke. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyZhuyinPhraseBase::GetValidKeystroke() - { - TBool result = ETrue; - TRAPD( ret, result = GetValidKeystrokeL() ); - if ( KErrNone != ret ) - { - return EFalse; - } - return result; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::RefreshEditPane -// Refresh editing pane. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyZhuyinPhraseBase::RefreshEditPane() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - CDesCArrayFlat* phrase = editPane->PhraseArray(); - - TInt validCount = editPane->GetEffictiveLength(); - TInt underLineLen = 0; - TBuf buf; - - for ( TInt i = 0; i < phrase->Count(); ++i ) - { - buf.Append( phrase->MdcaPoint( i ) ); - } - - for ( TInt i = 0; i < keystroke->Count(); ++i ) - { - buf.Append( keystroke->MdcaPoint( i ) ); - if ( i < validCount ) - { - underLineLen = underLineLen + keystroke->MdcaPoint( i ).Length(); - } - } - editPane->SetCursorIndexOfKeystroke( validCount ); - editPane->SetText( buf, phrase->Count() + underLineLen, ETrue ); - if ( 0 == validCount ) - { - editPane->SetHighlight( phrase->Count(), buf.Length() ); - } - - if ( EMiniQwertyEdit == iState ) - { - editPane->ActiveCursor(); - editPane->EnableCursor(); - } - else if ( EZhuyinSpelling == iState ) - { - editPane->DeactiveCursor(); - editPane->EnableCursor(); - editPane->SetUnderline( phrase->Count(), phrase->Count() + underLineLen - 1 ); - } - else if ( EZhuyinCandidate == iState ) - { - editPane->DisableCursor(); - editPane->SetUnderline( phrase->Count(), phrase->Count() + underLineLen - 1 ); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::RefreshSpellingPane -// Refresh spelling pane. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyZhuyinPhraseBase::RefreshSpellingPane( TBool aClearSelection ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - TInt selection = 0; - if ( !aClearSelection ) - { - selection = popup->CurrentSelection(); - if ( selection >= spelling->Count() ) - { - selection = 0; - } - } - popup->SplitPhraseSpellingIntoPages( ); - if ( spelling->Count( ) == 0 ) - { - uiContainer->SetControlInVisible( EFalse ); - } - else - { - // set display page for delibrate selection - inputPane->SetText( spelling->MdcaPoint( selection ) ); - popup->SetDisplayPage( selection ); - popup->SetPhraseItemTexts( ); - popup->PopupSizeChanged( ); - uiContainer->Enable( ETrue ); - } - - if ( EMiniQwertyEdit == iState ) - { - //popup need to add none high lighted interface. - popup->SetNoneHighlighted(); - } - popup->Enable( spelling->Count( ) > 0 ); - uiContainer->Enable( ETrue ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::RefreshSpellingPane -// Refresh spelling pane. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyZhuyinPhraseBase::RefreshCandidatePane( TBool aClearSelection ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt validCount = editPane->ShowKeystrokeArray()->Count(); - CDesCArrayFlat* candidateArray = - uiContainer->CandidatePane()->CandidateArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - // have valid keystroke. - if ( validCount > 0 ) - { - // set display page for delibrate selection - ClearDeliberateSelection(); - GetCandidate( aClearSelection ); - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->ShowVerticalScrollArrows( ETrue ); - uiContainer->Enable( ETrue ); - } - else - { - candidateArray->Reset(); - if ( KMaxPhraseCreationCount == phraseCount ) - { - TRAP_IGNORE( candidateArray->AppendL( KMaxPhraseNote ) ); - } - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->ShowVerticalScrollArrows( EFalse ); - } - uiContainer->Enable(ETrue); - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::UpdateIndicator -// Update Indicator. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyZhuyinPhraseBase::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (candidatePane->IsFirstPage()) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage()) - { - uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows(ETrue); - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - if (iOwner->FepMan()->KeyboardLayout() == EPtiKeyboardQwerty4x10) - { - if (candidatePane->VisibleCandidateCount()==1) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } - else - { -#endif - if (candidatePane->SelectedIndex() == 0 - && candidatePane->IsFirstPage() ) - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue); - } - - if (candidatePane->IsLastPage() && (candidatePane->SelectedIndex() - == candidatePane->VisibleCandidateCount() - 1)) - { - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue); - } - } -#ifdef RD_INTELLIGENT_TEXT_INPUT - } -#endif - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::ClearDeliberateSelection -// clear selection. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyZhuyinPhraseBase::ClearDeliberateSelection() - { - // we must have just deleted the last character, - // or we are starting a new pinyin session, - // so wipe the last deliberate selection - TPtr oldDeliberateSelection = iOwner->GetLatestDeliberateSelection(); - oldDeliberateSelection = KNullDesC; - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::ClearPtiEngineKeystroke -// clear the ptiengine keystroke. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyZhuyinPhraseBase::ClearPtiEngineKeystroke() - { - iOwner->PtiEngine()->ClearCurrentWord(); - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::GetCandidateL -// Get the candidate info. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyZhuyinPhraseBase::GetCandidate( TBool aClearSelection ) - { - TRAP_IGNORE( GetCandidateL( aClearSelection ) ); - } - -// --------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::SetWarningColor -// Set warning color. -// --------------------------------------------------------- -// -void TAknFepInputMiniQwertyZhuyinPhraseBase::ChangeCbaL() - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - TInt candidateCount = UIContainer()->CandidatePane()->CandidateArray()->Count(); - TInt keyStrokeCount = editPane->KeystrokeArray()->Count(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TInt currentCBAResId = editPane->GetCurrentCBAResID(); - if ( ( candidateCount == 0 && keyStrokeCount != 0 ) || - ( phraseCount == 1 && keyStrokeCount == 0 ) ) - { - if (R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY != currentCBAResId ) - { - fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY ); - editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY ); - } - - } - else if ( keyStrokeCount == 0 ) - { - if ( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE != currentCBAResId ) - { - fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - } - } - else if ( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL != currentCBAResId ) - { - fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL ); - editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL ); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::CheckPhraseSpellingL -// Check the spelling whether is phrase spelling. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyZhuyinPhraseBase::CheckPhraseSpellingL() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* spelling = - uiContainer->PinyinPopupWindow()->PhoneticSpellingArray(); - CDesCArrayFlat* tmpArray = editPane->TempArray(); - const TUint16 specZhuyin = 0x311D; - _LIT( delimiter, "\x0027" ); - TInt validSpellingCount = 0; - tmpArray->Reset(); - - if ( 0 == ptiengine->GetPhoneticSpellingsL( *tmpArray ) ) - { - return EFalse; - } - - for ( TInt i = 0; i < tmpArray->Count(); ++i ) - { - if ( ( KErrNotFound == tmpArray->MdcaPoint( i ).Find( delimiter ) ) && - ( specZhuyin != tmpArray->MdcaPoint( i )[0] ) ) - { - validSpellingCount = validSpellingCount + 1; - spelling->InsertL( 0, tmpArray->MdcaPoint( i ) ); - } - } - - if ( 0 == validSpellingCount ) - { - return EFalse; - } - - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::GetValidKeystroke -// Get the valid keystroke. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyZhuyinPhraseBase::GetValidKeystrokeL() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - RArray* keycodeArray = editPane->KeycodeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - CDesCArrayFlat* spelling = - uiContainer->PinyinPopupWindow()->PhoneticSpellingArray(); - TInt keyCode = 0; - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - - spelling->Reset(); - spelling->Compress(); - showKeystroke->Reset(); - showKeystroke->Compress(); - - editPane->SetEffictiveLength( 0 ); - if ( KMaxPhraseCreationCount == phraseCount ) - { - if ( keystroke->Count() > 0 ) - { - keystroke->Reset(); - } - return EFalse; - } - - if ( 0 == keystroke->Count() ) - { - return EFalse; - } - - if ( 1 == keystroke->MdcaPoint( 0 ).Length() ) - { - return EFalse; - } - - if ( CheckToneMarkBorderUpon() ) - { - return EFalse; - } - - ClearPtiEngineKeystroke(); - for ( TInt i = 0; ( i < keystroke->Count() ) && - ( i < keycodeArray->Count() ); ++i ) - { - keyCode = (*keycodeArray)[i]; - if ( keyCode == EPtiKeyQwertyE || - keyCode == EPtiKeyQwertyR || - keyCode == EPtiKeyQwertyY || - keyCode == EPtiKeyQwertyU || - keyCode == EStdKeySpace ) - { - if( ptiengine->SetToneMark( keyCode ) ) - { - if ( !CheckPhraseSpellingL() ) - { - break; - } - else - { - showKeystroke->AppendL( keystroke->MdcaPoint( i - 1 ) ); - showKeystroke->AppendL( keystroke->MdcaPoint( i ) ); - } - } - break; - } - else - { - stringBeforeLength = - ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = - ptiengine->AppendKeyPress((TPtiKey)keyCode).Length(); - if ( stringBeforeLength != stringAfterLength ) - { - if ( i + 1 < keystroke->Count() ) - { - if ( 1 != keystroke->MdcaPoint( i + 1 ).Length() ) - { - if ( !CheckPhraseSpellingL() ) - { - break; - } - showKeystroke->AppendL( keystroke->MdcaPoint( i ) ); - } - } - else - { - if ( CheckPhraseSpellingL() ) - { - showKeystroke->AppendL( keystroke->MdcaPoint( i ) ); - } - } - } - else - { - break; - } - } - } - - editPane->SetEffictiveLength( showKeystroke->Count() ); - if ( 0 == showKeystroke->Count() ) - { - return EFalse; - } - - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::GetValidKeystroke -// Get the valid keystroke. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputMiniQwertyZhuyinPhraseBase::CheckToneMarkBorderUpon() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - - if ( keystroke->Count() > 1 ) - { - for ( TInt i = 1; i < keystroke->Count(); ++i ) - { - if ( ( 1 == keystroke->MdcaPoint( i - 1 ).Length() ) && - ( 1 == keystroke->MdcaPoint( i ).Length() ) ) - { - return ETrue; - } - } - } - - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepInputMiniQwertyZhuyinPhraseBase::GetCandidateL -// Get candidate info. -// --------------------------------------------------------------------------- -// -void TAknFepInputMiniQwertyZhuyinPhraseBase::GetCandidateL( TBool aClearSelection ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - CDesCArrayFlat* candidateArray = candidatePane->CandidateArray(); - candidateArray->Reset(); - candidateArray->Compress(); - - if ( 0 == spelling->Count() ) - { - return; - } - - TInt selection = 0; - if ( !aClearSelection ) - { - selection = popup->CurrentSelection(); - if ( selection >= spelling->Count() ) - { - selection = 0; - } - } - RPointerArray list; - extern void CleanArray( TAny* aAny ); - TCleanupItem cleanitem( CleanArray, &list ); - CleanupStack::PushL( cleanitem ); - HBufC* retString = ptiengine->GetCandidatesByInputString( - spelling->MdcaPoint( selection ), - list, - EFalse ); - - delete retString; - retString = NULL; - - for ( TInt i = 0; i < list.Count(); ++i ) - { - if ( 1 == spelling->MdcaPoint( selection ).Length() ) - { - if ( 0 != spelling->MdcaPoint( selection ).Compare( *(list[i]) ) ) - { - candidateArray->AppendL( *(list[i]) ); - } - } - else - { - candidateArray->AppendL( *(list[i]) ); - } - } - - CleanupStack::PopAndDestroy(); // cleanitem - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputstateentryhalfqwertyphrase.cpp --- a/fep/aknfep/src/aknfepuiinputstateentryhalfqwertyphrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1243 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateEntryMiniQwertyPinyinPhrase methods. -* -*/ - - - - - - - - - - - - -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUICtrlCandidatePane.h" -#include "aknfepuiinputstateentryhalfqwertyphrase.h" - -#include "AknFepManager.h" //FepMan flag -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "AknFepUiCtrlContainerChinese.h" -#include -#include //CPtiEngine -#include //keys -#include - -const TInt KFnMappedCharacters = 5; -const TInt KInputPaneLength = 32; -const TText KPinyinTone4Valid = 0x02D9; -const TText KPinyinTone4Invalid = 0x0020; -const TInt KMaxPhraseCount = 150; - -//For Pinyin -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyPinyinPhrase::TAknFepInputStateEntryHalfQwertyPinyinPhrase -// the construt funtion -// --------------------------------------------------------------------------- -// -TAknFepInputStateEntryHalfQwertyPinyinPhrase::TAknFepInputStateEntryHalfQwertyPinyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryQwertyBaseChinesePhrase(aOwner,aUIContainer) - { - iState = EEntry; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->FocusCandidatePane(EFalse); - uiContainer->CandidatePane()->ShowCandidateOrdinals(EFalse); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutInput); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->ShowHorizontalScrollArrows(EFalse); - uiContainer->ShowVerticalScrollArrows(EFalse); - uiContainer->InputPane()->SetOverrideFontId(0); - // in the case that we are coming back to the input pane from the candidate pane, - // we need to ensure that the current selection is selected correctly - ImplicitlyUpdateSelection(); - UpdateIndicator(); - ClearDeliberateSelection(); - iOwner->PtiEngine()->SetInputMode(EPtiEnginePinyinPhraseHalfQwerty); - iOwner->PtiEngine()->SetCandidatePageLength(KMaxPhraseCount); - iOwner->PtiEngine()->SetCase(EPtiCaseLower); - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase::HandleKeyL -// handle key event -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryHalfQwertyPinyinPhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - TBool state = ETrue; - TPtrC text; - TBool ret = ETrue; - if ( aLength == EShortKeyPress ) - { - switch (aKey) - { - case EPtiKeyQwerty1: - { - aKey = EPtiKeyQwertyE; - break; - } - case EPtiKeyQwerty2: - { - aKey = EPtiKeyQwertyT; - break; - } - case EPtiKeyQwerty3: - { - aKey = EPtiKeyQwertyU; - break; - } - case EPtiKeyQwerty4: - { - aKey = EPtiKeyQwertyD; - break; - } - case EPtiKeyQwerty5: - { - aKey = EPtiKeyQwertyG; - break; - } - case EPtiKeyQwerty6: - { - aKey = EPtiKeyQwertyJ; - break; - } - case EPtiKeyQwerty7: - { - aKey = EPtiKeyQwertyC; - break; - } - case EPtiKeyQwerty8: - { - aKey = EPtiKeyQwertyB; - break; - } - case EPtiKeyQwerty9: - { - aKey = EPtiKeyQwertyM; - break; - } - case EPtiKeyQwerty0: - { - aKey = EPtiKeyQwertySpace; - break; - } - } - } - - if ( aKey != EStdKeyLeftFunc && - (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed))) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ETrue; - } - if(( aKey == EStdKeyLeftFunc || aKey == EStdKeyFullStop) && aLength == EShortKeyPress) //chr and punctuation key to tone mark - { - if(ptiengine->IncrementToneMark(ETrue)) - { - ImplicitlyUpdateSelection(); - } - } - else if( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || // - CAknFepFnKeyManager::EFnKeyLock == iOwner->FepMan()->FnKeyState() || - CAknFepFnKeyManager::EFnKeyDown == iOwner->FepMan()->FnKeyState()) - { - popup->SetPreStateIsPredictive( EFalse ); - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if(aKey == EStdKeyBackspace ) - { - if ( popup->IsChangeStatet() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - if ( state ) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - ImplicitlyUpdateSelection(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - popup->SetPreStateIsPredictive( EFalse ); - if ( aLength == ELongKeyPress ) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - } - else if(aKey ==EStdKeyDevice1)//sk2 - { - iOwner->FepMan()->TryCloseUiL(); - popup->SetPreStateIsPredictive( EFalse ); - } - else if(aKey == EStdKeyRightArrow) - { - if(popup->IsEnabled()) - { - if(popup->SelectNextPhrase()) - { - DeliberatelyUpdateSelection(); - } - } - } - else if(aKey == EStdKeyLeftArrow) - { - if(popup->IsEnabled()) - { - if(popup->SelectPrevPhrase()) - { - DeliberatelyUpdateSelection(); - } - } - } - else if (aKey == EStdKeyDownArrow - || aKey == EStdKeyDevice3 - || aKey == EStdKeyDevice0 - ||aKey == EStdKeyEnter) //Downkey,sk1,selection,enter key - { - if(popup->IsEnabled()) - { - popup->Enable(EFalse); - } - iOwner->ChangeState(ECandidate); - popup->SetPreStateIsPredictive( EFalse ); - popup->SetChangeState( ETrue ); - } - else if ( aKey == EStdKeyUpArrow ) - { - if ( !candidatePane->IsFirstPage() ) - { - candidatePane->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirst(); - UpdateIndicator(); - } - } - else if(aLength == EShortKeyPress) - { - iOwner->FepMan()->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - - if(iOwner->IsValidChineseInputKeyQwerty(aKey) || aKey ==EStdKeySpace ) //seperator - { - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - if (stringAfterLength==0 && aKey == EPtiKeyQwertyU ) //u,i should not as first character in pinyin - { - iOwner->FepMan()->TryCloseUiL(); - popup->SetPreStateIsPredictive( EFalse ); - iOwner->FepMan()->UpdateCbaL(NULL); -// iOwner->ChangeState(EQwerty); - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ETrue; - } - if (stringBeforeLength != stringAfterLength) - { - if (ptiengine->GetPhoneticSpelling(1).Length() == 1) - { - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL); - } - ImplicitlyUpdateSelection(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - if ( popup->PhoneticSpellingArray()->Count() > 0 && - popup->PhoneticSpellingArray()->MdcaPoint( 0 ).Length() > 1 ) - { - popup->SetPreStateIsPredictive( EFalse ); - } - } - else - { - if ( popup->GetPreStateIsPredictive() && - popup->PhoneticSpellingArray()->Count() > 0 && - popup->PhoneticSpellingArray()->MdcaPoint( 0 ).Length() == 1) //long press fn mode character should inputted - { - iOwner->FepMan()->TryCloseUiL(); - popup->SetPreStateIsPredictive( EFalse ); - if (aKey == EStdKeyEnter) - { - // PtiEngine does not have mapping for the enter key. - const TText KAknFEPLineFeedSymbol = 0x21B2; - TBuf<1> lineFeed; - lineFeed.Zero(); - lineFeed.Append(KAknFEPLineFeedSymbol); - text.Set(lineFeed); - } - else - { - TBuf allFnMappedCharacters; - ptiengine->MappingDataForKey((TPtiKey)aKey, allFnMappedCharacters, EPtiCaseFnLower); - text.Set(allFnMappedCharacters); - } - if (text.Length() > 0) - { - TBuf<1> chr; - chr.Append(text[0]); - iOwner->FepMan()->NewCharacterL(chr); - iOwner->FepMan()->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - ret = ETrue; - } - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyPinyinPhrase::DeliberatelyUpdateSelection -// DeliberatelyUpdateSelection -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryHalfQwertyPinyinPhrase::DeliberatelyUpdateSelection() - { - TPtr deliberateSelection = iOwner->GetLatestDeliberateSelection(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - TInt selected = popup->CurrentSelection(); - ptiengine->EnableToneMarks(EFalse); - // our index is zero based, engine index is one based - TPtrC spelling = ptiengine->GetPhoneticSpelling(selected + 1); - deliberateSelection = spelling.Left(MAknFepUICtrlInputPane::EMaxInputCharsPinyinPopupNotIncludingToneMark); - ptiengine->EnableToneMarks(ETrue); - UIContainer()->PinyinPopupWindow()->SetFlag(MAknFepUICtrlPinyinPopup::ESpellingNavigation); - RefreshUI(popup->CurrentVisibleSelection()); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyPinyinPhrase::ImplicitlyUpdateSelection -// update the selection -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryHalfQwertyPinyinPhrase::ImplicitlyUpdateSelection() - { - TPtr oldDeliberateSelection = iOwner->GetLatestDeliberateSelection(); - TInt oldDeliberateSelectionLength = oldDeliberateSelection.Length(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - // previously selected is compared in turn to each of the new candidates - ptiengine->EnableToneMarks(EFalse); - TInt pinyinCount = ptiengine->PhoneticSpellingCount(); - TInt newSelection = 0; - for(TInt i = 0; i < pinyinCount; i++) - { - TPtrC spelling = ptiengine->GetPhoneticSpelling(i + 1); // our index is zero based, engine index is one based - TInt spellingLength = spelling.Length(); - // figure out how many characters we are comparing, this depends on the - // direction of the edit - TInt compareLength = oldDeliberateSelectionLength <= spellingLength ? - oldDeliberateSelectionLength : spellingLength; - if(oldDeliberateSelection.Left(compareLength) == spelling.Left(compareLength)) - { - // as soon as a substring match is found, the - // highlight position is set to that candidate in the new list. - // note that in the case of the first character entered, the - // oldBuf will be empty so it will always match... which is - // fine as we want to select the top one anyway, so we will - // quit the loop early. - newSelection = i; - break; - } - } - ptiengine->EnableToneMarks(ETrue); - UIContainer()->PinyinPopupWindow()->SetFlag(MAknFepUICtrlPinyinPopup::ESpellingChanged); - RefreshUI(newSelection); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyPinyinPhrase::ClearDeliberateSelection -// clear the deliberate selection -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryHalfQwertyPinyinPhrase::ClearDeliberateSelection() - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - TInt spellingCount = popup->PhoneticSpellingArray()->Count(); - // we must have just deleted the last character, - // or we are starting a new zhuyin session, so wipe the last deliberate selection - if ( 0 == spellingCount ) - { - TPtr oldDeliberateSelection = iOwner->GetLatestDeliberateSelection(); - oldDeliberateSelection = KNullDesC; - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyPinyinPhrase::RefreshUI -// refresh ui -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryHalfQwertyPinyinPhrase::RefreshUI(TInt aSelection) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - // get cursor position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - TText toneMark; - TBool toneMarkEntered = ptiengine->ToneMark(toneMark); - TBuf<1> validToneMarkBuf; - if(toneMarkEntered) - { - // override specific invalid tonemark character only, the others are the same character - // when both valid and invalid - if(toneMark == KPinyinTone4Invalid) - toneMark = KPinyinTone4Valid; - validToneMarkBuf.Append(toneMark); - } - // to start with, disable the tone marks so we can get the list of all zhuyin matches - // later we will figure out which ones are invalid - ptiengine->EnableToneMarks(EFalse); - TInt pinyinCountWithoutToneMarks = ptiengine->PhoneticSpellingCount(); - if(pinyinCountWithoutToneMarks > 0) - { - if(popup->IsFlagSet(MAknFepUICtrlPinyinPopup::ESpellingChanged)) - { - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - TRAPD(ignore, ptiengine->GetPhoneticSpellingsL(*spelling)); - if (ignore != KErrNone) - { - return; - } - popup->SplitPhraseSpellingIntoPages(); - } - // set display page for delibrate selection - popup->SetDisplayPage(aSelection); - popup->SetPhraseItemTexts(); - // fill in input pane although it's invisible - inputPane->SetText(ptiengine->GetPhoneticSpelling(popup->CurrentSelection() + 1)); - popup->PopupSizeChanged(); // phrase input - } - // turn tone marks back on so that we know where we are. - ptiengine->EnableToneMarks(ETrue); - // this is where we start to figure out whether the tonemarks are valid, - // whether the selected tonemark is valid, and what is the index of the - // selected candidate in the list of candidates with tonemarks... - TBool selectionToneMarkValid = EFalse; - TInt selectionIndexAdjustedForToneMarkValidity = popup->CurrentSelection(); - // we only need to deal with tone marks if there is one - if(toneMarkEntered) - { - if(pinyinCountWithoutToneMarks > 0) - { - for(TInt i = 0; i < pinyinCountWithoutToneMarks; i++) - { - TBool valid = EFalse; - - TBuf nextCandidateWithoutToneMark; - nextCandidateWithoutToneMark.Copy(ptiengine->GetPhoneticSpelling - (i + 1).Left(MAknFepUICtrlInputPane::EMaxInputCharsPinyinPopupNotIncludingToneMark)); - ptiengine->EnableToneMarks(EFalse); - ptiengine->SelectPhoneticSpelling(i + 1); - valid = ptiengine->IsToneMarkValidForSpelling(); - if(valid) - { - ptiengine->EnableToneMarks(ETrue); - TInt pinyinCountWithToneMarks = ptiengine->PhoneticSpellingCount(); - for(TInt j = 0; j < pinyinCountWithToneMarks; j++) - { - // use j here not i as we are looking at the list with tonemarks - TPtrC nextCandidateWithToneMark = ptiengine->GetPhoneticSpelling(j + 1); - if(nextCandidateWithToneMark == nextCandidateWithoutToneMark) - { - if(i == aSelection) - { - selectionToneMarkValid = ETrue; - - // fill in input pane even if it can't be seen, for when we have to hide popup window - inputPane->SetText(nextCandidateWithoutToneMark); - } - break; - } - } - } - } - } - } - ptiengine->EnableToneMarks(EFalse); - ptiengine->SelectPhoneticSpelling(popup->CurrentSelection() + 1); - // next two lines are for tonemark validity - ptiengine->EnableToneMarks(selectionToneMarkValid); - ptiengine->SelectPhoneticSpelling(selectionIndexAdjustedForToneMarkValidity + 1); // our index is zero based, engine index is one based - // update the candidate pane. - if(popup->IsFlagSet(MAknFepUICtrlPinyinPopup::ESpellingChanged) - || popup->IsFlagSet(MAknFepUICtrlPinyinPopup::ESpellingNavigation)) - { - TRAPD(ignore, ptiengine->GetChinesePhraseCandidatesL(*(uiContainer->CandidatePane()->CandidateArray()))); - if (ignore != KErrNone) - { - return; - } - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - popup->ClearFlag(MAknFepUICtrlPinyinPopup::ESpellingChanged - | MAknFepUICtrlPinyinPopup::ESpellingNavigation); - } - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable(ETrue); - // need to enable the pinyin popup after the container so that it is raised to the front - popup->Enable(pinyinCountWithoutToneMarks > 0); - UpdateIndicator(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyPinyinPhrase::InitializeStateL -// updata the cba -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryHalfQwertyPinyinPhrase::InitializeStateL(void) - { - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyPinyinPhrase::UpdateIndicator -// updata the indicator -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryHalfQwertyPinyinPhrase::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyPinyinPhrase::IsCharacterKey -// to check whether the key is character or not -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryHalfQwertyPinyinPhrase::IsCharacterKey( - const TInt aKey ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine( ); - // Max length doesn't matter because we'll need only the first character. - TBuf lowerdata; - ptiengine->MappingDataForKey( (TPtiKey)aKey, lowerdata, EPtiCaseLower ); - if ( lowerdata.Length( ) > 0 ) - { - TChar lower = lowerdata[0]; - TUint upper = lower.GetUpperCase( ); - if ( TUint( lower ) != upper ) - { - return ETrue; - } - } - return EFalse; - } - -//For stroke -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyStrokePhrase::TAknFepInputStateEntryHalfQwertyStrokePhrase -// the construt funtion -// --------------------------------------------------------------------------- -// -TAknFepInputStateEntryHalfQwertyStrokePhrase::TAknFepInputStateEntryHalfQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryQwertyBaseChinesePhrase(aOwner,aUIContainer) - { - iState = EEntry; - iOwner->PtiEngine()->SetInputMode( EPtiEngineStrokePhraseHalfQwerty ); - iOwner->PtiEngine()->SetCase( EPtiCaseLower ); - iOwner->PtiEngine()->SetCandidatePageLength( KMaxPhraseCount ); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - uiContainer->ShowHorizontalScrollArrows(EFalse); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->CandidatePane()->ShowCandidateOrdinals( EFalse ); - UpdateIndicator(); - } - -//For stroke -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyStrokePhrase::HandleKeyL -// handle the key event of stroke -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryHalfQwertyStrokePhrase::HandleKeyL(TInt aKey, - TKeyPressLength aLength ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBuf currentText; - TPtrC text; - TBool state = ETrue; - TInt spellingLen = 0; - TBool ret = ETrue; - - if ( aKey == EPtiKeyQwerty0 ) - { - aKey = EPtiKeyQwertySpace; - } - - if ( aKey != EStdKeyLeftFunc && - (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed))) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ETrue; - } - switch (aKey) - { - case EStdKeyBackspace: - { - if (popup->IsChangeStatet() && aLength == ELongKeyPress) - { - state = EFalse; - } - else - { - popup->SetChangeState(EFalse); - } - if (state) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - popup->SetPreStateIsPredictive( EFalse ); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - break; - } - case EStdKeyDevice1://sk2 - { - iOwner->FepMan()->TryCloseUiL(); - popup->SetPreStateIsPredictive( EFalse ); - break; - } - case EStdKeyUpArrow: - { - if ( !candidatePane->IsFirstPage() ) - { - candidatePane->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirst(); - UpdateIndicator(); - } - break; - } - case EStdKeyRightArrow: - { - if (candidatePane->VisibleCandidateCount()!= 1) - { - iOwner->ChangeState(ECandidate); - popup->SetPreStateIsPredictive( EFalse ); - candidatePane->SelectNext(); - } - break; - } - case EStdKeyLeftArrow: - { - if (candidatePane->VisibleCandidateCount()!= 1) - { - iOwner->ChangeState(ECandidate); - popup->SetPreStateIsPredictive( EFalse ); - TInt numbertotal = UIContainer()->CandidatePane()->VisibleCandidateCount(); - UIContainer()->CandidatePane()->SelectIndex(numbertotal-1); - } - break; - } - case EStdKeyDownArrow: - { - if ( candidatePane->IsLastPage() ) - { - return ETrue; - } - if ( candidatePane->NeedGetNewCandidatePage( ) ) - { - if ( !iOwner->PtiEngine()->NextCandidatePage( ) ) - { - if ( candidatePane->IsLastPage() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - } - else - { - CDesCArrayFlat* phraseCandidates = - candidatePane->CandidateArray( ); - RPointerArray list; - GetNewCandidatesL( iOwner->PtiEngine()->CandidatePage( ), list ); - for (TInt i = 0; i < list.Count( ); ++i ) - { - phraseCandidates->AppendL( *(list[i]) ); - } - list.ResetAndDestroy(); - } - } - candidatePane->NextCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - UpdateIndicator(); - break; - } - case EStdKeyDevice3://Select - case EStdKeyDevice0://sk1 - case EStdKeyEnter: - { - uiContainer->PinyinPopupWindow()->Enable(EFalse); - TPtrC currentPhraseText = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if(currentPhraseText.Length()) - { - fepMan->NewTextL(currentPhraseText); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(currentPhraseText); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - popup->SetPreStateIsPredictive( EFalse ); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - popup->SetPreStateIsPredictive( EFalse ); - } - } - break; - } - default: - { - if (aLength == EShortKeyPress) - { - iOwner->FepMan()->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - if (iOwner->IsValidChineseInputKeyQwerty(aKey) || - aKey ==EStdKeySpace || - aKey == EStdKeyFullStop || - aKey == EStdKeyLeftFunc ) //seperator - { - TInt stringBeforeLength(0); - TInt stringAfterLength(0); - stringBeforeLength = ptiengine->GetPhoneticSpelling(1).Length(); - stringAfterLength = ptiengine->AppendKeyPress((TPtiKey)aKey).Length(); - if (stringBeforeLength != stringAfterLength) - { - if (ptiengine->GetPhoneticSpelling(1).Length() == 1) - { - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL); - } - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - inputPane->GetText(currentText); - spellingLen = currentText.Length(); - if ( spellingLen > 1 ) - { - popup->SetPreStateIsPredictive( EFalse ); - } - } - else if ( popup->GetPreStateIsPredictive() && 0 == spellingLen) //long press fn mode character should inputted - { - iOwner->FepMan()->TryCloseUiL(); - popup->SetPreStateIsPredictive( EFalse ); - - TBuf allFnMappedCharacters; - ptiengine->MappingDataForKey( (TPtiKey)aKey, - allFnMappedCharacters, EPtiCaseFnLower ); - text.Set( allFnMappedCharacters ); - if ( text.Length( ) > 0 ) - { - TBuf<1> chr; - chr.Append( text[0] ); - iOwner->FepMan()->NewCharacterL( chr ); - iOwner->FepMan()->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - ret = ETrue; - } - } - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyStrokePhrase::InitializeStateL -// change the cba -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryHalfQwertyStrokePhrase::InitializeStateL(void) - { - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyStrokePhrase::IsCharacterKey -// to check whether the key is character or not -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryHalfQwertyStrokePhrase::IsCharacterKey( - const TInt aKey ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine( ); - // Max length doesn't matter because we'll need only the first character. - TBuf lowerdata; - ptiengine->MappingDataForKey( (TPtiKey)aKey, lowerdata, EPtiCaseLower ); - if ( lowerdata.Length( ) > 0 ) - { - TChar lower = lowerdata[0]; - TUint upper = lower.GetUpperCase( ); - - if ( TUint( lower ) != upper ) - { - return ETrue; - } - } - - return EFalse; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyStrokePhrase::UpdateIndicator -// updata the indicator -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryHalfQwertyStrokePhrase::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (candidatePane->IsFirstPage()) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - if (candidatePane->IsLastPage()) - { - uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows(ETrue); - } - - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - -//for zhuyin -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyZhuyinPhrase::TAknFepInputStateEntryHalfQwertyZhuyinPhrase -// c++ construct funtion -// --------------------------------------------------------------------------- -// -TAknFepInputStateEntryHalfQwertyZhuyinPhrase::TAknFepInputStateEntryHalfQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateEntryQwertyBaseChinesePhrase(aOwner, aUIContainer) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->SetLayout(MAknFepUICtrlContainerChinese::ELayoutInput); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->InputPane()->SetOverrideFontId(0); - uiContainer->CandidatePane()->ShowCandidateOrdinals( EFalse ); - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - uiContainer->ShowHorizontalScrollArrows(EFalse); - uiContainer->ShowVerticalScrollArrows(multiplePages); - iOwner->PtiEngine()->SetInputMode( EPtiEngineZhuyinPhraseHalfQwerty ); - iOwner->PtiEngine()->SetCase( EPtiCaseLower ); - UpdateIndicator(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyZhuyinPhrase::HandleKeyL -// handle the key of zhuyin -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryHalfQwertyZhuyinPhrase::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TInt originalKey = aKey; - TPtrC text; - TInt spellingLen = 0; - TBool state = ETrue; - TBool ret = ETrue; - TBuf currentText; - if ( aKey != EStdKeyLeftFunc && - (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed) || - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed))) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return ETrue; - } - switch (aKey) - { - case EPtiKeyQwertyE: - aKey = EPtiKey1; - break; - case EPtiKeyQwertyT: - aKey = EPtiKey2; - break; - case EPtiKeyQwertyU: - aKey = EPtiKey3; - break; - case EPtiKeyQwertyD: - aKey = EPtiKey4; - break; - case EPtiKeyQwertyG: - aKey = EPtiKey5; - break; - case EPtiKeyQwertyJ: - aKey = EPtiKey6; - break; - case EPtiKeyQwertyC: - aKey = EPtiKey7; - break; - case EPtiKeyQwertyB: - aKey = EPtiKey8; - break; - case EPtiKeyQwertyM: - aKey = EPtiKey9; - break; - case EPtiKeyQwertySpace: - aKey = EPtiKey0; - break; - } - if( (aKey == EStdKeyLeftFunc || aKey == EStdKeyFullStop )&& - aLength == EShortKeyPress ) - { - if( ptiengine->IncrementToneMark( ETrue ) ) - { - inputPane->SetFlag( MAknFepUICtrlInputPane::EPhoneticChanged ); - RefreshUI(); - return ETrue; - } - } - switch (aKey) - { - case EStdKeyBackspace: - { - if (popup->IsChangeStatet() && aLength == ELongKeyPress) - { - state = EFalse; - } - else - { - popup->SetChangeState(EFalse); - } - if (state) - { - if (iOwner->PtiEngine()->DeleteKeyPress().Length()) - { - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - } - else - { - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - popup->SetPreStateIsPredictive( EFalse ); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - } - break; - } - case EStdKeyDevice1://sk2 - { - iOwner->FepMan()->TryCloseUiL(); - popup->SetPreStateIsPredictive( EFalse ); - break; - } - case EStdKeyUpArrow: - { - if ( !candidatePane->IsFirstPage() ) - { - candidatePane->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirst(); - UpdateIndicator(); - } - break; - } - case EStdKeyRightArrow: - { - if (candidatePane->VisibleCandidateCount()!= 1) - { - iOwner->ChangeState(ECandidate); - popup->SetPreStateIsPredictive( EFalse ); - candidatePane->SelectNext(); - } - break; - } - case EStdKeyLeftArrow: - { - if (candidatePane->VisibleCandidateCount()!= 1) - { - iOwner->ChangeState(ECandidate); - popup->SetPreStateIsPredictive( EFalse ); - TInt numbertotal = UIContainer()->CandidatePane()->VisibleCandidateCount(); - UIContainer()->CandidatePane()->SelectIndex(numbertotal-1); - } - break; - } - case EStdKeyDownArrow: - { - if ( candidatePane->IsLastPage() ) - { - return ETrue; - } - if ( candidatePane->NeedGetNewCandidatePage( ) ) - { - if ( !iOwner->PtiEngine()->NextCandidatePage( ) ) - { - if ( candidatePane->IsLastPage() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - } - else - { - CDesCArrayFlat* phraseCandidates = - candidatePane->CandidateArray( ); - RPointerArray list; - GetNewCandidatesL( iOwner->PtiEngine()->CandidatePage( ), list ); - for (TInt i = 0; i < list.Count( ); ++i ) - { - phraseCandidates->AppendL( *(list[i]) ); - } - list.ResetAndDestroy(); - } - } - candidatePane->NextCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - UpdateIndicator(); - break; - } - case EStdKeyDevice3://Select - case EStdKeyDevice0://sk1 - case EStdKeyEnter: - { - uiContainer->PinyinPopupWindow()->Enable(EFalse); - TPtrC phraseText = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - if(phraseText.Length()) - { - fepMan->NewTextL(phraseText); - fepMan->CommitInlineEditL(); - iOwner->PtiEngine()->SetPredictiveChineseChar(phraseText); - if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull)) - { - fepMan->ClearFlag(CAknFepManager::EFlagEditorFull); - iOwner->FepMan()->TryCloseUiL(); - popup->SetPreStateIsPredictive( EFalse ); - } - else - { - iOwner->ChangeState(EPredictiveCandidate); - popup->SetPreStateIsPredictive( EFalse ); - } - } - break; - } - case EPtiKeyQwertyQ: - case EPtiKeyQwertyA: - case EPtiKeyQwertyO: - case EPtiKeyQwertyL: - case EPtiKeyQwertyZ: - { - ret = ETrue; - break; - } - default: - { - if (aLength == EShortKeyPress) - { - iOwner->FepMan()->SetCcpuFlag(CAknFepManager::ECcpuStateIgnoreStarUp); - - if (iOwner->IsValidChineseInputKeyQwerty(aKey) || aKey - ==EStdKeySpace) //seperator - { - ptiengine->AppendKeyPress((TPtiKey)aKey); - SetInputPaneToneMark(); - if (ptiengine->GetPhoneticSpelling(1).Length() == 1) - { - iOwner->FepMan()->UpdateCbaL(R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL); - } - inputPane->SetFlag(MAknFepUICtrlInputPane::EPhoneticChanged); - RefreshUI(); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - inputPane->GetText(currentText); - spellingLen = currentText.Length(); - if ( spellingLen > 1 ) - { - popup->SetPreStateIsPredictive( EFalse ); - } - } - else if ( popup->GetPreStateIsPredictive() && 0 == spellingLen) //long press fn mode character should inputted - { - iOwner->FepMan()->TryCloseUiL(); - popup->SetPreStateIsPredictive( EFalse ); - - TBuf allFnMappedCharacters; - ptiengine->MappingDataForKey( (TPtiKey)originalKey, - allFnMappedCharacters, EPtiCaseFnLower ); - text.Set( allFnMappedCharacters ); - if ( text.Length( ) > 0 ) - { - TBuf<1> chr; - chr.Append( text[0] ); - iOwner->FepMan()->NewCharacterL( chr ); - iOwner->FepMan()->CommitInlineEditL(); - ptiengine->ClearCurrentWord(); - ret = ETrue; - } - } - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyZhuyinPhrase::KeyTimerExpired -// -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryHalfQwertyZhuyinPhrase::KeyTimerExpired() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlInputPane* inputPane = uiContainer->InputPane(); - - // set container's position - TPoint baseLine = TPoint(0,0); - TInt height = 0; - TInt ascent = 0; - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - TPtrC ptr = ptiengine->GetPhoneticSpelling(1); - inputPane->SetText(ptr); - TBuf currentText; - inputPane->GetText(currentText); - if (ptr.Length() < currentText.Length()) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - UpdateIndicator(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryHalfQwertyZhuyinPhrase::UpdateIndicator -// updata the indicator -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryHalfQwertyZhuyinPhrase::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if (candidatePane->IsFirstPage()) - { - uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue); - } - if (candidatePane->IsLastPage()) - { - uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows(ETrue); - } - - uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse); - uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse); - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputstateentrypinyinphrasecreation.cpp --- a/fep/aknfep/src/aknfepuiinputstateentrypinyinphrasecreation.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,552 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TAknFepInputStateEntryPinyinPhraseCreation methods. - * -*/ - - - - - - - - - - - - -#include //CPtiEngine -#include - -#include //keys -#include -#include -#include - -#include "AknFepPanic.h" -#include "aknfepuiinputstateentrypinyinphrasecreation.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" //pinyin phrase creation -#include "AknFepManager.h" - -const TInt KMaxPhraseCreationCount = 7; - -// --------------------------------------------------------- -// C++ construct. -// --------------------------------------------------------- -// -TAknFepInputStateEntryPinyinPhraseCreation::TAknFepInputStateEntryPinyinPhraseCreation( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ) : - TAknFepInputStatePinyinPhraseCreationBase( aOwner, aUIContainer) - { - iState = EKeySequenceEdit; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->FocusCandidatePane( EFalse ); - uiContainer->CandidatePane()->ShowCandidateOrdinals( EFalse ); - uiContainer->SetLayout( MAknFepUICtrlContainerChinese::ELayoutPhraseCreation ); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->ShowVerticalScrollArrows( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->InputPane()->SetOverrideFontId( 0 ); - uiContainer->PinyinPopupWindow()->SetPhraseCreationEditingState( EFalse ); - // in the case that we are coming back to the input pane from the candidate pane, - // we need to ensure that the current selection is selected correctly - if ( uiContainer->PinyinPopupWindow()->GetFromEditToSpellingFlag() ) - { - uiContainer->PinyinPopupWindow()->SetFromEditToSpellingFlag(); - TInt validCount = uiContainer-> - PinyinPopupWindow()->InEffectKeystrokeArray()->Count(); - uiContainer->EditPaneWindow()->SetCursorIndexOfKeystroke( validCount ); - ShowInfo(); - uiContainer->PinyinPopupWindow()->SetNoneHighlighted(); - uiContainer->EditPaneWindow()->ActiveCursor(); - uiContainer->EditPaneWindow()->EnableCursor(); - } - else - { - ImplicityShowInfo( ETrue ); - } - // however we also need to clear the deliberate selection, in case we are not - // coming back to the input pane from the candidate pane - ChangeCba(); - } - -// --------------------------------------------------------- -// HandleKeyL -// --------------------------------------------------------- -// -TBool TAknFepInputStateEntryPinyinPhraseCreation::HandleKeyL( TInt aKey, - TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* inEffectKeystrokeArray = popup->InEffectKeystrokeArray(); - CDesCArrayFlat* showKeystrokeArray = popup->ShowKeystrokeArray(); - - switch( aKey ) - { - case EKeyBackspace: - { - TBool state = ETrue; - if ( popup->IsChangeStatet() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - if ( state ) - { - HandleKeyBackspace( aLength ); - } - break; - } - case EKeyRightArrow: - if ( !IsMoveCursor() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else - { - MoveCursorToRight(); - } - break; - case EKeyLeftArrow: - if ( !IsMoveCursor() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else - { - MoveCursorToLeft(); - } - break; - case EKeyOK: - case EKeyCBA1: - if ( !( popup->IsChangeStatet() && aLength == ELongKeyPress ) ) - { - popup->SetChangeState( EFalse ); - HandleKeyOKAndKeyCBA1L(); - } - break; - case EKeyCBA2: - iOwner->FepMan()->TryCloseUiL(); - break; - case EKeyDownArrow: - if ( ( 0 == showKeystrokeArray->Count() ) || - ( 0 == inEffectKeystrokeArray->Count() ) ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else - { - popup->SetChangeState( ETrue ); - popup->SetFromEditToSpellingFlag( ETrue ); - iOwner->ChangeState( ESpellingSelection ); - } - break; - case EKeyUpArrow: - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - break; - default: - if ( EShortKeyPress == aLength ) - { - HandleOthersKey( aKey ); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - break; - } - - return ETrue; - } - -// --------------------------------------------------------- -// Init the show info -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhraseCreation::ImplicityShowInfo( - TBool aGetScreenCoordinates ) - { - TRAP_IGNORE( ImplicityShowInfoL( aGetScreenCoordinates ) ); - } - -// --------------------------------------------------------- -// Init the show info -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhraseCreation::ImplicityShowInfoL( - TBool aGetScreenCoordinates ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt showKeystrokeCount = popup->ShowKeystrokeArray()->Count(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - // get cursor position - TPoint baseLine = TPoint( 0, 0 ); - TInt height = 0; - TInt ascent = 0; - TBool validChange = EFalse; - TBool isSpellingValid = EFalse; - if ( aGetScreenCoordinates ) - { - iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent); - uiContainer->SetContainerPosition( baseLine, height ); - } - if ( popup->GetPhraseCreationEditingState() ) - { - isSpellingValid = GetValidKeystroke(); - } - else if ( popup->GetPhraseCreationState() ) - { - isSpellingValid = GetValidKeystroke(); - if ( 0 == chineseCount ) - { - editPane->SetCursorIndexOfKeystroke( showKeystrokeCount ); - } - else - { - editPane->SetCursorIndexOfKeystroke( 0 ); - } - - } - - if ( !isSpellingValid ) - { - UIContainer()->SetControlInVisible( EFalse ); - } - - validChange = popup->GetValidKeystrokeChange(); - - ShowInfo(); - SetWarningColor(); - editPane->ActiveCursor(); - if ( ( popup->GetPhraseCreationState() ) || - ( popup->GetPhraseCreationEditingState() ) ) - { - if ( validChange || - ( 0 != popup->CurrentPageStartIndex() ) ) - { - popup->SetPhraseCreationEditingState( EFalse ); - popup->SetPhraseCreationState( EFalse ); - RefreshUI(); - } - else - { - if ( 0 != popup->CurrentSelection() ) - { - RefreshCandidate(); - } - } - } - else - { - if ( validChange ) - { - RefreshUI( popup->CurrentSelection() ); - } - } - } - -// --------------------------------------------------------- -// EKeyBackspace -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhraseCreation::HandleKeyBackspace( TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - - TInt validKeystrokeCount = popup->InEffectKeystrokeArray()->Count(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - TInt cursorOfkeystrokeIndex = editPane->GetCursorIndexOfKeystroke(); - - if ( 0 == cursorOfkeystrokeIndex ) - { - if ( !TryCloseUI( aLength ) ) - { - if ( ( 0 == chineseCount ) && ( 0 != validKeystrokeCount ) ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else - { - if ( ChineseRevertKeystroke() ) - { - ClearDeliberateSelection(); - popup->SetPhraseCreationEditingState( ETrue ); - ImplicityShowInfo(); - ChangeCba(); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - } - } - else - { - if ( 1 == cursorOfkeystrokeIndex ) - { - editPane->Reset(); - editPane->SetCursorIndexOfKeystroke( 1 ); - } - //delete the current keystroke - if ( DeleteCurrentKeystroke() ) - { - if ( !TryCloseUI( aLength ) ) - { - ClearDeliberateSelection(); - popup->SetPhraseCreationEditingState( ETrue ); - ImplicityShowInfo(); - ChangeCba(); - } - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - } - -// --------------------------------------------------------- -// EKeyOK And EKeyCBA1L. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhraseCreation::HandleKeyOKAndKeyCBA1L() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - - TInt validKeystrokeCount = popup->InEffectKeystrokeArray()->Count(); - TInt keystrokeCount = popup->ShowKeystrokeArray()->Count(); - CDesCArrayFlat* chinese = popup->ChooseChineseCharacterArray(); - TBuf phraseCreated; - - if ( ( chinese->Count() >= 2 ) && ( 0 == keystrokeCount ) ) - { - //commit the chinese character. - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - for (TInt i = 0; i < chinese->Count(); ++i ) - { - phraseCreated.Append( chinese->MdcaPoint( i ) ); - } - AddPhraseToDB( phraseCreated ); - fepMan->PinyinPhraseCreation( EFalse ); - fepMan->NewTextL( phraseCreated ); - fepMan->CommitInlineEditL(); - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - } - else if ( 0 != validKeystrokeCount ) - { - popup->SetChangeState( ETrue ); - popup->SetFromEditToSpellingFlag( ETrue ); - iOwner->ChangeState( ESpellingSelection ); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - -// --------------------------------------------------------- -// others key input. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhraseCreation::HandleOthersKey( TInt aKey ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - iOwner->FepMan()->SetCcpuFlag( CAknFepManager::ECcpuStateIgnoreStarUp ); - if ( iOwner->IsValidChineseInputKey( aKey ) ) - { - if ( AddKeystroke( aKey ) ) - { - ClearDeliberateSelection(); - popup->SetPhraseCreationEditingState( ETrue ); - ImplicityShowInfo(); - ChangeCba(); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - else if ( aKey == EPtiKeyStar ) // we increment the tone mark. - { - if ( AddToneMark() ) - { - ClearDeliberateSelection(); - popup->SetPhraseCreationEditingState( ETrue ); - ImplicityShowInfo(); - ChangeCba(); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - -// --------------------------------------------------------- -// move cursor to left. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEntryPinyinPhraseCreation::IsMoveCursor() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - TInt keystrokeCount = popup->ShowKeystrokeArray()->Count(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - if ( ( 0 == keystrokeCount ) || ( KMaxPhraseCreationCount == chineseCount ) ) - { - return EFalse; - } - return ETrue; - } - -// --------------------------------------------------------- -// move cursor to left. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhraseCreation::MoveCursorToLeft() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt keystrokeCount = popup->ShowKeystrokeArray()->Count(); - TInt indexOfKeystroke = editPane->GetCursorIndexOfKeystroke(); - - if ( 0 == indexOfKeystroke ) - { - editPane->SetCursorIndexOfKeystroke( keystrokeCount ); - // for fix bug when press left, spelling pane will flash - // ImplicityShowInfo(); - ShowInfo(); - SetWarningColor(); - } - else if ( 1 == indexOfKeystroke ) - { - editPane->SetCursorIndexOfKeystroke( 0 ); - // for fix bug when press left, spelling pane will flash - // ImplicityShowInfo(); - ShowInfo(); - SetWarningColor(); - } - else - { - editPane->SetCursorIndexOfKeystroke( indexOfKeystroke - 1 ); - editPane->MoveCursorLeft(); - } - } - - -// --------------------------------------------------------- -// move cursor to left. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhraseCreation::MoveCursorToRight() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt keystrokeCount = popup->ShowKeystrokeArray()->Count(); - TInt indexOfKeystroke = editPane->GetCursorIndexOfKeystroke(); - - if ( indexOfKeystroke == keystrokeCount ) - { - editPane->SetCursorIndexOfKeystroke( 0 ); - // for fix bug when press right, spelling pane will flash - // ImplicityShowInfo(); - ShowInfo(); - SetWarningColor(); - } - else - { - editPane->SetCursorIndexOfKeystroke( indexOfKeystroke + 1 ); - editPane->MoveCursorRight(); - } - } - -// --------------------------------------------------------- -// Initialize State. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryPinyinPhraseCreation::InitializeState() - { - ChangeCba(); - } - -// --------------------------------------------------------- -// Add phrase to DB. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEntryPinyinPhraseCreation::AddPhraseToDB( - const TDesC& aPhraseAdd ) - { - TInt retCode; - TPtiUserDictionaryEntry addUdbEntry(aPhraseAdd); - //Add the phrase to the DB by PTI Engine - retCode = iOwner->PtiEngine()->AddUserDictionaryEntry( addUdbEntry ); - if ( KErrNone != retCode ) - { - return EFalse; - } - - return ETrue; - } - -// --------------------------------------------------------- -// Try to close UI. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEntryPinyinPhraseCreation::TryCloseUI( TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - TInt keystrokeCount = popup->ShowKeystrokeArray()->Count(); - TInt chineseCount = popup->ChooseChineseCharacterArray()->Count(); - - if ( ( 0 == chineseCount ) && ( 0 == keystrokeCount ) ) - { - TRAP_IGNORE( iOwner->FepMan()->TryCloseUiL() ); //no more keys, close the UI. - if ( aLength == ELongKeyPress ) - { - iOwner->FepMan()->SetLongClearAfterCloseUI( ETrue ); - } - return ETrue; - } - - return EFalse; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputstateentryzhuyinphrasecreation.cpp --- a/fep/aknfep/src/aknfepuiinputstateentryzhuyinphrasecreation.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,594 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TAknFepInputStateEntryZhuyinPhraseCreation methods. - * -*/ - - - - - - - - - - - -#include //CPtiEngine -#include - -#include //keys -#include -#include -#include - -#include "AknFepPanic.h" -#include "aknfepuiinputstateentryzhuyinphrasecreation.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" //pinyin phrase creation -#include "AknFepManager.h" -#include "aknfepzhuyinkeyhandlerinterface.h" -#include "AknFepZhuyinAnalyser.h" -#include "aknfepzhuyinconvertion.h" - -const TInt KMaxPhraseCount = 50; - -const TInt KMaxKeystrokeCount = 100; -const TInt KMaxPhraseCreationCount = 7; -const TInt KStateFromKeyDown = 0; -const TInt KStateAuto = 1; -// it means "the max phrase's length is seven" -_LIT( KDelimiter, "\x002E" ); - -// --------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------- -// -TAknFepInputStateEntryZhuyinPhraseCreation::TAknFepInputStateEntryZhuyinPhraseCreation( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ) : - TAknFepInputStateZhuyinPhraseCreationBase( aOwner, aUIContainer) - { - iState = EZhuyinSequenceEdit; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->FocusCandidatePane( EFalse ); - uiContainer->CandidatePane()->ShowCandidateOrdinals( EFalse ); - uiContainer->SetLayout( MAknFepUICtrlContainerChinese::ELayoutKeystroke ); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->ShowVerticalScrollArrows( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->InputPane()->SetOverrideFontId( 0 ); - - iOwner->PtiEngine()->SetInputMode( EPtiEngineZhuyinByPhrase ); - iOwner->PtiEngine()->SetCandidatePageLength( KMaxPhraseCount ); - uiContainer->EditPaneWindow()->ActiveCursor(); - // in the case that we are coming back to the input pane from the candidate pane, - // we need to ensure that the current selection is selected correctly - UpdateEEPContent(); - RefreshUI(); - // however we also need to clear the deliberate selection, in case we are not - // coming back to the input pane from the candidate pane - UpdateIndicator(); - TRAP_IGNORE( ChangeCbaL() ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryZhuyinPhraseCreation::HandleKeyL -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryZhuyinPhraseCreation::HandleKeyL( - TInt aKey, - TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - - CDesCArrayFlat* keystrokeArray = popup->ZhuyinSymbols(); - CDesCArrayFlat* ChineseArray = popup->ChineseCharsDisped(); - - CDesCArrayFlat* candidateArray = - uiContainer->CandidatePane()->CandidateArray(); - TBuf<1> keyBuf; - TBuf<1> keyShow; - TBuf phraseCreated; - - if ( aKey == EKeyBackspace ) - { - DeleteZhuyinSymbolOrChinese(); - UpdateEEPContent(); - RefreshUI(); - if ( AutoChangeState() ) - { - popup->SetChangeState( ETrue ); - iOwner->ZhuyinKeyHandler()->SetState( KStateAuto ); - iOwner->ZhuyinKeyHandler()->SetStatusChgFlag(MZhuyinKeyHandler::EInit); - ChangeCbaL(); - iOwner->ChangeState( EEntry ); - return ETrue; - } - else - { - ChangeCbaL(); - } - - if ( keystrokeArray->Count() == 0 - && ChineseArray->Count() == 0 ) - { - iOwner->FepMan()->TryCloseUiL(); - if (aLength == ELongKeyPress) - { - iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue); - } - } - - if ( 0 == ChineseArray->Count() ) - { - iOwner->FepMan()->PhraseCreation( EFalse ); - } - } - else if ( aKey == EKeyRightArrow ) - { - if ( KMaxPhraseCreationCount == ChineseArray->Count() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick ); - } - else if ( 0 == keystrokeArray->Count() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick ); - } - else - { - if( !MoveIndexOfKeystrokeRight() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick ); - } - else - { - iOwner->ZhuyinKeyHandler()->SetState( KStateFromKeyDown ); - } - } - } - else if ( aKey == EKeyLeftArrow ) - { - if ( KMaxPhraseCreationCount == ChineseArray->Count() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else if ( 0 == keystrokeArray->Count() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else - { - if ( !MoveIndexOfKeystrokeLeft() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else - { - iOwner->ZhuyinKeyHandler()->SetState( KStateFromKeyDown ); - } - } - } - else if ( aKey == EKeyOK || aKey == EKeyCBA1 ) - { - if ( ( ChineseArray->Count() >= 2 ) && ( 0 - == keystrokeArray->Count() ) ) - { - //commit the chinese character. - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - candidateArray->Reset(); - for (TInt i = 0; i < ChineseArray->Count(); ++i ) - { - phraseCreated.Append( ChineseArray->MdcaPoint( i ) ); - } - candidateArray->AppendL( ChineseArray->MdcaPoint( - ChineseArray->Count() - 1 ) ); - uiContainer->CandidatePane()->SelectFirst(); - uiContainer->CandidatePane()->SetCandidateBuffer( ChineseArray->MdcaPoint( - ChineseArray->Count() - 1 ) ); - AddPhraseToDB( phraseCreated ); - fepMan->NewTextL( phraseCreated ); - fepMan->CommitInlineEditL(); - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - } - else if ( ( 1 == ChineseArray->Count() ) && - ( 0 == keystrokeArray->Count() ) ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else if ( !CheckHighLightL() ) - { - popup->SetChangeState( ETrue ); - iOwner->ZhuyinKeyHandler()->SetState( KStateFromKeyDown ); - iOwner->ZhuyinKeyHandler()->Reset(); - iOwner->ChangeState( EEntry ); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - else if ( aKey == EKeyDownArrow ) - { - if ( !CheckHighLightL() ) - { - if ( 0 == keystrokeArray->Count() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else - { - popup->SetChangeState( ETrue ); - iOwner->ZhuyinKeyHandler()->SetState( KStateFromKeyDown ); - iOwner->ZhuyinKeyHandler()->SetStatusChgFlag( - MZhuyinKeyHandler::EFromSpellingEditingToEntry); - iOwner->ZhuyinKeyHandler()->Reset(); - iOwner->ChangeState( EEntry ); - } - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - else if ( aKey == EKeyUpArrow ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else if ( aLength == EShortKeyPress ) // don't want repeats on these keys - { - iOwner->FepMan()->SetCcpuFlag( CAknFepManager::ECcpuStateIgnoreStarUp ); - if ( iOwner->IsValidChineseInputKey( aKey ) ) - { - if ( AddKeystrokeL( aKey ) ) - { - UpdateEEPContent(); - if ( AutoChangeState() ) - { - popup->SetChangeState( ETrue ); - iOwner->ZhuyinKeyHandler()->SetState( KStateAuto ); - RefreshUI(); - ChangeCbaL(); - iOwner->ChangeState( EEntry ); - } - else - { - RefreshUI(); - ChangeCbaL(); - } - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - else if ( aKey == EPtiKeyStar ) - { - if ( AddToneMarkL() ) - { - UpdateEEPContent(); - if ( AutoChangeState() ) - { - popup->SetChangeState( ETrue ); - iOwner->ZhuyinKeyHandler()->SetState( KStateAuto ); - iOwner->ZhuyinKeyHandler()->Reset(); - ChangeCbaL(); - iOwner->ChangeState( EEntry ); - } - else - { - RefreshUI(); - ChangeCbaL(); - } - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - else if ( aKey == EKeyCBA2 ) - { - iOwner->FepMan()->TryCloseUiL(); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - return ETrue; - } - -// --------------------------------------------------------- -// set high light -// --------------------------------------------------------- -// -void TAknFepInputStateEntryZhuyinPhraseCreation::SetHighLight() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt symbolsShowCount = popup->GetEEPContent().Length(); - TInt chineseCount = popup->ChineseCharsDisped()->Count(); - - editPane->SetHighlight( chineseCount, symbolsShowCount ); - } - -// --------------------------------------------------------- -// set high light -// --------------------------------------------------------- -// -void TAknFepInputStateEntryZhuyinPhraseCreation::SetHighLightMoreThanMax() - { - TInt begPos = BegPosOfMoreThanSeven(); - - if ( begPos ) - { - HighlightMoreThanSeven( begPos ); - } - } - -// --------------------------------------------------------- -// move index of the keystroke left. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEntryZhuyinPhraseCreation::MoveIndexOfKeystrokeLeft() - { - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - CDesCArrayFlat* zhuyinSymbol = popup->ZhuyinSymbols(); - CDesCArrayFlat* chineseArray = popup->ChineseCharsDisped(); - TInt currentIndex = editPane->GetCursorIndexOfKeystroke(); - TInt cursorPosition = editPane->GetCursor(); - - TBool ret = EFalse; - TBuf buf; - TBuf symbolBuf; - - if ( cursorPosition < chineseArray->Count() ) - { - return EFalse; - } - - for ( TInt i = 0; i < zhuyinSymbol->Count(); ++i ) - { - symbolBuf.Append( zhuyinSymbol->MdcaPoint( i ) ); - } - buf.Append( popup->GetEEPContent() ); - - if ( chineseArray->Count() == cursorPosition ) - { - TRAP_IGNORE( ret = CheckHighLightL() ); - if ( ret ) - { - editPane->Reset(); - editPane->SetTextForZhuyin( buf, buf.Length(), - chineseArray->Count(), symbolBuf, - zhuyinSymbol->Count(), ETrue ); - SetHighLight(); - } - else - { - editPane->Reset(); - editPane->SetTextForZhuyin( buf, buf.Length(), - chineseArray->Count(), symbolBuf, - zhuyinSymbol->Count() ); - SetHighLightMoreThanMax(); - } - editPane->SetCursorIndexOfKeystroke( zhuyinSymbol->Count() ); - return ETrue; - } - - if ( 1 == cursorPosition - chineseArray->Count() ) - { - TRAP_IGNORE( ret = CheckHighLightL() ); - if ( ret ) - { - editPane->Reset(); - editPane->SetTextForZhuyin( buf, chineseArray->Count(), - chineseArray->Count(), symbolBuf, zhuyinSymbol->Count(), ETrue ); - SetHighLight(); - } - else - { - editPane->Reset(); - editPane->SetTextForZhuyin( buf, chineseArray->Count(), - chineseArray->Count(), symbolBuf, zhuyinSymbol->Count() ); - SetHighLightMoreThanMax(); - } - editPane->SetCursorIndexOfKeystroke( 0 ); - return ETrue; - } - - - if ( 0 == buf.Mid( - (cursorPosition - 2 ), 1 ).Compare( KDelimiter ) ) - { - editPane->MoveCursorLeft( 2 ); - editPane->SetCursorIndexOfKeystroke( currentIndex - 1 ); - } - else - { - editPane->MoveCursorLeft(); - editPane->SetCursorIndexOfKeystroke( currentIndex - 1 ); - } - return ETrue; - } - -// --------------------------------------------------------- -// move index of the keystroke right. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEntryZhuyinPhraseCreation::MoveIndexOfKeystrokeRight() - { - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - CDesCArrayFlat* zhuyinSymbol = popup->ZhuyinSymbols(); - CDesCArrayFlat* chineseArray = popup->ChineseCharsDisped(); - TInt currentIndex = editPane->GetCursorIndexOfKeystroke(); - TInt cursorPosition = editPane->GetCursor(); - - TBool ret = EFalse; - TBuf buf; - TBuf symbolBuf; - - for ( TInt i = 0; i < zhuyinSymbol->Count(); ++i ) - { - symbolBuf.Append( zhuyinSymbol->MdcaPoint( i ) ); - } - buf.Append( popup->GetEEPContent() ); - - if ( buf.Length() == cursorPosition ) - { - TRAP_IGNORE( ret = CheckHighLightL() ); - if ( ret ) - { - editPane->Reset(); - editPane->SetTextForZhuyin( buf, chineseArray->Count(), - chineseArray->Count(), symbolBuf, 0, ETrue ); - SetHighLight(); - } - else - { - editPane->Reset(); - editPane->SetTextForZhuyin( buf, chineseArray->Count(), - chineseArray->Count(), symbolBuf, 0 ); - SetHighLightMoreThanMax(); - } - editPane->SetCursorIndexOfKeystroke( 0 ); - return ETrue; - } - - if ( chineseArray->Count() == cursorPosition ) - { - editPane->MoveCursorRight(); - editPane->SetCursorIndexOfKeystroke( 1 ); - return ETrue; - } - - if ( buf.Length() == cursorPosition + 1 ) - { - editPane->MoveCursorRight(); - editPane->SetCursorIndexOfKeystroke( zhuyinSymbol->Count() ); - return ETrue; - } - - if ( 0 == buf.Mid( ( cursorPosition ), 1 ).Compare( KDelimiter ) ) - { - editPane->MoveCursorRight( 2 ); - editPane->SetCursorIndexOfKeystroke( currentIndex + 1 ); - } - else - { - editPane->MoveCursorRight(); - editPane->SetCursorIndexOfKeystroke( currentIndex + 1 ); - } - - return ETrue; - } - -// --------------------------------------------------------- -// Initialize State. -// --------------------------------------------------------- -// -void TAknFepInputStateEntryZhuyinPhraseCreation::InitializeState() - { - TRAP_IGNORE( ChangeCbaL() ); - } - -// --------------------------------------------------------- -// check auto change state. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEntryZhuyinPhraseCreation::AutoChangeState() - { - TInt keystrokeCount = - UIContainer()->PinyinPopupWindow()->ZhuyinSymbols()->Count(); - TBool ret = EFalse; - - TRAP_IGNORE( ret = CheckHighLightL() ); - - if ( ( !ret ) && - ( KStateFromKeyDown != iOwner->ZhuyinKeyHandler()->GetState() ) && - ( 0 != keystrokeCount ) ) - { - return ETrue; - } - - return EFalse; - } - -// --------------------------------------------------------- -// Add phrase to DB. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEntryZhuyinPhraseCreation::AddPhraseToDB( const TDesC& aPhraseAdd ) - { - TInt retCode; - TPtiUserDictionaryEntry addUdbEntry(aPhraseAdd); - //Add the phrase to the DB by PTI Engine - retCode = iOwner->PtiEngine()->AddUserDictionaryEntry( addUdbEntry ); - if ( KErrNone != retCode ) - { - return EFalse; - } - - return ETrue; - } - -// --------------------------------------------------------- -// Check high light. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEntryZhuyinPhraseCreation::CheckHighLightL() - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - CDesCArrayFlat* zhuyinSymbol = popup->ZhuyinSymbols(); - CDesCArrayFlat* candidateArray = - UIContainer()->CandidatePane()->CandidateArray(); - TBuf inputBuf; - - inputBuf.Zero(); - - if ( 0 == candidateArray->Count() ) - { - return ETrue; - } - - for ( TInt i = 0; i < zhuyinSymbol->Count(); ++i ) - { - inputBuf.Append( zhuyinSymbol->MdcaPoint( i ) ); - } - - if ( 0 == inputBuf.Length() ) - { - return EFalse; - } - - if ( !iOwner->ZhuyinAnalyser()->AnalyzeL( inputBuf ) ) - { - return ETrue; - } - - return EFalse; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputstateindicphoneticqwerty.cpp --- a/fep/aknfep/src/aknfepuiinputstateindicphoneticqwerty.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateIndicPhoneticQwerty methods. -* -*/ - - - - - - - - - - - - -#include "aknfepuiinputstateindicphoneticqwerty.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepCaseManager.h" -#include "AknFepUiIndicInputManager.h" -#include "AknFepPanic.h" - -#include -#include -#include -#include -#include -#include - -TAknFepInputStateIndicPhoneticQwerty:: -TAknFepInputStateIndicPhoneticQwerty(MAknFepUIManagerStateInterface* aOwner) - :TAknFepInputStateQwerty(aOwner) - { - iState = EInitial; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - ptiengine->ClearCurrentWord(); - TRAP_IGNORE(ptiengine->ActivateLanguageL(KLangHindiPhonetic, - EPtiEngineInputModeIndicPhoneticQwerty));//KLangHindiPhonetic - ptiengine->SetCase(EPtiCaseLower); - } - -TBool TAknFepInputStateIndicPhoneticQwerty::HandleKeyL(TInt aKey, TKeyPressLength aLength) - { - TBool ret = ETrue; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - __ASSERT_DEBUG(ptiengine != NULL,AknFepPanic(EAknFepPanicNoValidPtiEngine)); - - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - __ASSERT_DEBUG(fepMan != NULL,AknFepPanic(EAknFepPanicNoValidFepManager)); - - if(!IsQwertyKey(aKey)|| - fepMan->IsOnlyNumericPermitted()|| - fepMan->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - fepMan->CommitInlineEditL(); - ptiengine->HandleCommandL(EPtiCommandBreakSyllable, NULL ); - ret = TAknFepInputStateQwerty::HandleKeyL(aKey, aLength); - } - else if (aKey == EPtiKeyQwertySpace ||aKey == EStdKeyEnter) - { - TInt languageCode = 0; - MPtiLanguage* curlang = ptiengine->CurrentLanguage(); - if (curlang) - { - languageCode = curlang->LanguageCode(); - } - - // Space clears Explicite halant for North Indian Languages. - if(IsToRemoveHalantForLanguage(languageCode)) - { - RemoveHalantL(TLanguage(languageCode)); - fepMan->CommitInlineEditL(); - } - ptiengine->HandleCommandL(EPtiCommandBreakSyllable, NULL ); - ret = EFalse; - } - else - { - TBool isCharacter = ETrue; - if (!iData) - { - isCharacter = IsCharacterKey(aKey); - } - - HandleCaseChange(aKey,isCharacter); - iData = aKey; - - TBool keyEventHandledByFep = ETrue; - - TPhoneticArg arg; - TBuf destinationbuf; - destinationbuf.Zero(); - - TInt errorcode = 0; - - if(!((aKey == EPtiKeyStar) || - (aKey == EPtiKeyQwerty8 && fepMan->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode)) || - (aKey == EPtiKeyQwertySpace))) - { - TPtrC string = ptiengine->AppendKeyPress((TPtiKey)aKey); - arg.iChar = string[0]; - arg.iDest = & destinationbuf; - errorcode = ptiengine->HandleCommandL(EPtiCommandGetPhoneticText,REINTERPRET_CAST( TAny*, &arg)); - } - else - { - errorcode = ptiengine->HandleCommandL(EPtiCommandBreakSyllable, NULL ); - } - - switch(errorcode) - { - case KErrNone: - { - switch(arg.iState) - { - case EIndicSyllableStateInsideSyllable: - { - if (destinationbuf.Length()) - { - fepMan->NewCharacterSequenceL(destinationbuf, - EIndicInputResponsePhoneticQwertyText); - } - } - break; - case EIndicSyllableStateSyllableBroken: - { - fepMan->CommitInlineEditL(); - if (destinationbuf.Length()) - { - fepMan->NewCharacterSequenceL(destinationbuf, - EIndicInputResponsePhoneticQwertyText); - } - } - break; - default: - break; - } - } - break; - case KErrOverflow: - { - fepMan->NewCharacterSequenceL(destinationbuf,EIndicInputResponsePhoneticQwertyText); - fepMan->CommitInlineEditL(); - ptiengine->HandleCommandL(EPtiCommandClearPhoneticBuffer,NULL); - } - break; - default: - break; - } - ptiengine->ClearCurrentWord(); - CAknFepCaseManager* caseMan = iOwner->CaseMan(); - iOwner->CaseMan()->UpdateCase(ENullNaviEvent); - } - - return ret; - } - -TBool TAknFepInputStateIndicPhoneticQwerty::IsQwertyKey(const TInt aKey) - { - TBool response = EFalse; - if ( (aKey >= EPtiKeyQwertyA && aKey <= EPtiKeyQwertyZ)|| - (aKey == EPtiKeyQwertyFullstop) || - (aKey == EPtiKeyStar || - (aKey == EPtiKeyQwerty8 && - iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyShiftMode))) || - aKey == EPtiKeyQwertySpace || - aKey == EStdKeyEnter) - { - response = ETrue; - } - return response; - } - -void TAknFepInputStateIndicPhoneticQwerty::RemoveHalantL(TLanguage aLanguage) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if(TAknFepUiIndicInputManager::IsCharVirama(fepMan->PreviousChar(), aLanguage)) - { - fepMan->RemovePreviousCharacterL(); - } - } - -TBool TAknFepInputStateIndicPhoneticQwerty::IsToRemoveHalantForLanguage(TInt aLanguage) - { - TBool ret = EFalse; - switch(aLanguage) - { - case KLangHindiPhonetic: - ret = ETrue; - break; - } - return ret; - } - - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputstateinitialindicphoneticmultitap.cpp --- a/fep/aknfep/src/aknfepuiinputstateinitialindicphoneticmultitap.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,467 +0,0 @@ -/* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the TAknFepInputStateInitialIndicPhoneticMultitap methods. -* -*/ - - - - - - - - - - - -#include "aknfepuiinputstateinitialindicphoneticmultitap.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepUIManagerWestern.h" -#include "AknFepUiIndicEnums.h" -#include "AknFepCaseManager.h" -#include "AknFepUiIndicInputManager.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#define PHONETIC_SEPARATOR 0x2e - -const TUint KSpaceChar = 0x0020; -const TUint KQuestionMark = 0x003F; - -#define PTI_CLEAR_CURRENTWORD( A, B ) \ - ( A )->ClearCurrentWord(); \ - ( B ) = ETrue; \ - -const TText KAknFEPLineFeedSymbol = 0x21B2; -const TText KAknFEPMirroredLineFeedSymbol = 0x21B3; - -// ----------------------------------------------------------------------------- -// TAknFepInputStateInitialIndicPhoneticMultitap::TAknFepInputStateInitialIndicPhoneticMultitap - -// C++ default constructor can NOT contain any code, that -// might leave or if it is absolutely necessary then MUST be trapped. -// ----------------------------------------------------------------------------- - -TAknFepInputStateInitialIndicPhoneticMultitap:: -TAknFepInputStateInitialIndicPhoneticMultitap( MAknFepUIManagerStateInterface* aOwner, - TInt aLanguage ) - :TAknFepInputStateInitialMultitapBase( aOwner ) - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - iIsStarKeyPressed = EFalse; - iIndicLanguage = TLanguage(aLanguage); - iIndicPhoneticBuffer.Zero(); - TRAP_IGNORE( ptiengine->ActivateLanguageL(KLangHindiPhonetic, - EPtiEngineInputModeIndicPhoneticMultitap)) - ptiengine->SetCase( EPtiCaseLower ); - iPreviousCommittedChar = NULL; - } - -// ----------------------------------------------------------------------------- -// TAknFepInputStateInitialIndicPhoneticMultitap::HandleKeyL - -// Handles the logic of Indic multitap input. This function first checks the validity -// of the inputed text and then enters it. -// ----------------------------------------------------------------------------- - -TBool TAknFepInputStateInitialIndicPhoneticMultitap::HandleKeyL( TInt aKey, - TKeyPressLength aLength ) - { - TBool result = ETrue; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - CPtiEngine* ptiengine = iOwner->PtiEngine(); - - if(aKey == EKeyBackspace) - { - iIndicPhoneticBuffer.Zero(); - iPhoneticLatinChar = 0; - iPreviousCommittedChar = 0; - } - else if(fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches) - && aKey != EPtiKey0 && aLength != ELongKeyPress) - { - //no matches, so just play tone - fepMan->PlaySound(EAvkonSIDConfirmationTone); - } - else - { - if ( iData && ( iData != aKey ) && (!iIsStarKeyPressed )) - { - //iPrevCharacter = - TransliterateFromLatinL(); - PTI_CLEAR_CURRENTWORD( ptiengine, iIsKeyTimerExpired ) - // = ; - } - iIsStarKeyPressed = EFalse; - if ( aLength == EShortKeyPress ) - { - if ( aKey == EPtiKeyStar ) // Overriding Key - { - ptiengine->HandleCommandL(EPtiCommandBreakSyllable, NULL ); - iIsStarKeyPressed = ETrue; - } - else - { - TPtrC ptiText = ptiengine->AppendKeyPress( ( TPtiKey )aKey ); - iPhoneticLatinChar = ptiText[0]; - - if (IsToTransliterate(iPhoneticLatinChar) - && (!fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches))) - { - TBuf buf; - buf.Copy(iIndicPhoneticBuffer); - buf.Append(ptiText); - fepMan->NewCharacterSequenceL(buf,EIndicInputResponsePhoneticMultitapText); - } - else if(!IsToTransliterate(iPhoneticLatinChar)) - { - TChar prevcharacter(fepMan->PreviousChar()); - - if((fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) && (KQuestionMark == prevcharacter)) - { - fepMan->RemovePreviousCharacterL(); - fepMan->ClearFlag(CAknFepManager::EFlagNoMatches); - ptiengine->HandleCommandL(EPtiCommandBreakSyllable, NULL ); - } - iIndicPhoneticBuffer.Zero(); - if(IsToTransliterate(prevcharacter) && prevcharacter != '0') - fepMan->CommitInlineEditL(); - fepMan->NewCharacterSequenceL(ptiText,EIndicInputResponseNone); - } - } - } - else - { - if(fepMan->PreviousChar() == KQuestionMark) - { - fepMan->RemovePreviousCharacterL(); - } - fepMan->ClearFlag(CAknFepManager::EFlagNoMatches); - - /* Long press of a Key */ - if ( aKey == EPtiKeyStar) - { - - /* Launch the SCT For Indic */ - if( fepMan->EditorHasFreeSpace() ) - { - if (fepMan->IsAbleToLaunchSCT() && !fepMan->EditSubmenuInUse()) - { - fepMan->LaunchSpecialCharacterTableL(); - } - } - } - else - { - //commit the inline text - fepMan->CommitInlineEditL(); - //Remove one character, to remove the Latin character - //appended because of the short key press. This is - //because long key press results in short key press - //and then long key press. - fepMan->RemovePreviousCharacterL(); - //Reset the phonetic state in FEP. So, that any further - //phonetic conversion will start from fresh. - iIndicPhoneticBuffer.SetLength(0); - iPhoneticLatinChar = 0; - iPreviousCommittedChar = 0; - - ptiengine->HandleCommandL(EPtiCommandBreakSyllable, NULL ); - TUint prevchar = fepMan->PreviousChar(ETrue); - if(!((aKey == EPtiKey1) && ((0x0031 == prevchar) || (0x0967 == prevchar)) )) - { - TChar ch( aKey ); - TBuf<1> buf; - buf.Append( ch ); - fepMan->NewCharacterSequenceL( buf, EIndicInputResponseNumber ); - fepMan->CommitInlineEditL(); - PTI_CLEAR_CURRENTWORD( ptiengine, iIsKeyTimerExpired ) - } - } - } - iData = aKey; - } - //hindi phonetic changes - if(iPhoneticLatinChar.IsUpper()) - { - fepMan->HandleIndicCaseL(); - } - return( result ); - } - -// ----------------------------------------------------------------------------- -// TAknFepInputStateInitialIndicPhoneticMultitap::KeyTimerExpired - -// Handles the logic of post keytimerexpired event. This function commits -// the inline editing text to the editor. -// ----------------------------------------------------------------------------- - -void TAknFepInputStateInitialIndicPhoneticMultitap::KeyTimerExpired() - { - TRAP_IGNORE(HandleKeyTimerExpiryL()) - iData = 0; - iOwner->PtiEngine()->ClearCurrentWord(); - if((iPreviousCommittedChar = iOwner->FepMan()->PreviousChar()) == 0x002E) - iPreviousCommittedChar = iOwner->FepMan()->PreviousToPreviousChar(ETrue); - iIsKeyTimerExpired = ETrue; - } - -void TAknFepInputStateInitialIndicPhoneticMultitap::HandleKeyTimerExpiryL() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - if ( !(fepMan->EditorHasFreeSpace() - || fepMan->IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction))) - { - return; - } - if(iData && ( IsToTransliterate(iPhoneticLatinChar) && iData != EPtiKeyStar) - && !fepMan->IsFlagSet(CAknFepManager::EFlagNoMatches)) - { - TransliterateFromLatinL(); - } - else if ( !IsToTransliterate (iPhoneticLatinChar)) - { - MPtiLanguage* ptilang = ptiengine->CurrentLanguage(); - TInt languageCode = (ptilang)? ptilang->LanguageCode() : 0; - // Space clears Explicite halant for North Indian Languages. - if(IsToRemoveHalantForLanguage(languageCode)) - { - RemoveHalantL(TLanguage(languageCode)); - } - ptiengine->HandleCommandL(EPtiCommandBreakSyllable, NULL ); - fepMan->CommitInlineEditL(); - iIndicPhoneticBuffer.Zero(); - } - else - { - iOwner->FepMan()->CommitInlineEditL(); - iIndicPhoneticBuffer.Zero(); - } - } - -void TAknFepInputStateInitialIndicPhoneticMultitap :: TransliterateFromLatinL() - { - TPhoneticArg arg; - TBuf destinationbuf; - destinationbuf.Zero(); - TInt errorcode = 0; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - MPtiLanguage* ptilang = iOwner->PtiEngine()->CurrentLanguage(); - TInt languageCode = (ptilang)? ptilang->LanguageCode() : 0; - - arg.iChar = iPhoneticLatinChar; - arg.iDest = & destinationbuf; - errorcode = ptiengine->HandleCommandL(EPtiCommandGetPhoneticText,REINTERPRET_CAST( TAny*, &arg)); - AknTextUtils::LanguageSpecificNumberConversion(destinationbuf); - switch(errorcode) - { - case KErrNone: - { - if(arg.iState == EIndicSyllableStateSyllableBroken) - { - if(iIndicPhoneticBuffer.Length()) - { - fepMan->CommitInlineEditL(iIndicPhoneticBuffer, iIndicPhoneticBuffer.Length()); - iPreviousCommittedChar = fepMan->PreviousChar(ETrue); - iIndicPhoneticBuffer.Zero(); - } - } - - if (destinationbuf.Length()) - { - if(! ValidatePhoneticInputL(destinationbuf, TLanguage(languageCode))) - { - break; - } - - fepMan->NewCharacterSequenceL(destinationbuf, - EIndicInputResponsePhoneticMultitapText); - - if(TAknFepUiIndicInputManager::IsCharOther(destinationbuf[0], - TLanguage(languageCode)) && 0x002E != destinationbuf[0]) - { - fepMan->CommitInlineEditL(); - iIndicPhoneticBuffer.Zero(); - } - else - { - iIndicPhoneticBuffer.Copy(destinationbuf); - } - } - } - break; - case KErrOverflow: - { - fepMan->NewCharacterSequenceL(destinationbuf,EIndicInputResponsePhoneticMultitapText); - fepMan->CommitInlineEditL(); - ptiengine->HandleCommandL(EPtiCommandClearPhoneticBuffer,NULL); - } - break; - default: - break; - } - iPhoneticLatinChar = 0; - } - -TBool TAknFepInputStateInitialIndicPhoneticMultitap::IsToRemoveHalantForLanguage(TInt aLanguage) - { - TBool ret = EFalse; - switch(aLanguage) - { - case KLangHindiPhonetic: - ret = ETrue; - break; - } - return ret; - } - -inline TBool TAknFepInputStateInitialIndicPhoneticMultitap::IsToTransliterate(TChar& aChar) - { - return !(KAknFEPLineFeedSymbol == aChar || KSpaceChar == aChar); - } - -TBool TAknFepInputStateInitialIndicPhoneticMultitap::ValidatePhoneticInputL(const TDes& aBuf, - TLanguage aLanguage) - { - TBool ret = ETrue; - TUint curChar = 0; - TUint prevChar=0; - TUint len=aBuf.Length(); - TPtr buffer(const_cast( aBuf.Ptr() ),len,len); - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TPtiTextCase newCase = iOwner->PtiEngine()->Case(); - if(! iPreviousCommittedChar) - { - iPreviousCommittedChar = fepMan->PreviousChar(ETrue); - } - while(len) - { - if(buffer[len-1] == 0x94d) - { - len--; - buffer.SetLength(len); - continue; - } - else if(!curChar) - { - curChar = buffer[len-1] ; - len--; - } - else if(!prevChar) - { - prevChar = buffer[len-1] ; - len--; - } - else - break; - } - if(!prevChar) - prevChar = iPreviousCommittedChar; - /* - Multitap does not allow any fall back characters. The phonetic engine does not - check for the fallback characters and FEP has to do it. - */ - //fallback character if Nukta is entered after Nukta - if((TAknFepUiIndicInputManager::IsCharNukta(prevChar,aLanguage) && - TAknFepUiIndicInputManager::IsCharNukta(curChar,aLanguage)) || - - //fallback character if Nukta is entered after Modifier or - //Modifier is entered after Modifier - (TAknFepUiIndicInputManager::IsCharModifier(prevChar,aLanguage) && - (TAknFepUiIndicInputManager::IsCharNukta(curChar,aLanguage) || - TAknFepUiIndicInputManager::IsCharModifier(curChar,aLanguage))) || - - //fallback character if Nukta is entered after Vowel or - //Nukta is entered after matra - ((TAknFepUiIndicInputManager::IsCharAnVowel(prevChar,aLanguage) || - TAknFepUiIndicInputManager::IsCharMatra(prevChar,aLanguage)) && - TAknFepUiIndicInputManager::IsCharNukta(curChar,aLanguage)) || - //fallback character if Nukta is entered after Nukta Consonant - (TAknFepUiIndicInputManager::IsCharNuktaConsonant(prevChar,aLanguage) && - TAknFepUiIndicInputManager::IsCharNukta(curChar,aLanguage)) || - - //fallback character if Nukta entered in an empty editor - (prevChar == PHONETIC_SEPARATOR && - TAknFepUiIndicInputManager::IsCharNukta(curChar,aLanguage)) - ) - { - TBuf<1> buffer; - fepMan->CommitInlineEditL(iIndicPhoneticBuffer, iIndicPhoneticBuffer.Length()); - buffer.Append(KQuestionMark); - if(!fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - fepMan->StartInlineEditL(); - } - fepMan->UpdateInlineEditL(buffer,CAknFepManager::ESingleCharacter); - fepMan->SetFlag(CAknFepManager::EFlagNoMatches); - ret = EFalse; - } - return ret; - } - -TBool TAknFepInputStateInitialIndicPhoneticMultitap::IsInvalidPhoneticCharacter( - TUint aChar, TLanguage aLanguage ) - { - TBool ret = EFalse; - if(TAknFepUiIndicInputManager::IsCharNukta( aChar, aLanguage ) - || TAknFepUiIndicInputManager::IsCharMatra( aChar, aLanguage ) - || TAknFepUiIndicInputManager::IsCharModifier( aChar, aLanguage ) - || TAknFepUiIndicInputManager::IsCharVirama( aChar, aLanguage )) - { - ret = ETrue; - } - return ret; - } - -void TAknFepInputStateInitialIndicPhoneticMultitap::RemoveHalantL(TLanguage aLanguage) - { - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - TBool isLineFeedEntered = fepMan->IsFlagSet(CAknFepManager::EFlagLineFeedCharacter); - if (fepMan->IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction)) - { - fepMan->CommitInlineEditL(); - } - - TInt position = 0; - - if(TAknFepUiIndicInputManager::IsCharVirama(fepMan->PreviousChar(ETrue), aLanguage)) - { - position = 1; - } - else if(!isLineFeedEntered && - TAknFepUiIndicInputManager::IsCharVirama(fepMan->PreviousToPreviousChar(ETrue), aLanguage)) - { - position = 2; - } - if(position) - fepMan->RemoveTextFromEditorL( 1, position-1, EFalse ); - if(fepMan->NextChar() == KSpaceChar) - { - fepMan->AlignLogicalAndVisualCursorL(TTmDocPosSpec::ELeading, EFalse); - } - } - -void TAknFepInputStateInitialIndicPhoneticMultitap::GetPhoneticLatinChar(TChar& aChar)const - { - aChar = iPhoneticLatinChar; - } -//End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputstateminiqwertystrokephrase.cpp --- a/fep/aknfep/src/aknfepuiinputstateminiqwertystrokephrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,565 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TAknFepInputStateEntryMiniQwertyStrokePhrase, - * TAknFepInputStateEditingMiniQwertyStrokePhrase, - * TAknFepUiInputStateCandidateMiniQwertyStrokePhrase methods. - * -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include //CAknWarningNote -#include - -// User includes -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "aknfepuictrleditpane.h" //phrase creation -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManager.h" -#include "aknfepuiinputstateminiqwertystrokephrase.h" -const TInt KManualChangeState = 0; - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryMiniQwertyStrokePhrase::TAknFepInputStateEntryMiniQwertyStrokePhrase -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepInputStateEntryMiniQwertyStrokePhrase::TAknFepInputStateEntryMiniQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ): - TAknFepInputMiniQwertyStrokePhraseBase( aOwner, aUIContainer ) - { - iState = EEntry; - UIContainer()->SetLayout( MAknFepUICtrlContainerChinese::ELayoutKeystroke ); - UIContainer()->FocusCandidatePane( ETrue ); - UIContainer()->CandidatePane()->SelectFirstPhrase(); - UIContainer()->CandidatePane()->ShowCandidateOrdinals( EFalse ); - UIContainer()->SetFepMan( iOwner->FepMan() ); - // so that it could handle EKeyCBA1 - iOwner->FepMan()->EntryPhrase( ETrue ); - RefreshUI(); - } -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryMiniQwertyStrokePhraseCreation::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEntryMiniQwertyStrokePhrase::HandleKeyL( TInt aKey, - TKeyPressLength aLength ) - { - TBool ret = ETrue; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - switch ( aKey ) - { - case EStdKeyLeftFunc: //chr key - case EKeyLeftShift: - case EKeyRightShift: - case EKeyLeftCtrl: - case EKeyRightCtrl: - case EKeyRightFunc://fn - case EKeyLeftFunc: // fn - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - break; - } - case EStdKeyDevice1: // cancel key - { - iOwner->FepMan()->TryCloseUiL(); - break; - } - case EStdKeyEnter: - case EStdKeySingleQuote: // The "&" key - { - iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick ); - break; - } - case EStdKeyUpArrow: - { - if ( candidatePane->IsFirstPage() ) - { - UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( KManualChangeState ); - iOwner->ChangeState( EMiniQwertyEdit ); - } - else - { - candidatePane->PreviousCandidatePage(); - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirst(); - UpdateIndicator(); - } - break; - } - case EStdKeyDownArrow: - { - ret = TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL( aKey, aLength ); - break; - } - case EStdKeyRightArrow: - { - if ( candidatePane->VisibleCandidateCount()!= 1 ) - { - uiContainer->EditPaneWindow()->SetCandidateRefreshFlag( ETrue ); - iOwner->ChangeState( ECandidate ); - candidatePane->SelectNext(); - } - break; - } - case EStdKeyLeftArrow: - { - if ( candidatePane->VisibleCandidateCount()!= 1 ) - { - uiContainer->EditPaneWindow()->SetCandidateRefreshFlag( ETrue ); - iOwner->ChangeState( ECandidate ); - TInt numbertotal = UIContainer()->CandidatePane()->VisibleCandidateCount(); - UIContainer()->CandidatePane()->SelectIndex( numbertotal-1 ); - } - break; - } - case EStdKeyDevice0: //select key - case EStdKeyDevice3: // msk - { - TPtrC text = uiContainer->CandidatePane()->CurrentPhraseCandidate(); - if ( text.Length() && aLength != ELongKeyPress ) - { - if ( !CommitInlineEEPL( text ) ) - { - DoActionAfterCommit(); - } - else - { - if ( CheckFirstGroupStroke() ) - { - iOwner->ChangeState( ECandidate ); - } - else - { - uiContainer->EditPaneWindow()->SetAutoChangeStateFlag( EAutoChangeStateFromInput ); - iOwner->ChangeState( EMiniQwertyEdit ); - } - } - } - break; - } - default: - // chr + character - if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) ) - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - else if ( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || CAknFepFnKeyManager::EFnKeyLock - == iOwner->FepMan()->FnKeyState() || CAknFepFnKeyManager::EFnKeyDown - == iOwner->FepMan()->FnKeyState() ) //fn play error tone - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - else - { - ret = TAknFepInputMiniQwertyStrokePhraseBase::HandleKeyL( - aKey, aLength ); - } - break; - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyStrokePhrase::TAknFepInputStateEditingMiniQwertyStrokePhrase -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepInputStateEditingMiniQwertyStrokePhrase::TAknFepInputStateEditingMiniQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ): - TAknFepInputMiniQwertyStrokePhraseBase( aOwner, aUIContainer ) - { - iState = EMiniQwertyEdit; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - RefreshUI(); - uiContainer->FocusCandidatePane( EFalse ); - uiContainer->CandidatePane()->ShowCandidateOrdinals( EFalse ); - } -// --------------------------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyStrokePhrase::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEditingMiniQwertyStrokePhrase::HandleKeyL( TInt aKey, - TKeyPressLength aLength ) - { - TBool ret = ETrue; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - - //handle chr up when composition key with chr end - //avoid closing UI - if ( iOwner->FepMan()->GetComposChrFlag() && aKey == EStdKeyLeftFunc ) - { - iOwner->FepMan()->SetComposChrFlag( EFalse ); - return ETrue; - } - switch ( aKey ) - { - case EKeyLeftShift: - case EKeyRightShift: - case EKeyLeftCtrl: - case EKeyRightCtrl: - case EKeyRightFunc://fn - case EKeyLeftFunc: // fn - { - if ( !uiContainer->EditPaneWindow()->GetAutoChangeStateFlag() - || uiContainer->EditPaneWindow()->PhraseArray()->Count() != 0) - { - iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick ); - } - else - { - iOwner->FepMan()->TryCloseUiL(); - ret = EFalse; - } - break; - } - case EStdKeyLeftFunc: //chr key - { - iOwner->FepMan()->TryCloseUiL(); - ret =EFalse; - } - // inactive - case EStdKeyUpArrow: - { - break; - } - //if the canidate is empty ,inactive;else candiniate selecting state - case EStdKeyDownArrow: - { - if ( 0 != candidatePane->VisibleCandidateCount() ) - { - uiContainer->EditPaneWindow()->SetChangeState( ETrue ); - iOwner->ChangeState( ECandidate ); - } - break; - } - case EStdKeyDevice1: //"cancle" key - { - iOwner->FepMan()->TryCloseUiL(); - break; - } - case EStdKeySingleQuote: - case EStdKeyEnter: - { - iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick ); - break; - } - default: - // chr + character - if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) ) - { - iOwner->FepMan()->SetComposChrFlag( ETrue ); - if ( !uiContainer->EditPaneWindow()->GetAutoChangeStateFlag() - || uiContainer->EditPaneWindow()->PhraseArray()->Count() != 0) - { - iOwner->FepMan()->PlaySound(EAvkonSIDStandardKeyClick); - return ETrue; - } - else - { - iOwner->FepMan()->TryCloseUiL(); - return EFalse; - } - } - else - { - ret = TAknFepInputMiniQwertyStrokePhraseBase::HandleKeyL( - aKey, aLength); - break; - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateMiniQwertyStrokePhrase::TAknFepUiInputStateCandidateMiniQwertyStrokePhrase -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepUiInputStateCandidateMiniQwertyStrokePhrase::TAknFepUiInputStateCandidateMiniQwertyStrokePhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ): - TAknFepInputMiniQwertyStrokePhraseBase( aOwner, aUIContainer ) - { - iState = ECandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->FocusCandidatePane( ETrue ); - uiContainer->CandidatePane()->ShowCandidateOrdinals( ETrue ); - uiContainer->CandidatePane()->SelectFirstPhrase(); - if ( uiContainer->EditPaneWindow()->GetCandidateRefreshFlag() ) - { - uiContainer->EditPaneWindow()->DisableCursor(); - uiContainer->EditPaneWindow()->SetCandidateRefreshFlag( EFalse ); - } - else - { - RefreshUI(); - } - } -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateMiniQwertyStrokePhrase::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepUiInputStateCandidateMiniQwertyStrokePhrase::HandleKeyL( - TInt aKey, TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TInt selected = uiContainer->CandidatePane()->SelectedIndex(); - TInt numbertotal = uiContainer->CandidatePane()->VisibleCandidateCount(); - TBool ret = ETrue; - - if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) - || iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed ) ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - - switch ( aKey ) - { - case EStdKeyBackspace: - { - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->EditPaneWindow()->SetAutoChangeStateFlag( KManualChangeState ); - uiContainer->EditPaneWindow()->SetChangeState( ETrue ); - iOwner->ChangeState( EMiniQwertyEdit ); - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL ); - } - break; - case EStdKeyLeftArrow: - { - if ( selected == 0 ) - { - uiContainer->CandidatePane()->SelectIndex( numbertotal-1 ); - } - else - { - uiContainer->CandidatePane()->SelectIndex( selected - 1 ); - } - } - break; - case EStdKeyRightArrow: - { - if ( selected == numbertotal-1 ) - { - uiContainer->CandidatePane()->SelectIndex( 0 ); - } - else - { - uiContainer->CandidatePane()->SelectIndex( selected + 1 ); - } - } - break; - case EStdKeyDownArrow: - { - ret = TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL( aKey, aLength ); - } - break; - case EStdKeyUpArrow: - { - if ( uiContainer->CandidatePane()->IsFirstPage() ) - { - uiContainer->EditPaneWindow()->SetAutoChangeStateFlag( KManualChangeState ); - iOwner->ChangeState( EMiniQwertyEdit ); - } - else - { - uiContainer->CandidatePane()->PreviousCandidatePage(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->CandidatePane()->SelectFirstPhrase(); - UpdateIndicator(); - } - } - break; - case EStdKeyDevice0: - case EStdKeyDevice3: - { - TPtrC text = uiContainer->CandidatePane()->CurrentPhraseCandidate(); - if ( text.Length() && aLength != ELongKeyPress ) - { - if ( !CommitInlineEEPL( text ) ) - { - DoActionAfterCommit(); - } - else - { - if ( CheckFirstGroupStroke() ) - { - RefreshUI(); - uiContainer->CandidatePane()->SelectFirstPhrase(); - } - else - { - uiContainer->EditPaneWindow()->SetAutoChangeStateFlag( EAutoChangeStateFromCandidate ); - iOwner->ChangeState( EMiniQwertyEdit ); - } - } - } - } - break; - case EStdKeyEnter: - case EKeyLeftCtrl: - case EKeyRightCtrl: - case EKeyLeftShift: - case EStdKeySpace: - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - break; -// case EKeyRightShift: // need to check later -// { -// return ret; -// } -// break; - default: - return TAknFepInputMiniQwertyStrokePhraseBase::HandleKeyL( aKey, - aLength ); - } - return ret; - } -// --------------------------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyStrokePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEditingMiniQwertyStrokePhrase::HandleCommandL( - TInt aCommandId ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer( ); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - if ( !uiContainer->EditPaneWindow()->GetAutoChangeStateFlag( ) || uiContainer->EditPaneWindow()->PhraseArray()->Count( ) != 0 ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDStandardKeyClick ); - } - else - { - iOwner->FepMan()->TryCloseUiL( ); - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } - - -// --------------------------------------------------------------------------- -// TAknFepInputStateEntryMiniQwertyStrokePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEntryMiniQwertyStrokePhrase::HandleCommandL( - TInt aCommandId ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TPtrC text = uiContainer->CandidatePane()->CurrentPhraseCandidate(); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - if ( text.Length() ) - { - if ( !CommitInlineEEPL( text ) ) - { - DoActionAfterCommit(); - } - else - { - if ( CheckFirstGroupStroke() ) - { - iOwner->ChangeState( ECandidate ); - } - else - { - uiContainer->EditPaneWindow()->SetAutoChangeStateFlag( - EAutoChangeStateFromInput ); - iOwner->ChangeState( EMiniQwertyEdit ); - } - } - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } - -// --------------------------------------------------------------------------- -// TAknFepUiInputStateCandidateMiniQwertyStrokePhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepUiInputStateCandidateMiniQwertyStrokePhrase::HandleCommandL( - TInt aCommandId ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TPtrC text = uiContainer->CandidatePane()->CurrentPhraseCandidate(); - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - if ( text.Length() ) - { - if ( !CommitInlineEEPL( text ) ) - { - DoActionAfterCommit(); - } - else - { - if ( CheckFirstGroupStroke() ) - { - RefreshUI(); - uiContainer->CandidatePane()->SelectFirstPhrase(); - } - else - { - uiContainer->EditPaneWindow()->SetAutoChangeStateFlag( - EAutoChangeStateFromCandidate ); - iOwner->ChangeState( EMiniQwertyEdit ); - } - } - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputstateminiqwertyzhuyinphrase.cpp --- a/fep/aknfep/src/aknfepuiinputstateminiqwertyzhuyinphrase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1296 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TAknFepInputStateEntryMiniQwertyZhuyinPhrase, - * TAknFepInputStateEditingMiniQwertyZhuyinPhrase, - * TAknFepUiInputStateCandidateMiniQwertyZhuyinPhrase methods. - * -*/ - - - - - - - - - - - - -// System includes -#include -#include -#include //CAknWarningNote -#include - -// User includes -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "aknfepuictrleditpane.h" //phrase creation -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "AknFepUIManagerStateInterface.h" -#include "AknFepManager.h" -#include "aknfepuiinputstateminiqwertyzhuyinphrase.h" -#include "aknfepinputstateminiqwertyzhuyinkeymap.h" - -const TInt KMaxKeystrokeCount = 31; -const TInt KMaxKeystrokeSize = 130; -const TInt KMaxPhraseLength = 7; -const TInt KMinCandidateCount = 1; -const TInt KKeystrokeMaxLength = 4; -//const TInt KTonemarkCount = 5; - -const TUint16 KToneMark1 = 0x0020; -const TUint16 KToneMark2 = 0x02CA; -const TUint16 KToneMark3 = 0x02c7; -const TUint16 KToneMark4 = 0x02CB; -const TUint16 KToneMark5 = 0x02D9; - -_LIT(KLeftBracket, "("); -_LIT(KRightBracket, ")"); -_LIT(KReplace, ""); - -_LIT( KDelimiter, "'"); -struct TToneZhuYinMap - { - TUint16 iValue; - TInt iInputTone; - }; -const TToneZhuYinMap ZhuyinToneMap[] = - { - {KToneMark1, 1}, - {KToneMark2, 2}, - {KToneMark3, 3}, - {KToneMark4, 4}, - {KToneMark5, 5} - }; -// --------------------------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::TAknFepInputStateEditingMiniQwertyZhuyinPhrase -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepInputStateEditingMiniQwertyZhuyinPhrase::TAknFepInputStateEditingMiniQwertyZhuyinPhrase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ) : - TAknFepInputMiniQwertyZhuyinPhraseBase( aOwner, aUIContainer) - { - iState = EMiniQwertyEdit; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->FocusCandidatePane( EFalse ); - uiContainer->CandidatePane()->ShowCandidateOrdinals( EFalse ); - uiContainer->SetLayout( MAknFepUICtrlContainerChinese::ELayoutPhraseCreation ); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->ShowVerticalScrollArrows( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->InputPane()->SetOverrideFontId( 0 ); - // in the case that we are coming back to the input pane from the candidate pane, - // we need to ensure that the current selection is selected correctly - ImplicityShowInfo( ETrue ); - // so that it could handle EKeyCBA1 - iOwner->FepMan()->EntryPhrase( ETrue ); - RefreshEditPane(); - uiContainer->PinyinPopupWindow()->SetNoneHighlighted(); - TRAP_IGNORE( ChangeCbaL() ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEditingMiniQwertyZhuyinPhrase::HandleKeyL( TInt aKey, - TKeyPressLength aLength ) - { - TBool ret = ETrue; - TBool state = ETrue; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - CDesCArrayFlat* phraseArray = editPane->PhraseArray(); - - if ( iOwner->FepMan()->GetComposChrFlag() && aKey == EStdKeyLeftFunc ) - { - iOwner->FepMan()->SetComposChrFlag( EFalse ); - return ret; - } - - switch ( aKey ) - { - case EStdKeyLeftShift: - case EStdKeyRightShift: - case EStdKeyLeftCtrl: - case EStdKeyRightCtrl: - case EStdKeyRightFunc://fn - case EStdKeyLeftFunc: //chr key - case EStdKeyUpArrow: - case EKeyRightFunc: - case EKeyLeftFunc: - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - break; - //if the canidate is empty ,inactive;else candiniate selecting state - case EStdKeyDownArrow: - { - if ( 0 != candidatePane->VisibleCandidateCount() && phraseArray->Count() < 7 ) - { - uiContainer->EditPaneWindow()->SetChangeState( ETrue ); - iOwner->ChangeState( EZhuyinSpelling ); - } - } - break; - case EStdKeyRightArrow: - MoveCursorRight(); - break; - case EStdKeyLeftArrow: - MoveCursorLeft(); - break; - case EStdKeyDevice1: //"cancle" key - iOwner->FepMan()->TryCloseUiL(); - break; - case EStdKeyEnter: - CommitContentL( EFalse ); - break; - case EStdKeyDevice0: - case EStdKeyDevice3: - - if ( editPane->IsChangeState() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - if ( state ) - { - HandleCommitL(); - } - break; - case EStdKeyBackspace: - { - if ( editPane->IsChangeState() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - if ( state ) - { - HandleKeyBackspaceL( aLength ); - } - } - break; - default: - { - if ( aLength == EShortKeyPress && keystrokeArray->Count() < KMaxKeystrokeCount && - !iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) && - phraseArray->Count() < KMaxPhraseLength && - ( iOwner->IsValidChineseInputKeyQwerty( aKey ) || aKey == EStdKeySpace ) ) - { - AddKeystrokeL( aKey ); - RefreshUI(); - ShowEEPInfo(); - ChangeCbaL(); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - break; - } - return ret; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::AddKeystrokeL -// Add key stroke. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateEditingMiniQwertyZhuyinPhrase::AddKeystrokeL( TInt aKey ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - RArray* keycodeArray = editPane->KeycodeArray(); - TInt phraseCount = editPane->PhraseArray()->Count(); - TInt showKeystrokeCount = editPane->ShowKeystrokeArray()->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - - if ( phraseCount + showKeystrokeCount >= KMaxKeystrokeCount - 1 ) - { - return EFalse; - } - TBuf keystroke; - - TAknFepInputStateMiniQwertyZhuyinKeyMap::GetKeyStroke( - iOwner->PtiEngine(), aKey, keystroke ); - - if ( index >= keystrokeArray->Count() ) - { - keycodeArray->Append( aKey ); - keystrokeArray->AppendL( keystroke ); - editPane->SetCursorIndexOfKeystroke( keystrokeArray->Count() ); - } - else - { - keycodeArray->Insert( aKey, index ); - keystrokeArray->InsertL( index, keystroke ); - editPane->SetCursorIndexOfKeystroke( index + 1 ); - } - editPane->SetNeedClearDeliberateSelection( ETrue ); - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::RevertPhraseToKeystrokeL -// Revert the phrase to keystroke. -// --------------------------------------------------------- -// -void TAknFepInputStateEditingMiniQwertyZhuyinPhrase::RevertPhraseToKeystrokeL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray(); - CDesCArrayFlat* phrase = editPane->PhraseArray(); - RArray* keycodeArray = editPane->KeycodeArray(); - RArray* phraseKeycode = editPane->PhraseKeycodeArray(); - CDesCArrayFlat* phraseStroke = editPane->PhraseShowKeyStrokeArray(); - TBuf buf; - - if ( (phrase->Count() == 0 ) || (phraseStroke->Count() == 0 ) ) - { - return; - } - - buf.Append( phraseStroke->MdcaPoint( phraseStroke->Count() - 1 ) ); - - TInt insertIndex = 0; - while ( buf.Length() != 0 ) - { - TBuf strokeBuf; - TInt index = buf.Find( KRightBracket ); - if ( index != KErrNotFound ) - { - strokeBuf.Copy( buf.Left( index + 1 ) ); - keystrokeArray->InsertL( insertIndex, strokeBuf ); - buf.Replace( 0, index + 1, KNullDesC ); - } - else - { - keystrokeArray->InsertL( insertIndex, buf ); - insertIndex = insertIndex + 1; - break; - } - insertIndex = insertIndex + 1; - } - phrase->Delete( phrase->Count() - 1 ); - phraseStroke->Delete( phraseStroke->Count() - 1 ); - - if ( insertIndex > phraseKeycode->Count() ) - { - insertIndex = keycodeArray->Count(); - } - - for ( TInt i = 0; i < insertIndex ; ++i ) - { - keycodeArray->Insert( (*phraseKeycode)[phraseKeycode->Count() - 1 ],0 ); - phraseKeycode->Remove( phraseKeycode->Count() - 1 ); - } - - TInt keystrokeCount = keystrokeArray->Count(); - TInt lenth = phrase->Count() + keystrokeCount; - TInt deleteCount = lenth - KMaxKeystrokeCount; - - for (TInt i = 0; i < deleteCount; ++i ) - { - keycodeArray->Remove( keycodeArray->Count() - 1 ); - keystrokeArray->Delete( keystrokeArray->Count() - 1 ); - } - editPane->SetCursorIndexOfKeystroke( insertIndex ); - keystrokeArray->Compress(); - phrase->Compress(); - phraseStroke->Compress(); - } - -// --------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::AddPhraseToDB -// Add phrase to DB. -// --------------------------------------------------------- -// -void TAknFepInputStateEditingMiniQwertyZhuyinPhrase::AddPhraseToDB( - const TDesC& aPhraseAdd ) - { - TPtiUserDictionaryEntry addUdbEntry(aPhraseAdd); - //Add the phrase to the DB by PTI Engine - iOwner->PtiEngine()->AddUserDictionaryEntry( addUdbEntry ); - } - -// --------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::MoveCursorLeft -// Move the cursor to Left. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEditingMiniQwertyZhuyinPhrase::MoveCursorLeft() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keyStrokeArray = editPane->KeystrokeArray(); - TInt keystrokeCount = keyStrokeArray->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TInt phraseCount = editPane->PhraseArray()->Count(); - - if ( EMiniQwertyEdit != iState ) - { - return EFalse; - } - if ( 0 == keystrokeCount ) - { - return EFalse; - } - - if ( 0 == index ) - { - editPane->SetCursorIndexOfKeystroke( keystrokeCount ); - ShowEEPInfo(); - } - else if ( phraseCount > 0 && 1 == index ) - { - editPane->SetCursorIndexOfKeystroke( 0 ); - ShowEEPInfo(); - } - else - { - TInt stride = keyStrokeArray->MdcaPoint( index - 1 ).Length(); - editPane->MoveCursorLeft( stride ); - editPane->SetCursorIndexOfKeystroke( index - 1 ); - } - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::MoveCursorRight -// Move the cursor to Right. -// --------------------------------------------------------- -// -TBool TAknFepInputStateEditingMiniQwertyZhuyinPhrase::MoveCursorRight() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - TInt keystrokeCount = keystroke->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - - if ( EMiniQwertyEdit != iState ) - { - return EFalse; - } - if ( 0 == keystrokeCount ) - { - return EFalse; - } - if ( index >= keystrokeCount ) - { - editPane->SetCursorIndexOfKeystroke( 0 ); - ShowEEPInfo(); - } - else - { - TInt stride = editPane->KeystrokeArray()->MdcaPoint( index ).Length(); - editPane->MoveCursorRight( stride ); - editPane->SetCursorIndexOfKeystroke( index + 1 ); - } - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::HandleKeyBackspace -// Handle Key Backspace -// --------------------------------------------------------- -// -void TAknFepInputStateEditingMiniQwertyZhuyinPhrase::HandleKeyBackspaceL( - TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - - CDesCArrayFlat* keyStrokeArray = editPane->KeystrokeArray(); - RArray* keycodeArray = editPane->KeycodeArray(); - TInt keystrokeCount = keyStrokeArray->Count(); - TInt phraseCount = editPane->PhraseArray()->Count(); - - TInt cursorOfkeystrokeIndex = editPane->GetCursorIndexOfKeystroke(); - - if ( 1 == cursorOfkeystrokeIndex ) - { - editPane->Reset(); - } - - if ( cursorOfkeystrokeIndex > 0 && - ( keystrokeCount > 1 || phraseCount > 0 ) ) - { - keycodeArray->Remove( cursorOfkeystrokeIndex - 1 ); - keyStrokeArray->Delete( cursorOfkeystrokeIndex - 1 ); - editPane->SetCursorIndexOfKeystroke( cursorOfkeystrokeIndex - 1 ); - } - else if ( phraseCount > 0 && 0 == cursorOfkeystrokeIndex ) - { - RevertPhraseToKeystrokeL(); - } - else if ( 1 == cursorOfkeystrokeIndex ) - { - iOwner->FepMan()->TryCloseUiL(); - if ( aLength == ELongKeyPress ) - { - iOwner->FepMan()->SetLongClearAfterCloseUI( ETrue ); - } - return; - } - else - { - return; - } - editPane->SetNeedClearDeliberateSelection( ETrue ); - RefreshUI(); - ShowEEPInfo(); - ChangeCbaL(); - } - -// --------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::CommitContentL -// Commit content -// --------------------------------------------------------- -// -void TAknFepInputStateEditingMiniQwertyZhuyinPhrase::CommitContentL( - TBool aAddUDB ) - { - TBuf currentText; - MAknFepManagerUIInterface* fepMan = iOwner->FepMan(); - MAknFepUICtrlEditPane* editpane = UIContainer()->EditPaneWindow(); - CDesCArrayFlat* phraseArray = editpane->PhraseArray(); - CDesCArrayFlat* keystrokeArray = editpane->KeystrokeArray(); - TInt phraseCount = phraseArray->Count(); - TInt keyStrokeCount = keystrokeArray->Count(); - - for (TInt i = 0; i < phraseCount; i++ ) - { - currentText.Append( phraseArray->MdcaPoint( i ) ); - } - for (TInt i = 0; i < keyStrokeCount; i++ ) - { - currentText.Append( keystrokeArray->MdcaPoint( i ) ); - } - - if ( currentText.Length() ) - { - while (currentText.Find( KLeftBracket ) >= 0 ) - { - currentText.Replace( currentText.Find( KLeftBracket ), 1, - KReplace ); - } - while (currentText.Find( KRightBracket ) > 0 ) - { - currentText.Replace( currentText.Find( KRightBracket ), 1, - KReplace ); - } - fepMan->NewTextL( currentText ); - fepMan->CommitInlineEditL(); - } - UIContainer()->EditPaneWindow()->ResetAllArray(); - UIContainer()->EditPaneWindow()->SetPhraseCreationFlag( EFalse ); - if ( fepMan->IsFlagSet( CAknFepManager::EFlagEditorFull ) ) - { - fepMan->ClearFlag( CAknFepManager::EFlagEditorFull ); - } - if ( aAddUDB ) - { - AddPhraseToDB( currentText ); - } - fepMan->TryCloseUiL(); - } - -// --------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::HandleCommitL -// Handle commit action -// --------------------------------------------------------- -// -void TAknFepInputStateEditingMiniQwertyZhuyinPhrase::HandleCommitL() - { - TBuf currentText; - MAknFepUICtrlEditPane* editpane = UIContainer()->EditPaneWindow(); - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - CDesCArrayFlat* phraseArray = editpane->PhraseArray(); - CDesCArrayFlat* keystrokeArray = editpane->KeystrokeArray(); - TInt phraseCount = phraseArray->Count(); - TInt keyStrokeCount = keystrokeArray->Count(); - - if ( 0 == candidatePane->VisibleCandidateCount() && ( 1 == phraseCount - || keyStrokeCount > 0 ) ) - { - return; - } - if ( 0 != candidatePane->VisibleCandidateCount() && phraseCount < KMaxPhraseLength ) - { - UIContainer()->EditPaneWindow()->SetChangeState( ETrue ); - iOwner->ChangeState( EZhuyinSpelling ); - return; - } - CommitContentL( ETrue ); - } - -// --------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::RefreshUI -// Refresh UI if necessary -// --------------------------------------------------------- -// -void TAknFepInputStateEditingMiniQwertyZhuyinPhrase::RefreshUI() - { - MAknFepUICtrlEditPane* editpane = UIContainer()->EditPaneWindow(); - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - CDesCArrayFlat* showKeystroke = editpane->ShowKeystrokeArray(); - TBuf preValidKeystroke; - TInt preValidKeystrokeCount = showKeystroke->Count(); - for (TInt i=0; i < preValidKeystrokeCount; i++ ) - { - preValidKeystroke.Append( showKeystroke->MdcaPoint( i ) ); - } - GetValidKeystroke(); - TBuf validKeystroke; - TInt validKeystrokeCount = showKeystroke->Count(); - for (TInt i=0; i < validKeystrokeCount; i++ ) - { - validKeystroke.Append( showKeystroke->MdcaPoint( i ) ); - } - if ( preValidKeystroke.Compare( validKeystroke ) != 0 ) - { - RefreshSpellingPane( ETrue ); - RefreshCandidatePane(); - } - else if ( popup->CurrentSelection() != 0 ) - { - RefreshCandidatePane(); - } - UpdateIndicator(); - } - -// --------------------------------------------------------- -// Init the show info -// --------------------------------------------------------- -// -void TAknFepInputStateEditingMiniQwertyZhuyinPhrase::ImplicityShowInfo( - TBool aGetScreenCoordinates ) - { - TRAP_IGNORE( ImplicityShowInfoL( aGetScreenCoordinates ) ); - } - -// --------------------------------------------------------- -// Init the show info -// --------------------------------------------------------- -// -void TAknFepInputStateEditingMiniQwertyZhuyinPhrase::ImplicityShowInfoL( - TBool aGetScreenCoordinates ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - // get cursor position - TPoint baseLine = TPoint( 0, 0 ); - TInt height = 0; - TInt ascent = 0; - if ( aGetScreenCoordinates ) - { - iOwner->FepMan()->GetScreenCoordinatesL( baseLine, height, ascent ); - uiContainer->SetContainerPosition( baseLine, height ); - } - editPane->ActiveCursor(); - } - -// --------------------------------------------------------- -// Init the show info -// --------------------------------------------------------- -// -void TAknFepInputStateEditingMiniQwertyZhuyinPhrase::ShowEEPInfo() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = editPane->KeystrokeArray(); - CDesCArrayFlat* phrase = editPane->PhraseArray(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TInt cursorPosInKeystroke = 0; - - TBuf buf; - - for (TInt i = 0; i < phrase->Count(); ++i ) - { - buf.Append( phrase->MdcaPoint( i ) ); - } - - for (TInt i = 0; i < keystroke->Count(); ++i ) - { - buf.Append( keystroke->MdcaPoint( i ) ); - } - - for (TInt i = 0; i < index; ++i ) - { - cursorPosInKeystroke = cursorPosInKeystroke + keystroke->MdcaPoint( i ).Length(); - } - - editPane->SetText( buf, phrase->Count() + cursorPosInKeystroke, ETrue ); - if ( editPane->GetEffictiveLength() == 0 ) - { - editPane->SetHighlight( phrase->Count(), buf.Length() ); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateSpellingMiniQwertyZhuyin::TAknFepInputStateSpellingMiniQwertyZhuyin -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepInputStateSpellingMiniQwertyZhuyin::TAknFepInputStateSpellingMiniQwertyZhuyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ) : - TAknFepInputMiniQwertyZhuyinPhraseBase( aOwner, aUIContainer) - { - iState = EZhuyinSpelling; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->FocusCandidatePane( EFalse ); - uiContainer->CandidatePane()->ShowCandidateOrdinals( EFalse ); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->ShowVerticalScrollArrows( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->InputPane()->SetOverrideFontId( 0 ); - uiContainer->SetLayout( MAknFepUICtrlContainerChinese::ELayoutPhraseCreation ); - uiContainer->EditPaneWindow()->DeactiveCursor(); - RefreshUI(); - // however we also need to clear the deliberate selection, in case we are not - // coming back to the input pane from the candidate pane - ClearDeliberateSelection(); - UpdateIndicator(); - - iOwner->PtiEngine()->SetInputMode( EPtiEngineZhuyinPhraseQwerty ); - iOwner->PtiEngine()->SetCase( EPtiCaseLower ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateSpellingMiniQwertyZhuyin::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateSpellingMiniQwertyZhuyin::HandleKeyL( TInt aKey, - TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TBool ret = ETrue; - - if ( CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || CAknFepFnKeyManager::EFnKeyLock - == iOwner->FepMan()->FnKeyState() || CAknFepFnKeyManager::EFnKeyDown - == iOwner->FepMan()->FnKeyState() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return ETrue; - } - else if ( iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagShiftKeyDepressed ) - || iOwner->FepMan()->IsFlagSet( CAknFepManager::EFlagQwertyChrKeyDepressed ) ) - { - return ETrue; - } - - switch ( aKey ) - { - case EPtiKeyQwertyE: - case EPtiKeyQwertyR: - case EPtiKeyQwertyY: - case EPtiKeyQwertyU: - case EStdKeyLeftFunc: - { - if ( aLength == EShortKeyPress ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - } - break; - case EKeyRightFunc: - case EKeyLeftShift: - case EKeyLeftCtrl: - case EKeyRightCtrl: - case EStdKeyEnter: - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - break; - case EStdKeyBackspace: - case EStdKeyUpArrow: - { - TBool state = ETrue; - if ( editPane->IsChangeState() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - if ( state ) - { - editPane->SetChangeState( ETrue ); - iOwner->ChangeState( EMiniQwertyEdit ); - } - } - break; - case EStdKeyDevice1: - { - iOwner->FepMan()->TryCloseUiL(); - } - break; - case EStdKeyRightArrow: - { - if ( popup->IsEnabled() ) - { - if ( popup->SelectNextPhrase() ) - { - RefreshVaildKeyStroke(); - RefreshCandidatePane(); - RefreshSpellingPane(); - RefreshEditPane(); - UpdateIndicator(); - } - } - } - break; - case EStdKeyLeftArrow: - { - if ( popup->IsEnabled() ) - { - if ( popup->SelectPrevPhrase() ) - { - RefreshVaildKeyStroke(); - RefreshCandidatePane(); - RefreshSpellingPane(); - RefreshEditPane(); - UpdateIndicator(); - } - } - } - break; - case EStdKeyDownArrow: - case EStdKeyDevice3: - case EStdKeyDevice0: - { - TBool state = ETrue; - if ( editPane->IsChangeState() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - if ( state ) - { - if ( popup->IsEnabled() ) - { - popup->Enable( EFalse ); - } - editPane->SetChangeState( ETrue ); - iOwner->ChangeState( EZhuyinCandidate ); - } - } - break; - default: - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return TAknFepInputMiniQwertyZhuyinPhraseBase::HandleKeyL( - aKey, aLength ); - } -// break; - } - return ret; - } - -// --------------------------------------------------------- -// TAknFepInputStateSpellingMiniQwertyZhuyin::RefreshUI -// Refresh UI if necessary -// --------------------------------------------------------- -// -void TAknFepInputStateSpellingMiniQwertyZhuyin::RefreshUI() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - // get cursor position - TPoint baseLine = TPoint( 0, 0 ); - TInt height = 0; - TInt ascent = 0; - - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if ( ret == KErrNone ) - { - uiContainer->SetContainerPosition( baseLine, height ); - } - - GetValidKeystroke( ); - TBool needClearDeliberateSelection = editPane->NeedClearDeliberateSelection(); - if ( needClearDeliberateSelection ) - { - editPane->SetNeedClearDeliberateSelection( EFalse ); - } - else - { - RefreshVaildKeyStroke(); - } - RefreshEditPane(); - RefreshCandidatePane( needClearDeliberateSelection ); - RefreshSpellingPane( needClearDeliberateSelection ); - } - -// --------------------------------------------------------- -// TAknFepInputStateSpellingMiniQwertyZhuyin::RefreshUI -// Refresh vaild key stroke length -// --------------------------------------------------------- -// -void TAknFepInputStateSpellingMiniQwertyZhuyin::RefreshVaildKeyStroke() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* spelling = popup->PhoneticSpellingArray(); - TInt currentSel = popup->CurrentSelection(); - if ( currentSel >= spelling->Count() ) - { - currentSel = 0; - } - TPtrC ptr = spelling->MdcaPoint( currentSel ); - TInt currentLength = ptr.Length(); - editPane->SetEffictiveLength( currentLength ); - } -// --------------------------------------------------------------------------- -// TAknFepInputStateCanindateSelectingMiniQwertyZhuyin::TAknFepInputStateCanindateSelectingMiniQwertyZhuyin -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepInputStateCanindateSelectingMiniQwertyZhuyin::TAknFepInputStateCanindateSelectingMiniQwertyZhuyin( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ) : - TAknFepInputMiniQwertyZhuyinPhraseBase( aOwner, aUIContainer) - { - iState = EZhuyinCandidate; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength - > KMinCandidateCount; - - uiContainer->ShowHorizontalScrollArrows( showHorizontalScrollArrows ); - uiContainer->ShowVerticalScrollArrows( multiplePages ); - uiContainer->FocusCandidatePane( ETrue ); - uiContainer->CandidatePane()->ShowCandidateOrdinals( ETrue ); - uiContainer->CandidatePane()->SelectFirstPhrase(); - UpdateIndicator(); - } -// --------------------------------------------------------------------------- -// TAknFepInputStateCanindateSelectingMiniQwertyZhuyin::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateCanindateSelectingMiniQwertyZhuyin::HandleKeyL( - TInt aKey, TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt selected = uiContainer->CandidatePane()->SelectedIndex(); - TInt numbertotal = uiContainer->CandidatePane()->VisibleCandidateCount(); - TBool ret = ETrue; - - if (iOwner->FepMan()->GetComposChrFlag() ) - { - iOwner->FepMan()->SetComposChrFlag(EFalse); - return ETrue; - } - switch ( aKey ) - { - case EStdKeySpace: - case EStdKeyEnter: - { - iOwner->FepMan()->PlaySound( EAvkonSIDDefaultSound ); - } - break; - case EStdKeyLeftArrow: - { - if ( selected == 0 ) - { - UIContainer()->CandidatePane()->SelectIndex( numbertotal-1 ); - } - else - { - UIContainer()->CandidatePane()->SelectIndex( selected - 1 ); - } - } - break; - case EStdKeyRightArrow: - { - if ( selected == numbertotal-1 ) - { - UIContainer()->CandidatePane()->SelectIndex( 0 ); - } - else - { - UIContainer()->CandidatePane()->SelectIndex( selected + 1 ); - } - break; - } - case EStdKeyDevice1: // cancel key - { - iOwner->FepMan()->TryCloseUiL(); - break; - } - case EStdKeyUpArrow: - { - if ( uiContainer->CandidatePane()->IsFirstPage() ) // same as the backspace - { - editPane->SetChangeState( ETrue ); - iOwner->ChangeState( EZhuyinSpelling ); - } - else // just move to the last page - { - uiContainer->CandidatePane()->PreviousCandidatePage(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->CandidatePane()->SelectFirstPhrase(); - UpdateIndicator(); - } - break; - } - case EStdKeyDownArrow: - { - ret = TAknFepInputStateCandidateQwertyBaseChinesePhrase::HandleKeyL( aKey, aLength ); - } - break; - case EStdKeyBackspace: // - { - TBool state = ETrue; - if ( editPane->IsChangeState() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - if ( state ) - { - editPane->SetChangeState( ETrue ); - iOwner->ChangeState( EZhuyinSpelling ); - } - } - break; - case EStdKeyDevice0: //commit to editor - case EStdKeyDevice3: - { - TBool state = ETrue; - if ( editPane->IsChangeState() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - if ( state ) - { - editPane->SetNeedClearDeliberateSelection( ETrue ); - CommitCandidateL(); - } - } - break; - default: - if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed)) - { - iOwner->FepMan()->PlaySound(EAvkonSIDDefaultSound); - break; - } - if ( SelectCandidate( aKey ) ) // is 1-6 key - { - editPane->SetNeedClearDeliberateSelection( ETrue ); - CommitCandidateL(); - } - else - { - return TAknFepInputMiniQwertyZhuyinPhraseBase::HandleKeyL( - aKey, aLength ); - } - break; - } - return ret; - } -// --------------------------------------------------------------------------- -// TAknFepInputStateCanindateSelectingMiniQwertyZhuyin::CommitCandidate -// commint the charater to the editor pane -// --------------------------------------------------------------------------- - -TInt TAknFepInputStateCanindateSelectingMiniQwertyZhuyin::GetIndexOfToneMark( const TDesC& aText) - { - TInt indexOfToneMark = -1; - TInt num = sizeof(ZhuyinToneMap )/( sizeof(ZhuyinToneMap[0])); - TInt len = aText.Length(); - for( TInt j = 0; j< len ;j++ ) - { - indexOfToneMark = j; - TBuf<1> keyStorkeBuf = aText.Mid( j ,1 ); - for (TInt i = 0; iEditPaneWindow()->KeystrokeArray(); - CDesCArrayFlat* phraseKeyStrokeArray = UIContainer()->EditPaneWindow()->PhraseShowKeyStrokeArray(); - CDesCArrayFlat* phraseArray = UIContainer()->EditPaneWindow()->PhraseArray(); - TPtrC candidate = UIContainer()->CandidatePane()->CurrentPhraseCandidate(); - - RArray* keyCodeArray = UIContainer()->EditPaneWindow()->KeycodeArray(); - RArray* keyCodePhraseArray = UIContainer()->EditPaneWindow()->PhraseKeycodeArray(); - TBuf spellingText; - UIContainer()->InputPane()->GetText( spellingText ); - phraseArray->AppendL( candidate ); - TBuf keyStoke; - TInt replaceCount = 0; - TInt delimiterIndex = spellingText.Find( KDelimiter ); - if ( KErrNotFound ==delimiterIndex ) - { - delimiterIndex = -1; - } - TInt indexOfToneMark = GetIndexOfToneMark( spellingText ); - if ( delimiterIndex != KErrNotFound && indexOfToneMark >= 0 ) - { - replaceCount = Min( delimiterIndex, indexOfToneMark ); - if ( delimiterIndex > indexOfToneMark ) - { - replaceCount++; - } - } - else if ( delimiterIndex != KErrNotFound && indexOfToneMark == -1 ) - { - replaceCount = delimiterIndex; - } - else if ( delimiterIndex == KErrNotFound && indexOfToneMark != -1 ) - { - replaceCount = indexOfToneMark + 1; - } - else - { - replaceCount = spellingText.Length(); - } - for (TInt i = 0; i < replaceCount; i++ ) - { - TPtrC ptr = keyStrokeArray->MdcaPoint( 0 ); - keyStoke.Append( ptr ); - keyStrokeArray->Delete( 0 ); - // added for the keycode - TInt keyCodeValue = ( *keyCodeArray )[0]; - keyCodePhraseArray->AppendL( keyCodeValue ); - keyCodeArray->Remove( 0 ); - } - phraseKeyStrokeArray->AppendL( keyStoke ); - - if ( GetValidKeystroke() ) - { - iOwner->ChangeState( EZhuyinSpelling ); - } - else - { - iOwner->ChangeState( EMiniQwertyEdit ); - } - UIContainer()->EditPaneWindow()->SetChangeState(ETrue); - RefreshSpellingPane(); - RefreshCandidatePane(); - ChangeCbaL(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCanindateSelectingMiniQwertyZhuyin::CommitCandidate -// to check the select number is valid or not -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateCanindateSelectingMiniQwertyZhuyin::SelectCandidate( - TInt aKey ) - { - TInt index = 0; - MPtiLanguage *lang= NULL; - RArray keybinding; - TBool validnumkey = EFalse; - CPtiEngine* ptiengine = iOwner->PtiEngine(); - TPtiKeyboardType keyboardtype = iOwner->FepMan()->KeyboardLayout(); - - if( ptiengine != NULL ) - { - lang = ptiengine->CurrentLanguage(); - } - if ( ptiengine && lang ) - { - TRAP_IGNORE(ptiengine->GetNumericModeKeysForQwertyL(lang->LanguageCode(), keybinding, keyboardtype)); - TInt numericKeysCount = keybinding.Count(); - while (numericKeysCount-- ) - { - TPtiNumericKeyBinding numKeyBind = keybinding[numericKeysCount]; - if ( (numKeyBind.iChar >= 0x31 && numKeyBind.iChar <= 0x36) - &&(aKey == numKeyBind.iKey) ) - { - index = numKeyBind.iChar - EPtiKey0 -1; - if ( UIContainer()->CandidatePane()->SelectIndex( index, EFalse ) ) - { - validnumkey = ETrue; - } - break; - } - } - } - keybinding.Reset(); - return validnumkey; - } -// --------------------------------------------------------------------------- -// TAknFepInputStateEditingMiniQwertyZhuyinPhrase::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateEditingMiniQwertyZhuyinPhrase::HandleCommandL( - TInt aCommandId ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = - UIContainer()->CandidatePane(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - TBool state = ETrue; - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - //case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( editPane->IsChangeState() ) - { - state = EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - if ( state ) - { - HandleCommitL(); - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateSpellingMiniQwertyZhuyin::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateSpellingMiniQwertyZhuyin::HandleCommandL( - TInt aCommandId ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = - UIContainer()->CandidatePane(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - TBool state = ETrue; - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - //case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( editPane->IsChangeState() ) - { - state = EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - if ( state ) - { - if ( popup->IsEnabled() ) - { - popup->Enable( EFalse ); - } - editPane->SetChangeState( ETrue ); - iOwner->ChangeState( EZhuyinCandidate ); - } - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateCanindateSelectingMiniQwertyZhuyin::HandleCommandL -// Handling Command -// --------------------------------------------------------------------------- -// -void TAknFepInputStateCanindateSelectingMiniQwertyZhuyin::HandleCommandL( - TInt aCommandId ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = - UIContainer()->CandidatePane(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - TBool state = ETrue; - switch ( aCommandId ) - { - // Handle the event frome command. - case EAknSoftkeySelect: - //case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA - if ( editPane->IsChangeState() ) - { - state = EFalse; - } - else - { - editPane->SetChangeState( EFalse ); - } - if ( state ) - { - editPane->SetNeedClearDeliberateSelection( ETrue ); - CommitCandidateL(); - } - - break; - default: - TAknFepInputStateChineseBase::HandleCommandL( aCommandId ); - break; - } - } -//End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputstateqwertykorean.cpp --- a/fep/aknfep/src/aknfepuiinputstateqwertykorean.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* -* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CAknFepInputStateQwertyKorean implementation -* -*/ - -#include "AknFepUiInputStateQwertyKorean.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -//#include "AknFepDbgKorean.h" - -#include -#include -#include -#include - -TAknFepInputStateQwertyKorean::TAknFepInputStateQwertyKorean( - MAknFepUIManagerStateInterface* aOwner) - : TAknFepInputStateQwerty(aOwner) - { - CPtiEngine& ptiEngine(*(aOwner->PtiEngine())); - ptiEngine.SetInputMode(EPtiEngineQwertyKorean); - ptiEngine.ClearCurrentWord(); - } - -TAknFepInputStateQwertyKorean::~TAknFepInputStateQwertyKorean() - { - } - -TBool TAknFepInputStateQwertyKorean::HandleKeyL(TInt aKey, TKeyPressLength /*aLength*/) - { -// LOG2("KO.IS.QWERTY.HandleKeyL %d,%d",aKey,aLength); - CPtiEngine& ptiEngine(*(iOwner->PtiEngine())); - MAknFepManagerUIInterface& fepMan(*(iOwner->FepMan())); - - TPtrC text(ptiEngine.AppendKeyPress((TPtiKey)aKey)); - TBuf<1> chr; - for (TInt jj = 0; jj < text.Length(); jj++) - { - chr.Zero(); - chr.Append(text[jj]); - fepMan.NewCharacterL(chr); - } - return ETrue; - } - -void TAknFepInputStateQwertyKorean::KeyTimerExpired() - { -// LOG1("KO.IS.QWERTY.KeyTimerExpired %d",iData); - CPtiEngine& ptiEngine(*(iOwner->PtiEngine())); - MAknFepManagerUIInterface& fepMan(*(iOwner->FepMan())); - - TPtrC text(ptiEngine.CurrentWord()); - TBuf<1> chr; - for (TInt jj = 0; jj < text.Length(); jj++) - { - chr.Zero(); - chr.Append(text[jj]); - TRAP_IGNORE( fepMan.NewCharacterL(chr) ); - } - - //TRAPD(err, fepMan.CommitInlineEditL()) - TRAP_IGNORE( fepMan.CommitInlineEditL() ) - } - -//fepMan.StartInlineEditL(text); -//iFepMan.StartInlineEditL() -//virtual void SetCursorSelectionL(const TCursorSelection& aCurSel, TBool aSyncCursor) = 0; diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputstatestrokephrasebase.cpp --- a/fep/aknfep/src/aknfepuiinputstatestrokephrasebase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1286 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Provides the TAknFepInputStateStrokePhraseCreationBase definition. -* -*/ - - - - - - - - - - - - - -// System includes -#include -#include -#include -#include -#include //CAknWarningNote - -// User includes -#include "AknFepUIManagerStateInterface.h" -#include "AknFepUICtrlInputPane.h" -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" //pinyin phrase creation -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepManager.h" -#include "aknfepuiinputstatestrokephrasebase.h" - -// Constant definition -const TInt KMinCnadidateCount = 1; -const TInt KMaxPhraseCount = 50; -const TInt KEnginePhoneticIndex = 1; -const TInt KMaxPhraseCreationCount = 7; -const TInt KMaxKeystrokeCount = 31; -const TInt KKey0Code = 48; -const TInt KKey1Code = 49; -const TInt KKey2Code = 50; -const TInt KKey3Code = 51; -const TInt KKey4Code = 52; -const TInt KKey5Code = 53; -const TInt KKey6Code = 54; -const TInt KAutoChangeState = 1; -const TInt KManualChangeState = 0; -const TUint16 KDelimiter = 0x2022; -const TUint16 KStrokeKey1 = 0x4E00; -const TUint16 KStrokeKey2 = 0x4E28; -const TUint16 KStrokeKey3 = 0x4E3F; -const TUint16 KStrokeKey4 = 0x4E36; -const TUint16 KStrokeKey5 = 0x4E5B; -const TUint16 KStrokeKey6 = 0x003F; - -const TUint16 KSegment = 0x0020; - -_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" ); - -const TKeyMap StrokeMap[] = - { - {KDelimiter, KKey0Code}, - {KStrokeKey1, KKey1Code}, - {KStrokeKey2, KKey2Code}, - {KStrokeKey3, KKey3Code}, - {KStrokeKey4, KKey4Code}, - {KStrokeKey5, KKey5Code}, - {KStrokeKey6, KKey6Code} - }; - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseCreationBase::TAknFepInputStateStrokePhraseCreationBase -// C++ default constructor -// --------------------------------------------------------------------------- -// -TAknFepInputStateStrokePhraseBase::TAknFepInputStateStrokePhraseBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer) - :TAknFepInputStateChineseBase(aOwner, aUIContainer) - { - if ( iOwner->PtiEngine()->InputMode() != EPtiEngineStrokeByPhrase ) - { - iOwner->PtiEngine()->SetInputMode( EPtiEngineStrokeByPhrase ); - } - iOwner->PtiEngine()->SetCandidatePageLength( KMaxPhraseCount ); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->SetFepMan( iOwner->FepMan() ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::HandleKeyL -// Handle system key press event. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateStrokePhraseBase::HandleKeyL( - TInt aKey, - TKeyPressLength aLength ) - { - switch( aKey ) - { - case EKeyBackspace: - { - if ( CheckKeyNeedRepeat( aLength ) ) - { - HandleKeyBackspaceL( aLength ); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - break; - } - case EKeyUpArrow: - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - break; - } - case EKeyDownArrow: - { - if ( EStrokeSequenceEdit == iState ) - { - if ( CheckFirstGroupStroke() ) - { - UIContainer()->PinyinPopupWindow()->SetChangeState( ETrue ); - iOwner->ChangeState( EEntry ); - } - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - break; - } - case EKeyLeftArrow: - { - if ( EStrokeSequenceEdit == iState ) - { - MoveCursorLeft(); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - break; - } - case EKeyRightArrow: - { - if ( EStrokeSequenceEdit == iState ) - { - MoveCursorRight(); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - break; - } - case EKeyOK: - case EKeyCBA1: - { - if ( CheckKeyNeedRepeat( aLength ) ) - { - HandleKeyCBA1OrKeyOKL( aLength ); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - break; - } - case EKeyCBA2: - { - iOwner->FepMan()->TryCloseUiL(); - break; - } - default: - { - if ( ( EShortKeyPress == aLength ) && - ( iOwner->IsValidChineseInputKey( aKey ) ) ) - { - HandleDefaultKeyL( aKey ); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - break; - } - } - - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::RefreshUI -// Update input window. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::RefreshUI( TBool aRefresh ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - // get cursor position - if ( aRefresh ) - { - TPoint baseLine; - TInt height(0); - TInt ascent(0); - TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent)); - if (ret == KErrNone) - { - uiContainer->SetContainerPosition(baseLine, height); - } - } - - ShowInfoOnEEPPane(); - if ( !CheckAllKeystroke() ) - { - SetWarningColor(); - } - ShowInfoOnCandidatePane(); - UpdateIndicator(); - TRAP_IGNORE( ChangeCbaL() ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::HandleHorizontalNavigation -// Handle horizontal navigation. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateStrokePhraseBase::CheckFirstGroupStroke() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - CDesCArrayFlat* keystroke = uiContainer-> - PinyinPopupWindow()->KeystrokeArrayForStroke(); - - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - TInt keyCode = 0; - TInt pos = 0; - if ( 0 == keystroke->Count() ) - { - return EFalse; - } - - ClearPtiEngineKeystroke(); - TBuf<1> delimiter; - delimiter.Append( KDelimiter ); - if ( 0 == keystroke->Find( delimiter, pos ) ) - { - if ( 0 == pos ) - { - return EFalse; - } - } - else - { - pos = keystroke->Count(); - } - - for ( TInt i = 0; i < pos; ++i ) - { - GetKeystrokeCode( keyCode, keystroke->MdcaPoint( i ) ); - stringBeforeLength = - ptiengine->GetPhoneticSpelling(KEnginePhoneticIndex).Length(); - stringAfterLength = - ptiengine->AppendKeyPress((TPtiKey)keyCode).Length(); - //the keystroke is invalid. - if ( stringBeforeLength == stringAfterLength ) - { - ClearPtiEngineKeystroke(); - return EFalse; - } - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::HandleKeyBackspaceL -// Handle KeyBackspace event. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::HandleKeyBackspaceL( - TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* keystroke = popup->KeystrokeArrayForStroke(); - TInt phraseCount = popup->ChooseChineseCharacterArrayForStroke()->Count(); - TBool firstGroup = CheckFirstGroupStroke(); - - if ( ( 0 == index ) && ( phraseCount != 0 ) ) - { - RevertPhraseToKeystrokeL(); - } - else if ( ( 0 == index ) && ( keystroke->Count() > 0 ) ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return; - } - else - { - if ( !DeleteKeystroke() ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return; - } - } - - if ( popup->ChooseChineseCharacterArrayForStroke()->Count() == 0 ) - { - iOwner->FepMan()->PhraseCreation( EFalse ); - } - - //if the keystroke is null and phrase is null then close input window. - if ( ( 0 == phraseCount ) && ( keystroke->Count() == 0 ) ) - { - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - if ( aLength == ELongKeyPress ) - { - iOwner->FepMan()->SetLongClearAfterCloseUI( ETrue ); - } - return; - } - - //Auto change from EStrokeSequenceEdit state to EEntry state. - if ( EStrokeSequenceEdit == iState ) - { - if ( ( KAutoChangeState == popup->GetState() ) && - ( !firstGroup ) && CheckFirstGroupStroke() ) - { - popup->SetChangeState( EFalse ); - iOwner->ChangeState( EEntry ); - return; - } - } - - //Auto change from EEntry state to EStrokeSequenceEdit state. - if ( EEntry == iState ) - { - if ( ( firstGroup ) && ( !CheckFirstGroupStroke() ) ) - { - popup->SetChangeState( EFalse ); - popup->SetState( KAutoChangeState ); - iOwner->ChangeState( EStrokeSequenceEdit ); - return; - } - } - - RefreshUI(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::HandleKeyCBA1OrKeyOKEntryL -// Entry handle CBA1 or OK key press event. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::HandleKeyCBA1OrKeyOKEntry( - TKeyPressLength aLength ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - TBool state = ETrue; - if ( popup->IsChangeStatet() && aLength == ELongKeyPress ) - { - state = EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - - if ( state ) - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( ECandidate ); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::HandleKeyCBA1OrKeyOKEditL -// Edit state handle CBA1 or OK key press event. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::HandleKeyCBA1OrKeyOKEditL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* phrase = popup->ChooseChineseCharacterArrayForStroke(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke(); - TBuf phraseCreated; - if ( (phrase->Count() >= 2 ) && ( 0 == keystrokeArray->Count() ) ) - { - //commit the chinese character. - for (TInt i = 0; i < phrase->Count(); ++i ) - { - phraseCreated.Append( phrase->MdcaPoint( i ) ); - } - AddPhraseToDB( phraseCreated ); - iOwner->FepMan()->NewTextL( phraseCreated ); - iOwner->FepMan()->CommitInlineEditL(); - iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI. - } - else if ( CheckFirstGroupStroke() ) - { - popup->SetState( KManualChangeState ); - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EEntry ); - } - else - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - } - - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::HandleKeyCBA1OrKeyOKL -// Handle CBA1 or OK key press event. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::HandleKeyCBA1OrKeyOKL( - TKeyPressLength aLength ) - { - if ( EStrokeSequenceEdit == iState ) - { - HandleKeyCBA1OrKeyOKEditL(); - } - else if ( EEntry == iState ) - { - HandleKeyCBA1OrKeyOKEntry( aLength ); - } - else - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::HandleDefaultKeyL -// Handle default key press event. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::HandleDefaultKeyL( TInt aKey ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - TBool firstGroup = CheckFirstGroupStroke(); - - if ( !AddKeystrokeL( aKey ) ) - { - iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone); - return; - } - - //Auto change from EStrokeSequenceEdit state to EEntry state. - if ( EStrokeSequenceEdit == iState ) - { - if ( ( KAutoChangeState == popup->GetState() ) && - ( !firstGroup ) && CheckFirstGroupStroke() ) - { - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EEntry ); - return; - } - } - - //Auto change from EEntry state to EStrokeSequenceEdit state. - if ( EEntry == iState ) - { - if ( ( firstGroup ) && ( !CheckFirstGroupStroke() ) ) - { - popup->SetState( KAutoChangeState ); - popup->SetChangeState( ETrue ); - iOwner->ChangeState( EStrokeSequenceEdit ); - return; - } - } - - RefreshUI(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::ShowInfoOnEEP -// Show the showinfo on the EEP ctrl. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::ShowInfoOnEEPPane() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystroke = popup->KeystrokeArrayForStroke(); - CDesCArrayFlat* phrase = popup->ChooseChineseCharacterArrayForStroke(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - TBuf showInfo; - - for (TInt i = 0; i < phrase->Count(); ++i ) - { - showInfo.Append( phrase->MdcaPoint( i ) ); - } - - for (TInt ii = 0; ii < keystroke->Count(); ++ii ) - { - showInfo.Append( keystroke->MdcaPoint( ii ) ); - } - - editPane->SetText( showInfo, phrase->Count() + index ); - if ( EStrokeSequenceEdit == iState ) - { - editPane->ActiveCursor(); - } - else if ( EEntry == iState ) - { - editPane->DeactiveCursor(); - } - else - { - editPane->DisableCursor(); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::ShowInfoOnEEP -// Show the showinfo on the EEP ctrl. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::ShowInfoOnCandidatePane() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->SetControlInVisible( ETrue ); - CDesCArrayFlat* phrase = uiContainer->CandidatePane()->CandidateArray(); - if ( KMaxPhraseCreationCount == uiContainer->PinyinPopupWindow()-> - ChooseChineseCharacterArrayForStroke()->Count() ) - { - phrase->Reset(); - TRAP_IGNORE( phrase->AppendL( KMaxPhraseNote ) ); - uiContainer->SetControlInVisible( ETrue ); - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->ShowVerticalScrollArrows( EFalse ); - } - - TRAP_IGNORE( GetCandidateL() ); - if ( phrase->Count() > 0 ) - { - // layout candidate and fill candidate buffer for first display page - uiContainer->SetControlInVisible( ETrue ); - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - uiContainer->ShowVerticalScrollArrows( ETrue ); - } - else - { - uiContainer->SetControlInVisible( EFalse ); - uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->ShowVerticalScrollArrows( EFalse ); - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::GetShowKeystroke -//Handle horizontal navigation. -// --------------------------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::GetShowKeystroke( - TInt aKey, - TDes& aKeystroke ) - { - TInt count = sizeof( StrokeMap )/sizeof( StrokeMap[0] ); - for ( TInt i = 0; i < count ; i++ ) - { - if (aKey == StrokeMap[i].iKeyCode) - { - aKeystroke.Append(StrokeMap[i].iValue); - break; - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::HandleHorizontalNavigation -//Handle horizontal navigation. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateStrokePhraseBase::HandleHorizontalNavigation( - TInt aKey ) - { - MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane(); - TBool response = EFalse; - - // Do navigation... - if (aKey == EKeyLeftArrow) - { - if(!candidatePane->SelectPrev()) - { - candidatePane->SetCandidateBuffer(); - candidatePane->SelectLastPhrase(); - } - response = ETrue; - } - else if (aKey == EKeyRightArrow) - { - if(!candidatePane->SelectNext()) - { - candidatePane->SetCandidateBuffer(); - candidatePane->SelectFirstPhrase(); - } - response = ETrue; - } - - if (response) - { - UpdateIndicator(); - } - - return response; - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::UpdateIndicator -// Update Indicator. -// --------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - if ( candidatePane->IsFirstPage() ) - { - uiContainer->CandidatePane()->ShowUpScrollArrows( EFalse ); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows( ETrue ); - } - - if ( candidatePane->IsLastPage() ) - { - uiContainer->CandidatePane()->ShowDownScrollArrows( EFalse ); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows( ETrue ); - } - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::DeleteKeystroke -// Delete current keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStateStrokePhraseBase::DeleteKeystroke() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - - if ( ( 0 == index ) || ( keystrokeArray->Count() == 0 ) ) - { - return EFalse; - } - - if ( 1 == index ) - { - keystrokeArray->Delete( 0 ); - editPane->SetCursorIndexOfKeystroke( 0 ); - editPane->Reset(); - } - else if ( index >= keystrokeArray->Count() ) - { - keystrokeArray->Delete( keystrokeArray->Count() - 1 ); - editPane->SetCursorIndexOfKeystroke( keystrokeArray->Count() ); - } - else - { - keystrokeArray->Delete( index - 1 ); - editPane->SetCursorIndexOfKeystroke( index - 1 ); - } - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::AddPhraseToDB -// Add phrase to DB. -// --------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::AddPhraseToDB( - const TDesC& aPhraseAdd ) - { - TPtiUserDictionaryEntry addUdbEntry( aPhraseAdd ); - //Add the phrase to the DB by PTI Engine - iOwner->PtiEngine()->AddUserDictionaryEntry( addUdbEntry ); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::RefreshCandidate -// Refresh candidate -// --------------------------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::RefreshCandidate() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->Enable( ETrue ); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showArrows = multiplePages || bufLength > KMinCnadidateCount; - - uiContainer->ShowHorizontalScrollArrows( showArrows ); - uiContainer->ShowVerticalScrollArrows( multiplePages ); - - uiContainer->CandidatePane()->SelectFirstPhrase(); - UpdateIndicator(); - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::CheckKeyNeedRepeat -// Check key whether need repeat. -// --------------------------------------------------------------------------- -// -TBool TAknFepInputStateStrokePhraseBase::CheckKeyNeedRepeat( TKeyPressLength aLength ) - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - if ( popup->IsChangeStatet() && aLength == ELongKeyPress ) - { - return EFalse; - } - else - { - popup->SetChangeState( EFalse ); - } - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::ClearPtiEngineKeystroke -// clear the ptiengine keystroke; -// --------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::ClearPtiEngineKeystroke() - { - iOwner->PtiEngine()->ClearCurrentWord(); - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::AddKeystrokeL -// Add keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStateStrokePhraseBase::AddKeystrokeL( TInt aKey ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke(); - TInt phraseCount = popup->ChooseChineseCharacterArrayForStroke()->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - - if ( phraseCount + keystrokeArray->Count() >= KMaxKeystrokeCount ) - { - return EFalse; - } - - TBuf<1> keystroke; - GetShowKeystroke( aKey, keystroke ); - if ( index >= keystrokeArray->Count() ) - { - keystrokeArray->AppendL( keystroke ); - editPane->SetCursorIndexOfKeystroke( keystrokeArray->Count() ); - } - else - { - keystrokeArray->InsertL( index, keystroke ); - editPane->SetCursorIndexOfKeystroke( index + 1 ); - } - return ETrue; - } -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::GetCandidateL -// Get the candidate info. -// --------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::GetCandidateL() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* phraseCandidates = - uiContainer->CandidatePane()->CandidateArray(); - CDesCArrayFlat* keystroke = popup->KeystrokeArrayForStroke(); - phraseCandidates->Reset(); - TBuf buf; - TBuf<1> delimiter; - delimiter.Append( KDelimiter ); - if ( !CheckFirstGroupStroke() ) - { - return; - } - else if ( CheckAllKeystroke() ) - { - for( TInt i = 0; i < keystroke->Count(); ++i ) - { - buf.Append( keystroke->MdcaPoint( i ) ); - } - } - else - { - TInt pos = 0; - if ( 0 == keystroke->Find( delimiter,pos ) ) - { - for( TInt i = 0; i < pos; ++i ) - { - buf.Append( keystroke->MdcaPoint( i ) ); - } - } - else - { - for( TInt i = 0; i < keystroke->Count(); ++i ) - { - buf.Append( keystroke->MdcaPoint( i ) ); - } - } - } - extern void CleanArray( TAny* aAny ); - RPointerArray list; - TCleanupItem cleanitem( CleanArray, &list ); - CleanupStack::PushL( cleanitem ); - HBufC* retString = ptiengine->GetCandidatesByInputString( - buf, - list, - EFalse ); - - delete retString; - retString = NULL; - - for ( TInt i = 0; i < list.Count(); ++i ) - { - phraseCandidates->AppendL( *(list[i]) ); - } - CleanupStack::PopAndDestroy(); - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::GetKeystrokeCode -// get Code of the key stroke. -// --------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::GetKeystrokeCode( - TInt& aKey, - const TDesC& aKeystroke ) - { - TInt count = sizeof( StrokeMap )/sizeof( StrokeMap[0] ); - for ( TInt i = 0; i < count ; i++ ) - { - TBuf<1> buf; - buf.Append(StrokeMap[i].iValue); - if (0 == aKeystroke.Compare(buf)) - { - aKey = StrokeMap[i].iKeyCode; - break; - } - } - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::CheckAllKeystroke -// Get the candidate info. -// --------------------------------------------------------- -// -TBool TAknFepInputStateStrokePhraseBase::CheckAllKeystroke() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - CDesCArrayFlat* keystrokeArray = uiContainer-> - PinyinPopupWindow()->KeystrokeArrayForStroke(); - - TInt chineseCount = uiContainer->PinyinPopupWindow()-> - ChooseChineseCharacterArrayForStroke()->Count(); - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - TInt keyCode = 0; - TInt delimiterCount = 0; - TBuf<1> delimiter; - delimiter.Append( KDelimiter ); - if ( chineseCount > 0 ) - { - return EFalse; - } - - if ( keystrokeArray->Count() > 0 ) - { - if ( 0 == keystrokeArray->MdcaPoint( 0 ).Compare( delimiter ) ) - { - return EFalse; - } - } - ClearPtiEngineKeystroke(); - for ( TInt i = 0; i < keystrokeArray->Count(); ++i ) - { - if ( 0 == keystrokeArray->MdcaPoint( i ).Compare( delimiter ) ) - { - delimiterCount = delimiterCount + 1; - } - GetKeystrokeCode( keyCode, keystrokeArray->MdcaPoint( i ) ); - stringBeforeLength = - ptiengine->GetPhoneticSpelling(KEnginePhoneticIndex).Length(); - stringAfterLength = - ptiengine->AppendKeyPress((TPtiKey)keyCode).Length(); - - if ( stringBeforeLength == stringAfterLength ) - { - ClearPtiEngineKeystroke(); - return EFalse; - } - } - if ( delimiterCount >= KMaxPhraseCreationCount ) - { - return EFalse; - } - return ETrue; - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::RevertPhraseToKeystrokeL -// Revert the phrase to keystroke. -// --------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::RevertPhraseToKeystrokeL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* keystrokeArray = popup->KeystrokeArrayForStroke(); - CDesCArrayFlat* phrase = popup->ChooseChineseCharacterArrayForStroke(); - CDesCArrayFlat* phraseStroke = - popup->ChooseChineseCharacterArrayKeystrokeForStroke(); - - TBuf buf; - if ( ( phrase->Count() == 0 ) || ( phraseStroke->Count() == 0 ) ) - { - return; - } - - buf.Append( phraseStroke->MdcaPoint( phraseStroke->Count() - 1 ) ); - - for ( TInt i = buf.Length() - 1; i >= 0; --i ) - { - keystrokeArray->InsertL( 0, buf.Mid( i, 1 ) ); - } - phrase->Delete( phrase->Count() - 1 ); - phraseStroke->Delete( phraseStroke->Count() - 1 ); - - TInt leng = phrase->Count() + keystrokeArray->Count(); - if ( leng > KMaxKeystrokeCount ) - { - for ( TInt i = 0; i < leng - KMaxKeystrokeCount; ++i ) - { - keystrokeArray->Delete( keystrokeArray->Count() - 1 ); - } - } - editPane->SetCursorIndexOfKeystroke( buf.Length() ); - keystrokeArray->Compress(); - phrase->Compress(); - phraseStroke->Compress(); - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::SetWarningColor -// Set warning color. -// --------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::SetWarningColor() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - CDesCArrayFlat* keystrokeArray = UIContainer()-> - PinyinPopupWindow()->KeystrokeArrayForStroke(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - TInt phraseCount = UIContainer()->PinyinPopupWindow()-> - ChooseChineseCharacterArrayForStroke()->Count(); - - TInt indexStart = phraseCount; - TInt keyCode = 0; - TInt stringBeforeLength = 0; - TInt stringAfterLength = 0; - TInt keystrokeCount = 0; - TInt validKeystrokeCountOfPti = 0; - TBool valid = ETrue; - TInt delimiterCount = 0; - TInt delimiterADD = 0; - TBuf<1> delimiter; - delimiter.Append( KDelimiter ); - ClearPtiEngineKeystroke(); - - for ( TInt i = 0; i < keystrokeArray->Count(); ++i ) - { - keystrokeCount = keystrokeCount + 1; - if ( phraseCount + delimiterCount >= KMaxPhraseCreationCount ) - { - break; - } - if ( 0 == keystrokeArray->MdcaPoint( i ).Compare( delimiter ) ) - { - delimiterADD = i; - delimiterCount = delimiterCount + 1; - } - GetKeystrokeCode( keyCode, keystrokeArray->MdcaPoint( i ) ); - stringBeforeLength = ptiengine->GetPhoneticSpelling( - KEnginePhoneticIndex).Length(); - stringAfterLength = - ptiengine->AppendKeyPress((TPtiKey)keyCode).Length(); - - if ( stringBeforeLength == stringAfterLength ) - { - valid = EFalse; - } - else if ( valid ) - { - validKeystrokeCountOfPti = validKeystrokeCountOfPti + 1; - } - - if ( ( i == keystrokeArray->Count() - 1 ) && ( KKey0Code != keyCode ) - && ( 1 != keystrokeCount ) && ( !valid ) ) - { - editPane->SetHighlight( indexStart, indexStart + keystrokeCount - 1 ); - validKeystrokeCountOfPti = 0; - keystrokeCount = 0; - valid = ETrue; - } - - if ( KKey0Code == keyCode ) - { - ClearPtiEngineKeystroke(); - if ( 0 == i ) - { - editPane->SetHighlight( indexStart, indexStart - + keystrokeCount - 1 ); - indexStart = phraseCount + i + 1; - validKeystrokeCountOfPti = 0; - keystrokeCount = 0; - valid = ETrue; - } - else - { - if ( ( 0 == keystrokeArray->MdcaPoint( i ). - Compare( delimiter ) ) && ( 0 - == keystrokeArray->MdcaPoint( i - 1 ). - Compare( delimiter ) ) ) - { - editPane->SetHighlight( indexStart, indexStart - + keystrokeCount - 1 ); - indexStart = phraseCount + i + 1; - validKeystrokeCountOfPti = 0; - keystrokeCount = 0; - valid = ETrue; - } - else - { - if ( ( !valid ) && ( 1 != keystrokeCount ) && - ( validKeystrokeCountOfPti < keystrokeCount - 1 ) ) - { - editPane->SetHighlight( indexStart, indexStart - + keystrokeCount - 1 ); - indexStart = phraseCount + i + 1; - validKeystrokeCountOfPti = 0; - keystrokeCount = 0; - valid = ETrue; - } - else - { - indexStart = phraseCount + i + 1; - validKeystrokeCountOfPti = 0; - keystrokeCount = 0; - valid = ETrue; - } - } - } - } - } - - if ( phraseCount + delimiterCount >= KMaxPhraseCreationCount ) - { - editPane->SetHighlight( - phraseCount + delimiterADD, - phraseCount + keystrokeArray->Count() ); - } - - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::SetWarningColor -// Set warning color. -// --------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::ChangeCbaL() - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - TInt keystrokeCount = popup->KeystrokeArrayForStroke()->Count(); - TInt phraseCount = popup->ChooseChineseCharacterArrayForStroke()->Count(); - TInt lastRes = popup->GetLastResouce(); - - TBool first = CheckFirstGroupStroke(); - CheckAllKeystroke(); - if ( phraseCount == KMaxPhraseCreationCount ) - { - if ( lastRes == R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ) - { - return; - } - //User cba done-done-cancel - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - } - else if ( 0 != keystrokeCount && first ) - { - if ( lastRes == R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ) - { - return; - } - //User cba select-select-cancel - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ); - } - else if ( phraseCount > 1 && 0 == keystrokeCount ) - { - if ( lastRes == R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ) - { - return; - } - //User cba done-done-cancel - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - } - else - { - if ( lastRes == R_AKNFEP_SOFTKEYS__PHRASE_CREATION_EMPTY_CANCEL_EMPTY ) - { - return; - } - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS__PHRASE_CREATION_EMPTY_CANCEL_EMPTY ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS__PHRASE_CREATION_EMPTY_CANCEL_EMPTY ); - } - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::MoveCursorLeft -// Move the cursor to Left. -// --------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::MoveCursorLeft() - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - TInt keystrokeCount = popup->KeystrokeArrayForStroke()->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - if ( 0 == keystrokeCount ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return; - } - else - { - popup->SetState( KManualChangeState ); - } - - if ( index > 1 ) - { - editPane->SetCursorIndexOfKeystroke( index - 1 ); - editPane->MoveCursorLeft(); - } - else - { - if ( 1 == index ) - { - editPane->SetCursorIndexOfKeystroke( 0 ); - } - else - { - editPane->SetCursorIndexOfKeystroke( keystrokeCount ); - } - ShowInfoOnEEPPane(); - if ( !CheckAllKeystroke() ) - { - SetWarningColor(); - } - } - } - -// --------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::MoveCursorRight -// Move the cursor to Right. -// --------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::MoveCursorRight() - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - TInt keystrokeCount = popup->KeystrokeArrayForStroke()->Count(); - TInt index = editPane->GetCursorIndexOfKeystroke(); - if ( 0 == keystrokeCount ) - { - iOwner->FepMan()->PlaySound( EAvkonSIDErrorTone ); - return; - } - else - { - popup->SetState( KManualChangeState ); - } - - if ( index < keystrokeCount ) - { - editPane->SetCursorIndexOfKeystroke( index + 1 ); - editPane->MoveCursorRight(); - } - else - { - editPane->SetCursorIndexOfKeystroke( 0 ); - ShowInfoOnEEPPane(); - if ( !CheckAllKeystroke() ) - { - SetWarningColor(); - } - } - } - -// --------------------------------------------------------------------------- -// TAknFepInputStateStrokePhraseBase::GetNewCandidatesL -// Get new candidate -// --------------------------------------------------------------------------- -// -void TAknFepInputStateStrokePhraseBase::GetNewCandidatesL(const TDesC& aSource, - RPointerArray& aList) - { - TInt start = 0; - TInt length = 0; - - for (TInt ii = 0; ii < aSource.Length(); ii++) - { - if (aSource[ii] == KSegment) - { - TPtrC segment(aSource.Ptr() + start, length); - aList.AppendL(segment.AllocL()); - start += (length + 1); - length = 0; - } - else - { - length++; - } - } - - if (length) - { - TPtrC segm(aSource.Ptr() + start, length); - aList.AppendL(segm.AllocL()); - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuiinputstatezhuyinphrasecreationbase.cpp --- a/fep/aknfep/src/aknfepuiinputstatezhuyinphrasecreationbase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,628 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TAknFepInputStateEntryZhuyinPhraseCreation methods. - * -*/ - - - - - - - - - - - - -#include //CPtiEngine -#include -#include - -#include "aknfepuiinputstatezhuyinphrasecreationbase.h" -#include "AknFepUIManagerStateInterface.h" //MAknFepUIManagerStateInterface -#include "AknFepManagerUIInterface.h" //MAknFepManagerUIInterface -#include "AknFepUiCtrlContainerChinese.h" -#include "AknFepUICtrlPinyinPopup.h" //Pinyin phrase -#include "aknfepuictrleditpane.h" -#include "AknFepUICtrlCandidatePane.h" -#include "AknFepUICtrlInputPane.h" -#include "aknfepzhuyinkeyhandlerinterface.h" //MZhuyinKeyHandler -#include "AknFepZhuyinAnalyser.h" -#include "aknfepzhuyinconvertion.h" //TZhuyinSymbolsMethods - -_LIT( KStrokeManualSeparator, "\x002E"); -_LIT( KToneMark1, "\x0020" ); -_LIT( KToneMark2, "\x02CA" ); -_LIT( KToneMark3, "\x02C7" ); -_LIT( KToneMark4, "\x02CB" ); -_LIT( KToneMark5, "\x02D9" ); - -const TInt KMaxBufLen = 100; -const TInt KMaxKeystrokeCount = 100; -const TInt KMaxInputLength = 31; -const TInt KMaxPhraseCreationCount = 7; - -// --------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------- -// -TAknFepInputStateZhuyinPhraseCreationBase::TAknFepInputStateZhuyinPhraseCreationBase( - MAknFepUIManagerStateInterface* aOwner, - MAknFepUICtrlContainerChinese* aUIContainer ) : - TAknFepInputStateCandidateBase( aOwner, aUIContainer ) - { - iState = EEntry; - - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - - uiContainer->FocusCandidatePane(EFalse); - - TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && - uiContainer->CandidatePane()->IsFirstPage()); - TInt bufLength = iOwner->PtiEngine()->CandidatePage().Length(); - TBool showHorizontalScrollArrows = multiplePages || bufLength>1; - - uiContainer->ShowHorizontalScrollArrows(showHorizontalScrollArrows); - uiContainer->ShowVerticalScrollArrows(multiplePages); - uiContainer->FocusCandidatePane(ETrue); - candidatePane->SetHighlighted(ETrue); - candidatePane->ShowCandidateOrdinals(EFalse); - candidatePane->SelectFirstPhrase(); - } - -TBool TAknFepInputStateZhuyinPhraseCreationBase::AddKeystrokeL( TInt aKey ) - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* zhuyinSymbol = popup->ZhuyinSymbols(); - TInt chineseCount = popup->ChineseCharsDisped()->Count(); - TInt currentIndex = editPane->GetCursorIndexOfKeystroke(); - TBuf<1> buf; - TBuf showbuf; - showbuf = uiContainer->PinyinPopupWindow()->GetEEPContent(); - - TInt ret = iOwner->ZhuyinKeyHandler()->GetZhuyinSymbol( (TPtiKey)aKey, buf ); - TInt showbufLen = showbuf.Length(); - - if ( showbufLen >= KMaxInputLength ) - { - if ( ( 0 == currentIndex ) || ( 1 == ret ) ) - { - iOwner->ZhuyinKeyHandler()->Reset(); - return EFalse; - } - return ReplaceKeystrokeL( currentIndex, - chineseCount, - buf, - zhuyinSymbol - ); - } - - if ( showbufLen == KMaxInputLength - 1 ) - { - if ( 0 == currentIndex ) - { - iOwner->ZhuyinKeyHandler()->Reset(); - return EFalse; - } - else if ( 1 == ret ) - { - zhuyinSymbol->InsertL( currentIndex, buf ); - if ( CheckKeystrokeCountL( chineseCount, zhuyinSymbol ) ) - { - editPane->SetCursorIndexOfKeystroke( currentIndex + 1 ); - return ETrue; - } - else - { - iOwner->ZhuyinKeyHandler()->Reset(); - zhuyinSymbol->Delete( currentIndex ); - return EFalse; - } - } - else - { - return ReplaceKeystrokeL( currentIndex, - chineseCount, - buf, - zhuyinSymbol - ); - } - } - - - else if ( ( 0 != currentIndex ) && - ( KMaxInputLength <= showbufLen ) ) - { - if ( 0 == ret ) - { - zhuyinSymbol->Delete( currentIndex - 1 ); - zhuyinSymbol->InsertL( currentIndex - 1, buf ); - return ETrue; - } - else - { - iOwner->ZhuyinKeyHandler()->Reset(); - return EFalse; - } - } - else if ( ( 0 == currentIndex ) && - ( KMaxInputLength > showbufLen ) ) - { - zhuyinSymbol->InsertL( currentIndex, buf ); - editPane->SetCursorIndexOfKeystroke( currentIndex + 1 ); - return ETrue; - } - else if ( ( 0 != currentIndex ) && - ( KMaxInputLength > showbufLen ) ) - { - if ( 0 == ret ) - { - zhuyinSymbol->Delete( currentIndex - 1 ); - zhuyinSymbol->InsertL( currentIndex - 1, buf ); - return ETrue; - } - else if ( 1 == ret ) - { - zhuyinSymbol->InsertL( currentIndex, buf ); - editPane->SetCursorIndexOfKeystroke( currentIndex + 1 ); - return ETrue; - } - } - return ETrue; - } - -TBool TAknFepInputStateZhuyinPhraseCreationBase::AddToneMarkL() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - MZhuyinKeyHandler* zhuyinKeyHandler = iOwner->ZhuyinKeyHandler(); - CDesCArrayFlat* zhuyinSymbols = uiContainer->PinyinPopupWindow()->ZhuyinSymbols(); - - TBuf<1> baseBuf; - TBuf<1> buf; - baseBuf.Zero(); - TInt strokePos = editPane->GetCursorIndexOfKeystroke(); - - TBuf showbuf; - showbuf = popup->GetEEPContent(); - - if ( strokePos > 0 ) - { - baseBuf.Append( zhuyinSymbols->MdcaPoint( strokePos - 1 ) ); - } - TInt insert = zhuyinKeyHandler->GetToneMark( baseBuf, buf ); - if ( insert == 0 ) - { - zhuyinSymbols->Delete ( strokePos - 1, 1 ); - zhuyinSymbols->InsertL(strokePos - 1, buf); - } - // for insert - else if ( insert == 1) - { - if ( showbuf.Length() >= KMaxInputLength ) - { - return EFalse; - } - zhuyinSymbols->InsertL(strokePos, buf); - editPane->SetCursorIndexOfKeystroke(strokePos + 1); - } - return ETrue; - } - -TBool TAknFepInputStateZhuyinPhraseCreationBase::DeleteZhuyinSymbolOrChinese() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - MAknFepUICtrlPinyinPopup* popup = uiContainer->PinyinPopupWindow(); - CDesCArrayFlat* zhuyinSymbols = popup->ZhuyinSymbols(); - CDesCArrayFlat* chineseDisped = popup->ChineseCharsDisped(); - CDesCArrayFlat* zhuyinSymbolsForChinese = popup->ZhuyinSymbolsForChineseCharsDisped(); - TInt keyStrokePos = editPane->GetCursorIndexOfKeystroke(); - - if ( 1 == keyStrokePos ) - { - editPane->Reset(); - } - - if ( keyStrokePos != 0 ) - { - TZhuyinSymbolsMethods::DeleteZhuyinSymbol( - zhuyinSymbols, - keyStrokePos); - editPane->SetCursorIndexOfKeystroke(keyStrokePos-1); - } - else if ( chineseDisped->Count() ) - { - TInt oldLen = zhuyinSymbols->Count(); - TZhuyinSymbolsMethods::DeleteChineseChar( - zhuyinSymbols, - chineseDisped, - zhuyinSymbolsForChinese - ); - TInt newLen = zhuyinSymbols->Count(); - editPane->SetCursorIndexOfKeystroke(newLen - oldLen); - } - return ETrue; - } - -TBool TAknFepInputStateZhuyinPhraseCreationBase::UpdateEEPContent() - { - CPtiEngine* ptiengine = iOwner->PtiEngine(); - CDesCArrayFlat* zhuyinSymbols = UIContainer()->PinyinPopupWindow()->ZhuyinSymbols(); - CDesCArrayFlat* chineseDisped = UIContainer()->PinyinPopupWindow()->ChineseCharsDisped(); - CAknFepZhuyinAnalyser* analyser = iOwner->ZhuyinAnalyser(); - CDesCArrayFlat* candidateList = UIContainer()->CandidatePane()->CandidateArray(); - TBuf buf; - TBool isPhraseCreation = EFalse; - TInt extLen = chineseDisped->Count() + zhuyinSymbols->Count() - KMaxInputLength; - - if ( extLen > 0 ) - { - TInt keyStrokePos = UIContainer()->EditPaneWindow()->GetCursorIndexOfKeystroke(); - zhuyinSymbols->Delete ( zhuyinSymbols->Count() - extLen, extLen ); - if ( keyStrokePos > zhuyinSymbols->Count() ) - { - UIContainer()->EditPaneWindow()->SetCursorIndexOfKeystroke( zhuyinSymbols->Count() ); - } - } - - TBool valid = TZhuyinSymbolsMethods::UpdateEEPContent( - ptiengine, - analyser, - zhuyinSymbols, - chineseDisped, - candidateList, - buf, - isPhraseCreation - ); - - if ( ( chineseDisped->Count() != 0 || zhuyinSymbols->Count() > 1 ) && - ( candidateList->Count() != 0 ) ) - { - for ( TInt i = 0; i < candidateList->Count(); ++i ) - { - if ( TZhuyinSymbolsMethods::IsZhuyinSymbol( candidateList->MdcaPoint( i ) ) ) - { - candidateList->Delete( i, 1 ); - break; - } - } - } - UIContainer()->PinyinPopupWindow()->SetEEPContentValid(valid); - UIContainer()->CandidatePane()->SplitPhraseCandidatesIntoPages(); - if ( !valid || candidateList->Count() == 0 ) - { - DeleteSeparatorWhenInvaild( buf ); - valid = EFalse; - } - CheckShowInfo( buf, zhuyinSymbols ); - UIContainer()->PinyinPopupWindow()->SetEEPContent(buf); - return valid; - } - -void TAknFepInputStateZhuyinPhraseCreationBase::UpdateIndicator() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane(); - TInt candidateCount = candidatePane->CandidateArray()->Count(); - - if ( candidatePane->IsFirstPage() || candidateCount== 0 ) - { - uiContainer->CandidatePane()->ShowUpScrollArrows( EFalse ); - } - else - { - uiContainer->CandidatePane()->ShowUpScrollArrows( ETrue ); - } - - if ( candidatePane->IsLastPage() || candidateCount== 0 ) - { - uiContainer->CandidatePane()->ShowDownScrollArrows( EFalse ); - } - else - { - uiContainer->CandidatePane()->ShowDownScrollArrows( ETrue ); - } - } - -// --------------------------------------------------------- -// Get high light begine position. -// --------------------------------------------------------- -// -TInt TAknFepInputStateZhuyinPhraseCreationBase::BegPosOfMoreThanSeven() - { - TInt i = 0; - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - TBuf buf; - buf = uiContainer->PinyinPopupWindow()->GetEEPContent(); - TInt characterCount = uiContainer->PinyinPopupWindow()->ChineseCharsDisped()->Count(); - TInt allTextCount = characterCount; - - // calculate the total number of character according to stroke - for (i = 0; i < buf.Length() && allTextCount < KMaxPhraseCreationCount; i++ ) - { - if ( ( buf.Mid( i, 1 ) == KStrokeManualSeparator )|| - ( buf.Mid( i, 1 ) == KToneMark1 ) || - ( buf.Mid( i, 1 ) == KToneMark2 ) || - ( buf.Mid( i, 1 ) == KToneMark3 ) || - ( buf.Mid( i, 1 ) == KToneMark4 ) || - ( buf.Mid( i, 1 ) == KToneMark5 ) ) - { - allTextCount++; - } - } - - allTextCount++; - - if ( allTextCount > KMaxPhraseCreationCount ) - { - return i; - } - else - { - return 0; - } - } - -// --------------------------------------------------------- -// Set high light. -// --------------------------------------------------------- -// -void TAknFepInputStateZhuyinPhraseCreationBase::HighlightMoreThanSeven( TInt aBegPos ) - { - MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow(); - TBuf buf; - buf = UIContainer()->PinyinPopupWindow()->GetEEPContent(); - TInt EndPos = buf.Length(); - editPane->SetHighlight( aBegPos, EndPos ); - } - -// --------------------------------------------------------- -// replace the keystroke. -// --------------------------------------------------------- -// -TBool TAknFepInputStateZhuyinPhraseCreationBase::ReplaceKeystrokeL( - TInt aIndex, - TInt aChineseCount, - const TDesC& aSymbol, - CDesCArrayFlat* aZhuyinSymbol ) - { - TBuf<1> bufTmp; - bufTmp.Append( aZhuyinSymbol->MdcaPoint( aIndex - 1 ) ); - aZhuyinSymbol->Delete( aIndex - 1 ); - aZhuyinSymbol->InsertL( aIndex - 1, aSymbol ); - if ( CheckKeystrokeCountL( aChineseCount, aZhuyinSymbol ) ) - { - return ETrue; - } - else - { - aZhuyinSymbol->Delete( aIndex - 1 ); - aZhuyinSymbol->InsertL( aIndex - 1, bufTmp ); - return EFalse; - } - } - -void TAknFepInputStateZhuyinPhraseCreationBase::RefreshUI() - { - MAknFepUICtrlContainerChinese* uiContainer = UIContainer(); - MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow(); - CDesCArrayFlat* zhuyinSymbols = uiContainer->PinyinPopupWindow()->ZhuyinSymbols(); - CDesCArrayFlat* chineseDisped = uiContainer->PinyinPopupWindow()->ChineseCharsDisped(); - - CDesCArrayFlat* candidateList = uiContainer->CandidatePane()->CandidateArray(); - - // get cursor position - TPoint baseLine; - TInt height(0); - TInt ascent(0); - TRAPD(ret,iOwner->FepMan()-> - GetScreenCoordinatesL(baseLine,height,ascent)); - if ( ret == KErrNone ) - { - uiContainer->SetContainerPosition( baseLine, height ); - } - TBuf seed; - TBool valid = ETrue; - TBuf buf; - buf = uiContainer->PinyinPopupWindow()->GetEEPContent(); - valid = uiContainer->PinyinPopupWindow()->GetEEPContentValid(); - - TBool isHighlight = EFalse; - TInt zhuyinBegPos = chineseDisped->Count(); - - TRAP_IGNORE( isHighlight = !iOwner->ZhuyinAnalyser()->AnalyzeL( buf.Mid( zhuyinBegPos ) ) ); - CheckShowInfo( buf, zhuyinSymbols ); - - TInt keyStrokePos = editPane->GetCursorIndexOfKeystroke(); - if ( keyStrokePos > zhuyinSymbols->Count() + 1 ) - { - keyStrokePos = zhuyinSymbols->Count(); - editPane->SetCursorIndexOfKeystroke( keyStrokePos ); - } - TInt newCursorPos = TZhuyinSymbolsMethods::RefreshCursorPos( - chineseDisped->Count(),buf,keyStrokePos); - - TZhuyinSymbolsMethods::Convert2Des(zhuyinSymbols,seed); - editPane->SetTextForZhuyin(buf,newCursorPos,chineseDisped->Count(),seed,keyStrokePos,!valid); - if ( !valid || isHighlight - || candidateList->Count()== 0 || zhuyinSymbols->Count() == 0 ) - { - uiContainer->CandidatePane()->SetInVisiable(); - editPane->SetHighlight(chineseDisped->Count(),buf.Length()-1); - uiContainer->SetControlInVisible( EFalse ); - uiContainer->Enable( ETrue ); - uiContainer->ShowHorizontalScrollArrows( EFalse ); - uiContainer->ShowVerticalScrollArrows( EFalse ); - } - else - { - uiContainer->SetControlInVisible( ETrue ); - uiContainer->CandidatePane()->SetCandidateBuffer(); - uiContainer->CandidatePane()->SelectFirstPhrase(); - uiContainer->Enable( ETrue ); - uiContainer->ShowVerticalScrollArrows( ETrue ); - } - TInt begPos = BegPosOfMoreThanSeven(); - - if ( begPos ) - { - HighlightMoreThanSeven( begPos ); - } - - UpdateIndicator(); - } - -// --------------------------------------------------------- -// Check the keystroke count. -// --------------------------------------------------------- -// -TBool TAknFepInputStateZhuyinPhraseCreationBase::CheckKeystrokeCountL( - TInt aChineseCount, - CDesCArrayFlat* aZhuyinSymbol ) - { - TBuf inputBuf; - - for (TInt i = 0; i < aZhuyinSymbol->Count(); ++i ) - { - inputBuf.Append( aZhuyinSymbol->MdcaPoint( i ) ); - } - - if ( !iOwner->ZhuyinAnalyser()->AnalyzeL( inputBuf ) ) - { - return ETrue; - } - else - { - HBufC* showBuf = iOwner->ZhuyinAnalyser()->LastAnalysisResult(); - if ( showBuf->Length() > KMaxInputLength - aChineseCount ) - { - return EFalse; - } - } - return ETrue; - } - -void TAknFepInputStateZhuyinPhraseCreationBase::HandleCommandL(TInt /*aCommandId*/) - { - RefreshUI(); - } - -void TAknFepInputStateZhuyinPhraseCreationBase::CheckShowInfo( TDes& aOutDes, - CDesCArrayFlat* aZhuyinSymbol ) - { - if( aOutDes.Length() <= KMaxInputLength ) - { - return; - } - TInt extLen = aOutDes.Length() - KMaxInputLength; - TInt delCount = 0; - TBuf delBuf; - delBuf.Copy( aOutDes.Mid( KMaxInputLength ) ); - aOutDes.Delete( KMaxInputLength, extLen ); - if ( aOutDes.Mid( KMaxInputLength - 1, 1 ). - Compare( KStrokeManualSeparator ) == 0 ) - { - aOutDes.Delete( KMaxInputLength - 1, 1 ); - } - - for ( TInt i = 0; i < delBuf.Length(); i++ ) - { - if ( delBuf.Mid( i, 1 ).Compare( KStrokeManualSeparator ) != 0 ) - { - delCount++; - } - } - - for ( TInt i = 0; i < delCount; i++ ) - { - aZhuyinSymbol->Delete( aZhuyinSymbol->Count() - 1 ); - } - } - -// --------------------------------------------------------- -// Change CBA -// --------------------------------------------------------- -// -void TAknFepInputStateZhuyinPhraseCreationBase::ChangeCbaL() - { - MAknFepUICtrlPinyinPopup* popup = UIContainer()->PinyinPopupWindow(); - CDesCArrayFlat* zhuyinSymbol = popup->ZhuyinSymbols(); - CDesCArrayFlat* chineseArray = popup->ChineseCharsDisped( ); - CDesCArrayFlat* candidateArray = UIContainer()->CandidatePane()->CandidateArray( ); - TBool vaild = popup->GetEEPContentValid( ); - TInt lastRes = popup->GetLastResouce(); - - if ( chineseArray->Count( ) == KMaxPhraseCreationCount ) - { - if ( lastRes == R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ) - { - return; - } - //User cba done-done-cancel - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - } - else if ( ( 0 != zhuyinSymbol->Count( ) ) && (candidateArray->Count( ) - != 0 ) && vaild ) - { - if ( lastRes == R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ) - { - return; - } - //User cba select-select-cancel - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS_PHRASE_CREATION_SELECT_CANCEL_SELECT ); - } - else if ( (chineseArray->Count( ) > 1 ) - && ( 0 == zhuyinSymbol->Count( ) ) ) - { - if ( lastRes == R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ) - { - return; - } - //User cba Done-Done-Cancel - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE ); - } - else - { - if ( lastRes == R_AKNFEP_SOFTKEYS__PHRASE_CREATION_EMPTY_CANCEL_EMPTY ) - { - return; - } - iOwner->FepMan()->UpdateCbaL( R_AKNFEP_SOFTKEYS__PHRASE_CREATION_EMPTY_CANCEL_EMPTY ); - popup->SetLastResouce( R_AKNFEP_SOFTKEYS__PHRASE_CREATION_EMPTY_CANCEL_EMPTY ); - } - } - -void TAknFepInputStateZhuyinPhraseCreationBase::DeleteSeparatorWhenInvaild( TDes& aDes ) - { - TInt count = aDes.Length(); - for ( TInt i = count - 1; i > 0; i-- ) - { - if ( aDes.Mid( i, 1 ).Compare( KStrokeManualSeparator ) == 0 ) - { - aDes.Delete( i, 1 ); - } - } - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuimanagerfingeritutchinese.cpp --- a/fep/aknfep/src/aknfepuimanagerfingeritutchinese.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,172 +0,0 @@ -/* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Chinese finger ITUT ui manager implementation file. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include -#include -#include -#include - -#include "AknFepUiManagerBase.h" -#include "aknfepuimanagerfingeritutchinese.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepGlobalEnums.h" -#include "aknfepuifingeritutinputstategeneric.h" -#include "AknFepCaseManager.h" -#include "AknFepPanic.h" - -//============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------------------------- -// Symbian constructor -// --------------------------------------------------------------------------- -// -CAknFepUIManagerFingerItutChinese* CAknFepUIManagerFingerItutChinese::NewL( - MAknFepManagerUIInterface* aFepMan, CAknFepCaseManager* aCaseMan, - TLanguage aLanguage, CAknFepPluginManager* aPluginMager) - { - CAknFepUIManagerFingerItutChinese* self = new(ELeave) - CAknFepUIManagerFingerItutChinese(aFepMan, aCaseMan, aPluginMager); - - CleanupStack::PushL(self); - self->ConstructL(aLanguage); - CleanupStack::Pop(); - - return self; - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -CAknFepUIManagerFingerItutChinese::~CAknFepUIManagerFingerItutChinese() - { - } - -// --------------------------------------------------------------------------- -// Handle key event -// --------------------------------------------------------------------------- -// -TBool CAknFepUIManagerFingerItutChinese::HandleKeyL( TInt aKey, TKeyPressLength aLength, - TEventCode /*aEventCode*/ ) - { - TUIState currentState = iFepUiState.State(); - if (aLength == EShortKeyPress) - { - iInitialFepUIState = currentState; - } - - if(!iPluginMager->CurrentPluginInputFepUI()->HandleKeyL( - aKey == EStdKeyNull ? EPtiKeyStar : aKey , aLength)) - { - return iStatePtr->HandleKeyL(aKey, aLength); // Failed to handle it - } - - return ETrue; // It is ok. - } - -// --------------------------------------------------------------------------- -// Close current Finger ITUT ui -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerFingerItutChinese::CloseUI() - { - } - -// --------------------------------------------------------------------------- -// Input mode is supported by this ui -// --------------------------------------------------------------------------- -// -TInt CAknFepUIManagerFingerItutChinese::SupportLanguage(TInt /*aMode*/) const - { - return iLanguage; - } - -// --------------------------------------------------------------------------- -// Change state machine -// --------------------------------------------------------------------------- -// -TUIState CAknFepUIManagerFingerItutChinese::ChangeState(TUIState /* aState*/) - { - // ask pti engine if phrase input is supported - return iStatePtr->State(); - } - -// --------------------------------------------------------------------------- -// Get current fep ui state machine -// --------------------------------------------------------------------------- -// -TAknFepInputStateBase* CAknFepUIManagerFingerItutChinese::FepUIState() - { - return &iFepUiState; - } - -// --------------------------------------------------------------------------- -// Set current input language -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerFingerItutChinese::SetInputLanguageL(TLanguage aLanguage) - { - iLanguage = aLanguage; - } - -// --------------------------------------------------------------------------- -// C++ default constructor -// --------------------------------------------------------------------------- -// -CAknFepUIManagerFingerItutChinese::CAknFepUIManagerFingerItutChinese( - MAknFepManagerUIInterface* aFepMan, - CAknFepCaseManager* aCaseMan, - CAknFepPluginManager* aPluginMager) - : CAknFepUIManagerBase(aFepMan, aCaseMan), - iFepUiState(NULL), - iPrevMode(ENumber), - iPluginMager(aPluginMager) - { - } - -// --------------------------------------------------------------------------- -// Symbian second-phase constructor -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerFingerItutChinese::ConstructL(TLanguage aLanguage) - { - CAknFepUIManagerBase::ConstructL(aLanguage); - SetMode(iFepMan->InputMode(), ETrue, EFalse); - iFepUiState = TAknFepUIFingerItutInputStateChineseGeneric(this/*, NULL*/); - } - -// --------------------------------------------------------------------------- -// Change ITUT state machine -// --------------------------------------------------------------------------- -// -void CAknFepUIManagerFingerItutChinese::ChangeStatetItut(TUIState /* aState*/) - { - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuispellcontainer.cpp --- a/fep/aknfep/src/aknfepuispellcontainer.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,265 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the CAknFepUiSpellContainer methods. -* -*/ - - - - - - - - - - - - -// INCLUDE FILES -#include // for CEikGlobalTextEditor -#include // for CTextListBoxModel -#include // for CColumnListBoxData -#include // for CEikButtonGroupContainer -#include // for TResourceReader -#include // for CEikColumnListBox -#include // for CAknInformationNote -#include // for Layout stuff -#include -#include -#include - -#include "aknfepuispellcontainer.h" -#include "aknfepuispellinputpane.h" - -// CONSTANTS -const TInt KNumberOfContainerControl = 1; - -// Enumarations -enum TControls - { - EInputPane - }; - -// ================= MEMBER FUNCTIONS ====================== - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::CAknFepUiSpellContainer -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CAknFepUiSpellContainer::CAknFepUiSpellContainer() -:iInputPane( NULL ) - { - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::InputPane -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CAknFepUiSpellInputPane* CAknFepUiSpellContainer::InputPane() - { - return iInputPane; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::SetInputWinObserver -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellContainer::SetInputWinObserver( MEikEdwinObserver* aObserver ) - { - iInputPane->SetInputWinObserver(aObserver); - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::ConstructL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellContainer::ConstructL(const TInt aEditorFlag, - const TInt aEditorCase, const TInt aEditorSCTResID) - { - CreateWindowL(); - - iInputPane = CAknFepUiSpellInputPane::NewL( this, aEditorFlag, aEditorCase,aEditorSCTResID); - - iInputPane->SetMopParent(this); - - iInputPane->SetFocus( ETrue ); - SetContainerRect(); - - iEikonEnv->EikAppUi()->AddToStackL(this,ECoeStackPriorityDialog); - ActivateL(); - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::NewL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CAknFepUiSpellContainer* CAknFepUiSpellContainer::NewL(const TInt aEditorFlag, - const TInt aEditorCase, const TInt aEditorSCTResID) - { - CAknFepUiSpellContainer* self = new ( ELeave ) CAknFepUiSpellContainer(); - CleanupStack::PushL( self ); - - self->SetMopParent(CEikonEnv::Static()->EikAppUi()); - self->ConstructL(aEditorFlag, aEditorCase, aEditorSCTResID); - - CleanupStack::Pop(); - - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::~CAknFepUiSpellContainer -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CAknFepUiSpellContainer::~CAknFepUiSpellContainer() - { - iEikonEnv->EikAppUi()->RemoveFromStack(this); - - delete iInputPane; - iInputPane = NULL; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::CountComponentControls -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TInt CAknFepUiSpellContainer::CountComponentControls() const - { - return KNumberOfContainerControl; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::ComponentControl -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CCoeControl* CAknFepUiSpellContainer::ComponentControl( TInt aIndex ) const - { - switch ( aIndex ) - { - case EInputPane: - { - return iInputPane; - } - default: - { - return NULL; - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::Draw -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellContainer::Draw( const TRect& /*aRect*/ ) const - { - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::InputCapabilities -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TCoeInputCapabilities CAknFepUiSpellContainer::InputCapabilities() const - { - if ( iInputPane && iInputPane->IsFocused()) - { - return iInputPane->InputCapabilities(); - } - - return ENone; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::OfferKeyEventL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TKeyResponse CAknFepUiSpellContainer::OfferKeyEventL( - const TKeyEvent& aKeyEvent, TEventCode aType ) - { - if ( iInputPane && iInputPane->IsFocused()) - { - return iInputPane->OfferKeyEventL( aKeyEvent, aType ); - } - - return EKeyWasNotConsumed; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::SizeChanged -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellContainer::SizeChanged() - { - iInputPane->SetRect(Rect()); - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::SetContainerRect -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellContainer::FocusChanged(TDrawNow aDrawNow) - { - TBool bFocused = IsFocused() ? ETrue : EFalse; - - if ( ComponentControl( 0 ) ) - { - ComponentControl( 0 )->SetFocus( bFocused, aDrawNow ); - } - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellContainer::SetContainerRect -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellContainer::SetContainerRect() - { - TAknWindowLineLayout appWnd = AknLayoutScalable_Apps::application_window().LayoutLine(); - TAknWindowLineLayout mainPane; - if ( Layout_Meta_Data::IsLandscapeOrientation()) - { - mainPane = AknLayoutScalable_Apps::main_pane(4).LayoutLine(); - } - else - { - mainPane = AknLayoutScalable_Apps::main_pane(0).LayoutLine(); - } - - TAknLayoutRect mainPaneRect; - mainPaneRect.LayoutRect(appWnd.Rect(), mainPane); - - mainPaneRect.Rect(); - - TInt ay = mainPaneRect.Rect().iTl.iY + - ((mainPaneRect.Rect().iBr.iY - mainPaneRect.Rect().iTl.iY) / 5)*4; - - TRect containerRect(0, ay, mainPaneRect.Rect().iBr.iX, mainPaneRect.Rect().iBr.iY); - TRect tempRect = TRect(0,0,1,1); - SetRect(tempRect); - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuispellinputpane.cpp --- a/fep/aknfep/src/aknfepuispellinputpane.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,257 +0,0 @@ -/* -* Copyright (c) Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Provides the CAknFepUiSpellInputPane methods. -* -*/ - - - - - - - - - - - - -#include // for CEikGlobalTextEditor -#include // for MEikEdwinObserver -#include // for CEikonEnv -#include // for TResourceReader -#include // for CEikLable -#include -#include -#include // for Layout stuff -#include -#include - -#include "aknfepuispellinputpane.h" - -// CONSTANTS -const TInt KNumberOfControl = 1; -const TInt KSpellMaxLength = 32; -const TInt KTouchSpellEditorMaxLine = 1; -// Enumarations -enum TControls - { - EInputWin - }; - -// ================= MEMBER FUNCTIONS ====================== - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::CAknFepUiSpellInputPane -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CAknFepUiSpellInputPane::CAknFepUiSpellInputPane() -:iInputWin( NULL ) -{ -} - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::CAknFepUiSpellInputPane -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellInputPane::ConstructL( CCoeControl* aParent, - const TInt aEditorFlag, const TInt aEditorCase, - const TInt aEditorSCTResID ) -{ - // Create as a child window of the specified parent control's window. - CreateWindowL( aParent ); - - SetMopParent(aParent); - - // Create input editor - iInputWin = new ( ELeave ) CEikEdwin; - // Initialize the editor - iInputWin->SetContainerWindowL( *this ); - iInputWin->ConstructL(0,0,0,KTouchSpellEditorMaxLine); - - iInputWin->SetAknEditorInputMode(EAknEditorTextInputMode); - iInputWin->SetAknEditorSpecialCharacterTable(aEditorSCTResID); - iInputWin->SetAknEditorFlags(iInputWin->AknEdwinFlags() | - aEditorFlag | EAknEditorFlagNoT9); - iInputWin->SetAknEditorCase(aEditorCase); - iInputWin->SetMaxLength(KSpellMaxLength); - iInputWin->SetMopParent(this); - iInputWin->SetFocus( EFalse ); - - iInputWin->ActivateL(); - - ActivateL(); -} - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::NewL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CAknFepUiSpellInputPane* CAknFepUiSpellInputPane::NewL( - CCoeControl* aParent, const TInt aEditorFlag, - const TInt aEditorCase, const TInt aEditorSCTResID) - { - CAknFepUiSpellInputPane* self = new ( ELeave ) CAknFepUiSpellInputPane; - - CleanupStack::PushL( self ); - self->ConstructL( aParent, aEditorFlag, aEditorCase, aEditorSCTResID ); - CleanupStack::Pop(); - - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::~CAknFepUiSpellInputPane -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CAknFepUiSpellInputPane::~CAknFepUiSpellInputPane() - { - delete iInputWin; - iInputWin = NULL; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::InputWin -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CEikEdwin* CAknFepUiSpellInputPane::InputWin() const - { - return iInputWin; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::SetInputWinObserver -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellInputPane::SetInputWinObserver( MEikEdwinObserver* aObserver ) - { - iInputWin->SetEdwinObserver( aObserver ); - } - - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::SetInputWinTextL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellInputPane::SetInputWinTextL( const TDesC* aDes ) - { - iInputWin->SetTextL( aDes ); - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::SelectAllL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellInputPane::SelectAllL() - { - iInputWin->SelectAllL(); - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::InputCapabilities -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TCoeInputCapabilities CAknFepUiSpellInputPane::InputCapabilities() const - { - if (iInputWin->IsFocused()) - { - return iInputWin->InputCapabilities(); - } - - return ENone; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::OfferKeyEventL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TKeyResponse CAknFepUiSpellInputPane::OfferKeyEventL( - const TKeyEvent& aKeyEvent, TEventCode aType ) - { - if (iInputWin->IsFocused()) - { - return iInputWin->OfferKeyEventL( aKeyEvent, aType ); - } - - return EKeyWasNotConsumed; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::CountComponentControls -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TInt CAknFepUiSpellInputPane::CountComponentControls() const - { - return KNumberOfControl; - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::ComponentControl -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CCoeControl* CAknFepUiSpellInputPane::ComponentControl( TInt aIndex ) const - { - switch ( aIndex ) - { - case EInputWin: - { - return iInputWin; - } - default: - { - return NULL; - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::Draw -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellInputPane::Draw( const TRect& /*aRect*/ ) const - { - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::FocusChanged -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellInputPane::FocusChanged( TDrawNow aDrawNow ) - { - iInputWin->SetFocus( IsFocused(), aDrawNow ); - } - -// --------------------------------------------------------------------------- -// CAknFepUiSpellInputPane::SizeChanged -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepUiSpellInputPane::SizeChanged() - { - } - -// End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuserdbdlg.cpp --- a/fep/aknfep/src/aknfepuserdbdlg.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1089 +0,0 @@ -/* -* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement method in dialog for user DB management -* -*/ - - - - - - - - - - - - -#include // CAknSingleStyleListBox -#include // TResource Reader -#include // CColumnListBoxData -#include //CAknSearchField -#include //CAknTextQueryDialog -#include //AknSelectionService , CAknFilteredTextListBoxModel -#include //StringLoader -#include //CAknWarningNote -#include //CAknProgressDialog -#include //CAknDialog -#include //CAknContextPane -#include //CAknWaitDialog -#include //CAknProgressDialog -#include //CEikProgressInfo -#include //CEikButtonGroupContainer -#include -#include //CCnvCharacterSetConverter -#include //RFs -#include //CEikEdwin -#include //CAknTitlePane -#include -#include "AknFep.hrh" -#include "aknfepuserdbdlg.h" -#include "dbmanagement.h" -#include "AknFepManagerUIInterface.h" -#include "AknFepManager.h" -#include "aknfepuserdbquerydlg.h" - -const TInt KListBoxItemMaxLength = 8; -const TInt KErrMsgMaxLength = 60; -const TInt KFindBoxInputMaxLength = 7; -const TInt KCDesCArraySize = 1; -_LIT( KItemStart, "\t" ); -_LIT( KSearchTextEmpty, "" ); - -CAknFepUserdbDlg::CAknFepUserdbDlg( - TInt &aValue, CArrayFix< TInt> *aSelectedItems, MDesCArray *aArray, - CPtiEngine* aPtiEngine, CAknFepManager* aOwner, MEikCommandObserver *aObserver) : - CAknMarkableListDialog( aValue, aSelectedItems, aArray, aObserver ), - iPtiEngine( aPtiEngine ), - iOwner( aOwner ), - iOldIndex( 0 ), - iOldLanguage( 0 ), - iOldCbaRes( 0 ) - { - // No implementation required - } - -CAknFepUserdbDlg::~CAknFepUserdbDlg() - { - delete iDBEngine; - iDBEngine = NULL; - iPtiEngine = NULL; - iOwner = NULL; - iQueryDlg = NULL; - if ( iEikonEnv && iContextMenuBar ) - { - iEikonEnv->EikAppUi()->RemoveFromStack( iContextMenuBar ); - delete iContextMenuBar; - } - } - -CAknFepUserdbDlg* CAknFepUserdbDlg::NewL( - TInt &aOpenedItem, CArrayFix< TInt> *aSelectedItems, MDesCArray *aArray, - TInt aMenuBarResourceId, CPtiEngine* aPtiEngine, CAknFepManager* aOwner, - MEikCommandObserver *aObserver ) - { - CAknFepUserdbDlg* self = new( ELeave ) CAknFepUserdbDlg( aOpenedItem, - aSelectedItems, aArray, aPtiEngine, aOwner, aObserver ); - CleanupStack::PushL( self ); - self->ConstructL( aMenuBarResourceId ); - CleanupStack::Pop( self ); // self; - return self; - } - -void CAknFepUserdbDlg::ConstructL( TInt aMenuBarResourceId ) - { - CAknSelectionListDialog::ConstructL( aMenuBarResourceId ); - this->PrepareLC( R_AKNFEP_LISTDLG_DIALOG ); - HBufC* message = StringLoader::LoadLC( R_AKNFEP_USER_DB_LIST_NO_ITEM_TEXT ); - ListBox()->View()->SetListEmptyTextL( *message ); - ConstructContextMenuL(); - - //the DB engine init - iDBEngine = CDBManagement::NewL( iOwner ); - CleanupStack::PopAndDestroy( message ); //message - } - -TBool CAknFepUserdbDlg::InitListBoxItemL() - { - iItems = new( ELeave ) CDesCArrayFlat( KCDesCArraySize ); - - TBuf errMsg; - - //get the phrases from the DB - if ( !iDBEngine->GetPhraseFromDBL( *iItems ) ) - { - iDBEngine->GetErrMsg( errMsg ); - //note fot err message - CAknWarningNote* note = new( ELeave ) CAknWarningNote(); - note->SetTone( CAknNoteDialog::EWarningTone ); - note->ExecuteLD( errMsg ); - } - else - { - InsertIconL( iItems ); - } - CAknSingleStyleListBox* listBox= - static_cast( Control( ESelectionListControl ) ); - CTextListBoxModel* model = listBox->Model(); - if ( iItems && iItems->Count() != 0 ) - { - model->SetItemTextArray( iItems ); - model->SetOwnershipType( ELbmOwnsItemArray ); - ListBox()->HandleItemAdditionL(); - return ETrue; - } - else - { - model->SetItemTextArray( iItems ); - model->SetOwnershipType( ELbmOwnsItemArray ); - return EFalse; - } - } - -void CAknFepUserdbDlg::AddItemL() - { - CAknSingleStyleListBox* listbox = - static_cast( Control( ESelectionListControl ) ); - // New item text - TBuf itemText; - TBuf errMsg; - if ( FindBox()->TextLength() != 0 ) - { - FindBox()->GetSearchText( itemText ); - } - FindBox()->SetFocus( EFalse ); - HBufC* prompt = StringLoader::LoadLC( R_AKNFEP_USER_DB_LIST_ADD_ITEM_TEXT ); - CAknFepUserDBQueryDlg* dialog = - CAknFepUserDBQueryDlg::NewL( iDBEngine, itemText, *prompt ); - iQueryDlg = dialog; - CleanupStack::PopAndDestroy( prompt ); - //Execute dialog, - //In the dialog it will check input and show waring not - if ( dialog->ExecuteLD( R_AKNFEP_LISTBOX_DATA_QUERY_DIALOG ) ) - { - TInt currentIndex = 0; - CAknFilteredTextListBoxModel* model = - static_cast( ListBox()->Model() ); - CDesCArray* itemArray = - static_cast( model->ItemTextArray() ); - - //Add '\t' at the beginning of itemText for find - itemText.Insert( 0, KItemStart() ); - // - TInt ret = itemArray->Find( itemText, currentIndex, ECmpCollated); - if ( ret != 0 ) - { - //add the phrase to db - itemText.Trim(); - if ( !iDBEngine->AddPhraseToDB( itemText ) ) - { - iDBEngine->GetErrMsg( errMsg ); - //note fot err message - CAknWarningNote* note = new( ELeave ) CAknWarningNote(); - note->SetTone( CAknNoteDialog::EWarningTone ); - note->ExecuteLD( errMsg ); - // add by chen - return; - } - // Add '\t' in front of text - itemText.Insert( 0, KItemStart() ); - // Insert item to the item array - if ( itemArray->Count() > 0 ) - { - itemArray->InsertL( currentIndex, itemText ); - } - else - { - itemArray->InsertL( 0, itemText ); - } - // Update the listbox - listbox->HandleItemAdditionL(); - itemArray->Sort(ECmpCollated); - - FindBox()->SetSearchTextL( KSearchTextEmpty ); - ResetSearchFieldL(); - model->Filter()->HandleItemArrayChangeL(); - - //Highlight the item you have just edited - itemArray->Find( itemText, currentIndex, ECmpCollated ); - listbox->SetCurrentItemIndexAndDraw( currentIndex ); - - } - else - { - FindBox()->SetSearchTextL( KSearchTextEmpty ); - ResetSearchFieldL(); - listbox->SetCurrentItemIndexAndDraw( currentIndex ); - } - - model->Filter()->UpdateCachedDataL(); - UpdateListBoxL(); - } - } - -void CAknFepUserdbDlg::RemoveItemL() - { - //error message - TBuf errMsg; - TBuf removePhrase; - TInt oldIndex = ListBox()->View()->CurrentItemIndex(); - CAknFilteredTextListBoxModel* model = - static_cast( ListBox()->Model() ); - CDesCArrayFlat* item = - static_cast( model->ItemTextArray() ); - model->Filter()->UpdateSelectionIndexesL(); - TInt markItems = model->Filter()->SelectionIndexes()->Count(); - if ( markItems ) - { - HBufC * message = StringLoader::LoadLC( - R_AKNFEP_DELETE_CONFIRMATION_TEXT, markItems, - iEikonEnv ); //message - CAknQueryDialog* delsomenote = - CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone ); - delsomenote->SetPromptL( *message ); - if ( delsomenote->ExecuteLD( R_AKNFEP_DELETE_QUERY_DIALOG ) ) - { - iProgressDialog = new (ELeave) CAknProgressDialog( - ( REINTERPRET_CAST( CEikDialog**, &iProgressDialog ) ), ETrue ); - iProgressDialog->PrepareLC( R_AKNFEP_WAIT_DIALOG ); - iProgressInfo = iProgressDialog->GetProgressInfoL(); - iProgressInfo->SetFinalValue( markItems ); - iProgressDialog->RunLD(); - CArrayFix* selectionArray = new( ELeave ) CArrayFixFlat( markItems ); - CleanupStack::PushL( selectionArray ); //message, selectionArray - //loop for copy selection index - for ( TInt idx = markItems; idx > 0; idx-- ) - { - selectionArray->AppendL( model->Filter()->SelectionIndexes()->At( idx-1 ) ); - } - TKeyArrayFix* key= new (ELeave) TKeyArrayFix(0, ECmpTInt); - CleanupStack::PushL( key ); //message, selectionArray, key - //sort selection array - selectionArray->Sort( *key ); - CleanupStack::PopAndDestroy( key ); //message, selectionArray - // loop throught the selected item indexes, and delete items - for ( TInt idx = markItems; idx > 0; idx-- ) - { - // get the index of the selected item - TInt itemIndex = selectionArray->At( idx-1 ); - //romve the phrase form the db - removePhrase.Copy( item->MdcaPoint( itemIndex ) ); - removePhrase.Trim(); - if( !iDBEngine->RemovePhraseFromDB( removePhrase ) ) - { - iDBEngine->GetErrMsg( errMsg ); - iProgressDialog->ProcessFinishedL(); - iProgressDialog = NULL; - CleanupStack::PopAndDestroy( selectionArray ); //message - CleanupStack::PopAndDestroy( message );// - //note fot err message - CAknWarningNote* errnote = new( ELeave ) CAknWarningNote(); - errnote->SetTone( CAknNoteDialog::EWarningTone ); - errnote->ExecuteLD( errMsg ); - return; - } - iProgressInfo->IncrementAndDraw(1); - //delte the item - item->Delete( itemIndex ); - } - CleanupStack::PopAndDestroy( selectionArray ); //message - iProgressDialog->ProcessFinishedL(); - iProgressDialog = NULL; - - // Update the listbox - ResetSearchFieldL(); - ListBox()->HandleItemRemovalL(); - model->Filter()->HandleItemArrayChangeL(); - model->Filter()->SelectionIndexes()->Reset(); - ListBox()->View()->ClearSelection(); - } - CleanupStack::PopAndDestroy( message );// - } - else - { - HBufC * message = StringLoader::LoadLC( - R_AKNFEP_DELETE_CONFIRMATION_TEXT, 1, - iEikonEnv ); - CAknQueryDialog* delonenote = - CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone ); - delonenote->SetPromptL( *message ); - if ( delonenote->ExecuteLD( R_AKNFEP_DELETE_QUERY_DIALOG ) ) - { - //remove from db - removePhrase.Copy( model->ItemText( ListBox()->CurrentItemIndex() ) ); - removePhrase.Delete( 0, 1 ); - if( !iDBEngine->RemovePhraseFromDB( removePhrase ) ) - { - iDBEngine->GetErrMsg( errMsg ); - //note fot err message - CAknWarningNote* errnote = new( ELeave ) CAknWarningNote(); - errnote->ExecuteLD( errMsg ); - CleanupStack::PopAndDestroy( message ); - return; - } - TInt itemIndex = ListBox()->View()->CurrentItemIndex(); - //get the actual index of list - TInt actualIndex = FindActualIndex( itemIndex ); - // Remove highlighted item from the listbox. - item->Delete( actualIndex ); - // Update the listbox - ResetSearchFieldL(); - } - CleanupStack::PopAndDestroy( message ); - } - // If focused item is out of range, bring it forth - if ( ( ( item->Count()-1 ) >= 0 ) && FindBox()->TextLength() == 0 ) - { - if ( ( oldIndex > ( item->Count()-1 ) )) - { - ListBox()->SetCurrentItemIndexAndDraw( item->Count()-1 ); - } - else - { - ListBox()->SetCurrentItemIndexAndDraw( oldIndex ); - } - } - UpdateListBoxL(); - } - -void CAknFepUserdbDlg::EditItemL() - { - CAknSingleStyleListBox* listbox = - static_cast( Control( ESelectionListControl ) ); - - // If we don't have items, do nothing and return - if ( listbox->Model()->NumberOfItems() < 1 ) - { - return; - } - CTextListBoxModel* model = listbox->Model(); - // New item text - TBuf itemText; - TBuf errMsg; - TBuf itemOldText; - itemText.Copy( model->ItemText(listbox->CurrentItemIndex () ) ); - itemText.Trim(); - itemOldText.Copy( model->ItemText( listbox->CurrentItemIndex() ) ); - itemOldText.Trim(); - HBufC* prompt = StringLoader::LoadLC( R_AKNFEP_USER_DB_LIST_EDIT_ITEM_TEXT ); - CAknFepUserDBQueryDlg* dialog = - CAknFepUserDBQueryDlg::NewL( iDBEngine, itemText, *prompt ); - iQueryDlg = dialog; - CleanupStack::PopAndDestroy( prompt ); - // Execute dialog - if ( dialog->ExecuteLD( R_AKNFEP_LISTBOX_DATA_QUERY_DIALOG ) ) - { - TInt currentIndex = 0; - CDesCArray* itemArray = - static_cast( model->ItemTextArray() ); - - // Add '\t' in front of text for find - itemText.Insert( 0, KItemStart() ); - //Find if the text is exist - TInt ret = itemArray->Find( itemText, currentIndex, ECmpCollated ); - if ( ret != 0 ) - { - //edit the phrase from db - itemText.Trim(); - if(!iDBEngine->EditPhraseFromDB( itemOldText, itemText ) ) - { - iDBEngine->GetErrMsg( errMsg ); - - //note fot err message - CAknWarningNote* note = new( ELeave ) CAknWarningNote(); - note->ExecuteLD( errMsg ); - return; - } - currentIndex = ListBox()->CurrentItemIndex(); - //get the actual index of list - TInt actualIndex = FindActualIndex( currentIndex ); - - // Remove highlighted item from the listbox. - itemArray->Delete( actualIndex ); - - // Add '\t' in front of text - itemText.Insert( 0, KItemStart() ); - - // Insert item to the item array - itemArray->InsertL( actualIndex, itemText ); - - // Update the listbox - listbox->HandleItemAdditionL(); - itemArray->Sort(ECmpCollated); - - if ( FindBox()->TextLength() != 0 ) - { - FindBox()->SetSearchTextL( KSearchTextEmpty ); - ResetSearchFieldL(); - } - - ListBox()->View()->ClearSelection(); - CAknFilteredTextListBoxModel* filterModel = - static_cast( ListBox()->Model() ); - filterModel->Filter()->HandleItemArrayChangeL(); - filterModel->Filter()->UpdateCachedDataL(); - - //SetHightlight - itemArray->Find( itemText, currentIndex, ECmpCollated ); - ListBox()->SetCurrentItemIndexAndDraw( currentIndex ); - } - else - { - //get the actual index of list - TInt actualIndex = FindActualIndex( listbox->CurrentItemIndex() ); - if ( currentIndex != actualIndex ) - { - itemOldText.Copy( model->ItemText( listbox->CurrentItemIndex() ) ); - itemOldText.Trim(); - //Here need user db engine - if( !iDBEngine->RemovePhraseFromDB( itemOldText ) ) - { - iDBEngine->GetErrMsg( errMsg ); - - //note fot err message - CAknWarningNote* note = new( ELeave ) CAknWarningNote(); - note->ExecuteLD( errMsg ); - return; - } - - currentIndex = ListBox()->CurrentItemIndex(); - - //get the actual index of list - actualIndex = FindActualIndex( currentIndex ); - - // Remove highlighted item from the listbox. - itemArray->Delete( actualIndex ); - - listbox->HandleItemRemovalL(); - itemArray->Sort(ECmpCollated); - - if ( FindBox()->TextLength() != 0 ) - { - FindBox()->SetSearchTextL( KSearchTextEmpty ); - ResetSearchFieldL(); - } - - ListBox()->View()->ClearSelection(); - CAknFilteredTextListBoxModel* filterModel = - static_cast( ListBox()->Model() ); - filterModel->Filter()->HandleItemArrayChangeL(); - filterModel->Filter()->UpdateCachedDataL(); - - //SetHightlight - itemArray->Find( itemText, currentIndex, ECmpCollated ); - ListBox()->SetCurrentItemIndexAndDraw( currentIndex ); - } - } - UpdateListBoxL(); - } - } - -void CAknFepUserdbDlg::CmdMarkL( TInt aItemIndex, TBool aMark ) - { - CAknSingleStyleListBox* listbox = - static_cast( Control( ESelectionListControl ) ); - CTextListBoxModel* model = listbox->Model(); - TInt itemCount = model->NumberOfItems(); - CListBoxView* listBoxView = listbox->View(); - if ( aMark ) - { - for ( TInt i = 0; i < itemCount; i++ ) - if ( aItemIndex == -1 || aItemIndex == i ) - listBoxView->SelectItemL( i ); - } - else - { - for ( TInt i = 0; i < itemCount; i++ ) - { - if ( aItemIndex == -1 || aItemIndex == i ) - { - listBoxView->DeselectItem( i ); - } - } - } - CAknFilteredTextListBoxModel* filterModel = - static_cast( ListBox()->Model() ); - filterModel->Filter()->UpdateCachedDataL(); - } - -void CAknFepUserdbDlg::ChangeCurrentCbaL ( TInt aCbaResourceId ) - { - if ( iOwner->IsEntryPhrase() || iOldCbaRes == aCbaResourceId ) - { - return; - } - CEikButtonGroupContainer& cba = ButtonGroupContainer(); - cba.SetCommandSetL( aCbaResourceId ); - cba.AddCommandSetToStackL( aCbaResourceId ); - iOldCbaRes = aCbaResourceId; - cba.DrawNow(); - } - -void CAknFepUserdbDlg::ProcessCommandL( TInt aCommandId ) - { - HideMenu(); - - iContextMenuBar->StopDisplayingMenuBar(); - - switch ( aCommandId ) - { - case EAknCmdUserDBAdd: - { - AddItemL(); - } - break; - case EAknCmdUserDBEdit: - { - EditItemL(); - } - break; - case EAknCmdUserDBDelete: - { - RemoveItemL(); - } - break; - case EAknCmdMark: - case EAknMarkAll: - case EAknCmdUnmark: - case EAknUnmarkAll: - { - AknSelectionService::HandleMarkableListProcessCommandL( aCommandId, ListBox() ); - UpdateListBoxL( aCommandId ); - } - break; - default: - { - break; - } - } - } - -TBool CAknFepUserdbDlg::OkToExitL( TInt aButtonId ) - { - switch ( aButtonId ) - { - case EAknSoftkeyOptions: - { - CAknSelectionListDialog::DisplayMenuL(); // display the menu - } - break; - case EAknCmdUserDBAdd: - { - ProcessCommandL(EAknCmdUserDBAdd); - } - break; - case EAknSoftkeyMark: - { - TInt ItemCount = ListBox()->Model()->NumberOfItems(); - TInt selectedItem = ListBox()->SelectionIndexes()->Count(); - if ( selectedItem < 1 && ItemCount > 0 ) - { - //Show options-context-exit cba - ChangeCurrentCbaL ( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_CONTEXT ); - } - } - break; - case EAknSoftkeyUnmark: - { - TInt ItemCount = ListBox()->Model()->NumberOfItems(); - TInt selectedItem = ListBox()->SelectionIndexes()->Count(); - if ( selectedItem == 0 && ItemCount > 0 ) - { - //Show options-context-exit cba - ChangeCurrentCbaL ( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_CONTEXT ); - } - } - break; - case EAknSoftkeyContextOptions: - { - TInt items = ListBox()->Model()->NumberOfItems(); - if ( items ) - { - ShowContextMenuL(); - } - } - break; - case EAknCmdMark: - case EAknMarkAll: - case EAknCmdUnmark: - case EAknUnmarkAll: - { - ProcessCommandL( aButtonId ); - } - break; - case EAknSoftkeyExit: - { - return ETrue; - } - default: - { - break; - } - } - - return EFalse; - } - -void CAknFepUserdbDlg::FocusChanged(TDrawNow aDrawNow) - { - if ( aDrawNow == EDrawNow ) - { - if ( ( FindBox()->IsVisible() && !iOwner->IsEntryPhrase()) ) - { - FindBox()->SetFocus( ETrue ); - } - } - } - -void CAknFepUserdbDlg::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ) - { - if ( aResourceId == R_AKNFEP_USERDB_DLG_MENU ) - { - const CArrayFix* itemArray = ListBox()->SelectionIndexes(); - if ( itemArray->Count() != 0 ) - { - aMenuPane->SetItemDimmed( EAknCmdUserDBAdd, ETrue ); - aMenuPane->SetItemDimmed( EAknCmdUserDBEdit, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EAknCmdUserDBAdd, EFalse ); - aMenuPane->SetItemDimmed( EAknCmdUserDBEdit, EFalse ); - } - } - if ( aResourceId == R_AKNFEP_MARK_UNMARK_MENUPANE ) - { - TInt currentIndex = ListBox()->CurrentItemIndex(); - TInt selectedItem = ListBox()->SelectionIndexes()->Count(); - TInt listItems = ListBox()->Model()->NumberOfItems(); - - // Display mark, mark all - if ( selectedItem == 0 ) - { - aMenuPane->SetItemDimmed( EAknCmdUnmark, ETrue ); - aMenuPane->SetItemDimmed( EAknUnmarkAll, ETrue ); - return; - } - // Display unmark, unmark all - if ( selectedItem == listItems ) - { - aMenuPane->SetItemDimmed( EAknCmdMark, ETrue ); - aMenuPane->SetItemDimmed( EAknMarkAll, ETrue ); - return; - } - TBool isMarked = EFalse; - - for ( TInt i = 0; i < selectedItem; i++ ) - { - TInt selectedId = ListBox()->SelectionIndexes()->At( i ); - if ( selectedId == currentIndex ) - { - isMarked = ETrue; - } - } - - if ( isMarked ) - { - aMenuPane->SetItemDimmed( EAknCmdMark, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EAknCmdUnmark, ETrue ); - } - } - } - -TKeyResponse CAknFepUserdbDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - TKeyResponse ret(EKeyWasNotConsumed); - - CAknFilteredTextListBoxModel* filterModel = - static_cast( ListBox()->Model() ); - - TInt ItemCount = ListBox()->Model()->NumberOfItems(); - - ListBoxItemsChanged( ListBox() ); - - if ( ret != EKeyWasConsumed && aKeyEvent.iCode == EKeyPhoneEnd ) - { - TryExitL( EAknSoftkeyExit ); - return EKeyWasConsumed; - } - - TBool claerKeyPressed = ( aType == EEventKey ) && ( aKeyEvent.iCode == EKeyBackspace ); - if( claerKeyPressed && ItemCount > 0 && FindBox()->TextLength() == 0 ) - { - ProcessCommandL(EAknCmdUserDBDelete); - UpdateListBoxL(); - ret = EKeyWasConsumed; - } - else - { - if ( FindBox()->IsVisible() ) - { - ret = CAknMarkableListDialog::OfferKeyEventL( aKeyEvent, aType ); - } - else - { - ret = ListBox()->OfferKeyEventL( aKeyEvent, aType ); - } - } - - if ( ret != EKeyWasConsumed && aType == EEventKey && - aKeyEvent.iCode == EKeyOK ) - { - iContextMenuBar->TryDisplayMenuBarL(); - ret = EKeyWasConsumed; - } - - return ret; - } - -void CAknFepUserdbDlg::PostLayoutDynInitL() - { - CAknMarkableListDialog::PostLayoutDynInitL(); - FindBox()->Editor().SetMaxLength( KFindBoxInputMaxLength ); - ListBox()->SetObserver( this ); - ListBox()->AddItemChangeObserverL( this ); - - InitListBoxItemL(); - UpdateListBoxL(); - - return; - } - -void CAknFepUserdbDlg::ConstructContextMenuL() - { - CEikMenuBar* newMenuBar = new ( ELeave ) CEikMenuBar(); - CleanupStack::PushL( newMenuBar ); - newMenuBar->ConstructL - ( this, NULL, R_AKNFEP_USERDB_DLG_CONTEXT_MENUBAR ); - iEikonEnv->EikAppUi()->AddToStackL( newMenuBar, ECoeStackPriorityMenu, - ECoeStackFlagRefusesFocus ); - iContextMenuBar = newMenuBar; - CleanupStack::Pop( newMenuBar ); - } - -void CAknFepUserdbDlg::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType) - { - CTextListBoxModel* model = static_cast( ListBox()->Model() ); - CDesCArrayFlat* itemArray = - static_cast( model->ItemTextArray() ); - TInt listItems = itemArray->Count(); - - if ( !listItems ) - { - return; - } - - CAknSelectionListDialog::HandleListBoxEventL( ListBox(), aEventType ); - - switch ( aEventType ) - { - case EEventItemDoubleClicked: - { - TInt selectItems = ListBox()->SelectionIndexes()->Count(); - if ( selectItems ) - { - iOldIndex = ListBox()->CurrentItemIndex(); - MarkOrUnmarkItemL(); - } - else - { - ShowContextMenuL(); - } - } - break; - default: - break; - } - } - - -void CAknFepUserdbDlg::ResetSearchFieldL() - { - CAknFilteredTextListBoxModel* selectmodel = - static_cast( ListBox()->Model() ); - selectmodel->Filter()->HandleItemArrayChangeL(); - } - -TInt CAknFepUserdbDlg::FindActualIndex( const TInt aItemIndex ) - { - TInt itemIndex; - CTextListBoxModel* model = - static_cast( ListBox()->Model() ); - CDesCArrayFlat* itemArray = - static_cast( model->ItemTextArray() ); - //get the real index of list - TBuf itemText; - itemText.Copy( model->ItemText(aItemIndex) ); - itemArray->Find( itemText, itemIndex, ECmpCollated ); - return itemIndex; - } - -void CAknFepUserdbDlg::ShowContextMenuL() - { - iContextMenuBar->SetMenuTitleResourceId( R_AKNFEP_USERDB_DLG_CONTEXT_MENUBAR ); - iContextMenuBar->SetMenuType( CEikMenuBar::EMenuContext ); - iContextMenuBar->StopDisplayingMenuBar(); - iContextMenuBar->TryDisplayMenuBarL(); - iContextMenuBar->SetMenuTitleResourceId( R_AKNFEP_USERDB_DLG_MENUBAR ); - iContextMenuBar->SetMenuType( CEikMenuBar::EMenuOptions ); - } - -void CAknFepUserdbDlg::MarkOrUnmarkItemL() - { - TInt selectIndex = 0; - TKeyArrayFix* key= new (ELeave) TKeyArrayFix( 0, ECmpTInt32 ); - CleanupStack::PushL( key ); - TInt index = ListBox()->CurrentItemIndex(); - const CArrayFix* selectitemArray = ListBox()->SelectionIndexes(); - TInt ret = selectitemArray->Find( index, *key, selectIndex ); - if ( ret == 0) - { - ProcessCommandL( EAknCmdUnmark ); - } - else - { - ProcessCommandL( EAknCmdMark ); - } - CleanupStack::PopAndDestroy( key ); - } - -void CAknFepUserdbDlg::InsertIconL( CDesC16Array* aDataArray ) - { - TBuf itemText; - for ( TInt i = 0; i < aDataArray->Count(); i++ ) - { - itemText = aDataArray->MdcaPoint( i ); - itemText.Insert( 0, KItemStart ); - aDataArray->Delete( i ); - aDataArray->InsertL( i, itemText ); - } - aDataArray->Sort( ECmpCollated ); - } - -void CAknFepUserdbDlg::OnChangeLanguageL( TInt aInputLanguage ) - { - if ( aInputLanguage != ELangPrcChinese && - aInputLanguage != ELangTaiwanChinese && - aInputLanguage != ELangHongKongChinese ) - { - if ( iQueryDlg && iQueryDlg->IsVisible() ) - { - delete iQueryDlg; - iQueryDlg = NULL; - } - this->TryExitL( EAknSoftkeyExit ); - return; - } - if ( iOldLanguage == aInputLanguage ) - { - return; - } - iOldLanguage = aInputLanguage; - - CAknFilteredTextListBoxModel* model = - static_cast( ListBox()->Model() ); - CDesCArrayFlat* itemArray = - static_cast( model->ItemTextArray() ); - TBuf errMsg; - - AknSelectionService::HandleMarkableListProcessCommandL( EAknUnmarkAll, ListBox() ); - itemArray->Reset(); - - //get the phrases from the DB - if ( !iDBEngine->GetPhraseFromDBL( *itemArray ) ) - { - iDBEngine->GetErrMsg( errMsg ); - //note fot err message - CAknWarningNote* note = new( ELeave ) CAknWarningNote(); - note->SetTone( CAknNoteDialog::EWarningTone ); - note->ExecuteLD( errMsg ); - } - else - { - InsertIconL( itemArray ); - ListBox()->HandleItemAdditionL(); - ListBox()->ClearSelection(); - FindBox()->SetFocus( ETrue ); - FindBox()->SetFocusing( ETrue ); - FindBox()->MakeVisible( ETrue ); - } - if ( itemArray->Count() == 0 ) - { - FindBox()->SetSearchTextL( KSearchTextEmpty ); - FindBox()->SetFocus( EFalse ); - FindBox()->SetFocusing( EFalse ); - FindBox()->MakeVisible( EFalse ); - ListBox()->SetRect( Rect() ); - ListBox()->View()->DrawEmptyList( Rect() ); - - //Show add-add-exit cba - ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_ADD_EXIT ); - } - else - { - ListBox()->SetCurrentItemIndex( 0 ); - } - } - -void CAknFepUserdbDlg::ListBoxItemsChanged( CEikListBox* aListBox ) - { - CAknFilteredTextListBoxModel* filterModel = - static_cast( aListBox->Model() ); - CDesCArrayFlat* itemArray = - static_cast( filterModel->ItemTextArray() ); - - TInt ItemCount = aListBox->Model()->NumberOfItems(); - TInt selectedItem = filterModel->Filter()->SelectionIndexes()->Count(); - if ( ItemCount > 0 && selectedItem < 1 ) - { - //Show options-context-exit cba - TRAP_IGNORE ( ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_CONTEXT ) ); - } - else - { - if ( ItemCount == 0) - { - //Show add-add-exit cba - TRAP_IGNORE ( ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_ADD_EXIT ) ); - if ( itemArray->Count() == 0 && FindBox()->TextLength() == 0 ) - { - FindBox()->SetFocus( EFalse ); - FindBox()->MakeVisible( EFalse ); - } - - if ( FindBox()->TextLength() == 0 ) - { - ListBox()->SetRect( Rect() ); - ListBox()->View()->DrawEmptyList( Rect() ); - } - } - } - } - -void CAknFepUserdbDlg::UpdateListBoxL( TInt aCommandId ) - { - // Update the listbox - CAknFilteredTextListBoxModel* filterModel = - static_cast( ListBox()->Model() ); - filterModel->Filter()->UpdateCachedDataL(); - - TInt selectedItem = ListBox()->SelectionIndexes()->Count(); - - - CAknFilteredTextListBoxModel* model = - static_cast( ListBox()->Model() ); - CDesCArrayFlat* itemArray = - static_cast( model->ItemTextArray() ); - TInt listItems = model->NumberOfItems(); - - if ( listItems != 0 && selectedItem != 0) - { - TInt CurrentItemIndex = ListBox()->CurrentItemIndex(); - if( ( aCommandId == EAknCmdMark || aCommandId == EAknMarkAll ) && - ListBox()->View()->ItemIsSelected(CurrentItemIndex)) - { - //Show options-unmark-exit menu - ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_MARK ); - } - if( ( aCommandId == EAknCmdUnmark || aCommandId == EAknUnmarkAll ) && - !ListBox()->View()->ItemIsSelected(CurrentItemIndex)) - { - //Show options-mark-exit menu - ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_UNMARK ); - } - } - - if ( listItems == 0 ) - { - //Show add-add-exit cba - ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_ADD_EXIT ); - if ( itemArray->Count() == 0 && FindBox()->TextLength() == 0 ) - { - FindBox()->SetFocus( EFalse ); - FindBox()->MakeVisible( EFalse ); - } - - if ( FindBox()->TextLength() == 0 ) - { - ListBox()->SetRect( Rect() ); - ListBox()->View()->DrawEmptyList( Rect() ); - } - } - if( selectedItem == 0 && listItems != 0 ) - { - FindBox()->MakeVisible( ETrue ); - FindBox()->SetFocus( ETrue ); - FindBox()->DrawNow(); - TRect findpaneRect(FindBox()->Rect()); - TRect clientRect = Rect(); - TSize size = TSize(clientRect.Width(), - clientRect.Height() - findpaneRect.Height()); - ListBox()->SetRect( TRect(clientRect.iTl, size) ); - ListBox()->View()->Draw(); - //Show options-context-exit cba - ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_CONTEXT ); - } - - if ( FindBox()->IsVisible() ) - { - FindBox()->SetFocus( ETrue ); - FindBox()->MakeVisible( ETrue ); - } - } - -CCoeControl* CAknFepUserdbDlg::ComponentControl(TInt aIndex) const - { - if ( aIndex == CAknMarkableListDialog::CountComponentControls() ) - { - return ListBox(); - } - else - { - return CAknMarkableListDialog::ComponentControl(aIndex); - } - } - -TInt CAknFepUserdbDlg::CountComponentControls() const - { - if ( ListBox() ) - { - return CAknMarkableListDialog::CountComponentControls() + 1; - } - else - { - return CAknMarkableListDialog::CountComponentControls(); - } - } - - - -void CAknFepUserdbDlg::SizeChanged() - { - //Change title text - CEikStatusPane* statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane(); - CAknTitlePane* title = NULL; - TRAP_IGNORE( title = static_cast< CAknTitlePane* >( - statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle) ) ) ); - - //Load the new title text - HBufC* titletext = StringLoader::LoadLC( R_AKNFEP_USER_DB_MANAGEMENT_TITLE ); - //Set title to the new text - TRAP_IGNORE( title->SetTextL( *titletext )); - CleanupStack::PopAndDestroy( titletext ); - } -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepuserdbquerydlg.cpp --- a/fep/aknfep/src/aknfepuserdbquerydlg.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,143 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - -#include //CAknWarningNote -#include //CEikEdwin - -#include - -#include "aknfepuserdbquerydlg.h" -#include "dbmanagement.h" - -const TInt KErrMsgMaxLength = 60; -const TInt KTextMaxLength = 10; - -CAknFepUserDBQueryDlg::CAknFepUserDBQueryDlg( CDBManagement* aDBEngine, - TDes& aText, const TTone& aTone ) : - CAknTextQueryDialog ( aText, aTone ), iDBEngine(aDBEngine) - { - iptrbuf = & aText; - iItemText = NULL; - } - -CAknFepUserDBQueryDlg::~CAknFepUserDBQueryDlg() - { - if ( iItemText ) - { - delete iItemText; - iItemText = NULL; - } - } - -CAknFepUserDBQueryDlg* CAknFepUserDBQueryDlg::NewLC( CDBManagement* aDBEngine, - TDes& aText, const TDesC& aPrompt, const TTone& aTone ) - { - CAknFepUserDBQueryDlg* self = new (ELeave)CAknFepUserDBQueryDlg( aDBEngine, aText, aTone ); - CleanupStack::PushL(self); - self->ConstructL( aPrompt ); - return self; - } - -CAknFepUserDBQueryDlg* CAknFepUserDBQueryDlg::NewL( CDBManagement* aDBEngine, - TDes& aText, const TDesC& aPrompt, const TTone& aTone ) - { - CAknFepUserDBQueryDlg* self=CAknFepUserDBQueryDlg::NewLC( aDBEngine, aText, aPrompt, aTone ); - CleanupStack::Pop( self ); // self; - return self; - } - -void CAknFepUserDBQueryDlg::ConstructL( const TDesC& aPrompt ) - { - SetPromptL( aPrompt ); - } - -TBool CAknFepUserDBQueryDlg::OkToExitL( TInt aButtonId ) - { - TBuf errMsg; - if (aButtonId == EAknSoftkeyOk) - { - CAknQueryControl* control = - static_cast(ControlOrNull(EGeneralQuery)); - CEikEdwin* editor = static_cast - ( control->ControlByLayoutOrNull( EDataLayout ) ); - - iItemText = editor->GetTextInHBufL(); - TBuf textbuf; - - if( iItemText != NULL ) - { - textbuf.Copy( iItemText->Des() ); - } - - if( !iDBEngine->InputPhraseCheck( textbuf ) ) - { - iptrbuf->Zero(); - iptrbuf->Copy( textbuf ); - - iDBEngine->GetErrMsg( errMsg ); - errMsg.Copy( errMsg.Mid( 1 ) ); - - - if ( iItemText ) - { - delete iItemText; - iItemText = NULL; - } - editor->SetTextL( &textbuf ); - //note fot err message - CAknWarningNote* note = new( ELeave ) CAknWarningNote(); - note->SetTimeout( CAknNoteDialog::EShortTimeout ); - note->ExecuteLD( errMsg ); - - UpdateLeftSoftKeyL(); - return EFalse; - } - iptrbuf->Zero(); - iptrbuf->Copy( textbuf ); - if ( iItemText ) - { - delete iItemText; - iItemText = NULL; - } - return ETrue; - } - else - { - if (aButtonId == EAknSoftkeyCancel) - { - return ETrue; - } - } - return ETrue; - } - - -void CAknFepUserDBQueryDlg::PostLayoutDynInitL() - { - CAknQueryControl* control = - static_cast(ControlOrNull(EGeneralQuery)); - CEikEdwin* editor = static_cast - ( control->ControlByLayoutOrNull( EDataLayout ) ); - editor->SetTextL( iptrbuf ); - SetFocus(ETrue); - SetFocusing(ETrue); - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepzhuyinconvertion.cpp --- a/fep/aknfep/src/aknfepzhuyinconvertion.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,487 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: - * Provides the TZhuyinSymbolsMethods definition - * -*/ - - - - - - - - - - - - -#include "aknfepzhuyinconvertion.h" - -_LIT(KFullStop, "\x002E"); -_LIT(KToneMark0, "\x0020"); -_LIT(KToneMark1, "\x02CA"); -_LIT(KToneMark2, "\x02C7"); -_LIT(KToneMark3, "\x02CB"); -_LIT(KToneMark4, "\x02D9"); - -const TInt KMinZhuyinUnicode = 0x3105; -const TInt KMaxZhuyinUnicode = 0x3129; -const TInt KMaxBufLen = 100; -const TInt KMaxChineseCount = 7; - -// --------------------------------------------------------- -// Convert aArray to a descriptor outputed through aOutDes. -// --------------------------------------------------------- -// -TInt TZhuyinSymbolsMethods::Convert2Des ( CDesCArrayFlat* aArray, TDes& aOutDes ) - { - TInt bufLen = 0; - TInt i = 0; - for ( ; i < aArray->Count(); i++ ) - { - bufLen = bufLen + aArray->MdcaPoint(i).Length(); - if ( bufLen > KMaxBufLen ) - { - return i; - } - aOutDes.Append(aArray->MdcaPoint(i)); - } - return i; - } - -// --------------------------------------------------------- -// Update the content in eep control. -// --------------------------------------------------------- -// -TBool TZhuyinSymbolsMethods::UpdateEEPContent( - CPtiEngine* aPtiengine, - CAknFepZhuyinAnalyser* aAnalyser, - CDesCArrayFlat* aZhuyinSymbols, - CDesCArrayFlat* aChineseDisped, - CDesCArrayFlat* aCandidateList, - TDes& aOutDes, - TBool& aPhraseCreation) - { - TBool rnt = EFalse; - TRAPD( ret, rnt = UpdateEEPContentL( aPtiengine, - aAnalyser, - aZhuyinSymbols, - aChineseDisped, - aCandidateList, - aOutDes, - aPhraseCreation ) ); - if ( KErrNone != ret ) - { - return EFalse; - } - - return rnt; - } - -// --------------------------------------------------------- -// clean. -// --------------------------------------------------------- -// -void CleanArray( TAny* aAny ) - { - RPointerArray* implArray = - reinterpret_cast< RPointerArray*> ( aAny ); - implArray->ResetAndDestroy(); - implArray->Close(); - } - - -// --------------------------------------------------------- -// Update the content in eep control. -// --------------------------------------------------------- -// -TBool TZhuyinSymbolsMethods::UpdateEEPContentL( - CPtiEngine* aPtiengine, - CAknFepZhuyinAnalyser* aAnalyser, - CDesCArrayFlat* aZhuyinSymbols, - CDesCArrayFlat* aChineseDisped, - CDesCArrayFlat* aCandidateList, - TDes& aOutDes, - TBool& aPhraseCreation) - { - TBuf buf; - Convert2Des( aZhuyinSymbols, buf ); - RPointerArray list; - TCleanupItem cleanitem( CleanArray, &list ); - CleanupStack::PushL( cleanitem ); - - HBufC* retString = aPtiengine->GetCandidatesByInputString( buf, list, - EFalse ); - if ( buf.Length() == 0 ) - { - Convert2Des( aChineseDisped, aOutDes ); - delete retString; - aCandidateList->Reset(); - aCandidateList->Compress(); - CleanupStack::PopAndDestroy(); - return ETrue; - } - - CleanupStack::PushL( retString ); - TBool valid = aAnalyser->AnalyzeL( buf ); - - HBufC* showbuf = aAnalyser->LastAnalysisResult(); - aCandidateList->Reset(); - if ( retString->Compare( buf ) != 0 || - retString->Compare( buf ) == 0 && aChineseDisped->Count() != 0 ) - { - // Display the candidates for the 1st chinese character group. - aPhraseCreation = ETrue; - list.ResetAndDestroy(); - TInt length = 0; - TInt i = 0; - for ( i = 0; i < showbuf->Length(); i++ ) - { - if ( showbuf->Mid(i, 1).Compare(KFullStop) == 0 ) - { - length = i; - break; - } - if ( showbuf->Mid(i, 1).Compare(KToneMark0) == 0 - || showbuf->Mid(i, 1).Compare(KToneMark1) == 0 - || showbuf->Mid(i, 1).Compare(KToneMark2) == 0 - || showbuf->Mid(i, 1).Compare(KToneMark3) == 0 - || showbuf->Mid(i, 1).Compare(KToneMark4) == 0 ) - { - length = i + 1; - break; - } - } - if ( i == showbuf->Length()) - { - length = i; - } - CleanupStack::PopAndDestroy( retString ); - TPtrC tmp = showbuf->Left( length ); - retString = aPtiengine->GetCandidatesByInputString( tmp, list, EFalse ); - CleanupStack::PushL( retString ); - for (TInt ii = 0; ii < list.Count(); ii++ ) - { - aCandidateList->AppendL( *(list[ii]) ); - } - } - else - { - aPhraseCreation = EFalse; - for (TInt i = 0; i < list.Count(); i++ ) - { - aCandidateList->AppendL( *(list[i]) ); - } - } - CleanupStack::Pop( retString ); - CleanupStack::PopAndDestroy(); - Convert2Des( aChineseDisped, aOutDes ); - if ( !valid ) - { - aOutDes.Append(buf); - } - else - aOutDes.Append(*showbuf); - delete retString; - - if ( aZhuyinSymbols->Count() > 0 - && ( aZhuyinSymbols->MdcaPoint(0).Compare(KToneMark0) == 0 - || aZhuyinSymbols->MdcaPoint(0).Compare(KToneMark1) == 0 - || aZhuyinSymbols->MdcaPoint(0).Compare(KToneMark2) == 0 - || aZhuyinSymbols->MdcaPoint(0).Compare(KToneMark3) == 0 - || aZhuyinSymbols->MdcaPoint(0).Compare(KToneMark4) == 0 ) ) - { - valid = EFalse; - } - - if ( aCandidateList->Count() != 0 && aOutDes.Length() == 1 ) - { - valid = ETrue; - } - return valid; - } - -// --------------------------------------------------------- -// Commit a chinese character from candidate list. -// --------------------------------------------------------- -// -TBool TZhuyinSymbolsMethods::AppendChineseChar( - const TDes& aChinese, - CAknFepZhuyinAnalyser* aAnalyser, - CDesCArrayFlat* aZhuyinSymbols, - CDesCArrayFlat* aChineseDisped, - CDesCArrayFlat* aZhuyinSymbolsForChinese ) - { - TBuf buf; - buf.Copy(aChinese); - if ( aChineseDisped->Count() >= KMaxChineseCount ) - { - return ETrue; - } - buf.Zero(); - Convert2Des(aZhuyinSymbols, buf); - TBool valid = EFalse; - TRAPD( err, valid = aAnalyser->AnalyzeL( buf ) ); - if ( KErrNone != err ) - { - return EFalse; - } - - if ( !valid ) - { - return EFalse; - } - else - { - HBufC* showbuf = aAnalyser->LastAnalysisResult(); - TInt length = 0; - TInt i = 0; - for ( i = 0; i < showbuf->Length(); i++ ) - { - if ( showbuf->Mid(i, 1).Compare(KFullStop) == 0 ) - { - length = i; - break; - } - if ( showbuf->Mid(i, 1).Compare(KToneMark0) == 0 - || showbuf->Mid(i, 1).Compare(KToneMark1) == 0 - || showbuf->Mid(i, 1).Compare(KToneMark2) == 0 - || showbuf->Mid(i, 1).Compare(KToneMark3) == 0 - || showbuf->Mid(i, 1).Compare(KToneMark4) == 0 ) - { - length = i + 1; - break; - } - } - if ( i == showbuf->Length()) - { - length = i; - } - // update arrays - TRAPD( ret, aChineseDisped->AppendL(aChinese) ); - if ( KErrNone != ret ) - { - return EFalse; - } - - TBuf tmpbuf; - for ( TInt ii = 0; ii < length; ii++ ) - { - tmpbuf.Append(aZhuyinSymbols->MdcaPoint(ii)); - } - TRAPD( ret1, aZhuyinSymbolsForChinese->AppendL(tmpbuf) ); - if ( KErrNone != ret1 ) - { - return EFalse; - } - aZhuyinSymbols->Delete(0, length); - if ( aChineseDisped->Count() >= KMaxChineseCount - || aZhuyinSymbols->Count() == 0 ) - { - return ETrue; - } - else - { - return EFalse; - } - } - } - -// --------------------------------------------------------- -// append the zhuyin symbol to the zhuyin array form zhuyin buf. -// --------------------------------------------------------- -// -void TZhuyinSymbolsMethods::GetZhuyinSymbolsL( - CDesCArrayFlat* aZhuyinSymbols, - const TDesC& aInputBuf ) - { - for ( TInt i = 0; i < aInputBuf.Length(); i++ ) - { - aZhuyinSymbols->InsertL(i, aInputBuf.Mid(i,1)); - } - } - -// --------------------------------------------------------- -// Delete a chinese character from aChineseDisped array -// and update related array in the meantime. -// --------------------------------------------------------- -// -TBool TZhuyinSymbolsMethods::DeleteChineseChar( - CDesCArrayFlat* aZhuyinSymbols, - CDesCArrayFlat* aChineseDisped, - CDesCArrayFlat* aZhuyinSymbolsForChinese ) - { - if ( aChineseDisped->Count() == 0 ) - { - return EFalse; - } - TBuf buf; - buf.Append( aZhuyinSymbolsForChinese->MdcaPoint( - aZhuyinSymbolsForChinese->Count() - 1 ) ); - - TRAPD( ret, GetZhuyinSymbolsL( aZhuyinSymbols, buf ) ); - if ( KErrNone != ret ) - { - return EFalse; - } - - aChineseDisped->Delete(aChineseDisped->Count() - 1); - aZhuyinSymbolsForChinese->Delete(aZhuyinSymbolsForChinese->Count() - 1); - return ETrue; - } - -// --------------------------------------------------------- -// Delete a chinese character from aChineseDisped array -// and update related array in the meantime. -// --------------------------------------------------------- -// -TBool TZhuyinSymbolsMethods::DeleteZhuyinSymbol( - CDesCArrayFlat* aZhuyinSymbols, - TInt aKeyStroke - ) - { - TInt delCount = 0; - if ( aKeyStroke == aZhuyinSymbols->Count() ) - { - delCount++; - } - else if ( aKeyStroke < aZhuyinSymbols->Count() ) - { - delCount++; - } - else - { - return EFalse; - } - aZhuyinSymbols->Delete( aKeyStroke-1, delCount ); - return ETrue; - } - -// --------------------------------------------------------- -// Refresh the cursor position according to the input parameters. -// --------------------------------------------------------- -// -TInt TZhuyinSymbolsMethods::RefreshCursorPos ( - TInt aChineseNum, - const TDes& aShownContent, - TInt aKeyStrokePos ) - { - TInt cursorPos = aChineseNum; - TInt index = 0; - TInt count = 0; - if ( aShownContent.Length() - aChineseNum <= 0 ) - { - return aChineseNum; - } - - if ( 0 == aKeyStrokePos ) - { - return aChineseNum; - } - - TPtrC zhuyinShown = aShownContent.Right( aShownContent.Length() - - aChineseNum ); - - if ( zhuyinShown.Length() == 0 ) - { - return aChineseNum; - } - - for ( TInt i = 0; i < zhuyinShown.Length(); ++i ) - { - if ( 0 != zhuyinShown.Mid( i, 1 ).Compare( KFullStop ) ) - { - count = count + 1; - } - if ( aKeyStrokePos == count ) - { - index = i + 1; - break; - } - } - - return cursorPos + index; - - } - -// --------------------------------------------------------- -// Get the number of zhuyin symbol group. -// --------------------------------------------------------- -// -TInt TZhuyinSymbolsMethods::GetChineseCount(const TDes& aShown) - { - TInt i = 0; - TInt count = 0; - for ( i = 0; i < aShown.Length(); i++ ) - { - if ( aShown.Mid(i, 1).Compare(KFullStop) == 0 - || aShown.Mid(i, 1).Compare(KToneMark0) == 0 - || aShown.Mid(i, 1).Compare(KToneMark1) == 0 - || aShown.Mid(i, 1).Compare(KToneMark2) == 0 - || aShown.Mid(i, 1).Compare(KToneMark3) == 0 - || aShown.Mid(i, 1).Compare(KToneMark4) == 0 ) - { - count++; - } - } - if ( aShown.Right(1).Compare(KToneMark0) == 0 - || aShown.Right(1).Compare(KToneMark1) == 0 - || aShown.Right(1).Compare(KToneMark2) == 0 - || aShown.Right(1).Compare(KToneMark3) == 0 - || aShown.Right(1).Compare(KToneMark4) == 0 ) - { - return count; - } - else - { - return count + 1; - } - } - -// --------------------------------------------------------- -// Whether the aFirstPhrase is a Zhuyin symbol or not. -// --------------------------------------------------------- -// -TBool TZhuyinSymbolsMethods::IsZhuyinSymbol( const TDesC& aFirstPhrase ) - { - if ( aFirstPhrase.Length() > 1 ) - { - return EFalse; - } - - if ( aFirstPhrase[0] >= KMinZhuyinUnicode && - aFirstPhrase[0] <= KMaxZhuyinUnicode ) - { - return ETrue; - } - else - { - return EFalse; - } - } - -// --------------------------------------------------------- -// Whether the aFirstPhrase is a Zhuyin symbol or not. -// --------------------------------------------------------- -// -TBool TZhuyinSymbolsMethods::IsZhuyinSpelling( - const TDesC& /*aSymbol*/, - const TInt /*index*/, - CDesCArrayFlat* /*aZhuyinSymbols*/ ) - { - return ETrue; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/aknfepzhuyinkeyhandler.cpp --- a/fep/aknfep/src/aknfepzhuyinkeyhandler.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,611 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - - - -#include "aknfepzhuyinkeyhandler.h" - -const TInt KBTLoopLength1 = 3; -const TInt KBTLoopLength2 = 4; -const TInt KBTLoopLength3 = 5; - -const TInt KBTLoopLength = 5; - -const TInt KCLKCount1 = 1; -const TInt KCLKCount2 = 2; -const TInt KCLKCount3 = 3; -const TInt KCLKCount4 = 4; -const TInt KCLKCount5 = 5; - -const TInt KTimerOut = 700000; - -_LIT(KPtiKey1_1, "\x3105"); -_LIT(KPtiKey1_2, "\x3106"); -_LIT(KPtiKey1_3, "\x3107"); -_LIT(KPtiKey1_4, "\x3108"); - -_LIT(KPtiKey2_1, "\x3109"); -_LIT(KPtiKey2_2, "\x310A"); -_LIT(KPtiKey2_3, "\x310B"); -_LIT(KPtiKey2_4, "\x310C"); - -_LIT(KPtiKey3_1, "\x310D"); -_LIT(KPtiKey3_2, "\x310E"); -_LIT(KPtiKey3_3, "\x310F"); - -_LIT(KPtiKey4_1, "\x3110"); -_LIT(KPtiKey4_2, "\x3111"); -_LIT(KPtiKey4_3, "\x3112"); - -_LIT(KPtiKey5_1, "\x3113"); -_LIT(KPtiKey5_2, "\x3114"); -_LIT(KPtiKey5_3, "\x3115"); -_LIT(KPtiKey5_4, "\x3116"); - -_LIT(KPtiKey6_1, "\x3117"); -_LIT(KPtiKey6_2, "\x3118"); -_LIT(KPtiKey6_3, "\x3119"); - -_LIT(KPtiKey7_1, "\x311A"); -_LIT(KPtiKey7_2, "\x311B"); -_LIT(KPtiKey7_3, "\x311C"); -_LIT(KPtiKey7_4, "\x311D"); - -_LIT(KPtiKey8_1, "\x311E"); -_LIT(KPtiKey8_2, "\x311F"); -_LIT(KPtiKey8_3, "\x3120"); -_LIT(KPtiKey8_4, "\x3121"); - -_LIT(KPtiKey9_1, "\x3122"); -_LIT(KPtiKey9_2, "\x3123"); -_LIT(KPtiKey9_3, "\x3124"); -_LIT(KPtiKey9_4, "\x3125"); -_LIT(KPtiKey9_5, "\x3126"); - -_LIT(KPtiKey0_1, "\x3127"); -_LIT(KPtiKey0_2, "\x3128"); -_LIT(KPtiKey0_3, "\x3129"); - -_LIT(KPtiKeyStar_1, "\x0020"); -_LIT(KPtiKeyStar_2, "\x02CA"); -_LIT(KPtiKeyStar_3, "\x02C7"); -_LIT(KPtiKeyStar_4, "\x02CB"); -_LIT(KPtiKeyStar_5, "\x02D9"); - - -// --------------------------------------------------------- -// C++ constructor. -// --------------------------------------------------------- -// -ZhuyinKeyTable::ZhuyinKeyTable() - { - } - -// --------------------------------------------------------- -// Cancel and destroy. -// --------------------------------------------------------- -// -ZhuyinKeyTable::~ZhuyinKeyTable() - { - } - -// --------------------------------------------------------- -// Get butten loop length. -// --------------------------------------------------------- -// -TInt ZhuyinKeyTable::GetBtLoopLength ( TPtiKey aKey ) - { - switch ( aKey ) - { - case EPtiKey0: - case EPtiKey3: - case EPtiKey4: - case EPtiKey6: - { - return KBTLoopLength1; - } - case EPtiKey1: - case EPtiKey2: - case EPtiKey5: - case EPtiKey7: - case EPtiKey8: - { - return KBTLoopLength2; - } - case EPtiKey9: - case EPtiKeyStar: - { - return KBTLoopLength3; - } - default: - return 0; - } - } - -// --------------------------------------------------------- -// Get zhuyin symbol. -// --------------------------------------------------------- -// -TBool ZhuyinKeyTable::GetUnicode ( TPtiKey aKey, TInt aClkCount, TDes& aOutput ) - { - aOutput.Zero(); - switch ( aKey ) - { - case EPtiKey0: - { - switch ( aClkCount ) - { - case KCLKCount1: - aOutput.Append(KPtiKey0_1); - return ETrue; - case KCLKCount2: - aOutput.Append(KPtiKey0_2); - return ETrue; - case KCLKCount3: - aOutput.Append(KPtiKey0_3); - return ETrue; - default: - return EFalse; - } - } - case EPtiKey1: - switch ( aClkCount ) - { - case KCLKCount1: - aOutput.Append(KPtiKey1_1); - return ETrue; - case KCLKCount2: - aOutput.Append(KPtiKey1_2); - return ETrue; - case KCLKCount3: - aOutput.Append(KPtiKey1_3); - return ETrue; - case KCLKCount4: - aOutput.Append(KPtiKey1_4); - return ETrue; - default: - return EFalse; - } - case EPtiKey2: - switch ( aClkCount ) - { - case KCLKCount1: - aOutput.Append(KPtiKey2_1); - return ETrue; - case KCLKCount2: - aOutput.Append(KPtiKey2_2); - return ETrue; - case KCLKCount3: - aOutput.Append(KPtiKey2_3); - return ETrue; - case KCLKCount4: - aOutput.Append(KPtiKey2_4); - return ETrue; - default: - return EFalse; - } - case EPtiKey3: - { - switch ( aClkCount ) - { - case KCLKCount1: - aOutput.Append(KPtiKey3_1); - return ETrue; - case KCLKCount2: - aOutput.Append(KPtiKey3_2); - return ETrue; - case KCLKCount3: - aOutput.Append(KPtiKey3_3); - return ETrue; - default: - return EFalse; - } - } - case EPtiKey4: - { - switch ( aClkCount ) - { - case KCLKCount1: - aOutput.Append(KPtiKey4_1); - return ETrue; - case KCLKCount2: - aOutput.Append(KPtiKey4_2); - return ETrue; - case KCLKCount3: - aOutput.Append(KPtiKey4_3); - return ETrue; - default: - return EFalse; - } - } - case EPtiKey5: - { - switch ( aClkCount ) - { - case KCLKCount1: - aOutput.Append(KPtiKey5_1); - return ETrue; - case KCLKCount2: - aOutput.Append(KPtiKey5_2); - return ETrue; - case KCLKCount3: - aOutput.Append(KPtiKey5_3); - return ETrue; - case KCLKCount4: - aOutput.Append(KPtiKey5_4); - return ETrue; - default: - return EFalse; - } - } - case EPtiKey6: - { - switch ( aClkCount ) - { - case KCLKCount1: - aOutput.Append(KPtiKey6_1); - return ETrue; - case KCLKCount2: - aOutput.Append(KPtiKey6_2); - return ETrue; - case KCLKCount3: - aOutput.Append(KPtiKey6_3); - return ETrue; - default: - return EFalse; - } - } - case EPtiKey7: - { - switch ( aClkCount ) - { - case KCLKCount1: - aOutput.Append(KPtiKey7_1); - return ETrue; - case KCLKCount2: - aOutput.Append(KPtiKey7_2); - return ETrue; - case KCLKCount3: - aOutput.Append(KPtiKey7_3); - return ETrue; - case KCLKCount4: - aOutput.Append(KPtiKey7_4); - return ETrue; - default: - return EFalse; - } - } - case EPtiKey8: - { - switch ( aClkCount ) - { - case KCLKCount1: - aOutput.Append(KPtiKey8_1); - return ETrue; - case KCLKCount2: - aOutput.Append(KPtiKey8_2); - return ETrue; - case KCLKCount3: - aOutput.Append(KPtiKey8_3); - return ETrue; - case KCLKCount4: - aOutput.Append(KPtiKey8_4); - return ETrue; - default: - return EFalse; - } - } - case EPtiKey9: - { - switch ( aClkCount ) - { - case KCLKCount1: - aOutput.Append(KPtiKey9_1); - return ETrue; - case KCLKCount2: - aOutput.Append(KPtiKey9_2); - return ETrue; - case KCLKCount3: - aOutput.Append(KPtiKey9_3); - return ETrue; - case KCLKCount4: - aOutput.Append(KPtiKey9_4); - return ETrue; - case KCLKCount5: - aOutput.Append(KPtiKey9_5); - return ETrue; - default: - return EFalse; - } - } - case EPtiKeyStar: - { - switch ( aClkCount ) - { - case KCLKCount1: - aOutput.Append(KPtiKeyStar_1); - return ETrue; - case KCLKCount2: - aOutput.Append(KPtiKeyStar_2); - return ETrue; - case KCLKCount3: - aOutput.Append(KPtiKeyStar_3); - return ETrue; - case KCLKCount4: - aOutput.Append(KPtiKeyStar_4); - return ETrue; - case KCLKCount5: - aOutput.Append(KPtiKeyStar_5); - return ETrue; - default: - return EFalse; - } - } - default: - return EFalse; - } - } - -// --------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------- -// -CZhuyinKeyHandler::CZhuyinKeyHandler( ) : - CActive ( EPriorityStandard ), // Standard priority - iLastKey ( EPtiKeyNone ), - iTimeOut ( ETrue ), - iBtClickNum ( 0 ), - iBtLoopLength ( 1 ), - iState( 0 ), - iStatusChgFlag(EInit) - { - } - -// --------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------- -// -CZhuyinKeyHandler* CZhuyinKeyHandler::NewLC() - { - CZhuyinKeyHandler* self = new ( ELeave ) CZhuyinKeyHandler(); - CleanupStack::PushL( self ); - self->ConstructL( ); - return self; - } - -// --------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------- -// -CZhuyinKeyHandler* CZhuyinKeyHandler::NewL() - { - CZhuyinKeyHandler* self = CZhuyinKeyHandler::NewLC(); - CleanupStack::Pop( self ); // self; - return self; - } - -// --------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------- -// -void CZhuyinKeyHandler::ConstructL( ) - { - User::LeaveIfError( iTimer.CreateLocal( ) ); // Initialize timer - CActiveScheduler::Add( this ); // Add to scheduler - } - -// --------------------------------------------------------- -// Cancel and destroy. -// --------------------------------------------------------- -// -CZhuyinKeyHandler::~CZhuyinKeyHandler( ) - { - Cancel( ); // Cancel any request, if outstanding - iTimer.Close( ); // Destroy the RTimer object - // Delete instance variables if any - } - -// --------------------------------------------------------- -// How to cancel me. -// --------------------------------------------------------- -// -void CZhuyinKeyHandler::DoCancel( ) - { - iTimer.Cancel( ); - } - -// --------------------------------------------------------- -// Function for making the initial request. -// --------------------------------------------------------- -// -void CZhuyinKeyHandler::Start() - { - Cancel(); // Cancel any request, just to be sure - iTimer.After( iStatus, KTimerOut ); // Set for later - SetActive(); // Tell scheduler a request is active - } - -// --------------------------------------------------------- -// Get Zhuyin symbol according to the inputting key. -// --------------------------------------------------------- -// -TInt CZhuyinKeyHandler::GetZhuyinSymbol ( TPtiKey aKey, TDes& aOutBuf ) - { - TInt ret = 0; - Start(); - // if the same button is pressed for many times. - if ( iLastKey == aKey - && iTimeOut == EFalse ) - { - if ( iBtLoopLength != 0 ) - { - iBtClickNum++; - if ( iBtClickNum > iBtLoopLength ) - { - iBtClickNum = 1; - } - } - // Search for the corresponding unicode and value aOutBuf. - ZhuyinKeyTable::GetUnicode(aKey,iBtClickNum,aOutBuf); - ret = 0; - } - // if the pressed button is changed or time out event is happened. - else if ( iLastKey == aKey - && iTimeOut != EFalse ) - { - // Update iBtClickNum - iBtClickNum = 1; - // Search for the corresponding unicode and value aOutBuf. - ZhuyinKeyTable::GetUnicode(aKey,iBtClickNum,aOutBuf); - ret = 1; - } - else - { - // Update iBtClickNum - iBtClickNum = 1; - // Update iBtUnicodeNum - iBtLoopLength = ZhuyinKeyTable::GetBtLoopLength(aKey); - // Search for the corresponding unicode and value aOutBuf. - ZhuyinKeyTable::GetUnicode(aKey,iBtClickNum,aOutBuf); - if ( iBtLoopLength != 0 ) - { - ret = 1; - } - else - { - ret = -1; - } - } - iLastKey = aKey; - iTimeOut = EFalse; - return ret; - } - -// --------------------------------------------------------- -// Set status change flag. -// --------------------------------------------------------- -// -void CZhuyinKeyHandler::SetStatusChgFlag ( MZhuyinKeyHandler::TStatusChgFlag aChgFlag ) - { - iStatusChgFlag = aChgFlag; - } - -// --------------------------------------------------------- -// Get the status change flag. -// --------------------------------------------------------- -// -MZhuyinKeyHandler::TStatusChgFlag CZhuyinKeyHandler::GetStatusChgFlag () - { - return iStatusChgFlag; - } - -// --------------------------------------------------------- -// Reset all the member variables. -// --------------------------------------------------------- -// -void CZhuyinKeyHandler::Reset() - { - iLastKey = EPtiKeyNone; - iTimeOut = ETrue ; - iBtClickNum = 0; - iBtLoopLength = 1; - } - - -// --------------------------------------------------------- -// Get tonemark according to symbol in front of cursor. -// --------------------------------------------------------- -// -TInt CZhuyinKeyHandler::GetToneMark ( const TDes& aBaseSymbol, TDes& aOutBuf ) - { - TInt ret = 0; - iBtLoopLength = KBTLoopLength; - iTimeOut = ETrue ; - if ( aBaseSymbol.Compare(KPtiKeyStar_1) == 0 ) - { - iBtClickNum = KCLKCount1; - } - else if ( aBaseSymbol.Compare(KPtiKeyStar_2) == 0 ) - { - iBtClickNum = KCLKCount2; - } - else if ( aBaseSymbol.Compare(KPtiKeyStar_3) == 0 ) - { - iBtClickNum = KCLKCount3; - } - else if ( aBaseSymbol.Compare(KPtiKeyStar_4) == 0 ) - { - iBtClickNum = KCLKCount4; - } - else if ( aBaseSymbol.Compare(KPtiKeyStar_5) == 0 ) - { - iBtClickNum = KCLKCount5; - } - else - { - iBtClickNum = 0; - ret = 1; - } - iBtClickNum++; - if ( iBtClickNum > iBtLoopLength ) - { - iBtClickNum = 1; - } - ZhuyinKeyTable::GetUnicode(EPtiKeyStar,iBtClickNum,aOutBuf); - iLastKey = EPtiKeyStar; - iTimeOut = EFalse; - return ret; - } - -// --------------------------------------------------------- -// Get tonemark according to symbol in front of cursor. -// --------------------------------------------------------- -// -void CZhuyinKeyHandler::RunL( ) - { - iTimeOut = ETrue; - } - -// --------------------------------------------------------- -// Override to handle leaves from RunL(). Default implementation causes. -// --------------------------------------------------------- -// -TInt CZhuyinKeyHandler::RunError( TInt aError ) - { - return aError; - } - -// --------------------------------------------------------- -// Set whether state change from entry to spelling editing is automatical. -// --------------------------------------------------------- -// -void CZhuyinKeyHandler::SetState( TInt aState ) - { - iState = aState; - } - -// --------------------------------------------------------- -// Get state change states. -// --------------------------------------------------------- -// -TInt CZhuyinKeyHandler::GetState() - { - return iState; - } - -// End of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/src/dbmanagement.cpp --- a/fep/aknfep/src/dbmanagement.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,335 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: DB Engine -* -*/ - - - - - - - - - - - - -//system include files -#include -#include -#include -#include - -//user inlucde files -#include "dbmanagement.h" -#include "AknFepGlobalEnums.h" -#include "AknFepManager.h" -#include "AknFepSharedDataInterface.h" - -// CONSTANTS -const TInt KInputPhraseMaxLength = 7; -const TInt KInvalidPhrase = -103; -const TInt KPhraseExisted = -104; -const TInt KPhraseNotExisted = -105; -const TInt KInputPhraseOutRange = -106; -const TInt KDBHasNoSpace = -150; - -// --------------------------------------------------------- -// Symbian constructor -// --------------------------------------------------------- -// -CDBManagement* CDBManagement::NewL( CAknFepManager* aFepManager ) - { - CDBManagement* self = new( ELeave ) CDBManagement(); - CleanupStack::PushL( self ); - self->ConstructL(aFepManager); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------- -// -CDBManagement::CDBManagement() - { - } - -// --------------------------------------------------------- -// Second phase constructor -// --------------------------------------------------------- -// -void CDBManagement::ConstructL( CAknFepManager* aFepManager ) - { - iAknFepSharedDataInterface = CAknFepSharedDataInterface::NewL( aFepManager ); - iFepManager = aFepManager; - iPtiEngineOfFep = iFepManager->PtiEngine(); - iPtiEngine = CPtiEngine::NewL(ETrue); - } - -// --------------------------------------------------------- -// destructor -// --------------------------------------------------------- -// -CDBManagement::~CDBManagement() - { - delete iAknFepSharedDataInterface; - delete iPtiEngine; - } - -// --------------------------------------------------------- -// Add phrase to DB. -// --------------------------------------------------------- -// -TBool CDBManagement::AddPhraseToDB( const TDesC& aPhraseAdd ) - { - TInt retCode; - TPtiUserDictionaryEntry addUdbEntry(aPhraseAdd); - TRAP_IGNORE( ActivateLanguageOfFepL() ); - //Add the phrase to the DB by PTI Engine - iPtiEngineOfFep->AddUserDictionaryEntry( addUdbEntry ); - retCode = iPtiEngine->AddUserDictionaryEntry( addUdbEntry ); - if ( KErrNone != retCode ) - { - GetDBErrMsg( retCode ); - return EFalse; - } - return ETrue; - } - -// --------------------------------------------------------- -// Edit phrase from DB -// --------------------------------------------------------- -// -TBool CDBManagement::EditPhraseFromDB( const TDesC& aPhraseOld, - const TDesC& aPhraseNew ) - { - TBool retCode; - //Add the new phrase to the DB by PTI Engine - retCode = AddPhraseToDB( aPhraseNew ); - if ( !retCode ) - { - GetDBErrMsg( retCode ); - return EFalse; - } - retCode = RemovePhraseFromDB( aPhraseOld ); - if ( !retCode ) - { - GetDBErrMsg( retCode ); - return EFalse; - } - return ETrue; - } - -// --------------------------------------------------------- -// Remove phrase from DB -// --------------------------------------------------------- -// -TBool CDBManagement::RemovePhraseFromDB(const TDesC& aPhraseRemove ) - { - TInt retCode; - TPtiUserDictionaryEntry removeUdbEntry( aPhraseRemove ); - //Remove the phrase from the DB by PTI Engine - TRAP_IGNORE( ActivateLanguageOfFepL() ); - iPtiEngineOfFep->RemoveEntryFromUserDictionary( removeUdbEntry ); - retCode = iPtiEngine->RemoveEntryFromUserDictionary( removeUdbEntry ); - if( KErrNone != retCode ) - { - GetDBErrMsg( retCode ); - return EFalse; - } - return ETrue; - } - -// --------------------------------------------------------- -// Get phrases from DB -// --------------------------------------------------------- -// -TBool CDBManagement::GetPhraseFromDBL( CDesCArray& aPhraseGet ) - { - TPtiUserDictionaryEntry getUdbEntry; - TInt retCode; - TInt i = 0; - ActivateLanguage(); - - retCode = iPtiEngine->GetUserDictionaryEntry(i, getUdbEntry); - - while (retCode == KErrNone) - { - aPhraseGet.AppendL(getUdbEntry.Word()); - i++; - retCode = iPtiEngine->GetUserDictionaryEntry(i, getUdbEntry); - } - - return ETrue; - } - -// --------------------------------------------------------- -// Get Error Message -// --------------------------------------------------------- -// -void CDBManagement::GetErrMsg( TDes& aErrMsg ) - { - aErrMsg.Copy(iErrMsg); - } - -// --------------------------------------------------------- -// Check the input phrase -// --------------------------------------------------------- -// -TBool CDBManagement::InputPhraseCheck( TDes& aPhraseInput ) - { - const TUint16 KChineseUnicodeMin = 0x4E00; - const TUint16 KChineseUnicodeMax = 0x9FA5; - const TUint16 KSpaceUnicode = 0x0020; - const TUint16 KKeytroke2Unicode = 0x4E28; - const TUint16 KKeytroke3Unicode = 0x4E3F; - const TUint16 KKeytroke4Unicode = 0x4E36; - const TUint16 KKeytroke5Unicode = 0x4E5B; - TBuf inputText; - aPhraseInput.TrimAll(); - TBool inValidFlg = EFalse; - //the input phrase length more than the max length - if ( aPhraseInput.Length() > KInputPhraseMaxLength ) - { - return EFalse; - } - //check every character of input phrase - for ( TInt i = 0; i < aPhraseInput.Length(); ++i ) - { - if ( ( (TInt)aPhraseInput[i] >= KChineseUnicodeMin ) && - ( (TInt)aPhraseInput[i] <= KChineseUnicodeMax ) ) - { - if ( ( KKeytroke2Unicode == (TInt)aPhraseInput[i] ) || - ( KKeytroke3Unicode == (TInt)aPhraseInput[i] ) || - ( KKeytroke4Unicode == (TInt)aPhraseInput[i] ) || - ( KKeytroke5Unicode == (TInt)aPhraseInput[i] ) ) - { - inValidFlg = ETrue; - } - else - { - inputText.Append( aPhraseInput[i] ); - } - } - else - { - if ( KSpaceUnicode != (TInt)aPhraseInput[i] ) - { - inValidFlg = ETrue; - } - } - } - - //out the chinese phrase. - aPhraseInput = inputText; - - if ( inValidFlg ) - { - StringLoader::Load( iErrMsg, R_AKNFEP_CHINESE_USER_DB_NOTE_ONLY_CHINESE_TEXT ); - return EFalse; - } - - if ( aPhraseInput.Length() < 2 ) - { - StringLoader::Load( iErrMsg, R_AKNFEP_CHINESE_USER_DB_NOTE_TOO_SHORT_TEXT ); - return EFalse; - } - - return ETrue; - } - -// --------------------------------------------------------- -// Set language -// --------------------------------------------------------- -// -void CDBManagement::ActivateLanguageL() - { - TInt epocLanguageID = iAknFepSharedDataInterface->InputTextLanguage(); - iPtiEngine->ActivateLanguageL((TLanguage)epocLanguageID); - switch(epocLanguageID) - { - case ELangHongKongChinese: - iPtiEngine->SetInputMode( EPtiEngineStrokeByPhrase ); - break; - case ELangTaiwanChinese: - iPtiEngine->SetInputMode( EPtiEngineZhuyinByPhrase ); - break; - case ELangPrcChinese: - iPtiEngine->SetInputMode( EPtiEnginePinyinByPhrase ); - break; - } - } - -// --------------------------------------------------------- -// Set language -// --------------------------------------------------------- -// -void CDBManagement::ActivateLanguageOfFepL() - { - TInt epocLanguageID = iAknFepSharedDataInterface->InputTextLanguage(); - iPtiEngineOfFep->ActivateLanguageL((TLanguage)epocLanguageID); - switch(epocLanguageID) - { - case ELangHongKongChinese: - iPtiEngineOfFep->SetInputMode( EPtiEngineStroke ); - break; - case ELangTaiwanChinese: - iPtiEngineOfFep->SetInputMode( EPtiEngineZhuyinByPhrase ); - break; - case ELangPrcChinese: - iPtiEngineOfFep->SetInputMode( EPtiEnginePinyin ); - break; - } - } - -// --------------------------------------------------------- -// Set language -// --------------------------------------------------------- -// -void CDBManagement::ActivateLanguage() - { - TRAP_IGNORE( ActivateLanguageL() ); - } - -// --------------------------------------------------------- -// Get the ptiengine's error -// --------------------------------------------------------- -// -void CDBManagement::GetDBErrMsg( TInt aErrCode ) - { - switch( aErrCode ) - { - case KInvalidPhrase: - StringLoader::Load( iErrMsg, R_AKNFEP_CHINESE_USER_DB_NOTE_INVALID_PHRASE_TEXT ); - break; - case KPhraseExisted: - StringLoader::Load( iErrMsg, R_AKNFEP_CHINESE_USER_DB_NOTE_PHRASE_EXISTED_TEXT ); - break; - case KPhraseNotExisted: - StringLoader::Load( iErrMsg, R_AKNFEP_CHINESE_USER_DB_NOTE_NOT_EXISTED_TEXT ); - break; - case KInputPhraseOutRange: - StringLoader::Load( iErrMsg, R_AKNFEP_CHINESE_USER_DB_PHRASE_TOO_LONG_TEXT ); - break; - case KDBHasNoSpace: - StringLoader::Load( iErrMsg, R_AKNFEP_CHINESE_USER_DB_NOTE_DB_HAVE_NO_SPACE_TEXT ); - break; - default: - break; - } - } - -//End of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 inputmethods_plat/ptiengine_key_definations_api/tsrc/group/ptiEngTestDomApi.mmp --- a/inputmethods_plat/ptiengine_key_definations_api/tsrc/group/ptiEngTestDomApi.mmp Tue Jul 06 14:38:41 2010 +0300 +++ b/inputmethods_plat/ptiengine_key_definations_api/tsrc/group/ptiEngTestDomApi.mmp Wed Aug 18 10:06:46 2010 +0300 @@ -18,12 +18,8 @@ - - -#if defined(__S60_) - // To get the OS_LAYER_SYSTEMINCLUDE-definition - #include -#endif +#include +#include TARGET ptiEngTestDomApi.dll TARGETTYPE dll @@ -46,11 +42,7 @@ USERINCLUDE ../inc -#if defined(__S60_) MW_LAYER_SYSTEMINCLUDE -#else // __S60_ not defined - SYSTEMINCLUDE /epoc32/include -#endif // __S60_ LIBRARY euser.lib diff -r f1bdd6b078d1 -r 2cb9bae34d17 inputmethods_pub/ptiengine_iti_api/tsrc/group/ptiEngineTestSdkApi.mmp --- a/inputmethods_pub/ptiengine_iti_api/tsrc/group/ptiEngineTestSdkApi.mmp Tue Jul 06 14:38:41 2010 +0300 +++ b/inputmethods_pub/ptiengine_iti_api/tsrc/group/ptiEngineTestSdkApi.mmp Wed Aug 18 10:06:46 2010 +0300 @@ -24,12 +24,8 @@ - - -#if defined(__S60_) - // To get the OS_LAYER_SYSTEMINCLUDE-definition - #include -#endif +#include +#include TARGET ptiEngineTestSdkApi.dll TARGETTYPE dll @@ -52,11 +48,7 @@ USERINCLUDE ../inc -#if defined(__S60_) MW_LAYER_SYSTEMINCLUDE -#else - SYSTEMINCLUDE /epoc32/include -#endif LIBRARY euser.lib LIBRARY stiftestinterface.lib diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h --- a/textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h Tue Jul 06 14:38:41 2010 +0300 +++ b/textinput/peninputarc/inc/pensrvcliinc/penuiwndctrl.h Wed Aug 18 10:06:46 2010 +0300 @@ -213,7 +213,6 @@ TInt iPriority; TInt iPreEditorPriority; - CAknIncallBubble* iIncallBubble; CPenUiPopWnd* iPopupWnd; TBool iShowPopup; diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp --- a/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp Tue Jul 06 14:38:41 2010 +0300 +++ b/textinput/peninputarc/src/peninputserverapp/penuiwndctrl.cpp Wed Aug 18 10:06:46 2010 +0300 @@ -15,7 +15,6 @@ * */ #include -#include #include #include #include @@ -45,7 +44,6 @@ { delete iPopupWnd; - delete iIncallBubble; #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS if ( GfxTransEffect::IsRegistered( this ) ) @@ -64,7 +62,6 @@ SetComponentsToInheritVisibility(); Window().SetRequiredDisplayMode( EColor16MA ); - iIncallBubble = CAknIncallBubble::NewL(); MakeVisible( EFalse ); #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS // only change registration, if not registered, don't register @@ -140,7 +137,6 @@ if (iResourceChange) { ActivateL(); - iIncallBubble->SetIncallBubbleFlagsL( EAknStatusBubbleInputShow ); MakeVisible( ETrue ); ClaimPointerGrab( ETrue ); return; @@ -154,7 +150,6 @@ iWndGroup.SetNonFading(ETrue); //ChangeSysteFadeStatus(); ActivateL(); - iIncallBubble->SetIncallBubbleFlagsL( EAknStatusBubbleInputShow ); // MakeVisible( ETrue ); ClaimPointerGrab( ETrue ); @@ -196,7 +191,6 @@ { if (aResChanging) { - TRAP_IGNORE(iIncallBubble->SetIncallBubbleFlagsL( EAknStatusBubbleInputHide )); MakeVisible( EFalse ); return; } @@ -233,7 +227,6 @@ iShowPopup = EFalse; iWndGroup.SetOrdinalPosition( -1, ECoeWinPriorityNormal-1 ); DrawableWindow()->SetOrdinalPosition(-1, ECoeWinPriorityNormal-1 ); - TRAP_IGNORE(iIncallBubble->SetIncallBubbleFlagsL( EAknStatusBubbleInputHide )); //MakeVisible( EFalse ); } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/bwins/peninputcommonctrlsU.DEF --- a/textinput/peninputcommonctrls/bwins/peninputcommonctrlsU.DEF Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,349 +0,0 @@ -EXPORTS - ??0CAknFepCtrlBaseWindow@@IAE@PAVCFepUiLayout@@H@Z @ 1 NONAME ; CAknFepCtrlBaseWindow::CAknFepCtrlBaseWindow(class CFepUiLayout *, int) - ??0CAknFepCtrlButton@@IAE@PAVCFepUiLayout@@H@Z @ 2 NONAME ; CAknFepCtrlButton::CAknFepCtrlButton(class CFepUiLayout *, int) - ??0CAknFepCtrlDragButton@@IAE@PAVCFepUiLayout@@H@Z @ 3 NONAME ; CAknFepCtrlDragButton::CAknFepCtrlDragButton(class CFepUiLayout *, int) - ??0CAknFepCtrlEventButton@@IAE@PAVCFepUiLayout@@HHH@Z @ 4 NONAME ABSENT ; CAknFepCtrlEventButton::CAknFepCtrlEventButton(class CFepUiLayout *, int, int, int) - ??0CAknFepCtrlMultiModeButton@@IAE@PAVCFepUiLayout@@H@Z @ 5 NONAME ABSENT ; CAknFepCtrlMultiModeButton::CAknFepCtrlMultiModeButton(class CFepUiLayout *, int) - ??0CAknFepCtrlRangeBar@@IAE@PAVCFepUiLayout@@HW4TButtonGroupStyle@0@@Z @ 6 NONAME ; CAknFepCtrlRangeBar::CAknFepCtrlRangeBar(class CFepUiLayout *, int, enum CAknFepCtrlRangeBar::TButtonGroupStyle) - ??0CAknFepCtrlRepeatButton@@IAE@PAVCFepUiLayout@@HHH@Z @ 7 NONAME ABSENT ; CAknFepCtrlRepeatButton::CAknFepCtrlRepeatButton(class CFepUiLayout *, int, int, int) - ??0CPeninputVkbCtrlExt@@IAE@ABVTRect@@PAVCFepUiLayout@@HABVTFontSpec@@@Z @ 8 NONAME ABSENT ; CPeninputVkbCtrlExt::CPeninputVkbCtrlExt(class TRect const &, class CFepUiLayout *, int, class TFontSpec const &) - ??1CAknFepCtrlBaseWindow@@UAE@XZ @ 9 NONAME ; CAknFepCtrlBaseWindow::~CAknFepCtrlBaseWindow(void) - ??1CAknFepCtrlButton@@UAE@XZ @ 10 NONAME ; CAknFepCtrlButton::~CAknFepCtrlButton(void) - ??1CAknFepCtrlDragButton@@UAE@XZ @ 11 NONAME ; CAknFepCtrlDragButton::~CAknFepCtrlDragButton(void) - ??1CAknFepCtrlEventButton@@UAE@XZ @ 12 NONAME ; CAknFepCtrlEventButton::~CAknFepCtrlEventButton(void) - ??1CAknFepCtrlMultiModeButton@@UAE@XZ @ 13 NONAME ; CAknFepCtrlMultiModeButton::~CAknFepCtrlMultiModeButton(void) - ??1CAknFepCtrlRangeBar@@UAE@XZ @ 14 NONAME ; CAknFepCtrlRangeBar::~CAknFepCtrlRangeBar(void) - ??1CAknFepCtrlRepeatButton@@UAE@XZ @ 15 NONAME ; CAknFepCtrlRepeatButton::~CAknFepCtrlRepeatButton(void) - ??1CAknFepCtrlVkbLayout@@UAE@XZ @ 16 NONAME ; CAknFepCtrlVkbLayout::~CAknFepCtrlVkbLayout(void) - ??1CFepCtrlDropdownList@@UAE@XZ @ 17 NONAME ; CFepCtrlDropdownList::~CFepCtrlDropdownList(void) - ??1CPeninputVkbCtrlExt@@UAE@XZ @ 18 NONAME ; CPeninputVkbCtrlExt::~CPeninputVkbCtrlExt(void) - ??1CPeninputVkbKeyInfo@@UAE@XZ @ 19 NONAME ; CPeninputVkbKeyInfo::~CPeninputVkbKeyInfo(void) - ??1CPeninputVkbLayoutInfo@@UAE@XZ @ 20 NONAME ; CPeninputVkbLayoutInfo::~CPeninputVkbLayoutInfo(void) - ?ActiveRange@CAknFepCtrlRangeBar@@QAEXH@Z @ 21 NONAME ; void CAknFepCtrlRangeBar::ActiveRange(int) - ?AddModeL@CAknFepCtrlMultiModeButton@@QAEXAAVTResourceReader@@@Z @ 22 NONAME ; void CAknFepCtrlMultiModeButton::AddModeL(class TResourceReader &) - ?AddRangeL@CAknFepCtrlRangeBar@@QAEXAAVTResourceReader@@@Z @ 23 NONAME ; void CAknFepCtrlRangeBar::AddRangeL(class TResourceReader &) - ?BaseConstructL@CAknFepCtrlBaseWindow@@IAEXXZ @ 24 NONAME ; void CAknFepCtrlBaseWindow::BaseConstructL(void) - ?CancelDims@CPeninputVkbCtrlExt@@QAEXXZ @ 25 NONAME ; void CPeninputVkbCtrlExt::CancelDims(void) - ?CancelRepeat@CAknFepCtrlRepeatButton@@QAEXXZ @ 26 NONAME ; void CAknFepCtrlRepeatButton::CancelRepeat(void) - ?CandidateCount@CFepCtrlDropdownList@@UBEHXZ @ 27 NONAME ; int CFepCtrlDropdownList::CandidateCount(void) const - ?ChangeVkbLayout@CAknFepCtrlVkbLayout@@QAEXH@Z @ 28 NONAME ; void CAknFepCtrlVkbLayout::ChangeVkbLayout(int) - ?Close@CAknFepCtrlBaseWindow@@QAEXXZ @ 29 NONAME ; void CAknFepCtrlBaseWindow::Close(void) - ?ConstructFromResourceL@CAknFepCtrlButton@@QAEXAAVTResourceReader@@@Z @ 30 NONAME ; void CAknFepCtrlButton::ConstructFromResourceL(class TResourceReader &) - ?ConstructFromResourceL@CAknFepCtrlButton@@UAEXXZ @ 31 NONAME ; void CAknFepCtrlButton::ConstructFromResourceL(void) - ?ConstructFromResourceL@CAknFepCtrlDragButton@@QAEXAAVTResourceReader@@@Z @ 32 NONAME ; void CAknFepCtrlDragButton::ConstructFromResourceL(class TResourceReader &) - ?ConstructFromResourceL@CAknFepCtrlDragButton@@UAEXXZ @ 33 NONAME ; void CAknFepCtrlDragButton::ConstructFromResourceL(void) - ?ConstructFromResourceL@CAknFepCtrlMultiModeButton@@QAEXAAVTResourceReader@@@Z @ 34 NONAME ; void CAknFepCtrlMultiModeButton::ConstructFromResourceL(class TResourceReader &) - ?ConstructFromResourceL@CAknFepCtrlMultiModeButton@@UAEXXZ @ 35 NONAME ; void CAknFepCtrlMultiModeButton::ConstructFromResourceL(void) - ?ConstructFromResourceL@CAknFepCtrlRangeBar@@QAEXAAVTResourceReader@@@Z @ 36 NONAME ; void CAknFepCtrlRangeBar::ConstructFromResourceL(class TResourceReader &) - ?ConstructFromResourceL@CAknFepCtrlVkbLayout@@QAEXXZ @ 37 NONAME ; void CAknFepCtrlVkbLayout::ConstructFromResourceL(void) - ?ConstructFromResourceL@CFepCtrlDropdownList@@UAEXXZ @ 38 NONAME ; void CFepCtrlDropdownList::ConstructFromResourceL(void) - ?ConstructL@CAknFepCtrlRangeBar@@IAEXXZ @ 39 NONAME ; void CAknFepCtrlRangeBar::ConstructL(void) - ?ConstructL@CAknFepCtrlRepeatButton@@IAEXXZ @ 40 NONAME ; void CAknFepCtrlRepeatButton::ConstructL(void) - ?Control@CAknFepCtrlBaseWindow@@QAEPAVCFepUiBaseCtrl@@H@Z @ 41 NONAME ; class CFepUiBaseCtrl * CAknFepCtrlBaseWindow::Control(int) - ?CurrentRange@CAknFepCtrlMultiModeButton@@QBEHXZ @ 42 NONAME ; int CAknFepCtrlMultiModeButton::CurrentRange(void) const - ?DimKeys@CPeninputVkbCtrlExt@@QAEXPBVHBufC16@@@Z @ 43 NONAME ; void CPeninputVkbCtrlExt::DimKeys(class HBufC16 const *) - ?DisableAllModes@CAknFepCtrlMultiModeButton@@QAEXXZ @ 44 NONAME ; void CAknFepCtrlMultiModeButton::DisableAllModes(void) - ?DisplayText@CAknFepCtrlEventButton@@IAEXXZ @ 45 NONAME ; void CAknFepCtrlEventButton::DisplayText(void) - ?DisplayText@CAknFepCtrlMultiModeButton@@IAEXXZ @ 46 NONAME ; void CAknFepCtrlMultiModeButton::DisplayText(void) - ?DoClose@CAknFepCtrlBaseWindow@@MAEHXZ @ 47 NONAME ; int CAknFepCtrlBaseWindow::DoClose(void) - ?Draw@CAknFepCtrlBaseWindow@@UAEXXZ @ 48 NONAME ; void CAknFepCtrlBaseWindow::Draw(void) - ?Draw@CAknFepCtrlButton@@UAEXXZ @ 49 NONAME ; void CAknFepCtrlButton::Draw(void) - ?Draw@CAknFepCtrlEventButton@@UAEXXZ @ 50 NONAME ; void CAknFepCtrlEventButton::Draw(void) - ?Draw@CAknFepCtrlMultiModeButton@@MAEXXZ @ 51 NONAME ; void CAknFepCtrlMultiModeButton::Draw(void) - ?Draw@CAknFepCtrlRangeBar@@UAEXXZ @ 52 NONAME ; void CAknFepCtrlRangeBar::Draw(void) - ?Draw@CFepCtrlDropdownList@@UAEXXZ @ 53 NONAME ; void CFepCtrlDropdownList::Draw(void) - ?EnableAllModes@CAknFepCtrlMultiModeButton@@QAEXXZ @ 54 NONAME ; void CAknFepCtrlMultiModeButton::EnableAllModes(void) - ?EnableSecondary@CFepCtrlDropdownList@@QAEXHH@Z @ 55 NONAME ; void CFepCtrlDropdownList::EnableSecondary(int, int) - ?Event@CAknFepCtrlEventButton@@QBEHXZ @ 56 NONAME ; int CAknFepCtrlEventButton::Event(void) const - ?FindKey@CPeninputVkbLayoutInfo@@QBEPAVCPeninputVkbKeyInfo@@H@Z @ 57 NONAME ; class CPeninputVkbKeyInfo * CPeninputVkbLayoutInfo::FindKey(int) const - ?FoldList@CFepCtrlDropdownList@@QAEXXZ @ 58 NONAME ; void CFepCtrlDropdownList::FoldList(void) - ?GetCase@CAknFepCtrlRangeBar@@QBEHH@Z @ 59 NONAME ; int CAknFepCtrlRangeBar::GetCase(int) const - ?GetRealSize@CPeninputVkbLayoutInfo@@QBE?BVTSize@@HH@Z @ 60 NONAME ; class TSize const CPeninputVkbLayoutInfo::GetRealSize(int, int) const - ?HandleControlEvent@CAknFepCtrlBaseWindow@@UAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 61 NONAME ; void CAknFepCtrlBaseWindow::HandleControlEvent(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?HandleControlEvent@CAknFepCtrlRangeBar@@MAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 62 NONAME ; void CAknFepCtrlRangeBar::HandleControlEvent(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?HandleControlEvent@CFepCtrlDropdownList@@UAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 63 NONAME ; void CFepCtrlDropdownList::HandleControlEvent(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?HandlePointerDownEventL@CAknFepCtrlRepeatButton@@MAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 64 NONAME ; class CFepUiBaseCtrl * CAknFepCtrlRepeatButton::HandlePointerDownEventL(class TPoint const &) - ?HandlePointerDownEventL@CFepCtrlDropdownList@@UAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 65 NONAME ; class CFepUiBaseCtrl * CFepCtrlDropdownList::HandlePointerDownEventL(class TPoint const &) - ?HandlePointerLeave@CAknFepCtrlRepeatButton@@MAEXABVTPoint@@@Z @ 66 NONAME ; void CAknFepCtrlRepeatButton::HandlePointerLeave(class TPoint const &) - ?HandlePointerLeave@CFepCtrlDropdownList@@UAEXABVTPoint@@@Z @ 67 NONAME ; void CFepCtrlDropdownList::HandlePointerLeave(class TPoint const &) - ?HandlePointerMoveEventL@CFepCtrlDropdownList@@UAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 68 NONAME ; class CFepUiBaseCtrl * CFepCtrlDropdownList::HandlePointerMoveEventL(class TPoint const &) - ?HandlePointerUpEventL@CAknFepCtrlEventButton@@UAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 69 NONAME ; class CFepUiBaseCtrl * CAknFepCtrlEventButton::HandlePointerUpEventL(class TPoint const &) - ?HandlePointerUpEventL@CAknFepCtrlRepeatButton@@MAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 70 NONAME ; class CFepUiBaseCtrl * CAknFepCtrlRepeatButton::HandlePointerUpEventL(class TPoint const &) - ?HandlePointerUpEventL@CFepCtrlDropdownList@@UAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 71 NONAME ; class CFepUiBaseCtrl * CFepCtrlDropdownList::HandlePointerUpEventL(class TPoint const &) - ?HandleTimerOut@CAknFepCtrlRepeatButton@@UAEXPBVCAknFepTimer@@@Z @ 72 NONAME ; void CAknFepCtrlRepeatButton::HandleTimerOut(class CAknFepTimer const *) - ?HideRange@CAknFepCtrlRangeBar@@QAEXH@Z @ 73 NONAME ; void CAknFepCtrlRangeBar::HideRange(int) - ?ImageAlreadyExist@CAknFepCtrlMultiModeButton@@IAEHJ@Z @ 74 NONAME ; int CAknFepCtrlMultiModeButton::ImageAlreadyExist(long) - ?IsEnableSecondary@CFepCtrlDropdownList@@UBEHXZ @ 75 NONAME ; int CFepCtrlDropdownList::IsEnableSecondary(void) const - ?IsGivenRangeSupported@CAknFepCtrlMultiModeButton@@QAEHH@Z @ 76 NONAME ; int CAknFepCtrlMultiModeButton::IsGivenRangeSupported(int) - ?Move@CAknFepCtrlRangeBar@@UAEXABVTPoint@@@Z @ 77 NONAME ; void CAknFepCtrlRangeBar::Move(class TPoint const &) - ?Move@CFepCtrlDropdownList@@UAEXABVTPoint@@@Z @ 78 NONAME ; void CFepCtrlDropdownList::Move(class TPoint const &) - ?Move@CPeninputVkbCtrlExt@@UAEXABVTPoint@@@Z @ 79 NONAME ; void CPeninputVkbCtrlExt::Move(class TPoint const &) - ?MoveKeys@CPeninputVkbLayoutInfo@@QAEXABVTPoint@@@Z @ 80 NONAME ; void CPeninputVkbLayoutInfo::MoveKeys(class TPoint const &) - ?NewL@CAknFepCtrlButton@@SAPAV1@PAVCFepUiLayout@@H@Z @ 81 NONAME ; class CAknFepCtrlButton * CAknFepCtrlButton::NewL(class CFepUiLayout *, int) - ?NewL@CAknFepCtrlDragButton@@SAPAV1@PAVCFepUiLayout@@H@Z @ 82 NONAME ; class CAknFepCtrlDragButton * CAknFepCtrlDragButton::NewL(class CFepUiLayout *, int) - ?NewL@CAknFepCtrlEventButton@@SAPAV1@PAVCFepUiLayout@@HHH@Z @ 83 NONAME ABSENT ; class CAknFepCtrlEventButton * CAknFepCtrlEventButton::NewL(class CFepUiLayout *, int, int, int) - ?NewL@CAknFepCtrlMultiModeButton@@SAPAV1@PAVCFepUiLayout@@H@Z @ 84 NONAME ABSENT ; class CAknFepCtrlMultiModeButton * CAknFepCtrlMultiModeButton::NewL(class CFepUiLayout *, int) - ?NewL@CAknFepCtrlRangeBar@@SAPAV1@PAVCFepUiLayout@@HW4TButtonGroupStyle@1@@Z @ 85 NONAME ; class CAknFepCtrlRangeBar * CAknFepCtrlRangeBar::NewL(class CFepUiLayout *, int, enum CAknFepCtrlRangeBar::TButtonGroupStyle) - ?NewL@CAknFepCtrlRepeatButton@@SAPAV1@PAVCFepUiLayout@@HHH@Z @ 86 NONAME ABSENT ; class CAknFepCtrlRepeatButton * CAknFepCtrlRepeatButton::NewL(class CFepUiLayout *, int, int, int) - ?NewL@CAknFepCtrlVkbLayout@@SAPAV1@XZ @ 87 NONAME ; class CAknFepCtrlVkbLayout * CAknFepCtrlVkbLayout::NewL(void) - ?NewL@CFepCtrlDropdownList@@SAPAV1@ABVTPoint@@PAVCFepUiLayout@@HAAVTResourceReader@@HHHHHPBVCFont@@PAVMListEventHandler@@W4TTextAlign@CGraphicsContext@@HVTRgb@@6666666@Z @ 88 NONAME ; class CFepCtrlDropdownList * CFepCtrlDropdownList::NewL(class TPoint const &, class CFepUiLayout *, int, class TResourceReader &, int, int, int, int, int, class CFont const *, class MListEventHandler *, enum CGraphicsContext::TTextAlign, int, class TRgb, class TRgb, class TRgb, class TRgb, class TRgb, class TRgb, class TRgb, class TRgb) - ?NewL@CPeninputVkbCtrlExt@@SAPAV1@ABVTRect@@PAVCFepUiLayout@@HPBVCFont@@@Z @ 89 NONAME ABSENT ; class CPeninputVkbCtrlExt * CPeninputVkbCtrlExt::NewL(class TRect const &, class CFepUiLayout *, int, class CFont const *) - ?NewL@CPeninputVkbKeyInfo@@SAPAV1@AAVTResourceReader@@@Z @ 90 NONAME ; class CPeninputVkbKeyInfo * CPeninputVkbKeyInfo::NewL(class TResourceReader &) - ?NewL@CPeninputVkbLayoutInfo@@SAPAV1@AAVTResourceReader@@@Z @ 91 NONAME ; class CPeninputVkbLayoutInfo * CPeninputVkbLayoutInfo::NewL(class TResourceReader &) - ?NewLC@CAknFepCtrlButton@@SAPAV1@PAVCFepUiLayout@@H@Z @ 92 NONAME ; class CAknFepCtrlButton * CAknFepCtrlButton::NewLC(class CFepUiLayout *, int) - ?NewLC@CAknFepCtrlDragButton@@SAPAV1@PAVCFepUiLayout@@H@Z @ 93 NONAME ; class CAknFepCtrlDragButton * CAknFepCtrlDragButton::NewLC(class CFepUiLayout *, int) - ?NewLC@CAknFepCtrlEventButton@@SAPAV1@PAVCFepUiLayout@@HHH@Z @ 94 NONAME ABSENT ; class CAknFepCtrlEventButton * CAknFepCtrlEventButton::NewLC(class CFepUiLayout *, int, int, int) - ?NewLC@CAknFepCtrlMultiModeButton@@SAPAV1@PAVCFepUiLayout@@H@Z @ 95 NONAME ABSENT ; class CAknFepCtrlMultiModeButton * CAknFepCtrlMultiModeButton::NewLC(class CFepUiLayout *, int) - ?NewLC@CAknFepCtrlRangeBar@@SAPAV1@PAVCFepUiLayout@@HW4TButtonGroupStyle@1@@Z @ 96 NONAME ; class CAknFepCtrlRangeBar * CAknFepCtrlRangeBar::NewLC(class CFepUiLayout *, int, enum CAknFepCtrlRangeBar::TButtonGroupStyle) - ?NewLC@CAknFepCtrlRepeatButton@@SAPAV1@PAVCFepUiLayout@@HHH@Z @ 97 NONAME ABSENT ; class CAknFepCtrlRepeatButton * CAknFepCtrlRepeatButton::NewLC(class CFepUiLayout *, int, int, int) - ?NewLC@CAknFepCtrlVkbLayout@@SAPAV1@XZ @ 98 NONAME ; class CAknFepCtrlVkbLayout * CAknFepCtrlVkbLayout::NewLC(void) - ?NewLC@CFepCtrlDropdownList@@SAPAV1@ABVTPoint@@PAVCFepUiLayout@@HAAVTResourceReader@@HHHHHPBVCFont@@PAVMListEventHandler@@W4TTextAlign@CGraphicsContext@@HVTRgb@@6666666@Z @ 99 NONAME ; class CFepCtrlDropdownList * CFepCtrlDropdownList::NewLC(class TPoint const &, class CFepUiLayout *, int, class TResourceReader &, int, int, int, int, int, class CFont const *, class MListEventHandler *, enum CGraphicsContext::TTextAlign, int, class TRgb, class TRgb, class TRgb, class TRgb, class TRgb, class TRgb, class TRgb, class TRgb) - ?NewLC@CPeninputVkbLayoutInfo@@SAPAV1@AAVTResourceReader@@@Z @ 100 NONAME ; class CPeninputVkbLayoutInfo * CPeninputVkbLayoutInfo::NewLC(class TResourceReader &) - ?NextMode@CAknFepCtrlMultiModeButton@@QBEHXZ @ 101 NONAME ; int CAknFepCtrlMultiModeButton::NextMode(void) const - ?OnDeActivate@CFepCtrlDropdownList@@UAEXXZ @ 102 NONAME ; void CFepCtrlDropdownList::OnDeActivate(void) - ?RangeOfGivenMode@CAknFepCtrlMultiModeButton@@QBEHH@Z @ 103 NONAME ; int CAknFepCtrlMultiModeButton::RangeOfGivenMode(int) const - ?Rect@CFepCtrlDropdownList@@QAEABVTRect@@XZ @ 104 NONAME ; class TRect const & CFepCtrlDropdownList::Rect(void) - ?RefreshUI@CAknFepCtrlRangeBar@@QAEXXZ @ 105 NONAME ; void CAknFepCtrlRangeBar::RefreshUI(void) - ?ReorganizeVkbKeys@CPeninputVkbCtrlExt@@QAEXPAVCPeninputVkbLayoutInfo@@@Z @ 106 NONAME ; void CPeninputVkbCtrlExt::ReorganizeVkbKeys(class CPeninputVkbLayoutInfo *) - ?Reset@CAknFepCtrlVkbLayout@@QAEXXZ @ 107 NONAME ; void CAknFepCtrlVkbLayout::Reset(void) - ?Reset@CPeninputVkbCtrlExt@@QAEXXZ @ 108 NONAME ; void CPeninputVkbCtrlExt::Reset(void) - ?ResetAndClear@CFepCtrlDropdownList@@QAEXW4TListType@1@@Z @ 109 NONAME ; void CFepCtrlDropdownList::ResetAndClear(enum CFepCtrlDropdownList::TListType) - ?ResetSize@CPeninputVkbLayoutInfo@@QAEXHHHHABVTPoint@@PBVCFont@@@Z @ 110 NONAME ; void CPeninputVkbLayoutInfo::ResetSize(int, int, int, int, class TPoint const &, class CFont const *) - ?SetActionStyle@CAknFepCtrlRangeBar@@QAEXW4TRangeBarActionStyle@1@@Z @ 111 NONAME ; void CAknFepCtrlRangeBar::SetActionStyle(enum CAknFepCtrlRangeBar::TRangeBarActionStyle) - ?SetActive@CAknFepCtrlButton@@UAEXH@Z @ 112 NONAME ; void CAknFepCtrlButton::SetActive(int) - ?SetActive@CFepCtrlDropdownList@@UAEXH@Z @ 113 NONAME ; void CFepCtrlDropdownList::SetActive(int) - ?SetBgColor@CFepCtrlDropdownList@@QAEXVTRgb@@H@Z @ 114 NONAME ; void CFepCtrlDropdownList::SetBgColor(class TRgb, int) - ?SetBorderColor@CFepCtrlDropdownList@@QAEXVTRgb@@H@Z @ 115 NONAME ; void CFepCtrlDropdownList::SetBorderColor(class TRgb, int) - ?SetButtonBmpL@CAknFepCtrlMultiModeButton@@IAEXW4TButtonBmpType@@H@Z @ 116 NONAME ; void CAknFepCtrlMultiModeButton::SetButtonBmpL(enum TButtonBmpType, int) - ?SetCandidatesL@CFepCtrlDropdownList@@QAEXABV?$RPointerArray@VHBufC16@@@@W4TListType@1@ABVTDesC16@@@Z @ 117 NONAME ; void CFepCtrlDropdownList::SetCandidatesL(class RPointerArray const &, enum CFepCtrlDropdownList::TListType, class TDesC16 const &) - ?SetCaseL@CAknFepCtrlRangeBar@@QAEXHH@Z @ 118 NONAME ; void CAknFepCtrlRangeBar::SetCaseL(int, int) - ?SetCellHeight@CFepCtrlDropdownList@@QAEXH@Z @ 119 NONAME ; void CFepCtrlDropdownList::SetCellHeight(int) - ?SetCellWidth@CFepCtrlDropdownList@@QAEXH@Z @ 120 NONAME ; void CFepCtrlDropdownList::SetCellWidth(int) - ?SetColNum@CFepCtrlDropdownList@@QAEXH@Z @ 121 NONAME ; void CFepCtrlDropdownList::SetColNum(int) - ?SetCurrentModeL@CAknFepCtrlMultiModeButton@@QAEXW4TButtonBmpType@@H@Z @ 122 NONAME ; void CAknFepCtrlMultiModeButton::SetCurrentModeL(enum TButtonBmpType, int) - ?SetDragEnable@CAknFepCtrlBaseWindow@@QAEXH@Z @ 123 NONAME ; void CAknFepCtrlBaseWindow::SetDragEnable(int) - ?SetEvent@CAknFepCtrlEventButton@@QAEXH@Z @ 124 NONAME ; void CAknFepCtrlEventButton::SetEvent(int) - ?SetEventIdForCandidateSelected@CFepCtrlDropdownList@@QAEXH@Z @ 125 NONAME ; void CFepCtrlDropdownList::SetEventIdForCandidateSelected(int) - ?SetEventIdForCase@CAknFepCtrlRangeBar@@QAEXH@Z @ 126 NONAME ; void CAknFepCtrlRangeBar::SetEventIdForCase(int) - ?SetEventIdForRange@CAknFepCtrlRangeBar@@QAEXH@Z @ 127 NONAME ; void CAknFepCtrlRangeBar::SetEventIdForRange(int) - ?SetFont@CAknFepCtrlEventButton@@QAEXPBVCFont@@@Z @ 128 NONAME ; void CAknFepCtrlEventButton::SetFont(class CFont const *) - ?SetFont@CAknFepCtrlRangeBar@@QAEXPBVCFont@@@Z @ 129 NONAME ; void CAknFepCtrlRangeBar::SetFont(class CFont const *) - ?SetFont@CFepCtrlDropdownList@@QAEXPBVCFont@@H@Z @ 130 NONAME ; void CFepCtrlDropdownList::SetFont(class CFont const *, int) - ?SetFontColor@CAknFepCtrlEventButton@@QAEXVTRgb@@@Z @ 131 NONAME ; void CAknFepCtrlEventButton::SetFontColor(class TRgb) - ?SetFontColor@CAknFepCtrlMultiModeButton@@QAEXVTRgb@@@Z @ 132 NONAME ; void CAknFepCtrlMultiModeButton::SetFontColor(class TRgb) - ?SetHighLightBgColor@CFepCtrlDropdownList@@QAEXVTRgb@@H@Z @ 133 NONAME ; void CFepCtrlDropdownList::SetHighLightBgColor(class TRgb, int) - ?SetHighLightTextColor@CFepCtrlDropdownList@@QAEXVTRgb@@H@Z @ 134 NONAME ; void CFepCtrlDropdownList::SetHighLightTextColor(class TRgb, int) - ?SetHighlight@CAknFepCtrlButton@@QAEXH@Z @ 135 NONAME ; void CAknFepCtrlButton::SetHighlight(int) - ?SetHighlightCell@CFepCtrlDropdownList@@QAEXHH@Z @ 136 NONAME ABSENT ; void CFepCtrlDropdownList::SetHighlightCell(int, int) - ?SetListEventHandler@CFepCtrlDropdownList@@QAEXPAVMListEventHandler@@@Z @ 137 NONAME ; void CFepCtrlDropdownList::SetListEventHandler(class MListEventHandler *) - ?SetNaviWidth@CFepCtrlDropdownList@@QAEXH@Z @ 138 NONAME ; void CFepCtrlDropdownList::SetNaviWidth(int) - ?SetNavigationBgColor@CFepCtrlDropdownList@@QAEXVTRgb@@H@Z @ 139 NONAME ; void CFepCtrlDropdownList::SetNavigationBgColor(class TRgb, int) - ?SetPermittedCase@CAknFepCtrlRangeBar@@QAEXHHH@Z @ 140 NONAME ; void CAknFepCtrlRangeBar::SetPermittedCase(int, int, int) - ?SetPermittedModes@CAknFepCtrlMultiModeButton@@QAEHHHH@Z @ 141 NONAME ; int CAknFepCtrlMultiModeButton::SetPermittedModes(int, int, int) - ?SetPermittedRange@CAknFepCtrlMultiModeButton@@QAEHHH@Z @ 142 NONAME ; int CAknFepCtrlMultiModeButton::SetPermittedRange(int, int) - ?SetPermittedRange@CAknFepCtrlRangeBar@@QAEXHH@Z @ 143 NONAME ; void CAknFepCtrlRangeBar::SetPermittedRange(int, int) - ?SetPermittedRanges@CAknFepCtrlRangeBar@@QAEXH@Z @ 144 NONAME ; void CAknFepCtrlRangeBar::SetPermittedRanges(int) - ?SetRange@CAknFepCtrlMultiModeButton@@QAEHH@Z @ 145 NONAME ; int CAknFepCtrlMultiModeButton::SetRange(int) - ?SetRange@CAknFepCtrlRangeBar@@QAEHH@Z @ 146 NONAME ; int CAknFepCtrlRangeBar::SetRange(int) - ?SetRepeatInterval@CAknFepCtrlRepeatButton@@QAEXABVTTimeIntervalMicroSeconds32@@@Z @ 147 NONAME ; void CAknFepCtrlRepeatButton::SetRepeatInterval(class TTimeIntervalMicroSeconds32 const &) - ?SetResourceId@CAknFepCtrlVkbLayout@@QAEXJ@Z @ 148 NONAME ; void CAknFepCtrlVkbLayout::SetResourceId(long) - ?SetRowNum@CFepCtrlDropdownList@@QAEXH@Z @ 149 NONAME ; void CFepCtrlDropdownList::SetRowNum(int) - ?SetSecondaryList@CFepCtrlDropdownList@@QAEXV?$RArray@H@@H@Z @ 150 NONAME ABSENT ; void CFepCtrlDropdownList::SetSecondaryList(class RArray, int) - ?SetShadowFont@CAknFepCtrlEventButton@@QAEXPBVCFont@@@Z @ 151 NONAME ; void CAknFepCtrlEventButton::SetShadowFont(class CFont const *) - ?SetShadowFontColor@CAknFepCtrlEventButton@@QAEXVTRgb@@@Z @ 152 NONAME ; void CAknFepCtrlEventButton::SetShadowFontColor(class TRgb) - ?SetShadowFontColor@CAknFepCtrlMultiModeButton@@QAEXVTRgb@@@Z @ 153 NONAME ; void CAknFepCtrlMultiModeButton::SetShadowFontColor(class TRgb) - ?SetSpecialTextColor@CFepCtrlDropdownList@@QAEXVTRgb@@H@Z @ 154 NONAME ; void CFepCtrlDropdownList::SetSpecialTextColor(class TRgb, int) - ?SetText@CAknFepCtrlEventButton@@QAEXABVTDesC16@@@Z @ 155 NONAME ; void CAknFepCtrlEventButton::SetText(class TDesC16 const &) - ?SetTextAlighment@CFepCtrlDropdownList@@QAEXW4TTextAlign@CGraphicsContext@@H@Z @ 156 NONAME ; void CFepCtrlDropdownList::SetTextAlighment(enum CGraphicsContext::TTextAlign, int) - ?SetTextColor@CFepCtrlDropdownList@@QAEXVTRgb@@H@Z @ 157 NONAME ; void CFepCtrlDropdownList::SetTextColor(class TRgb, int) - ?SetTextMargin@CFepCtrlDropdownList@@QAEXHH@Z @ 158 NONAME ; void CFepCtrlDropdownList::SetTextMargin(int, int) - ?SetTopLeftPoint@CFepCtrlDropdownList@@QAEXVTPoint@@@Z @ 159 NONAME ; void CFepCtrlDropdownList::SetTopLeftPoint(class TPoint) - ?SetUnicode@CAknFepCtrlEventButton@@QAEXH@Z @ 160 NONAME ; void CAknFepCtrlEventButton::SetUnicode(int) - ?SetVkbKeyboard@CAknFepCtrlVkbLayout@@QAEXPAVCPeninputVkbCtrlExt@@@Z @ 161 NONAME ; void CAknFepCtrlVkbLayout::SetVkbKeyboard(class CPeninputVkbCtrlExt *) - ?ShowAllRanges@CAknFepCtrlRangeBar@@QAEXXZ @ 162 NONAME ; void CAknFepCtrlRangeBar::ShowAllRanges(void) - ?ShowRange@CAknFepCtrlRangeBar@@QAEXH@Z @ 163 NONAME ; void CAknFepCtrlRangeBar::ShowRange(int) - ?SizeChanged@CAknFepCtrlButton@@QAEXVTRect@@H@Z @ 164 NONAME ; void CAknFepCtrlButton::SizeChanged(class TRect, int) - ?SizeChanged@CAknFepCtrlDragButton@@QAEXABVTRect@@H@Z @ 165 NONAME ABSENT ; void CAknFepCtrlDragButton::SizeChanged(class TRect const &, int) - ?SizeChanged@CAknFepCtrlMultiModeButton@@QAEXVTRect@@H@Z @ 166 NONAME ABSENT ; void CAknFepCtrlMultiModeButton::SizeChanged(class TRect, int) - ?SizeChanged@CAknFepCtrlRangeBar@@QAEXVTRect@@@Z @ 167 NONAME ; void CAknFepCtrlRangeBar::SizeChanged(class TRect) - ?SizeChanged@CFepCtrlDropdownList@@QAEXHHHVTPoint@@HH@Z @ 168 NONAME ; void CFepCtrlDropdownList::SizeChanged(int, int, int, class TPoint, int, int) - ?SizeChanged@CPeninputVkbCtrlExt@@QAEXHHABVTPoint@@@Z @ 169 NONAME ; void CPeninputVkbCtrlExt::SizeChanged(int, int, class TPoint const &) - ?Unicode@CAknFepCtrlEventButton@@QBEHXZ @ 170 NONAME ; int CAknFepCtrlEventButton::Unicode(void) const - ?VkbLayoutInfoList@CAknFepCtrlVkbLayout@@QAE?AV?$RPointerArray@VCPeninputVkbLayoutInfo@@@@XZ @ 171 NONAME ; class RPointerArray CAknFepCtrlVkbLayout::VkbLayoutInfoList(void) - ?AddCandidatesL@CFepCtrlDropdownList@@QAEXABV?$RPointerArray@VHBufC16@@@@W4TListType@1@@Z @ 172 NONAME ; void CFepCtrlDropdownList::AddCandidatesL(class RPointerArray const &, enum CFepCtrlDropdownList::TListType) - ?SetEventIdForCandidateExisted@CFepCtrlDropdownList@@QAEXH@Z @ 173 NONAME ; void CFepCtrlDropdownList::SetEventIdForCandidateExisted(int) - ?SetEventIdForNextPageCandidate@CFepCtrlDropdownList@@QAEXH@Z @ 174 NONAME ; void CFepCtrlDropdownList::SetEventIdForNextPageCandidate(int) - ?SetEventIdForPreviousPageCandidate@CFepCtrlDropdownList@@QAEXH@Z @ 175 NONAME ; void CFepCtrlDropdownList::SetEventIdForPreviousPageCandidate(int) - ?SetFlagCandidateExist@CFepCtrlDropdownList@@QAEXH@Z @ 176 NONAME ; void CFepCtrlDropdownList::SetFlagCandidateExist(int) - ??0CAknFepCtrlRawKeyButton@@IAE@PAVCFepUiLayout@@HHHH@Z @ 177 NONAME ABSENT ; CAknFepCtrlRawKeyButton::CAknFepCtrlRawKeyButton(class CFepUiLayout *, int, int, int, int) - ??1CAknFepCtrlRawKeyButton@@UAE@XZ @ 178 NONAME ; CAknFepCtrlRawKeyButton::~CAknFepCtrlRawKeyButton(void) - ?ConstructFromResourceL@CAknFepCtrlRawKeyButton@@QAEXAAVTResourceReader@@@Z @ 179 NONAME ; void CAknFepCtrlRawKeyButton::ConstructFromResourceL(class TResourceReader &) - ?ConstructFromResourceL@CAknFepCtrlRawKeyButton@@UAEXXZ @ 180 NONAME ; void CAknFepCtrlRawKeyButton::ConstructFromResourceL(void) - ?HandlePointerDownEventL@CAknFepCtrlRawKeyButton@@UAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 181 NONAME ; class CFepUiBaseCtrl * CAknFepCtrlRawKeyButton::HandlePointerDownEventL(class TPoint const &) - ?HandlePointerUpEventL@CAknFepCtrlRawKeyButton@@UAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 182 NONAME ; class CFepUiBaseCtrl * CAknFepCtrlRawKeyButton::HandlePointerUpEventL(class TPoint const &) - ?NewL@CAknFepCtrlRawKeyButton@@SAPAV1@PAVCFepUiLayout@@HHHH@Z @ 183 NONAME ABSENT ; class CAknFepCtrlRawKeyButton * CAknFepCtrlRawKeyButton::NewL(class CFepUiLayout *, int, int, int, int) - ?NewL@CFepCtrlDropdownList@@SAPAV1@PAVCFepUiLayout@@HHVTPoint@@VTSize@@HH@Z @ 184 NONAME ; class CFepCtrlDropdownList * CFepCtrlDropdownList::NewL(class CFepUiLayout *, int, int, class TPoint, class TSize, int, int) - ?NewLC@CAknFepCtrlRawKeyButton@@SAPAV1@PAVCFepUiLayout@@HHHH@Z @ 185 NONAME ABSENT ; class CAknFepCtrlRawKeyButton * CAknFepCtrlRawKeyButton::NewLC(class CFepUiLayout *, int, int, int, int) - ?SetCandTruncateType@CFepCtrlDropdownList@@QAEXW4TCandTruncateType@1@@Z @ 186 NONAME ; void CFepCtrlDropdownList::SetCandTruncateType(enum CFepCtrlDropdownList::TCandTruncateType) - ?SetCellMargin@CFepCtrlDropdownList@@QAEXHH@Z @ 187 NONAME ; void CFepCtrlDropdownList::SetCellMargin(int, int) - ?SetSpinBtnHeight@CFepCtrlDropdownList@@QAEXH@Z @ 188 NONAME ; void CFepCtrlDropdownList::SetSpinBtnHeight(int) - ?HandlePointerLeave@CAknFepCtrlRawKeyButton@@UAEXABVTPoint@@@Z @ 189 NONAME ; void CAknFepCtrlRawKeyButton::HandlePointerLeave(class TPoint const &) - ??1CAknFepCtrlLabel@@UAE@XZ @ 190 NONAME ; CAknFepCtrlLabel::~CAknFepCtrlLabel(void) - ??1CPenInputSelectionList@@UAE@XZ @ 191 NONAME ; CPenInputSelectionList::~CPenInputSelectionList(void) - ?AddItemL@CPenInputSelectionList@@QAEXABVTDesC16@@@Z @ 192 NONAME ; void CPenInputSelectionList::AddItemL(class TDesC16 const &) - ?CloseWindow@CPenInputSelectionList@@QAEXXZ @ 193 NONAME ; void CPenInputSelectionList::CloseWindow(void) - ?ConstructFromResourceL@CPenInputSelectionList@@UAEXXZ @ 194 NONAME ; void CPenInputSelectionList::ConstructFromResourceL(void) - ?Display@CPenInputSelectionList@@QAEXXZ @ 195 NONAME ; void CPenInputSelectionList::Display(void) - ?Draw@CAknFepCtrlLabel@@UAEXXZ @ 196 NONAME ; void CAknFepCtrlLabel::Draw(void) - ?HandlePointerDownEventL@CPenInputSelectionList@@UAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 197 NONAME ; class CFepUiBaseCtrl * CPenInputSelectionList::HandlePointerDownEventL(class TPoint const &) - ?HandlePointerMoveEventL@CPenInputSelectionList@@UAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 198 NONAME ; class CFepUiBaseCtrl * CPenInputSelectionList::HandlePointerMoveEventL(class TPoint const &) - ?HandlePointerUpEventL@CPenInputSelectionList@@UAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 199 NONAME ; class CFepUiBaseCtrl * CPenInputSelectionList::HandlePointerUpEventL(class TPoint const &) - ?NewL@CAknFepCtrlLabel@@SAPAV1@PAVCFepUiLayout@@H@Z @ 200 NONAME ; class CAknFepCtrlLabel * CAknFepCtrlLabel::NewL(class CFepUiLayout *, int) - ?NewL@CPenInputSelectionList@@SAPAV1@PAVCFepUiLayout@@HVTPoint@@VTSize@@H@Z @ 201 NONAME ; class CPenInputSelectionList * CPenInputSelectionList::NewL(class CFepUiLayout *, int, class TPoint, class TSize, int) - ?RemoveAllItems@CPenInputSelectionList@@QAEXXZ @ 202 NONAME ; void CPenInputSelectionList::RemoveAllItems(void) - ?RemoveItem@CPenInputSelectionList@@QAEXH@Z @ 203 NONAME ; void CPenInputSelectionList::RemoveItem(int) - ?SetBitmapL@CAknFepCtrlLabel@@QAEXPAVCFbsBitmap@@@Z @ 204 NONAME ; void CAknFepCtrlLabel::SetBitmapL(class CFbsBitmap *) - ?SetFont@CAknFepCtrlLabel@@UAEXABVTFontSpec@@@Z @ 205 NONAME ; void CAknFepCtrlLabel::SetFont(class TFontSpec const &) - ?SetFont@CAknFepCtrlLabel@@UAEXPBVCFont@@@Z @ 206 NONAME ; void CAknFepCtrlLabel::SetFont(class CFont const *) - ?SetFontColor@CAknFepCtrlLabel@@UAEXVTRgb@@@Z @ 207 NONAME ABSENT ; void CAknFepCtrlLabel::SetFontColor(class TRgb) - ?SetItemsL@CPenInputSelectionList@@QAEXABV?$RPointerArray@VHBufC16@@@@@Z @ 208 NONAME ; void CPenInputSelectionList::SetItemsL(class RPointerArray const &) - ?SetMaskBitmapL@CAknFepCtrlLabel@@QAEXPAVCFbsBitmap@@@Z @ 209 NONAME ; void CAknFepCtrlLabel::SetMaskBitmapL(class CFbsBitmap *) - ?SetText@CAknFepCtrlLabel@@QAEXABVTDesC16@@@Z @ 210 NONAME ; void CAknFepCtrlLabel::SetText(class TDesC16 const &) - ?SetTextAlignment@CAknFepCtrlLabel@@UAEXW4TTextAlign@CGraphicsContext@@@Z @ 211 NONAME ; void CAknFepCtrlLabel::SetTextAlignment(enum CGraphicsContext::TTextAlign) - ?SetTextProperty@CPenInputSelectionList@@QAEXPBVCFont@@VTRgb@@@Z @ 212 NONAME ; void CPenInputSelectionList::SetTextProperty(class CFont const *, class TRgb) - ?SizeChanged@CAknFepCtrlLabel@@UAEXVTRect@@H@Z @ 213 NONAME ; void CAknFepCtrlLabel::SizeChanged(class TRect, int) - ?SizeChanged@CPenInputSelectionList@@QAEXVTPoint@@VTSize@@H@Z @ 214 NONAME ; void CPenInputSelectionList::SizeChanged(class TPoint, class TSize, int) - ?TextAlignment@CAknFepCtrlLabel@@UAE?AW4TTextAlign@CGraphicsContext@@XZ @ 215 NONAME ; enum CGraphicsContext::TTextAlign CAknFepCtrlLabel::TextAlignment(void) - ?CreateSwitchL@PenInputModeSwitchFactory@@SAPAVMPenInputModeSwitchInterface@@PAVCFepUiLayout@@HW4TPluginInputMode@@@Z @ 216 NONAME ABSENT ; class MPenInputModeSwitchInterface * PenInputModeSwitchFactory::CreateSwitchL(class CFepUiLayout *, int, enum TPluginInputMode) - ?ReleaseSwitch@PenInputModeSwitchFactory@@SAXPAVMPenInputModeSwitchInterface@@@Z @ 217 NONAME ABSENT ; void PenInputModeSwitchFactory::ReleaseSwitch(class MPenInputModeSwitchInterface *) - ?SetFuzzyBoundry@CFepCtrlDropdownList@@QAEXH@Z @ 218 NONAME ; void CFepCtrlDropdownList::SetFuzzyBoundry(int) - ?SetCandExpandType@CFepCtrlDropdownList@@QAEXW4TExpandType@1@@Z @ 219 NONAME ; void CFepCtrlDropdownList::SetCandExpandType(enum CFepCtrlDropdownList::TExpandType) - ??0CAknFepCtrlCommonButton@@IAE@PAVCFepUiLayout@@HVTAknsItemID@@11@Z @ 220 NONAME ; CAknFepCtrlCommonButton::CAknFepCtrlCommonButton(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ??1CAknFepCtrlCommonButton@@UAE@XZ @ 221 NONAME ; CAknFepCtrlCommonButton::~CAknFepCtrlCommonButton(void) - ?ConstructFromResourceL@CAknFepCtrlCommonButton@@QAEXAAVTResourceReader@@@Z @ 222 NONAME ; void CAknFepCtrlCommonButton::ConstructFromResourceL(class TResourceReader &) - ?ConstructFromResourceL@CAknFepCtrlCommonButton@@UAEXXZ @ 223 NONAME ; void CAknFepCtrlCommonButton::ConstructFromResourceL(void) - ?Draw@CAknFepCtrlCommonButton@@UAEXXZ @ 224 NONAME ; void CAknFepCtrlCommonButton::Draw(void) - ?NewL@CAknFepCtrlCommonButton@@SAPAV1@PAVCFepUiLayout@@HVTAknsItemID@@11@Z @ 225 NONAME ; class CAknFepCtrlCommonButton * CAknFepCtrlCommonButton::NewL(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?NewLC@CAknFepCtrlCommonButton@@SAPAV1@PAVCFepUiLayout@@HVTAknsItemID@@11@Z @ 226 NONAME ; class CAknFepCtrlCommonButton * CAknFepCtrlCommonButton::NewLC(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?SetActive@CAknFepCtrlCommonButton@@UAEXH@Z @ 227 NONAME ; void CAknFepCtrlCommonButton::SetActive(int) - ?SetForgroundBmpRect@CAknFepCtrlCommonButton@@QAEXABVTRect@@@Z @ 228 NONAME ; void CAknFepCtrlCommonButton::SetForgroundBmpRect(class TRect const &) - ?SetHighlight@CAknFepCtrlCommonButton@@QAEXH@Z @ 229 NONAME ; void CAknFepCtrlCommonButton::SetHighlight(int) - ?SizeChanged@CAknFepCtrlCommonButton@@QAEXVTRect@@0H@Z @ 230 NONAME ; void CAknFepCtrlCommonButton::SizeChanged(class TRect, class TRect, int) - ??0CAknFepCtrlRawKeyButton@@IAE@PAVCFepUiLayout@@HVTAknsItemID@@11HHH@Z @ 231 NONAME ; CAknFepCtrlRawKeyButton::CAknFepCtrlRawKeyButton(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID, int, int, int) - ?NewL@CAknFepCtrlRawKeyButton@@SAPAV1@PAVCFepUiLayout@@HVTAknsItemID@@11HHH@Z @ 232 NONAME ; class CAknFepCtrlRawKeyButton * CAknFepCtrlRawKeyButton::NewL(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID, int, int, int) - ?NewLC@CAknFepCtrlRawKeyButton@@SAPAV1@PAVCFepUiLayout@@HVTAknsItemID@@11HHH@Z @ 233 NONAME ; class CAknFepCtrlRawKeyButton * CAknFepCtrlRawKeyButton::NewLC(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID, int, int, int) - ?OnDeActivate@CAknFepCtrlRawKeyButton@@UAEXXZ @ 234 NONAME ; void CAknFepCtrlRawKeyButton::OnDeActivate(void) - ??1CPeninputLayoutInputmodelChoice@@UAE@XZ @ 235 NONAME ; CPeninputLayoutInputmodelChoice::~CPeninputLayoutInputmodelChoice(void) - ?NewL@CPeninputLayoutInputmodelChoice@@SAPAV1@PAVCFepUiLayout@@HW4TPluginInputMode@@@Z @ 236 NONAME ; class CPeninputLayoutInputmodelChoice * CPeninputLayoutInputmodelChoice::NewL(class CFepUiLayout *, int, enum TPluginInputMode) - ?PopUpSwitchListL@CPeninputLayoutInputmodelChoice@@QAEXABVTRect@@@Z @ 237 NONAME ; void CPeninputLayoutInputmodelChoice::PopUpSwitchListL(class TPoint const &, int) - ?SetSecretEditor@CPeninputLayoutInputmodelChoice@@QAEXH@Z @ 238 NONAME ; void CPeninputLayoutInputmodelChoice::SetSecretEditor(int) - ?SwitchListRect@CPeninputLayoutInputmodelChoice@@QAE?AVTRect@@XZ @ 239 NONAME ; class TRect CPeninputLayoutInputmodelChoice::SwitchListRect(void) - ?HandlePointerDownEventL@CAknFepCtrlCommonButton@@MAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 240 NONAME ; class CFepUiBaseCtrl * CAknFepCtrlCommonButton::HandlePointerDownEventL(class TPoint const &) - ?HandlePointerLeave@CAknFepCtrlCommonButton@@MAEXABVTPoint@@@Z @ 241 NONAME ; void CAknFepCtrlCommonButton::HandlePointerLeave(class TPoint const &) - ?HandlePointerUpEventL@CAknFepCtrlCommonButton@@MAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 242 NONAME ; class CFepUiBaseCtrl * CAknFepCtrlCommonButton::HandlePointerUpEventL(class TPoint const &) - ?SetForegroundBmpL@CAknFepCtrlCommonButton@@QAEXPAVCFbsBitmap@@0@Z @ 243 NONAME ; void CAknFepCtrlCommonButton::SetForegroundBmpL(class CFbsBitmap *, class CFbsBitmap *) - ?DisableOneModes@CAknFepCtrlMultiModeButton@@QAEXH@Z @ 244 NONAME ; void CAknFepCtrlMultiModeButton::DisableOneModes(int) - ??0CPeninputVkbCtrlExt@@IAE@ABVTRect@@PAVCFepUiLayout@@HABVTFontSpec@@H@Z @ 245 NONAME ; CPeninputVkbCtrlExt::CPeninputVkbCtrlExt(class TRect const &, class CFepUiLayout *, int, class TFontSpec const &, int) - ?ConstructFromIrregularResourceL@CAknFepCtrlVkbLayout@@QAEXXZ @ 246 NONAME ; void CAknFepCtrlVkbLayout::ConstructFromIrregularResourceL(void) - ?ConstructFromResourceL@CAknFepCtrlBaseWindow@@MAEXXZ @ 247 NONAME ABSENT ; void CAknFepCtrlBaseWindow::ConstructFromResourceL(void) - ?CreateBaseWindowControlsL@CAknFepCtrlBaseWindowL@@MAEXFJ@Z @ 248 NONAME ABSENT ; void CAknFepCtrlBaseWindow::CreateBaseWindowControlsL(short, long) - ?NewL@CPeninputVkbCtrlExt@@SAPAV1@ABVTRect@@PAVCFepUiLayout@@HPBVCFont@@H@Z @ 249 NONAME ; class CPeninputVkbCtrlExt * CPeninputVkbCtrlExt::NewL(class TRect const &, class CFepUiLayout *, int, class CFont const *, int) - ?ResetLayoutInfo@CPeninputVkbLayoutInfo@@QAEXABVTSize@@@Z @ 250 NONAME ; void CPeninputVkbLayoutInfo::ResetLayoutInfo(class TSize const &) - ?SetDispalyCellRectsL@CAknFepCtrlRangeBar@@QAEXABV?$RArray@VTRect@@@@0@Z @ 251 NONAME ; void CAknFepCtrlRangeBar::SetDispalyCellRectsL(class RArray const &, class RArray const &) - ?SetIrregularResourceId@CAknFepCtrlVkbLayout@@QAEXJ@Z @ 252 NONAME ; void CAknFepCtrlVkbLayout::SetIrregularResourceId(long) - ?SetKeyInfo@CPeninputVkbLayoutInfo@@QAEXHHABVTRect@@0PBVCFont@@@Z @ 253 NONAME ; void CPeninputVkbLayoutInfo::SetKeyInfo(int, int, class TRect const &, class TRect const &, class CFont const *) - ?SizeChanged@CPeninputVkbCtrlExt@@QAEXABVTRect@@@Z @ 254 NONAME ; void CPeninputVkbCtrlExt::SizeChanged(class TRect const &) - ??0CAknFepCtrlBaseWindowExt@@IAE@PAVCFepUiLayout@@H@Z @ 255 NONAME ; CAknFepCtrlBaseWindowExt::CAknFepCtrlBaseWindowExt(class CFepUiLayout *, int) - ??1CAknFepCtrlBaseWindowExt@@UAE@XZ @ 256 NONAME ; CAknFepCtrlBaseWindowExt::~CAknFepCtrlBaseWindowExt(void) - ?BaseConstructL@CAknFepCtrlBaseWindowExt@@IAEXXZ @ 257 NONAME ; void CAknFepCtrlBaseWindowExt::BaseConstructL(void) - ?Close@CAknFepCtrlBaseWindowExt@@QAEXXZ @ 258 NONAME ; void CAknFepCtrlBaseWindowExt::Close(void) - ?ConstructFromResourceL@CAknFepCtrlBaseWindowExt@@MAEXXZ @ 259 NONAME ; void CAknFepCtrlBaseWindowExt::ConstructFromResourceL(void) - ?Control@CAknFepCtrlBaseWindowExt@@QAEPAVCFepUiBaseCtrl@@H@Z @ 260 NONAME ; class CFepUiBaseCtrl * CAknFepCtrlBaseWindowExt::Control(int) - ?CreateBaseWindowControlsL@CAknFepCtrlBaseWindowExt@@MAEXFJ@Z @ 261 NONAME ; void CAknFepCtrlBaseWindowExt::CreateBaseWindowControlsL(short, long) - ?DoClose@CAknFepCtrlBaseWindowExt@@MAEHXZ @ 262 NONAME ; int CAknFepCtrlBaseWindowExt::DoClose(void) - ?Draw@CAknFepCtrlBaseWindowExt@@UAEXXZ @ 263 NONAME ; void CAknFepCtrlBaseWindowExt::Draw(void) - ?HandleControlEvent@CAknFepCtrlBaseWindowExt@@UAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 264 NONAME ; void CAknFepCtrlBaseWindowExt::HandleControlEvent(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?SetDragEnable@CAknFepCtrlBaseWindowExt@@QAEXH@Z @ 265 NONAME ; void CAknFepCtrlBaseWindowExt::SetDragEnable(int) - ?ConstructFromNonIrregularResourceL@CAknFepCtrlVkbLayout@@QAEXXZ @ 266 NONAME ; void CAknFepCtrlVkbLayout::ConstructFromNonIrregularResourceL(void) - ?SetNonIrregularResourceId@CAknFepCtrlVkbLayout@@QAEXJ@Z @ 267 NONAME ; void CAknFepCtrlVkbLayout::SetNonIrregularResourceId(long) - ?GetRealCaseByMode@CAknFepCtrlMultiModeButton@@QBEHH@Z @ 268 NONAME ; int CAknFepCtrlMultiModeButton::GetRealCaseByMode(int) const - ?HideRangeUsingIndicatorStyle@CAknFepCtrlRangeBar@@QAEXH@Z @ 269 NONAME ; void CAknFepCtrlRangeBar::HideRangeUsingIndicatorStyle(int) - ?ShowRangeUsingIndicatorStyle@CAknFepCtrlRangeBar@@QAEXH@Z @ 270 NONAME ; void CAknFepCtrlRangeBar::ShowRangeUsingIndicatorStyle(int) - ??1CFepLayoutScrollableList@@UAE@XZ @ 271 NONAME ; CFepLayoutScrollableList::~CFepLayoutScrollableList(void) - ?CalcPageInfo@CFepLayoutScrollableList@@AAEXXZ @ 272 NONAME ; void CFepLayoutScrollableList::CalcPageInfo(void) - ?ConstructFromResourceL@CFepLayoutScrollableList@@UAEXXZ @ 273 NONAME ; void CFepLayoutScrollableList::ConstructFromResourceL(void) - ?NewL@CFepLayoutScrollableList@@SAPAV1@PAVCFepUiLayout@@HVTSize@@HH11@Z @ 274 NONAME ; class CFepLayoutScrollableList * CFepLayoutScrollableList::NewL(class CFepUiLayout *, int, class TSize, int, int, class TSize, class TSize) - ?NewLC@CFepLayoutScrollableList@@SAPAV1@PAVCFepUiLayout@@HVTSize@@HH11@Z @ 275 NONAME ; class CFepLayoutScrollableList * CFepLayoutScrollableList::NewLC(class CFepUiLayout *, int, class TSize, int, int, class TSize, class TSize) - ?SetImgFrId@CFepLayoutScrollableList@@QAEXVTAknsItemID@@00000@Z @ 276 NONAME ; void CFepLayoutScrollableList::SetImgFrId(class TAknsItemID, class TAknsItemID, class TAknsItemID, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?SetTextProperty@CFepLayoutScrollableList@@QAEXPBVCFont@@VTRgb@@@Z @ 277 NONAME ; void CFepLayoutScrollableList::SetTextProperty(class CFont const *, class TRgb) - ?SizeChanged@CFepLayoutScrollableList@@QAEXVTSize@@HH00@Z @ 278 NONAME ; void CFepLayoutScrollableList::SizeChanged(class TSize, int, int, class TSize, class TSize) - ?Move@CAknFepCtrlCommonButton@@MAEXABVTPoint@@@Z @ 279 NONAME ; void CAknFepCtrlCommonButton::Move(class TPoint const &) - ??1CPeninputCommonChoiceList@@UAE@XZ @ 280 NONAME ; CPeninputCommonChoiceList::~CPeninputCommonChoiceList(void) - ?AddItemRectL@CPeninputCommonChoiceList@@QAEXABVTRect@@@Z @ 281 NONAME ; void CPeninputCommonChoiceList::AddItemRectL(class TRect const &) - ?Draw@CPeninputCommonChoiceList@@EAEXXZ @ 282 NONAME ; void CPeninputCommonChoiceList::Draw(void) - ?NewL@CPeninputCommonChoiceList@@SAPAV1@PAVCFepUiLayout@@HVTAknsItemID@@1W4ECommonChoiceListStyle@@@Z @ 283 NONAME ; class CPeninputCommonChoiceList * CPeninputCommonChoiceList::NewL(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, enum ECommonChoiceListStyle) - ?ReCalcLayout@CPeninputCommonChoiceList@@EAEXXZ @ 284 NONAME ; void CPeninputCommonChoiceList::ReCalcLayout(void) - ?RemoveAllItemsRect@CPeninputCommonChoiceList@@QAEXXZ @ 285 NONAME ; void CPeninputCommonChoiceList::RemoveAllItemsRect(void) - ?SetListColumnNumWithLafL@CPeninputCommonChoiceList@@QAEXH@Z @ 286 NONAME ; void CPeninputCommonChoiceList::SetListColumnNumWithLafL(int) - ?SetListSkinID@CPeninputCommonChoiceList@@QAEXVTAknsItemID@@0@Z @ 287 NONAME ; void CPeninputCommonChoiceList::SetListSkinID(class TAknsItemID, class TAknsItemID) - ?SetTextLayout@CPeninputCommonChoiceList@@QAEXABVTAknTextLineLayout@@@Z @ 288 NONAME ; void CPeninputCommonChoiceList::SetTextLayout(class TAknTextLineLayout const &) - ?SetListSeperationRect@CFepLayoutScrollableList@@QAEXABVTRect@@@Z @ 289 NONAME ; void CFepLayoutScrollableList::SetListSeperationRect(class TRect const &) - ?HitTest@CPeninputCommonChoiceList@@UAEHABVTPoint@@@Z @ 290 NONAME ; int CPeninputCommonChoiceList::HitTest(class TPoint const &) - ??0CAknFepCtrlEventButton@@IAE@PAVCFepUiLayout@@HHHVTAknsItemID@@11@Z @ 291 NONAME ; CAknFepCtrlEventButton::CAknFepCtrlEventButton(class CFepUiLayout *, int, int, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?NewL@CAknFepCtrlEventButton@@SAPAV1@PAVCFepUiLayout@@HHHVTAknsItemID@@11@Z @ 292 NONAME ; class CAknFepCtrlEventButton * CAknFepCtrlEventButton::NewL(class CFepUiLayout *, int, int, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?NewLC@CAknFepCtrlEventButton@@SAPAV1@PAVCFepUiLayout@@HHHVTAknsItemID@@11@Z @ 293 NONAME ; class CAknFepCtrlEventButton * CAknFepCtrlEventButton::NewLC(class CFepUiLayout *, int, int, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ??0CAknFepCtrlRepeatButton@@IAE@PAVCFepUiLayout@@HHHVTAknsItemID@@11@Z @ 294 NONAME ; CAknFepCtrlRepeatButton::CAknFepCtrlRepeatButton(class CFepUiLayout *, int, int, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?NewL@CAknFepCtrlRepeatButton@@SAPAV1@PAVCFepUiLayout@@HHHVTAknsItemID@@11@Z @ 295 NONAME ; class CAknFepCtrlRepeatButton * CAknFepCtrlRepeatButton::NewL(class CFepUiLayout *, int, int, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?NewLC@CAknFepCtrlRepeatButton@@SAPAV1@PAVCFepUiLayout@@HHHVTAknsItemID@@11@Z @ 296 NONAME ; class CAknFepCtrlRepeatButton * CAknFepCtrlRepeatButton::NewLC(class CFepUiLayout *, int, int, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?Draw@CAknFepCtrlDragButton@@UAEXXZ @ 297 NONAME ; void CAknFepCtrlDragButton::Draw(void) - ?Move@CAknFepCtrlDragButton@@UAEXABVTPoint@@@Z @ 298 NONAME ; void CAknFepCtrlDragButton::Move(class TPoint const &) - ?SetForegroundBmpL@CAknFepCtrlDragButton@@QAEXPAVCFbsBitmap@@0@Z @ 299 NONAME ; void CAknFepCtrlDragButton::SetForegroundBmpL(class CFbsBitmap *, class CFbsBitmap *) - ?SetForgroundBmpRect@CAknFepCtrlDragButton@@QAEXABVTRect@@@Z @ 300 NONAME ; void CAknFepCtrlDragButton::SetForgroundBmpRect(class TRect const &) - ?SizeChanged@CAknFepCtrlDragButton@@QAEXABVTRect@@0H@Z @ 301 NONAME ABSENT ; void CAknFepCtrlDragButton::SizeChanged(class TRect const &, class TRect const &, int) - ?SizeChanged@CAknFepCtrlDragButton@@QAEXVTRect@@0H@Z @ 302 NONAME ; void CAknFepCtrlDragButton::SizeChanged(class TRect, class TRect, int) - ?HandlePointerDownEventL@CAknFepCtrlDragButton@@UAEPAVCFepUiBaseCtrl@@ABVTPoint@@@Z @ 303 NONAME ABSENT ; class CFepUiBaseCtrl * CAknFepCtrlDragButton::HandlePointerDownEventL(class TPoint const &) - ??0CAknFepCtrlMultiModeButton@@IAE@PAVCFepUiLayout@@HVTAknsItemID@@11@Z @ 304 NONAME ; CAknFepCtrlMultiModeButton::CAknFepCtrlMultiModeButton(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?NewL@CAknFepCtrlMultiModeButton@@SAPAV1@PAVCFepUiLayout@@HVTAknsItemID@@11@Z @ 305 NONAME ; class CAknFepCtrlMultiModeButton * CAknFepCtrlMultiModeButton::NewL(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?NewLC@CAknFepCtrlMultiModeButton@@SAPAV1@PAVCFepUiLayout@@HVTAknsItemID@@11@Z @ 306 NONAME ; class CAknFepCtrlMultiModeButton * CAknFepCtrlMultiModeButton::NewLC(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?SizeChanged@CAknFepCtrlMultiModeButton@@QAEXVTRect@@0H@Z @ 307 NONAME ; void CAknFepCtrlMultiModeButton::SizeChanged(class TRect, class TRect, int) - ?SetDraw3PieceFrameInfo@CAknFepCtrlCommonButton@@QAEXUTDraw3PiecesFrame@@@Z @ 308 NONAME ; void CAknFepCtrlCommonButton::SetDraw3PieceFrameInfo(struct TDraw3PiecesFrame) - ?HandlePointerEnter@CAknFepCtrlCommonButton@@MAEXABVTPoint@@@Z @ 309 NONAME ; void CAknFepCtrlCommonButton::HandlePointerEnter(class TPoint const &) - ?Hide@CFepLayoutScrollableList@@UAEXH@Z @ 310 NONAME ; void CFepLayoutScrollableList::Hide(int) - ?SetDropdownListImgID@CFepCtrlDropdownList@@QAEXUTDropdownListDrawInfo@@@Z @ 311 NONAME ; void CFepCtrlDropdownList::SetDropdownListImgID(struct TDropdownListDrawInfo) - ?DimKeySet@CPeninputVkbCtrlExt@@QAEXPBVHBufC16@@H@Z @ 312 NONAME ; void CPeninputVkbCtrlExt::DimKeySet(class HBufC16 const *, int) - ??0CAknFepCtrlMultiImageButton@@IAE@PAVCFepUiLayout@@HVTAknsItemID@@11@Z @ 313 NONAME ; CAknFepCtrlMultiImageButton::CAknFepCtrlMultiImageButton(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ??1CAknFepCtrlMultiImageButton@@UAE@XZ @ 314 NONAME ; CAknFepCtrlMultiImageButton::~CAknFepCtrlMultiImageButton(void) - ?ConstructFromResourceL@CAknFepCtrlMultiImageButton@@QAEXAAVTResourceReader@@@Z @ 315 NONAME ; void CAknFepCtrlMultiImageButton::ConstructFromResourceL(class TResourceReader &) - ?ConstructFromResourceL@CAknFepCtrlMultiImageButton@@UAEXXZ @ 316 NONAME ; void CAknFepCtrlMultiImageButton::ConstructFromResourceL(void) - ?Draw@CAknFepCtrlMultiImageButton@@UAEXXZ @ 317 NONAME ; void CAknFepCtrlMultiImageButton::Draw(void) - ?Move@CAknFepCtrlMultiImageButton@@UAEXABVTPoint@@@Z @ 318 NONAME ; void CAknFepCtrlMultiImageButton::Move(class TPoint const &) - ?NewL@CAknFepCtrlMultiImageButton@@SAPAV1@PAVCFepUiLayout@@HVTAknsItemID@@11@Z @ 319 NONAME ; class CAknFepCtrlMultiImageButton * CAknFepCtrlMultiImageButton::NewL(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?NewLC@CAknFepCtrlMultiImageButton@@SAPAV1@PAVCFepUiLayout@@HVTAknsItemID@@11@Z @ 320 NONAME ; class CAknFepCtrlMultiImageButton * CAknFepCtrlMultiImageButton::NewLC(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, class TAknsItemID) - ?SizeChanged@CAknFepCtrlMultiImageButton@@QAEXVTRect@@0H@Z @ 321 NONAME ; void CAknFepCtrlMultiImageButton::SizeChanged(class TRect, class TRect, int) - ?ConstructFromResourceL@CPeninputVkbCtrlExt@@UAEXXZ @ 322 NONAME ; void CPeninputVkbCtrlExt::ConstructFromResourceL(void) - ??0CFepLayoutScrollableList@@IAE@PAVCFepUiLayout@@HVTSize@@HH11@Z @ 323 NONAME ; CFepLayoutScrollableList::CFepLayoutScrollableList(class CFepUiLayout *, int, class TSize, int, int, class TSize, class TSize) - ??0CPeninputCommonChoiceList@@IAE@PAVCFepUiLayout@@HVTAknsItemID@@1W4ECommonChoiceListStyle@@@Z @ 324 NONAME ; CPeninputCommonChoiceList::CPeninputCommonChoiceList(class CFepUiLayout *, int, class TAknsItemID, class TAknsItemID, enum ECommonChoiceListStyle) - ?CalculateItemWidth@CFepLayoutScrollableList@@MAEXXZ @ 325 NONAME ; void CFepLayoutScrollableList::CalculateItemWidth(void) - ?ConstructL@CFepLayoutScrollableList@@IAEXXZ @ 326 NONAME ; void CFepLayoutScrollableList::ConstructL(void) - ?Draw@CFepLayoutScrollableList@@UAEXXZ @ 327 NONAME ; void CFepLayoutScrollableList::Draw(void) - ?DrawItem@CFepLayoutScrollableList@@MAEXHH@Z @ 328 NONAME ; void CFepLayoutScrollableList::DrawItem(int, int) - ?DrawPageInfo@CFepLayoutScrollableList@@MAEXXZ @ 329 NONAME ; void CFepLayoutScrollableList::DrawPageInfo(void) - ?HandleControlEvent@CFepLayoutScrollableList@@MAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 330 NONAME ; void CFepLayoutScrollableList::HandleControlEvent(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?HitTest@CFepLayoutScrollableList@@MAEHABVTPoint@@@Z @ 331 NONAME ; int CFepLayoutScrollableList::HitTest(class TPoint const &) - ?Move@CFepLayoutScrollableList@@MAEXABVTPoint@@@Z @ 332 NONAME ; void CFepLayoutScrollableList::Move(class TPoint const &) - ?ReCalcLayout@CFepLayoutScrollableList@@UAEXXZ @ 333 NONAME ; void CFepLayoutScrollableList::ReCalcLayout(void) - ?UpdateNaviButtonStates@CFepLayoutScrollableList@@QAEXXZ @ 334 NONAME ; void CFepLayoutScrollableList::UpdateNaviButtonStates(void) - ?UpdatePageInfoL@CFepLayoutScrollableList@@IAEXHH@Z @ 335 NONAME ; void CFepLayoutScrollableList::UpdatePageInfoL(int, int) - ?CancelPointerDownL@CAknFepCtrlRepeatButton@@MAEXXZ @ 336 NONAME ; void CAknFepCtrlRepeatButton::CancelPointerDownL(void) - ?NewL@CFepCtrlDropdownList@@SAPAV1@PAVCFepUiLayout@@HHVTPoint@@PBVCFont@@VTSize@@HHHHHHW4THDirection@1@H@Z @ 337 NONAME ; class CFepCtrlDropdownList * CFepCtrlDropdownList::NewL(class CFepUiLayout *, int, int, class TPoint, class CFont const *, class TSize, int, int, int, int, int, int, enum CFepCtrlDropdownList::THDirection, int) - ?SetSecondaryList@CFepCtrlDropdownList@@QAEXAAV?$RArray@H@@H@Z @ 338 NONAME ; void CFepCtrlDropdownList::SetSecondaryList(class RArray &, int) - ?ShowBubble@CFepCtrlDropdownList@@QAEXH@Z @ 339 NONAME ; void CFepCtrlDropdownList::ShowBubble(int) - ?SetBubbleTextFont@CFepCtrlDropdownList@@QAEXPBVCFont@@@Z @ 340 NONAME ; void CFepCtrlDropdownList::SetBubbleTextFont(class CFont const *) - ?SetBubbleSize@CFepCtrlDropdownList@@QAEXABVTSize@@@Z @ 341 NONAME ; void CFepCtrlDropdownList::SetBubbleSize(class TSize const &) - ?SetFrameDiff@CFepCtrlDropdownList@@QAEXHHHH@Z @ 342 NONAME ; void CFepCtrlDropdownList::SetFrameDiff(int, int, int, int) - ?SetBubbleBitmapParam@CFepCtrlDropdownList@@QAEXPAVCFbsBitmap@@0VTAknsItemID@@@Z @ 343 NONAME ; void CFepCtrlDropdownList::SetBubbleBitmapParam(class CFbsBitmap *, class CFbsBitmap *, class TAknsItemID) - ?SetTextFormat@CFepCtrlDropdownList@@QAEXVTAknTextLineLayout@@@Z @ 344 NONAME ; void CFepCtrlDropdownList::SetTextFormat(class TAknTextLineLayout) - ?ReDrawRect@CFepCtrlDropdownList@@UAEXABVTRect@@@Z @ 345 NONAME ; void CFepCtrlDropdownList::ReDrawRect(class TRect const &) - ?CancelPointerDownL@CAknFepCtrlCommonButton@@UAEXXZ @ 346 NONAME ; void CAknFepCtrlCommonButton::CancelPointerDownL(void) - ?SetHighlightCell@CFepCtrlDropdownList@@QAEXHHH@Z @ 347 NONAME ; void CFepCtrlDropdownList::SetHighlightCell(int, int, int) - ?Hide@CFepCtrlDropdownList@@UAEXH@Z @ 348 NONAME ; void CFepCtrlDropdownList::Hide(int) diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/eabi/peninputcommonctrlsU.DEF --- a/textinput/peninputcommonctrls/eabi/peninputcommonctrlsU.DEF Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,476 +0,0 @@ -EXPORTS - _ZN17CAknFepCtrlButton11SizeChangedE5TRecti @ 1 NONAME - _ZN17CAknFepCtrlButton12SetHighlightEi @ 2 NONAME - _ZN17CAknFepCtrlButton22ConstructFromResourceLER15TResourceReader @ 3 NONAME - _ZN17CAknFepCtrlButton22ConstructFromResourceLEv @ 4 NONAME - _ZN17CAknFepCtrlButton4DrawEv @ 5 NONAME - _ZN17CAknFepCtrlButton4NewLEP12CFepUiLayouti @ 6 NONAME - _ZN17CAknFepCtrlButton5NewLCEP12CFepUiLayouti @ 7 NONAME - _ZN17CAknFepCtrlButton9SetActiveEi @ 8 NONAME - _ZN17CAknFepCtrlButtonC1EP12CFepUiLayouti @ 9 NONAME - _ZN17CAknFepCtrlButtonC2EP12CFepUiLayouti @ 10 NONAME - _ZN17CAknFepCtrlButtonD0Ev @ 11 NONAME - _ZN17CAknFepCtrlButtonD1Ev @ 12 NONAME - _ZN17CAknFepCtrlButtonD2Ev @ 13 NONAME - _ZN19CAknFepCtrlRangeBar10ConstructLEv @ 14 NONAME - _ZN19CAknFepCtrlRangeBar11ActiveRangeEi @ 15 NONAME - _ZN19CAknFepCtrlRangeBar11SizeChangedE5TRect @ 16 NONAME - _ZN19CAknFepCtrlRangeBar13ShowAllRangesEv @ 17 NONAME - _ZN19CAknFepCtrlRangeBar14SetActionStyleENS_20TRangeBarActionStyleE @ 18 NONAME - _ZN19CAknFepCtrlRangeBar16SetPermittedCaseEiii @ 19 NONAME - _ZN19CAknFepCtrlRangeBar17SetEventIdForCaseEi @ 20 NONAME - _ZN19CAknFepCtrlRangeBar17SetPermittedRangeEii @ 21 NONAME - _ZN19CAknFepCtrlRangeBar18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 22 NONAME - _ZN19CAknFepCtrlRangeBar18SetEventIdForRangeEi @ 23 NONAME - _ZN19CAknFepCtrlRangeBar18SetPermittedRangesEi @ 24 NONAME - _ZN19CAknFepCtrlRangeBar22ConstructFromResourceLER15TResourceReader @ 25 NONAME - _ZN19CAknFepCtrlRangeBar4DrawEv @ 26 NONAME - _ZN19CAknFepCtrlRangeBar4MoveERK6TPoint @ 27 NONAME - _ZN19CAknFepCtrlRangeBar4NewLEP12CFepUiLayoutiNS_17TButtonGroupStyleE @ 28 NONAME - _ZN19CAknFepCtrlRangeBar5NewLCEP12CFepUiLayoutiNS_17TButtonGroupStyleE @ 29 NONAME - _ZN19CAknFepCtrlRangeBar7SetFontEPK5CFont @ 30 NONAME - _ZN19CAknFepCtrlRangeBar8SetCaseLEii @ 31 NONAME - _ZN19CAknFepCtrlRangeBar8SetRangeEi @ 32 NONAME - _ZN19CAknFepCtrlRangeBar9AddRangeLER15TResourceReader @ 33 NONAME - _ZN19CAknFepCtrlRangeBar9HideRangeEi @ 34 NONAME - _ZN19CAknFepCtrlRangeBar9RefreshUIEv @ 35 NONAME - _ZN19CAknFepCtrlRangeBar9ShowRangeEi @ 36 NONAME - _ZN19CAknFepCtrlRangeBarC1EP12CFepUiLayoutiNS_17TButtonGroupStyleE @ 37 NONAME - _ZN19CAknFepCtrlRangeBarC2EP12CFepUiLayoutiNS_17TButtonGroupStyleE @ 38 NONAME - _ZN19CAknFepCtrlRangeBarD0Ev @ 39 NONAME - _ZN19CAknFepCtrlRangeBarD1Ev @ 40 NONAME - _ZN19CAknFepCtrlRangeBarD2Ev @ 41 NONAME - _ZN19CPeninputVkbCtrlExt10CancelDimsEv @ 42 NONAME - _ZN19CPeninputVkbCtrlExt11SizeChangedEiiRK6TPoint @ 43 NONAME - _ZN19CPeninputVkbCtrlExt17ReorganizeVkbKeysEP22CPeninputVkbLayoutInfo @ 44 NONAME - _ZN19CPeninputVkbCtrlExt4MoveERK6TPoint @ 45 NONAME - _ZN19CPeninputVkbCtrlExt4NewLERK5TRectP12CFepUiLayoutiPK5CFont @ 46 NONAME ABSENT - _ZN19CPeninputVkbCtrlExt5ResetEv @ 47 NONAME - _ZN19CPeninputVkbCtrlExt7DimKeysEPK7HBufC16 @ 48 NONAME - _ZN19CPeninputVkbCtrlExtC1ERK5TRectP12CFepUiLayoutiRK9TFontSpec @ 49 NONAME ABSENT - _ZN19CPeninputVkbCtrlExtC2ERK5TRectP12CFepUiLayoutiRK9TFontSpec @ 50 NONAME ABSENT - _ZN19CPeninputVkbCtrlExtD0Ev @ 51 NONAME - _ZN19CPeninputVkbCtrlExtD1Ev @ 52 NONAME - _ZN19CPeninputVkbCtrlExtD2Ev @ 53 NONAME - _ZN19CPeninputVkbKeyInfo4NewLER15TResourceReader @ 54 NONAME - _ZN19CPeninputVkbKeyInfoD0Ev @ 55 NONAME - _ZN19CPeninputVkbKeyInfoD1Ev @ 56 NONAME - _ZN19CPeninputVkbKeyInfoD2Ev @ 57 NONAME - _ZN20CAknFepCtrlVkbLayout13SetResourceIdEl @ 58 NONAME - _ZN20CAknFepCtrlVkbLayout14SetVkbKeyboardEP19CPeninputVkbCtrlExt @ 59 NONAME - _ZN20CAknFepCtrlVkbLayout15ChangeVkbLayoutEi @ 60 NONAME - _ZN20CAknFepCtrlVkbLayout17VkbLayoutInfoListEv @ 61 NONAME - _ZN20CAknFepCtrlVkbLayout22ConstructFromResourceLEv @ 62 NONAME - _ZN20CAknFepCtrlVkbLayout4NewLEv @ 63 NONAME - _ZN20CAknFepCtrlVkbLayout5NewLCEv @ 64 NONAME - _ZN20CAknFepCtrlVkbLayout5ResetEv @ 65 NONAME - _ZN20CAknFepCtrlVkbLayoutD0Ev @ 66 NONAME - _ZN20CAknFepCtrlVkbLayoutD1Ev @ 67 NONAME - _ZN20CAknFepCtrlVkbLayoutD2Ev @ 68 NONAME - _ZN20CFepCtrlDropdownList10SetBgColorE4TRgbi @ 69 NONAME - _ZN20CFepCtrlDropdownList11SizeChangedEiii6TPointii @ 70 NONAME - _ZN20CFepCtrlDropdownList12OnDeActivateEv @ 71 NONAME - _ZN20CFepCtrlDropdownList12SetCellWidthEi @ 72 NONAME - _ZN20CFepCtrlDropdownList12SetNaviWidthEi @ 73 NONAME - _ZN20CFepCtrlDropdownList12SetTextColorE4TRgbi @ 74 NONAME - _ZN20CFepCtrlDropdownList13ResetAndClearENS_9TListTypeE @ 75 NONAME - _ZN20CFepCtrlDropdownList13SetCellHeightEi @ 76 NONAME - _ZN20CFepCtrlDropdownList13SetTextMarginEii @ 77 NONAME - _ZN20CFepCtrlDropdownList14SetBorderColorE4TRgbi @ 78 NONAME - _ZN20CFepCtrlDropdownList14SetCandidatesLERK13RPointerArrayI7HBufC16ENS_9TListTypeERK7TDesC16 @ 79 NONAME - _ZN20CFepCtrlDropdownList15EnableSecondaryEii @ 80 NONAME - _ZN20CFepCtrlDropdownList15SetTopLeftPointE6TPoint @ 81 NONAME - _ZN20CFepCtrlDropdownList16SetHighlightCellEiii @ 82 NONAME - _ZN20CFepCtrlDropdownList16SetSecondaryListE6RArrayIiEi @ 83 NONAME ABSENT - _ZN20CFepCtrlDropdownList16SetTextAlighmentEN16CGraphicsContext10TTextAlignEi @ 84 NONAME - _ZN20CFepCtrlDropdownList18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 85 NONAME - _ZN20CFepCtrlDropdownList18HandlePointerLeaveERK6TPoint @ 86 NONAME - _ZN20CFepCtrlDropdownList19SetHighLightBgColorE4TRgbi @ 87 NONAME - _ZN20CFepCtrlDropdownList19SetListEventHandlerEP17MListEventHandler @ 88 NONAME - _ZN20CFepCtrlDropdownList19SetSpecialTextColorE4TRgbi @ 89 NONAME - _ZN20CFepCtrlDropdownList20SetNavigationBgColorE4TRgbi @ 90 NONAME - _ZN20CFepCtrlDropdownList21HandlePointerUpEventLERK6TPoint @ 91 NONAME - _ZN20CFepCtrlDropdownList21SetHighLightTextColorE4TRgbi @ 92 NONAME - _ZN20CFepCtrlDropdownList22ConstructFromResourceLEv @ 93 NONAME - _ZN20CFepCtrlDropdownList23HandlePointerDownEventLERK6TPoint @ 94 NONAME - _ZN20CFepCtrlDropdownList23HandlePointerMoveEventLERK6TPoint @ 95 NONAME - _ZN20CFepCtrlDropdownList30SetEventIdForCandidateSelectedEi @ 96 NONAME - _ZN20CFepCtrlDropdownList4DrawEv @ 97 NONAME - _ZN20CFepCtrlDropdownList4MoveERK6TPoint @ 98 NONAME - _ZN20CFepCtrlDropdownList4NewLERK6TPointP12CFepUiLayoutiR15TResourceReaderiiiiiPK5CFontP17MListEventHandlerN16CGraphicsContext10TTextAlignEi4TRgbSE_SE_SE_SE_SE_SE_SE_ @ 99 NONAME - _ZN20CFepCtrlDropdownList4RectEv @ 100 NONAME - _ZN20CFepCtrlDropdownList5NewLCERK6TPointP12CFepUiLayoutiR15TResourceReaderiiiiiPK5CFontP17MListEventHandlerN16CGraphicsContext10TTextAlignEi4TRgbSE_SE_SE_SE_SE_SE_SE_ @ 101 NONAME - _ZN20CFepCtrlDropdownList7SetFontEPK5CFonti @ 102 NONAME - _ZN20CFepCtrlDropdownList8FoldListEv @ 103 NONAME - _ZN20CFepCtrlDropdownList9SetActiveEi @ 104 NONAME - _ZN20CFepCtrlDropdownList9SetColNumEi @ 105 NONAME - _ZN20CFepCtrlDropdownList9SetRowNumEi @ 106 NONAME - _ZN20CFepCtrlDropdownListD0Ev @ 107 NONAME - _ZN20CFepCtrlDropdownListD1Ev @ 108 NONAME - _ZN20CFepCtrlDropdownListD2Ev @ 109 NONAME - _ZN21CAknFepCtrlBaseWindow13SetDragEnableEi @ 110 NONAME - _ZN21CAknFepCtrlBaseWindow14BaseConstructLEv @ 111 NONAME - _ZN21CAknFepCtrlBaseWindow18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 112 NONAME - _ZN21CAknFepCtrlBaseWindow4DrawEv @ 113 NONAME - _ZN21CAknFepCtrlBaseWindow5CloseEv @ 114 NONAME - _ZN21CAknFepCtrlBaseWindow7ControlEi @ 115 NONAME - _ZN21CAknFepCtrlBaseWindow7DoCloseEv @ 116 NONAME - _ZN21CAknFepCtrlBaseWindowC2EP12CFepUiLayouti @ 117 NONAME - _ZN21CAknFepCtrlBaseWindowD0Ev @ 118 NONAME - _ZN21CAknFepCtrlBaseWindowD1Ev @ 119 NONAME - _ZN21CAknFepCtrlBaseWindowD2Ev @ 120 NONAME - _ZN21CAknFepCtrlDragButton11SizeChangedERK5TRecti @ 121 NONAME ABSENT - _ZN21CAknFepCtrlDragButton22ConstructFromResourceLER15TResourceReader @ 122 NONAME - _ZN21CAknFepCtrlDragButton22ConstructFromResourceLEv @ 123 NONAME - _ZN21CAknFepCtrlDragButton4NewLEP12CFepUiLayouti @ 124 NONAME - _ZN21CAknFepCtrlDragButton5NewLCEP12CFepUiLayouti @ 125 NONAME - _ZN21CAknFepCtrlDragButtonC1EP12CFepUiLayouti @ 126 NONAME - _ZN21CAknFepCtrlDragButtonC2EP12CFepUiLayouti @ 127 NONAME - _ZN21CAknFepCtrlDragButtonD0Ev @ 128 NONAME - _ZN21CAknFepCtrlDragButtonD1Ev @ 129 NONAME - _ZN21CAknFepCtrlDragButtonD2Ev @ 130 NONAME - _ZN22CAknFepCtrlEventButton10SetUnicodeEi @ 131 NONAME - _ZN22CAknFepCtrlEventButton11DisplayTextEv @ 132 NONAME - _ZN22CAknFepCtrlEventButton12SetFontColorE4TRgb @ 133 NONAME - _ZN22CAknFepCtrlEventButton13SetShadowFontEPK5CFont @ 134 NONAME - _ZN22CAknFepCtrlEventButton18SetShadowFontColorE4TRgb @ 135 NONAME - _ZN22CAknFepCtrlEventButton21HandlePointerUpEventLERK6TPoint @ 136 NONAME - _ZN22CAknFepCtrlEventButton4DrawEv @ 137 NONAME - _ZN22CAknFepCtrlEventButton4NewLEP12CFepUiLayoutiii @ 138 NONAME ABSENT - _ZN22CAknFepCtrlEventButton5NewLCEP12CFepUiLayoutiii @ 139 NONAME ABSENT - _ZN22CAknFepCtrlEventButton7SetFontEPK5CFont @ 140 NONAME - _ZN22CAknFepCtrlEventButton7SetTextERK7TDesC16 @ 141 NONAME - _ZN22CAknFepCtrlEventButton8SetEventEi @ 142 NONAME - _ZN22CAknFepCtrlEventButtonC1EP12CFepUiLayoutiii @ 143 NONAME ABSENT - _ZN22CAknFepCtrlEventButtonC2EP12CFepUiLayoutiii @ 144 NONAME ABSENT - _ZN22CAknFepCtrlEventButtonD0Ev @ 145 NONAME - _ZN22CAknFepCtrlEventButtonD1Ev @ 146 NONAME - _ZN22CAknFepCtrlEventButtonD2Ev @ 147 NONAME - _ZN22CPeninputVkbLayoutInfo4NewLER15TResourceReader @ 148 NONAME - _ZN22CPeninputVkbLayoutInfo5NewLCER15TResourceReader @ 149 NONAME - _ZN22CPeninputVkbLayoutInfo8MoveKeysERK6TPoint @ 150 NONAME - _ZN22CPeninputVkbLayoutInfo9ResetSizeEiiiiRK6TPointPK5CFont @ 151 NONAME - _ZN22CPeninputVkbLayoutInfoD0Ev @ 152 NONAME - _ZN22CPeninputVkbLayoutInfoD1Ev @ 153 NONAME - _ZN22CPeninputVkbLayoutInfoD2Ev @ 154 NONAME - _ZN23CAknFepCtrlRepeatButton10ConstructLEv @ 155 NONAME - _ZN23CAknFepCtrlRepeatButton12CancelRepeatEv @ 156 NONAME - _ZN23CAknFepCtrlRepeatButton14HandleTimerOutEPK12CAknFepTimer @ 157 NONAME - _ZN23CAknFepCtrlRepeatButton17SetRepeatIntervalERK27TTimeIntervalMicroSeconds32 @ 158 NONAME - _ZN23CAknFepCtrlRepeatButton18HandlePointerLeaveERK6TPoint @ 159 NONAME - _ZN23CAknFepCtrlRepeatButton21HandlePointerUpEventLERK6TPoint @ 160 NONAME - _ZN23CAknFepCtrlRepeatButton23HandlePointerDownEventLERK6TPoint @ 161 NONAME - _ZN23CAknFepCtrlRepeatButton4NewLEP12CFepUiLayoutiii @ 162 NONAME ABSENT - _ZN23CAknFepCtrlRepeatButton5NewLCEP12CFepUiLayoutiii @ 163 NONAME ABSENT - _ZN23CAknFepCtrlRepeatButtonC1EP12CFepUiLayoutiii @ 164 NONAME ABSENT - _ZN23CAknFepCtrlRepeatButtonC2EP12CFepUiLayoutiii @ 165 NONAME ABSENT - _ZN23CAknFepCtrlRepeatButtonD0Ev @ 166 NONAME - _ZN23CAknFepCtrlRepeatButtonD1Ev @ 167 NONAME - _ZN23CAknFepCtrlRepeatButtonD2Ev @ 168 NONAME - _ZN26CAknFepCtrlMultiModeButton11DisplayTextEv @ 169 NONAME - _ZN26CAknFepCtrlMultiModeButton11SizeChangedE5TRecti @ 170 NONAME ABSENT - _ZN26CAknFepCtrlMultiModeButton12SetFontColorE4TRgb @ 171 NONAME - _ZN26CAknFepCtrlMultiModeButton13SetButtonBmpLE14TButtonBmpTypei @ 172 NONAME - _ZN26CAknFepCtrlMultiModeButton14EnableAllModesEv @ 173 NONAME - _ZN26CAknFepCtrlMultiModeButton15DisableAllModesEv @ 174 NONAME - _ZN26CAknFepCtrlMultiModeButton15SetCurrentModeLE14TButtonBmpTypei @ 175 NONAME - _ZN26CAknFepCtrlMultiModeButton17ImageAlreadyExistEl @ 176 NONAME - _ZN26CAknFepCtrlMultiModeButton17SetPermittedModesEiii @ 177 NONAME - _ZN26CAknFepCtrlMultiModeButton17SetPermittedRangeEii @ 178 NONAME - _ZN26CAknFepCtrlMultiModeButton18SetShadowFontColorE4TRgb @ 179 NONAME - _ZN26CAknFepCtrlMultiModeButton21IsGivenRangeSupportedEi @ 180 NONAME - _ZN26CAknFepCtrlMultiModeButton22ConstructFromResourceLER15TResourceReader @ 181 NONAME - _ZN26CAknFepCtrlMultiModeButton22ConstructFromResourceLEv @ 182 NONAME - _ZN26CAknFepCtrlMultiModeButton4DrawEv @ 183 NONAME - _ZN26CAknFepCtrlMultiModeButton4NewLEP12CFepUiLayouti @ 184 NONAME ABSENT - _ZN26CAknFepCtrlMultiModeButton5NewLCEP12CFepUiLayouti @ 185 NONAME ABSENT - _ZN26CAknFepCtrlMultiModeButton8AddModeLER15TResourceReader @ 186 NONAME - _ZN26CAknFepCtrlMultiModeButton8SetRangeEi @ 187 NONAME - _ZN26CAknFepCtrlMultiModeButtonC1EP12CFepUiLayouti @ 188 NONAME ABSENT - _ZN26CAknFepCtrlMultiModeButtonC2EP12CFepUiLayouti @ 189 NONAME ABSENT - _ZN26CAknFepCtrlMultiModeButtonD0Ev @ 190 NONAME - _ZN26CAknFepCtrlMultiModeButtonD1Ev @ 191 NONAME - _ZN26CAknFepCtrlMultiModeButtonD2Ev @ 192 NONAME - _ZNK19CAknFepCtrlRangeBar7GetCaseEi @ 193 NONAME - _ZNK20CFepCtrlDropdownList14CandidateCountEv @ 194 NONAME - _ZNK20CFepCtrlDropdownList17IsEnableSecondaryEv @ 195 NONAME - _ZNK22CAknFepCtrlEventButton5EventEv @ 196 NONAME - _ZNK22CAknFepCtrlEventButton7UnicodeEv @ 197 NONAME - _ZNK22CPeninputVkbLayoutInfo11GetRealSizeEii @ 198 NONAME - _ZNK22CPeninputVkbLayoutInfo7FindKeyEi @ 199 NONAME - _ZNK26CAknFepCtrlMultiModeButton12CurrentRangeEv @ 200 NONAME - _ZNK26CAknFepCtrlMultiModeButton16RangeOfGivenModeEi @ 201 NONAME - _ZNK26CAknFepCtrlMultiModeButton8NextModeEv @ 202 NONAME - _ZTI17CAknFepCtrlButton @ 203 NONAME ; ## - _ZTI19CAknFepCtrlRangeBar @ 204 NONAME ; ## - _ZTI19CPeninputVkbCtrlExt @ 205 NONAME ; ## - _ZTI19CPeninputVkbKeyInfo @ 206 NONAME ; ## - _ZTI20CAknFepCtrlVkbLayout @ 207 NONAME ; ## - _ZTI20CFepCtrlDropdownList @ 208 NONAME ; ## - _ZTI21CAknFepCtrlBaseWindow @ 209 NONAME ; ## - _ZTI21CAknFepCtrlDragButton @ 210 NONAME ; ## - _ZTI22CAknFepCtrlEventButton @ 211 NONAME ; ## - _ZTI22CPeninputVkbLayoutInfo @ 212 NONAME ; ## - _ZTI23CAknFepCtrlRepeatButton @ 213 NONAME ; ## - _ZTI26CAknFepCtrlMultiModeButton @ 214 NONAME ; ## - _ZTV17CAknFepCtrlButton @ 215 NONAME ; ## - _ZTV19CAknFepCtrlRangeBar @ 216 NONAME ; ## - _ZTV19CPeninputVkbCtrlExt @ 217 NONAME ; ## - _ZTV19CPeninputVkbKeyInfo @ 218 NONAME ; ## - _ZTV20CAknFepCtrlVkbLayout @ 219 NONAME ; ## - _ZTV20CFepCtrlDropdownList @ 220 NONAME ; ## - _ZTV21CAknFepCtrlBaseWindow @ 221 NONAME ; ## - _ZTV21CAknFepCtrlDragButton @ 222 NONAME ; ## - _ZTV22CAknFepCtrlEventButton @ 223 NONAME ; ## - _ZTV22CPeninputVkbLayoutInfo @ 224 NONAME ; ## - _ZTV23CAknFepCtrlRepeatButton @ 225 NONAME ; ## - _ZTV26CAknFepCtrlMultiModeButton @ 226 NONAME ; ## - _ZThn388_NK20CFepCtrlDropdownList14CandidateCountEv @ 227 NONAME ABSENT ; ## - _ZThn388_NK20CFepCtrlDropdownList17IsEnableSecondaryEv @ 228 NONAME ABSENT ; ## - _ZThn392_N20CFepCtrlDropdownList18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 229 NONAME ABSENT ; ## - _ZThn448_N19CAknFepCtrlRangeBar18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 230 NONAME ABSENT ; ## - _ZThn448_N21CAknFepCtrlBaseWindow18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 231 NONAME ABSENT ; ## - _ZThn660_N23CAknFepCtrlRepeatButton14HandleTimerOutEPK12CAknFepTimer @ 232 NONAME ABSENT ; ## - _ZThn8_N17CAknFepCtrlButton22ConstructFromResourceLEv @ 233 NONAME ; ## - _ZThn8_N20CFepCtrlDropdownList22ConstructFromResourceLEv @ 234 NONAME ; ## - _ZThn8_N21CAknFepCtrlDragButton22ConstructFromResourceLEv @ 235 NONAME ; ## - _ZThn8_N26CAknFepCtrlMultiModeButton22ConstructFromResourceLEv @ 236 NONAME ; ## - _ZN20CFepCtrlDropdownList14AddCandidatesLERK13RPointerArrayI7HBufC16ENS_9TListTypeE @ 237 NONAME - _ZN20CFepCtrlDropdownList21SetFlagCandidateExistEi @ 238 NONAME - _ZN20CFepCtrlDropdownList29SetEventIdForCandidateExistedEi @ 239 NONAME - _ZN20CFepCtrlDropdownList30SetEventIdForNextPageCandidateEi @ 240 NONAME - _ZN20CFepCtrlDropdownList34SetEventIdForPreviousPageCandidateEi @ 241 NONAME - _ZThn448_NK20CFepCtrlDropdownList14CandidateCountEv @ 242 NONAME ; ## - _ZThn448_NK20CFepCtrlDropdownList17IsEnableSecondaryEv @ 243 NONAME ; ## - _ZThn452_N20CFepCtrlDropdownList18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 244 NONAME ; ## - _ZThn616_N19CAknFepCtrlRangeBar18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 245 NONAME ; ## - _ZThn616_N21CAknFepCtrlBaseWindow18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 246 NONAME ; ## - _ZThn720_N23CAknFepCtrlRepeatButton14HandleTimerOutEPK12CAknFepTimer @ 247 NONAME ABSENT ; ## - _ZN20CFepCtrlDropdownList13SetCellMarginEii @ 248 NONAME - _ZN20CFepCtrlDropdownList16SetSpinBtnHeightEi @ 249 NONAME - _ZN20CFepCtrlDropdownList19SetCandTruncateTypeENS_17TCandTruncateTypeE @ 250 NONAME - _ZN20CFepCtrlDropdownList4NewLEP12CFepUiLayoutii6TPoint5TSizeii @ 251 NONAME - _ZN23CAknFepCtrlRawKeyButton21HandlePointerUpEventLERK6TPoint @ 252 NONAME - _ZN23CAknFepCtrlRawKeyButton22ConstructFromResourceLER15TResourceReader @ 253 NONAME - _ZN23CAknFepCtrlRawKeyButton22ConstructFromResourceLEv @ 254 NONAME - _ZN23CAknFepCtrlRawKeyButton23HandlePointerDownEventLERK6TPoint @ 255 NONAME - _ZN23CAknFepCtrlRawKeyButton4NewLEP12CFepUiLayoutiiii @ 256 NONAME ABSENT - _ZN23CAknFepCtrlRawKeyButton5NewLCEP12CFepUiLayoutiiii @ 257 NONAME ABSENT - _ZN23CAknFepCtrlRawKeyButtonC1EP12CFepUiLayoutiiii @ 258 NONAME ABSENT - _ZN23CAknFepCtrlRawKeyButtonC2EP12CFepUiLayoutiiii @ 259 NONAME ABSENT - _ZN23CAknFepCtrlRawKeyButtonD0Ev @ 260 NONAME - _ZN23CAknFepCtrlRawKeyButtonD1Ev @ 261 NONAME - _ZN23CAknFepCtrlRawKeyButtonD2Ev @ 262 NONAME - _ZTI23CAknFepCtrlRawKeyButton @ 263 NONAME ; ## - _ZTV23CAknFepCtrlRawKeyButton @ 264 NONAME ; ## - _ZThn8_N23CAknFepCtrlRawKeyButton22ConstructFromResourceLEv @ 265 NONAME ; ## - _ZN23CAknFepCtrlRawKeyButton18HandlePointerLeaveERK6TPoint @ 266 NONAME - _ZN16CAknFepCtrlLabel10SetBitmapLEP10CFbsBitmap @ 267 NONAME - _ZN16CAknFepCtrlLabel11SizeChangedE5TRecti @ 268 NONAME - _ZN16CAknFepCtrlLabel12SetFontColorE4TRgb @ 269 NONAME - _ZN16CAknFepCtrlLabel13TextAlignmentEv @ 270 NONAME - _ZN16CAknFepCtrlLabel14SetMaskBitmapLEP10CFbsBitmap @ 271 NONAME - _ZN16CAknFepCtrlLabel16SetTextAlignmentEN16CGraphicsContext10TTextAlignE @ 272 NONAME - _ZN16CAknFepCtrlLabel4DrawEv @ 273 NONAME - _ZN16CAknFepCtrlLabel4NewLEP12CFepUiLayouti @ 274 NONAME - _ZN16CAknFepCtrlLabel7SetFontEPK5CFont @ 275 NONAME - _ZN16CAknFepCtrlLabel7SetFontERK9TFontSpec @ 276 NONAME - _ZN16CAknFepCtrlLabel7SetTextERK7TDesC16 @ 277 NONAME - _ZN16CAknFepCtrlLabelD0Ev @ 278 NONAME - _ZN16CAknFepCtrlLabelD1Ev @ 279 NONAME - _ZN16CAknFepCtrlLabelD2Ev @ 280 NONAME - _ZN22CPenInputSelectionList10RemoveItemEi @ 281 NONAME - _ZN22CPenInputSelectionList11CloseWindowEv @ 282 NONAME - _ZN22CPenInputSelectionList11SizeChangedE6TPoint5TSizei @ 283 NONAME - _ZN22CPenInputSelectionList14RemoveAllItemsEv @ 284 NONAME - _ZN22CPenInputSelectionList15SetTextPropertyEPK5CFont4TRgb @ 285 NONAME - _ZN22CPenInputSelectionList21HandlePointerUpEventLERK6TPoint @ 286 NONAME - _ZN22CPenInputSelectionList22ConstructFromResourceLEv @ 287 NONAME - _ZN22CPenInputSelectionList23HandlePointerDownEventLERK6TPoint @ 288 NONAME - _ZN22CPenInputSelectionList23HandlePointerMoveEventLERK6TPoint @ 289 NONAME - _ZN22CPenInputSelectionList4NewLEP12CFepUiLayouti6TPoint5TSizei @ 290 NONAME - _ZN22CPenInputSelectionList7DisplayEv @ 291 NONAME - _ZN22CPenInputSelectionList8AddItemLERK7TDesC16 @ 292 NONAME - _ZN22CPenInputSelectionList9SetItemsLERK13RPointerArrayI7HBufC16E @ 293 NONAME - _ZN22CPenInputSelectionListD0Ev @ 294 NONAME - _ZN22CPenInputSelectionListD1Ev @ 295 NONAME - _ZN22CPenInputSelectionListD2Ev @ 296 NONAME - _ZTI16CAknFepCtrlLabel @ 297 NONAME ; ## - _ZTI22CPenInputSelectionList @ 298 NONAME ; ## - _ZTV16CAknFepCtrlLabel @ 299 NONAME ; ## - _ZTV22CPenInputSelectionList @ 300 NONAME ; ## - _ZThn8_N22CPenInputSelectionList22ConstructFromResourceLEv @ 301 NONAME ; ## - _ZN25PenInputModeSwitchFactory13CreateSwitchLEP12CFepUiLayouti16TPluginInputMode @ 302 NONAME ABSENT - _ZN25PenInputModeSwitchFactory13ReleaseSwitchEP28MPenInputModeSwitchInterface @ 303 NONAME ABSENT - _ZTI24CPenInputModeSwitchUtils @ 304 NONAME ABSENT ; ## - _ZTV24CPenInputModeSwitchUtils @ 305 NONAME ABSENT ; ## - _ZN20CFepCtrlDropdownList15SetFuzzyBoundryEi @ 306 NONAME - _ZN20CFepCtrlDropdownList17SetCandExpandTypeENS_11TExpandTypeE @ 307 NONAME - _ZN23CAknFepCtrlCommonButton11SizeChangedE5TRectS0_i @ 308 NONAME - _ZN23CAknFepCtrlCommonButton12SetHighlightEi @ 309 NONAME - _ZN23CAknFepCtrlCommonButton19SetForgroundBmpRectERK5TRect @ 310 NONAME - _ZN23CAknFepCtrlCommonButton22ConstructFromResourceLER15TResourceReader @ 311 NONAME - _ZN23CAknFepCtrlCommonButton22ConstructFromResourceLEv @ 312 NONAME - _ZN23CAknFepCtrlCommonButton4DrawEv @ 313 NONAME - _ZN23CAknFepCtrlCommonButton4NewLEP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 314 NONAME - _ZN23CAknFepCtrlCommonButton5NewLCEP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 315 NONAME - _ZN23CAknFepCtrlCommonButton9SetActiveEi @ 316 NONAME - _ZN23CAknFepCtrlCommonButtonC1EP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 317 NONAME - _ZN23CAknFepCtrlCommonButtonC2EP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 318 NONAME - _ZN23CAknFepCtrlCommonButtonD0Ev @ 319 NONAME - _ZN23CAknFepCtrlCommonButtonD1Ev @ 320 NONAME - _ZN23CAknFepCtrlCommonButtonD2Ev @ 321 NONAME - _ZN23CAknFepCtrlRawKeyButton4NewLEP12CFepUiLayouti11TAknsItemIDS2_S2_iii @ 322 NONAME - _ZN23CAknFepCtrlRawKeyButton5NewLCEP12CFepUiLayouti11TAknsItemIDS2_S2_iii @ 323 NONAME - _ZN23CAknFepCtrlRawKeyButtonC1EP12CFepUiLayouti11TAknsItemIDS2_S2_iii @ 324 NONAME - _ZN23CAknFepCtrlRawKeyButtonC2EP12CFepUiLayouti11TAknsItemIDS2_S2_iii @ 325 NONAME - _ZTI23CAknFepCtrlCommonButton @ 326 NONAME ; ## - _ZTV23CAknFepCtrlCommonButton @ 327 NONAME ; ## - _ZThn8_N23CAknFepCtrlCommonButton22ConstructFromResourceLEv @ 328 NONAME ; ## - _ZN23CAknFepCtrlRawKeyButton12OnDeActivateEv @ 329 NONAME - _ZN31CPeninputLayoutInputmodelChoice14SwitchListRectEv @ 330 NONAME - _ZN31CPeninputLayoutInputmodelChoice15SetSecretEditorEi @ 331 NONAME - _ZN31CPeninputLayoutInputmodelChoice16PopUpSwitchListLERK5TRect @ 332 NONAME - _ZN31CPeninputLayoutInputmodelChoice4NewLEP12CFepUiLayouti16TPluginInputMode @ 333 NONAME - _ZN31CPeninputLayoutInputmodelChoiceD0Ev @ 334 NONAME - _ZN31CPeninputLayoutInputmodelChoiceD1Ev @ 335 NONAME - _ZN31CPeninputLayoutInputmodelChoiceD2Ev @ 336 NONAME - _ZTI31CPeninputLayoutInputmodelChoice @ 337 NONAME ; ## - _ZTV31CPeninputLayoutInputmodelChoice @ 338 NONAME ; ## - _ZN23CAknFepCtrlCommonButton17SetForegroundBmpLEP10CFbsBitmapS1_ @ 339 NONAME - _ZN23CAknFepCtrlCommonButton18HandlePointerLeaveERK6TPoint @ 340 NONAME - _ZN23CAknFepCtrlCommonButton21HandlePointerUpEventLERK6TPoint @ 341 NONAME - _ZN23CAknFepCtrlCommonButton23HandlePointerDownEventLERK6TPoint @ 342 NONAME - _ZN26CAknFepCtrlMultiModeButton15DisableOneModesEi @ 343 NONAME - _ZN19CAknFepCtrlRangeBar20SetDispalyCellRectsLERK6RArrayI5TRectES4_ @ 344 NONAME - _ZN19CPeninputVkbCtrlExt11SizeChangedERK5TRect @ 345 NONAME - _ZN19CPeninputVkbCtrlExt4NewLERK5TRectP12CFepUiLayoutiPK5CFonti @ 346 NONAME - _ZN19CPeninputVkbCtrlExtC1ERK5TRectP12CFepUiLayoutiRK9TFontSpeci @ 347 NONAME - _ZN19CPeninputVkbCtrlExtC2ERK5TRectP12CFepUiLayoutiRK9TFontSpeci @ 348 NONAME - _ZN20CAknFepCtrlVkbLayout22SetIrregularResourceIdEl @ 349 NONAME - _ZN20CAknFepCtrlVkbLayout31ConstructFromIrregularResourceLEv @ 350 NONAME - _ZN22CPeninputVkbLayoutInfo10SetKeyInfoEiiRK5TRectS2_PK5CFont @ 351 NONAME - _ZN22CPeninputVkbLayoutInfo15ResetLayoutInfoERK5TSize @ 352 NONAME - _ZN24CAknFepCtrlBaseWindowExt13SetDragEnableEi @ 353 NONAME - _ZN24CAknFepCtrlBaseWindowExt14BaseConstructLEv @ 354 NONAME - _ZN24CAknFepCtrlBaseWindowExt18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 355 NONAME - _ZN24CAknFepCtrlBaseWindowExt22ConstructFromResourceLEv @ 356 NONAME - _ZN24CAknFepCtrlBaseWindowExt25CreateBaseWindowControlsLEsl @ 357 NONAME - _ZN24CAknFepCtrlBaseWindowExt4DrawEv @ 358 NONAME - _ZN24CAknFepCtrlBaseWindowExt5CloseEv @ 359 NONAME - _ZN24CAknFepCtrlBaseWindowExt7ControlEi @ 360 NONAME - _ZN24CAknFepCtrlBaseWindowExt7DoCloseEv @ 361 NONAME - _ZN24CAknFepCtrlBaseWindowExtC2EP12CFepUiLayouti @ 362 NONAME - _ZN24CAknFepCtrlBaseWindowExtD0Ev @ 363 NONAME - _ZN24CAknFepCtrlBaseWindowExtD1Ev @ 364 NONAME - _ZN24CAknFepCtrlBaseWindowExtD2Ev @ 365 NONAME - _ZTI24CAknFepCtrlBaseWindowExt @ 366 NONAME ; ## - _ZTV24CAknFepCtrlBaseWindowExt @ 367 NONAME ; ## - _ZThn616_N24CAknFepCtrlBaseWindowExt18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 368 NONAME ; ## - _ZThn8_N24CAknFepCtrlBaseWindowExt22ConstructFromResourceLEv @ 369 NONAME ; ## - _ZN20CAknFepCtrlVkbLayout25SetNonIrregularResourceIdEl @ 370 NONAME - _ZN20CAknFepCtrlVkbLayout34ConstructFromNonIrregularResourceLEv @ 371 NONAME - _ZNK26CAknFepCtrlMultiModeButton17GetRealCaseByModeEi @ 372 NONAME - _ZN19CAknFepCtrlRangeBar28HideRangeUsingIndicatorStyleEi @ 373 NONAME - _ZN19CAknFepCtrlRangeBar28ShowRangeUsingIndicatorStyleEi @ 374 NONAME - _ZN24CFepLayoutScrollableList10SetImgFrIdE11TAknsItemIDS0_S0_S0_S0_S0_ @ 375 NONAME - _ZN24CFepLayoutScrollableList11SizeChangedE5TSizeiiS0_S0_ @ 376 NONAME - _ZN24CFepLayoutScrollableList12CalcPageInfoEv @ 377 NONAME - _ZN24CFepLayoutScrollableList15SetTextPropertyEPK5CFont4TRgb @ 378 NONAME - _ZN24CFepLayoutScrollableList22ConstructFromResourceLEv @ 379 NONAME - _ZN24CFepLayoutScrollableList4NewLEP12CFepUiLayouti5TSizeiiS2_S2_ @ 380 NONAME - _ZN24CFepLayoutScrollableList5NewLCEP12CFepUiLayouti5TSizeiiS2_S2_ @ 381 NONAME - _ZN24CFepLayoutScrollableListD0Ev @ 382 NONAME - _ZN24CFepLayoutScrollableListD1Ev @ 383 NONAME - _ZN24CFepLayoutScrollableListD2Ev @ 384 NONAME - _ZTI24CFepLayoutScrollableList @ 385 NONAME ; ## - _ZTV24CFepLayoutScrollableList @ 386 NONAME ; ## - _ZThn8_N24CFepLayoutScrollableList22ConstructFromResourceLEv @ 387 NONAME ; ## - _ZN23CAknFepCtrlCommonButton4MoveERK6TPoint @ 388 NONAME - _ZN25CPeninputCommonChoiceList12AddItemRectLERK5TRect @ 389 NONAME - _ZN25CPeninputCommonChoiceList12ReCalcLayoutEv @ 390 NONAME - _ZN25CPeninputCommonChoiceList13SetListSkinIDE11TAknsItemIDS0_ @ 391 NONAME - _ZN25CPeninputCommonChoiceList13SetTextLayoutERK18TAknTextLineLayout @ 392 NONAME - _ZN25CPeninputCommonChoiceList18RemoveAllItemsRectEv @ 393 NONAME - _ZN25CPeninputCommonChoiceList24SetListColumnNumWithLafLEi @ 394 NONAME - _ZN25CPeninputCommonChoiceList4DrawEv @ 395 NONAME - _ZN25CPeninputCommonChoiceList4NewLEP12CFepUiLayouti11TAknsItemIDS2_22ECommonChoiceListStyle @ 396 NONAME - _ZN25CPeninputCommonChoiceListD0Ev @ 397 NONAME - _ZN25CPeninputCommonChoiceListD1Ev @ 398 NONAME - _ZN25CPeninputCommonChoiceListD2Ev @ 399 NONAME - _ZTI25CPeninputCommonChoiceList @ 400 NONAME ; ## - _ZTV25CPeninputCommonChoiceList @ 401 NONAME ; ## - _ZN24CFepLayoutScrollableList21SetListSeperationRectERK5TRect @ 402 NONAME - _ZN25CPeninputCommonChoiceList7HitTestERK6TPoint @ 403 NONAME - _ZN21CAknFepCtrlDragButton11SizeChangedE5TRectS0_i @ 404 NONAME - _ZN21CAknFepCtrlDragButton17SetForegroundBmpLEP10CFbsBitmapS1_ @ 405 NONAME - _ZN21CAknFepCtrlDragButton19SetForgroundBmpRectERK5TRect @ 406 NONAME - _ZN21CAknFepCtrlDragButton23HandlePointerDownEventLERK6TPoint @ 407 NONAME - _ZN21CAknFepCtrlDragButton4DrawEv @ 408 NONAME - _ZN21CAknFepCtrlDragButton4MoveERK6TPoint @ 409 NONAME - _ZN22CAknFepCtrlEventButton4NewLEP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 410 NONAME - _ZN22CAknFepCtrlEventButton5NewLCEP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 411 NONAME - _ZN22CAknFepCtrlEventButtonC1EP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 412 NONAME - _ZN22CAknFepCtrlEventButtonC2EP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 413 NONAME - _ZN23CAknFepCtrlCommonButton18HandlePointerEnterERK6TPoint @ 414 NONAME - _ZN23CAknFepCtrlCommonButton22SetDraw3PieceFrameInfoE17TDraw3PiecesFrame @ 415 NONAME - _ZN23CAknFepCtrlRepeatButton4NewLEP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 416 NONAME - _ZN23CAknFepCtrlRepeatButton5NewLCEP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 417 NONAME - _ZN23CAknFepCtrlRepeatButtonC1EP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 418 NONAME - _ZN23CAknFepCtrlRepeatButtonC2EP12CFepUiLayoutiii11TAknsItemIDS2_S2_ @ 419 NONAME - _ZN26CAknFepCtrlMultiModeButton11SizeChangedE5TRectS0_i @ 420 NONAME - _ZN26CAknFepCtrlMultiModeButton4NewLEP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 421 NONAME - _ZN26CAknFepCtrlMultiModeButton5NewLCEP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 422 NONAME - _ZN26CAknFepCtrlMultiModeButtonC1EP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 423 NONAME - _ZN26CAknFepCtrlMultiModeButtonC2EP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 424 NONAME - _ZThn796_N23CAknFepCtrlRepeatButton14HandleTimerOutEPK12CAknFepTimer @ 425 NONAME ABSENT ; ## - _ZN24CFepLayoutScrollableList4HideEi @ 426 NONAME - _ZN20CFepCtrlDropdownList20SetDropdownListImgIDE21TDropdownListDrawInfo @ 427 NONAME - _ZN19CPeninputVkbCtrlExt9DimKeySetEPK7HBufC16i @ 428 NONAME - _ZThn804_N23CAknFepCtrlRepeatButton14HandleTimerOutEPK12CAknFepTimer @ 429 NONAME ; ## - _ZN27CAknFepCtrlMultiImageButton11SizeChangedE5TRectS0_i @ 430 NONAME - _ZN27CAknFepCtrlMultiImageButton22ConstructFromResourceLER15TResourceReader @ 431 NONAME - _ZN27CAknFepCtrlMultiImageButton22ConstructFromResourceLEv @ 432 NONAME - _ZN27CAknFepCtrlMultiImageButton4DrawEv @ 433 NONAME - _ZN27CAknFepCtrlMultiImageButton4MoveERK6TPoint @ 434 NONAME - _ZN27CAknFepCtrlMultiImageButton4NewLEP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 435 NONAME - _ZN27CAknFepCtrlMultiImageButton5NewLCEP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 436 NONAME - _ZN27CAknFepCtrlMultiImageButtonC1EP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 437 NONAME - _ZN27CAknFepCtrlMultiImageButtonC2EP12CFepUiLayouti11TAknsItemIDS2_S2_ @ 438 NONAME - _ZN27CAknFepCtrlMultiImageButtonD0Ev @ 439 NONAME - _ZN27CAknFepCtrlMultiImageButtonD1Ev @ 440 NONAME - _ZN27CAknFepCtrlMultiImageButtonD2Ev @ 441 NONAME - _ZTI27CAknFepCtrlMultiImageButton @ 442 NONAME ; ## - _ZTV27CAknFepCtrlMultiImageButton @ 443 NONAME ; ## - _ZThn8_N27CAknFepCtrlMultiImageButton22ConstructFromResourceLEv @ 444 NONAME ; ## - _ZN19CPeninputVkbCtrlExt22ConstructFromResourceLEv @ 445 NONAME - _ZThn8_N19CPeninputVkbCtrlExt22ConstructFromResourceLEv @ 446 NONAME ; ## - _ZN24CFepLayoutScrollableList10ConstructLEv @ 447 NONAME - _ZN24CFepLayoutScrollableList12DrawPageInfoEv @ 448 NONAME - _ZN24CFepLayoutScrollableList12ReCalcLayoutEv @ 449 NONAME - _ZN24CFepLayoutScrollableList15UpdatePageInfoLEii @ 450 NONAME - _ZN24CFepLayoutScrollableList18CalculateItemWidthEv @ 451 NONAME - _ZN24CFepLayoutScrollableList18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 452 NONAME - _ZN24CFepLayoutScrollableList22UpdateNaviButtonStatesEv @ 453 NONAME - _ZN24CFepLayoutScrollableList4DrawEv @ 454 NONAME - _ZN24CFepLayoutScrollableList4MoveERK6TPoint @ 455 NONAME - _ZN24CFepLayoutScrollableList7HitTestERK6TPoint @ 456 NONAME - _ZN24CFepLayoutScrollableList8DrawItemEii @ 457 NONAME - _ZN24CFepLayoutScrollableListC1EP12CFepUiLayouti5TSizeiiS2_S2_ @ 458 NONAME - _ZN24CFepLayoutScrollableListC2EP12CFepUiLayouti5TSizeiiS2_S2_ @ 459 NONAME - _ZN25CPeninputCommonChoiceListC1EP12CFepUiLayouti11TAknsItemIDS2_22ECommonChoiceListStyle @ 460 NONAME - _ZN25CPeninputCommonChoiceListC2EP12CFepUiLayouti11TAknsItemIDS2_22ECommonChoiceListStyle @ 461 NONAME - _ZThn768_N24CFepLayoutScrollableList18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 462 NONAME ; ## - _ZN23CAknFepCtrlRepeatButton18CancelPointerDownLEv @ 463 NONAME - _ZN20CFepCtrlDropdownList4NewLEP12CFepUiLayoutii6TPointPK5CFont5TSizeiiiiiiNS_11THDirectionEi @ 464 NONAME - _ZN20CFepCtrlDropdownList16SetSecondaryListER6RArrayIiEi @ 465 NONAME - _ZN20CFepCtrlDropdownList10ShowBubbleEi @ 466 NONAME - _ZN20CFepCtrlDropdownList12SetFrameDiffEiiii @ 467 NONAME - _ZN20CFepCtrlDropdownList13SetBubbleSizeERK5TSize @ 468 NONAME - _ZN20CFepCtrlDropdownList13SetTextFormatE18TAknTextLineLayout @ 469 NONAME - _ZN20CFepCtrlDropdownList17SetBubbleTextFontEPK5CFont @ 470 NONAME - _ZN20CFepCtrlDropdownList20SetBubbleBitmapParamEP10CFbsBitmapS1_11TAknsItemID @ 471 NONAME - _ZN20CFepCtrlDropdownList10ReDrawRectERK5TRect @ 472 NONAME - _ZN23CAknFepCtrlCommonButton18CancelPointerDownLEv @ 473 NONAME - _ZN20CFepCtrlDropdownList4HideEi @ 474 NONAME - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/group/bld.inf --- a/textinput/peninputcommonctrls/group/bld.inf Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Build information file for project ?myapp -* -*/ - -#include - -PRJ_EXPORTS - -../rom/peninputcommonctrls.iby CORE_MW_LAYER_IBY_EXPORT_PATH( peninputcommonctrls.iby ) -../rom/peninputcommonctrlsresources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(peninputcommonctrlsresources.iby) -../loc/peninputcommonctrls.loc MW_LAYER_LOC_EXPORT_PATH(peninputcommonctrls.loc) - -// From peninputbuttons -../inc/peninputvkbctrl/peninputvkbctrllayout.h |../../../inc/peninputvkbctrllayout.h -../inc/peninputvkbctrl/peninputvkbctrllayout.inl |../../../inc/peninputvkbctrllayout.inl -../inc/peninputvkbctrl/peninputvkbctrlext.h |../../../inc/peninputvkbctrlext.h - -// From peninputgeneralheaders -../inc/peninputgeneralheaders/peninputcommonctrls.hrh |../../../inc/peninputcommonctrls.hrh -../inc/peninputgeneralheaders/peninputcommonctrls.rh |../../../inc/peninputcommonctrls.rh - -// From peninputbuttons -../inc/peninputbuttons/peninputbutton.h |../../../inc/peninputbutton.h -../inc/peninputbuttons/peninputdragbutton.h |../../../inc/peninputdragbutton.h -../inc/peninputbuttons/peninputeventbutton.h |../../../inc/peninputeventbutton.h -../inc/peninputbuttons/peninputmultimodebutton.h |../../../inc/peninputmultimodebutton.h -../inc/peninputbuttons/peninputmultimodebutton.inl |../../../inc/peninputmultimodebutton.inl -../inc/peninputbuttons/peninputrepeatbutton.h |../../../inc/peninputrepeatbutton.h -../inc/peninputbuttons/peninputrawkeybutton.h |../../../inc/peninputrawkeybutton.h -../inc/peninputbuttons/peninputrawkeybutton.inl |../../../inc/peninputrawkeybutton.inl -../inc/peninputbuttons/peninputcommonbutton.h |../../../inc/peninputcommonbutton.h -../inc/peninputbuttons/peninputmultiimagebutton.h |../../../inc/peninputmultiimagebutton.h - -// From peninputbasewindow -../inc/peninputbasewindow/peninputbasewindow.h |../../../inc/peninputbasewindow.h -../inc/peninputbasewindow/peninputbasewindow.inl |../../../inc/peninputbasewindow.inl -../inc/peninputbasewindow/peninputbasewindowext.h |../../../inc/peninputbasewindowext.h -../inc/peninputbasewindow/peninputbasewindowext.inl |../../../inc/peninputbasewindowext.inl - - -// From peninputrangebar -../inc/peninputrangebar/peninputrangebar.h |../../../inc/peninputrangebar.h -../inc/peninputrangebar/peninputrangebar.inl |../../../inc/peninputrangebar.inl - -// From peninputdropdownlist -../inc/peninputdropdownlist/peninputdropdownlist.h |../../../inc/peninputdropdownlist.h -../inc/peninputdropdownlist/peninputdropdownlist.rh |../../../inc/peninputdropdownlist.rh -../inc/peninputdropdownlist/peninputdropdownlistcontext.h |../../../inc/peninputdropdownlistcontext.h - -// From peninputselectionlist -../inc/peninputselectionlist/peninputselectionlist.h |../../../inc/peninputselectionlist.h -../inc/peninputselectionlist/peninputlayoutinputmodechoice.h |../../../inc/peninputlayoutinputmodechoice.h -../inc/peninputselectionlist/peninputscrollablelist.h |../../../inc/peninputscrollablelist.h -../inc/peninputselectionlist/peninputcommonchoicelist.h |../../../inc/peninputcommonchoicelist.h - -// From peninputlabel -../inc/peninputlabel/peninputlabel.h |../../../inc/peninputlabel.h - - -PRJ_MMPFILES - -//gnumakefile peninputcommonctrls_icons.mk - -../group/peninputcommonctrls.mmp - -PRJ_EXTENSIONS -START EXTENSION s60/mifconv -OPTION TARGETFILE peninputmodeswitcher.mif -OPTION HEADERFILE peninputmodeswitcher.mbg -OPTION SOURCEFILE iconlist.txt -END -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/group/iconlist.txt --- a/textinput/peninputcommonctrls/group/iconlist.txt Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ --c8,8 qgn_graf_fep_candi_list_sec.svg --c8,8 qgn_graf_fep_candi_list_sel.svg - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/group/peninputcommonctrls.mmp --- a/textinput/peninputcommonctrls/group/peninputcommonctrls.mmp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,129 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Project file for common controls -* -*/ - - -#include -#include - -TARGET peninputcommonctrls.dll -TARGETTYPE DLL -UID 0x1000008D 0x10281859 -CAPABILITY CAP_GENERAL_DLL - -// From peninputbuttons -SOURCEPATH ../src/peninputbuttons -SOURCE peninputbutton.cpp - -// From peninputbasewindow -SOURCEPATH ../src/peninputbasewindow -SOURCE peninputbasewindow.cpp -SOURCE peninputbasewindowext.cpp - -// From peninputrangebar -SOURCEPATH ../src/peninputrangebar -SOURCE peninputrangebar.cpp - -// From peninputvkbctrl -SOURCEPATH ../src/peninputvkbctrl -SOURCE peninputvkbctrllayout.cpp -SOURCE peninputvkbctrlext.cpp - -// From peninputdropdownlist -SOURCEPATH ../src/peninputdropdownlist -SOURCE peninputbitmapdb.cpp -SOURCE peninputcandidate.cpp -SOURCE peninputdropdownlist.cpp -SOURCE peninputlist.cpp -SOURCE peninputlistmanager.cpp -SOURCE peninputlistmultirowwithicon.cpp -SOURCE peninputlistmultirowwithouticon.cpp -SOURCE peninputlistonerowwithicon.cpp -SOURCE peninputlistonerowwithouticon.cpp -SOURCE peninputpages.cpp -SOURCE peninputlistmultirowrollwithicon.cpp -SOURCE peninputlistonerowrollwithicon.cpp -SOURCE peninputlistexpandablemultirowwithouticon.cpp -SOURCE peninputlistmultirowwithiconwithbubble.cpp -SOURCE peninputlistonerowwithiconwithbubble.cpp -SOURCE peninputlistonerowwithouticonwithbubble.cpp -SOURCE peninputlistmultirowrollwithiconwithbubble.cpp -SOURCE peninputlistonerowrollwithiconwithbubble.cpp - -// From peninputselectionlist -SOURCEPATH ../src/peninputselectionlist -SOURCE peninputselectionlist.cpp -SOURCE peninputlayoutinputmodechoice.cpp -SOURCE peninputscrollablelist.cpp -SOURCE peninputcommonchoicelist.cpp -// From peninputlabel -SOURCEPATH ../src/peninputlabel -SOURCE peninputlabel.cpp - -USERINCLUDE ../inc/peninputbasewindow -USERINCLUDE ../inc/peninputbuttons -USERINCLUDE ../inc/peninputgeneralheaders -USERINCLUDE ../inc/peninputdropdownlist -USERINCLUDE ../inc/peninputrangebar -USERINCLUDE ../inc/peninputselectionlist -USERINCLUDE ../inc/peninputlabel -USERINCLUDE ../inc/peninputvkbctrl - - -// This is a SYSTEMINCLUDE macro containing the middleware -// layer specific include directories -MW_LAYER_SYSTEMINCLUDE - -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../inc -SYSTEMINCLUDE ../../inc - -SOURCEPATH ../srcdata - -// general resource file - -START RESOURCE peninputmodeswitchutilsnew.rss -HEADER -TARGETPATH RESOURCE_FILES_DIR -LANGUAGE_IDS -END -START RESOURCE peninputmodeswitchutils.rss -TARGETPATH RESOURCE_FILES_DIR -END - -LIBRARY euser.lib -LIBRARY cone.lib -LIBRARY ws32.lib -LIBRARY bafl.lib -LIBRARY efsrv.lib -LIBRARY bitgdi.lib -LIBRARY gdi.lib -LIBRARY fbscli.lib -LIBRARY aknicon.lib -LIBRARY peninputlayoutcontrol.lib -LIBRARY peninputpluginutils.lib -LIBRARY aknskins.lib -LIBRARY avkon.lib -LIBRARY eikcore.lib -LIBRARY aknlayout.lib -LIBRARY AknLayout2Scalable.lib -LIBRARY commonengine.lib -LIBRARY CentralRepository.lib -#ifdef RD_TACTILE_FEEDBACK -LIBRARY FeatMgr.lib // feature manager -LIBRARY touchfeedback.lib -#endif // RD_TACTILE_FEEDBACK -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/group/peninputcommonctrls_icons.mk --- a/textinput/peninputcommonctrls/group/peninputcommonctrls_icons.mk Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -# -# Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0"" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# - -ifeq (WINS,$(findstring WINS, $(PLATFORM))) -ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\Z -else -ZDIR=\epoc32\data\z -endif - -# ---------------------------------------------------------------------------- -# Configuration for AknFep icons. -# ---------------------------------------------------------------------------- - -TARGETDIR=$(ZDIR)\resource\apps -HEADERDIR=\epoc32\include -ICONTARGETFILENAME=$(TARGETDIR)\peninputmodeswitcher.mif -HEADERFILENAME=$(HEADERDIR)\peninputmodeswitcher.mbg - -do_nothing : - @rem do_nothing - -MAKMAKE : do_nothing - -BLD : do_nothing - -CLEAN : - @del $(ICONTARGETFILENAME) - @del $(HEADERFILENAME) - @del $(TARGETDIR)\peninputmodeswitcher.mbm - -LIB : do_nothing - -CLEANLIB : do_nothing - -# ---------------------------------------------------------------------------- -# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by -# MifConv if the mask depth is defined. -# -# NOTE 2: Usually, source paths should not be included in the bitmap -# definitions. MifConv searches for the icons in all icon directories in a -# predefined order, which is currently \s60\icons, \s60\bitmaps2. -# The directory \s60\icons is included in the search only if the feature flag -# __SCALABLE_ICONS is defined. -# ---------------------------------------------------------------------------- - -RESOURCE: - mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) /Ficonlist.txt - -FREEZE : do_nothing - -SAVESPACE : do_nothing - -RELEASABLES : - @echo $(HEADERFILENAME)&& \ - @echo $(ICONTARGETFILENAME) - -FINAL : do_nothing diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbasewindow/peninputbasewindow.h --- a/textinput/peninputcommonctrls/inc/peninputbasewindow/peninputbasewindow.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,209 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CAknFepCtrlBaseWindow -* -*/ - - -#ifndef C_CAKNFEPCTRLBASEWINDOW_H -#define C_CAKNFEPCTRLBASEWINDOW_H - -// INCLUDES -#include - -// FORWARD DECLARATIONS -class CFepUiLayout; -class CAknFepCtrlButton; -class CAknFepCtrlDragButton; -class CAknFepCtrlCommonButton; -/** - * Class definiton for base window - * - * @lib fepcommonctrls.lib - * @since S60 v3.2 - */ -class CAknFepCtrlBaseWindow : public CControlGroup, public MEventObserver - { -public: - - /** - * destructor. - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CAknFepCtrlBaseWindow(); - - /** - * Resize - * - * @since S60 v3.2 - * @param aLandscapeStyle Current screen is landscape or not - * @return None - */ - virtual void SizeChanged(TBool aLandscapeStyle) = 0; - - /** - * Close window - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Close(); - - /** - * Enable or disable drag window - * - * @since S60 v3.2 - * @param aEnable ETrue to enable otherwise disable drag - * @return None - */ - IMPORT_C void SetDragEnable(TBool aEnable); - - /** - * Get the control by control id - * - * @since S60 v3.2 - * @param aCtrlId The control id - * @return Pointer to the control found;otherwise NULL - */ - IMPORT_C CFepUiBaseCtrl* Control(TInt aCtrlId); - - /** - * Get Header Pane - * - * @since S60 v3.2 - * @return Pointer to header pane - */ - inline CControlGroup* HeaderPane() const; - - /** - * Get Client Pane - * - * @since S60 v3.2 - * @return client pane - */ - inline CControlGroup* ClientPane() const; - - /** - * Get the title bar - * - * @since S60 v3.2 - * @return Pointer to title bar - */ - inline CControlGroup* TitleBar() const; - - /** - * Get Client Pane - * - * @since S60 v3.2 - * @return Pointer to move button - */ - inline CAknFepCtrlDragButton* MoveButton() const; - - /** - * Get close button - * - * @since S60 v3.2 - * @return Pointer to close button - */ - inline CAknFepCtrlCommonButton* CloseButton() const; - -// from base class MEventObserver - - /** - * From MEventObserver. - * Handle the observer event - * - * @since S60 v3.2 - * @param aEventType Event type - * @param aCtrl Sender control - * @param aEventData Event data - */ - IMPORT_C void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData); - -// from base class CControlGroup - - /** - * From CControlGroup. - * Draw window - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Draw(); - -protected: - - /** - * C++ default constructor - * - * @since S60 v3.2 - * @param aFepUiLayout A Ui Layout environment (CFepUiLayout) - * @param aControlId Control id - */ - IMPORT_C CAknFepCtrlBaseWindow( CFepUiLayout* aFepUiLayout, - TInt aControlId); - - /** - * Symbian second-phase constructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void BaseConstructL(); - - /** - * call back function when closing window - * - * @since S60 v3.2 - * @return ETrue for allowing close window; otherwise EFalse - */ - IMPORT_C virtual TBool DoClose(); - -private:// data - - /** - * The title bar (Own) - */ - CControlGroup* iTitleBar; - - /** - * The move drag button (Own) - */ - CAknFepCtrlDragButton* iMoveButton; - - /** - * The close button (Own) - */ - CAknFepCtrlCommonButton* iCloseButton; - - /** - * The header pane (Own) - */ - CControlGroup* iHeaderPane; - - /** - * The client pane (Own) - */ - CControlGroup* iClientPane; - - }; - -#include "peninputbasewindow.inl" - -#endif // C_CAKNFEPCTRLBASEWINDOW_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbasewindow/peninputbasewindow.inl --- a/textinput/peninputcommonctrls/inc/peninputbasewindow/peninputbasewindow.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: inline file of aknfepctrlbasewindow.h -* -*/ - - -inline CControlGroup* CAknFepCtrlBaseWindow::HeaderPane() const - { - return iHeaderPane; - } - -inline CControlGroup* CAknFepCtrlBaseWindow::ClientPane() const - { - return iClientPane; - } - -inline CControlGroup* CAknFepCtrlBaseWindow::TitleBar() const - { - return iTitleBar; - } - -inline CAknFepCtrlDragButton* CAknFepCtrlBaseWindow::MoveButton() const - { - return iMoveButton; - } - -inline CAknFepCtrlCommonButton* CAknFepCtrlBaseWindow::CloseButton() const - { - return iCloseButton; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbasewindow/peninputbasewindowext.h --- a/textinput/peninputcommonctrls/inc/peninputbasewindow/peninputbasewindowext.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,184 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CAknFepCtrlBaseWindowExt -* -*/ - - -#ifndef C_CAKNFEPCTRLBASEWINDOWEXT_H -#define C_CAKNFEPCTRLBASEWINDOWEXT_H - -// INCLUDES - -#include -#include -#include "peninputcommonbutton.h" -#include "peninputeventbutton.h" -#include "peninputrepeatbutton.h" -#include "peninputinputcontextfield.h" - - -// FORWARD DECLARATIONS -class CFepUiLayout; -class CAknFepCtrlButton; -class CAknFepCtrlRepeatButton; -class CAknFepCtrlDragButton; -class CPeninputLayoutInputmodelChoice; -class CFepLayoutMultiLineIcf; -/** - * Class definiton for base window - * - * @lib fepcommonctrls.lib - * @since S60 v3.2 - */ -class CAknFepCtrlBaseWindowExt : public CControlGroup, public MEventObserver - { -public: - - /** - * destructor. - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CAknFepCtrlBaseWindowExt(); - - /** - * Resize - * - * @since S60 v3.2 - * @param aLandscapeStyle Current screen is landscape or not - * @return None - */ - virtual void SizeChanged(TBool aLandscapeStyle) = 0; - - /** - * Close window - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Close(); - - /** - * Enable or disable drag window - * - * @since S60 v3.2 - * @param aEnable ETrue to enable otherwise disable drag - * @return None - */ - IMPORT_C void SetDragEnable(TBool aEnable); - - /** - * Get the control by control id - * - * @since S60 v3.2 - * @param aCtrlId The control id - * @return Pointer to the control found;otherwise NULL - */ - IMPORT_C CFepUiBaseCtrl* Control(TInt aCtrlId); - -// from base class MEventObserver - - /** - * From MEventObserver. - * Handle the observer event - * - * @since S60 v3.2 - * @param aEventType Event type - * @param aCtrl Sender control - * @param aEventData Event data - */ - IMPORT_C void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData); - -// from base class CControlGroup - - /** - * From CControlGroup. - * Draw window - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Draw(); - -protected: - - /** - * C++ default constructor - * - * @since S60 v3.2 - * @param aFepUiLayout A Ui Layout environment (CFepUiLayout) - * @param aControlId Control id - */ - IMPORT_C CAknFepCtrlBaseWindowExt( CFepUiLayout* aFepUiLayout, - TInt aControlId); - - /** - * Symbian second-phase constructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void BaseConstructL(); - - /** - * call back function when closing window - * - * @since S60 v3.2 - * @return ETrue for allowing close window; otherwise EFalse - */ - IMPORT_C virtual TBool DoClose(); - - IMPORT_C void ConstructFromResourceL(); - - IMPORT_C virtual void CreateBaseWindowControlsL( TInt16 aControlId, TInt32 aImageId ); - - virtual TBool CreateCustomControlL( TInt16 aControlId, TInt32 aImageId ); - - virtual void AddCustomControlGroupL(CFepUiBaseCtrl* aCtrl); - -private: - - void ReadIcfInfoL(TResourceReader aResReader, - CFepInputContextField* icf); - void ReadMultiLineIcfInforL( TResourceReader aResReader, - CFepLayoutMultiLineIcf* icf ); - - void ReadShadowInfoL( TInt aResId ); - - inline CAknFepCtrlCommonButton* CloseButton() const; - - inline void SetCloseButton(CAknFepCtrlCommonButton* aCloseBtn); - - void ReadBackgroundInfoL( TInt aResId ); -private:// data - - /** - * The close button (Own) - */ - CAknFepCtrlCommonButton* iCloseButton; - - TBool iFirstTimeConstruct; - - CCoeEnv* iCoeEnv; - - }; - -#include "peninputbasewindowext.inl" - -#endif // C_CAKNFEPCTRLBASEWINDOWEXT_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbasewindow/peninputbasewindowext.inl --- a/textinput/peninputcommonctrls/inc/peninputbasewindow/peninputbasewindowext.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: inline file of aknfepctrlbasewindow.h -* -*/ - - -inline CAknFepCtrlCommonButton* CAknFepCtrlBaseWindowExt::CloseButton() const - { - return iCloseButton; - } - -inline void CAknFepCtrlBaseWindowExt::SetCloseButton(CAknFepCtrlCommonButton* aCloseBtn) - { - iCloseButton = aCloseBtn; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbuttons/peninputbutton.h --- a/textinput/peninputcommonctrls/inc/peninputbuttons/peninputbutton.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,175 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Interface of normal button and multidisplay button -* -*/ - - -#ifndef C_CAKNFEPCTRLBUTTON_H -#define C_CAKNFEPCTRLBUTTON_H - -// system includes -#include -#include - -// forward declarations -class TResourceReader; - -// class declarations -/** - * Basic functionality for graphic buttons - * It provides creation from resource and can react according to SizeChanged Msg - * - * @lib fepcommonctrls.lib - * @since S60 v3.2 - */ -class CAknFepCtrlButton : public CButtonBase - { -public: - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - * @return The pointer point to CAknFepCtrlButton type object - */ - IMPORT_C static CAknFepCtrlButton* NewL(CFepUiLayout* aUiLayout, TInt aControlId); - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - * @return The pointer point to CAknFepCtrlButton type object - */ - IMPORT_C static CAknFepCtrlButton* NewLC(CFepUiLayout* aUiLayout, TInt aControlId); - - /** - * Destructor. - * - * @since S60 v3.2 - */ - IMPORT_C virtual ~CAknFepCtrlButton(); - - /** - * This function creates the input range button from resource. - * - * @since S60 v3.2 - * @param aReader A Reader which is created against the AKN_FEP_BUTTON resource type - * @return None - */ - IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); - - /** - * This function creates the input range button from resource, - * before calling this function, caller should set resource id of - * range button first - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructFromResourceL(); - - /** - * This function handles the SizeChanged event, it resizes all images and rects - * - * @since S60 v3.2 - * @param aRect New button extent - * @param aIsReloadImages Whether resize images as well, - * if only the position of the button changed, no need to reset the images as well - * @return Nothing - */ - IMPORT_C void SizeChanged(TRect aRect, TBool aIsReloadImages = EFalse); - - /** - * Draws UI - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Draw(); - - /** - * Set active for this button - * - * @since S60 v3.2 - * @param aActiveFlag active the button or desactive it - * @return None - */ - IMPORT_C void SetActive(TBool aActiveFlag); - - /** - * Set high light for the button - * - * @since S60 v3.2 - * @param aIsHighlight highlight the button or cancel high light it - * @return None - */ - IMPORT_C void SetHighlight(TBool aIsHighlight); - - /** - * From CFepUiBaseCtrl - * Handle pointer levae event. - * This will be called only when it's got pointer down event before and - * now pointer leaves without pointer up event - * - * @since S60 V4.0 - * @param aPoint current pointer position - */ - virtual void HandlePointerLeave(const TPoint& aPoint); - -protected: - - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - */ - IMPORT_C CAknFepCtrlButton(CFepUiLayout* aUiLayout, TInt aControlId); - - void ResizeBitmaps(TSize aSize); - -protected: - - /** - * The first time construct flag of button - */ - TBool iFirstTimeConstruct; - -private: - - /** - * Array of background bmp (not own) - */ - RPointerArray iBmpList; - - /** - * Array of background mask bmp (not own) - */ - RPointerArray iMaskBmpList; - - /** - * The highlight flag of the button - */ - TBool iHighlight; - }; - -#endif // C_CAKNFEPCTRLBUTTON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbuttons/peninputcommonbutton.h --- a/textinput/peninputcommonctrls/inc/peninputbuttons/peninputcommonbutton.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,386 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Interface of normal button and multidisplay button -* -*/ - - -#ifndef C_CAKNFEPCTRLCOMMONBUTTON_H -#define C_CAKNFEPCTRLCOMMONBUTTON_H - -// system includes -#include -#include -#include -#include -#include - -// forward declarations -class TResourceReader; - -struct TDraw3PiecesFrame - { - TAknsItemID iImgLeftID; - TAknsItemID iImgMiddleID; - TAknsItemID iImgRightID; - TRect iInnerRect; - - TDraw3PiecesFrame(TAknsItemID aImgLeftID, - TAknsItemID aImgMiddleID, - TAknsItemID aImgRightID, - TRect aInnerRect) - { - - iImgLeftID = aImgLeftID; - iImgMiddleID = aImgMiddleID; - iImgRightID = aImgRightID; - - iInnerRect = aInnerRect; - - }; - - TDraw3PiecesFrame() - { - - }; - }; - -// class declarations -/** - * Basic functionality for graphic buttons - * It provides creation from resource and can react according to SizeChanged Msg - * - * @lib fepcommonctrls.lib - * @since S60 v3.2 - */ -class CAknFepCtrlCommonButton : public CButtonBase - { -public: - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - * @return The pointer point to CAknFepCtrlCommonButton type object - */ - IMPORT_C static CAknFepCtrlCommonButton* NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID); - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - * @return The pointer point to CAknFepCtrlCommonButton type object - */ - IMPORT_C static CAknFepCtrlCommonButton* NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID); - /** - * Destructor. - * - * @since S60 v3.2 - */ - IMPORT_C virtual ~CAknFepCtrlCommonButton(); - - /** - * This function creates the input range button from resource. - * - * @since S60 v3.2 - * @param aReader A Reader which is created against the AKN_FEP_BUTTON resource type - * @return None - */ - IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); - - /** - * This function creates the input range button from resource, - * before calling this function, caller should set resource id of - * range button first - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructFromResourceL(); - - /** - * This function handles the SizeChanged event, it resizes all images and rects - * - * @since S60 v3.2 - * @param aRect New button extent - * @param aInnerRect New button inner - * @param aIsReloadImages Whether resize images as well, - * if only the position of the button changed, no need to reset the images as well - * @return Nothing - */ - IMPORT_C void SizeChanged(TRect aRect, TRect aInnerRect, TBool aIsReloadImages = EFalse); - - /** - * Draws UI - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Draw(); - - /** - * Set active for this button - * - * @since S60 v3.2 - * @param aActiveFlag active the button or desactive it - * @return None - */ - IMPORT_C void SetActive(TBool aActiveFlag); - - /** - * Set high light for the button - * - * @since S60 v3.2 - * @param aIsHighlight highlight the button or cancel high light it - * @return None - */ - IMPORT_C void SetHighlight(TBool aIsHighlight); - - /** - * Set Forground bitmap position - * - * @since S60 v3.2 - * @param aRect Forground bitmap position - * @return None - */ - IMPORT_C void SetForgroundBmpRect(const TRect& aRect); - - IMPORT_C void SetForegroundBmpL(CFbsBitmap* aBmp, - CFbsBitmap* aMaskBmp); - - IMPORT_C void SetDraw3PieceFrameInfo(TDraw3PiecesFrame a3PiecesFrameInfo); - - /** - * Cancel pointer down state - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void CancelPointerDownL(); - - /** - * Set text line layout - * - * @since S60 V4.0 - * @param aTextFormat Text line layout to be set - * @return None - */ - inline void SetTextFormat(TAknTextLineLayout aTextFormat); - - /** - * Set text to be shown on button - * - * @since S60 V4.0 - * @param aText Text to be shown on button - * @return None - */ - inline void SetTextL(const TDesC& aText); - - inline void SetImageFrameId( TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID ); - - - inline void Set3PiecesColorIcons( CPenInput3PiecesColorIcons* aColorIcons ); - - /** - * Set text color group - * - * @since S60 V4.0 - * @param aColorGroup Text color group - * @return None - */ - inline void SetTextColorIndex( TInt aColorGroup ); - inline TInt TextColorIndex() const; - - inline CFbsBitmap* ForgroundBmp(); - inline CFbsBitmap* ForgroundBmpMask(); - inline const TRect& ForgroundBmpRect() const; -protected: - - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - */ - IMPORT_C CAknFepCtrlCommonButton(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID); - - - void ResizeBitmaps(TSize aInnerSize); - - void DeleteForgroundRes(); - - void CreateDimmedMaskL( CFbsBitmap*& aDimmedMask, - const CFbsBitmap* aMask - /*TScaleMode aScaleMode*/ ); - - /** - * From CFepUiBaseCtrl - * Handle pointer down event - * - * @since S60 V4.0 - * @param aPoint The point position relative the layout - * @return The control which handles the event. - */ - IMPORT_C virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); - - /** - * From CFepUiBaseCtrl - * Handle pointer up event - * - * @since S60 V4.0 - * @param aPoint The point position relative the layout - * @return The control which handles the event - */ - IMPORT_C virtual CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint); - - /** - * From CFepUiBaseCtrl - * Handle pointer up event - * - * @since S60 V4.0 - * @param aPoint The point position relative the layout - * @return The control which handles the event - */ - IMPORT_C virtual void HandlePointerLeave(const TPoint& aPt); - - IMPORT_C virtual void HandlePointerEnter(const TPoint& aPt); - - IMPORT_C void Move(const TPoint& aOffset); -protected: - - /** - * The first time construct flag of button - */ - TBool iFirstTimeConstruct; - - /** - * The highlight flag of the button - */ - TBool iHighlight; - - TBool iPressed; - -private: - - /** - * Froground bitmap and it's mask - */ - CFbsBitmap* iForgroundBmp; - CFbsBitmap* iForgroundBmpMask; - - /** - * Froground Dimmed bitmap's mask - */ - CFbsBitmap* iForgroundDimBmpMask; - - /** - * Froground bitmap's position - */ - TRect iForgroundBmpRect; - - /** - * The img ID of button in various states - */ - TAknsItemID iNormalImgID; - TAknsItemID iPressedImgID; - TAknsItemID iInactiveImgID; - - HBufC* iText; - TAknTextLineLayout iTextFormat; - - TDraw3PiecesFrame iDraw3PiecesInfo; - /** - * The 3 pieces color icon (owned) - */ - CPenInput3PiecesColorIcons* iColorIcons; - /** - * Text color index - */ - TInt iTextColorIndex; - }; - -inline void CAknFepCtrlCommonButton::SetTextFormat(TAknTextLineLayout aTextFormat) - { - iTextFormat = aTextFormat; - } - -inline void CAknFepCtrlCommonButton::SetTextL(const TDesC& aText) - { - delete iText; - iText = NULL; - iText = aText.AllocL(); - } - -inline void CAknFepCtrlCommonButton::SetImageFrameId( TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID ) - { - iNormalImgID = aNormalID; - iPressedImgID = aPressedID; - iInactiveImgID = aInactiveID; - } - -inline void CAknFepCtrlCommonButton:: - Set3PiecesColorIcons( CPenInput3PiecesColorIcons* aColorIcons ) - { - delete iColorIcons; - iColorIcons = aColorIcons; - } - -inline void CAknFepCtrlCommonButton::SetTextColorIndex( TInt aColorGroup ) - { - iTextColorIndex = aColorGroup; - } - -inline TInt CAknFepCtrlCommonButton::TextColorIndex() const - { - return iTextColorIndex; - } - -inline CFbsBitmap* CAknFepCtrlCommonButton::ForgroundBmp() - { - return iForgroundBmp; - } - -inline CFbsBitmap* CAknFepCtrlCommonButton::ForgroundBmpMask() - { - return iForgroundBmpMask; - } - -inline const TRect& CAknFepCtrlCommonButton::ForgroundBmpRect() const - { - return iForgroundBmpRect; - } -#endif // C_CAKNFEPCTRLCOMMONBUTTON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbuttons/peninputdragbutton.h --- a/textinput/peninputcommonctrls/inc/peninputbuttons/peninputdragbutton.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,242 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Interface of normal button and multidisplay button -* -*/ - - -#ifndef C_CAKNFEPCTRLDRAGBUTTON_H -#define C_CAKNFEPCTRLDRAGBUTTON_H - -// system includes -#include -#include -#include -#include - -// forward declarations -class TResourceReader; - -/** - * Basic functionality for drag button - * It provides creation from resource and can react according to SizeChanged Msg - * - * @lib fepcommonctrls.lib - * @since S60 v3.2 - */ -class CAknFepCtrlDragButton : public CDragBar - { -public: - - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aUiLayout The Ui layout - * @param aControlId The control id - * @return Pointer to created CAknFepCtrlDragButton object - */ - IMPORT_C static CAknFepCtrlDragButton* NewL(CFepUiLayout* aUiLayout, TInt aControlId); - - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aUiLayout The Ui layout - * @param aControlId The control id - * @return Pointer to created CAknFepCtrlDragButton object - */ - IMPORT_C static CAknFepCtrlDragButton* NewLC(CFepUiLayout* aUiLayout, TInt aControlId); - - /** - * destructor. - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CAknFepCtrlDragButton(); - - /** - * This function creates the button from resource. - * - * @since S60 v3.2 - * @param aReader A Reader which is created against the AKN_FEP_BUTTON resource type - * @return None - */ - IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); - - /** - * This function creates button from resource, before calling - * this function, caller should set resource id of button first - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructFromResourceL(); - - /** - * This function handles the SizeChanged event, it resizes all images and rects - * - * @since S60 v3.2 - * @param aRect New button extent - * @param aIsReloadImages ETrue for resizing images; otherwise EFalse - * @return None - */ - IMPORT_C void SizeChanged(TRect aRect, TRect aInnerRect = TRect(), - TBool aIsReloadImages = EFalse); - - /** - * Set Forground bitmap position - * - * @since S60 v3.2 - * @param aRect Forground bitmap position - * @return None - */ - IMPORT_C void SetForgroundBmpRect(const TRect& aRect); - - IMPORT_C void SetForegroundBmpL(CFbsBitmap* aBmp, - CFbsBitmap* aMaskBmp); - - /** - * Draws UI - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Draw(); - - IMPORT_C void Move(const TPoint& aOffset); - - /** - * From CFepUiBaseCtrl - * Handle pointer down event - * - * @since S60 V4.0 - * @param aPoint The point position relative the layout - * @return The control which handles the event. - */ - IMPORT_C virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); - - /** - * Set text line layout - * - * @since S60 V4.0 - * @param aTextFormat Text line layout to be set - * @return None - */ - inline void SetTextFormat(TAknTextLineLayout aTextFormat); - - /** - * Set text to be shown on button - * - * @since S60 V4.0 - * @param aText Text to be shown on button - * @return None - */ - inline void SetTextL(const TDesC& aText); - - inline void SetImageFrameId( TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID ); -protected: - - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aUiLayout The Ui layout - * @param aControlId The control id - * @return None - */ - IMPORT_C CAknFepCtrlDragButton(CFepUiLayout* aUiLayout, TInt aControlId); - - - - void ResizeBitmaps(TSize aSize); - - void DeleteForgroundRes(); - - void CreateDimmedMaskL( CFbsBitmap*& aDimmedMask, - const CFbsBitmap* aMask - /*TScaleMode aScaleMode*/ ); - - -private: - /** - * Array of background bmp (not own) - */ - RPointerArray iBmpList; - - /** - * Array of background mask bmp (not own) - */ - RPointerArray iMaskBmpList; - - /** - * The first time construct flag of button - */ - TBool iFirstTimeConstruct; - - /** - * Froground bitmap and it's mask - */ - CFbsBitmap* iForgroundBmp; - CFbsBitmap* iForgroundBmpMask; - - /** - * Froground Dimmed bitmap's mask - */ - CFbsBitmap* iForgroundDimBmpMask; - - /** - * Froground bitmap's position - */ - TRect iForgroundBmpRect; - - /** - * The img ID of button in various states - */ - TAknsItemID iNormalImgID; - TAknsItemID iPressedImgID; - TAknsItemID iInactiveImgID; - - HBufC* iText; - TAknTextLineLayout iTextFormat; - }; - - -inline void CAknFepCtrlDragButton::SetTextFormat(TAknTextLineLayout aTextFormat) - { - iTextFormat = aTextFormat; - } - -inline void CAknFepCtrlDragButton::SetTextL(const TDesC& aText) - { - delete iText; - iText = NULL; - iText = aText.AllocL(); - } - -inline void CAknFepCtrlDragButton::SetImageFrameId( TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID ) - { - iNormalImgID = aNormalID; - iPressedImgID = aPressedID; - iInactiveImgID = aInactiveID; - } - -#endif // C_CAKNFEPCTRLDRAGBUTTON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbuttons/peninputeventbutton.h --- a/textinput/peninputcommonctrls/inc/peninputbuttons/peninputeventbutton.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,251 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Interface of normal button and multidisplay button -* -*/ - - -#ifndef C_CAKNFEPCTRLEVENTBUTTON_H -#define C_CAKNFEPCTRLEVENTBUTTON_H - -// system includes -#include -#include -#include -#include - -// forward declarations -class TResourceReader; - -// class declarations -/** - * Basic functionality for graphic buttons - * It provides creation from resource and can react according to SizeChanged Msg - * - * @lib fepcommonctrls.lib - * @since S60 v3.2 - */ -class CAknFepCtrlEventButton : public CAknFepCtrlCommonButton - { -public: - - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aUiLayout The layout - * @param aControlId The control id - * @param aEvent An event Id to be sent - * @param aUnicode A Unicode value to be sent - * @return Pointer to created CAknFepCtrlEventButton object - */ - IMPORT_C static CAknFepCtrlEventButton* NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aEvent = 0xFFFF, - TInt aUnicode = 0, - TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal, - TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed, - TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive); - - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aUiLayout The layout - * @param aControlId The control id - * @param aEvent An event Id to be sent - * @param aUnicode A Unicode value to be sent - * @return Pointer to created CAknFepCtrlEventButton object - */ - IMPORT_C static CAknFepCtrlEventButton* NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aEvent = 0xFFFF, - TInt aUnicode = 0, - TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal, - TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed, - TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive); - - /** - * destructor. - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CAknFepCtrlEventButton(); - - /** - * From CButtonBase - * Handle button up event. cancel all timers - * - * @since S60 v3.2 - * @param aPoint Point position - * @return The control who handles the event - */ - IMPORT_C virtual CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint); - - /** - * This function gets the current Event Id - * - * @since S60 v3.2 - * @return Current Event Id - */ - IMPORT_C TInt Event() const; - - /** - * This function gets the current Unicode value - * - * @since S60 v3.2 - * @return Current Unicode value - */ - IMPORT_C TInt Unicode() const; - - /** - * This function sets the Event Id sent by this button - * - * @since S60 v3.2 - * @param aEvent An event Id to be sent - * @return None - */ - IMPORT_C void SetEvent(TInt aEvent); - - /** - * This function sets the Unicode value sent by this button - * - * @since S60 v3.2 - * @param aUnicode A Unicode value to be sent - * @return None - */ - IMPORT_C void SetUnicode(TInt aUnicode); - - /** - * This function sets the text written on the button - * - * @since S60 v3.2 - * @param aText the text will be shown - * @return None - */ - IMPORT_C void SetText(const TDesC& aText); - - /** - * This function set the font used to draw the text - * - * @since S60 v3.2 - * @param aFont the font - * @return None - */ - IMPORT_C void SetFont(const CFont* aFont); - - /** - * This function set the shadow font used to draw the text - * - * @since S60 v3.2 - * @param aFont the shadow font - * @return None - */ - IMPORT_C void SetShadowFont(const CFont* aFont); - - /** - * This function set the font color used to draw the text - * - * @since S60 v3.2 - * @param aColor the font color - * @return None - */ - IMPORT_C void SetFontColor(const TRgb aColor); - - /** - * This function set the shadow font color used to draw the text - * - * @since S60 v3.2 - * @param aColor the shadow font color - * @return None - */ - IMPORT_C void SetShadowFontColor(const TRgb aColor); - - /** - * Draw function - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Draw(); - -protected: - - /** - * C++ constructor. - * - * @since S60 v3.2 - * @param aUiLayout Ui Layout who contains this control - * @param aControlId Control Id - * @param aEvent An event Id to be sent - * @param aUnicode A Unicode value to be sent - * @return None - */ - IMPORT_C CAknFepCtrlEventButton(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aEvent, - TInt aUnicode, - TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal, - TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed, - TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive); - /** - * Display button caption. - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void DisplayText(); - -private: - - /** - * Event Id - */ - TInt iEvent; - - /** - * Unicode value - */ - TInt iUnicode; - - /** - * Text shown on button - */ - HBufC* iText; - - /** - * the font used to show the text - */ - const CFont* iFont; - - /** - * the shadow font used to show the text - */ - const CFont* iShadowFont; - - /** - * the font color used to show the text - */ - TRgb iFontColor; - - /** - * the shadow font color used to show the text - */ - TRgb iShadowFontColor; - }; - -#endif // C_CAKNFEPCTRLEVENTBUTTON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbuttons/peninputmultiimagebutton.h --- a/textinput/peninputcommonctrls/inc/peninputbuttons/peninputmultiimagebutton.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Interface of normal button and multidisplay button -* -*/ - - -#ifndef C_CAKNFEPCTRLMULTIIMAGEBUTTON_H -#define C_CAKNFEPCTRLMULTIIMAGEBUTTON_H - -// system includes -#include -#include -#include -#include - -// forward declarations -class TResourceReader; - - -// class declarations -/** - * Basic functionality for graphic buttons - * It provides creation from resource and can react according to SizeChanged Msg - * - * @lib fepcommonctrls.lib - * @since S60 v3.2 - */ -class CAknFepCtrlMultiImageButton : public CAknFepCtrlCommonButton - { -public: - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - * @return The pointer point to CAknFepCtrlMultiImageButton type object - */ - IMPORT_C static CAknFepCtrlMultiImageButton* NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID); - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - * @return The pointer point to CAknFepCtrlMultiImageButton type object - */ - IMPORT_C static CAknFepCtrlMultiImageButton* NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID); - /** - * Destructor. - * - * @since S60 v3.2 - */ - IMPORT_C virtual ~CAknFepCtrlMultiImageButton(); - - /** - * This function creates the input range button from resource. - * - * @since S60 v3.2 - * @param aReader A Reader which is created against the AKN_FEP_BUTTON resource type - * @return None - */ - IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); - - /** - * This function creates the input range button from resource, - * before calling this function, caller should set resource id of - * range button first - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructFromResourceL(); - - /** - * This function handles the SizeChanged event, it resizes all images and rects - * - * @since S60 v3.2 - * @param aRect New button extent - * @param aInnerRect New button inner - * @param aIsReloadImages Whether resize images as well, - * if only the position of the button changed, no need to reset the images as well - * @return Nothing - */ - IMPORT_C void SizeChanged(TRect aRect, TRect aInnerRect, TBool aIsReloadImages = EFalse); - - /** - * Draws UI - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Draw(); - - /** - * Set text line layout - * - * @since S60 V4.0 - * @param aTextFormat Text line layout to be set - * @return None - */ - inline void SetTextFormat(TAknTextLineLayout aTextFormat); - - /** - * Set text to be shown on button - * - * @since S60 V4.0 - * @param aText Text to be shown on button - * @return None - */ - inline void SetTextL(const TDesC& aText); - - inline void SetImageFrameId( TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID ); - - IMPORT_C void Move(const TPoint& aOffset); - -protected: - - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - */ - IMPORT_C CAknFepCtrlMultiImageButton(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID); - - - void ResizeBitmaps(TSize aInnerSize); - - void DeleteForgroundRes(); - - void CreateDimmedMaskL( CFbsBitmap*& aDimmedMask, - const CFbsBitmap* aMask - /*TScaleMode aScaleMode*/ ); - -private: - /** - * Froground bitmap and it's mask - */ - CFbsBitmap* iForground1Bmp; - CFbsBitmap* iForground1BmpMask; - - /** - * Froground Dimmed bitmap's mask - */ - CFbsBitmap* iForground1DimBmpMask; - - /** - * Froground bitmap's position - */ - TRect iForground1BmpRect; - - /** - * Froground bitmap and it's mask - */ - CFbsBitmap* iForground2Bmp; - CFbsBitmap* iForground2BmpMask; - - /** - * Froground Dimmed bitmap's mask - */ - CFbsBitmap* iForground2DimBmpMask; - - /** - * Froground bitmap's position - */ - TRect iForground2BmpRect; - - /** - * The img ID of button in various states - */ - TAknsItemID iNormalImgID; - TAknsItemID iPressedImgID; - TAknsItemID iInactiveImgID; - - HBufC* iText; - TAknTextLineLayout iTextFormat; - }; - -inline void CAknFepCtrlMultiImageButton::SetTextFormat(TAknTextLineLayout aTextFormat) - { - iTextFormat = aTextFormat; - } - -inline void CAknFepCtrlMultiImageButton::SetTextL(const TDesC& aText) - { - delete iText; - iText = NULL; - iText = aText.AllocL(); - } - -inline void CAknFepCtrlMultiImageButton::SetImageFrameId( TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID ) - { - iNormalImgID = aNormalID; - iPressedImgID = aPressedID; - iInactiveImgID = aInactiveID; - } -#endif // C_CAKNFEPCTRLMULTIIMAGEBUTTON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbuttons/peninputmultimodebutton.h --- a/textinput/peninputcommonctrls/inc/peninputbuttons/peninputmultimodebutton.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,437 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Interface of normal button and multidisplay button -* -*/ - - -#ifndef C_CAKNFEPCTRLMULTIMODEBUTTON_H -#define C_CAKNFEPCTRLMULTIMODEBUTTON_H - -// system includes -#include -#include -#include -//#include -#include - -// forward declarations -class TResourceReader; - -struct TAknFepModeIndicator - { - /** - * Range id of button - */ - TInt iRangeId; - - /** - * Real mode(case) of button - */ - TInt iModeId; - - /** - * Permitted or not - */ - TBool iPermitted; - }; - -/** - * Basic functionality for multi display modes graphic buttons - * It provides creation from resource and can react according to SizeChanged Msg - * - * @lib fepcommonctrls.lib - * @since Series 60 release 4.0 - */ -class CAknFepCtrlMultiModeButton : public CAknFepCtrlCommonButton - { -public: - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - * @return The pointer point to CAknFepCtrlMultiModeButton type object - */ - IMPORT_C static CAknFepCtrlMultiModeButton* NewL(CFepUiLayout* aUiLayout, TInt aControlId, - TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal, - TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed, - TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive); - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - * @return The pointer point to CAknFepCtrlMultiModeButton type object - */ - IMPORT_C static CAknFepCtrlMultiModeButton* NewLC(CFepUiLayout* aUiLayout, TInt aControlId, - TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal, - TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed, - TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive); - - /** - * Destructor. - * - * @since S60 v3.2 - */ - IMPORT_C virtual ~CAknFepCtrlMultiModeButton(); - - /** - * This function creates the button from resource. - * The function will leave if the count of display modes is invalid - * - * @since S60 v3.2 - * @param aReader A Reader which is created against the AKN_FEP_MULTIPLE_IMAGE_BUTTON resource type - * @return None - */ - IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); - - /** - * This function creates button from resource, before calling - * this function, caller should set resource id of button first - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructFromResourceL(); - - /** - * Add new display mode to button from resource reader - * - * @since S60 v3.2 - * @param aReader A Reader which is created against the AKN_FEP_BUTTON_IMAGE resource type - * @return None - */ - IMPORT_C void AddModeL(TResourceReader& aReader); - - /** - * Set button to given display mode - * - * @since S60 v3.2 - * @param aType The image type of button, active or nonactive - * @param aModeIndex The index of given display mode - * @return None - */ - IMPORT_C void SetCurrentModeL(const TButtonBmpType aType, const TInt aModeIndex); - - /** - * Get the mode index of next display mode - * - * @since S60 v3.2 - * @return Next display mode of button - */ - IMPORT_C TInt NextMode() const; - - /** - * Set font color for text shown in button - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void SetFontColor(const TRgb aFontColor); - - /** - * Set shadow font color for text shown in button - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void SetShadowFontColor(const TRgb aShadowFontColor); - - /** - * This function handles the SizeChanged event, it resizes all images and rects - * - * @since S60 v3.2 - * @param aRect New button extent - * @param aIsReloadImages Whether resize images as well, - * if only the position of the button changed, no need to reset the images as well - * @return Nothing - */ - IMPORT_C void SizeChanged(TRect aRect, TRect aInnerRect = TRect(), - TBool aIsReloadImages = EFalse); - - /** - * This function used to set permitted mode(case) in given range - * - * @since S60 v3.2 - * @param aRangId Range id - * @param aRealCaseId The real case id - * @param aPermit ETrue means permit given range and case, otherwise EFalse - * @return KErrNone if operation successfully, KErrNotSupported otherwise - */ - IMPORT_C TInt SetPermittedModes(const TInt aRangeId, const TInt aRealCaseId, TBool aPermit); - - /** - * This function used to set permitted range, all case in given range will be enable or not - * - * @since S60 v3.2 - * @param aRangId Range id - * @param aPermit ETrue means permit given range, otherwise EFalse - * @return KErrNone if operation successfully, KErrNotSupported otherwise - */ - IMPORT_C TInt SetPermittedRange(const TInt aRangeId, TBool aPermit); - - /** - * Enable all modes - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void EnableAllModes(); - - /** - * Disable all modes - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void DisableAllModes(); - - IMPORT_C void DisableOneModes(const TInt aRangeId); - - /** - * Judge if given range supported by this button - * - * @since S60 v3.2 - * @param aRange Given range id - * @return ETrue if given range supported, otherwise EFalse - */ - IMPORT_C TBool IsGivenRangeSupported(const TInt aRange); - - /** - * Set range - * - * @since S60 v3.2 - * @param aRange The given range - * @return KErrNone if operation successfully, otherwise KErrNotSupported - */ - IMPORT_C TInt SetRange(const TInt aRange); - - /** - * Get current active range - * - * @since S60 v3.2 - * @return Current active range if it is permitted, otherwise KErrNotSupported - */ - IMPORT_C TInt CurrentRange() const; - - /** - * Get range of given mode index - * - * @since S60 v3.2 - * @param aModeIndex Index of given mode - * @return Range of given mode if mode exist, otherwise KErrNotSupported - */ - IMPORT_C TInt RangeOfGivenMode(TInt aModeIndex) const; - - /** - * Get real case by given mode index - * - * @since S60 v3.2 - * @param aModeIndex Index of given mode - * @return Real case of given mode index if index valid, otherwise KErrNotFound - */ - IMPORT_C TInt GetRealCaseByMode(TInt aModeIndex) const; - - /** - * Get range list - * - * @since S60 v3.2 - * @param aList Carry the range list on return - * @return None - */ - void GetRangeListL(RArray& aList); - - /** - * Get index of current display mode - * - * @since S60 v3.2 - * @return Index of current display mode of button - */ - inline TInt CurrentMode() const; - - /** - * Get counts of display modes - * - * @since S60 v3.2 - * @return Counts of display modes of button - */ - inline TInt NumberOfModes() const; - - /** - * Set font for text shown in button - * - * @since S60 v3.2 - * @param aFont The font to be set for button - * @return None - */ - inline void SetFont(const CFont* aFont); - - /** - * Set font for text shown in button - * - * @since S60 v3.2 - * @param aShadowFont The font to be set for shadow text on button - * @return None - */ - inline void SetShadowFont(const CFont* aShadowFont); - -protected: - - /** - * C++ default constructor. - */ - IMPORT_C CAknFepCtrlMultiModeButton(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal, - TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed, - TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive); - - /** - * Judge if image resource of button already exist - * - * @since S60 v3.2 - * @param aResId The image resource id - * @return ETrue if image resource already exist, EFalse otherwise - */ - IMPORT_C TBool ImageAlreadyExist(const TInt32 aResId); - - /** - * Set bitmaps for button according to desired display mode - * - * @since S60 v3.2 - * @param aType The image type for button, can be active or nonactive etc. - * @param aMode The desired display mode index - * @return None - */ - IMPORT_C void SetButtonBmpL(const TButtonBmpType aType , const TInt aMode); - - /** - * Display text for button according to current display mode - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void DisplayText(); - - /** - * Draws UI - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Draw(); - - void ResizeBitmaps(TSize aSize); - -private: - - /** - * Duplicate bitmap - * - * @since S60 v3.2 - * @param aSourceBmp The source bitmap - * @return Pointer to created bitmap - */ - CFbsBitmap* DuplicateBitmapL(CFbsBitmap* aSourceBmp); - - /** - * Transfer bitmap ownship from multimode button to outside. - * - * @since S60 v3.2 - * @param aRemoved The bitmap to be transfered - * @return None - */ - void TransferOwnership(CFbsBitmap* aRemoved); - -private: // data - /** - * Array of foreground bitmaps in different modes - */ - RPointerArray iForegroundBmpList; - /** - * Array of foreground mask bitmaps in different modes - */ - RPointerArray iForegroundMaskBmpList; - /** - * Froground bitmap's position - */ - TRect iForgroundBmpRect; - - - /** - * Array of image resource Id list - */ - RArray iImageResIdList; - - /** - * The index of current display mode - */ - TInt iCurrentMode; - - /** - * The counts of display modes of button - */ - TInt iNumberOfModes; - - /** - * Font of text shown in button - */ - const CFont* iFont; - - /** - * Font of shadow text shown in button - */ - const CFont* iShadowFont; - - /** - * Font color of text shown in button - */ - TRgb iFontColor; - - /** - * Shadow Font color of text shown in button - */ - TRgb iShadowFontColor; - - /** - * Array of text shown on button - */ - RPointerArray iModeTextList; - - /** - * Array of owned bitmap - */ - //RPointerArray iOwnedBitmaps; - - /** - * Array of modes - */ - RPointerArray iModesList; - - /** - * Current bitmap type, active or nonactive - */ - TButtonBmpType iCurrentBmpType; - }; - -#include "peninputmultimodebutton.inl" - -#endif // C_CAKNFEPCTRLMULTIMODEBUTTON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbuttons/peninputmultimodebutton.inl --- a/textinput/peninputcommonctrls/inc/peninputbuttons/peninputmultimodebutton.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: inline file of button -* -*/ - - -inline TInt CAknFepCtrlMultiModeButton::NumberOfModes() const - { - return iNumberOfModes; - } - -inline TInt CAknFepCtrlMultiModeButton::CurrentMode() const - { - return iCurrentMode; - } - -inline void CAknFepCtrlMultiModeButton::SetFont(const CFont* aFont) - { - iFont = aFont; - } - -inline void CAknFepCtrlMultiModeButton::SetShadowFont(const CFont* aShadowFont) - { - iShadowFont = aShadowFont; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbuttons/peninputrawkeybutton.h --- a/textinput/peninputcommonctrls/inc/peninputbuttons/peninputrawkeybutton.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -#ifndef C_CAKNFEPCTRLRAWKEYBUTTON_H -#define C_CAKNFEPCTRLRAWKEYBUTTON_H - -// system includes -#include -#include -#include -#include - -// forward declarations -class TResourceReader; - -class CAknFepCtrlRawKeyButton : public CAknFepCtrlCommonButton - { -public: - - IMPORT_C static CAknFepCtrlRawKeyButton* NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID, - TInt aDownEvent = 0xffff, - TInt aUpEvent = 0xffff, - TInt aScanCode = 0); - - IMPORT_C static CAknFepCtrlRawKeyButton* NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID, - TInt aDownEvent = 0xffff, - TInt aUpEvent = 0xffff, - TInt aScanCode = 0); - - IMPORT_C virtual ~CAknFepCtrlRawKeyButton(); - - IMPORT_C CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); - IMPORT_C CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint); - IMPORT_C void HandlePointerLeave(const TPoint& aPoint); - IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); - IMPORT_C void ConstructFromResourceL(); - IMPORT_C void OnDeActivate(); - - inline void SetDownEvent(TInt aEvent); - inline void SetUpEvent(TInt aEvent); - inline TInt DownEvent() const; - inline TInt UpEvent() const; - inline TInt ScanCode() const; - inline void SetScanCode(TInt aScanCode); - -protected: - - IMPORT_C CAknFepCtrlRawKeyButton(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID, - TInt aDownEvent, - TInt aUpEvent, - TInt aScanCode); - -private: - - TInt iDownEvent; - TInt iUpEvent; - TInt iScanCode; - // indicate whether last event is pointer down event - TBool iLastPntDownEvent; - }; - -#include "peninputrawkeybutton.inl" -#endif // C_CAKNFEPCTRLRAWKEYBUTTON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbuttons/peninputrawkeybutton.inl --- a/textinput/peninputcommonctrls/inc/peninputbuttons/peninputrawkeybutton.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -inline TInt CAknFepCtrlRawKeyButton::DownEvent() const - { - return iDownEvent; - } - -inline TInt CAknFepCtrlRawKeyButton::UpEvent() const - { - return iUpEvent; - } - -inline TInt CAknFepCtrlRawKeyButton::ScanCode() const - { - return iScanCode; - } - -inline void CAknFepCtrlRawKeyButton::SetDownEvent(TInt aEvent) - { - iDownEvent = aEvent; - } - -inline void CAknFepCtrlRawKeyButton::SetUpEvent(TInt aEvent) - { - iUpEvent = aEvent; - } - -inline void CAknFepCtrlRawKeyButton::SetScanCode(TInt aScanCode) - { - iScanCode = aScanCode; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputbuttons/peninputrepeatbutton.h --- a/textinput/peninputcommonctrls/inc/peninputbuttons/peninputrepeatbutton.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,198 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Interface of normal button and multidisplay button -* -*/ - - -#ifndef C_CAKNFEPCTRLREPEATBUTTON_H -#define C_CAKNFEPCTRLREPEATBUTTON_H - -// system includes -#include -#include -#include -#include - -// forward declarations -class TResourceReader; - -/** - * CAknFepCtrlRepeatButton - * - * @lib fepcommonctrls.lib - * @since S60 v3.2 - */ -class CAknFepCtrlRepeatButton: public CAknFepCtrlEventButton, public MAknFepTimerHandler -{ -public: - - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aUiLayout The layout - * @param aControlId The control id - * @param aEvent An event to be repeatedly sent - * @param aUnicode A Unicode value to be repeatedly sent - * @return Pointer to created CAknFepCtrlRepeatButton object - */ - IMPORT_C static CAknFepCtrlRepeatButton* NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aEvent = 0xFFFF, - TInt aUnicode = 0, - TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal, - TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed, - TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive); - - /** - * Symbian constructor. - * - * @since S60 v3.2 - * @param aUiLayout The layout - * @param aControlId The control id - * @param aEvent An event to be repeatedly sent - * @param aUnicode A Unicode value to be repeatedly sent - * @return Pointer to created CAknFepCtrlRepeatButton object - */ - IMPORT_C static CAknFepCtrlRepeatButton* NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aEvent = 0xFFFF, - TInt aUnicode = 0, - TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal, - TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed, - TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive); - /** - * destructor. - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CAknFepCtrlRepeatButton(); - - /** - * Set the repeat interval. - * - * @since S60 v3.2 - * @param aTime Interval in ms. - * @return None - */ - IMPORT_C void SetRepeatInterval(const TTimeIntervalMicroSeconds32& aTime); - - /** - * Cancel key sending - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void CancelRepeat(); - -// from base class MAknFepHwrTimerHandler - - /** - * from MAknFepHwrTimerHandler - * HandleTimerOut. Handling time out event - * - * @since S60 v3.2 - * @param aTimer The timer which sending the request - * @return None - */ - IMPORT_C void HandleTimerOut(const CAknFepTimer* aTimer); - -protected: - - /** - * C++ constructor. - * - * @since S60 v3.2 - * @param aUiLayout Ui Layout who contains this control - * @param aCtrlId Control Id - * @param aEvent An event to be repeatedly sent - * @param aUnicode A Unicode value to be repeatedly sent - * @return None - */ - IMPORT_C CAknFepCtrlRepeatButton(CFepUiLayout* aUiLayout, - TInt aCtrlId, - TInt aEvent, - TInt aUnicode, - TAknsItemID aNormalID = KAknsIIDQsnFrFunctionButtonNormal, - TAknsItemID aPressedID = KAknsIIDQsnFrFunctionButtonPressed, - TAknsItemID aInactiveID = KAknsIIDQsnFrFunctionButtonInactive); - -// from base class CButtonBase - - /** - * From CButtonBase - * Handle button down event. start long press timer - * - * @since S60 v3.2 - * @param aPt Point position - * @return The control who handles the event - */ - IMPORT_C CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPt); - - /** - * From CButtonBase - * Handle button up event. cancel all timers - * - * @since S60 v3.2 - * @param aPt Point position - * @return The control who handles the event - */ - IMPORT_C CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPt); - - /** - * From CButtonBase - * Handle pointer levae event. - * - * @since S60 v3.2 - * @param aPoint current pointer position - * @return Nothing - */ - IMPORT_C void HandlePointerLeave(const TPoint& aPoint); - - IMPORT_C void CancelPointerDownL(); - - /** - * Symbian 2nd phase constructor. - */ - IMPORT_C void ConstructL(); - -private: - - /** - * interval of long press - */ - TTimeIntervalMicroSeconds32 iLongPressInterval; - - /** - * interval of repeat - */ - TTimeIntervalMicroSeconds32 iRepeatInterval; - - /** - * long press timer (Own) - */ - CAknFepTimer* iLongPressTimer; - - /** - * repeat timer (Own) - */ - CAknFepTimer* iRepeatTimer; - -}; - -#endif // C_CAKNFEPCTRLREPEATBUTTON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputbitmapdb.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputbitmapdb.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,232 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: bitmap db manager,which is used by drop down list -* -*/ - - -#ifndef C_BITMAPDB_H -#define C_BITMAPDB_H - -#include -#include -#include -#include - -/** - * Bitmap db manager - * - * Bitmap db manager used by drop down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CBitmapDb) : public CBase - { - -public: - /** - * bitmap type - * - * defines the types from bitmap database used by drop down list. - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ - enum TBitmapType - { - EBitmapListBg, - - EBitmapListBgMask, - - // the primary background bitmap - EBitmapPrimary, - - // the primary Mask background bitmap - EBitmapPrimaryMask, - - // the secondary background bitmap - EBitmapSecondary, - - // the secondary Mask background bitmap - EBitmapSecondaryMask, - - // the highlight cell background bitmap - EBitmapHighlight, - - // the highlight cell Mask background bitmap - EBitmapHighlightMask, - - // the pen down cell background bitmap - EBitmapPenDown, - - // the pen down cell Mask background bitmap - EBitmapPenDownMask, - - // disable bitmap for page down button - EBitmapNextDisable, - - // disable mask bitmap for page down button - EBitmapNextDisableMask, - - // bitmap for page down button - EBitmapNext, - - // mask bitmap for page down button - EBitmapNextMask, - - // pressed bitmap for page down button - EBitmapNextPress, - - // pressed mask bitmap for page down button - EBitmapNextPressMask, - - // bitmap for page close button - EBitmapClose, - - // mask bitmap for page close button - EBitmapCloseMask, - - // pressed bitmap for page close button - EBitmapClosePress, - - // pressed mask bitmap for page close button - EBitmapClosePressMask, - - // bitmap for page up button - EBitmapPrevious, - - // mask bitmap for page up button - EBitmapPreviousMask, - - // pressed bitmap for page up button - EBitmapPreviousPress, - - // pressed mask bitmap for page up button - EBitmapPreviousPressMask, - EBitmapExpand, - - EBitmapExpandMask, - - EBitmapExpandPress, - - EBitmapExpandPressMask, - - EBitmapLastType = EBitmapExpandPressMask - }; - -public: // Method - - /** - * Create a object of CBitmapDb, static method - * - * @since S60 v3.2 - * @param aReader resource reader which provide the bitmap(mask) id - * @param aBitmapSize the size needed to set for the bitmap - * @return CBitmapDb pointer. - */ - static CBitmapDb* NewL(TResourceReader& aReader, - TSize aBitmapSize, - TSize aExpandSize, - TSize aSpinBtnSize); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CBitmapDb(); - - /** - * Get bitmap from the database - * - * @since S60 v3.2 - * @param aType bitmap type - * @return the destination bitmap, Null if can't find - */ - const CFbsBitmap* GetBitMap(const TBitmapType aType); - - void ConstructFromResourceL(TResourceReader& aReader, - TSize aBitmapSize, - TSize aExpandSize, - TSize aSpinBtnSize); - - /** - * Get text color of drop down list - * - * @since S60 v3.2 - * @return Text color of drop down list - */ - const TRgb TextColor(); - - /** - * Get frame color of drop down list - * - * @since S60 v3.2 - * @return Frame color of drop down list - */ - const TRgb FrameColor(); - - static void CreateDimmedMaskL( CFbsBitmap*& aDimmedMask, - const CFbsBitmap* aMask - /*TScaleMode aScaleMode*/ ); - - void SizeChanged(TSize aSize); -private: // Data - - /** - * 2nd construct method - * - * @since S60 v3.2 - * @param aReader resource reader which provide the bitmap(mask) id - * @param aBitmapSize the size needed to set for the bitmap - * @return None - */ - void ConstructL(TResourceReader& aReader, - TSize aBitmapSize, - TSize aExpandSize, - TSize aSpinBtnSize); - - // txin - void CreateIconL(const TDesC& aBmpFileName, - TAknsItemID aId, - CFbsBitmap** aBmp, - CFbsBitmap** aMaskBmp, - TInt aBmpId, - TInt aMaskBmpId, - TSize aSize, - TBool aColorIcon); - // end - -private: // Data - - /** - * the bitmap array - */ - RPointerArray iBmpList; - - /** - * the text color of drop down list - */ - TRgb iTextColor; - - /** - * the frame color of drop down list - */ - TRgb iFrameColor; - }; - -#endif // C_BITMAPDB_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputcandidate.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputcandidate.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,172 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: candidate stands for every cell in drop down list -* -*/ - - -#ifndef C_CANDIDATE_H -#define C_CANDIDATE_H - -#include -#include - -// class forward decalaration -class CFont; -class MFepCtrlDropdownListContext; - -/** - * The following class packs the info and operation of every cell - * - * the class encapsulates all properties and methods of the cell which - * is the basic unit the drop down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CCandidate) : public CBase - { - -public: - - static CCandidate* NewL(const TDesC& aString, - MFepCtrlDropdownListContext* aOwner); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CCandidate(); - - /** - * Get Candidate - * - * @since S60 v3.2 - * @param aString Candidate string - * @return Candidate string - */ - const TDesC& GetCandidate(); - - /** - * Get rectangle of the candidate - * - * @since S60 v3.2 - * @return Rectangle occupied by candidate string. - */ - const TRect& GetRect() const; - - - /** - * Move rectangle of the candidate - * - * @since S60 v3.2 - * @return None. - */ - void Move(const TPoint& aOffsetPoint); - - /** - * Set position of the candidate rectangle - * - * @since S60 v3.2 - * @param aLeftTopPosition the left top point - * @param aWidthForOneUnit the width of one cell - * @param aHeight the height of one cell - * @param aTextFont the font which will be used for draw text - * @return the columns the cell occupies. - */ - TInt SetPositionL(const TPoint& aLeftTopPosition, - TInt aWidthForOneUnit, - TInt aHeight, - const CFont* aTextFont, - TInt aCellHorizontalMargin); - - /** - * draw the text for the candidate - * - * @since S60 v3.2 - * @param aGc graphics context - * @param aAlignment the alighment style, can be any of ECenter, ELeft, ERight - * @param aTextColor the color for the text - * @param aSpecialTextColor the color for special text - * @param aFixedText the fixed text, it has default value of KNullDesC16 - * @return the columns the cell occupies. - */ - virtual void DrawText(CFbsBitGc& aGc, - const CGraphicsContext::TTextAlign aAlignment, - const TInt aTextMargin, - TRgb aTextColor, - TRgb aSpecialTextColor, - const TDesC& aFixedText = KNullDesC16); - - TInt CalculateDisplayTextL(const TInt aWidthForOneUnit, - const CFont* aTextFont, - TInt aColNum); -private: // Method - /** - * Constructor - * - * @since S60 v3.2 - * @param aString Candidate string - */ - CCandidate(const TDesC& aString, MFepCtrlDropdownListContext* aOwner); - void ConstructL(); - /** - * draw the text for the candidate - * - * @since S60 v3.2 - * @param aWidthForOneUnit the width of one cell - * @param aTextFont the font which will be used for drawing the text - * @return the columns the cell occupies. - */ - TInt CalculateCells(const TInt aWidthForOneUnit, - const CFont* aTextFont, - const TDesC& aText); - -// TInt CalculateDisplayTextL(const TInt aWidthForOneUnit, -// const CFont* aTextFont, -// TInt aColNum); - -private: // Data - - /** - * the candidate text - */ - const TDesC& iCandidate; - // used when candidate may be truncated - HBufC* iDisplayText; - - /** - * the baseline offset used for drawing the text - */ - TInt iBaselineOffset; - - /** - * the rectangle of the candidate - */ - TRect iRect; - - /** - * the font which will be used for drawing the text - * Not own. - */ - const CFont* iTextFont; - - // not own - MFepCtrlDropdownListContext* iOwner; - }; - -#endif // C_CANDIDATE_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputdropdownlist.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputdropdownlist.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1418 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: drop-down list control -* -*/ - - -#ifndef C_CFEPCTRLDROPDOWNLIST_H -#define C_CFEPCTRLDROPDOWNLIST_H - -// INCLUDES -#include -#include -#include -#include -#include -#include - - -/** class forward decalaration */ -class CCandidate; -class CPages; -class CBitmapDb; -class CListManager; -class MEventObserver; -class CBubbleCtrl; -class TAknTextLineLayout; - -/** The max length for fixed text */ -const TInt KMaxFixedTextNumber = 32; -const TInt KDropDownListCtrlType = EUserCtrlBase | ECtrlBaseCtrl; - -/** - * The interface dealing with outer event from any control except the list - * - * The interface dealing with outer event from any control except the list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -class MListEventHandler - { - -public: - - /** - * The method will be called when there is event from any control except from the list - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aCtrl The control who sends out the event - * @param aEventData The data relative with the event - */ - virtual void HandleListOuterEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData); - - }; - -/** - * The drop-down list control - * - * The drop-down list control - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -class CFepCtrlDropdownList : public CFepUiBaseCtrl, - public MFepCtrlDropdownListContext, - public MEventObserver - { - -public: // internal type definition - /** - * The type of list, expandable or no-expandable - * - * The type of list, expandable or no-expandable - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ - enum TListType - { - EListExpandable, - EListExpandableWithBubble, - EListNoExpandable, - EListNoExpandableWithBubble, - EListExpandableWithoutIcon, - EListExpandableRollWithIcon, - EListExpandableRollWithIconWithBubble, - EListExpandableMultiRowWithoutIcon - }; - - enum TCandTruncateType - { - // beginning part of candidate are hide - ECandTruncateFromBeginning, - // end part of candidate are shown as ellipsis - ECandTruncateAsEllipsis, - // end part of candidate are hide - ECandTruncateFromEnd - }; - - enum TExpandType - { - ECandExpandUpward, - ECandExpandDownward - }; - - // horizontal direction of candidate list: shrink and expanded - enum THDirection - { - ECandFromLToR, - ECandFromRToL - }; - -public: //Method - - /** - * Destructor - * - * @since S60 v3.2 - * @return None. - */ - IMPORT_C virtual ~CFepCtrlDropdownList(); - - /** - * Create one CFepCtrlDropdownList object - * - * @since S60 v3.2 - * @param aTopLeftPoint The top left point of the drop down list - * @param aUiLayout The layout plugin - * @param aControlId This control ID - * @param aReader The reader from which the bitmaps ID can be read - * @param aCellWidth The width of one basic cell - * @param aCellHeight The height of one basic cell - * @param aNaviWidth The width of navidation - * @param aColNum The number of columns in one row - * @param aRowNum The number of rows - * @param aFont The font used to draw the text - * @param aHandler The handle which will deal with outer event to this control - * @param aAlignment The alighment used to draw text - * @param aTextMargin if alignment is not ECenter, the margin is used - * @param aBorderColor The color of border - * @param aBgColor The color of background - * @param aNavigationBgColor The background color of navigation area - * @param aTextColor The color of text - * @param aSpecialTextColor The color of special text - * @param aHighLightTextColor The color of highlight text - * @param aHighLightBgColor The background color of high light - * @param aButtonDownBgColor The background color when button pressing - * @return The CFepCtrlDropdownList object. - */ - IMPORT_C static CFepCtrlDropdownList* NewL(const TPoint& aTopLeftPoint, - CFepUiLayout* aUiLayout, - TInt aControlId, - TResourceReader& aReader, - const TInt aCellWidth, - const TInt aCellHeight, - const TInt aNaviWidth, - const TInt aColNum, - const TInt aRowNum, - const CFont* aFont = NULL, - MListEventHandler* aHandler = NULL, - const CGraphicsContext::TTextAlign aAlignment = CGraphicsContext::ECenter, - const TInt aTextMargin = 3, - const TRgb aBorderColor = KRgbBlack, - const TRgb aBgColor = TRgb(0xeeeeee), - const TRgb aNavigationBgColor = TRgb(0xeeeeee), - const TRgb aTextColor = KRgbBlack, - const TRgb aSpecialTextColor = KRgbBlack, - const TRgb aHighLightTextColor = KRgbBlack, - const TRgb aHighLightBgColor = TRgb(0xcccccc), - const TRgb aButtonDownBgColor = KRgbGray); - IMPORT_C static CFepCtrlDropdownList* NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aResId, - TPoint aTopLeftPoint, - TSize aCellSize, - TInt aColNum, - TInt aRowNum); - - IMPORT_C static CFepCtrlDropdownList* NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aResId, - TPoint aTopLeftPoint, - const CFont* aFont, - TSize aCellSize, - TInt aNaviWidth, - TInt aColNum, - TInt aRowNum, - TInt aSpinBtnHeight, - TInt aHorizontalCellMargin = 0, - TInt aVerticalCellMargin = 0, - THDirection aDirection = ECandFromLToR, - TBool aPageShown = ETrue); - - /** - * Create one CFepCtrlDropdownList object, need to pop up yourself - * - * @since S60 v3.2 - * @param aTopLeftPoint The top left point of the drop down list - * @param aUiLayout The layout plugin - * @param aControlId This control ID - * @param aReader The reader from which the bitmaps ID can be read - * @param aCellWidth The width of one basic cell - * @param aCellHeight The height of one basic cell - * @param aNaviWidth The width of navidation - * @param aColNum The number of columns in one row - * @param aRowNum The number of rows - * @param aFont The font used to draw the text - * @param aHandler The handle which will deal with outer event to this control - * @param aAlignment The alighment used to draw text - * @param aTextMargin if alignment is not ECenter, the margin is used - * @param aBorderColor The color of border - * @param aBgColor The color of background - * @param aNavigationBgColor The background color of navigation area - * @param aTextColor The color of text - * @param aSpecialTextColor The color of special text - * @param aHighLightTextColor The color of highlight text - * @param aHighLightBgColor The background color of high light - * @param aButtonDownBgColor The background color when button pressing - * @return The CFepCtrlDropdownList object. - */ - IMPORT_C static CFepCtrlDropdownList* NewLC(const TPoint& aTopLeftPoint, - CFepUiLayout* aUiLayout, - TInt aControlId, - TResourceReader& aReader, - const TInt aCellWidth, - const TInt aCellHeight, - const TInt aNaviWidth, - const TInt aColNum, - const TInt aRowNum, - const CFont* aFont = NULL, - MListEventHandler* aHandler = NULL, - const CGraphicsContext::TTextAlign aAlignment = CGraphicsContext::ECenter, - const TInt aTextMargin = 3, - const TRgb aBorderColor = KRgbBlack, - const TRgb aBgColor = TRgb(0xeeeeee), - const TRgb aNavigationBgColor = TRgb(0xeeeeee), - const TRgb aTextColor = KRgbBlack, - const TRgb aSpecialTextColor = KRgbBlack, - const TRgb aHighLightTextColor = KRgbBlack, - const TRgb aHighLightBgColor = TRgb(0xcccccc), - const TRgb aButtonDownBgColor = KRgbGray); - - /** - * Size change function - * - * @since S60 v3.2 - * @param aCellWidth The width of one basic cell - * @param aCellHeight The height of one basic cell - * @param aNaviWidth The width of navidation - * @param aTopLeftPoint The top left point of the drop down list - * @param aColNum The number of columns in one row - * @param aRowNum The number of rows - * @return None. - */ - IMPORT_C void SizeChanged(const TInt aCellWidth, const TInt aCellHeight, - const TInt aNaviWidth, const TPoint aTopLeftPoint = TPoint(0,0), - const TInt aColNum = 0, const TInt aRowNum = 0); - - /** - * Set top left point of the list - * - * @since S60 v3.2 - * @param aTopLeftPoint The top left point of the drop down list - * @return None. - */ - IMPORT_C void SetTopLeftPoint(const TPoint aTopLeftPoint); - - /** - * Set the width of one basic cell - * - * @since S60 v3.2 - * @param aCellWidth The width of one basic cell - * @return None. - */ - IMPORT_C void SetCellWidth(const TInt aCellWidth); - - /** - * Set the height of one basic cell - * - * @since S60 v3.2 - * @param aCellHeight The height of one basic cell - * @return None. - */ - IMPORT_C void SetCellHeight(const TInt aCellHeight); - - /** - * Set width of navigation - * - * @since S60 v3.2 - * @param aNaviWidth The width of navidation - * @return None. - */ - IMPORT_C void SetNaviWidth(const TInt aNaviWidth); - IMPORT_C void SetSpinBtnHeight(const TInt aHeight); - IMPORT_C void SetCellMargin(const TInt aHorizontalMargin, const TInt aVerticalMargin); - - /** - * Set column numbers - * - * @since S60 v3.2 - * @param aColNum The number of columns in one row - * @return None. - */ - IMPORT_C void SetColNum(const TInt aColNum); - - /** - * Set or unset highlight for cells. - * - * @since S60 v3.2 - * @param aCellIndex Which cell would be set - * @param aHighlight The flag of highlight, set highlight if ETrue, otherwise cancel highlight - * @return None. - */ - IMPORT_C void SetHighlightCell(const TInt aCellIndex, TBool aHighlight = ETrue, - const TBool aIsDraw = ETrue ); - - - /** - * Set row numbers - * - * @since S60 v3.2 - * @param aRowNum The number of rows - * @return None. - */ - IMPORT_C void SetRowNum(const TInt aRowNum); - - /** - * Set border color - * - * @since S60 v3.2 - * @param aBorderColor The border color - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void SetBorderColor(TRgb aBorderColor, TBool aReDraw = EFalse); - - /** - * Set background color for the whole area - * - * @since S60 v3.2 - * @param aBgColor The background color - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void SetBgColor(TRgb aBgColor, TBool aReDraw = EFalse); - - /** - * Set background for navigation area - * - * @since S60 v3.2 - * @param aNavigationBgColor The background color of navigation area - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void SetNavigationBgColor(TRgb aNavigationBgColor, TBool aReDraw = EFalse); - - /** - * Set text color - * - * @since S60 v3.2 - * @param aTextColor The color used to draw text - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void SetTextColor(TRgb aTextColor, TBool aReDraw = EFalse); - - /** - * Set color for special text - * - * @since S60 v3.2 - * @param aSpecialTextColor The color used to draw special text - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void SetSpecialTextColor(TRgb aSpecialTextColor, TBool aReDraw = EFalse); - - /** - * Set color for high light text - * - * @since S60 v3.2 - * @param aHighLightTextColor The color used to draw high light text - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void SetHighLightTextColor(TRgb aHighLightTextColor, TBool aReDraw = EFalse); - - /** - * Set background color for highlight - * - * @since S60 v3.2 - * @param aHighLightBgColor The background color of high light area - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void SetHighLightBgColor(TRgb aHighLightBgColor, TBool aReDraw = EFalse); - - /** - * The method will be called when there is event from any control except from the list - * - * @since S60 v3.2 - * @param aFont The font used to draw text - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void SetFont(const CFont* aFont, TBool aReDraw = EFalse); - - /** - * Set text alignment - * - * @since S60 v3.2 - * @param aAlignment The alignment used to draw text - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void SetTextAlighment(const CGraphicsContext::TTextAlign aAlignment, - TBool aReDraw = EFalse); - - /** - * Set text margin if alignment is not ECenter - * - * @since S60 v3.2 - * @param aTextMargin the margin used to draw text - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void SetTextMargin(const TInt aTextMargin, TBool aReDraw = EFalse); - - /** - * set secondary list - * - * @since S60 v3.2 - * @param aIndex the cell index need to set new color - * @param aBgColor The background color - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void SetSecondaryList(RArray& aIndexList, TBool aReDraw = EFalse); - - /** - * Set event handler when there is out event coming - * - * @since S60 v3.2 - * @param aHandler The event handler, which has implemented the interface of MListEventHandler - * @return None. - */ - IMPORT_C void SetListEventHandler(MListEventHandler* aHandler); - - /** - * Set event id when candidate is selected - * - * @since S60 v3.2 - * @param aEventId The event id when candidate is selected - * @return The CListMultiRowWithIcon pointer. - */ - IMPORT_C void SetEventIdForCandidateSelected(TInt aEventId); - - /** - * Set event id when need to get next page candidate - * - * @since S60 v3.2 - * @param aEventId The event id need next page candidate - * @return None - */ - IMPORT_C void SetEventIdForNextPageCandidate(TInt aEventId); - - /** - * Set event id when need to get previous page candidate - * - * @since S60 v3.2 - * @param aEventId The event id need previous page candidate - * @return None - */ - IMPORT_C void SetEventIdForPreviousPageCandidate(TInt aEventId); - - /** - * Set event id when need to judge if candidate exist - * - * @since S60 v3.2 - * @param aEventId The event id judge if candidate exist - * @return None - */ - IMPORT_C void SetEventIdForCandidateExisted(TInt aEventId); - - /** - * Set candidates for the list - * - * @since S60 v3.2 - * @param aCandidates the candidates array - * @param aListType The list type used when redraw - * @param aFixedText The fixed text(only used in English) - * @return None. - */ - IMPORT_C void SetCandidatesL(const RPointerArray& aCandidates, - const TListType aListType = EListExpandable, - const TDesC& aFixedText = KNullDesC16); - - IMPORT_C void SetCandTruncateType( - const TCandTruncateType aTruncateType = ECandTruncateFromEnd); - - /** - * Add candidates for the list - * - * @since S60 v3.2 - * @param aCandidates the candidates array - * @param aListType The list type used when redraw - * @return None. - */ - IMPORT_C void AddCandidatesL(const RPointerArray& aCandidates, - const TListType aListType = EListExpandable); - - /** - * Reset and clear all candidates in the list and redraw the list - * - * @since S60 v3.2 - * @param aListType The list type used when redraw - * @return None. - */ - IMPORT_C void ResetAndClear(const TListType aListType = EListNoExpandable); - - - /** - * Fold the expanding list - * - * @since S60 v3.2 - * @return None. - */ - IMPORT_C void FoldList(); - -// from base class CFepUiBaseCtrl - - /** - * Draw the list - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Draw(); - - /** - * Active the control - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void SetActive(TBool aActiveFlag); - - /** - * Get rect of the drop down list - * - * @since S60 v3.2 - * @return The rect of the drop down list - */ - IMPORT_C const TRect& Rect(); - - /** - * Handle pointer down event - * - * @since S60 v3.2 - * @param aPoint The point position relative the layout - */ - IMPORT_C CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); - - /** - * Handle pointer move event - * - * @since S60 v3.2 - * @param aPoint The point position relative the layout - */ - IMPORT_C CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint); - - /** - * Handle pointer up event - * - * @since S60 v3.2 - * @param aPoint The point position relative the layout - */ - IMPORT_C CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint); - - /** - * Handle pointer leave event - * - * @since S60 v3.2 - * @param aPoint The point position relative the layout - */ - IMPORT_C void HandlePointerLeave(const TPoint& aPoint); - -// from interface MEventObserver - - /** - * Handle event - * @since Series 60 3.1 - * @param aEventType The event type - * @param aCtrl The control who sends the event - * @param aEventData The event data - * @return None - */ - IMPORT_C void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData); - -// from base class CFepUiBaseCtrl - - /** - * Move the drop down list - * @since Series 60 3.1 - * @param aOffset The offset point - * @return None - */ - IMPORT_C void Move(const TPoint& aOffset); - - /** - * Hide the control - * @since Series 60 3.1 - * @return None - */ - IMPORT_C void OnDeActivate(); - - /** - * Hide or show dropdown list. - * - * @param aFlag ETrue if want to hide the control. - */ - IMPORT_C void Hide( TBool aFlag ); - -// from interface MContext - - /** - * Get the candidate count - * - * @since S60 v3.2 - * @return the candidate count. - */ - IMPORT_C TInt CandidateCount() const; - - /** - * Enable multi color or not - * - * @since S60 v3.2 - * @param aEnable Enable mutil color if ETrue, otherwise disable - * @param aReDraw Redraw if ETrue, otherwise not redraw - * @return None. - */ - IMPORT_C void EnableSecondary(TBool aEnable, TBool aReDraw = EFalse); - - /** - * Get the flag of enable or disable multi color - * - * @since S60 v3.2 - * @return ETrue if enable, or EFalse. - */ - IMPORT_C TBool IsEnableSecondary() const; - - /** - * This function creates drop down list from resource, before calling - * this function, caller should set resource id of drop down list first - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructFromResourceL(); - - /** - * Get secondary list - * - * @since S60 v3.2 - * @return color array. - */ - const RArray& GetSecondaryList() const; - - /** - * Draw mask for the appointed rect - * @since Series 60 3.1 - * @param aRect The rect which will be redrawn - * @return None - */ - void DrawMask(TRect aRect); - - /** - * Active bitmap context - * @since Series 60 3.1 - * @return None - */ - void ActivateBitmapContext(); - - /** - * Get the graphics context - * @since Series 60 3.1 - * @return The graphics context - */ - CFbsBitGc* Gc(); - - /** - * Get the first candidate visible - * - * @since S60 v3.2 - * @return The first candidate index. - */ - TInt GetFirstCandidateIndex(); - - /** - * Get the first candidate visible - * - * @since S60 v3.2 - * @return The last candidate index. - */ - TInt GetLastCandidateIndex(); - - /** - * Set the first candidate visible - * - * @since S60 v3.2 - * @return None. - */ - void SetFirstCandidateIndex(TInt aFirstIndex); - - /** - * Set the first candidate visible - * - * @since S60 v3.2 - * @return None. - */ - void SetLastCandidateIndex(TInt aLastIndex); - - /** - * Get the appointed candidate - * @since Series 60 3.1 - * @param aIndex The index which will be check out - * @return The appointed candidate - */ - CCandidate* GetCandidate(TInt aIndex); - - /** - * Get top left point - * @since Series 60 3.1 - * @return The top left point - */ - TPoint GetTopLeftPoint(); - - /** - * Get cell width - * @since Series 60 3.1 - * @return The cell width - */ - TInt GetCellWidth(); - - /** - * Get cell height - * @since Series 60 3.1 - * @return The cell height - */ - TInt GetCellHeight(); - - /** - * Get navigation width - * @since Series 60 3.1 - * @return The navigation width - */ - TInt GetNaviWidth(); - - TInt GetSpinBtnHeight(); - TInt GetCellHorizontalMargin(); - TInt GetCellVerticalMargin(); - TInt ListType(); - TInt OneRowStartCandIdx(); - void SetOneRowStartCandIdx(TInt aOriginalCandIdx); - TInt GetOriginalFirstCandIdx(); - void SetOriginalFirstCandIdx(TInt aOriginalFirstCandIdx); - TInt CandTruncateType(); - CList* ActiveList(); - void SetUpdateListReDrawFlag(TBool aReDraw); - TBool GetUpdateListRedrawFlag(); - IMPORT_C void SetFuzzyBoundry(TInt aFuzzyBoundry); - TInt FuzzyBoundry(); - TInt CandExpandType(); - IMPORT_C void SetCandExpandType(const TExpandType aType = ECandExpandDownward); - TInt CandHDirection(); - inline void SetHDirection(const THDirection aDirection = ECandFromLToR); - - // when drop down list is expandable, decide pageup/pagedown shown or not - TBool PageCtrlShown(); - inline void SetPageCtrlShown(TBool aShown = ETrue); - - /** - * Get columns number - * @since Series 60 3.1 - * @return The top left point - */ - TInt GetColNum(); - - /** - * Get rows number - * @since Series 60 3.1 - * @return The top left point - */ - TInt GetRowNum(); - - /** - * Get the font used to draw text - * @since Series 60 3.1 - * @return The font used to draw text - */ - const CFont* GetFont(); - - /** - * Get alignment used to draw the text - * @since Series 60 3.1 - * @return The alignment used to draw the text - */ - CGraphicsContext::TTextAlign GetAlignment(); - - /** - * Get text margin used to draw the text - * @since S60 v3.2 - * @return The margin used to draw the text - */ - TInt GetTextMargin(); - - /** - * Get background color - * @since Series 60 3.1 - * @return The background color - */ - TRgb GetBgColor(); - - /** - * Get button down color - * @since Series 60 3.1 - * @return The background color - */ - TRgb GetButtonDownBgColor(); - - /** - * Get border color - * @since Series 60 3.1 - * @return The border color - */ - TRgb GetBorderColor(); - - /** - * Get text color - * @since Series 60 3.1 - * @return The text color - */ - TRgb GetTextColor(); - - /** - * Get background color for highlight area - * @since Series 60 3.1 - * @return The background color for highlight area - */ - TRgb GetHighLightBgColor(); - - /** - * Get high light text color - * @since Series 60 3.1 - * @return The high light text color - */ - TRgb GetHighLightTextColor(); - - /** - * Get special text color - * @since Series 60 3.1 - * @return The special text color - */ - TRgb GetSpecialTextColor(); - - /** - * Get fixed text - * @since Series 60 3.1 - * @return The fixed text - */ - TDesC GetFixedText(); - - /** - * Get highlight cell list - * @since Series 60 3.1 - * @return The highlight cell list - */ - const RArray& GetHighlightList() const; - - /** - * Get page manager - * @since Series 60 3.1 - * @return The page manager - */ - CPages* GetPages(); - - /** - * Get bitmap manager - * @since Series 60 3.1 - * @return The bitmap manager - */ - CBitmapDb* GetBitmapDb(); - - /** - * Report event when candidate is selected - * @since Series 60 3.1 - * @param aCandidate The candidate string - * @param aSelectedIndex The index of the selected candidate - * @return None - */ - void ReportCandidateSelectEventL(const TDesC& aCandidate, const TInt aSelectedIndex); - - /** - * Invalidate some rect and redraw it - * @since Series 60 3.1 - * @param aRect The rect which will be redrawn - * @param aUpdateAll Update all or not - * @return None - */ - void Invalidate(const TRect& aRect,TBool aUpdateAll = EFalse); - - /** - * Change active list - * - * @since S60 v3.2 - * @param aList The new active list - * @param aLastIndex The last visible candidate index - * @return None. - */ - void ChangeActiveList(CList* aList, TInt aLastIndex = 0); - - /** - * Get pen size - * - * @since S60 v3.2 - * @return The pen size. - */ - const TSize GetPenSize(); - - /** - * Set pointer capture - * - * @since S60 v3.2 - * @param aFlag ETrue to capture pointer, otherwise EFalse - * @return None. - */ - void SetCapture(TBool aFlag); - - /** - * Notify get next candidate page - * - * @since S60 v3.2 - * @return None. - */ - void NotifyGetNextPage(); - - /** - * Notify get previous candidate page - * - * @since S60 v3.2 - * @return None. - */ - void NotifyGetPreviousPage(); - - /** - * Notify close candidate page - * - * @since S60 v3.2 - * @return None. - */ - void NotifyClosePage(); - - /** - * Set flag of if next candidate after last page eixsted - * - * @since S60 v3.2 - * @param aFlag ETrue if candidate exist, otherwise EFalse - * @return None - */ - IMPORT_C void SetFlagCandidateExist(TBool aFlag); - - /** - * Judge if next candidate existed - * - * @since S60 v3.2 - * @return ETrue if candidate exist, otherwise EFalse - */ - TBool NextCandidateExist(); - - /** - * Auto change active list - * - * @since S60 v3.2 - * @param aLastIndex The last visible candidate index - * @return None. - */ - void AutoChangeActiveList( TInt aLastIndex = 0 ); - - /** - * Set dropdown list image ID - * - * @since S60 v3.2 - * @param TDropdownListDrawInfo image information - * @return None. - */ - IMPORT_C void SetDropdownListImgID(TDropdownListDrawInfo aDropdownListDrawInfo); - - /** - * Show preview bubble - * - * @since S60 v3.2 - * @param aFlag Show/Hide flag - * @return None. - */ - IMPORT_C void ShowBubble(TBool aFlag); - - /** - * Set bubble bitmap param - * - * @since S60 v3.2 - * @param aBmpId - * @param aMaskBmpId - * @param aBgSkinId - * @return None. - */ - IMPORT_C void SetBubbleBitmapParam(CFbsBitmap* aBmpId, - CFbsBitmap* aMaskBmpId , - TAknsItemID aBgSkinId ); - - /** - * Set bubble text font - * - * @since S60 v3.2 - * @param aFont Text font - * @return None. - */ - IMPORT_C void SetBubbleTextFont(const CFont* aFont); - - /** - * Set bubble text format - * - * @since S60 v3.2 - * @param aTextFormat Text format - * @return None. - */ - IMPORT_C void SetTextFormat(TAknTextLineLayout aTextFormat); - - /** - * Set bubble text format - * - * @since S60 v3.2 - * @param aLeftDiff - * @param aTopDiff - * @param aRightDiff - * @param aBottomDiff - * @return None. - */ - IMPORT_C void SetFrameDiff(TInt aLeftDiff, TInt aTopDiff, - TInt aRightDiff,TInt aBottomDiff); - - /** - * Set bubble size - * - * @since S60 v3.2 - * @param aSize - * @return None. - */ - IMPORT_C void SetBubbleSize(const TSize& aSize); - - /** - * show preview bubble - * - * @since S60 v3.2 - * @param aRect - * @param aText - * @return None. - */ - void DrawBubble(const TRect aRect, const TDesC& aText); - - /** - * Hide preview bubble - * - * @since S60 v3.2 - * @return None. - */ - void ClearBubble(); - - /** - * ReDraw preview bubble - * - * @since S60 v3.2 - * @return None. - */ - void ReDrawBubble(); - - CFepUiLayout* UiLayout(); - - /** - * Redraw dropdown list - * - * @since S60 v3.2 - * @param aRect Redraw rect. - * @return None. - */ - IMPORT_C void ReDrawRect(const TRect& aRect); -protected: - - /** - * Constructor - * - * @since S60 v3.2 - * @param aTopLeftPoint The top left point of the drop down list - * @param aUiLayout The layout plugin - * @param aControlId This control ID - * @param aReader The reader from which the bitmaps ID can be read - * @param aCellWidth The width of one basic cell - * @param aCellHeight The height of one basic cell - * @param aNaviWidth The width of navidation - * @param aColNum The number of columns in one row - * @param aRowNum The number of rows - * @param aFont The font used to draw the text - * @param aHandler The handle which will deal with outer event to this control - * @param aAlignment The alignment used to draw text - * @param aTextMargin if alignment is not ECenter, the margin is used - * @param aBorderColor The color of border - * @param aBgColor The color of background - * @param aNavigationBgColor The background color of navigation area - * @param aTextColor The color of text - * @param aSpecialTextColor The color of special text - * @param aHighLightTextColor The color of highlight text - * @param aHighLightBgColor The background color of high light - * @param aButtonDownBgColor The background color when button pressing - */ - CFepCtrlDropdownList(const TPoint& aTopLeftPoint, - CFepUiLayout* aUiLayout, - TInt aControlId, - const TInt aCellWidth, - const TInt aCellHeight, - const TInt aNaviWidth, - const TInt aColNum, - const TInt aRowNum, - const CFont* aFont, - MListEventHandler* aHandler, - const CGraphicsContext::TTextAlign aAlignment, - const TInt aTextMargin, - const TRgb aBorderColor, - const TRgb aBgColor, - const TRgb aNavigationBgColor, - const TRgb aTextColor, - const TRgb aSpecialTextColor, - const TRgb aHighLightTextColor, - const TRgb aHighLighttBgColor, - const TRgb aButtonDownBgColor); - - CFepCtrlDropdownList(CFepUiLayout* aUiLayout, - TInt aControlId, - TPoint aTopLeftPoint, - TSize aCellSize, - TInt aColNum, - TInt aRowNum); - - CFepCtrlDropdownList(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aResId, - TPoint aTopLeftPoint, - const CFont* aFont, - TSize aCellSize, - TInt aNaviWidth, - TInt aColNum, - TInt aRowNum, - TInt aSpinBtnHeight, - TInt aHorizontalCellMargin, - TInt aVerticalCellMargin, - THDirection aDirection, - TBool aPageShown); - - - - /** - * 2nd construct function - * @since Series 60 3.1 - * @param aTopLeftPoint The top left point - * @param aReader The reader from which the bitmaps ID can be read - * @return None - */ - void ConstructL(const TPoint& aTopLeftPoint, TResourceReader& aReader); - - void ConstructL(TPoint aTopLeftPoint, TInt aResId); - -private: - - /** - * The list manager - * Not own - */ - CListManager* iListManager; - - /** - * The bitmap database - * Own - */ - CBitmapDb* iBitmapDb; - - /** - * The pages manager - * Own - */ - CPages* iPages; - - /** - * The candidate list - * Own - */ - RPointerArray iCandidatelist; - - /** - * The candidate color list - * Own - */ - RArray iSecondaryList; - - /** - * The high light list - * Own - */ - RArray iHighlightList; - - /** - * The flag of multi color enable or disable - */ - TBool iEnableSecondary; - - /** - * The first candidate index in the list - */ - TInt iFirstCandidateIndex; - - /** - * The last candidate index in the list - */ - TInt iLastCandidateIndex; - - /** - * The font used to draw the text - * Own - */ - const CFont* iFont; - - const CFont* iBubbleFont; - - /** - * Cell width - */ - TInt iCellWidth; - - /** - * Cell height - */ - TInt iCellHeight; - - /** - * navigation width - */ - TInt iNaviWidth; - - TInt iSpinBtnHeight; - TInt iCellHorizontalMargin; - TInt iCellVerticalMargin; - TInt iOriginalCandIdx; - TInt iOriginalFirstCandIdx; - TBool iUpdateListReDraw; - - /** - * alignment used to draw the text - */ - CGraphicsContext::TTextAlign iAlignment; - - /** - * the margin used to draw the text if alignment is not ECenter - */ - TInt iTextMargin; - - /** - * The columns number - */ - TInt iColNum; - - /** - * The rows number - */ - TInt iRowNum; - - /** - * The border color - */ - TRgb iBorderColor; - - /** - * The background color of the whole list - */ - TRgb iBgColor; - - /** - * The navigation background color - */ - TRgb iNavigationBgColor; - - /** - * The text color - */ - TRgb iTextColor; - - /** - * The special text color - */ - TRgb iSpecialTextColor; - - /** - * The highlight text color - */ - TRgb iHighLightTextColor; - - /** - * The background color of highlight area - */ - TRgb iHighLightBgColor; - - /** - * The background color when button down - */ - TRgb iButtonDownBgColor; - - /** - * The top left point the list - */ - TPoint iTopLeftPoint; - - /** - * The fixed text - */ - TBuf iFixedText; - - /** - * The event ID for candidate selected - */ - TInt iEventIdForCandidateSelected; - - /** - * The event ID for next page candidate - */ - TInt iEventIdForNextPageCandidate; - - /** - * The event ID for previous page candidate - */ - TInt iEventIdForPreviousPageCandidate; - - /** - * The event ID for judge if candidate existed - */ - TInt iEventIdForCandidateExisted; - - /** - * The event handler when out event coming - * Not own - */ - MListEventHandler* iListEventHandler; - - /** - * The first time construct flag of drop down list - */ - TBool iFirstTimeConstruct; - - /** - * The flag to indicate that candidate existed or not at given position - */ - TBool iCandidateExisted; - - /** - * The type of drop down list. - */ - TListType iListType; - - TCandTruncateType iCandTruncateType; - - TInt iFuzzyBoundry; - - TExpandType iCandExpandType; - - THDirection iCandHDirection; - - TBool iPageCtrlShown; - - CBubbleCtrl* iBubbleCtrl; - - TBool iIsShowBubble; - - TSize iBubbleSize; - - TInt iBubbleVerticalMargin; - }; - -#endif // C_CFEPCTRLDROPDOWNLIST_H - -inline void CFepCtrlDropdownList::SetHDirection(const THDirection aDirection) - { - iCandHDirection = aDirection; - } - -inline void CFepCtrlDropdownList::SetPageCtrlShown(TBool aShown) - { - iPageCtrlShown = aShown; - } -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputdropdownlist.rh --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputdropdownlist.rh Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource headers for project FEP control -* -*/ - - -#ifndef FEP_CTRL_DROP_DOWN_LIST_RH -#define FEP_CTRL_DROP_DOWN_LIST_RH - -// INCLUDES -#include - -// STRUCTURE DEFINITIONS - -// ----------------------------------------------------------------------------- -// FEP_CTRL_DROP_DOWN_LIST_IMSGE -// Resource definition for dropdownlist -// ----------------------------------------------------------------------------- -// -STRUCT FEP_CTRL_DROP_DOWN_LIST_IMAGE - { - // mbm file name - LTEXT bmpfile=""; - - LONG imgmajorskinid=0xffff; - - // list bg - WORD bmpListBg=0xffff; - WORD bmpListBgMask=0xffff; - WORD bmpListBgskinid=0xffff; - - // primary bg - WORD bmpPrimary=0xffff; - WORD bmpPrimaryMask=0xffff; - WORD bmpPrimaryskinid=0xffff; - - // secondary mask bg - WORD bmpSecondary=0xffff; - WORD bmpSecondaryMask=0xffff; - WORD bmpSecondaryskinid=0xffff; - - // highlight bg - WORD bmpHighlight=0xffff; - WORD bmpHighlightMask=0xffff; - WORD bmpHighlightskinid=0xffff; - - // pen down bg - WORD bmpPenDown=0xffff; - WORD bmpPenDownMask=0xffff; - WORD bmpPenDownskinid=0xffff; - - // disable bitmap - WORD bmpNextDisable=0xffff; - WORD bmpNextDisableMask=0xffff; - WORD bmpNextDisableskinid=0xffff; - - // bitmap - WORD bmpNext=0xffff; - WORD bmpNextMask=0xffff; - WORD bmpNextskinid=0xffff; - - // bitmap - WORD bmpNextPress=0xffff; - WORD bmpNextPressMask=0xffff; - WORD bmpNextPressskinid=0xffff; - - // bitmap - WORD bmpClose=0xffff; - WORD bmpCloseMask=0xffff; - WORD bmpCloseskinid=0xffff; - - // bitmap - WORD bmpClosePress=0xffff; - WORD bmpClosePressMask=0xffff; - WORD bmpClosePressskinid=0xffff; - - // bitmap - WORD bmpPrevious=0xffff; - WORD bmpPreviousMask=0xffff; - WORD bmpPreviousskinid=0xffff; - - // bitmap - WORD bmpPreviousPress=0xffff; - WORD bmpPreviousPressMask=0xffff; - WORD bmpPreviousPressskinid=0xffff; - - WORD bmpExpand=0xffff; - WORD bmpExpandMask=0xffff; - WORD bmpExpandskinid=0xffff; - - WORD bmpExpandPress=0xffff; - WORD bmpExpandPressMask=0xffff; - WORD bmpExpandPressskinid=0xffff; - - // text color - LONG colormajorskinid=0xffff; - WORD textcolorgrp=0xffff; - WORD textcoloridx=0xffff; - - // border color - LONG bordercolormajorskinid=0xffff; - WORD bordercolorgrp=0xffff; - WORD bordercoloridx=0xffff; - } - -#endif // FEP_CTRL_DROP_DOWN_LIST_IMSGE - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputdropdownlistcontext.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputdropdownlistcontext.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,465 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: context for list -* -*/ - - -#ifndef M_DROP_DOWN_LIST_CONTEXT_H -#define M_DROP_DOWN_LIST_CONTEXT_H - -#include -#include -#include - -class CCandidate; -class CPages; -class CBitmapDb; -class CList; - -struct TDropdownListDrawInfo - { - TAknsItemID iInactiveBtnImgID; - TAknsItemID iNormalBtnImgID; - TAknsItemID iPressedBtnImgID; - - TAknsItemID iCandidateLeftImgID; - TAknsItemID iCandidateMiddleImgID; - TAknsItemID iCandidateRightImgID; - - TAknsItemID iCandidatePressedLeftImgID; - TAknsItemID iCandidatePressedMiddleImgID; - TAknsItemID iCandidatePressedRightImgID; - - TRgb iCandidatesHighlightColor; - - TBool iSupportSkin; - - TDropdownListDrawInfo(TAknsItemID aInactiveBtnImgID, - TAknsItemID aNormalBtnImgID, - TAknsItemID aPressedBtnImgID, - - TAknsItemID aCandidateLeftImgID, - TAknsItemID aCandidateMiddleImgID, - TAknsItemID aCandidateRightImgID, - - TAknsItemID aCandidatePressedLeftImgID, - TAknsItemID aCandidatePressedMiddleImgID, - TAknsItemID aCandidatePressedRightImgID, - - TRgb aCandidatesHighlightColor, - TBool aSupportSkin = EFalse) - { - - iInactiveBtnImgID = aInactiveBtnImgID; - iNormalBtnImgID = aNormalBtnImgID; - iPressedBtnImgID = aPressedBtnImgID; - - iCandidateLeftImgID = aCandidateLeftImgID; - iCandidateMiddleImgID = aCandidateMiddleImgID; - iCandidateRightImgID = aCandidateRightImgID; - - iCandidatePressedLeftImgID = aCandidatePressedLeftImgID; - iCandidatePressedMiddleImgID = aCandidatePressedMiddleImgID; - iCandidatePressedRightImgID = aCandidatePressedRightImgID; - - iCandidatesHighlightColor = aCandidatesHighlightColor; - - iSupportSkin = aSupportSkin; - - }; - - TDropdownListDrawInfo() - { - iSupportSkin = EFalse; - }; - }; - - - -/** - * Context for list - * - * it provide all functions used by list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -class MFepCtrlDropdownListContext - { -public: // Method - - /** - * Draw mask for the appointed rect - * @since S60 v3.2 - * @param aRect the rect which will be redrawn - * @return None - */ - virtual void DrawMask(TRect aRect) = 0; - - /** - * Active bitmap context - * @since S60 v3.2 - * @return None - */ - virtual void ActivateBitmapContext() = 0; - - /** - * Get the graphics context - * @since S60 v3.2 - * @return The graphics context - */ - virtual CFbsBitGc* Gc() = 0; - - /** - * Get the candidate count - * - * @since S60 v3.2 - * @return The candidate count. - */ - virtual TInt CandidateCount() const = 0; - - /** - * Get the first candidate visible - * - * @since S60 v3.2 - * @return The first candidate index. - */ - virtual TInt GetFirstCandidateIndex() = 0; - - /** - * Get the first candidate visible - * - * @since S60 v3.2 - * @return The last candidate index. - */ - virtual TInt GetLastCandidateIndex() = 0; - - /** - * Set the first candidate visible - * - * @since S60 v3.2 - * @param aFirstIndex the first candidate index - * @return None. - */ - virtual void SetFirstCandidateIndex(TInt aFirstIndex) = 0; - - /** - * Set the first candidate visible - * - * @since S60 v3.2 - * @param aLastIndex the last candidate index - * @return None. - */ - virtual void SetLastCandidateIndex(TInt aLastIndex) = 0; - - /** - * Get the appointed candidate - * @since S60 v3.2 - * @param aIndex The index which will be check out - * @return The appointed candidate - */ - virtual CCandidate* GetCandidate(TInt aIndex) = 0; - - /** - * Get top left point - * @since S60 v3.2 - * @return The top left point - */ - virtual TPoint GetTopLeftPoint() = 0; - - /** - * Get cell width - * @since S60 v3.2 - * @return Cell width - */ - virtual TInt GetCellWidth() = 0; - - /** - * Get cell height - * @since S60 v3.2 - * @return Cell height - */ - virtual TInt GetCellHeight() = 0; - - /** - * Get navigation width - * @since S60 v3.2 - * @return Navigation width - */ - virtual TInt GetNaviWidth() = 0; - virtual TInt GetSpinBtnHeight() = 0; - virtual TInt GetCellHorizontalMargin() = 0; - virtual TInt GetCellVerticalMargin() = 0; - virtual TInt ListType() = 0; - virtual TInt OneRowStartCandIdx() = 0; - virtual void SetOneRowStartCandIdx(TInt aOriginalCandIdx) = 0; - virtual TInt GetOriginalFirstCandIdx() = 0; - virtual void SetOriginalFirstCandIdx(TInt aOriginalFirstCandIdx) = 0; - virtual TInt CandTruncateType() = 0; - virtual CList* ActiveList() = 0; - virtual void SetUpdateListReDrawFlag(TBool aReDraw) = 0; - virtual TBool GetUpdateListRedrawFlag() = 0; - // if set: when list expanded, and user press on region between - // list's rect and outerrect (list's rect plus fuzzy boundry) - // it still think that press inside list - virtual TInt FuzzyBoundry() = 0; - virtual TInt CandExpandType() = 0; - virtual TInt CandHDirection() = 0; - virtual TBool PageCtrlShown() = 0; - - /** - * Get columns number - * @since S60 v3.2 - * @return The top left point - */ - virtual TInt GetColNum() = 0; - - /** - * Get rows number - * @since S60 v3.2 - * @return The top left point - */ - virtual TInt GetRowNum() = 0; - - /** - * Get the font used to draw text - * @since S60 v3.2 - * @return The font used to draw text - */ - virtual const CFont* GetFont() = 0; - - /** - * Get alignment used to draw the text - * @since S60 v3.2 - * @return The alignment used to draw the text - */ - virtual CGraphicsContext::TTextAlign GetAlignment() = 0; - - /** - * Get text margin used to draw the text - * @since S60 v3.2 - * @return The margin used to draw the text - */ - virtual TInt GetTextMargin() = 0; - - /** - * Get background color - * @since S60 v3.2 - * @return The background color - */ - virtual TRgb GetBgColor() = 0; - - /** - * Get button down color - * @since S60 v3.2 - * @return The background color - */ - virtual TRgb GetButtonDownBgColor() = 0; - - /** - * Get border color - * @since S60 v3.2 - * @return The border color - */ - virtual TRgb GetBorderColor() = 0; - - /** - * Get text color - * @since S60 v3.2 - * @return The text color - */ - virtual TRgb GetTextColor() = 0; - - /** - * Get background color for highlight area - * @since S60 v3.2 - * @return The background color for highlight area - */ - virtual TRgb GetHighLightBgColor() = 0; - - /** - * Get high light text color - * @since S60 v3.2 - * @return The high light text color - */ - virtual TRgb GetHighLightTextColor() = 0; - - /** - * Get special text color - * @since S60 v3.2 - * @return The special text color - */ - virtual TRgb GetSpecialTextColor() = 0; - - /** - * Get fixed text - * @since S60 v3.2 - * @return The fixed text - */ - virtual TDesC GetFixedText() = 0; - - /** - * Invalidate some rect and redraw it - * @since S60 v3.2 - * @param aRect The rect which will be redrawn - * @param aUpdateAll Update all or not - * @return None - */ - virtual void Invalidate(const TRect& aRect, TBool aUpdateAll = EFalse) = 0; - - /** - * Get secondary list - * @since S60 v3.2 - * @return The secondary list - */ - virtual const RArray& GetSecondaryList() const = 0; - - /** - * Get the flag of enable or disable multi color - * - * @since S60 v3.2 - * @return ETrue if enable, or EFalse. - */ - virtual TBool IsEnableSecondary() const= 0; - - /** - * Get highlight cell list - * @since S60 v3.2 - * @return The highlight cell list - */ - virtual const RArray& GetHighlightList() const= 0; - - /** - * Report event when candidate is selected - * @since S60 v3.2 - * @param aCandidate The candidate string - * @param aSelectedIndex The index of the selected candidate - * @return None. - */ - virtual void ReportCandidateSelectEventL(const TDesC& aCandidate, const TInt aSelectedIndex)= 0; - - - /** - * Get page manager - * @since S60 v3.2 - * @return page manager - */ - virtual CPages* GetPages() = 0; - - /** - * Get bitmap manager - * @since S60 v3.2 - * @return The bitmap manager - */ - virtual CBitmapDb* GetBitmapDb() = 0; - - /** - * Change active list - * - * @since S60 v3.2 - * @param aList The new active list - * @param aLastIndex The last visible candidate index - * @return None. - */ - virtual void ChangeActiveList(CList* aList, TInt aLastIndex = 0) = 0; - - /** - * Get pen size - * - * @since S60 v3.2 - * @return The pen size. - */ - virtual const TSize GetPenSize() = 0; - - /** - * Set pointer capture - * - * @since S60 v3.2 - * @param aFlag ETrue to capture pointer, otherwise EFalse - * @return None. - */ - virtual void SetCapture(TBool aFlag ) = 0; - - /** - * Get next candidate page - * - * @since S60 v3.2 - * @return None. - */ - virtual void NotifyGetNextPage() = 0; - - /** - * Get previous candidate page - * - * @since S60 v3.2 - * @return None. - */ - virtual void NotifyGetPreviousPage() = 0; - - /** - * Notify close candidate page - * - * @since S60 v3.2 - * @return None. - */ - virtual void NotifyClosePage() = 0; - - /** - * Judge if next candidate existed - * - * @since S60 v3.2 - * @return ETrue if candidate exist, otherwise EFalse - */ - virtual TBool NextCandidateExist() = 0; - - /** - * Auto change active list - * - * @since S60 v3.2 - * @param aLastIndex The last visible candidate index - * @return None. - */ - virtual void AutoChangeActiveList( TInt aLastIndex = 0 ) = 0; - - /** - * Show preview bubble - * - * @since S60 v3.2 - * @param aRect Bubble rect - * @param aText Review bubble text - * @return None. - */ - virtual void DrawBubble(const TRect aRect, const TDesC& aText) = 0; - - /** - * Hide preview bubble - * - * @since S60 v3.2 - * @return None. - */ - virtual void ClearBubble() = 0; - - /** - * Redraw preview bubble - * - * @since S60 v3.2 - * @return None. - */ - virtual void ReDrawBubble() = 0; - }; - -#endif // M_DROP_DOWN_LIST_CONTEXT_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlist.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlist.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,368 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Abstract base class for drop-down list objects -* -*/ - - -#ifndef C_CLIST_H -#define C_CLIST_H - -// INCLUDES -#include -#include -#include -#include - -#include "peninputbitmapdb.h" -#include "peninputcandidate.h" -#include "peninputpages.h" -#include "peninputdropdownlistcontext.h" -#include "peninputlistmanager.h" - -// class forward decalaration -class CFont; - -// Empty rect -#define KEmptyRect TRect(0, 0, 0, 0); - -// Dummy rect, which is used to identify mouse down, but not click in valid area -#define KDummyRect TRect(0, 0, 1, 1); - - -/** - * abstract base list - * - * abstract base list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CList) : public CBase - { - - - -public: //Methods - - /** - * Destructor - * - * @since S60 v3.2 - * @return None. - */ - virtual ~CList(); - - /** - * Draw the list - * - * @since S60 v3.2 - * @return None. - */ - virtual void Draw(); - - /** - * Get rect of the list - * - * @since S60 v3.2 - * @return the rect of the list - */ - virtual const TRect& Rect(); - - /** - * Update the list, including re-calculate the rect of candidates. - * - * @since S60 v3.2 - * @param aRecalculate Re-calculate or not calculate the rect of candidates, the default is re-calculate - * @return None. - */ - virtual void UpdateListL(TBool aDrawFlag = ETrue, TBool aRecalculate = ETrue); - - /** - * Deal with size change, it will be called when the size change - * - * @since S60 v3.2 - * @return None. - */ - virtual void SizeChanged(); - - /** - * Deal with move event, it will be called when the drop down list is moved. - * - * @since S60 v3.2 - * @param aOffsetPoint The offset point - * @return None. - */ - virtual void Move(const TPoint& aOffsetPoint); - - /** - * Set some cell to be high light. - * - * @since S60 v3.2 - * @param aCellIndex The which cell would be set - * @param aHighlight The flag of highlight, set to highlight if ETrue, else cancel highlight - * @return None. - */ - virtual void SetHighlightCell(const TInt aCellIndex, TBool aHighlight, - TBool aForceDraw = ETrue); - - virtual void SetNextPageHighlightCellAfterOnePageL(const TInt aCellIndex); - - /** - * Deal with the pointer down event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDownL(const TPoint& aPoint); - - /** - * Deal with the pointer up event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerUpL(const TPoint& aPoint); - - /** - * Deal with the pointer drag event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDragL(const TPoint& aPoint); - - /** - * Deal with the pointer leave event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerLeave(const TPoint& aPoint); - - /** - * Reset some status of the list. - * - * @since S60 v3.2 - * @return None. - */ - virtual void ResetStatus(); - - virtual TInt StartCandIdxOfLine(TInt aCandIndex); - - - void SetDropdownListImgID(TDropdownListDrawInfo aDropdownListDrawInfo); - -protected: // Methods - - /** - * Constructor. - * - * @since S60 v3.2 - * @param aManager The list manager - * @param aOwner The context of the drop down list - * @return None. - */ - CList(CListManager* aManager,MFepCtrlDropdownListContext *aOwner); - - /** - * 2nd construct function. - * - * @since S60 v3.2 - * @return None. - */ - void ConstructL(); - - /** - * Find candidate according the assigned point. - * - * @since S60 v3.2 - * @aPosition The position assigned - * @aIndex The index of the candidate which has been found - * @return The candidate which has been found, Null if not found. - */ - CCandidate* FindCandidate(const TPoint& aPosition, TInt& aIndex); - - /** - * Calculate the position of current visible candidates. - * - * @since S60 v3.2 - * @return the last candidate visible. - */ - virtual TInt CalculatePositionsL(); - - /** - * Calculate all kinds of rectangles of list. - * - * @since S60 v3.2 - * @return None. - */ - virtual void CalculateAreas(); - - /** - * Draw select cell, which can be candidates or buttons. - * - * @since S60 v3.2 - * @param aRect The rect which will be drawn - * @param aIndicate Indicate the cell is pressed or not - * @return None. - */ - virtual void DrawSelection(const TRect& aRect, TBool aIndicate); - - /** - * Draw candidate when pressed. - * - * @since S60 v3.2 - * @param aRect The rect which will be drawn - * @param aIndicate Indicate the cell is pressed or not - * @return None. - */ - virtual void DrawCandidatePress(const TRect& aRect, TBool aIndicate); - - /** - * Draw navigation button when pressed. - * - * @since S60 v3.2 - * @param aRect The rect which will be drawn - * @param aIndicate Indicate the button is pressed or not - * @return None. - */ - virtual TBool DrawNavigationPress(const TRect& aRect, TBool aIndicate); - - /** - * Draw all visible cells. - * - * @since S60 v3.2 - * @return None. - */ - virtual void DrawCandidates(); - - /** - * Compare rects equal or not. - * - * @since S60 v3.2 - * @param aSrcRect The source rect - * @param aDesRect The destination rect - * @return ETrue If the two rects are equal. - */ - virtual TBool CompareRect(const TRect& aSrcRect, const TRect& aDesRect); - - /** - * Draw highlight cell. - * - * @since S60 v3.2 - * @param aIndicate Indicate the button is pressed or not - * @return None - */ - virtual void DrawHighightCell(const TRect& aSrcRect, const TBool aIndidate); - -protected: // Data - - /** - * The drop down list - * Not own. - */ - MFepCtrlDropdownListContext *iOwner; - - /** - * The list manager - * Not own. - */ - CListManager* iManager; - - /** - * the rectangle of the list - */ - TRect iRect; - - /** - * the content rectangle of the list - */ - TRect iContentRect; - - /** - * the navigation rectangle of the list - */ - TRect iNavigationRect; - - /** - * the next button rectangle of the list - */ - TRect iNavigationNextRect; - - /** - * the previous button rectangle of the list - */ - TRect iNavigationPreviousRect; - - /** - * the close button rectangle of the list - */ - TRect iNavigationCloseRect; - - /** - * the click rectangle of the list - */ - TRect iClickedRect; - - /** - * the move rectangle of cell, when mouse moved - */ - TRect iMoveLatestRect; - - /** - * the candidate index clicked - */ - TInt iClickedCandidateIndex; - - /** - * the flag indicating the button is click or not - */ - TBool iIndicateButtonClicked; - - /** - * the flag indicating the next button is enable or disable - */ - TBool iNextButtonDisable; - - /** - * the flag indicating the close button is enable or disable - */ - TBool iCloseButtonDisable; - - /** - * the flag indicating the previous button is enable or disable - */ - TBool iPreviousButtonDisable; - - /** - * the flag indicating the list is multi rows or one row - */ - TBool iIsMultiRows; - - /** - * the flag indicating the list is multi rows or one row - */ - TBool iPenDownInCandidate; - - TDropdownListDrawInfo iDropdownListDrawInfo; - }; - -#endif // C_CLIST_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistexpandablemultirowwithouticon.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistexpandablemultirowwithouticon.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Multi rows list without icon for drop-down list objects -* -*/ - - -#ifndef C_LISTEXPANDABLEMULTIROWWITHOUTICON_H -#define C_LISTEXPANDABLEMULTIROWWITHOUTICON_H - -/** - * Multi rows list without icon for drop-down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CListExpandableMultiRowWithoutIcon) : public CList - { - -public: // Methods - - /** - * Create a object of CListArabicMultiRowWithoutIcon, static method - * - * @since S60 v3.2 - * @param aManager Pointer to the list manager - * @param iOwner The drop down list - * @return The CListArabicMultiRowWithoutIcon pointer. - */ - static CListExpandableMultiRowWithoutIcon* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CListExpandableMultiRowWithoutIcon(); - -// from base class CList - - /** - * Draw the list - * - * @since S60 v3.2 - */ - virtual void Draw(); - - /** - * Update the list, including re-calculate the rect of candidates. - * - * @since S60 v3.2 - * @param aRecalculate Re-calculate or not calculate - * the rect of candidates, the default is re-calculate - */ - virtual void UpdateListL(TBool aDrawFlag = ETrue, TBool aRecalculate = ETrue); - - /** - * Deal with the pointer up event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerUpL(const TPoint& aPoint); - - /** - * Deal with the pointer drag event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDragL(const TPoint& aPoint); - -protected: // Methods - - /** - * Constructor. - * - * @since S60 v3.2 - * @param aManager The list manager - * @param aOwner The context of the drop down list - */ - CListExpandableMultiRowWithoutIcon( CListManager* aManager, - MFepCtrlDropdownListContext* aOwner); - -private: //Methods - - /** - * Calculate the position of current visible candidates. - * - * @since S60 v3.2 - * @return the last candidate visible. - */ - virtual TInt CalculatePositionsL(); - - /** - * Calculate all kinds of rectangles of list. - * - * @since S60 v3.2 - */ - virtual void CalculateAreas(); - - }; - -#endif // C_LISTEXPANDABLEMULTIROWWITHOUTICON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmanager.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmanager.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,267 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: List manager,which is used by drop down list -* -*/ - - -#ifndef C_LISTMANAGER_H -#define C_LISTMANAGER_H - -#include -#include - -/** class forward decalaration */ -class MFepCtrlDropdownListContext; -class CList; -class CListOneRowWithoutIcon; -class CListOneRowWithoutIconWithBubble; -class CListOneRowWithIcon; -class CListOneRowWithIconWithBubble; -class CListMultiRowWithIcon; -class CListMultiRowWithIconWithBubble; -class CListMultiRowWithoutIcon; -class CListMultiRowRollWithIcon; -class CListOneRowRollWithIcon; -class CListExpandableMultiRowWithoutIcon; -class CListOneRowRollWithIconWithBubble; -class CListMultiRowRollWithIconWithBubble; - -/** - * List manager - * - * List manager used by drop down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CListManager) : public CBase - { - -public: - - /** - * Create a object of CPages, static method - * - * @since S60 v3.2 - * @param aContext The context of the drop down list - * @return CPages pointer. - */ - static CListManager* NewL(MFepCtrlDropdownListContext* aContext); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CListManager(); - - /** - * Get active list - * - * @since S60 v3.2 - * @return active list. - */ - CList* ActiveList() const; - - /** - * Size change - * - * @since S60 v3.2 - * @return None. - */ - void SizeChanged(); - - /** - * Move - * - * @since S60 v3.2 - * @param aOffset The offset of move - * @return None. - */ - void Move(const TPoint& aOffset); - - /** - * Set active list - * - * @since S60 v3.2 - * @param aList The new active list - * @return None. - */ - void SetActiveList(CList* aList); - - /** - * Get the one row list without icon - * @since S60 v3.2 - * @return the one row list without icon - */ - CList* ListOneRowWithoutIcon() const; - - /** - * Get the one row list without icon with bubble - * @since S60 v3.2 - * @return the one row list without icon - */ - CList* ListOneRowWithoutIconWithBubble() const; - - /** - * Get the one row list with icon - * @since S60 v3.2 - * @return the one row list with icon - */ - CList* ListOneRowWithIcon() const; - - /** - * Get the one row list with icon with bubble - * @since S60 v3.2 - * @return the one row list with icon - */ - CList* ListOneRowWithIconWithBubble() const; - - /** - * Get the multi row list with icon - * @since S60 v3.2 - * @return the multi row list with icon - */ - CList* ListMultiRowWithIcon() const; - - /** - * Get the multi row list with icon with bubble - * @since S60 v3.2 - * @return the multi row list with icon - */ - CList* ListMultiRowWithIconWithBubble() const; - - - /** - * Get the multi row list without icon - * @since S60 v3.2 - * @return the multi row list without icon - */ - CList* ListMultiRowWithoutIcon() const; - - CList* ListMultiRowRollWithIcon() const; - - CList* ListOneRowRollWithIcon() const; - CList* ListExpandableMultiRowWithoutIcon() const; - - /** - * Get the multi row roll list with icon with bubble - * @since S60 v3.2 - * @return the multi row list with icon - */ - CList* ListMultiRowRollWithIconWithBubble() const; - - /** - * Get the one row roll list with icon with bubble - * @since S60 v3.2 - * @return the multi row list with icon - */ - CList* ListOneRowRollWithIconWithBubble() const; - - /** - * Reset some data - * @since S60 v4.0 - * @return None. - */ - void ResetStatus(); - -protected: - - /** - * 2nd construct method - * - * @since S60 v3.2 - * @param aContext The context of the drop down list - * @return None - */ - void ConstructL(MFepCtrlDropdownListContext* aContext); - -private: // Data - - /** - * The current active list - * Not own - */ - CList* iActiveList; - - /** - * The one row list without icon - * Own - */ - CListOneRowWithoutIcon* iListOneRowWithoutIcon; - - /** - * The one row list without icon with bubble - * Own - */ - CListOneRowWithoutIconWithBubble* iListOneRowWithoutIconWithBubble; - - /** - * The one row list with icon - * Own - */ - CListOneRowWithIcon* iListOneRowWithIcon; - - /** - * The one row list with icon with bubble - * Own - */ - CListOneRowWithIconWithBubble* iListOneRowWithIconWithBubble; - - /** - * The multi row list with icon - * Own - */ - CListMultiRowWithIcon* iListMultiRowWithIcon; - - /** - * The multi row list with icon with bubble - * Own - */ - CListMultiRowWithIconWithBubble* iListMultiRowWithIconWithBubble; - - /** - * The multi row list without icon - * Own - */ - CListMultiRowWithoutIcon* iListMultiRowWithoutIcon; - - CListMultiRowRollWithIcon* iListMultiRowRollWithIcon; - CListOneRowRollWithIcon* iListOneRowRollWithIcon; - CListExpandableMultiRowWithoutIcon* iListExpandableMultiRowWithoutIcon; - - /** - * The one row roll list with icon with bubble - * Own - */ - CListOneRowRollWithIconWithBubble* iListOneRowRollWithIconWithBubble; - - /** - * The multi row roll list with icon with bubble - * Own - */ - CListMultiRowRollWithIconWithBubble* iListMultiRowRollWithIconWithBubble; - - /** - * The dropdownlist context - * Not Own - */ - MFepCtrlDropdownListContext* iContext; - - }; - -#endif // C_LISTMANAGER_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowrollwithicon.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowrollwithicon.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -#ifndef C_CLISTMULTIROWROLLWITHICON_H -#define C_CLISTMULTIROWROLLWITHICON_H - -#include "peninputlistmultirowwithicon.h" - -// forward declaration -class MFepCtrlDropdownListContext; - -NONSHARABLE_CLASS(CListMultiRowRollWithIcon) : public CListMultiRowWithIcon - { -public: // Methods - - static CListMultiRowRollWithIcon* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - virtual ~CListMultiRowRollWithIcon(); - - // txin - virtual void HandlePointerDownL(const TPoint& aPoint); - // end - - virtual void HandlePointerUpL(const TPoint& aPoint); - - virtual void SetNextPageHighlightCellAfterOnePageL(const TInt aCellIndex); - - virtual void UpdateListL(TBool aDrawFlag = ETrue, TBool aRecalculate = ETrue); - -protected: // Methods - - CListMultiRowRollWithIcon(CListManager* aManager, MFepCtrlDropdownListContext* aOwner); - -protected: - - typedef struct TLineCandidateTag - { - TInt iStartIdx; - TInt iEndIdx; - } TLineCandidate; - - TInt StartCandIdxOfLine(TInt aCandIndex); - - void ResetStatus(); - -private: - - virtual TInt CalculatePositionsL(); - -private: // Data member - - // added by txin - RArray iLines; - // end adding - }; - -#endif // C_CLISTMULTIROWROLLWITHICON_H \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowrollwithiconwithbubble.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowrollwithiconwithbubble.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#ifndef C_CLISTMULTIROWROLLWITHICONWITHBUBBLE_H -#define C_CLISTMULTIROWROLLWITHICONWITHBUBBLE_H - -#include "peninputlistmultirowrollwithicon.h" - -// forward declaration -class MFepCtrlDropdownListContext; - -NONSHARABLE_CLASS(CListMultiRowRollWithIconWithBubble) : public CListMultiRowRollWithIcon - { -public: // Methods - - static CListMultiRowRollWithIconWithBubble* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - virtual ~CListMultiRowRollWithIconWithBubble(); - - virtual void HandlePointerDownL(const TPoint& aPoint); - - virtual void HandlePointerUpL(const TPoint& aPoint); - virtual void HandlePointerDragL(const TPoint& aPoint); - - virtual TBool CompareRect(const TRect& aSrcRect, const TRect& aDesRect); -protected: // Methods - - CListMultiRowRollWithIconWithBubble(CListManager* aManager, MFepCtrlDropdownListContext* aOwner); - - - }; - -#endif // C_CLISTMULTIROWROLLWITHICONWITHBUBBLE_H \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowwithicon.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowwithicon.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,189 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Multi rows list with icon for drop-down list objects -* -*/ - - -#ifndef C_CLISTMULTIROWWITHICON_H -#define C_CLISTMULTIROWWITHICON_H - -// INCLUDES -#include -#include - -#include "peninputlist.h" -#include "peninputcandidate.h" - -// class forward decalaration -class MFepCtrlDropdownListContext; - -/** - * Multi rows list with icon for drop-down list - * - * Multi rows list with icon for drop-down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CListMultiRowWithIcon) : public CList - { - -public: // Methods - - /** - * Create a object of CListMultiRowWithIcon, static method - * - * @since S60 v3.2 - * @param aManager Pointer to the list manager - * @param iOwner The drop down list - * @return The CListMultiRowWithIcon pointer. - */ - static CListMultiRowWithIcon* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CListMultiRowWithIcon(); - -// from base class CList - - /** - * Draw the list - * - * @since S60 v3.2 - */ - virtual void Draw(); - - /** - * Update the list, including re-calculate the rect of candidates. - * - * @since S60 v3.2 - * @param aRecalculate Re-calculate or not calculate the rect of candidates, the default is re-calculate - */ - virtual void UpdateListL(TBool aDrawFlag = ETrue, TBool aRecalculate = ETrue); - - /** - * Deal with the pointer down event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDownL(const TPoint& aPoint); - - /** - * Deal with the pointer up event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerUpL(const TPoint& aPoint); - - /** - * Deal with the pointer drag event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDragL(const TPoint& aPoint); - -protected: // Methods - - /** - * Constructor. - * - * @param aManager The list manager - * @param aOwner The context of the drop down list - * @since S60 v3.2 - */ - CListMultiRowWithIcon(CListManager* aManager, MFepCtrlDropdownListContext* aOwner); - -// from base class CList - - /** - * Draw navigation button when pressed. - * - * @since S60 v3.2 - * @param aRect The rect which will be drawn - * @param aIndicate indicate the button is pressed or not - */ - TBool DrawNavigationPress(const TRect& aRect, TBool aIndicate); - -protected: - - /** - * Calculate the position of current visible candidates. - * - * @since S60 v3.2 - * @return the last candidate visible. - */ - virtual TInt CalculatePositionsL(); - - /** - * Calculate all kinds of rectangles of list. - * - * @since S60 v3.2 - */ - virtual void CalculateAreas(); - - virtual void RefreshListL(TBool aRecalculate); - -protected: - - /** - * the bitmap for close button - * Not own - */ - const CFbsBitmap* iBButtonClose; - - /** - * the mask bitmap for close button - * Not own - */ - const CFbsBitmap* iBButtonMaskClose; - - /** - * the bitmap for next button - * Not own - */ - const CFbsBitmap* iBButtonDown; - - /** - * the mask bitmap for next button - * Not own - */ - const CFbsBitmap* iBButtonMaskDown; - - /** - * the bitmap for up button - * Not own - */ - const CFbsBitmap* iBButtonUp; - - /** - * the mask bitmap for up button - * Not own - */ - const CFbsBitmap* iBButtonMaskUp; - }; - -#endif //C_CLISTMULTIROWWITHICON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowwithiconwithbubble.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowwithiconwithbubble.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef C_CLISTMULTIROWWITHICONWITHBUBBLE_H -#define C_CLISTMULTIROWWITHICONWITHBUBBLE_H - -// INCLUDES -#include -#include - -#include "peninputlist.h" -#include "peninputcandidate.h" -#include "peninputlistmultirowwithicon.h" - -// class forward decalaration -class MFepCtrlDropdownListContext; - -/** - * Multi rows list with icon for drop-down list - * - * Multi rows list with icon for drop-down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CListMultiRowWithIconWithBubble) : public CListMultiRowWithIcon - { - -public: // Methods - - /** - * Create a object of CListMultiRowWithIcon, static method - * - * @since S60 v3.2 - * @param aManager Pointer to the list manager - * @param iOwner The drop down list - * @return The CListMultiRowWithIcon pointer. - */ - static CListMultiRowWithIconWithBubble* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CListMultiRowWithIconWithBubble(); - -// from base class CListMultiRowWithIcon - - /** - * Deal with the pointer down event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDownL(const TPoint& aPoint); - - /** - * Deal with the pointer up event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerUpL(const TPoint& aPoint); - - /** - * Deal with the pointer drag event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDragL(const TPoint& aPoint); - -protected: // Methods - - /** - * Constructor. - * - * @param aManager The list manager - * @param aOwner The context of the drop down list - * @since S60 v3.2 - */ - CListMultiRowWithIconWithBubble(CListManager* aManager, MFepCtrlDropdownListContext* aOwner); - -// from base class CList - - /** - * Compare rects equal or not. - * - * @since S60 v3.2 - * @param aSrcRect The source rect - * @param aDesRect The destination rect - * @return ETrue If the two rects are equal. - */ - virtual TBool CompareRect(const TRect& aSrcRect, const TRect& aDesRect); - -protected: - - - }; - -#endif //C_CLISTMULTIROWWITHICONWITHBUBBLE_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowwithouticon.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistmultirowwithouticon.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Multi rows list without icon for drop-down list objects -* -*/ - - -#ifndef C_LISTMULTIROWWITHOUTICON_H -#define C_LISTMULTIROWWITHOUTICON_H - -/** - * Multi rows list without icon for drop-down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CListMultiRowWithoutIcon) : public CList - { - -public: // Methods - - /** - * Create a object of CListMultiRowWithoutIcon, static method - * - * @since S60 v3.2 - * @param aManager Pointer to the list manager - * @param iOwner The drop down list - * @return The CListMultiRowWithoutIcon pointer. - */ - static CListMultiRowWithoutIcon* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CListMultiRowWithoutIcon(); - -// from base class CList - - /** - * Draw the list - * - * @since S60 v3.2 - */ - virtual void Draw(); - - /** - * Update the list, including re-calculate the rect of candidates. - * - * @since S60 v3.2 - * @param aRecalculate Re-calculate or not calculate - * the rect of candidates, the default is re-calculate - */ - virtual void UpdateListL(TBool aDrawFlag = ETrue, TBool aRecalculate = ETrue); - - /** - * Deal with the pointer up event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerUpL(const TPoint& aPoint); - - /** - * Deal with the pointer drag event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDragL(const TPoint& aPoint); - -protected: // Methods - - /** - * Constructor. - * - * @since S60 v3.2 - * @param aManager The list manager - * @param aOwner The context of the drop down list - */ - CListMultiRowWithoutIcon( CListManager* aManager, - MFepCtrlDropdownListContext* aOwner); - -private: //Methods - - /** - * Calculate the position of current visible candidates. - * - * @since S60 v3.2 - * @return the last candidate visible. - */ - virtual TInt CalculatePositionsL(); - - /** - * Calculate all kinds of rectangles of list. - * - * @since S60 v3.2 - */ - virtual void CalculateAreas(); - - }; - -#endif // C_LISTMULTIROWWITHOUTICON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowrollwithicon.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowrollwithicon.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -#ifndef C_CLISTONEROWROLLWITHICON_H -#define C_CLISTONEROWROLLWITHICON_H - -#include "peninputlistonerowwithicon.h" - -NONSHARABLE_CLASS(CListOneRowRollWithIcon) : public CListOneRowWithIcon - { - -public: // Methods - - static CListOneRowRollWithIcon* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - virtual ~CListOneRowRollWithIcon(); - - // not needed, dim next button same as its base class - // virtual void Draw(); - - virtual void HandlePointerDownL(const TPoint& aPoint); - - virtual void HandlePointerUpL(const TPoint& aPoint); - - virtual void HandlePointerDragL(const TPoint& aPoint); - - virtual void SetHighlightCell(const TInt aCellIndex, TBool aHighlight, - TBool aForceDraw = ETrue); - -protected: // Methods - - CListOneRowRollWithIcon(CListManager* aManager, MFepCtrlDropdownListContext* aOwner); - }; - -#endif // C_CLISTONEROWROLLWITHICON_H \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowrollwithiconwithbubble.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowrollwithiconwithbubble.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#ifndef C_CLISTONEROWROLLWITHICONWITHBUBBLE_H -#define C_CLISTONEROWROLLWITHICONWITHBUBBLE_H - -#include "peninputlistonerowrollwithicon.h" - -NONSHARABLE_CLASS(CListOneRowRollWithIconWithBubble) : public CListOneRowRollWithIcon - { - -public: // Methods - - static CListOneRowRollWithIconWithBubble* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - virtual ~CListOneRowRollWithIconWithBubble(); - - // not needed, dim next button same as its base class - // virtual void Draw(); - - virtual void HandlePointerDownL(const TPoint& aPoint); - - virtual void HandlePointerUpL(const TPoint& aPoint); - - virtual void HandlePointerDragL(const TPoint& aPoint); - - virtual void HandlePointerLeave(const TPoint& aPoint); - virtual TBool CompareRect(const TRect& aSrcRect, const TRect& aDesRect); - -protected: // Methods - - CListOneRowRollWithIconWithBubble(CListManager* aManager, MFepCtrlDropdownListContext* aOwner); - }; - -#endif // C_CLISTONEROWROLLWITHICON_H \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowwithicon.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowwithicon.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,164 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: One rows list with icon for drop-down list objects -* -*/ - - -#ifndef C_CLISTONEROWWITHICON_H -#define C_CLISTONEROWWITHICON_H - -// INCLUDES -#include -#include - -#include "peninputlist.h" -#include "peninputcandidate.h" - -// class forward decalaration -class MFepCtrlDropdownListContext; - -/** - * One rows list without icon for drop-down list - * - * One rows list without icon for drop-down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CListOneRowWithIcon) : public CList - { - -public: // Methods - - /** - * Create a object of CListOneRowWithIcon, static method - * - * @since S60 v3.2 - * @param aManager Pointer to the list manager - * @param iOwner The drop down list - * @return CListOneRowWithIcon pointer. - */ - static CListOneRowWithIcon* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CListOneRowWithIcon(); - -// from base class CList - - /** - * Draw the list - * - * @since S60 v3.2 - */ - virtual void Draw(); - - /** - * Update the list, including re-calculate the rect of candidates. - * - * @since S60 v3.2 - * @param aRecalculate Re-calculate or not calculate the rect of candidates, the default is re-calculate - */ - virtual void UpdateListL(TBool aDrawFlag = ETrue, TBool aRecalculate = ETrue); - - /** - * Deal with the pointer down event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDownL(const TPoint& aPoint); - - /** - * Deal with the pointer up event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerUpL(const TPoint& aPoint); - - /** - * Deal with the pointer drag event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDragL(const TPoint& aPoint); - -protected: // Methods - - /** - * Constructor. - * - * @param aManager The list manager - * @param aOwner The context of the drop down list - * @since S60 v3.2 - */ - CListOneRowWithIcon(CListManager* aManager, MFepCtrlDropdownListContext* aOwner); - -// from base class CList - - /** - * Draw navigation button when pressed. - * - * @since S60 v3.2 - * @param aRect The rect which will be drawn - * @param aIndicate Indicate the button is pressed or not - */ - TBool DrawNavigationPress(const TRect& aRect, TBool aIndicate); - -protected: - - /** - * Calculate the position of current visible candidates. - * - * @since S60 v3.2 - * @return the last candidate visible. - */ - virtual TInt CalculatePositionsL(); - - /** - * Calculate all kinds of rectangles of list. - * - * @since S60 v3.2 - */ - virtual void CalculateAreas(); - -protected: - - /** - * the bitmap for next button - * Not own - */ - const CFbsBitmap* iBButtonDown; - - /** - * the mask bitmap for next button - * Not own - */ - const CFbsBitmap* iBButtonMaskDown; - - }; - -#endif //C_CLISTONEROWWITHICON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowwithiconwithbubble.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowwithiconwithbubble.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,135 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef C_CLISTONEROWWITHICONWITHBUBBLE_H -#define C_CLISTONEROWWITHICONWITHBUBBLE_H - -// INCLUDES -#include -#include - -#include "peninputlist.h" -#include "peninputlistonerowwithicon.h" -#include "peninputcandidate.h" - -// class forward decalaration -class MFepCtrlDropdownListContext; - -/** - * One rows list without icon for drop-down list - * - * One rows list without icon for drop-down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CListOneRowWithIconWithBubble) : public CListOneRowWithIcon - { - -public: // Methods - - /** - * Create a object of CListOneRowWithIcon, static method - * - * @since S60 v3.2 - * @param aManager Pointer to the list manager - * @param iOwner The drop down list - * @return CListOneRowWithIcon pointer. - */ - static CListOneRowWithIconWithBubble* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CListOneRowWithIconWithBubble(); - -// from base class CListOneRowWithIcon - - /** - * Deal with the pointer down event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDownL(const TPoint& aPoint); - - /** - * Deal with the pointer up event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerUpL(const TPoint& aPoint); - - /** - * Deal with the pointer drag event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDragL(const TPoint& aPoint); - - // from base class CList - /** - * Deal with the pointer leave event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerLeave(const TPoint& aPoint); - -protected: // Methods - - /** - * Constructor. - * - * @param aManager The list manager - * @param aOwner The context of the drop down list - * @since S60 v3.2 - */ - CListOneRowWithIconWithBubble(CListManager* aManager, MFepCtrlDropdownListContext* aOwner); - -// from base class CList - - /** - * Compare rects equal or not. - * - * @since S60 v3.2 - * @param aSrcRect The source rect - * @param aDesRect The destination rect - * @return ETrue If the two rects are equal. - */ - virtual TBool CompareRect(const TRect& aSrcRect, const TRect& aDesRect); - -protected: - - -protected: - - - }; - -#endif //C_CLISTONEROWWITHICONWITHBUBBLE_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowwithouticon.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowwithouticon.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,139 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: One rows list with icon for drop-down list objects -* -*/ - - -#ifndef C_CLISTONEROWWITHOUTICON_H -#define C_CLISTONEROWWITHOUTICON_H - -// INCLUDES -#include -#include - -#include "peninputlist.h" -#include "peninputcandidate.h" - -// class forward decalaration -class MFepCtrlDropdownListContext; - -/** - * One rows list with icon for drop-down list - * - * One rows list with icon for drop-down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CListOneRowWithoutIcon) : public CList - { - -public: // Methods - - /** - * Create a object of CListOneRowWithoutIcon, static method - * - * @since S60 v3.2 - * @param iOwner The drop down list - * @return The CListOneRowWithoutIcon pointer. - */ - static CListOneRowWithoutIcon* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CListOneRowWithoutIcon(); - -// from base class CList - - /** - * Draw the list - * - * @since S60 v3.2 - */ - virtual void Draw(); - - /** - * Update the list, including re-calculate the rect of candidates. - * - * @since S60 v3.2 - * @param aRecalculate Re-calculate or not calculate the rect of candidates, the default is re-calculate - */ - virtual void UpdateListL(TBool aDrawFlag = ETrue, TBool aRecalculate = ETrue); - - /** - * Deal with the pointer down event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDownL(const TPoint& aPoint); - - /** - * Deal with the pointer up event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerUpL(const TPoint& aPoint); - - /** - * Deal with the pointer drag event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDragL(const TPoint& aPoint); - - -protected: // Methods - - /** - * Constructor. - * - * @param aManager The list manager - * @param aOwner The context of the drop down list - * @since S60 v3.2 - */ - CListOneRowWithoutIcon(CListManager* aManager, MFepCtrlDropdownListContext* aOwner); - -private: //Methods - - /** - * Calculate the position of current visible candidates. - * - * @since S60 v3.2 - * @return the last candidate visible. - */ - virtual TInt CalculatePositionsL(); - - /** - * Calculate all kinds of rectangles of list. - * - * @since S60 v3.2 - */ - virtual void CalculateAreas(); - - }; - -#endif //C_CLISTONEROWWITHOUTICON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowwithouticonwithbubble.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputlistonerowwithouticonwithbubble.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,132 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef C_CLISTONEROWWITHOUTICONWITHBUBBLE_H -#define C_CLISTONEROWWITHOUTICONWITHBUBBLE_H - -// INCLUDES -#include -#include - -#include "peninputlist.h" -#include "peninputlistonerowwithouticon.h" -#include "peninputcandidate.h" - -// class forward decalaration -class MFepCtrlDropdownListContext; - -/** - * One rows list with icon for drop-down list - * - * One rows list with icon for drop-down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CListOneRowWithoutIconWithBubble) : public CListOneRowWithoutIcon - { - -public: // Methods - - /** - * Create a object of CListOneRowWithoutIcon, static method - * - * @since S60 v3.2 - * @param iOwner The drop down list - * @return The CListOneRowWithoutIcon pointer. - */ - static CListOneRowWithoutIconWithBubble* NewL(CListManager* aManager, - MFepCtrlDropdownListContext* iOwner); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CListOneRowWithoutIconWithBubble(); - -// from base class CList - - /** - * Deal with the pointer down event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDownL(const TPoint& aPoint); - - /** - * Deal with the pointer up event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerUpL(const TPoint& aPoint); - - /** - * Deal with the pointer drag event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerDragL(const TPoint& aPoint); - - - // from base class CList - /** - * Deal with the pointer leave event. - * - * @since S60 v3.2 - * @param aPoint The point of the mouse - * @return None. - */ - virtual void HandlePointerLeave(const TPoint& aPoint); - -protected: // Methods - - /** - * Constructor. - * - * @param aManager The list manager - * @param aOwner The context of the drop down list - * @since S60 v3.2 - */ - CListOneRowWithoutIconWithBubble(CListManager* aManager, MFepCtrlDropdownListContext* aOwner); - -// from base class CList - - /** - * Compare rects equal or not. - * - * @since S60 v3.2 - * @param aSrcRect The source rect - * @param aDesRect The destination rect - * @return ETrue If the two rects are equal. - */ - virtual TBool CompareRect(const TRect& aSrcRect, const TRect& aDesRect); - -private: //Methods - - - }; - -#endif //C_CLISTONEROWWITHOUTICON_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputpages.h --- a/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputpages.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -/* -* Copyright (c) 2200 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Pages manager,which is used by drop down list -* -*/ - - -#ifndef C_PAGES_H -#define C_PAGES_H - -#include -#include - -/** - * Pages manager - * - * Pages manager used by drop down list - * - * @lib FepCtrlDropdownList.lib - * @since S60 v3.2 - */ -NONSHARABLE_CLASS(CPages) : public CBase - { - -public: - - /** - * Create a object of CPages, static method - * - * @since S60 v3.2 - * @return CPages pointer. - */ - static CPages* NewL(); - - /** - * Destructor - * - * @since S60 v3.2 - */ - virtual ~CPages(); - - /** - * Add one page into the page list - * - * @since S60 v3.2 - * @param aFirstIndex The first index of the page - * @param aLastIndex The last index of the page - * @return None. - */ - void AddPage(const TInt aFirstIndex, const TInt aLastIndex); - - /** - * Get previous index according the appointed last index - * - * @since S60 v3.2 - * @param aLastIndex The current last index - * @param aFirstIndexOfPrevious Returned first index of previous page - * @param aLastIndexOfPrevious Returned last index of previous page - * @return The find result, ETrue if success, else EFalse. - */ - TBool GetPreviousIndex(const TInt aLastIndex, - TInt& aFirstIndexOfPrevious, - TInt& aLastIndexOfPrevious) const; - - /** - * Reset the pages, clear all pages - * - * @since S60 v3.2 - * @return None. - */ - void Reset(); - - /** - * Get page count in the list - * - * @since S60 v3.2 - * @return Page count. - */ - TInt PageCount() const; - - /** - * Get page by appointed postion. - * - * @since S60 v3.2 - * @param aPos The appointed postion - * @param aFirstIndex Returned first index of page - * @param aLastIndex Returned last index of page - * @return The find result, ETrue if success, else EFalse. - */ - TBool GetPageIndexByPos(const TInt aPos, - TInt& aFirstIndex, - TInt& aLastIndex) const; - -protected: - - /** - * 2nd construct method - * - * @since S60 v3.2 - * @return None - */ - void ConstructL(); - -private: // Data - - /** - * the list for first indexes - */ - RArray iFirstIndexList; - - /** - * the list for last indexes - */ - RArray iLastIndexList; - - }; - -#endif // C_PAGES_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputgeneralheaders/peninputcommonctrls.hrh --- a/textinput/peninputcommonctrls/inc/peninputgeneralheaders/peninputcommonctrls.hrh Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource headers for project common controls for fep -* -*/ - - -#ifndef AKNFEPCOMMONCTRLS_HRH -#define AKNFEPCOMMONCTRLS_HRH - -enum TButtonType - { - EButtonTypeNormal = 0, - EButtonTypeMultiMode, - EButtonTypePopupMode - }; - -enum TRangeType - { - ERangeTypeNormal = 0, - ERangeTypeMixed - }; - -#endif // AKNFEPCOMMONCTRLS_HRH - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputgeneralheaders/peninputcommonctrls.rh --- a/textinput/peninputcommonctrls/inc/peninputgeneralheaders/peninputcommonctrls.rh Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,318 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource headers for project hwrboxbased -* -*/ - - -#ifndef AKNFEPCOMMONCTRLS_RH -#define AKNFEPCOMMONCTRLS_RH - -// INCLUDES -#include -#include "AknFepGlobalEnums.h" - -// CONSTANT DEFINE -#define DEFAULT_ICON_COLOR_GROUP 29 - -// STRUCTURE DEFINITIONS - -// ----------------------------------------------------------------------------- -// AKN_FEP_INPUTRANGE -// Resource definition for input range -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_INPUTRANGE - { - WORD rangeid=0; - WORD rangetype=0; - WORD ctrlid=0; - WORD ctrltype=0; - LLINK indicator; - // only meaningful when whole range bar action style is ERangeBarUsingIndicatorStyle - // default is hided when actived - WORD actionstyle=0; - // shown by default - WORD hide=0; - // only meaningful when whole range bar action style is ERangeBarUsingIndicatorStyle, - // while every indicator's position is fixed, following value is position index in - // cellrect list - WORD posidx=0; - } - -// ----------------------------------------------------------------------------- -// AKN_FEP_INPUTRANGE_LIST -// Resource definition for input mode list -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_INPUTRANGE_LIST - { - STRUCT ranges[]; - WORD default=0; - } - -// ----------------------------------------------------------------------------- -// AKN_FEP_BUTTON_IMAGE -// Resource definition for button -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_BUTTON_IMAGE - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - WORD colorgroup=DEFAULT_ICON_COLOR_GROUP; - - WORD nactive=0xffff; - WORD nactivemsk=0xffff; - WORD nactiveskinid=0xffff; - - WORD nactivep=0xffff; - WORD nactivepmsk=0xffff; - WORD nactivepskinid=0xffff; - - WORD active=0xffff; - WORD activemsk=0xffff; - WORD activeskinid=0xffff; - - WORD activep=0xffff; - WORD activepmsk=0xffff; - WORD activepskinid=0xffff; - - WORD disable=0xffff; - WORD disablemsk=0xffff; - WORD disableskinid=0xffff; - - WORD moveindicator=0xffff; - WORD moveindicatormsk=0xffff; - WORD moveindicatorskinid=0xffff; - } - -// ----------------------------------------------------------------------------- -// AKN_FEP_COMMON_BUTTON_IMAGE -// Resource definition for button -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_COMMON_BUTTON_IMAGE - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - WORD colorgroup=DEFAULT_ICON_COLOR_GROUP; - - WORD forground=0xffff; - WORD forgroundmsk=0xffff; - WORD forgroundskinid=0xffff; - } - -// ----------------------------------------------------------------------------- -// AKN_FEP_RAWKEY_BUTTON -// Resource definition of raw key buttons which can be used to simulate itut keys -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_RAWKEY_BUTTON - { - WORD scancode = 0xffff; - LLINK buttonimage; // link to AKN_FEP_BUTTON_IMAGE - } - -// ----------------------------------------------------------------------------- -// AKN_FEP_MULTIPLE_MODE_BUTTON -// Resource definition of image list for buttons which can have multiple images -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_MULTIPLE_MODE_BUTTON - { - LONG colormajorskinid=0xffff; - WORD textcolorgrp=0xffff; - WORD textcoloridx=0xffff; - WORD shadowtextcoloridx=0xffff; - STRUCT modes[]; - WORD defaultmode = 0; - } - -// ----------------------------------------------------------------------------- -// AKN_FEP_MULTI_IMAGE_BUTTON_IMAGE -// Resource definition for button -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_MULTI_IMAGE_BUTTON_IMAGE - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - WORD colorgroup=DEFAULT_ICON_COLOR_GROUP; - - WORD forground1=0xffff; - WORD forground1msk=0xffff; - WORD forground1skinid=0xffff; - - WORD forground2=0xffff; - WORD forground2msk=0xffff; - WORD forground2skinid=0xffff; - } - -STRUCT AKN_FEP_BUTTON_MODE - { - LLINK modeimage; - LTEXT modestring=""; - WORD rangeid=0xffff; - WORD modeid=0xffff; - } - -// ----------------------------------------------------------------------------- -// AKN_FEP_SELECTION_LIST_IMAGE -// Resource definition of selection list -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_SELECTION_LIST_IMAGE - { - LTEXT bmpfile=""; - LONG imgmajorskinid = 0xffff; - - WORD normalbmp = 0xffff; - WORD normalmsk = 0xffff; - WORD normalskinid = 0xffff; - - WORD highlightbmp = 0xffff; - WORD highlightmsk = 0xffff; - WORD highlightskinid = 0xffff; - } - -// ----------------------------------------------------------------------------- -// AKN_FEP_INPUTMODE_NAME -// Resource definition of inputmode name -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_INPUTMODE_NAME - { - LONG modeid= EPluginInputModeNone; - LTEXT txt = ""; - } - -// ----------------------------------------------------------------------------- -// AKN_FEP_INPUTMODE_NAME_ARRAY -// Resource definition of inputmode name ARRAY -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_INPUTMODE_NAMEARRAY - { - STRUCT names[]; - } - -STRUCT AKN_FEP_NONIRREGULAR_VKB_BITMAP - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - - WORD normal=0xffff; - WORD normalmsk=0xffff; - WORD normalskinid=0xffff; - - WORD highlight=0xffff; - WORD highlightmsk=0xffff; - WORD highlightskinid=0xffff; - - WORD dimmed=0xffff; - WORD dimmedmsk=0xffff; - WORD dimmedskinid=0xffff; - } - -STRUCT AKN_FEP_IRREGULAR_VKB_BITMAP - { - LTEXT bmpfile=""; - - WORD leftdownnormal=0xffff; - WORD leftdownnormalmask=0xffff; - WORD leftdownnormalskinid=0xffff; - WORD leftdownpressed=0xffff; - WORD leftdownpressedmask=0xffff; - WORD leftdownpressedkinid=0xffff; - WORD leftdowndimmed=0xffff; - WORD leftdowndimmedmask=0xffff; - WORD leftdowndimmedskinid=0xffff; - - WORD middleupnormal=0xffff; - WORD middleupnormalmask=0xffff; - WORD middleupnormalskinid=0xffff; - WORD middleuppressed=0xffff; - WORD middleuppressedmask=0xffff; - WORD middleuppressedkinid=0xffff; - WORD middleupdimmed=0xffff; - WORD middleupdimmedmask=0xffff; - WORD middleupdimmedskinid=0xffff; - - WORD middledownnormal=0xffff; - WORD middledownnormalmask=0xffff; - WORD middledownnormalskinid=0xffff; - WORD middledownpressed=0xffff; - WORD middledownpressedmask=0xffff; - WORD middledownpressedkinid=0xffff; - WORD middledowndimmed=0xffff; - WORD middledowndimmedmask=0xffff; - WORD middledowndimmedskinid=0xffff; - - WORD rightdownnormal=0xffff; - WORD rightdownnormalmask=0xffff; - WORD rightdownnormalskinid=0xffff; - WORD rightdownpressed=0xffff; - WORD rightdownpressedmask=0xffff; - WORD rightdownpressedskinid=0xffff; - WORD rightdowndimmed=0xffff; - WORD rightdowndimmedmask=0xffff; - WORD rightdowndimmedskinid=0xffff; - - WORD rightupnormal=0xffff; - WORD rightupnormalmask=0xffff; - WORD rightupnormalskinid=0xffff; - WORD rightuppressed=0xffff; - WORD rightuppressedmask=0xffff; - WORD rightuppressedskinid=0xffff; - WORD rightupwndimmed=0xffff; - WORD rightupwndimmedmask=0xffff; - WORD rightupwndimmedskinid=0xffff; - } - -// ----------------------------------------------------------------------------- -// AKN_FEP_SCROLLABLE_LIST_IMAGE -// Resource definition for button -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_SCROLLABLE_LIST_IMAGE - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - - LLINK pageup; - LLINK pagedown; - WORD listsep=0xffff; - WORD listsepmsk=0xffff; - WORD listspeskinid=0xffff; - } - -// ----------------------------------------------------------------------------- -// AKN_FEP_COLOR_ICON_IMAGE -// Resource definition for color icon -// ----------------------------------------------------------------------------- -// -STRUCT AKN_FEP_COLOR_ICON_IMAGE - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - WORD colorgroup=DEFAULT_ICON_COLOR_GROUP; - - WORD iconimage=0xffff; - WORD iconimagemsk=0xffff; - WORD iconimageskinid=0xffff; - } -#endif // AKNFEPCOMMONCTRLS_RH - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputlabel/peninputlabel.h --- a/textinput/peninputcommonctrls/inc/peninputlabel/peninputlabel.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -/* -* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of button and dragbar -* -*/ - -#ifndef C_CAKNFEPCTRLLABEL_H -#define C_CAKNFEPCTRLLABEL_H - -#include -/** - * CAknFepCtrlLabel - * - * Label control. This class could be used directly by user. - * - * @lib peninputlayoutcontrol.lib - * @since S60 V5.0 - */ -class CAknFepCtrlLabel: public CFepUiBaseCtrl - { - -public: - //constructor and destructor - /** - * Destructor. - * - * @since S60 V4.0 - */ - IMPORT_C virtual ~CAknFepCtrlLabel(); - - /** - * Factory function. - * - * @since S60 V4.0 - * @param aRect The rectangle area for this control - * @param aUiLayout Ui layout who contains this control.Ownership not transferred - * @param aControlId control Id - * @return An instance of CButtonBase class - */ - IMPORT_C static CAknFepCtrlLabel* NewL(CFepUiLayout* aUiLayout,TInt aControlId); - - /** - * Set bitmap for given status . - * - * @since S60 V4.0 - * @param aBmp The bitmap. Ownership transferred to button - * @param aType The bitmap type used for - */ - IMPORT_C void SetBitmapL(CFbsBitmap* aBmp); - - /** - * Set mask bitmap for given status. - * - * @since S60 V4.0 - * @param aBmp The bitmap. Ownership transferred to button - * @param aType The bitmap type used for - */ - IMPORT_C void SetMaskBitmapL(CFbsBitmap* aBmp); - - //from base class CFepUiBaseCtrl - /** - * From CFepUiBaseCtrl - * Draw control - * - * @since S60 V4.0 - */ - IMPORT_C virtual void Draw(); - - /* Set the font for caption - * - * @since S60 V4.0 - * @param aFontSpec the font spec to be used. - */ - IMPORT_C virtual void SetFont(const TFontSpec& aFontSpec); - - /** - * Set font information - * - * @since S60 V4.0 - * @param aFont The font info for key drawing.Ownership not transferred - */ - IMPORT_C virtual void SetFont(const CFont* aFont); - - /** - * Set font text color - * - * @since S60 V4.0 - * @param aColor Color for font text - */ - IMPORT_C virtual void SetFontColor(const TRgb aColor); - - - /** - * Set text to label - * - * @since S60 v3.2 - * @param aText Display text in lable - * @return None - */ - IMPORT_C void SetText(const TDesC& aText); - - /** - * Label size changed - * - * @since S60 v3.2 - * @param aNewRect New rect for label - * @param aIsReloadImages resize image - * @return None - */ - IMPORT_C virtual void SizeChanged(TRect aNewRect, TBool aIsReloadImages); - - /** - * Set aligment - * - * @since S60 v3.2 - * @param aAlignment Text alignment - * @return None - */ - IMPORT_C virtual void SetTextAlignment(CGraphicsContext::TTextAlign aAlignment); - - /** - * Get aligment - * - * @since S60 v3.2 - * @return Text alignment - */ - IMPORT_C virtual CGraphicsContext::TTextAlign TextAlignment(); - -protected: - - /** - * Constructor - * - * @since S60 V4.0 - * @param aRect The rectangle area for this control - * @param aUiLayout Ui layout who contains this control.Ownership not transferred - * @param aControlId control Id - */ - CAknFepCtrlLabel(CFepUiLayout* aUiLayout,TInt aControlId); - - /** - * Bitmaps size changed - * - * @since S60 v3.2 - * @param aSize New size for bitmaps - * @return None - */ - void ResizeBitmaps(TSize aSize); - -private: - - /** - * bitmap for dimmed state - * Own. - */ - CFbsBitmap* iBmp; - - /** - * mask bitmap for dim stute - * Own. - */ - CFbsBitmap* iMaskBmp; - - /** - * lable caption - */ - HBufC* iText; - - /** - * Font object for key drawing - * Ownership depends on flag iFontOwnership. - */ - CFont* iFont; - - /** - * Font information for key drawing - */ - TFontSpec iFontSpec; - - /** - * Flag ownership flag. ETrue if CFont object is owned by this control. - */ - TBool iFontOwnership; - - /** - * Baseline for caption - */ - TInt iBaseline; - - /** - * Pen color for first level caption - */ - TRgb iFontColor; - - /** - * Text alignment - */ - CGraphicsContext::TTextAlign iAlignment; - - }; - -#endif // C_CAKNFEPCTRLLABEL_H \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputrangebar/peninputrangebar.h --- a/textinput/peninputcommonctrls/inc/peninputrangebar/peninputrangebar.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,616 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Control group of different input ranges -* -*/ - - -#ifndef C_CAKNFEPCTRLRANGEBAR_H -#define C_CAKNFEPCTRLRANGEBAR_H - -// system includes -#include - -// forward declarations -class CFbsBitmap; -class TResourceReader; -class CAknFepCtrlButton; -class CAknFepCtrlCommonButton; -// class declaration -/** - * This is the class definition for control group of different - * input ranges - * - * @lib fepcommonctrls.lib - * @since S60 v3.2 - */ -class CAknFepCtrlRangeBar : public CControlGroup , public MEventObserver - { -public: - - /** - * Style of range bar, can be horizontal or vertical - */ - enum TButtonGroupStyle - { - EBtnGroupHorizontal, - EBtnGroupVertical - }; - - /** - * Action style of range bar, can be hide or highlight - */ - enum TRangeBarActionStyle - { - ERangeBarActionStyleHide, // all indicators action style are unitary: hide - ERangeBarActionStyleHighLight, // all indicators action style are unitary: highlight - ERangeBarUsingIndicatorStyle // every indicator can have different action style - }; - - /** - * Action style of indicator, can be hide or visible - * for using indicaotr action style, every indicator's position is fixed - */ - enum TIndicatorActionStyle - { - EIndicatorActionStyleHide, // hide - EIndicatorActionStyleHighLight, // visible and highlight - EIndicatorActionStyleNormal // just like normal button press, highlight not latched - }; - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aUtils An instance of the resource environment - * @param aControlId The control id of the Range Bar - * @param aStyle The style of Range Bar, can be vertical or horizontal - * @return The pointer point to CAknFepCtrlRangeBar type object - */ - IMPORT_C static CAknFepCtrlRangeBar* NewL(CFepUiLayout* aUiLayout, - TInt aControlId , - TButtonGroupStyle aStyle); - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aUtils An instance of the resource environment - * @param aControlId A control id of the Range Bar - * @param aStyle the style of Range Bar, can be vertical or horizontal - * @return The pointer point to CAknFepCtrlRangeBar type object - */ - IMPORT_C static CAknFepCtrlRangeBar* NewLC(CFepUiLayout* aUiLayout, - TInt aControlId , - TButtonGroupStyle aStyle); - - /** - * Destructor. - * - * @since S60 v3.2 - */ - IMPORT_C virtual ~CAknFepCtrlRangeBar(); - - /** - * This function creates the Range Bar from resource type AKN_FEP_INPUTRANGE_LIST. - * The function will leave if the count of input ranges is invalid - * - * @since S60 v3.2 - * @param aReader A resource reader against AKN_FEP_INPUTMODE_LIST - * @return None - */ - IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); - - /** - * Refresh the curent Mode Control aera - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void RefreshUI(); - - /** - * Handles the SizeChanged event - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void SizeChanged(const TRect aRect); - - /** - * Set active input range - * - * @since S60 v3.2 - * @param aRange A specified input range - * @return ETrue if given input range set successfully, EFalse otherwise - */ - IMPORT_C TBool SetRange(const TInt aRange); - - /** - * Set mode of given range - * - * @since S60 v3.2 - * @param aRange A specified input range - * @param aModeIndex The mode index in given range - * @return None - */ - IMPORT_C void SetCaseL(const TInt aRange, const TInt aModeIndex); - - /** - * Set permitted input ranges - * - * @since S60 v3.2 - * @param aPermitted Used to decide which input ranges permitted - * @return None - */ - IMPORT_C void SetPermittedRanges(const TInt aPermitted); - - /** - * Permit given range or not - * - * @since S60 v3.2 - * @param aRangeId The range id of given range - * @param aPermit Used to enable given range or not - * @return None - */ - IMPORT_C void SetPermittedRange(const TInt aRangeId, TBool aPermit); - - /** - * Permit given range & case or not - * - * @since S60 v3.2 - * @param aRangeId The range id of given range - * @param aRealCaseId The real case id in given range - * @param aPermit Used to enable given range & case or not - * @return None - */ - IMPORT_C void SetPermittedCase(const TInt aRangeId, - const TInt aRealCaseId, - TBool aPermit); - - /** - * Hide given range, used when whole rangebar's actions tyle is - * hide or highlight - * - * @since S60 v3.2 - * @param aRange Given input range to be hide - * @return KErrNone if the button represent given range hided successfully, - * otherwise system wide error codes - */ - IMPORT_C void HideRange(const TInt aRange); - - /** - * Hide given range, function only used when whole range bar's action - * style is using indicator style - * - * @since S60 v3.2 - * @param aRange Given input range to be hide - * @return None - */ - IMPORT_C void HideRangeUsingIndicatorStyle(const TInt aRange); - - /** - * Show given range, used when whole rangebar's action style is - * hide or highlight - * - * @since S60 v3.2 - * @param aRange Given range to be shown - * @return None - */ - IMPORT_C void ShowRange(const TInt aRange); - - /** - * Show given range, function only used when whole range bar's action - * style is using indicator style - * - * @since S60 v3.2 - * @param aRange Given range to be shown - * @return None - */ - IMPORT_C void ShowRangeUsingIndicatorStyle(const TInt aRange); - - /** - * Add new input range - * - * @since S60 v3.2 - * @param aReader Given resource reader for new input range - * @return None - */ - IMPORT_C void AddRangeL(TResourceReader& aReader); - - /** - * Get current real case of given Range - * - * @since S60 v3.2 - * @param aRange Given range - * @return Current real case of given range - */ - IMPORT_C TInt GetCase(TInt aRange) const; - - /** - * Set font of range bar, this function should be called - * by container of range bar - * - * @since S60 v3.2 - * @param aFont The font to be set for range bar - * @return None - */ - IMPORT_C void SetFont(const CFont* aFont); - - /** - * Move range bar according to offset - * - * @since S60 v3.2 - * @param aOffset The moving offset - * @return None - */ - IMPORT_C void Move(const TPoint& aOffset); - - /** - * Set event id which will be sent out when range button is click - * - * @since S60 v3.2 - * @param aEventId the event id - * @return None - */ - IMPORT_C void SetEventIdForRange(TInt aEventId); - - /** - * Set event id which will be sent out when case button is click - * - * @since S60 v3.2 - * @param aEventId the event id - * @return None - */ - IMPORT_C void SetEventIdForCase(TInt aEventId); - - /** - * Display all ranges whether it is IsHide - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ShowAllRanges(); - - /** - * DrawRangeBar - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Draw(); - - /** - * SetActionStyle - * - * @since S60 v3.2 - * @param aActionStyle action style - * @return None - */ - IMPORT_C void SetActionStyle(TRangeBarActionStyle aActionStyle); - - /** - * ActiveRange - * - * @since S60 v3.2 - * @param aRange range to be activated - * @return None - */ - IMPORT_C void ActiveRange(TInt aRange); - - /** - * Get the current input range - * - * @since S60 v3.2 - * @return Current Input Range - */ - inline TInt InputRange() const; - - /** - * Set display style of range bar - * - * @since S60 v3.2 - * @param aNewStyle The style of range bar, can be vertical or horizontal - * @return None - */ - inline void SetStyle(const TButtonGroupStyle aNewStyle); - - /** - * Get display style of range bar - * - * @since S60 v3.2 - * @return Current display style of range bar - */ - inline TInt Style() const; - - /** - * Set layout rect of range bar, this function should be called - * by container of range bar - * - * @since S60 v3.2 - * @param aRect The layout rect to be set for range bar - * @return None - */ - inline void SetCellRect(const TRect aRect); - - /** - * Set display cell rects - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void SetDispalyCellRectsL( const RArray& aRects, - const RArray& aInnerRects ); - - -protected: - - /** - * From MEventObserver. - * Handle event - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aCtrl The pointer points to control who sends event - * @param aEventData The event data - * @return None - */ - IMPORT_C void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData); - - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of the Range Bar - * @param aStyle The style of Range Bar, vertical or horizontal - */ - IMPORT_C CAknFepCtrlRangeBar(CFepUiLayout* aUiLayout, TInt aControlId, - TButtonGroupStyle aStyle); - - /** - * By default Symbian 2nd phase constructor is private. - * - * @since S60 v3.2 - * @param aUtils An instance of the resource environment - * @return None - */ - IMPORT_C void ConstructL(); - - /** - * handle pointer down event. - * - * @since S60 v3.2 - * @param aPoint - * @return control - */ - virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); -public: // data - - /** - * Position of the default indicator - */ - TRect iIndicatorRect; - -protected: // data - - /** - * This class declares the range indicator - * Purpose of this class is to save some information for each indicator - * - * @since S60 v3.2 - */ - class TAknFepRangeIndicator - { - public: // data - /** - * Control type of button - */ - TInt iCtrlType; - - /** - * Id of the input range - */ - TInt iInputRange; - - /** - * Type of input range, used to judge if it is mixed - */ - TInt iRangeType; - - /** - * control Id of button - */ - TInt iCtrlId; - - /** - * Is button that represent iInputRange hided - */ - TBool iIsHide; - - /** - * Pointer to the indicator button (Own) - */ - CAknFepCtrlCommonButton* iIndicator; - - /** - * Indicator action style, - * value from TIndicatorActionStyle - */ - TInt iActionStyle; - - /** - * Indicator position index in cellrects list - * only meaningful when whole action style is - * ERangeBarUsingIndicatorStyle - */ - TInt iPosIdx; - }; - -private: - - /** - * Set layout rect of whole range bar - * - * @since S60 v3.2 - * @return None - */ - void SetWholeRect(); - - /** - * Get number of input ranges hided - * - * @since S60 v3.2 - * @return Number of hided input ranges - */ - TInt NumOfHidedRange(); - - /** - * Judge if button in given index has mixed range - * - * @since S60 v3.2 - * @param aIndex Given index - * @return ETrue if given index has mixed range, otherwise EFalse - */ - TBool IsMixedRange(const TInt aIndex); - - /** - * Report range or mode change event to observer - * - * @since S60 v3.2 - * @param aEventId the event id - * @param aEventData the event data - * @return None - */ - void ReportEventToObserver(const TInt aEventId, const TInt aEventData); - - /** - * Set new position to sub controls - * - * @since S60 v3.2 - * @return None - */ - void SetIndicatorRect(); - - /** - * update new position to sub controls - * this function used when indicator's rect get from cell rects list - * and whole range bar's action style is highlight or hide - * - * @since S60 v3.2 - * @return None - */ - void UpdateIndicatorRect( TBool aUpdateImage ); - - /** - * update new position to sub controls - * this function only used when indicator's rect get from cell rects list, - * and whole range bar's action style is using indicator style, every - * indicator's position is fixed - * - * @since S60 v3.2 - * @return None - */ - void UpdateIndicatorRectForUsingIndicatorStyle(TBool aUpdateImage); - - /** - * Get indicator index by given range - * - * @since S60 v3.2 - * @return Indicator index - */ - TInt IndicatorIdxByRange(TInt aRange); - - /** - * this function only used when indicator's rect get from cell rects list, - * and whole range bar's action style is using indicator style, and indicator - * to be hiden is using hide action style - * - * @since S60 v3.2 - * @param aIdx Indicator index to be hiden - * @param aHide Whether hide or show indicator - * @return None - */ - void HideRangeForHidingIndicatorStyle(TInt aIdx, TBool aHide); - -private: // data - - /** - * Array of input range indicators - */ - RPointerArray iIndicators; - - /** - * Current active input range - */ - TInt iInputRange; - - /** - * A rect used to erase the screen - */ - TRect iEraseRect; - - /** - * Style of range bar - */ - TButtonGroupStyle iStyle; - - /** - * Current font of range bar - */ - const CFont* iFont; - - /** - * event id for range button click - */ - TInt iEventIdForRange; - - /** - * event id for case button click - */ - TInt iEventIdForCase; - - /** - * Whether resize images as well, - * if only the position of the button changed, - * no need to reset the images as well - */ - TBool iIsReloadImages; - - /** - * action style - */ - TRangeBarActionStyle iActionStyle; - - /** - * First time construct flag - */ - TBool iFirstTimeConstruct; - - /** - * Rangebar cell rect - */ - RArray iCellRects; - RArray iCellInnerRects; - TBool iCellChanged; - }; - -#include "peninputrangebar.inl" - -#endif // C_CAKNFEPCTRLRANGEBAR_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputrangebar/peninputrangebar.inl --- a/textinput/peninputcommonctrls/inc/peninputrangebar/peninputrangebar.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: inline file of range bar -* -*/ - - -inline TInt CAknFepCtrlRangeBar::InputRange() const - { - return iInputRange; - } - -inline void CAknFepCtrlRangeBar::SetStyle(const TButtonGroupStyle aNewStyle) - { - iStyle = aNewStyle; - } - -inline TInt CAknFepCtrlRangeBar::Style() const - { - return iStyle; - } - -inline void CAknFepCtrlRangeBar::SetCellRect(const TRect aRect) - { - iIndicatorRect = aRect; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputselectionlist/peninputcommonchoicelist.h --- a/textinput/peninputcommonctrls/inc/peninputselectionlist/peninputcommonchoicelist.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,190 +0,0 @@ -/* -* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of choice list window -* -*/ - -#ifndef C_PENINPUTCOMMONCHOICELIST_H -#define C_PENINPUTCOMMONCHOICELIST_H - -// INCLUDES -#include -#include -#include -#include - -/** class forward decalaration */ -class CFepUiLayout; - -enum ECommonChoiceListStyle - { - EFixedLength, - EAutoFitLength - }; - -/** - * CPeninputCommonChoiceList class - * - * This class for touch input common choice list. The prop. of - * this control is depend on laf data. - * - * @lib - * @since S60 v5.0 - */ -class CPeninputCommonChoiceList : public CFepLayoutChoiceList - { -public: - - /** - * Symbian Constructor - * - * @since S60 v5.0 - * @param aUiLayout Pointer to uilayout - * @param aControlId Choice list id - * @param aItemSkinID Item skin id - * @param aBackgroundSkinID Background skin id - * @return Pointer to created CPeninputCommonChoiceList object - */ - IMPORT_C static CPeninputCommonChoiceList* NewL( CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aItemSkinID, - TAknsItemID aBackgroundSkinID, - ECommonChoiceListStyle aListStyle = EAutoFitLength); - - /** - * Destructor - * - * @since S60 v5.0 - * @return None - */ - IMPORT_C virtual ~CPeninputCommonChoiceList(); - - /** - * Add rect of item to the end of list - * - * @param aRect The rect of the item - * @since S60 v5.0 - * @return None - */ - IMPORT_C void AddItemRectL( const TRect& aRect ); - - /** - * Remove all the rects of item - * - * @since S60 v5.0 - * @return None - */ - IMPORT_C void RemoveAllItemsRect(); - - /** - * Set text layout data - * - * @param aTextLayout Text layout from laf data - * @since S60 v5.0 - * @return None - */ - IMPORT_C void SetTextLayout( const TAknTextLineLayout& aTextLayout ); - - /** - * Set list column count. The maxium column of the control is based on the laf - * Any number exceeds the maxium will be ignored. - * - * @param aMaxCount - * @since S60 v5.0 - * @return None - */ - IMPORT_C void SetListColumnNumWithLafL( TInt aMaxCount); - - /** - * Set skin ID - * - * @param aItemSkinID item skin ID - * @param aBackgroundSkinID background skin ID - * @since S60 v5.0 - * @return None - */ - IMPORT_C void SetListSkinID( TAknsItemID aItemSkinID, TAknsItemID aBackgroundSkinID ); - /** - * Hit Test - * - * @param aPoint touched point - * @return Index of list. - */ - IMPORT_C TInt HitTest(const TPoint& aPoint); -protected: - /** - * Constructor. - * - * @since S60 V4.0 - * @param aUiLayout Ui layout who contains this control.Ownership not transferred - * @param aControlId control Id - * @param aItemSkinID Item skin id - * @param aBackgroundSkinID Background skin id - */ - IMPORT_C CPeninputCommonChoiceList( CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aItemSkinID, - TAknsItemID aBackgroundSkinID, - ECommonChoiceListStyle aListStyle ); - - TInt MaxWidthOfListItem(); -private: - /** - * Choice list draw function - * - * @since S60 V4.0 - * @return None. - */ - IMPORT_C virtual void Draw(); - - /** - * Calculate rect based on item count. (only length, suppose the count is fixed) - * - * @since S60 V4.0 - * @return None. - */ - IMPORT_C virtual void ReCalcLayout(); - - void DrawBackground(); - void DrawItem( TInt aIndex, TBool aIsFocus ); -private: // data - /** - * Item rect array. - */ - RArray iItemRects; - - /** - * Item text layout - */ - TAknTextLineLayout iTextLayout; - - /** - * The skin ID of sub item and background - */ - TAknsItemID iItemSkinID; - TAknsItemID iBackgroundSkinID; - - /** - * The style of the list - */ - ECommonChoiceListStyle iListStyle; - - /** - * The last column number of the list - */ - TInt iLastColumnNum; - }; - -#endif //C_PENINPUTCOMMONCHOICELIST_H -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputselectionlist/peninputlayoutinputmodechoice.h --- a/textinput/peninputcommonctrls/inc/peninputselectionlist/peninputlayoutinputmodechoice.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,247 +0,0 @@ -/* -* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of choice list window -* -*/ - -#ifndef C_FEPLAYOUTINPUTMODELCHOICE_H -#define C_FEPLAYOUTINPUTMODELCHOICE_H - -// INCLUDES -#include -#include -#include -#include - -/** class forward decalaration */ -class CFepUiLayout; -class CRepository; - -//CONSTANT -const TInt KTouchInputModeCount = 4; - -/** - * CPeninputLayoutInputmodelChoice class - * - * This class for touch input mode switch - * - * @lib peninputmodeswitchutils - * @since S60 v5.0 - */ -class CPeninputLayoutInputmodelChoice : public CPeninputCommonChoiceList - { - -public: - - /** - * Symbian Constructor - * - * @since S60 v5.0 - * @param aUiLayout Pointer to uilayout - * @param aControlId Choice list id - * @param aInputMode Pen input mode - * @return Pointer to created CPeninputLayoutInputmodelChoice object - */ - IMPORT_C static CPeninputLayoutInputmodelChoice* NewL(CFepUiLayout* aUiLayout, TInt aControlId, - TPluginInputMode aInputMode); - - /** - * Destructor - * - * @since S60 v5.0 - * @return None - */ - IMPORT_C virtual ~CPeninputLayoutInputmodelChoice(); - - - /** - * Pop up touch input switch list - * - * @since S60 v5.0 - * @param aPoint Reference to pop up windows left and top point - * @param aListUnderBtn list is under the button - * @return none - */ - IMPORT_C void PopUpSwitchListL( const TRect& aRtControl ); - - /** - * Set current editor is Secret - * - * @since S60 V4.0 - * @param aLanguage Input language - * @return none - */ - IMPORT_C void SetSecretEditor(TBool aSecure); - - /** - * Get switch list rect - * - * @since S60 v5.0 - * @return list rect - */ - IMPORT_C TRect SwitchListRect(); - -private: - - /** - * Symbian second-phase constructor - * - * @since S60 v5.0 - * @return None - */ - void CustomConstructL(); - - /** - * Initialize internal control - * - * @since S60 v5.0 - * @return none - */ - void DoInitializeControlL(); - - /** - * C++ constructor. - * - * @since S60 v5.0 - * @param aUiLayout Pointer to uilayout - * @param aInputMode Pen input mode - * @return None - */ - CPeninputLayoutInputmodelChoice(CFepUiLayout* aUiLayout, TInt aControlId, - TPluginInputMode aInputMode); - - /** - * Insert choice item to input mode switch list - * - * @since S60 v5.0 - * @param aReader Reference to resource reader - * @param aRsFile Reference to file resource - * @return None - */ - void CreateChoiceItemL( TResourceReader &aReader, RResourceFile& aRsFile ); - - /** - * Create choice item icon - * - * @since S60 v5.0 - * @param aReader Reference to resource reader - * @param aBmpFileName Reference to file name - * @param aMajorSkinId Major skin id - * @return ETrue for creating icon successfully; otherwise EFalse - */ - TBool CreateItemIconL(TResourceReader &aReader, CFbsBitmap** aImg, TPtrC& aBmpFileName, - TInt32 aMajorSkinId); - - /** - * Get main pane rect - * - * @since S60 v5.0 - * @return Main pane rect - */ - TRect MainPaneRect(); - - /** - * nsert list item - * - * @since S60 v5.0 - * @param aIndex Item array index - * @param aInputMode Pen input mode - * @return none - */ - void InsertListItemL( const CFepLayoutChoiceList::SItem& item,TInt aInputMode ); - - /** - * Application size Changed - * - * @since S60 v5.0 - * @return none - */ - void SizeChanged(); - - - /** - * Get hide flag - * - * @since S60 V4.0 - * @return ETrue if control is hiden, otherwise EFalse - */ - TBool Hiden(); - - /** - * Reset choice list item - * - * @since S60 v5.0 - * @return none - */ - void ResetListItemL(); -private: // data - - CFepUiLayout* iUiLayout; - /** - * The background bitmap of popup window - */ - CFbsBitmap* iPopupWndBgImg; - - /** - * The focus bitmap of popup window (not own) - */ - CFbsBitmap* iPopupWndFocusImg; - - /** - * Popup window item size - */ - TSize iPopupItemSize; - - /** - * This control is construced - */ - TBool iConstructed; - - /** - * This control is construced - */ - TPluginInputMode iCurPluginInputMode; - - /** - * Input mode item array - */ - //CFepLayoutChoiceList::SItem iInputModeItem[KTouchInputModeCount]; - - RArray iInputModeItems; - /** - * Editor secure flag - */ - TBool iSecretEditor; - - /** - * Editor secure flag - */ - TRect iItemRect; - - - /** - * Text input language - */ - TLanguage iInputLanguage; - - /** - * fep repository key - */ - CRepository* iAknFepRepository; - - }; - -//#include "peninputlayoutchoicelist.inl" -#endif //C_FEPLAYOUTINPUTMODELCHOICE_H -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputselectionlist/peninputscrollablelist.h --- a/textinput/peninputcommonctrls/inc/peninputselectionlist/peninputscrollablelist.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,245 +0,0 @@ -/* -* Copyright (c) 2008-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: header file of button and dragbar -* -*/ - -#ifndef C_FEPLAYOUTSCROLLABLELIST_H -#define C_FEPLAYOUTSCROLLABLELIST_H - -#include -#include -#include -#include - -#define FORMATPAGEINFO(des, ktxt, parm...) {des.Format(ktxt, parm);}; - -class CAknFepCtrlCommonButton; - -class CFepLayoutScrollableList : public CFepLayoutChoiceList, public MEventObserver - { -public: - IMPORT_C static CFepLayoutScrollableList* NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TSize aItemSize, - TInt aHorizontalMargin, - TInt aVerticalMargin, - TSize aNaviSize, - TSize aNaviInnerSize); - - IMPORT_C static CFepLayoutScrollableList* NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TSize aItemSize, - TInt aHorizontalMargin, - TInt aVerticalMargin, - TSize aNaviSize, - TSize aNaviInnerSize); - - IMPORT_C virtual ~CFepLayoutScrollableList(); - - IMPORT_C void ConstructFromResourceL(); - - IMPORT_C void SizeChanged(TSize aItemSize, - TInt aHorizontalMargin, - TInt aVerticalMargin, - TSize aNaviSize, - TSize aNaviInnerSize); - - IMPORT_C void SetTextProperty(const CFont* aFont, - TRgb aFontColor); - - IMPORT_C void SetImgFrId(TAknsItemID aBgFrId, - TAknsItemID aNaviFrId, - TAknsItemID aNaviActiveFrId, - TAknsItemID aNaviDimFrId, - TAknsItemID aItemFrId, - TAknsItemID aItemActiveFrId); - - inline void SetTextLineLayout(TAknTextLineLayout aTextLine); - - inline void SetPageInfoTextLineLayout(TAknTextLineLayout aTextLine); - inline void SetPageInfoFormatL(const TDesC& aFormat); - - // if current page include special item, the count also include - // special item - inline void SetOnePageItemCount(TInt aItemCount); - - inline void SetSpecialItemOn(TBool aOn); - - // get whole control width except item width - inline TInt CtrlWidthExceptItem(); - - // get whole control height - inline TInt CtrlHeight(); - - IMPORT_C void Draw(); - - IMPORT_C void ReCalcLayout(); - - IMPORT_C void UpdateNaviButtonStates(); - - IMPORT_C void SetListSeperationRect( const TRect& aRect ); - - inline void SetPageInfoResID( TInt aResID ); - - /** - * Hide or shoe control. A hiden control will not handle the event. - * - * @since S60 V4.0 - * @param aFlag ETrue if want to hide the control. - */ - IMPORT_C virtual void Hide(TBool aFlag); - -protected: - - IMPORT_C CFepLayoutScrollableList(CFepUiLayout* aUiLayout, - TInt aControlId, - TSize aItemSize, - TInt aHorizontalMargin, - TInt aVerticalMargin, - TSize aNaviSize, - TSize aNaviInnerSize); - - IMPORT_C void ConstructL(); - - IMPORT_C TInt HitTest(const TPoint& aPoint); - - IMPORT_C virtual void DrawItem(TInt aItemIndex, TBool aItemActive = EFalse); - - IMPORT_C virtual void CalculateItemWidth(); - - IMPORT_C virtual void DrawPageInfo(); - - - void ScrollPageUp(); - - void ScrollPageDown(); - - IMPORT_C void Move(const TPoint& aOffset); - -private: - void CalcPageInfo(); -protected: - //from MEventObserver - IMPORT_C void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData); - - IMPORT_C void UpdatePageInfoL( TInt aCurrentPage, TInt aTotalPage ); - -#ifdef RD_TACTILE_FEEDBACK - // Update tactile feedback area when scroll page up and down. - void UpdateFeedbackArea(); -#endif // RD_TACTILE_FEEDBACK - -protected: - TPoint iTopLeftPoint; - TSize iItemSize; - TSize iNaviSize; - TSize iNaviInnerSize; - TInt iHorizontalMargin; - TInt iVerticalMargin; - TInt iBaselineOffset; - const CFont* iFont; - TRgb iFontColor; - TAknTextLineLayout iTextLine; - TBool iTextLineSet; - TAknTextLineLayout iPageInfoTextLine; - TBool iPageInfoLineSet; - - RPointerArray iBmpList; - - TAknsItemID iBgFrId; - // used for special item - TAknsItemID iItemFrId; - TAknsItemID iItemActiveFrId; - - TBool iSpecialItemOn; - TBool iNaviBtnShown; - - HBufC* iPageInfoFormat; - HBufC* iPageInfo; - TInt iCurrentPage; - TInt iTotalPages; - - //TPoint iTlPos; - TInt iOnePageItemCnt; - TRect iContentRect; - TRect iScrollRect; - TRect iPageUpRect; - TRect iPageDownRect; - TRect iPageInfoRect; - RArray iItemRects; - CAknFepCtrlCommonButton* iPageUp; - CAknFepCtrlCommonButton* iPageDown; - - // List speration - TRect iSeperationRect; - CFbsBitmap* iSeperationBmp; //own - CFbsBitmap* iSeperationMaskBmp; // own - - // Res ID of page info - TInt iPageInfoResID; - - TRect iLastPageItemRect; - TInt iInitItemWidth; - }; - -inline void CFepLayoutScrollableList::SetTextLineLayout(TAknTextLineLayout aTextLine) - { - iTextLine = aTextLine; - iTextLineSet = ETrue; - } -inline void CFepLayoutScrollableList::SetPageInfoTextLineLayout(TAknTextLineLayout aTextLine) - { - iPageInfoTextLine = aTextLine; - iPageInfoLineSet = ETrue; - } - -inline void CFepLayoutScrollableList::SetPageInfoFormatL(const TDesC& aFormat) - { - delete iPageInfoFormat; - iPageInfoFormat = NULL; - iPageInfoFormat = aFormat.AllocL(); - - // on the assumption that page info do not beyond 100 - delete iPageInfo; - iPageInfo = NULL; - iPageInfo = HBufC::NewL(aFormat.Length() + 6); - } - -inline void CFepLayoutScrollableList::SetOnePageItemCount(TInt aItemCount) - { - iOnePageItemCnt = aItemCount; - } - -inline void CFepLayoutScrollableList::SetSpecialItemOn(TBool aOn) - { - iSpecialItemOn = aOn; - } - -inline TInt CFepLayoutScrollableList::CtrlWidthExceptItem() - { - return 4*iHorizontalMargin + iNaviSize.iWidth; - } - -inline TInt CFepLayoutScrollableList::CtrlHeight() - { - return (iOnePageItemCnt + 1)*iVerticalMargin + iOnePageItemCnt*iItemSize.iHeight; - } - -inline void CFepLayoutScrollableList::SetPageInfoResID( TInt aResID ) - { - iPageInfoResID = aResID; - } -#endif //C_FEPLAYOUTSCROLLABLELIST_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputselectionlist/peninputselectionlist.h --- a/textinput/peninputcommonctrls/inc/peninputselectionlist/peninputselectionlist.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,146 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -#ifndef C_CPENINPUTSELECTIONLIST_H -#define C_CPENINPUTSELECTIONLIST_H - -#include -#include -#include - -class CPenInputSelectionList : public CFepUiBaseCtrl - { -public: - struct SItem - { - SItem(TRect aRect, const TDesC& aText) - :iRect(aRect), iText(aText) - { - } - - TRect iRect; - const TDesC& iText; - }; - - enum TSelectionListBmpType - { - EBmpNormal, - EBmpNormalMask, - EBmpHighlight, - EBmpHighlightMask, - EBmpLastType = EBmpHighlightMask - }; - -public: - IMPORT_C static CPenInputSelectionList* NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TPoint aTopLeftPoint, - TSize aItemSize, - TInt aItemHorizontalMargin); - - IMPORT_C ~CPenInputSelectionList(); - - IMPORT_C void SizeChanged(TPoint aTopLeftPoint, - TSize aItemSize, - TInt aItemHorizontalMargin); - - // control rect is calculated by item count - IMPORT_C void SetItemsL(const RPointerArray& aItemList); - - IMPORT_C void AddItemL(const TDesC& aItem); - - IMPORT_C void RemoveItem(TInt aItemIndex); - - IMPORT_C void RemoveAllItems(); - - IMPORT_C void ConstructFromResourceL(); - - IMPORT_C void SetTextProperty(const CFont* aFont, - TRgb aFontColor); - - IMPORT_C CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); - IMPORT_C CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint); - IMPORT_C CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint); - - IMPORT_C void Display(); - - IMPORT_C void CloseWindow(); - - inline void SetTextLineLayout(TAknTextLineLayout aTextLine); - - inline void SetEventIdForItemSelected(TInt aEventId); - - inline void SetBgFrId(TAknsItemID aFrId, TAknsItemID aCenterFrId); - - void Draw(); - -private: - - CPenInputSelectionList(CFepUiLayout* aUiLayout, - TInt aControlId, - TPoint aTopLeftPoint, - TSize aItemSize, - TInt aItemHorizontalMargin); - - void ConstructL(); - - void RecalculateCtrlRect(); - - // get item whose region contains the point - TInt HitTest(const TPoint& aPoint); - - void DrawItem(TInt aItemIndex); - - void CalculateFrameRects(const TRect aRect, TRect& aOuterRect, TRect& aInnerRect) const; -private: - - RArray iItemList; - TPoint iTopLeftPoint; - TSize iItemSize; - TInt iItemHorizontalMargin; - TInt iBaselineOffset; - const CFont* iFont; - TRgb iFontColor; - TAknTextLineLayout iTextLine; - - TInt iFocusItemIndex; - - RPointerArray iBmpList; - - TInt iEventId; - TBool iTextLineSet; - TAknsItemID iFrId; - TAknsItemID iCenterFrId; - }; - -inline void CPenInputSelectionList::SetTextLineLayout(TAknTextLineLayout aTextLine) - { - iTextLine = aTextLine; - iTextLineSet = ETrue; - } - -inline void CPenInputSelectionList::SetEventIdForItemSelected(TInt aEventId) - { - iEventId = aEventId; - } - -inline void CPenInputSelectionList::SetBgFrId(TAknsItemID aFrId, TAknsItemID aCenterFrId) - { - iFrId = aFrId; - iCenterFrId = aCenterFrId; - } - -#endif // C_CPENINPUTSELECTIONLIST_H \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputvkbctrl/peninputvkbctrlext.h --- a/textinput/peninputcommonctrls/inc/peninputvkbctrl/peninputvkbctrlext.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,191 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: vkb extenting control -* -*/ - - -#ifndef C_CPENINPUTVKBCTRLEXT_H -#define C_CPENINPUTVKBCTRLEXT_H - -// System includes -#include - -// Forward decalaration -class CPeninputVkbLayoutInfo; - -/** - * vkb extenting control class - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputVkbCtrlExt : public CVirtualKeyboard - { - -public: - - /** - * Create one CPeninputVkbCtrlExt object - * - * @since S60 v3.2 - * @param aRect The rectangle of the control - * @param aUiLayout The layout plugin - * @param aControlId This control ID - * @param aFont The pointer to CFont object - * @return The pointer to CPeninputVkbCtrlExt object - */ - IMPORT_C static CPeninputVkbCtrlExt* NewL( const TRect& aRect, - CFepUiLayout* aUiLayout, - TInt aControlId, - const CFont* aFont, - TBool aIrregular = EFalse); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputVkbCtrlExt(); - - /** - * Handle size changing of vkb extenting control - * - * @since S60 v3.2 - * @param aUnitWidth Width of unit of vkb extenting control - * @param aUnitHeight Height of unit of vkb extenting control - * @param aLeftTopPoint The left top point of vkb extenting control - * @return None - */ - IMPORT_C void SizeChanged( const TInt aUnitWidth, - const TInt aUnitHeight, - const TPoint& aLeftTopPoint ); - - /** - * Handle size changing of vkb extenting control - * - * @since S60 v3.2 - * @param aUnitWidth Width of unit of vkb extenting control - * @param aUnitHeight Height of unit of vkb extenting control - * @param aLeftTopPoint The left top point of vkb extenting control - * @return None - */ - IMPORT_C void SizeChanged( const TRect& aRect ); - - /** - * Reorganize Vkb Keys - * - * @since S60 v3.2 - * @param aVkbLayout The vkb layout info - * @return None - */ - IMPORT_C void ReorganizeVkbKeys( CPeninputVkbLayoutInfo* aVkbLayoutInfo ); - - /** - * Move the vkb extenting control - * - * @since S60 v3.2 - * @param aOffset The offset to be moved - * @return None - */ - IMPORT_C void Move( const TPoint& aOffset ); - - /** - * Reset some value of the control - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Reset(); - - /** - * Dim keys in vkb extenting control - * - * @since S60 v3.2 - * @param aPermitted The permitted unicodes - * @return None - */ - IMPORT_C void DimKeys( const HBufC* aPermitted ); - - /** - * Cancel dim of all keys - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void CancelDims(); - - /** - * Dim keys in vkb extenting control - * - * @since S60 v3.2 - * @param aSet The unicodes set - * @param aDim The flag of dim or not - * @return None - */ - IMPORT_C void DimKeySet( const HBufC* aSet, TBool aDim ); - - /** - * Read resource and construct - * - * @since S60 v5.0 - * @return None - */ - IMPORT_C void ConstructFromResourceL(); -protected: - - /* - * Constructor - * - * @since S60 v3.2 - * @param aRect The rectangle of the control - * @param aUiLayout The layout plugin - * @param aControlId The control ID - * @param aFontSpec The specification of font - * @return None - */ - IMPORT_C CPeninputVkbCtrlExt( const TRect& aRect, - CFepUiLayout* aUiLayout, - TInt aControlId, - const TFontSpec& aFontSpec, - TBool aIrregular = EFalse); - -protected: // Data - /** - * The vkb layout info - * Not own - */ - CPeninputVkbLayoutInfo* iVkbLayoutInfo; - -private: // Data - - - /** - * The unit width - */ - TInt iUnitWidth; - - /** - * The unit height - */ - TInt iUnitHeight; - - /** - * The left top point - */ - TPoint iLeftTopPoint; - }; - -#endif // C_CPENINPUTVKBCTRLEXT_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputvkbctrl/peninputvkbctrllayout.h --- a/textinput/peninputcommonctrls/inc/peninputvkbctrl/peninputvkbctrllayout.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,786 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: vkb layout inline function -* -*/ - - -#ifndef C_CAKNFEPCTRLVKBLAYOUT_H -#define C_CAKNFEPCTRLVKBLAYOUT_H - -// system includes -#include -#include - -// forward declarations -class CPeninputVkbLayoutInfo; -class CPeninputVkbCtrlExt; - -// class declarations -/** - * Basic functionality for graphic buttons - * It provides creation from resource and can react according to SizeChanged Msg - * - * @lib fepcommonctrls.lib - * @since S60 v3.2 - */ -class CAknFepCtrlVkbLayout : public CBase - { -public: - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - * @return The pointer point to CAknFepCtrlButton type object - */ - IMPORT_C static CAknFepCtrlVkbLayout* NewL(); - - /** - * Two-phased constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - * @return The pointer point to CAknFepCtrlButton type object - */ - IMPORT_C static CAknFepCtrlVkbLayout* NewLC(); - - /** - * Destructor. - * - * @since S60 v3.2 - */ - IMPORT_C virtual ~CAknFepCtrlVkbLayout(); - - /** - * This function creates the input range button from resource, - * before calling this function, caller should set resource id of - * range button first - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructFromResourceL(); - - /** - * This function get the vkb layout info list - * - * @since S60 v3.2 - * @return The vkb layout info list - */ - IMPORT_C RPointerArray VkbLayoutInfoList(); - - /** - * Get virtual keyboard - * - * @since S60 v3.2 - * @return The pointer to CPeninputVkbCtrlExt object - */ - IMPORT_C void SetVkbKeyboard( CPeninputVkbCtrlExt* aVkbCtrl ); - - /** - * This function get the vkb layout ID - * - * @since S60 v3.2 - * @return The vkb layout ID - */ - IMPORT_C void ChangeVkbLayout( TInt aVkbLayoutId ); - - /** - * Set resource Id - * - * @since S60 V4.0 - * @param aResId The resource id; - */ - IMPORT_C void SetResourceId(TInt32 aResId); - - /** - * Set resource Id - * - * @since S60 V4.0 - * @param aResId The resource id; - */ - IMPORT_C void SetIrregularResourceId(TInt32 aResId); - - /** - * Set resource Id - * - * @since S60 V4.0 - * @param aResId The resource id; - */ - IMPORT_C void SetNonIrregularResourceId(TInt32 aResId); - - /** - * This function creates the input range button from resource, - * before calling this function, caller should set resource id of - * range button first - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructFromIrregularResourceL(); - - /** - * This function creates the input range button from resource, - * before calling this function, caller should set resource id of - * range button first - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructFromNonIrregularResourceL(); - - /** - * Reset - * - * @since S60 V4.0 - */ - IMPORT_C void Reset(); - -protected: - - /** - * C++ default constructor. - * - * @since S60 v3.2 - * @param aUiLayout An instance of CFepUiLayout - * @param aControlId The control id of input range button - */ - CAknFepCtrlVkbLayout(); - - void ConstructL(); - -private: - - void CreateIrregularKeyBitmapsL(TResourceReader& reader, - TPtrC& bmpFileName, - TVirtualKeyIrregularKeyType aKeyType); - - void CreateIrregularKeyBitmapL(TResourceReader& reader, TPtrC& bmpFileName, - TVirtualKeyIrregularKeyType aKeyType , - TVirtualKeyIrregularKeyState aKeyState, - TVirtualKeyIrregularKeyState aKeyStateMask); - -protected: - - RPointerArray iVkbLayoutInfoList; - - /** - * The first time construct flag of button - */ - TBool iFirstTimeConstruct; - - /** - * The resource Id associatied with this control - */ - TInt32 iResourceId; - - /** - * The resource Id associatied with this control - */ - TInt32 iIrregularResId; - - /** - * The resource Id associatied with this control - */ - TInt32 iNonIrregularResId; -private: - - /** - * The vkb extenting control for vkb area - * Not own - */ - CPeninputVkbCtrlExt* iVkbCtrl; - - /** - * The vkb layout ID - */ - TInt iVkbLayoutId; - }; - - - -class CVirtualKey; - -/** - * Vkb key info definition - * - * This class is to define key info. Application can create it from - * resource file. Key info includes Unicode, begin row, end row, - * begin column and end column. - * - * @lib peninputvkb.lib - * @since S60 v3.2 - */ -class CPeninputVkbKeyInfo : public CBase - { - -public: - - /** - * Two-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputVkbKeyInfo object - */ - IMPORT_C static CPeninputVkbKeyInfo* NewL( TResourceReader& aReader ); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputVkbKeyInfo(); - - /** - * Get unicode logical string - * - * @since S60 v3.2 - * @return unicode logical string - */ - inline HBufC* Unicode() const; - - /** - * Get key's scan code - * - * @since S60 v3.2 - * @return Key's scan code - */ - inline TInt ScanCode() const; - - /** - * Get key's begin row - * - * @since S60 v3.2 - * @return Key's begin row - */ - inline TInt BeginRow() const; - - /** - * Get key's begin column - * - * @since S60 v3.2 - * @return Key's begin column - */ - inline TInt BeginColumn() const; - - /** - * Get key's end row - * - * @since S60 v3.2 - * @return Key's end row - */ - inline TInt EndRow() const; - - /** - * Get key's end column - * - * @since S60 v3.2 - * @return Key's end column - */ - inline TInt EndColumn() const; - - /** - * Get high light bitmap index - * - * @since S60 v3.2 - * @return High light bitmap index - */ - inline TInt HighlightBmpIndex()const; - - /** - * Get high light mask bitmap index - * - * @since S60 v3.2 - * @return High light mask bitmap index - */ - inline TInt HighlightMaskBmpIndex() const; - - /** - * Get virtual key - * - * @since S60 v3.2 - * @return The pointer to CVirtualKey object - */ - inline CVirtualKey* Key() const; - - void SetIrregularKeyType(TInt aColumns); - -protected: - - /** - * Second phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructL( TResourceReader& aReader ); - - /** - * Contruct from resource - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructFromResourceL( TResourceReader& aReader ); - -private: - - /** - * Create key - * - * @since S60 v3.2 - * @return None - */ - void CreateKeyL(); - - TVirtualKeyIrregularKeyType KeyTypeFromColumn(TInt aColumns); - -private: // data - - /** - * Key unicode string - */ - HBufC* iUnicode; - - /** - * Scan code - */ - TInt iScanCode; - - /** - * Begin row - */ - TInt iBeginRow; - - /** - * Begin column - */ - TInt iBeginColumn; - - /** - * End row - */ - TInt iEndRow; - - /** - * End column - */ - TInt iEndColumn; - - /** - * High light bitmap index - */ - TInt iHighlightBmpIndex; - - /** - * High light mask bitmap index - */ - TInt iHighlightMaskBmpIndex; - - /** - * Virtual key - * Own - */ - CVirtualKey* iKey; - - }; - -/** - * vkb layout definition - * - * This class is to implement vkb layout. Application can create it from resource - * file. This class is to control vkb interface layout. - * - * @lib peninputvkb.lib - * @since S60 v3.2 - */ -class CPeninputVkbLayoutInfo : public CBase - { - -public: - - /** - * Two-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputVkbLayoutInfo object - */ - IMPORT_C static CPeninputVkbLayoutInfo* NewL( - TResourceReader& aReader ); - - /** - * Two-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputVkbLayoutInfo object - */ - IMPORT_C static CPeninputVkbLayoutInfo* NewLC( - TResourceReader& aReader ); - - /** - * Get real size from vkb layout - * - * @since S60 v3.2 - * @param aUnitWidth Unit width - * @param aUnitHeight Unit height - * @return The unit size - */ - IMPORT_C const TSize GetRealSize( const TInt aUnitWidth, - const TInt aUnitHeight ) const; - - /** - * Reset unit size - * - * @since S60 v3.2 - * @param aUnitWidth Unit width - * @param aUnitHeight Unit height - * @param aUnitCharWidth Unit char width - * @param aUnitCharHeight Unit char height - * @param aCharLeftTopPoint Left top point of unit char - * @return None - */ - IMPORT_C void ResetSize( const TInt aUnitWidth, - const TInt aUnitHeight, - const TInt aUnitCharWidth, - const TInt aUnitCharHeight, - const TPoint& aCharLeftTopPoint, - const CFont* aFont ); - - - /** - * Reset unit size - * - * @since S60 v3.2 - * @param aSize Keyboard size - * @return None - */ - IMPORT_C void ResetLayoutInfo( const TSize& aSize); - - - - /** - * Reset unit size - * - * @since S60 v3.2 - * @param aUnitWidth Unit width - * @param aUnitHeight Unit height - * @param aUnitCharWidth Unit char width - * @param aUnitCharHeight Unit char height - * @param aCharLeftTopPoint Left top point of unit char - * @return None - */ - IMPORT_C void SetKeyInfo(const TInt aRow, - const TInt aColumn, - const TRect& aKeyRect, - const TRect& aCharRect, - const CFont* aFont ); - - - - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputVkbLayoutInfo(); - - /** - * Find the key from the vkb accroding to the unicode - * - * @since S60 v3.2 - * @param aUnicode Unicode - * @return The pointer to CPeninputVkbKeyInfo object - */ - IMPORT_C CPeninputVkbKeyInfo* FindKey( const TInt aUnicode ) const; - - /** - * Get layout id - * - * @since S60 v3.2 - * @return Layout id - */ - inline TInt LayoutID() const; - - /** - * Get column count - * - * @since S60 v3.2 - * @return Column count - */ - inline TInt Columns() const; - - /** - * Get row count - * - * @since S60 v3.2 - * @return Row count - */ - inline TInt Rows() const; - - /** - * Get the unit's width - * - * @since S60 v3.2 - * @return The unit's width - */ - inline TInt UnitWidth() const; - - /** - * Get the unit's height - * - * @since S60 v3.2 - * @return The unit's height - */ - inline TInt UnitHeight() const; - - /** - * Get the char's width - * - * @since S60 v3.2 - * @return The char's width - */ - inline TInt UnitCharWidth() const; - - /** - * Get the char's height - * - * @since S60 v3.2 - * @return The char's height - */ - inline TInt UnitCharHeight() const; - - /** - * Get the char's left top point - * - * @since S60 v3.2 - * @return The char's left top point - */ - inline TPoint CharLeftTopPoint() const; - - /** - * Get the char's font - * - * @since S60 v3.2 - * @return The char's font - */ - inline const CFont* CharFont() const; - - /** - * Get background bitmap - * - * @since S60 v3.2 - * @return The pointer to background bitmap - */ - inline CFbsBitmap* BgBmp() const; - - /** - * Get mask bitmap - * - * @since S60 v3.2 - * @return The pointer to background mask bitmap - */ - inline CFbsBitmap* BgMaskBmp() const; - - /** - * Get dim bitmap - * - * @since S60 v3.2 - * @return The pointer to dim bitmap - */ - inline CFbsBitmap* DimBmp() const; - - /** - * Get dim mask bitmap - * - * @since S60 v3.2 - * @return The pointer to dim mask bitmap - */ - inline CFbsBitmap* DimMaskBmp() const; - - /** - * Get key info array - * - * @since S60 v3.2 - * @return Key info array - */ - inline RPointerArray KeyInfoList() const; - - /** - * Get high light bitmap array - * - * @since S60 v3.2 - * @return High light bitmap array - */ - inline RPointerArray HighlightBmps() const; - - /** - * Get high light mask bitmap array - * - * @since S60 v3.2 - * @return High light mask bitmap array - */ - inline RPointerArray HighlightMaskBmps() const; - - /** - * Move key to certain point - * - * @since S60 v3.2 - * @param aTopLeft Point to move - * @return None - */ - IMPORT_C void MoveKeys( const TPoint& aTopLeft ); - - /** - * Construct from resourcr file - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructFromResourceL( TResourceReader& aReader, - CPeninputVkbCtrlExt* aVkbCtrl = NULL, - TInt aVkbLayoutId = 0 ); - -protected: - - /** - * C++ default constructor - * - * @since S60 v3.2 - * @return None - */ - CPeninputVkbLayoutInfo(); - - /** - * Symbian second-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructL( TResourceReader& aReader ); - -public: - TBool iIrregular; - -private: // data - - /** - * Layout id - */ - TInt iLayoutID; - - /** - * Column count - */ - TInt iColumns; - - /** - * Row count - */ - TInt iRows; - - /** - * Unit width - */ - TInt iUnitWidth; - - /** - * Unit height - */ - TInt iUnitHeight; - - /** - * Unit char width - */ - TInt iUnitCharWidth; - - /** - * Unit char height - */ - TInt iUnitCharHeight; - - /** - * Char left top point - */ - TPoint iCharLeftTopPoint; - - /** - * Key font - */ - const CFont* iFont; - - /** - * Last point - */ - TPoint iLastTopLeft; - - /** - * Background bitmap - * Own - */ - CFbsBitmap* iBgBmp; - - /** - * Background mask bitmap - * Own - */ - CFbsBitmap* iBgMaskBmp; - - /** - * Dim bitmap - * Own - */ - CFbsBitmap* iDimBmp; - - /** - * Dim mask bitmap - * Own - */ - CFbsBitmap* iDimMaskBmp; - - /** - * Key info array - */ - RPointerArray iKeyInfoList; - - /** - * High light bitmap array - */ - RPointerArray iHighlightBmps; - - /** - * High light mask bitmap array - */ - RPointerArray iHighlightMaskBmps; - - }; - -#include "peninputvkbctrllayout.inl" - -#endif // C_CAKNFEPCTRLVKBLAYOUT_H - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/inc/peninputvkbctrl/peninputvkbctrllayout.inl --- a/textinput/peninputcommonctrls/inc/peninputvkbctrl/peninputvkbctrllayout.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,270 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: vkb layout inline function -* -*/ - - -// ----------------------------------------------------------------------------- -// CPeninputVkbKeyInfo::Unicode -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline HBufC* CPeninputVkbKeyInfo::Unicode() const - { - return iUnicode; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbKeyInfo::ScanCode -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbKeyInfo::ScanCode() const - { - return iScanCode; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbKeyInfo::BeginRow -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbKeyInfo::BeginRow() const - { - return iBeginRow; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbKeyInfo::BeginColumn -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbKeyInfo::BeginColumn() const - { - return iBeginColumn; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbKeyInfo::EndRow -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbKeyInfo::EndRow() const - { - return iEndRow; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbKeyInfo::EndColumn -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbKeyInfo::EndColumn() const - { - return iEndColumn; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbKeyInfo::HighlightBmpIndex -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbKeyInfo::HighlightBmpIndex() const - { - return iHighlightBmpIndex; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbKeyInfo::HighlightMaskBmpIndex -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbKeyInfo::HighlightMaskBmpIndex() const - { - return iHighlightMaskBmpIndex; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbKeyInfo::Key -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline CVirtualKey* CPeninputVkbKeyInfo::Key() const - { - return iKey; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::LayoutID -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbLayoutInfo::LayoutID() const - { - return iLayoutID; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::Columns -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbLayoutInfo::Columns() const - { - return iColumns; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::Rows -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbLayoutInfo::Rows() const - { - return iRows; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::UnitWidth -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbLayoutInfo::UnitWidth() const - { - return iUnitWidth; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::UnitHeight -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbLayoutInfo::UnitHeight() const - { - return iUnitHeight; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::UnitCharWidth -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbLayoutInfo::UnitCharWidth() const - { - return iUnitCharWidth; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::UnitCharHeight -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputVkbLayoutInfo::UnitCharHeight() const - { - return iUnitCharHeight; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::CharLeftTopPoint -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TPoint CPeninputVkbLayoutInfo::CharLeftTopPoint() const - { - return iCharLeftTopPoint; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::CharFont -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline const CFont* CPeninputVkbLayoutInfo::CharFont() const - { - return iFont; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::BgBmp -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline CFbsBitmap* CPeninputVkbLayoutInfo::BgBmp() const - { - return iBgBmp; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::BgMaskBmp -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline CFbsBitmap* CPeninputVkbLayoutInfo::BgMaskBmp() const - { - return iBgMaskBmp; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::DimBmp -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline CFbsBitmap* CPeninputVkbLayoutInfo::DimBmp() const - { - return iDimBmp; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::DimMaskBmp -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline CFbsBitmap* CPeninputVkbLayoutInfo::DimMaskBmp() const - { - return iDimMaskBmp; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::KeyInfoList -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline RPointerArray - CPeninputVkbLayoutInfo::KeyInfoList() const - { - return iKeyInfoList; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::HighlightBmps -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline RPointerArray - CPeninputVkbLayoutInfo::HighlightBmps() const - { - return iHighlightBmps; - } - -// ----------------------------------------------------------------------------- -// CPeninputVkbLayoutInfo::HighlightMaskBmps -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline RPointerArray - CPeninputVkbLayoutInfo::HighlightMaskBmps() const - { - return iHighlightMaskBmps; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/loc/peninputcommonctrls.loc --- a/textinput/peninputcommonctrls/loc/peninputcommonctrls.loc Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Localization strings for touch input common contrls -* -*/ - - -// LOCALISATION STRINGS - -//d:Text in touch input mode swither list -//d:virtual ITUT touch input method -//l:list_single_pane_t1_cp2 -//r: 5.0 -#define qtn_input_switcher_itu_t "Virtual ITU-T" - -//d:Text in touch input mode swither list -//d:full sreen qwerty touch input method -//l:list_single_pane_t1_cp2 -//r: 5.0 -#define qtn_input_switcher_fs_qwerty "Full Screen Qwerty" - -//d:Text in touch input mode swither list -//d:small virtual key board touch input method -//l:list_single_pane_t1_cp2 -//r: 5.0 -#define qtn_input_switcher_vkb "VKB" - -//d:Text in touch input mode swither list -//d:Handwritting Recognition touch input method -//l:list_single_pane_t1_cp2 -//r: 5.0 -#define qtn_input_switcher_hwr "HWR" - -//d:Text in touch input mode swither list -//d:full screen HWR touch input method -//l:list_single_pane_t1_cp2 -//r: 5.0 -#define qtn_input_switcher_fs_hwr "Full Screen HWR" - - -//d:Text in candidate match selection list -//d:The last item meaning to enger the spell mode -//l:list_vitu2_match_list_item_pane_t1 -//r: 5.0 -#define qtn_t9_match_selection_list "Spell" - - -//d:column for ICF prompt text -//l:field_vitu2_entry_pane_t1 -//r: 5.0 -#define qtn_colon_in_prompt ":" - - - -//d:Text in candidate listt -//d:current page /total pages information -//l:vitu2_page_scroll_pane_t1 -//r: 5.0 -#define qtn_paging_number_match_selection "%0N/%1N" - - -//d:Text for T9 spelling prompt text -//l:popup_vitu2_query_window_t1 -//r: 5.0 -#define qtn_t9_spell_query "Word" diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/rom/peninputcommonctrls.iby --- a/textinput/peninputcommonctrls/rom/peninputcommonctrls.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* -* Copyright (c) 2002 - 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Image description file for project peninputcommonctrls -* -*/ - - -#ifndef PENINPUTCOMMONCTRLS_IBY -#define PENINPUTCOMMONCTRLS_IBY - -#include -#include - -#ifdef __PEN_SUPPORT -#ifdef RD_SCALABLE_UI_V2 - -file=ABI_DIR\BUILD_DIR\peninputcommonctrls.dll SHARED_LIB_DIR\peninputcommonctrls.dll - -// switchutils -data=DATAZ_\RESOURCE_FILES_DIR\apps\peninputmodeswitcher.mif RESOURCE_FILES_DIR\apps\peninputmodeswitcher.mif - -#endif // RD_SCALABLE_UI_V2 -#endif // __PEN_SUPPORT - -#endif // PENINPUTCOMMONCTRLS_IBY diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/rom/peninputcommonctrlsresources.iby --- a/textinput/peninputcommonctrls/rom/peninputcommonctrlsresources.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* -* Copyright (c) 2002 - 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Image description file for project peninputcommonctrls -* -*/ - - -#ifndef PENINPUTCOMMONCTRLS_IBY -#define PENINPUTCOMMONCTRLS_IBY - -#include -#include - -#ifdef __PEN_SUPPORT -#ifdef RD_SCALABLE_UI_V2 -// switchutils -data=DATAZ_\RESOURCE_FILES_DIR\peninputmodeswitchutilsnew.rsc RESOURCE_FILES_DIR\peninputmodeswitchutilsnew.rsc - -#endif // RD_SCALABLE_UI_V2 -#endif // __PEN_SUPPORT - -#endif // PENINPUTCOMMONCTRLS_IBY diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputbasewindow/peninputbasewindow.cpp --- a/textinput/peninputcommonctrls/src/peninputbasewindow/peninputbasewindow.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,192 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CAknFepCtrlBaseWindow -* -*/ - - -// INCLUDES -#include -#include -#include -#include -#include -// --------------------------------------------------------- -// Constructor -// --------------------------------------------------------- -// -EXPORT_C CAknFepCtrlBaseWindow::CAknFepCtrlBaseWindow(CFepUiLayout* aFepUiLayout, - TInt aControlId) - :CControlGroup(aFepUiLayout,aControlId) - { - } - -// --------------------------------------------------------- -// Constructor -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlBaseWindow::BaseConstructL() - { - CControlGroup::ConstructL(); - - iTitleBar = CControlGroup::NewL(UiLayout(), 0, EFalse); - iClientPane = CControlGroup::NewL(UiLayout(), 0, EFalse); - - iMoveButton = CAknFepCtrlDragButton::NewL(UiLayout(), 0); - - iMoveButton->SetImageFrameId(KAknsIIDQsnFrFunctionButtonNormal, - KAknsIIDQsnFrFunctionButtonPressed, - KAknsIIDQsnFrFunctionButtonInactive); - - iCloseButton = CAknFepCtrlCommonButton::NewL(UiLayout(), 0, - KAknsIIDQsnFrFunctionButtonNormal, - KAknsIIDQsnFrFunctionButtonPressed, - KAknsIIDQsnFrFunctionButtonInactive); - iHeaderPane = CControlGroup::NewL(UiLayout(), 0, EFalse); - - iTitleBar->AddControlL(iMoveButton); - iTitleBar->AddControlL(iHeaderPane); - iTitleBar->AddControlL(iCloseButton); - iCloseButton->AddEventObserver(this); - iMoveButton->AddPositionObserver(this); - - AddControlL(iTitleBar); - AddControlL(iClientPane); - } - -// --------------------------------------------------------- -// Destructor -// --------------------------------------------------------- -// -EXPORT_C CAknFepCtrlBaseWindow::~CAknFepCtrlBaseWindow() - { - } - -// --------------------------------------------------------- -// Draw window frame and sub controls -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlBaseWindow::Draw() - { - if(!AbleToDraw()) - return; - - //Clear(); - DrawOpaqueMaskBackground( Rect() ); - CFbsBitGc* gc= static_cast ( BitGc()); -/* - gc->Activate( MaskBitmapDevice() ); - gc->SetBrushStyle( CGraphicsContext::ENullBrush ); - gc->SetBrushColor( MaskBkCol() ); - gc->SetPenSize( PenSize()); - gc->SetPenColor( PenColor() ); - - gc->DrawRect( Rect()); - TRect rect = iTitleBar->Rect(); - gc->DrawRect(rect); -*/ - // ----- draw bitmaps ----- - gc->Activate( BitmapDevice() ); - gc->SetBrushColor( TRgb(KOpaqueColor) ); - gc->SetPenColor( TRgb(KOpaqueColor) ); - gc->DrawRect( Rect()); - if( BackgroundBmp() && BackgroundBmp()->SizeInPixels() != Rect().Size() ) - AknIconUtils::SetSize(BackgroundBmp(), Rect().Size(), EAspectRatioNotPreserved); - - DrawBackground(); - CControlGroup::Draw(); - } - -// --------------------------------------------------------- -// Close window -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlBaseWindow::Close() - { - if (DoClose()) - { - Hide(ETrue); - } - } - -// --------------------------------------------------------- -// Enable or disable drag window -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlBaseWindow::SetDragEnable(TBool aEnable) - { - if (iMoveButton) - { - iMoveButton->EnableDragging(aEnable); - } - } - -// --------------------------------------------------------- -// Handle close event -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlBaseWindow::HandleControlEvent(TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& /*aEventData*/) - { - if (aEventType == EEventButtonUp) - { - if (aCtrl == iCloseButton) - { - Close(); - } - } - } - -EXPORT_C TBool CAknFepCtrlBaseWindow::DoClose() - { - return ETrue; - } - -EXPORT_C CFepUiBaseCtrl* CAknFepCtrlBaseWindow::Control(TInt aCtrlId) - { - CFepUiBaseCtrl* ctrl = NULL; - RPointerArray todo; - TInt current = 0; - TBool notFound = ETrue; - - todo.Append(this); - - while (current < todo.Count() && notFound) - { - ctrl = todo[current]; - if(ctrl->ControlId() == aCtrlId) - { - notFound = EFalse; - } - else - { - if(ctrl->IsKindOfControl(ECtrlControlGroup)) - { - CControlGroup* temp = static_cast(ctrl); - for (int i = 0; i < temp->NumOfControls(); i++) - { - todo.Append(temp->At(i)); - } - } - current++; - } - } - - todo.Close(); - - return notFound ? NULL : ctrl; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputbasewindow/peninputbasewindowext.cpp --- a/textinput/peninputcommonctrls/src/peninputbasewindow/peninputbasewindowext.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,691 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CAknFepCtrlBaseWindowExt -* -*/ - - -// INCLUDES -#include -#include -#include -#include -#include -#include - #include - -#include -#include -#include -#include -#include - -#include -#include - -const TInt32 KInvalidResId = -1; -const TInt KNotSupportSkin = -1; -const TInt KInvalidImg = -1 ; -const TUint32 KDefaultTextColor = 0x000000; - - - -// --------------------------------------------------------- -// Constructor -// --------------------------------------------------------- -// -EXPORT_C CAknFepCtrlBaseWindowExt::CAknFepCtrlBaseWindowExt(CFepUiLayout* aFepUiLayout, - TInt aControlId) - :CControlGroup(aFepUiLayout,aControlId), - iCloseButton(NULL), - iFirstTimeConstruct(ETrue), - iCoeEnv(CCoeEnv::Static()) - { - } - -// --------------------------------------------------------- -// Constructor -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlBaseWindowExt::BaseConstructL() - { - CControlGroup::ConstructL(); - } - -// --------------------------------------------------------- -// Destructor -// --------------------------------------------------------- -// -EXPORT_C CAknFepCtrlBaseWindowExt::~CAknFepCtrlBaseWindowExt() - { - } - -// --------------------------------------------------------- -// Draw window frame and sub controls -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlBaseWindowExt::Draw() - { - if(Hiden() || !Ready()) - { - return; - } - - //Clear(); - - DrawOpaqueMaskBackground( Rect() ); - CFbsBitGc* gc= static_cast ( BitGc()); - /* - gc->Activate( MaskBitmapDevice() ); - gc->SetBrushStyle( CGraphicsContext::ENullBrush ); - gc->SetBrushColor( MaskBkCol() ); - gc->SetPenSize( PenSize()); - gc->SetPenColor( PenColor() ); - gc->DrawRect( Rect()); - */ - // ----- draw bitmaps ----- - - gc->Activate( BitmapDevice() ); - gc->SetBrushColor( TRgb(KOpaqueColor) ); - gc->SetPenColor( TRgb(KOpaqueColor) ); - gc->DrawRect( Rect()); - if( BackgroundBmp() && BackgroundBmp()->SizeInPixels() != Rect().Size() ) - AknIconUtils::SetSize(BackgroundBmp(), Rect().Size(), EAspectRatioNotPreserved); - - DrawBackground(); - CControlGroup::Draw(); - /* - for(TInt i=0; i< NumOfControls(); i++) - { - CFepUiBaseCtrl* ctrl = At(i); - if(!ctrl->Hiden()) - { - ctrl->Draw(); - } - }*/ - } - -// --------------------------------------------------------- -// Close window -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlBaseWindowExt::Close() - { - if (DoClose()) - { - Hide(ETrue); - } - } - -// --------------------------------------------------------- -// Enable or disable drag window -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlBaseWindowExt::SetDragEnable(TBool /*aEnable*/) - { - /*if (iMoveButton) - { - iMoveButton->EnableDragging(aEnable); - }*/ - } - -// --------------------------------------------------------- -// Handle close event -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlBaseWindowExt::HandleControlEvent(TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& /*aEventData*/) - { - if (aEventType == EEventButtonUp) - { - if (aCtrl->ControlId() == EPeninutWindowCtrlIdCloseBtn) - { - Close(); - } - } - } - -EXPORT_C TBool CAknFepCtrlBaseWindowExt::DoClose() - { - return ETrue; - } - -EXPORT_C CFepUiBaseCtrl* CAknFepCtrlBaseWindowExt::Control(TInt aCtrlId) - { - CFepUiBaseCtrl* ctrl = NULL; - RPointerArray todo; - TInt current = 0; - TBool notFound = ETrue; - - todo.Append(this); - - while (current < todo.Count() && notFound) - { - ctrl = todo[current]; - if(ctrl->ControlId() == aCtrlId) - { - notFound = EFalse; - } - else - { - if(ctrl->IsKindOfControl(ECtrlControlGroup)) - { - CControlGroup* temp = static_cast(ctrl); - for (int i = 0; i < temp->NumOfControls(); i++) - { - todo.Append(temp->At(i)); - } - } - current++; - } - } - - todo.Close(); - - return notFound ? NULL : ctrl; - } - -EXPORT_C void CAknFepCtrlBaseWindowExt::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - User::Leave(KErrArgument); - } - - TResourceReader reader; - iCoeEnv->CreateResourceReaderLC(reader, iResourceId); - - TInt supportskin = reader.ReadInt16(); - - if (iFirstTimeConstruct&& (supportskin != KNotSupportSkin)) - { - UiLayout()->AddControlL(this); - } - - // Read information of shadow - const TInt32 shadowResId = reader.ReadInt32(); - ReadShadowInfoL( shadowResId ); - - // Read information of background - const TInt32 backgroundResId = reader.ReadInt32(); - ReadBackgroundInfoL( backgroundResId ); - - // Read resource information to create base window controls - const TInt count = reader.ReadInt16(); - - if( iFirstTimeConstruct ) - { - for( TInt i = 0; i < count && iFirstTimeConstruct; i++ ) - { - const TInt16 id = reader.ReadInt16(); - const TInt32 image = reader.ReadInt32(); - CreateBaseWindowControlsL( id, image ); - } - } - else - { - CControlGroup::ConstructFromResourceL(); - // ReConstruct ICF when resource changed - CFepLayoutMultiLineIcf* multiIcf = - static_cast( Control(EPeninputWindowCtrlIdMultiLineICF)); - if( multiIcf ) - { - TResourceReader reader; - iCoeEnv->CreateResourceReaderLC( reader, multiIcf->ResourceId() ); - ReadMultiLineIcfInforL( reader, multiIcf ); - CleanupStack::PopAndDestroy( 1 ); - } - } - CleanupStack::PopAndDestroy(); // reader - - iFirstTimeConstruct = EFalse; - } - -TBool CAknFepCtrlBaseWindowExt::CreateCustomControlL( TInt16 /*aControlId*/, TInt32 /*aImageId*/ ) - { - return EFalse; - } - -void CAknFepCtrlBaseWindowExt::AddCustomControlGroupL(CFepUiBaseCtrl* aCtrl) - { - AddControlL(aCtrl); - } - -EXPORT_C void CAknFepCtrlBaseWindowExt::CreateBaseWindowControlsL( TInt16 aControlId, - TInt32 aImageId ) - { - if (CreateCustomControlL(aControlId, aImageId)) - { - return; - } - - switch ( aControlId ) - { - case EPeninutWindowCtrlIdCloseBtn: - { - CAknFepCtrlCommonButton* closeButton = - CAknFepCtrlCommonButton::NewL(UiLayout(), aControlId, - KAknsIIDQsnFrFunctionButtonNormal, - KAknsIIDQsnFrFunctionButtonPressed, - KAknsIIDQsnFrFunctionButtonInactive); - - AddCustomControlGroupL( closeButton ); - - closeButton->AddEventObserver(this); - closeButton->SetResourceId( aImageId ); - closeButton->ConstructFromResourceL(); - SetCloseButton(closeButton); - } - break; - case EPeninutWindowCtrlIdInputContextField: - { - CFepInputContextField* icf= CFepInputContextField::NewL( TRect(), - UiLayout(), aControlId ); - - AddCustomControlGroupL( icf ); - - icf->SetFocus(ETrue); - icf->AddEventObserver( UiLayout() ); - - TResourceReader reader; - iCoeEnv->CreateResourceReaderLC( reader, aImageId ); - ReadIcfInfoL( reader, icf); - CleanupStack::PopAndDestroy( 1 ); - } - break; - case EPeninputWindowCtrlIdMultiLineICF: - { - const CFont* icfFont = NULL; - TAknTextLineLayout textPaneTextLayout; - - textPaneTextLayout = - AknLayoutScalable_Avkon::fep_vkb_top_text_pane_t1().LayoutLine(); - - icfFont = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, NULL ); - CFepLayoutMultiLineIcf* multiLineIcf = NULL; - - if ( icfFont ) - { - multiLineIcf = CFepLayoutMultiLineIcf::NewL( TRect(), - UiLayout(), aControlId, icfFont->HeightInPixels(), - icfFont->FontMaxHeight(),icfFont ); - - AddCustomControlGroupL( multiLineIcf ); - - // Add layout as event observer - multiLineIcf->AddEventObserver( UiLayout() ); - multiLineIcf->SetResourceId( aImageId ); - multiLineIcf->SetFocus(ETrue); - - TResourceReader reader; - iCoeEnv->CreateResourceReaderLC( reader, aImageId ); - ReadMultiLineIcfInforL( reader,multiLineIcf ); - CleanupStack::PopAndDestroy( 1 ); - } - } - break; - case EPeninutWindowCtrlIdOptionBtn: - { - CAknFepCtrlEventButton* touchInputOptionButton = CAknFepCtrlEventButton::NewL( - UiLayout(), - aControlId, EPeninputLayoutEventOption, 0, - KAknsIIDQsnFrFunctionButtonNormal, - KAknsIIDQsnFrFunctionButtonPressed, - KAknsIIDQsnFrFunctionButtonInactive ); - - AddCustomControlGroupL( touchInputOptionButton ); - - touchInputOptionButton->AddEventObserver( UiLayout() ); - touchInputOptionButton->SetResourceId( aImageId ); - touchInputOptionButton->ConstructFromResourceL(); - } - break; - case EPeninutWindowCtrlIdBackspaceBtn: - { - CAknFepCtrlRepeatButton* backspaceButton = CAknFepCtrlRepeatButton::NewL( - UiLayout(), aControlId, EPeninputLayoutEventBack, EKeyBackspace, - KAknsIIDQsnFrFunctionButtonNormal, - KAknsIIDQsnFrFunctionButtonPressed, - KAknsIIDQsnFrFunctionButtonInactive ); - - AddCustomControlGroupL( backspaceButton ); - - backspaceButton->AddEventObserver( UiLayout() ); - backspaceButton->SetResourceId( aImageId ); - backspaceButton->ConstructFromResourceL(); - } - break; - case EPeninutWindowCtrlIdSpaceBtn: - { - CAknFepCtrlEventButton* spaceButton = CAknFepCtrlEventButton::NewL( - UiLayout(), aControlId, EPeninputLayoutEventSpace, EKeySpace, - KAknsIIDQsnFrFunctionButtonNormal, - KAknsIIDQsnFrFunctionButtonPressed, - KAknsIIDQsnFrFunctionButtonInactive ); - AddCustomControlGroupL( spaceButton ); - spaceButton->AddEventObserver( UiLayout() ); - spaceButton->SetResourceId( aImageId ); - spaceButton->ConstructFromResourceL(); - } - break; - case EPeninutWindowCtrlIdEnterBtn: - { - CAknFepCtrlEventButton* enterButton = CAknFepCtrlEventButton::NewL( - UiLayout(), aControlId, EPeninputLayoutEventEnter, EKeyEnter, - KAknsIIDQsnFrFunctionButtonNormal, - KAknsIIDQsnFrFunctionButtonPressed, - KAknsIIDQsnFrFunctionButtonInactive ); - - AddCustomControlGroupL( enterButton ); - enterButton->AddEventObserver(UiLayout()); - enterButton->SetResourceId( aImageId ); - enterButton->ConstructFromResourceL(); - } - break; - case EPeninutWindowCtrlIdSwitcherPopupWindow: - { - CPeninputLayoutInputmodelChoice* modeSwitchChoice = - CPeninputLayoutInputmodelChoice::NewL( UiLayout(), - EPeninutWindowCtrlIdSwitcherPopupWindow, - (TPluginInputMode)(UiLayout()->PenInputType())); - modeSwitchChoice->SetListSkinID( KAknsIIDQsnFrList, KAknsIIDQsnFrPopupSub ); - AddCustomControlGroupL( modeSwitchChoice ); - modeSwitchChoice->AddEventObserver( UiLayout() ); - } - break; - default: - { - } - break; - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlBaseWindowExt::ReadShadowInfoL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepCtrlBaseWindowExt::ReadShadowInfoL( TInt aResId ) - { - TResourceReader resReader; - iCoeEnv->CreateResourceReaderLC( resReader, aResId ); - - TPtrC bmpFileName = resReader.ReadTPtrC(); - TInt32 imgMajorSkinId = resReader.ReadInt32(); - - TAknsItemID id; - TInt skinitemid; - - MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); - - for ( TInt i = 0; i < KShadowBmpBr + 1; i++ ) - { - const TInt16 bmpId = resReader.ReadInt16(); - const TInt16 bmpMskId = resReader.ReadInt16(); - skinitemid = resReader.ReadInt16(); - - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidImg) - { - CFbsBitmap* shadowImg = NULL; - CFbsBitmap* shadowMaskImg = NULL; - - if (bmpMskId != KInvalidImg) - { - AknsUtils::CreateIconL(skininstance, - id, - shadowImg, - shadowMaskImg, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateIconL(skininstance, - id, - shadowImg, - bmpFileName, - bmpId); - } - - UiLayout()->SetShadowBmp(shadowImg, shadowMaskImg, TShadowBitmapIndex(i)); - } - } - CleanupStack::PopAndDestroy( 1 ); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlBaseWindowExt::ReadBackgroundInfoL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepCtrlBaseWindowExt::ReadBackgroundInfoL( TInt aResId ) - { - if( aResId == 0 ) - return; - - if( BackgroundBmp() ) - { - CFbsBitmap* bkBmp = BackgroundBmp(); - delete bkBmp; - SetBackgroundBmp( NULL ); - } - if( BkMaskBmp() ) - { - CFbsBitmap* bkMaskBmp = BkMaskBmp(); - delete bkMaskBmp; - SetBackgroundMaskBmp( NULL ); - } - - TResourceReader resReader; - iCoeEnv->CreateResourceReaderLC( resReader, aResId ); - - TPtrC bmpFileName = resReader.ReadTPtrC(); - TInt32 imgMajorSkinId = resReader.ReadInt32(); - - TAknsItemID id; - TInt skinitemid; - - MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); - const TInt16 bmpId = resReader.ReadInt16(); - const TInt16 bmpMskId = resReader.ReadInt16(); - skinitemid = resReader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidImg) - { - CFbsBitmap* backgroundImg = NULL; - CFbsBitmap* backgroundMaskImg = NULL; - if (bmpMskId != KInvalidImg) - { - AknsUtils::CreateIconL(skininstance, - id, - backgroundImg, - backgroundMaskImg, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateIconL(skininstance, - id, - backgroundImg, - bmpFileName, - bmpId); - } - - SetBackgroundBmp( backgroundImg ); - SetBackgroundMaskBmp( backgroundMaskImg ); - } - CleanupStack::PopAndDestroy( 1 ); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlBaseWindowExt::ReadIcfInfoL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CAknFepCtrlBaseWindowExt::ReadIcfInfoL(TResourceReader aResReader, - CFepInputContextField* icf ) - { - TPtrC bmpFileName = aResReader.ReadTPtrC(); - TInt32 imgMajorSkinId = aResReader.ReadInt32(); - - TAknsItemID id; - TInt skinitemid; - - MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); - - const TInt16 icfbgId = aResReader.ReadInt16(); - const TInt16 icfbgmaskId = aResReader.ReadInt16(); - skinitemid = aResReader.ReadInt16(); - - id.Set( TInt( imgMajorSkinId ), skinitemid ); - - if ( icfbgId != KInvalidImg ) - { - CFbsBitmap* icfImg = NULL; - - if (icfbgmaskId != KInvalidImg) - { - CFbsBitmap* icfmaskImg = NULL; - - AknsUtils::CreateIconL(skininstance, - id, - icfImg, - icfmaskImg, - bmpFileName, - icfbgId, - icfbgmaskId); - - AknIconUtils::SetSize(icfmaskImg, TSize(1,1), EAspectRatioNotPreserved); - icf->SetBackgroundMaskBitmapL(icfmaskImg); - } - else - { - AknsUtils::CreateIconL(skininstance, - id, - icfImg, - bmpFileName, - icfbgId); - } - - AknIconUtils::SetSize(icfImg, TSize(1,1), EAspectRatioNotPreserved); - icf->SetBackgroundBitmapL(icfImg); - } - - // read text color - TRgb textcolor; - TInt32 colorMajorSkinId = aResReader.ReadInt32(); - skinitemid = aResReader.ReadInt16(); - - id.Set(TInt(colorMajorSkinId), skinitemid); - - const TInt16 textcoloridx = aResReader.ReadInt16(); - - TInt error = AknsUtils::GetCachedColor(skininstance, - textcolor, - id, - textcoloridx); - - if (error == KErrNone) - { - icf->SetTextColor( textcolor ); - } - else - { - icf->SetTextColor( TRgb( KDefaultTextColor ) ); - } - } - -void CAknFepCtrlBaseWindowExt::ReadMultiLineIcfInforL( TResourceReader aResReader , - CFepLayoutMultiLineIcf* icf) - { - TPtrC bmpFileName = aResReader.ReadTPtrC(); - TInt32 imgMajorSkinId = aResReader.ReadInt32(); - - TAknsItemID id; - TInt skinitemid; - - MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); - - const TInt16 icfbgId = aResReader.ReadInt16(); - const TInt16 icfbgmaskId = aResReader.ReadInt16(); - skinitemid = aResReader.ReadInt16(); - - id.Set( TInt( imgMajorSkinId ), skinitemid ); - - if ( icfbgId != KInvalidImg ) - { - CFbsBitmap* icfImg = NULL; - - if (icfbgmaskId != KInvalidImg) - { - CFbsBitmap* icfmaskImg = NULL; - - AknsUtils::CreateIconL(skininstance, - id, - icfImg, - icfmaskImg, - bmpFileName, - icfbgId, - icfbgmaskId); - - AknIconUtils::SetSize(icfmaskImg, TSize(1,1), EAspectRatioNotPreserved); - icf->SetBackgroundMaskBitmapL(icfmaskImg); - } - else - { - AknsUtils::CreateIconL(skininstance, - id, - icfImg, - bmpFileName, - icfbgId); - } - - AknIconUtils::SetSize(icfImg, TSize(1,1), EAspectRatioNotPreserved); - icf->SetBackgroundBitmapL(icfImg); - } - - // read text color - TRgb textcolor; - TInt32 colorMajorSkinId = aResReader.ReadInt32(); - skinitemid = aResReader.ReadInt16(); - - id.Set(TInt(colorMajorSkinId), skinitemid); - - const TInt16 textcoloridx = aResReader.ReadInt16(); - - TInt error = AknsUtils::GetCachedColor(skininstance, - textcolor, - id, - textcoloridx); - - if (error == KErrNone) - { - icf->SetTextColorL( textcolor ); - } - else - { - icf->SetTextColorL( TRgb( KDefaultTextColor ) ); - } - } - - - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputbuttons/peninputbutton.cpp --- a/textinput/peninputcommonctrls/src/peninputbuttons/peninputbutton.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4098 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of button -* -*/ - - -// system includes -#include -#include -#include -#include -#include -#include -#include -// user includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -const TInt KInvalidBmp = -1 ; - -//default value for long press timer -const TInt KLongPressInterval = 600000; - -//default value for repeat timer -const TInt KRepeatInterval = 100000; - -//default text color and shadow text color -const TUint32 KDefaultTextColor = 0x000000; -const TUint32 KDefaultShadowTextColor = 0xffffff; -const TInt32 KInvalidResId = -1; -const TInt KInvalidEventId = 0xffff; -//const TInt KFadingParamBlack = 255; -//const TInt KFadingParamWhite = 0; - -const TInt KTransparency[256] = - { - 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 7, 7, 7, - 8, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, - 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 19, - 19, 19, 20, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 23, 24, 24, - 24, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 28, 28, 28, 29, 29, 29, 29, - 30, 30, 30, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, - 35, 35, 36, 36, 36, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 40, 40, 40, - 41, 41, 41, 41, 42, 42, 42, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 46, - 46, 46, 47, 47, 47, 47, 48, 48, 48, 49, 49, 49, 50, 50, 50, 50, 51, 51, - 51, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 55, 55, 55, 56, 56, 56, 56, - 57, 57, 57, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62, - 62, 62, 63, 63, 63, 64, 64, 64, 65, 65, 65, 65, 66, 66, 66, 67, 67, 67, - 68, 68, 68, 68, 69, 69, 69, 70, 70, 70, 71, 71, 71, 71, 72, 72, 72, 73, - 73, 73, 74, 74, 74, 74, 75, 75, 75, 76, 76, 76, 77, 77 - }; -// Invalid function icon color group -const TInt KInvalidColorGroup = -1; - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CAknFepCtrlButton::CAknFepCtrlButton -// C++ default constructor can NOT contain any code, that -// might leave. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlButton::CAknFepCtrlButton(CFepUiLayout* aUiLayout, TInt aControlId) -: CButtonBase(TRect(), aUiLayout, aControlId), iFirstTimeConstruct(ETrue), iHighlight(EFalse) - { - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlButton::NewL -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlButton* CAknFepCtrlButton::NewL(CFepUiLayout* aUiLayout, TInt aControlId) - { - CAknFepCtrlButton* self = NewLC(aUiLayout, aControlId); - CleanupStack::Pop(self); - - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlButton::NewLC -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlButton* CAknFepCtrlButton::NewLC(CFepUiLayout* aUiLayout, TInt aControlId) - { - CAknFepCtrlButton* self = new (ELeave) CAknFepCtrlButton(aUiLayout, aControlId); - CleanupStack::PushL(self); - self->BaseConstructL(); - - return self; - } - -// ----------------------------------------------------------------------------- -// Destructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlButton::~CAknFepCtrlButton() - { - iBmpList.Close(); - iMaskBmpList.Close(); - } -// --------------------------------------------------------------------------- -// CAknFepCtrlButton::ConstructFromResourceL -// The order of the image ids in the CButtonBase class must not be changed -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlButton::ConstructFromResourceL(TResourceReader& aReader) - { - if (!iFirstTimeConstruct) - { - iBmpList.Close(); - iMaskBmpList.Close(); - ResetBmpPool(); - } - - TPtrC bmpFileName = aReader.ReadTPtrC(); // Read the file name of the bmps - TInt32 imgMajorSkinId = aReader.ReadInt32(); - TInt colorgroup = aReader.ReadInt16(); - TAknsItemID id; - - for (TInt ii = 0; ii < EBtnBmpLastType + 1; ++ii) - { - // Get the image ids and mask ids from resource - TInt bmpId = aReader.ReadInt16(); - TInt bmpMskId = aReader.ReadInt16(); - - // read skin item id - const TInt skinitemid = aReader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - CFbsBitmap* bmp = NULL; - CFbsBitmap* maskbmp = NULL; - - if (bmpMskId != KInvalidBmp) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - maskbmp, - bmpFileName, - bmpId, - bmpMskId); - - // set maskbmp and size - SetMaskBitmapL(maskbmp, TButtonBmpType(EBtnBmpNonActive + ii)); - iMaskBmpList.Append(maskbmp); - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - bmpFileName, - bmpId); - } - - // set bmp and size - SetBitmapL(bmp, TButtonBmpType(EBtnBmpNonActive + ii)); - iBmpList.Append(bmp); - } - } - - if (!iFirstTimeConstruct) - { - ResizeBitmaps(Rect().Size()); - Draw(); - } - - iFirstTimeConstruct = EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlButton::ConstructFromResourceL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlButton::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - User::Leave(KErrArgument); - } - - if (!iFirstTimeConstruct) - { - // need to remove original bmp and maskbmp - iBmpList.Close(); - iMaskBmpList.Close(); - ResetBmpPool(); - } - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - - TPtrC bmpFileName = reader.ReadTPtrC(); // Read the file name of the bmps - TInt32 imgMajorSkinId = reader.ReadInt32(); - TInt colorgroup = reader.ReadInt16(); - TAknsItemID id; - - for (TInt ii = 0; ii < EBtnBmpLastType + 1; ++ii) - { - // Get the image ids and mask ids from resource - TInt bmpId = reader.ReadInt16(); - TInt bmpMskId = reader.ReadInt16(); - - // read skin item id - const TInt skinitemid = reader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - CFbsBitmap* bmp = NULL; - CFbsBitmap* maskbmp = NULL; - - if (bmpMskId != KInvalidBmp) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - maskbmp, - bmpFileName, - bmpId, - bmpMskId); - - // set maskbmp and size - SetMaskBitmapL(maskbmp, TButtonBmpType(EBtnBmpNonActive + ii)); - iMaskBmpList.Append(maskbmp); - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - bmpFileName, - bmpId); - } - - // set bmp and size - SetBitmapL(bmp, TButtonBmpType(EBtnBmpNonActive + ii)); - iBmpList.Append(bmp); - } - } - - CleanupStack::PopAndDestroy(); // reader - - if (!iFirstTimeConstruct) - { - ResizeBitmaps(Rect().Size()); - Draw(); - } - - iFirstTimeConstruct = EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlButton::Draw -// Draws UI -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlButton::Draw() - { - if(!AbleToDraw()) - return; - - if ( !BackgroundBmp() ) - { - CButtonBase::Draw(); - } - - CFbsBitGc* gc = static_cast(BitGc()); - - //mask bitmaps - gc->Activate( MaskBitmapDevice() ); - - gc->SetBrushStyle( CGraphicsContext::ESolidBrush ); - gc->SetBrushColor( TRgb(KOpaqueColor));//Non transparent at all - gc->SetPenStyle(CGraphicsContext::ESolidPen ); - gc->SetPenSize( PenSize()); - gc->SetPenColor( TRgb(KOpaqueColor) ); - gc->DrawRect(Rect()); - - // ----- draw bitmaps ----- - gc->Activate( BitmapDevice() ); - if ( BackgroundBmp() ) - { - TSize size=BackgroundBmp()->SizeInPixels(); - - gc->DrawBitmap(Rect(), BackgroundBmp(),size); - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlButton::SetActive -// Set active for the button -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlButton::SetActive(TBool aActiveFlag) - { - if( IsDimmed() ) - { - return; - } - - if(IsActive() != aActiveFlag) - { - CFepUiBaseCtrl::SetActive(aActiveFlag); - if(aActiveFlag || iHighlight) - { - SetBackgroundBmp(Bitmap(EBtnBmpActive,EFalse)); - SetBackgroundMaskBmp(Bitmap(EBtnBmpActive,ETrue)); - //Hide(EFalse); //active button won't be Hiden ??? - } - else - { - SetBackgroundBmp(Bitmap(EBtnBmpNonActive,EFalse)); - SetBackgroundMaskBmp(Bitmap(EBtnBmpNonActive,ETrue)); - } - if(BitGc()) - { - Draw(); - UpdateArea(Rect(),EFalse); - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlButton::SetHighlight -// Set highlight for the button -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlButton::SetHighlight(TBool aIsHighlight) - { - iHighlight = aIsHighlight; - - if ( iHighlight ) - { - SetBackgroundBmp(Bitmap(EBtnBmpActive,EFalse)); - SetBackgroundMaskBmp(Bitmap(EBtnBmpActive,ETrue)); - } - else - { - SetBackgroundBmp(Bitmap(EBtnBmpNonActive,EFalse)); - SetBackgroundMaskBmp(Bitmap(EBtnBmpNonActive,ETrue)); - } - Draw(); - UpdateArea(Rect(), EFalse); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlButton::ResizeBitmaps -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlButton::ResizeBitmaps(TSize aSize) - { - if (iMaskBmpList.Count() >= 1 && - iMaskBmpList[0]->SizeInPixels() != aSize) - { - for( int ii = 0; ii < iMaskBmpList.Count(); ++ii ) - { - AknIconUtils::SetSize(iMaskBmpList[ii], aSize, EAspectRatioNotPreserved); - } - } - - if (iBmpList.Count() >= 1 && - iBmpList[0]->SizeInPixels() != aSize) - { - for( int ii = 0; ii < iBmpList.Count(); ++ii ) - { - AknIconUtils::SetSize(iBmpList[ii], aSize, EAspectRatioNotPreserved); - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlButton::SizeChanged -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlButton::SizeChanged(TRect aNewRect, TBool aIsReloadImages) - { - if ((aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0) && - (ControlId() != EPeninupWindowCtrlIdArrowLeftBtn && - ControlId() != EPeninupWindowCtrlIdArrowRightBtn)) - { - return; - } - - SetRect(aNewRect); - - //if (aIsReloadImages) - { - ResizeBitmaps(aNewRect.Size()); - } - - Draw(); - UpdateArea(Rect(), EFalse); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlButton::HandlePointerLeave -// Handle pointer leave event -// --------------------------------------------------------------------------- -// -void CAknFepCtrlButton::HandlePointerLeave(const TPoint& aPt) - { - if( IsDimmed() ) - return; - if( iHighlight ) - { - SetBackgroundBmp(iActiveBmp); - SetBackgroundMaskBmp(iActiveMaskBmp); - } - - else - { - SetBackgroundBmp(iNonActiveBkBmp); - SetBackgroundMaskBmp(iNonActiveBkMaskBmp); - } - Draw(); - UpdateArea(Rect(), EFalse); - CFepUiBaseCtrl::HandlePointerLeave(aPt); - return ; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlDragButton::CAknFepCtrlDragButton -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlDragButton::CAknFepCtrlDragButton(CFepUiLayout* aUiLayout, TInt aControlId) -: CDragBar(TRect(), aUiLayout, aControlId), iFirstTimeConstruct(ETrue) - { - } - -// ----------------------------------------------------------------------------- -// Destructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlDragButton::~CAknFepCtrlDragButton() - { - iBmpList.Close(); - iMaskBmpList.Close(); - - DeleteForgroundRes(); - delete iText; - } - - -// ----------------------------------------------------------------------------- -// CAknFepCtrlDragButton::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlDragButton* CAknFepCtrlDragButton::NewL(CFepUiLayout* aUiLayout, - TInt aControlId) - { - CAknFepCtrlDragButton* self = NewLC(aUiLayout, aControlId); - CleanupStack::Pop(self); - - return self; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlDragButton::NewLC -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlDragButton* CAknFepCtrlDragButton::NewLC(CFepUiLayout* aUiLayout, - TInt aControlId) - { - CAknFepCtrlDragButton* self = new (ELeave) CAknFepCtrlDragButton(aUiLayout, aControlId); - CleanupStack::PushL(self); - self->ConstructL(); - - return self; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlDragButton::ConstructFromResourceL -// The order of the image ids in the CButtonBase class must not be changed -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlDragButton::ConstructFromResourceL(TResourceReader& aReader) - { - /* - if (!iFirstTimeConstruct) - { - iBmpList.Close(); - iMaskBmpList.Close(); - ResetBmpPool(); - } - - TPtrC bmpFileName = aReader.ReadTPtrC(); - TInt32 imgMajorSkinId = aReader.ReadInt32(); - TAknsItemID id; - - for (TInt ii = 0; ii < EBtnBmpLastType + 1; ++ii) - { - const TInt16 bmpId = aReader.ReadInt16(); - const TInt16 bmpMskId = aReader.ReadInt16(); - - // read skin item id - const TInt skinitemid = aReader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - CFbsBitmap* bmp = NULL; - CFbsBitmap* maskbmp = NULL; - - if (bmpMskId != KInvalidBmp) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - maskbmp, - bmpFileName, - bmpId, - bmpMskId); - - SetMaskBitmapL(maskbmp, TButtonBmpType(EBtnBmpNonActive + ii)); - iMaskBmpList.Append(maskbmp); - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - bmpFileName, - bmpId); - } - - SetBitmapL(bmp, TButtonBmpType(EBtnBmpNonActive + ii)); - iBmpList.Append(bmp); - } - } - - if (!iFirstTimeConstruct) - { - ResizeBitmaps(Rect().Size()); - Draw(); - } - - iFirstTimeConstruct = EFalse;*/ - if (!iFirstTimeConstruct) - { - DeleteForgroundRes(); - } - - TPtrC bmpFileName = aReader.ReadTPtrC(); // Read the file name of the bmps - TInt32 imgMajorSkinId = aReader.ReadInt32(); - TInt colorGroup = aReader.ReadInt16(); - TAknsItemID id; - - // Get the image ids and mask ids from resource - TInt bmpId = aReader.ReadInt16(); - TInt bmpMskId = aReader.ReadInt16(); - - // read skin item id - const TInt skinitemid = aReader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - if (bmpMskId != KInvalidBmp) - { - if( colorGroup == KInvalidColorGroup ) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForgroundBmp, - iForgroundBmpMask, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), - id, - KAknsIIDQsnIconColors, - colorGroup, - iForgroundBmp, - iForgroundBmpMask, - bmpFileName, - bmpId, - bmpMskId, - AKN_LAF_COLOR( 0 ) ); - } - - AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved); - AknIconUtils::SetSize(iForgroundBmpMask, iForgroundBmpRect.Size(), - EAspectRatioNotPreserved); - - /*CreateDimmedMaskL( iForgroundDimBmpMask, - iForgroundBmpMask ); - AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(), - EAspectRatioNotPreserved);*/ - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForgroundBmp, - bmpFileName, - bmpId); - AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved); - } - } - - if (!iFirstTimeConstruct) - { - //ResizeBitmaps(iForgroundBmpRect.Size()); - Draw(); - } - - iFirstTimeConstruct = EFalse; - - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlDragButton::ConstructFromResourceL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlDragButton::ConstructFromResourceL() - { - /* - if (iResourceId == KInvalidResId) - { - User::Leave(KErrArgument); - } - - if (!iFirstTimeConstruct) - { - iBmpList.Close(); - iMaskBmpList.Close(); - ResetBmpPool(); - } - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - - TPtrC bmpFileName = reader.ReadTPtrC(); - TInt32 imgMajorSkinId = reader.ReadInt32(); - TAknsItemID id; - - for (TInt ii = 0; ii < EBtnBmpLastType + 1; ++ii) - { - const TInt16 bmpId = reader.ReadInt16(); - const TInt16 bmpMskId = reader.ReadInt16(); - - // read skin item id - const TInt skinitemid = reader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - CFbsBitmap* bmp = NULL; - CFbsBitmap* maskbmp = NULL; - - if (bmpMskId != KInvalidBmp) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - maskbmp, - bmpFileName, - bmpId, - bmpMskId); - - SetMaskBitmapL(maskbmp, TButtonBmpType(EBtnBmpNonActive + ii)); - iMaskBmpList.Append(maskbmp); - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - bmpFileName, - bmpId); - } - - SetBitmapL(bmp, TButtonBmpType(EBtnBmpNonActive + ii)); - iBmpList.Append(bmp); - } - } - - CleanupStack::PopAndDestroy(); // reader - - if (!iFirstTimeConstruct) - { - ResizeBitmaps(Rect().Size()); - Draw(); - } - - iFirstTimeConstruct = EFalse;*/ - if (iResourceId == KInvalidResId) - { - return; - } - - if (!iFirstTimeConstruct) - { - // need to remove original bmp and maskbmp - DeleteForgroundRes(); - } - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - - TPtrC bmpFileName = reader.ReadTPtrC(); // Read the file name of the bmps - TInt32 imgMajorSkinId = reader.ReadInt32(); - TInt colorGroup = reader.ReadInt16(); - TAknsItemID id; - - // Get the image ids and mask ids from resource - TInt bmpId = reader.ReadInt16(); - TInt bmpMskId = reader.ReadInt16(); - - // Read skin item id - const TInt skinitemid = reader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - if (bmpMskId != KInvalidBmp) - { - if( colorGroup == KInvalidColorGroup ) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForgroundBmp, - iForgroundBmpMask, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), - id, - KAknsIIDQsnIconColors, - colorGroup, - iForgroundBmp, - iForgroundBmpMask, - bmpFileName, - bmpId, - bmpMskId, - AKN_LAF_COLOR( 0 ) ); - } - - AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved); - AknIconUtils::SetSize(iForgroundBmpMask, iForgroundBmpRect.Size(), - EAspectRatioNotPreserved); - - /*CreateDimmedMaskL( iForgroundDimBmpMask, iForgroundBmpMask ); - AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(), - EAspectRatioNotPreserved);*/ - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForgroundBmp, - bmpFileName, - bmpId); - AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved); - } - } - - CleanupStack::PopAndDestroy(); // reader - - if (!iFirstTimeConstruct) - { - //ResizeBitmaps(iForgroundBmpRect.Size()); - Draw(); - } - - iFirstTimeConstruct = EFalse; - - } - - -// --------------------------------------------------------------------------- -// CAknFepCtrlDragButton::DeleteForgroundRes -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlDragButton::DeleteForgroundRes() - { - if( iForgroundBmp ) - { - delete iForgroundBmp; - iForgroundBmp = NULL; - } - if( iForgroundBmpMask ) - { - delete iForgroundBmpMask; - iForgroundBmpMask = NULL; - } - if( iForgroundDimBmpMask ) - { - delete iForgroundDimBmpMask; - iForgroundDimBmpMask = NULL; - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlDragButton::CreateDimmedMaskL -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlDragButton::CreateDimmedMaskL( CFbsBitmap*& aDimmedMask, - const CFbsBitmap* aMask - /*TScaleMode aScaleMode*/ ) - { - if (aMask && aMask->DisplayMode() == EGray256) - { - delete aDimmedMask; - aDimmedMask = NULL; - - aDimmedMask = new (ELeave) CFbsBitmap; - - User::LeaveIfError(aDimmedMask->Create(aMask->SizeInPixels(), EGray256)); - CleanupStack::PushL(aDimmedMask); - - CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(aDimmedMask); - CleanupStack::PushL(bitmapDevice); - - CFbsBitGc* bitGc(NULL); - User::LeaveIfError(bitmapDevice->CreateContext(bitGc)); - CleanupStack::PushL(bitGc); - - bitGc->SetPenStyle(CGraphicsContext::ESolidPen); - bitGc->BitBlt(TPoint(0, 0), aMask); - - aDimmedMask->LockHeap(); - TInt w = aMask->SizeInPixels().iWidth; - TInt h = aMask->SizeInPixels().iHeight; - TInt dataStride = aMask->DataStride() - w; - unsigned char* address = (unsigned char *)aDimmedMask->DataAddress(); - - for ( TInt i = 0; i < h; ++i ) - { - for ( TInt j = 0; j < w; ++j ) - { - *address = KTransparency[*address]; - ++address; - } - address += dataStride; - } - - aDimmedMask->UnlockHeap(); - - //AknIconUtils::SetSize(aDimmedMask, aMask->SizeInPixels(), aScaleMode); - - CleanupStack::PopAndDestroy(2); // bitmapDevice, bitGc - CleanupStack::Pop(1); // aDimmedMask - } - - } - - -// --------------------------------------------------------------------------- -// CAknFepCtrlDragButton::SetForgroundBmpRect -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlDragButton::SetForgroundBmpRect(const TRect& aRect) - { - iForgroundBmpRect = aRect; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlDragButton::SetForegroundBmpL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlDragButton::SetForegroundBmpL(CFbsBitmap* aBmp, - CFbsBitmap* aMaskBmp) - { - DeleteForgroundRes(); - - iForgroundBmp = aBmp; - iForgroundBmpMask = aMaskBmp; - - ResizeBitmaps(iForgroundBmpRect.Size()); - } - -EXPORT_C void CAknFepCtrlDragButton::Move(const TPoint& aOffset) - { - CButtonBase::Move(aOffset); - iForgroundBmpRect.Move( aOffset ); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlDragButton::HandlePointerDownEventL -// Handle button down event -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CFepUiBaseCtrl* CAknFepCtrlDragButton::HandlePointerDownEventL(const TPoint& aPt) - { - if( IsDimmed() ) - return NULL; - - CDragBar::HandlePointerDownEventL(aPt); - - SetReady(ETrue); - Draw(); - UpdateArea(Rect(),EFalse); - ReportEvent(EEventButtonDown); - return this; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlDragButton::Draw -// Draws UI -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlDragButton::Draw() - { - if(!AbleToDraw()) - return; - - CFbsBitGc* gc = static_cast(BitGc()); - - //mask bitmaps - DrawOpaqueMaskBackground(); - TRect rect = Rect(); - TRect innerRect = rect; - innerRect.Shrink( 10, 10 ); - - // ----- draw bitmaps ----- - gc->Activate( BitmapDevice() ); - //gc->Clear(rect); - - CFbsBitmap* bmpMask = NULL; - - // Draw background - if( IsDimmed() ) // Dimmed state - { - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *gc, - rect, - innerRect, - iInactiveImgID, - KAknsIIDDefault ); - if( iForgroundDimBmpMask ) - { - delete iForgroundDimBmpMask; - iForgroundDimBmpMask = NULL; - } - TRAP_IGNORE(CreateDimmedMaskL( iForgroundDimBmpMask, - iForgroundBmpMask )); - AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(), - EAspectRatioNotPreserved); - bmpMask = iForgroundDimBmpMask; - } - else - { - // Normal state or pressed state - TAknsItemID ImgID = (IsDragging() | PointerDown()) ? iPressedImgID : iNormalImgID; - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *gc, - rect, - innerRect, - ImgID, - KAknsIIDDefault ); - bmpMask = iForgroundBmpMask; - } - - // Draw forground - if( iForgroundBmp ) - { - TRect srcRect( TPoint( 0, 0 ), iForgroundBmp->SizeInPixels() ); - if( bmpMask ) - { - gc->BitBltMasked( iForgroundBmpRect.iTl, - iForgroundBmp, - srcRect, - bmpMask, - EFalse); - } - else - { - gc->BitBlt( iForgroundBmpRect.iTl, - iForgroundBmp, - srcRect ); - } - } - - if (iText) - { - TAknLayoutText textLayout; - textLayout.LayoutText(Rect(), iTextFormat); - textLayout.DrawText(*gc, *iText); - } - } - - -// ----------------------------------------------------------------------------- -// CAknFepCtrlDragButton::ResizeBitmaps -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepCtrlDragButton::ResizeBitmaps(TSize aInnerSize) - { - /* - if (iMaskBmpList.Count() >= 1 && - iMaskBmpList[0]->SizeInPixels() != aSize) - { - for( TInt ii = 0; ii < iMaskBmpList.Count(); ++ii ) - { - AknIconUtils::SetSize(iMaskBmpList[ii], aSize, EAspectRatioNotPreserved); - } - } - - if (iBmpList.Count() >= 1 && - iBmpList[0]->SizeInPixels() != aSize) - { - for( TInt ii = 0; ii < iBmpList.Count(); ++ii ) - { - AknIconUtils::SetSize(iBmpList[ii], aSize, EAspectRatioNotPreserved); - } - }*/ - if( iForgroundBmp && ( iForgroundBmp->SizeInPixels() != aInnerSize ) ) - { - AknIconUtils::SetSize( iForgroundBmp, aInnerSize, EAspectRatioNotPreserved ); - } - if( iForgroundBmpMask && ( iForgroundBmpMask->SizeInPixels() != aInnerSize ) ) - { - AknIconUtils::SetSize( iForgroundBmpMask, aInnerSize, EAspectRatioNotPreserved ); - } - - /*TRAP_IGNORE(CreateDimmedMaskL(iForgroundDimBmpMask, - iForgroundBmpMask)); */ - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlDragButton::SizeChanged -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlDragButton::SizeChanged(TRect aNewRect, - TRect aInnerRect, - TBool aIsReloadImages) - { - // Reset the position and the extent of the button aera - /*if (aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0) - { - return; - } - - SetRect(aNewRect); - - if (aIsReloadImages) - { - ResizeBitmaps(aNewRect.Size()); - } - - Draw(); - UpdateArea(Rect(), ETrue);*/ - - if (aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0) - { - return; - } - - TRect oriRect = Rect(); - SetRect(aNewRect); - iForgroundBmpRect = aInnerRect; - - if (aIsReloadImages) - { - ResizeBitmaps(aInnerRect.Size() ); - } - RootControl()->ReDrawRect( oriRect ); - UpdateArea(oriRect, EFalse); - Draw(); - UpdateArea(Rect(), EFalse); - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::CAknFepCtrlMultiModeButton -// C++ default constructor can NOT contain any code, that -// might leave. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlMultiModeButton::CAknFepCtrlMultiModeButton(CFepUiLayout* aUiLayout, - TInt aControlId,TAknsItemID aNormalID, - TAknsItemID aPressedID,TAknsItemID aInactiveID) - : CAknFepCtrlCommonButton(aUiLayout, aControlId, aNormalID, aPressedID, aInactiveID) - { - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::NewL -// Two-phased constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlMultiModeButton* CAknFepCtrlMultiModeButton::NewL(CFepUiLayout* aUiLayout, - TInt aControlId,TAknsItemID aNormalID, - TAknsItemID aPressedID,TAknsItemID aInactiveID) - { - CAknFepCtrlMultiModeButton* self = NewLC(aUiLayout, aControlId, - aNormalID, aPressedID, aInactiveID); - CleanupStack::Pop(self); - - return self; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::NewLC -// Two-phased constructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlMultiModeButton* CAknFepCtrlMultiModeButton::NewLC(CFepUiLayout* aUiLayout, - TInt aControlId,TAknsItemID aNormalID, - TAknsItemID aPressedID,TAknsItemID aInactiveID) - { - CAknFepCtrlMultiModeButton* self = new (ELeave) CAknFepCtrlMultiModeButton(aUiLayout, - aControlId, - aNormalID, - aPressedID, - aInactiveID); - CleanupStack::PushL(self); - self->BaseConstructL(); - - return self; - } - -// ----------------------------------------------------------------------------- -// Destructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlMultiModeButton::~CAknFepCtrlMultiModeButton() - { - iImageResIdList.Close(); - iForegroundBmpList.ResetAndDestroy(); - iForegroundBmpList.Close(); - iForegroundMaskBmpList.ResetAndDestroy(); - iForegroundMaskBmpList.Close(); - - iModeTextList.ResetAndDestroy(); - iModeTextList.Close(); - - iModesList.ResetAndDestroy(); - iModesList.Close(); - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::ConstructFromResourceL -// The order of the image ids in the CButtonBase class must not be changed -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// - -EXPORT_C void CAknFepCtrlMultiModeButton::ConstructFromResourceL(TResourceReader& aReader) - { - if (!iFirstTimeConstruct) - { - iImageResIdList.Close(); - iForegroundBmpList.ResetAndDestroy(); - iForegroundBmpList.Close(); - iForegroundMaskBmpList.ResetAndDestroy(); - iForegroundMaskBmpList.Close(); - - iModeTextList.ResetAndDestroy(); - iModeTextList.Close(); - - - iModesList.ResetAndDestroy(); - iModesList.Close(); - - ResetBmpPool(); - } - - // read text color and shadow text color - TInt32 colorMajorSkinId = aReader.ReadInt32(); - const TInt skinitemid = aReader.ReadInt16(); - TInt textcoloridx = aReader.ReadInt16(); - TInt shadowtextcoloridx = aReader.ReadInt16(); - - TAknsItemID id; - - id.Set(TInt(colorMajorSkinId), skinitemid); - TInt error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iFontColor, - id, - textcoloridx); - - if (error != KErrNone) - { - iFontColor = TRgb(KDefaultTextColor); - } - - SetFontColor(iFontColor); - - error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iShadowFontColor, - id, - shadowtextcoloridx); - - if (error != KErrNone) - { - iShadowFontColor = TRgb(KDefaultShadowTextColor); - } - - SetShadowFontColor(iShadowFontColor); - - const TInt16 countModes = aReader.ReadInt16(); // Read the count of different cases - - if (countModes <= 0) - { - User::Leave(KErrArgument); - } - - iNumberOfModes = 0; - - for (TInt ii = 0; ii < countModes; ii++) - { - AddModeL(aReader); - iNumberOfModes++; - } - - if (iFirstTimeConstruct) - { - if (iImageResIdList.Count() == 1) - { - // set background bimap for button - SetButtonBmpL(EBtnBmpNonActive, 0); - iCurrentBmpType = EBtnBmpNonActive; - } - - const TInt16 defaultModeIndex = aReader.ReadInt16(); - SetCurrentModeL(EBtnBmpNonActive, defaultModeIndex); - } - else - { - SetButtonBmpL(iCurrentBmpType, iCurrentMode); - Draw(); - } - - iFirstTimeConstruct = EFalse; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::ConstructFromResourceL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// - -EXPORT_C void CAknFepCtrlMultiModeButton::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - return; - } - - if (!iFirstTimeConstruct) - { - iImageResIdList.Close(); - iForegroundBmpList.ResetAndDestroy(); - iForegroundBmpList.Close(); - iForegroundMaskBmpList.ResetAndDestroy(); - iForegroundMaskBmpList.Close(); - - iModeTextList.ResetAndDestroy(); - iModeTextList.Close(); - - - iModesList.ResetAndDestroy(); - iModesList.Close(); - - ResetBmpPool(); - } - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - - // read text color and shadow text color - TInt32 colorMajorSkinId = reader.ReadInt32(); - const TInt skinitemid = reader.ReadInt16(); - TInt textcoloridx = reader.ReadInt16(); - TInt shadowtextcoloridx = reader.ReadInt16(); - - TAknsItemID id; - - id.Set(TInt(colorMajorSkinId), skinitemid); - TInt error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iFontColor, - id, - textcoloridx); - - if (error != KErrNone) - { - iFontColor = TRgb(KDefaultTextColor); - } - - SetFontColor(iFontColor); - - error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iShadowFontColor, - id, - shadowtextcoloridx); - - if (error != KErrNone) - { - iShadowFontColor = TRgb(KDefaultShadowTextColor); - } - - SetShadowFontColor(iShadowFontColor); - - const TInt16 countModes = reader.ReadInt16(); - - if (countModes <= 0) - { - User::Leave(KErrArgument); - } - - iNumberOfModes = 0; - - for (TInt ii = 0; ii < countModes; ii++) - { - AddModeL(reader); - iNumberOfModes++; - } - - - if (iFirstTimeConstruct) - { - if (iImageResIdList.Count() == 1) - { - // set background bimap for button - SetButtonBmpL(EBtnBmpNonActive, 0); - iCurrentBmpType = EBtnBmpNonActive; - } - - const TInt16 defaultModeIndex = reader.ReadInt16(); - SetCurrentModeL(EBtnBmpNonActive, defaultModeIndex); - } - else - { - ResizeBitmaps(iForgroundBmpRect.Size()); - SetButtonBmpL(iCurrentBmpType, iCurrentMode); - Draw(); - } - - CleanupStack::PopAndDestroy(); // reader - - iFirstTimeConstruct = EFalse; - - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::AddModeL -// Add new display mode from resource reader -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiModeButton::AddModeL(TResourceReader& aReader) - { - const TInt32 imageResId = aReader.ReadInt32(); - iModeTextList.Append(aReader.ReadHBufCL()); - const TInt rangeId = aReader.ReadInt16(); - const TInt modeId = aReader.ReadInt16(); - - TAknFepModeIndicator* modeIndicator = new (ELeave) TAknFepModeIndicator; - CleanupStack::PushL(modeIndicator); - - modeIndicator->iRangeId = rangeId; - modeIndicator->iModeId = modeId; - modeIndicator->iPermitted = ETrue; - - iModesList.AppendL(modeIndicator); - CleanupStack::Pop(modeIndicator); // indicator - - if ( imageResId != KInvalidBmp ) - { - // switch mode means change image - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, imageResId); - - TPtrC bmpFileName = reader.ReadTPtrC(); - TInt32 imgMajorSkinId = reader.ReadInt32(); - TInt colorGroup = reader.ReadInt16(); - TAknsItemID id; - - for (TInt jj = 0; jj < /*EBtnBmpLastType +*/ 1; jj++) - { - const TInt16 bmpId = reader.ReadInt16(); - const TInt16 bmpMskId = reader.ReadInt16(); - const TInt16 skinitemid = reader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - CFbsBitmap* bmp = NULL; - CFbsBitmap* maskbmp = NULL; - - if (bmpMskId != KInvalidBmp) - { - if( colorGroup == KInvalidColorGroup ) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - maskbmp, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), - id, - KAknsIIDQsnIconColors, - colorGroup, - bmp, - maskbmp, - bmpFileName, - bmpId, - bmpMskId, - AKN_LAF_COLOR( 0 ) ); - - } - CleanupStack::PushL(maskbmp); - AknIconUtils::SetSize(maskbmp, iForgroundBmpRect.Size(), - EAspectRatioNotPreserved); - iForegroundMaskBmpList.AppendL(maskbmp); - CleanupStack::Pop(maskbmp); - - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - bmpFileName, - bmpId); - - } - - CleanupStack::PushL(bmp); - AknIconUtils::SetSize(bmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved); - iForegroundBmpList.AppendL(bmp); - CleanupStack::Pop(bmp); - - } - } - - CleanupStack::PopAndDestroy(); //reader - - iImageResIdList.Append(imageResId); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::SetButtonBmp -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiModeButton::SetButtonBmpL(const TButtonBmpType aType , - const TInt aMode) - { - if ( !ForgroundBmp() || - ForgroundBmp()->Handle() != iForegroundBmpList[aMode]->Handle() || - !ForgroundBmpMask() || - ForgroundBmpMask()->Handle() != iForegroundMaskBmpList[aMode]->Handle() ) - { - CFbsBitmap* bmp = new (ELeave) CFbsBitmap; - if(iForegroundMaskBmpList.Count() > 0 && iForegroundBmpList[aMode]) - { - CleanupStack::PushL( bmp ); - - User::LeaveIfError(bmp->Duplicate(iForegroundBmpList[aMode]->Handle())); - - CleanupStack::Pop( bmp ); - } - else - { - delete bmp; - bmp = NULL; - } - CFbsBitmap* maskbmp = new (ELeave) CFbsBitmap; - - if(iForegroundMaskBmpList.Count() > 0 && iForegroundMaskBmpList[aMode]) - { - CleanupStack::PushL( maskbmp ); - User::LeaveIfError(maskbmp->Duplicate(iForegroundMaskBmpList[aMode]->Handle())); - CleanupStack::Pop( maskbmp ); - } - else - { - delete maskbmp; - maskbmp = NULL; - } - SetForegroundBmpL(bmp,maskbmp); - } - else if ( ForgroundBmp()->SizeInPixels() != iForegroundBmpList[aMode]->SizeInPixels() || - ForgroundBmpMask()->SizeInPixels() != iForegroundMaskBmpList[aMode]->SizeInPixels()) - { - ResizeBitmaps(iForegroundBmpList[aMode]->SizeInPixels()); - } - - if(aType == EBtnBmpActivePressed - || aType == EBtnBmpNonActivePressed) - { - SetHighlight(ETrue); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::SetCurrentModeL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiModeButton::SetCurrentModeL(const TButtonBmpType aType, - const TInt aModeIndex) - { - if ((aModeIndex >= 0) && - (aModeIndex <= NumberOfModes()-1) && - (iModesList[aModeIndex]->iPermitted)) - { - iCurrentMode = aModeIndex; - - if (iImageResIdList.Count() > 1) - { - // change mode means change image - SetButtonBmpL(aType, iCurrentMode); - iCurrentBmpType = aType; - } - - Draw(); - UpdateArea(Rect()); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::NextMode -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CAknFepCtrlMultiModeButton::NextMode() const - { - TInt startIndex = 0; - - if (iCurrentMode < (NumberOfModes() -1)) - { - startIndex = iCurrentMode + 1; - } - - TBool find = EFalse; - - while (!find && (startIndex != iCurrentMode)) - { - if (iModesList[startIndex]->iPermitted) - { - find = ETrue; - } - else - { - startIndex++; - - if (startIndex > (NumberOfModes()-1)) - { - startIndex = 0; - } - } - } - - if (find) - { - return startIndex; - } - else - { - return iCurrentMode; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::ImageAlreadyExist -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TBool CAknFepCtrlMultiModeButton::ImageAlreadyExist(const TInt32 aResId) - { - TBool findResId = EFalse; - - for (TInt i=0; iUseFont(iShadowFont); - - BitGc()->SetBrushStyle( CGraphicsContext::ENullBrush ); - BitGc()->SetBrushColor( KRgbBlack);//Non transparent at all - BitGc()->SetPenColor(iShadowFontColor); - BitGc()->SetPenStyle(CGraphicsContext::ESolidPen); - BitGc()->SetPenSize( PenSize()); - - TPoint pointText; - TPoint pointShadowText; - - TInt leftMarginOfText = - (Rect().Width() - iFont->TextWidthInPixels(*(iModeTextList[iCurrentMode])))/2; - - pointText.iX = Rect().iTl.iX + leftMarginOfText; - pointText.iY = Rect().iTl.iY + Rect().Height()*3/4; - - pointShadowText.iX = pointText.iX + 1; - pointShadowText.iY = pointText.iY + 1; - - //BitGc()->DrawText(*(iModeTextList[iCurrentMode]), Rect(), Rect().Height()*3/4, CGraphicsContext::ECenter, Rect().Width()/2 - iFont->TextWidthInPixels(*(iModeTextList[iCurrentMode]))/2); - BitGc()->DrawText(*(iModeTextList[iCurrentMode]), pointShadowText); - - BitGc()->DiscardFont(); - - // draw text - BitGc()->UseFont(iFont); - - BitGc()->SetBrushStyle( CGraphicsContext::ENullBrush ); - BitGc()->SetBrushColor( KRgbBlack);//Non transparent at all - BitGc()->SetPenColor(iFontColor); - BitGc()->SetPenStyle(CGraphicsContext::ESolidPen); - BitGc()->SetPenSize( PenSize()); - - //BitGc()->DrawText(*(iModeTextList[iCurrentMode]), Rect(), Rect().Height()*3/4+1, CGraphicsContext::ECenter, Rect().Width()/2 - iFont->TextWidthInPixels(*(iModeTextList[iCurrentMode]))/2-1); - BitGc()->DrawText(*(iModeTextList[iCurrentMode]), pointText); - - BitGc()->DiscardFont(); - - //BitGc()->SetPenStyle(CGraphicsContext::ENullPen); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::Draw -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiModeButton::Draw() - { - if(!AbleToDraw()) - return; - - CAknFepCtrlCommonButton::Draw(); - //CButtonBase::Draw(); - if ( iModeTextList.Count() ) - { - if ((iModeTextList[iCurrentMode]) && (iModeTextList[iCurrentMode]->Length() > 0)) - { - DisplayText(); - } - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::SetFontColor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiModeButton::SetFontColor(const TRgb aFontColor) - { - iFontColor = aFontColor; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::SetShadowFontColor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiModeButton::SetShadowFontColor(const TRgb aShadowFontColor) - { - iShadowFontColor = aShadowFontColor; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::SetPermittedModes -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CAknFepCtrlMultiModeButton::SetPermittedModes(const TInt aRangeId, - const TInt aRealCaseId, - TBool aPermit) - { - for (TInt i = 0; i < iModesList.Count(); i++) - { - if ((iModesList[i]->iRangeId == aRangeId) && (iModesList[i]->iModeId == aRealCaseId)) - { - iModesList[i]->iPermitted = aPermit; - - return KErrNone; - } - } - - return KErrNotSupported; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::SetPermittedRange -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CAknFepCtrlMultiModeButton::SetPermittedRange(const TInt aRangeId, TBool aPermit) - { - TBool findRangeId = EFalse; - - for (TInt i = 0; i < iModesList.Count(); i++) - { - if ((iModesList[i]->iRangeId == aRangeId) && (iModesList[i]->iPermitted != aPermit)) - { - iModesList[i]->iPermitted = aPermit; - findRangeId = ETrue; - } - } - - if (!findRangeId) - { - return KErrNotSupported; - } - else - { - return KErrNone; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::EnableAllModes -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiModeButton::EnableAllModes() - { - for (TInt i = 0; i < iModesList.Count(); i++) - { - iModesList[i]->iPermitted = ETrue; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::DisableAllModes -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiModeButton::DisableAllModes() - { - for (TInt i = 0; i < iModesList.Count(); i++) - { - iModesList[i]->iPermitted = EFalse; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::DisableAllModes -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiModeButton::DisableOneModes(const TInt aRangeId) - { - for (TInt i = 0; i < iModesList.Count(); i++) - { - if(iModesList[i]->iRangeId == aRangeId) - { - iModesList[i]->iPermitted = EFalse; - TRAP_IGNORE(SetCurrentModeL(EBtnBmpNonActive, NextMode())); - } - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::IsGivenRangeSupported -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TBool CAknFepCtrlMultiModeButton::IsGivenRangeSupported(const TInt aRange) - { - for (TInt i = 0; i < iModesList.Count(); i++) - { - // judge if aRange is supported by at least 1 mode - if ((iModesList[i]->iRangeId == aRange) && (iModesList[i]->iPermitted)) - { - return ETrue; - } - } - - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::SetRange -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CAknFepCtrlMultiModeButton::SetRange(const TInt aRange) - { - if (CurrentRange() != aRange) - { - for (TInt i = 0; i < iModesList.Count(); i++) - { - if ((iModesList[i]->iRangeId == aRange) && - (iModesList[i]->iPermitted)) - { - TRAP_IGNORE(SetCurrentModeL(EBtnBmpActive, i)); - return KErrNone; - } - } - } - - return KErrNotSupported; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::CurrentRange -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CAknFepCtrlMultiModeButton::CurrentRange() const - { - if ((iCurrentMode >= 0) && (iCurrentMode <= (NumberOfModes()-1))) - { - return iModesList[iCurrentMode]->iRangeId; - } - else - { - return KErrNotFound; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::RangeOfGivenMode() -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CAknFepCtrlMultiModeButton::RangeOfGivenMode(TInt aModeIndex) const - { - if ((aModeIndex >= 0) && (aModeIndex <= NumberOfModes()-1)) - { - return iModesList[aModeIndex]->iRangeId; - } - - return KErrNotSupported; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::GetRealCaseByMode() -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CAknFepCtrlMultiModeButton::GetRealCaseByMode(TInt aModeIndex) const - { - if ((aModeIndex >= 0) && (aModeIndex <= NumberOfModes() -1)) - { - return iModesList[aModeIndex]->iModeId; - } - - return KErrNotFound; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::GetRangeListL() -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepCtrlMultiModeButton::GetRangeListL(RArray& aList) - { - for (TInt i = 0; i < NumberOfModes(); i++) - { - if (aList.Find(iModesList[i]->iRangeId) == KErrNotFound) - { - aList.AppendL(iModesList[i]->iRangeId); - } - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::DuplicateBitmapL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CFbsBitmap* CAknFepCtrlMultiModeButton::DuplicateBitmapL(CFbsBitmap* aSourceBmp) - { - CFbsBitmap* bmp = new (ELeave) CFbsBitmap; - CleanupStack::PushL( bmp ); - - User::LeaveIfError(bmp->Duplicate(aSourceBmp->Handle())); - - CleanupStack::Pop( bmp ); - //iOwnedBitmaps.InsertInAddressOrder(bmp); - return bmp; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlMultiModeButton::ResizeBitmaps -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepCtrlMultiModeButton::ResizeBitmaps(TSize aSize) - { - if(iForegroundBmpList.Count() >= 1 && iForegroundBmpList[0]->SizeInPixels() != aSize - || iForegroundMaskBmpList.Count() >= 1 && iForegroundMaskBmpList[0]->SizeInPixels() != aSize) - { - for (TInt i=0; iBaseConstructL(); - - return self; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::CAknFepCtrlEventButton -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlEventButton::CAknFepCtrlEventButton(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aEvent, - TInt aUnicode, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID) - : CAknFepCtrlCommonButton(aUiLayout, aControlId, aNormalID, aPressedID, aInactiveID), - iEvent(aEvent),iUnicode(aUnicode),iText(NULL) - { - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::~CAknFepCtrlEventButton -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlEventButton::~CAknFepCtrlEventButton() - { - delete iText; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::HandlePointerUpEventL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CFepUiBaseCtrl* CAknFepCtrlEventButton::HandlePointerUpEventL(const TPoint& aPoint) - { - if (iEvent == 0xFFFF) - { - return CAknFepCtrlCommonButton::HandlePointerUpEventL(aPoint); - } - else - { - CAknFepCtrlCommonButton::HandlePointerUpEventL(aPoint); - if(IsDimmed()) - { - return NULL; - } - - if(IsActive()) - { - SetBackgroundBmp(Bitmap(EBtnBmpActive,EFalse)); - SetBackgroundMaskBmp(Bitmap(EBtnBmpActive,ETrue)); - } - else - { - SetBackgroundBmp(Bitmap(EBtnBmpNonActive,EFalse)); - SetBackgroundMaskBmp(Bitmap(EBtnBmpNonActive,ETrue)); - } - - SetActive(ETrue); - Draw(); - UpdateArea(Rect(),EFalse); - - TPtrC ptr = (TUint16*)(&iUnicode); - ReportEvent(iEvent,ptr); - - return this; - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::DisplayText -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlEventButton::DisplayText() - { - if ((iFont) && (iShadowFont)) - { - CFbsBitGc* gc = static_cast(BitGc()); - - gc->Activate(BitmapDevice()); - - // draw shadow text - gc->UseFont(iShadowFont); - - gc->SetBrushStyle( CGraphicsContext::ENullBrush ); - gc->SetBrushColor( KRgbBlack);//Non transparent at all - gc->SetPenColor(iShadowFontColor); - gc->SetPenStyle(CGraphicsContext::ESolidPen); - gc->SetPenSize( PenSize()); - - TPoint pointText; - TPoint pointShadowText; - - TInt leftMarginOfText = (Rect().Width() - iFont->TextWidthInPixels(*iText))/2; - - pointText.iX = Rect().iTl.iX + leftMarginOfText; - pointText.iY = Rect().iTl.iY + Rect().Height()*3/4; - - pointShadowText.iX = pointText.iX + 1; - pointShadowText.iY = pointText.iY + 1; - - gc->DrawText(*iText, pointShadowText); - - gc->DiscardFont(); - - // draw text - gc->UseFont(iFont); - - gc->SetBrushStyle( CGraphicsContext::ENullBrush ); - gc->SetBrushColor( KRgbBlack);//Non transparent at all - gc->SetPenColor(iFontColor); - gc->SetPenStyle(CGraphicsContext::ESolidPen); - gc->SetPenSize( PenSize()); - - gc->DrawText(*iText, pointText); - - gc->DiscardFont(); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::SetFontColor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlEventButton::SetFontColor(const TRgb aColor) - { - iFontColor = aColor; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::SetShadowFontColor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlEventButton::SetShadowFontColor(const TRgb aColor) - { - iShadowFontColor = aColor; - } - - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::Draw -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlEventButton::Draw() - { - if(!AbleToDraw()) - return; - - CAknFepCtrlCommonButton::Draw(); - - if ( iText && (iText->Length() > 0 ) ) - { - DisplayText(); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::SetText -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlEventButton::SetText(const TDesC& aText) - { - if ( iText ) - { - delete iText; - iText = NULL; - } - TRAPD(err, iText = aText.AllocL()); - if (err != KErrNone) - { - iText = NULL; - } - Draw(); - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::SetFont -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlEventButton::SetFont(const CFont* aFont) - { - iFont = aFont; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::SetShadowFont -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlEventButton::SetShadowFont(const CFont* aFont) - { - iShadowFont = aFont; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::Event -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CAknFepCtrlEventButton::Event() const - { - return iEvent; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::Unicode -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CAknFepCtrlEventButton::Unicode() const - { - return iUnicode; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::SetEvent -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlEventButton::SetEvent(TInt aEvent) - { - iEvent = aEvent; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::SetUnicode -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlEventButton::SetUnicode(TInt aUnicode) - { - iUnicode = aUnicode; - } - -// --------------------------------------------------------- -// Constructor -// --------------------------------------------------------- -// -EXPORT_C CAknFepCtrlRepeatButton* CAknFepCtrlRepeatButton::NewLC(CFepUiLayout* aUiLayout, - TInt aCtrlId, - TInt aEvent, - TInt aUnicode, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID) - { - //PRINTF((_L("CAknFepCtrlRepeatButton::NewLC(), aCtrlId = %d\n"), aCtrlId)); - CAknFepCtrlRepeatButton *self = new(ELeave) CAknFepCtrlRepeatButton(aUiLayout, - aCtrlId, - aEvent, - aUnicode, - aNormalID, - aPressedID, - aInactiveID); - - CleanupStack::PushL(self); - self->ConstructL(); - - return self; - } - -// --------------------------------------------------------- -// Constructor -// --------------------------------------------------------- -// -EXPORT_C CAknFepCtrlRepeatButton* CAknFepCtrlRepeatButton::NewL(CFepUiLayout* aUiLayout, - TInt aCtrlId, - TInt aEvent, - TInt aUnicode, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID) - { - //PRINTF((_L("CAknFepCtrlRepeatButton::NewL(), aCtrlId = %d\n"), aCtrlId)); - CAknFepCtrlRepeatButton *self = NewLC(aUiLayout, aCtrlId, aEvent, aUnicode, - aNormalID, aPressedID, aInactiveID); - CleanupStack::Pop(self); - - return self; - } - -// --------------------------------------------------------- -// Destructor -// --------------------------------------------------------- -// -EXPORT_C CAknFepCtrlRepeatButton::~CAknFepCtrlRepeatButton() - { - //PRINTF((_L("CAknFepCtrlRepeatButton::~CAknFepCtrlRepeatButton()\n"))); - CancelRepeat(); - - delete iLongPressTimer; - delete iRepeatTimer; - } - -// --------------------------------------------------------- -// Constructor -// --------------------------------------------------------- -// -EXPORT_C CAknFepCtrlRepeatButton::CAknFepCtrlRepeatButton(CFepUiLayout* aUiLayout, - TInt aCtrlId, - TInt aEvent, - TInt aUnicode, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID) - :CAknFepCtrlEventButton(aUiLayout, aCtrlId, aEvent, aUnicode, - aNormalID, - aPressedID, - aInactiveID) - { - iLongPressInterval = KLongPressInterval; - iRepeatInterval = KRepeatInterval; - } - -// --------------------------------------------------------- -// Constructor -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRepeatButton::ConstructL() - { - //PRINTF((_L("CAknFepCtrlRepeatButton::ConstructL()\n"))); - BaseConstructL(); - - iLongPressTimer = CAknFepTimer::NewL(this); - iRepeatTimer = CAknFepTimer::NewL(this); - } - -// --------------------------------------------------------- -// Time out event handler of both long press timer & repeat timer -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRepeatButton::HandleTimerOut(const CAknFepTimer* aTimer) - { - //PRINTF((_L("CAknFepCtrlRepeatButton::HandleTimerOut()--"))); - if (aTimer == iLongPressTimer) - { - //PRINTF((_L("long press timer timeout\n"))); - iRepeatTimer->SetTimer(iRepeatInterval); - } - else - { - if (aTimer == iRepeatTimer) - { - //PRINTF((_L("repeat timer timeout: EEventButtonUp reported\n"))); - if ( Unicode() ) - { - TInt unicode = Unicode(); - TPtrC ptr = (TUint16*)(&unicode ) ; - ReportEvent(Event(),ptr); -#ifdef RD_TACTILE_FEEDBACK - if (UiLayout()->SupportTactileFeedback()) - { - UiLayout()->DoTactileFeedback(ETouchFeedbackSensitiveKeypad); - } -#endif //RD_TACTILE_FEEDBACK - } - else - { - ReportEvent(EEventButtonUp); - } - iRepeatTimer->SetTimer(iRepeatInterval); - } - } - } - -// --------------------------------------------------------- -// Handle button down start long press timer -// --------------------------------------------------------- -// -EXPORT_C CFepUiBaseCtrl* CAknFepCtrlRepeatButton::HandlePointerDownEventL(const TPoint& aPt) - { - //PRINTF((_L("CAknFepCtrlRepeatButton::HandleButtonDown()\n"))); - - //PRINTF((_L("Set long press Timer\n"))); - iLongPressTimer->SetTimer(iLongPressInterval); - - return CAknFepCtrlCommonButton::HandlePointerDownEventL(aPt); - } - -// --------------------------------------------------------- -// Handle button up cancel timers -// --------------------------------------------------------- -// -EXPORT_C CFepUiBaseCtrl* CAknFepCtrlRepeatButton::HandlePointerUpEventL(const TPoint& aPt) - { - //PRINTF((_L("CAknFepCtrlRepeatButton::HandleButtonUp()\n"))); - - CancelRepeat(); - - return CAknFepCtrlEventButton::HandlePointerUpEventL(aPt); - } - -// --------------------------------------------------------- -// Handle pointer levae event cancel timers -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRepeatButton::HandlePointerLeave(const TPoint& aPoint) - { - CAknFepCtrlCommonButton::HandlePointerLeave(aPoint); - - CancelRepeat(); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRepeatButton::CancelPointerDownL -// Cancel pointer down event -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRepeatButton::CancelPointerDownL() - { - CAknFepCtrlCommonButton::CancelPointerDownL(); - - CancelRepeat(); - } - -// --------------------------------------------------------- -// Set the repeat interval of repeat timer -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRepeatButton::SetRepeatInterval(const TTimeIntervalMicroSeconds32& aTime) - { - iRepeatInterval = aTime; - } - -// --------------------------------------------------------- -// Cancel timers -// --------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRepeatButton::CancelRepeat() - { - //PRINTF((_L("CAknFepCtrlRepeatButton::CancelRepeat()\n"))); - iLongPressTimer->Cancel(); - iRepeatTimer->Cancel(); - } - -EXPORT_C CAknFepCtrlRawKeyButton* CAknFepCtrlRawKeyButton::NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID, - TInt aDownEvent, - TInt aUpEvent, - TInt aScanCode) - { - CAknFepCtrlRawKeyButton* self = NewLC(aUiLayout, - aControlId, - aNormalID, - aPressedID, - aInactiveID, - aDownEvent, - aUpEvent, - aScanCode); - CleanupStack::Pop(self); - - return self; - } - -EXPORT_C CAknFepCtrlRawKeyButton* CAknFepCtrlRawKeyButton::NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID, - TInt aDownEvent, - TInt aUpEvent, - TInt aScanCode) - { - CAknFepCtrlRawKeyButton* self = new (ELeave) CAknFepCtrlRawKeyButton(aUiLayout, - aControlId, - aNormalID, - aPressedID, - aInactiveID, - aDownEvent, - aUpEvent, - aScanCode); - CleanupStack::PushL(self); - self->BaseConstructL(); - return self; - } - -EXPORT_C CAknFepCtrlRawKeyButton::CAknFepCtrlRawKeyButton(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID, - TInt aDownEvent, - TInt aUpEvent, - TInt aScanCode) - : CAknFepCtrlCommonButton(aUiLayout, aControlId, aNormalID, aPressedID, aInactiveID), - iDownEvent(aDownEvent), - iUpEvent(aUpEvent), - iScanCode(aScanCode), - iLastPntDownEvent(EFalse) - { - } - -EXPORT_C CAknFepCtrlRawKeyButton::~CAknFepCtrlRawKeyButton() - { - } - -EXPORT_C CFepUiBaseCtrl* CAknFepCtrlRawKeyButton::HandlePointerDownEventL(const TPoint& aPoint) - { -/* if (iDownEvent == KInvalidEventId) - { - return CButtonBase::HandlePointerDownEventL(aPoint); - } - - if(IsDimmed()) - { - return NULL; - } - - CAknFepCtrlButton::HandlePointerDownEventL(aPoint); - if(IsActive()) - { - SetBackgroundBmp(iActiveBmpPressed); - SetBackgroundMaskBmp(iActiveMaskBmpPressed); - } - else - { - SetBackgroundBmp(iNonActiveBkBmpPressed); - SetBackgroundMaskBmp(iNonActiveBkMaskBmpPressed); - } - - Draw(); - UpdateArea(Rect(),ETrue); -*/ - if(IsDimmed()) - { - return NULL; - } - - CAknFepCtrlCommonButton::HandlePointerDownEventL(aPoint); - TKeyEvent event= {0,0,0,0}; - TPtrC eventDataPtr; - event.iScanCode = iScanCode; - eventDataPtr.Set(reinterpret_cast(&event),sizeof(event)); - - ReportEvent(iDownEvent,eventDataPtr); - - iLastPntDownEvent = ETrue; - - return this; - } - -EXPORT_C CFepUiBaseCtrl* CAknFepCtrlRawKeyButton::HandlePointerUpEventL(const TPoint& aPoint) - { - if (iUpEvent == KInvalidEventId) - { - return CButtonBase::HandlePointerUpEventL(aPoint); - } - -/* if(IsDimmed()) - { - return NULL; - } - - if(IsActive()) - { - SetBackgroundBmp(Bitmap(EBtnBmpActive,EFalse)); - SetBackgroundMaskBmp(Bitmap(EBtnBmpActive,ETrue)); - } - else - { - SetBackgroundBmp(Bitmap(EBtnBmpNonActive,EFalse)); - SetBackgroundMaskBmp(Bitmap(EBtnBmpNonActive,ETrue)); - } - - SetActive(ETrue); - Draw(); - UpdateArea(Rect(),ETrue); -*/ - if(IsDimmed()) - { - return NULL; - } - - CAknFepCtrlCommonButton::HandlePointerUpEventL(aPoint); - if (iLastPntDownEvent) - { - // only when last event is pointer down event, there is need to simulate - // pointer up event - TKeyEvent event= {0,0,0,0}; - TPtrC eventDataPtr; - event.iScanCode = iScanCode; - eventDataPtr.Set(reinterpret_cast(&event),sizeof(event)); - - ReportEvent(iUpEvent,eventDataPtr); - - iLastPntDownEvent = EFalse; - } - - return this; - } - -EXPORT_C void CAknFepCtrlRawKeyButton::ConstructFromResourceL(TResourceReader& aReader) - { - TInt scancode = aReader.ReadInt16(); - SetScanCode(scancode); - - TInt32 btnimgResId = aReader.ReadInt32(); - TResourceReader imgreader; - CCoeEnv::Static()->CreateResourceReaderLC(imgreader, btnimgResId); - CAknFepCtrlCommonButton::ConstructFromResourceL(imgreader); - CleanupStack::PopAndDestroy(); // imgreader - - //ResizeBitmaps(Rect().Size()); - iFirstTimeConstruct = EFalse; - } - -EXPORT_C void CAknFepCtrlRawKeyButton::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - return; - } - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - - TInt scancode = reader.ReadInt16(); - SetScanCode(scancode); - - TInt32 btnimgResId = reader.ReadInt32(); - TResourceReader imgreader; - CCoeEnv::Static()->CreateResourceReaderLC(imgreader, btnimgResId); - CAknFepCtrlCommonButton::ConstructFromResourceL(imgreader); - CleanupStack::PopAndDestroy(2); // reader, imgreader - - //ResizeBitmaps(Rect().Size()); - iFirstTimeConstruct = EFalse; - } - -EXPORT_C void CAknFepCtrlRawKeyButton::HandlePointerLeave(const TPoint& aPoint) - { - if (!Rect().Contains(aPoint)) - { - TRAP_IGNORE(HandlePointerUpEventL(Rect().Center())); - } - } - -EXPORT_C void CAknFepCtrlRawKeyButton::OnDeActivate() - { - CButtonBase::OnDeActivate(); - - if (iLastPntDownEvent) - { - TRAP_IGNORE(HandlePointerUpEventL(Rect().Center())); - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::CAknFepCtrlCommonButton -// C++ default constructor can NOT contain any code, that -// might leave. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlCommonButton::CAknFepCtrlCommonButton(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID) -: CButtonBase(TRect(), aUiLayout, aControlId), - iFirstTimeConstruct(ETrue), - iHighlight(EFalse), - iPressed(EFalse), - iTextColorIndex( KInvalidColorGroup ) - { - iNormalImgID = aNormalID; - iPressedImgID = aPressedID; - iInactiveImgID = aInactiveID; - CFepUiBaseCtrl::SetActive( ETrue ); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::NewL -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlCommonButton* CAknFepCtrlCommonButton::NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID) - { - CAknFepCtrlCommonButton* self = NewLC(aUiLayout, - aControlId, - aNormalID, - aPressedID, - aInactiveID); - CleanupStack::Pop(self); - - return self; - } -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::NewLC -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlCommonButton* CAknFepCtrlCommonButton::NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID) - { - CAknFepCtrlCommonButton* self = new (ELeave) CAknFepCtrlCommonButton(aUiLayout, - aControlId, - aNormalID, - aPressedID, - aInactiveID); - CleanupStack::PushL(self); - self->BaseConstructL(); - - return self; - } - -// ----------------------------------------------------------------------------- -// Destructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlCommonButton::~CAknFepCtrlCommonButton() - { - DeleteForgroundRes(); - delete iColorIcons; - delete iText; - } -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::ConstructFromResourceL -// The order of the image ids in the CButtonBase class must not be changed -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlCommonButton::ConstructFromResourceL(TResourceReader& aReader) - { - if (!iFirstTimeConstruct) - { - DeleteForgroundRes(); - if( iColorIcons ) - iColorIcons->ReConstructL(); - } - - TPtrC bmpFileName = aReader.ReadTPtrC(); // Read the file name of the bmps - TInt32 imgMajorSkinId = aReader.ReadInt32(); - TInt colorGroup = aReader.ReadInt16(); - TAknsItemID id; - - // Get the image ids and mask ids from resource - TInt bmpId = aReader.ReadInt16(); - TInt bmpMskId = aReader.ReadInt16(); - - // read skin item id - const TInt skinitemid = aReader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - if (bmpMskId != KInvalidBmp) - { - if( colorGroup == KInvalidColorGroup ) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForgroundBmp, - iForgroundBmpMask, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), - id, - KAknsIIDQsnIconColors, - colorGroup, - iForgroundBmp, - iForgroundBmpMask, - bmpFileName, - bmpId, - bmpMskId, - AKN_LAF_COLOR( 0 ) ); - } - - AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved); - AknIconUtils::SetSize(iForgroundBmpMask, iForgroundBmpRect.Size(), - EAspectRatioNotPreserved); - - /*CreateDimmedMaskL( iForgroundDimBmpMask, iForgroundBmpMask ); - AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(), - EAspectRatioNotPreserved);*/ - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForgroundBmp, - bmpFileName, - bmpId); - AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved); - } - } - - if (!iFirstTimeConstruct) - { - //ResizeBitmaps(iForgroundBmpRect.Size()); - Draw(); - } - - iFirstTimeConstruct = EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::ConstructFromResourceL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlCommonButton::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - return; - } - - if (!iFirstTimeConstruct) - { - // need to remove original bmp and maskbmp - DeleteForgroundRes(); - if( iColorIcons ) - iColorIcons->ReConstructL(); - } - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - - TPtrC bmpFileName = reader.ReadTPtrC(); // Read the file name of the bmps - TInt32 imgMajorSkinId = reader.ReadInt32(); - TInt colorGroup = reader.ReadInt16(); - TAknsItemID id; - - // Get the image ids and mask ids from resource - TInt bmpId = reader.ReadInt16(); - TInt bmpMskId = reader.ReadInt16(); - - // Read skin item id - const TInt skinitemid = reader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - if (bmpMskId != KInvalidBmp) - { - if( colorGroup == KInvalidColorGroup ) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForgroundBmp, - iForgroundBmpMask, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), - id, - KAknsIIDQsnIconColors, - colorGroup, - iForgroundBmp, - iForgroundBmpMask, - bmpFileName, - bmpId, - bmpMskId, - AKN_LAF_COLOR( 0 ) ); - } - - AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved); - AknIconUtils::SetSize(iForgroundBmpMask, iForgroundBmpRect.Size(), - EAspectRatioNotPreserved); - - /*CreateDimmedMaskL( iForgroundDimBmpMask, - iForgroundBmpMask ); - AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(), EAspectRatioNotPreserved);*/ - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForgroundBmp, - bmpFileName, - bmpId); - AknIconUtils::SetSize(iForgroundBmp, iForgroundBmpRect.Size(), EAspectRatioNotPreserved); - } - } - - CleanupStack::PopAndDestroy(); // reader - - if (!iFirstTimeConstruct) - { - //ResizeBitmaps(iForgroundBmpRect.Size()); - Draw(); - } - - iFirstTimeConstruct = EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::Draw -// Draws UI -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlCommonButton::Draw() - { - if(!AbleToDraw()) - return; - - CFbsBitGc* gc = static_cast(BitGc()); - - //mask bitmaps - DrawOpaqueMaskBackground(); - TRect rect = Rect(); - TRect innerRect = rect; - innerRect.Shrink( 10, 10 ); - - // ----- draw bitmaps ----- - gc->Activate( BitmapDevice() ); - // gc->SetClippingRegion( &ValidClipRegion() ); - //gc->Clear(rect); - - CFbsBitmap* bmpMask = NULL; - - // Draw background - if( IsDimmed() ) // Dimmed state - { - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *gc, - rect, - innerRect, - iInactiveImgID, - KAknsIIDDefault ); - if( iForgroundDimBmpMask ) - { - delete iForgroundDimBmpMask; - iForgroundDimBmpMask = NULL; - } - TRAP_IGNORE(CreateDimmedMaskL( iForgroundDimBmpMask, - iForgroundBmpMask )); - AknIconUtils::SetSize(iForgroundDimBmpMask, iForgroundBmpRect.Size(), - EAspectRatioNotPreserved); - - bmpMask = iForgroundDimBmpMask; - } - else - { - // Normal state or pressed state - TAknsItemID ImgID; - if (iHighlight) - { - ImgID = iPressedImgID; - } - else - { - ImgID = /*iPressed*/PointerDown()? iPressedImgID : iNormalImgID; - } - - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *gc, - rect, - innerRect, - ImgID, - KAknsIIDDefault ); - bmpMask = iForgroundBmpMask; - } - - // Draw forground - if ( iColorIcons ) // 3-pieces color icon - { - AknPenInputDrawUtils::Draw3PiecesColorIcon( iColorIcons, - *gc, - iForgroundBmpRect, - iDraw3PiecesInfo.iInnerRect ); - } - else if( iForgroundBmp ) - { - TRect srcRect( TPoint( 0, 0 ), iForgroundBmp->SizeInPixels() ); - if( bmpMask ) - { - gc->BitBltMasked( iForgroundBmpRect.iTl, - iForgroundBmp, - srcRect, - bmpMask, - EFalse); - } - else - { - gc->BitBlt( iForgroundBmpRect.iTl, - iForgroundBmp, - srcRect ); - } - } - - if (iText) - { - //if( IsDimmed() ) - // { - // gc->SetFadingParameters( KFadingParamBlack, KFadingParamWhite ); - // gc->SetFaded( ETrue ); - // } - - TAknLayoutText textLayout; - textLayout.LayoutText(Rect(), iTextFormat); - if( iTextColorIndex == KInvalidColorGroup ) - textLayout.DrawText(*gc, *iText); - else - { - TRgb color( KRgbBlack ); // sane default for nonskinned case - if ( AknsUtils::AvkonSkinEnabled() ) - { - AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), - color, KAknsIIDQsnTextColors, iTextColorIndex ); - } - if( IsDimmed() ) - { - color = KRgbGray; - } - textLayout.DrawText(*gc, *iText, ETrue, color); - } - //if( IsDimmed() ) - // gc->SetFaded( EFalse ); - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::SetActive -// Set active for the button -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlCommonButton::SetActive(TBool aActiveFlag) - { - if( IsDimmed() ) - { - return; - } - - if(IsActive() != aActiveFlag) - { - CFepUiBaseCtrl::SetActive(aActiveFlag); -/* if(BitGc()) - { - Draw(); - UpdateArea(Rect(),EFalse); - }*/ - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::SetHighlight -// Set highlight for the button -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlCommonButton::SetHighlight(TBool aIsHighlight) - { - iHighlight = aIsHighlight; - - Draw(); - UpdateArea(Rect(),EFalse); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::ResizeBitmaps -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlCommonButton::ResizeBitmaps(TSize aInnerSize) - { - if( iForgroundBmp && ( iForgroundBmp->SizeInPixels() != aInnerSize ) ) - { - AknIconUtils::SetSize( iForgroundBmp, aInnerSize, EAspectRatioNotPreserved ); - } - if( iForgroundBmpMask && ( iForgroundBmpMask->SizeInPixels() != aInnerSize ) ) - { - AknIconUtils::SetSize( iForgroundBmpMask, aInnerSize, EAspectRatioNotPreserved ); - } - - /*TRAP_IGNORE(CreateDimmedMaskL(iForgroundDimBmpMask, - iForgroundBmpMask));*/ - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::SizeChanged -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlCommonButton::SizeChanged(TRect aNewRect, - TRect aInnerRect, - TBool aIsReloadImages) - { - if (aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0) - { - return; - } - - TRect oriRect = Rect(); - - if( oriRect == aNewRect && iForgroundBmpRect == aInnerRect ) - { - return; - } - - SetRect(aNewRect); - - if (aIsReloadImages) - { - iForgroundBmpRect = aInnerRect; - ResizeBitmaps(aInnerRect.Size() ); - } - RootControl()->ReDrawRect( Rect() ); - UpdateArea(Rect(), EFalse); - Draw(); - UpdateArea(Rect(), EFalse); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::SetForgroundBmpRect -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlCommonButton::SetForgroundBmpRect(const TRect& aRect) - { - iForgroundBmpRect = aRect; - } - -EXPORT_C void CAknFepCtrlCommonButton::SetDraw3PieceFrameInfo(TDraw3PiecesFrame a3PiecesFrameInfo) - { - iDraw3PiecesInfo = a3PiecesFrameInfo; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::DeleteForgroundRes -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlCommonButton::DeleteForgroundRes() - { - if( iForgroundBmp ) - { - delete iForgroundBmp; - iForgroundBmp = NULL; - } - if( iForgroundBmpMask ) - { - delete iForgroundBmpMask; - iForgroundBmpMask = NULL; - } - if( iForgroundDimBmpMask ) - { - delete iForgroundDimBmpMask; - iForgroundDimBmpMask = NULL; - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::CreateDimmedMaskL -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlCommonButton::CreateDimmedMaskL( CFbsBitmap*& aDimmedMask, - const CFbsBitmap* aMask - /*TScaleMode aScaleMode*/ ) - { - if (aMask && aMask->DisplayMode() == EGray256) - { - delete aDimmedMask; - aDimmedMask = NULL; - - aDimmedMask = new (ELeave) CFbsBitmap; - - User::LeaveIfError(aDimmedMask->Create(aMask->SizeInPixels(), EGray256)); - CleanupStack::PushL(aDimmedMask); - - CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(aDimmedMask); - CleanupStack::PushL(bitmapDevice); - - CFbsBitGc* bitGc(NULL); - User::LeaveIfError(bitmapDevice->CreateContext(bitGc)); - CleanupStack::PushL(bitGc); - - bitGc->SetPenStyle(CGraphicsContext::ESolidPen); - bitGc->BitBlt(TPoint(0, 0), aMask); - - aDimmedMask->LockHeap(); - TInt w = aMask->SizeInPixels().iWidth; - TInt h = aMask->SizeInPixels().iHeight; - TInt dataStride = aMask->DataStride() - w; - unsigned char* address = (unsigned char *)aDimmedMask->DataAddress(); - - for ( TInt i = 0; i < h; ++i ) - { - for ( TInt j = 0; j < w; ++j ) - { - *address = KTransparency[*address]; - ++address; - } - address += dataStride; - } - - aDimmedMask->UnlockHeap(); - - //AknIconUtils::SetSize(aDimmedMask, aMask->SizeInPixels(), aScaleMode); - - CleanupStack::PopAndDestroy(2); // bitmapDevice, bitGc - CleanupStack::Pop(1); // aDimmedMask - } - - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::HandlePointerDownEventL -// Handle button down event -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CFepUiBaseCtrl* CAknFepCtrlCommonButton::HandlePointerDownEventL(const TPoint& aPt) - { - if( IsDimmed() ) - return NULL; - - CFepUiBaseCtrl::HandlePointerDownEventL(aPt); - iPressed = ETrue; - - Draw(); - UpdateArea(Rect(),EFalse); - ReportEvent(EEventButtonDown); - return this; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::HandlePointerLeave -// Handle pointer leave event -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlCommonButton::HandlePointerLeave(const TPoint& aPt) - { - if( IsDimmed() ) - return; - - CFepUiBaseCtrl::HandlePointerLeave(aPt); - iPressed = EFalse; - - RootControl()->ReDrawRect( Rect() ); - UpdateArea(Rect(),EFalse); - - return ; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::HandleButtonUpEventL -// Handle button up event -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CFepUiBaseCtrl* CAknFepCtrlCommonButton::HandlePointerUpEventL(const TPoint& aPt) - { - CFepUiBaseCtrl::HandlePointerUpEventL(aPt); - if( IsDimmed() ) - return NULL; - - iPressed = EFalse; - SetActive(ETrue); - RootControl()->ReDrawRect( Rect() ); - //Draw(); - UpdateArea(Rect(),EFalse); - - ReportEvent(EEventButtonUp); - -#ifdef RD_TACTILE_FEEDBACK - { - UiLayout()->DoTactileFeedback(ETouchFeedbackSensitiveKeypad, ETrue, EFalse); - } -#endif // RD_TACTILE_FEEDBACK - - return this; - } - -EXPORT_C void CAknFepCtrlCommonButton::HandlePointerEnter(const TPoint& aPt) - { - if( IsDimmed() ) - return; - - CFepUiBaseCtrl::HandlePointerEnter(aPt); - iPressed = ETrue; - Draw(); - UpdateArea(Rect(),EFalse); - - return ; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::CancelPointerDownL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlCommonButton::CancelPointerDownL() - { - CFepUiBaseCtrl::CancelPointerDownL(); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlCommonButton::SetForegroundBmpL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlCommonButton::SetForegroundBmpL(CFbsBitmap* aBmp, - CFbsBitmap* aMaskBmp) - { - DeleteForgroundRes(); - - iForgroundBmp = aBmp; - iForgroundBmpMask = aMaskBmp; - - ResizeBitmaps(iForgroundBmpRect.Size()); - } - -EXPORT_C void CAknFepCtrlCommonButton::Move(const TPoint& aOffset) - { - CButtonBase::Move(aOffset); - iForgroundBmpRect.Move( aOffset ); - - if ( iColorIcons ) - { - iDraw3PiecesInfo.iInnerRect.Move( aOffset ); - } - } - - - -// --------------------------------------------------------------------------- -// CAknFepCtrlMultiImageButton::CAknFepCtrlMultiImageButton -// C++ default constructor can NOT contain any code, that -// might leave. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlMultiImageButton::CAknFepCtrlMultiImageButton(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID) - : CAknFepCtrlCommonButton(aUiLayout, aControlId, aNormalID, aPressedID, aInactiveID) - { - iNormalImgID = aNormalID; - iPressedImgID = aPressedID; - iInactiveImgID = aInactiveID; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlMultiImageButton::NewL -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlMultiImageButton* CAknFepCtrlMultiImageButton::NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID) - { - CAknFepCtrlMultiImageButton* self = NewLC(aUiLayout, - aControlId, - aNormalID, - aPressedID, - aInactiveID); - CleanupStack::Pop(self); - - return self; - } -// --------------------------------------------------------------------------- -// CAknFepCtrlMultiImageButton::NewLC -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlMultiImageButton* CAknFepCtrlMultiImageButton::NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aNormalID, - TAknsItemID aPressedID, - TAknsItemID aInactiveID) - { - CAknFepCtrlMultiImageButton* self = new (ELeave) CAknFepCtrlMultiImageButton(aUiLayout, - aControlId, - aNormalID, - aPressedID, - aInactiveID); - CleanupStack::PushL(self); - self->BaseConstructL(); - - return self; - } - -// ----------------------------------------------------------------------------- -// Destructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlMultiImageButton::~CAknFepCtrlMultiImageButton() - { - DeleteForgroundRes(); - delete iText; - } -// --------------------------------------------------------------------------- -// CAknFepCtrlMultiImageButton::ConstructFromResourceL -// The order of the image ids in the CButtonBase class must not be changed -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiImageButton::ConstructFromResourceL(TResourceReader& aReader) - { - if (!iFirstTimeConstruct) - { - DeleteForgroundRes(); - } - - TPtrC bmpFileName = aReader.ReadTPtrC(); // Read the file name of the bmps - TInt32 imgMajorSkinId = aReader.ReadInt32(); - TInt colorGroup = aReader.ReadInt16(); - TAknsItemID id; - - // Get the image ids and mask ids from resource - TInt bmpId = aReader.ReadInt16(); - TInt bmpMskId = aReader.ReadInt16(); - - // read skin item id - const TInt skinitemid = aReader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - if (bmpMskId != KInvalidBmp) - { - if( colorGroup == KInvalidColorGroup ) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForground1Bmp, - iForground1BmpMask, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), - id, - KAknsIIDQsnIconColors, - colorGroup, - iForground1Bmp, - iForground1BmpMask, - bmpFileName, - bmpId, - bmpMskId, - AKN_LAF_COLOR( 0 ) ); - } - - AknIconUtils::SetSize(iForground1Bmp, iForground1BmpRect.Size(), EAspectRatioNotPreserved); - AknIconUtils::SetSize(iForground1BmpMask, iForground1BmpRect.Size(), - EAspectRatioNotPreserved); - - /*CreateDimmedMaskL( iForground1DimBmpMask, iForground1BmpMask ); - AknIconUtils::SetSize(iForground1DimBmpMask, iForground1BmpRect.Size(), - EAspectRatioNotPreserved);*/ - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForground1Bmp, - bmpFileName, - bmpId); - AknIconUtils::SetSize(iForground1Bmp, iForground1BmpRect.Size(), EAspectRatioNotPreserved); - } - } - - - - TAknsItemID id2; - - // Get the image ids and mask ids from resource - TInt bmp2Id = aReader.ReadInt16(); - TInt bmp2MskId = aReader.ReadInt16(); - - // read skin item id - const TInt skinitem2id = aReader.ReadInt16(); - id2.Set(TInt(imgMajorSkinId), skinitem2id); - - if (bmp2Id != KInvalidBmp) - { - if (bmp2MskId != KInvalidBmp) - { - if( colorGroup == KInvalidColorGroup ) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id2, - iForground2Bmp, - iForground2BmpMask, - bmpFileName, - bmp2Id, - bmp2MskId); - } - else - { - AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), - id2, - KAknsIIDQsnIconColors, - colorGroup, - iForground2Bmp, - iForground2BmpMask, - bmpFileName, - bmp2Id, - bmp2MskId, - AKN_LAF_COLOR( 0 ) ); - } - - AknIconUtils::SetSize(iForground2Bmp, iForground2BmpRect.Size(), EAspectRatioNotPreserved); - AknIconUtils::SetSize(iForground2BmpMask, iForground2BmpRect.Size(), - EAspectRatioNotPreserved); - - /*CreateDimmedMaskL( iForground2DimBmpMask, iForground2BmpMask ); - AknIconUtils::SetSize(iForground2DimBmpMask, iForground2BmpRect.Size(), - EAspectRatioNotPreserved);*/ - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id2, - iForground2Bmp, - bmpFileName, - bmp2Id); - AknIconUtils::SetSize(iForground2Bmp, iForground2BmpRect.Size(), EAspectRatioNotPreserved); - } - } - - if (!iFirstTimeConstruct) - { - Draw(); - } - - iFirstTimeConstruct = EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlMultiImageButton::ConstructFromResourceL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiImageButton::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - User::Leave(KErrArgument); - } - - if (!iFirstTimeConstruct) - { - // need to remove original bmp and maskbmp - DeleteForgroundRes(); - } - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - - TPtrC bmpFileName = reader.ReadTPtrC(); // Read the file name of the bmps - TInt32 imgMajorSkinId = reader.ReadInt32(); - TInt colorGroup = reader.ReadInt16(); - TAknsItemID id; - - // Get the image ids and mask ids from resource - TInt bmpId = reader.ReadInt16(); - TInt bmpMskId = reader.ReadInt16(); - - // Read skin item id - const TInt skinitemid = reader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - if (bmpMskId != KInvalidBmp) - { - if( colorGroup == KInvalidColorGroup ) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForground1Bmp, - iForground1BmpMask, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), - id, - KAknsIIDQsnIconColors, - colorGroup, - iForground1Bmp, - iForground1BmpMask, - bmpFileName, - bmpId, - bmpMskId, - AKN_LAF_COLOR( 0 ) ); - } - - AknIconUtils::SetSize(iForground1Bmp, iForground1BmpRect.Size(), EAspectRatioNotPreserved); - AknIconUtils::SetSize(iForground1BmpMask, iForground1BmpRect.Size(), EAspectRatioNotPreserved); - - /*CreateDimmedMaskL( iForground1DimBmpMask, - iForground1BmpMask ); - AknIconUtils::SetSize(iForground1DimBmpMask, iForground1BmpRect.Size(), EAspectRatioNotPreserved);*/ - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForground1Bmp, - bmpFileName, - bmpId); - AknIconUtils::SetSize(iForground1Bmp, iForground1BmpRect.Size(), EAspectRatioNotPreserved); - } - } - - - - - - - - - - - - - TAknsItemID id2; - - // Get the image ids and mask ids from resource - TInt bmp2Id = reader.ReadInt16(); - TInt bmp2MskId = reader.ReadInt16(); - - // Read skin item id - const TInt skinitem2id = reader.ReadInt16(); - id2.Set(TInt(imgMajorSkinId), skinitem2id); - - if (bmp2Id != KInvalidBmp) - { - if (bmp2MskId != KInvalidBmp) - { - if( colorGroup == KInvalidColorGroup ) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id2, - iForground2Bmp, - iForground2BmpMask, - bmpFileName, - bmp2Id, - bmp2MskId); - } - else - { - AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), - id, - KAknsIIDQsnIconColors, - colorGroup, - iForground2Bmp, - iForground2BmpMask, - bmpFileName, - bmp2Id, - bmp2MskId, - AKN_LAF_COLOR( 0 ) ); - } - - AknIconUtils::SetSize(iForground2Bmp, iForground2BmpRect.Size(), EAspectRatioPreserved); - AknIconUtils::SetSize(iForground2BmpMask, iForground2BmpRect.Size(), EAspectRatioPreserved); - - /*CreateDimmedMaskL( iForground2DimBmpMask, iForground2BmpMask ); - AknIconUtils::SetSize(iForground2DimBmpMask, iForground2BmpRect.Size(), - EAspectRatioNotPreserved);*/ - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iForground2Bmp, - bmpFileName, - bmp2Id); - AknIconUtils::SetSize(iForground2Bmp, iForground2BmpRect.Size(), EAspectRatioPreserved); - } - } - - - - - - - CleanupStack::PopAndDestroy(); // reader - - if (!iFirstTimeConstruct) - { - //ResizeBitmaps(iForgroundBmpRect.Size()); - Draw(); - } - - iFirstTimeConstruct = EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlMultiImageButton::Draw -// Draws UI -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiImageButton::Draw() - { - if(!AbleToDraw()) - return; - - CFbsBitGc* gc = static_cast(BitGc()); - - //mask bitmaps - DrawOpaqueMaskBackground(); - TRect rect = Rect(); - TRect innerRect = rect; - innerRect.Shrink( 10, 10 ); - - // ----- draw bitmaps ----- - gc->Activate( BitmapDevice() ); - // gc->SetClippingRegion( &ValidClipRegion() ); - //gc->Clear(rect); - - CFbsBitmap* bmpMask1 = NULL; - CFbsBitmap* bmpMask2 = NULL; - - // Draw background - if( IsDimmed() ) // Dimmed state - { - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *gc, - rect, - innerRect, - iInactiveImgID, - KAknsIIDDefault ); - if( iForground1DimBmpMask ) - { - delete iForground1DimBmpMask; - iForground1DimBmpMask = NULL; - } - TRAP_IGNORE(CreateDimmedMaskL( iForground1DimBmpMask, - iForground1BmpMask )); - AknIconUtils::SetSize(iForground1DimBmpMask, iForground1BmpRect.Size(), - EAspectRatioNotPreserved); - bmpMask1 = iForground1DimBmpMask; - - if( iForground2DimBmpMask ) - { - delete iForground2DimBmpMask; - iForground2DimBmpMask = NULL; - } - TRAP_IGNORE(CreateDimmedMaskL( iForground2DimBmpMask, - iForground2BmpMask )); - AknIconUtils::SetSize(iForground2DimBmpMask, iForground2BmpRect.Size(), - EAspectRatioNotPreserved); - bmpMask2 = iForground2DimBmpMask; - } - else - { - // Normal state or pressed state - TAknsItemID ImgID; - if (iHighlight) - { - ImgID = iPressedImgID; - } - else - { - ImgID = /*iPressed*/PointerDown()? iPressedImgID : iNormalImgID; - } - - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *gc, - rect, - innerRect, - ImgID, - KAknsIIDDefault ); - bmpMask1 = iForground1BmpMask; - bmpMask2 = iForground2BmpMask; - } - - // Draw forground - if( iForground1Bmp && iForground2Bmp) - { - TRect srcRect( TPoint( 0, 0 ), iForground1Bmp->SizeInPixels() ); - if( bmpMask1 ) - { - gc->BitBltMasked( iForground1BmpRect.iTl, - iForground1Bmp, - srcRect, - bmpMask1, - EFalse); - } - else - { - gc->BitBlt( iForground1BmpRect.iTl, - iForground1Bmp, - srcRect ); - } - - TRect src2Rect( TPoint( 0, 0 ), iForground2Bmp->SizeInPixels() ); - if( bmpMask2 ) - { - gc->BitBltMasked( rect.iTl, //fix EVWG-7PKC6J. layout of 2nd foreground is determined by image itself, but not hard code. - iForground2Bmp, - src2Rect, - bmpMask2, - EFalse); - } - else - { - gc->BitBlt( rect.iTl, //fix EVWG-7PKC6J. - iForground2Bmp, - src2Rect ); - } - } - - if (iText) - { - TAknLayoutText textLayout; - textLayout.LayoutText(Rect(), iTextFormat); - textLayout.DrawText(*gc, *iText); - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlMultiImageButton::ResizeBitmaps -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlMultiImageButton::ResizeBitmaps(TSize aInnerSize) - { - if( iForground1Bmp && ( iForground1Bmp->SizeInPixels() != aInnerSize ) ) - { - AknIconUtils::SetSize( iForground1Bmp, aInnerSize, EAspectRatioNotPreserved ); - } - if( iForground1BmpMask && ( iForground1BmpMask->SizeInPixels() != aInnerSize ) ) - { - AknIconUtils::SetSize( iForground1BmpMask, aInnerSize, EAspectRatioNotPreserved ); - } - - //TRAP_IGNORE(CreateDimmedMaskL(iForground1DimBmpMask, iForground1BmpMask)); - - - - - if( iForground2Bmp && ( iForground2Bmp->SizeInPixels() != Rect().Size() ) ) - { - AknIconUtils::SetSize( iForground2Bmp, Rect().Size(), EAspectRatioNotPreserved ); - } - if( iForground2BmpMask && ( iForground2BmpMask->SizeInPixels() != Rect().Size() ) ) - { - AknIconUtils::SetSize( iForground2BmpMask, Rect().Size(), EAspectRatioNotPreserved ); - } - - //TRAP_IGNORE(CreateDimmedMaskL(iForground2DimBmpMask, iForground2BmpMask)); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlMultiImageButton::SizeChanged -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlMultiImageButton::SizeChanged(TRect aNewRect, - TRect aInnerRect, - TBool aIsReloadImages) - { - if (aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0) - { - return; - } - - TRect oriRect = Rect(); - SetRect(aNewRect); - iForground1BmpRect = aInnerRect; - iForground2BmpRect = aInnerRect; - - if (aIsReloadImages) - { - ResizeBitmaps(aInnerRect.Size() ); - } - RootControl()->ReDrawRect( oriRect ); - UpdateArea(oriRect, EFalse); - Draw(); - UpdateArea(Rect(), EFalse); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlMultiImageButton::DeleteForgroundRes -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlMultiImageButton::DeleteForgroundRes() - { - if( iForground1Bmp ) - { - delete iForground1Bmp; - iForground1Bmp = NULL; - } - if( iForground1BmpMask ) - { - delete iForground1BmpMask; - iForground1BmpMask = NULL; - } - if( iForground1DimBmpMask ) - { - delete iForground1DimBmpMask; - iForground1DimBmpMask = NULL; - } - - - if( iForground2Bmp ) - { - delete iForground2Bmp; - iForground2Bmp = NULL; - } - if( iForground2BmpMask ) - { - delete iForground2BmpMask; - iForground2BmpMask = NULL; - } - if( iForground2DimBmpMask ) - { - delete iForground2DimBmpMask; - iForground2DimBmpMask = NULL; - } - - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlMultiImageButton::CreateDimmedMaskL -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlMultiImageButton::CreateDimmedMaskL( CFbsBitmap*& aDimmedMask, - const CFbsBitmap* aMask - /*TScaleMode aScaleMode*/ ) - { - if (aMask && aMask->DisplayMode() == EGray256) - { - delete aDimmedMask; - aDimmedMask = NULL; - - aDimmedMask = new (ELeave) CFbsBitmap; - - User::LeaveIfError(aDimmedMask->Create(aMask->SizeInPixels(), EGray256)); - CleanupStack::PushL(aDimmedMask); - - CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(aDimmedMask); - CleanupStack::PushL(bitmapDevice); - - CFbsBitGc* bitGc(NULL); - User::LeaveIfError(bitmapDevice->CreateContext(bitGc)); - CleanupStack::PushL(bitGc); - - bitGc->SetPenStyle(CGraphicsContext::ESolidPen); - bitGc->BitBlt(TPoint(0, 0), aMask); - - aDimmedMask->LockHeap(); - TInt w = aMask->SizeInPixels().iWidth; - TInt h = aMask->SizeInPixels().iHeight; - TInt dataStride = aMask->DataStride() - w; - unsigned char* address = (unsigned char *)aDimmedMask->DataAddress(); - - for ( TInt i = 0; i < h; ++i ) - { - for ( TInt j = 0; j < w; ++j ) - { - *address = KTransparency[*address]; - ++address; - } - address += dataStride; - } - - aDimmedMask->UnlockHeap(); - - //AknIconUtils::SetSize(aDimmedMask, aMask->SizeInPixels(), aScaleMode); - - CleanupStack::PopAndDestroy(2); // bitmapDevice, bitGc - CleanupStack::Pop(1); // aDimmedMask - } - - } - -EXPORT_C void CAknFepCtrlMultiImageButton::Move(const TPoint& aOffset) - { - CButtonBase::Move(aOffset); - iForground1BmpRect.Move( aOffset ); - iForground2BmpRect.Move( aOffset ); - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputbuttons/peninputrawkeybutton.cpp --- a/textinput/peninputcommonctrls/src/peninputbuttons/peninputrawkeybutton.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,189 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -// system includes -#include -#include -#include -#include -#include -// user includes -#include -#include - -const TInt KInvalidEventId = 0xffff; -// ======== MEMBER FUNCTIONS ======== - -CAknFepCtrlRawKeyButton* CAknFepCtrlRawKeyButton::NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aDownEvent, - TInt aUpEvent, - TInt aScanCode) - { - CAknFepCtrlRawKeyButton* self = NewLC(aUiLayout, - aControlId, - aDownEvent, - aUpEvent, - aScanCode); - CleanupStack::Pop(self); - - return self; - } - -CAknFepCtrlRawKeyButton* CAknFepCtrlRawKeyButton::NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aDownEvent, - TInt aUpEvent, - TInt aScanCode) - { - CAknFepCtrlRawKeyButton* self = new (ELeave) CAknFepCtrlRawKeyButton(aUiLayout, - aControlId, - aDownEvent, - aUpEvent, - aScanCode); - CleanupStack::PushL(self); - self->BaseConstructL(); - return self; - } - -CAknFepCtrlRawKeyButton::CAknFepCtrlRawKeyButton(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aDownEvent, - TInt aUpEvent, - TInt aScanCode) - : CAknFepCtrlButton(aUiLayout, aControlId), - iDownEvent(aDownEvent), - iUpEvent(aUpEvent), - iScanCode(aScanCode) - { - } - -CAknFepCtrlRawKeyButton::~CAknFepCtrlRawKeyButton() - { - } - -CFepUiBaseCtrl* CAknFepCtrlRawKeyButton::HandlePointerDownEventL(const TPoint& aPoint) - { - if (iDownEvent == KInvalidEventId) - { - return return CButtonBase::HandlePointerDownEventL(aPoint); - } - - if(iDimmed) - { - return NULL; - } - - CFepUiBaseCtrl::HandlePointerDownEventL(aPoint); - if(IsActive()) - { - SetBackgroundBmp(iActiveBmpPressed); - SetBackgroundMaskBmp(iActiveMaskBmpPressed); - } - else - { - SetBackgroundBmp(iNonActiveBkBmpPressed); - SetBackgroundMaskBmp(iNonActiveBkMaskBmpPressed); - } - - Draw(); - UpdateArea(Rect(),EFalse); - - TKeyEvent event= {0,0,0,0}; - TPtrC eventDataPtr; - event.iScanCode = iScanCode; - eventDataPtr.Set(reinterpret_cast(&event),sizeof(event)); - - ReportEvent(iDownEvent,eventDataPtr); - - return this; - } - -CFepUiBaseCtrl* CAknFepCtrlRawKeyButton::HandlePointerUpEventL(const TPoint& aPoint) - { - if (iUpEvent == KInvalidEventId) - { - return CButtonBase::HandlePointerUpEventL(aPoint); - } - - if(iDimmed) - { - return NULL; - } - - if(IsActive()) - { - SetBackgroundBmp(Bitmap(EBtnBmpActive,EFalse)); - SetBackgroundMaskBmp(Bitmap(EBtnBmpActive,ETrue)); - } - else - { - SetBackgroundBmp(Bitmap(EBtnBmpNonActive,EFalse)); - SetBackgroundMaskBmp(Bitmap(EBtnBmpNonActive,ETrue)); - } - - SetActive(ETrue); - Draw(); - UpdateArea(Rect(),EFalse); - - TKeyEvent event= {0,0,0,0}; - TPtrC eventDataPtr; - event.iScanCode = iScanCode; - eventDataPtr.Set(reinterpret_cast(&event),sizeof(event)); - - ReportEvent(iUpEvent,eventDataPtr); - - return this; - } - -TInt CAknFepCtrlRawKeyButton::DownEvent() const - { - return iDownEvent; - } - -TInt CAknFepCtrlRawKeyButton::UpEvent() const - { - return iUpEvent; - } - -TInt CAknFepCtrlRawKeyButton::ScanCode() const - { - return iScanCode; - } - -void CAknFepCtrlRawKeyButton::SetDownEvent(TInt aEvent) - { - iDownEvent = aEvent; - } - -void CAknFepCtrlRawKeyButton::SetUpEvent(TInt aEvent) - { - iUpEvent = aEvent; - } - -void CAknFepCtrlRawKeyButton::SetScanCode(TInt aScanCode) - { - iScanCode = aScanCode; - } - -void CAknFepCtrlRawKeyButton::Draw() - { - CAknFepCtrlButton::Draw(); - } - - -// End Of File \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputbitmapdb.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputbitmapdb.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,370 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: bitmap db manager,which is used by drop down list -* -*/ - - -#include -#include -#include -#include -#include -#include -#include "peninputbitmapdb.h" - -const TUint32 KDefaultTextColor = 0x000000; -const TUint32 KDefaultFrameColor = 0x000000; - -const TInt KInvalidBmp = -1; - -const TInt KTransparency[256] = - { - 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 7, 7, 7, - 8, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, - 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 19, - 19, 19, 20, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 23, 24, 24, - 24, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 28, 28, 28, 29, 29, 29, 29, - 30, 30, 30, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, - 35, 35, 36, 36, 36, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 40, 40, 40, - 41, 41, 41, 41, 42, 42, 42, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 46, - 46, 46, 47, 47, 47, 47, 48, 48, 48, 49, 49, 49, 50, 50, 50, 50, 51, 51, - 51, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 55, 55, 55, 56, 56, 56, 56, - 57, 57, 57, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62, - 62, 62, 63, 63, 63, 64, 64, 64, 65, 65, 65, 65, 66, 66, 66, 67, 67, 67, - 68, 68, 68, 68, 69, 69, 69, 70, 70, 70, 71, 71, 71, 71, 72, 72, 72, 73, - 73, 73, 74, 74, 74, 74, 75, 75, 75, 76, 76, 76, 77, 77 - }; - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CBitmapDb - -// ----------------------------------------------------------------------------- -// CBitmapDb::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CBitmapDb* CBitmapDb::NewL(TResourceReader& aReader, - TSize aBitmapSize, - TSize aExpandSize, - TSize aSpinBtnSize) - { - CBitmapDb* self = new (ELeave) CBitmapDb(); - CleanupStack::PushL(self); - self->ConstructL(aReader, - aBitmapSize, - aExpandSize, - aSpinBtnSize); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CBitmapDb::~CBitmapDb -// destructor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CBitmapDb::~CBitmapDb() - { - // Delete all bitmap - iBmpList.ResetAndDestroy(); - iBmpList.Close(); - } - -// ----------------------------------------------------------------------------- -// CBitmapDb::GetBitMap -// get bitmap according to the assigned type -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -const CFbsBitmap* CBitmapDb::GetBitMap(const TBitmapType aType) - { - // Return corresponding bitmap according aType - return iBmpList[aType]; - } - -// ----------------------------------------------------------------------------- -// CBitmapDb::CreateIconL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CBitmapDb::CreateIconL(const TDesC& aBmpFileName, - TAknsItemID aId, - CFbsBitmap** aBmp, - CFbsBitmap** aMaskBmp, - TInt aBmpId, - TInt aMaskBmpId, - TSize aSize, - TBool aColorIcon) - { - if (aBmpId != KInvalidBmp) - { - if (aMaskBmpId != KInvalidBmp) - { - if (aColorIcon) - { - AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), - aId, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG30, - *aBmp, - *aMaskBmp, - aBmpFileName, - aBmpId, - aMaskBmpId, - AKN_LAF_COLOR( 0 ) ); - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - aId, - *aBmp, - *aMaskBmp, - aBmpFileName, - aBmpId, - aMaskBmpId); - } - - AknIconUtils::SetSize(*aMaskBmp, aSize, EAspectRatioNotPreserved); - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - aId, - *aBmp, - aBmpFileName, - aBmpId); - } - - AknIconUtils::SetSize(*aBmp, aSize, EAspectRatioNotPreserved); - } - } - -void CBitmapDb::ConstructFromResourceL(TResourceReader& aReader, - TSize aBitmapSize, - TSize aExpandSize, - TSize aSpinBtnSize) - { - for (TInt i = 0; i < EBitmapLastType + 1; ++i) - { - delete iBmpList[i]; - iBmpList[i] = NULL; - } - - // Read mbm file name from the aReader - TPtrC bmpFile = aReader.ReadTPtrC(); - TInt imgMajorSkinId = aReader.ReadInt32(); - - TAknsItemID id; - - for (TInt i = 0; i < EBitmapLastType + 1; i+=2) - { - TInt bmpId = aReader.ReadInt16(); - TInt maskId = aReader.ReadInt16(); - TInt minorSkinId = aReader.ReadInt16(); - - TSize bmpsize = aBitmapSize; - - if ((i >= EBitmapNextDisable && i < EBitmapNextPressMask) || - (i >= EBitmapPrevious && i < EBitmapPreviousPressMask)) - { - bmpsize = aSpinBtnSize; - } - else if (i >= EBitmapExpand && i < EBitmapExpandPressMask) - { - bmpsize = aExpandSize; - } - - id.Set(imgMajorSkinId, minorSkinId); - - TBool colorIcon; - if ( i == EBitmapNext || i == EBitmapNextMask || - i == EBitmapClose || i == EBitmapCloseMask || - i == EBitmapPrevious || i == EBitmapPreviousMask || - i == EBitmapExpand || i == EBitmapExpandMask) - { - colorIcon = ETrue; - } - else - { - colorIcon = EFalse; - } - - CreateIconL(bmpFile, - id, - &(iBmpList[i]), - &(iBmpList[i+1]), - bmpId, - maskId, - bmpsize, - colorIcon); - - if( i == EBitmapNextDisable ) - { - CFbsBitmap* newMask = NULL; - CreateDimmedMaskL( newMask, iBmpList[i+1]); - delete iBmpList[i+1]; - iBmpList[i+1] = newMask; - } - } - - TInt colorMajorSkinId = aReader.ReadInt32(); - TInt skinitemid = aReader.ReadInt16(); - TInt textcoloridx = aReader.ReadInt16(); - - id.Set(colorMajorSkinId, skinitemid); - TInt error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iTextColor, - id, - textcoloridx); - - if (error != KErrNone) - { - iTextColor = TRgb(KDefaultTextColor); - } - - TInt frameMajorSkinId = aReader.ReadInt32(); - skinitemid = aReader.ReadInt16(); - TInt framecoloridx = aReader.ReadInt16(); - - id.Set(frameMajorSkinId, skinitemid); - error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - iFrameColor, - id, - framecoloridx); - - if (error != KErrNone) - { - iFrameColor = TRgb(KDefaultFrameColor); - } - } - -// ----------------------------------------------------------------------------- -// CBitmapDb::ConstructL -// 2nd construct function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CBitmapDb::ConstructL(TResourceReader& aReader, - TSize aBitmapSize, - TSize aExpandSize, - TSize aSpinBtnSize) - { - for (TInt i = 0; i < EBitmapLastType + 1; ++i) - { - iBmpList.AppendL(NULL); - } - - ConstructFromResourceL(aReader, - aBitmapSize, - aExpandSize, - aSpinBtnSize); - } - -// ----------------------------------------------------------------------------- -// CBitmapDb::TextColor -// Get text color of drop down list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -const TRgb CBitmapDb::TextColor() - { - return iTextColor; - } - -// ----------------------------------------------------------------------------- -// CBitmapDb::FrameColor -// Get frame color of drop down list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -const TRgb CBitmapDb::FrameColor() - { - return iFrameColor; - } -// --------------------------------------------------------------------------- -// CBitmapDb::CreateDimmedMaskL -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CBitmapDb::CreateDimmedMaskL( CFbsBitmap*& aDimmedMask, - const CFbsBitmap* aMask - /*TScaleMode aScaleMode*/ ) - { - if (aMask && aMask->DisplayMode() == EGray256) - { - delete aDimmedMask; - aDimmedMask = NULL; - - aDimmedMask = new (ELeave) CFbsBitmap; - - User::LeaveIfError(aDimmedMask->Create(aMask->SizeInPixels(), EGray256)); - CleanupStack::PushL(aDimmedMask); - - CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(aDimmedMask); - CleanupStack::PushL(bitmapDevice); - - CFbsBitGc* bitGc(NULL); - User::LeaveIfError(bitmapDevice->CreateContext(bitGc)); - CleanupStack::PushL(bitGc); - - bitGc->SetPenStyle(CGraphicsContext::ESolidPen); - bitGc->BitBlt(TPoint(0, 0), aMask); - - aDimmedMask->LockHeap(); - TInt w = aMask->SizeInPixels().iWidth; - TInt h = aMask->SizeInPixels().iHeight; - TInt dataStride = aMask->DataStride() - w; - unsigned char* address = (unsigned char *)aDimmedMask->DataAddress(); - - for ( TInt i = 0; i < h; ++i ) - { - for ( TInt j = 0; j < w; ++j ) - { - *address = KTransparency[*address]; - ++address; - } - address += dataStride; - } - - aDimmedMask->UnlockHeap(); - - //AknIconUtils::SetSize(aDimmedMask, aMask->SizeInPixels(), aScaleMode); - - CleanupStack::PopAndDestroy(2); // bitmapDevice, bitGc - CleanupStack::Pop(1); // aDimmedMask - } - - } - -void CBitmapDb::SizeChanged(TSize aSize) - { - for (TInt i = 0; i < iBmpList.Count(); i++) - { - AknIconUtils::SetSize(iBmpList[i], aSize, EAspectRatioNotPreserved); - } - // dimmed mask can't use AknIconUtils::SetSize change its size. - if( iBmpList[EBitmapNextDisableMask] && iBmpList[EBitmapNextMask] ) - { - CFbsBitmap* newMask = NULL; - TRAP_IGNORE(CreateDimmedMaskL( newMask, iBmpList[EBitmapNextMask])); - delete iBmpList[EBitmapNextDisableMask]; - iBmpList[EBitmapNextDisableMask] = newMask; - } - } -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputcandidate.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputcandidate.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,334 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: candidate stands for every cell in drop down list -* -*/ - - -#include -#include -#include -#include - -#include "peninputcandidate.h" -#include "peninputdropdownlist.h" - -_LIT(KEllipsis, "\x2026"); - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CCandidate - -CCandidate* CCandidate::NewL(const TDesC& aString, - MFepCtrlDropdownListContext* aOwner) - { - CCandidate* self = new (ELeave) CCandidate(aString, aOwner); // Q: is here will call ctor of base class? - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -void CCandidate::ConstructL() - { - iDisplayText = iCandidate.AllocL(); - } - -// ----------------------------------------------------------------------------- -// CCandidate::CCandidate -// construct function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CCandidate::CCandidate(const TDesC& aString, MFepCtrlDropdownListContext* aOwner) -: iCandidate(aString),iBaselineOffset(0), iOwner(aOwner) - { - } - -// ----------------------------------------------------------------------------- -// CCandidate::~CCandidate -// destructor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CCandidate::~CCandidate() - { - delete iDisplayText; - } - -// ----------------------------------------------------------------------------- -// CCandidate::GetCandidate -// get candidate string -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -const TDesC& CCandidate::GetCandidate() - { - return iCandidate; - } - -// ----------------------------------------------------------------------------- -// CCandidate::GetRect -// get rect of the candidate -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -const TRect& CCandidate::GetRect() const - { - return iRect; - } - -// ----------------------------------------------------------------------------- -// CCandidate::Move -// move rect of the candidate -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CCandidate::Move(const TPoint& aOffsetPoint) - { - iRect.Move(aOffsetPoint); - } - -// ----------------------------------------------------------------------------- -// CCandidate::SetPosition -// set position for the candidate -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CCandidate::SetPositionL(const TPoint& aLeftTopPosition, - TInt aWidthForOneUnit, - TInt aHeight, - const CFont* aTextFont, - TInt aCellHorizontalMargin) - { - iTextFont = aTextFont; - - // Calculate base line offset - iBaselineOffset = aHeight/2 + aTextFont->AscentInPixels()/2 ; - - // Calculate the cell for the candidate - //const TInt cellCount = CalculateCells(aWidthForOneUnit, aTextFont); - const TInt cellCount = CalculateDisplayTextL(aWidthForOneUnit, aTextFont, iOwner->GetColNum()); - - // modified by txin - // original: - /* - iRect.iBr = aLeftTopPosition; - - iRect.SetRect(aLeftTopPosition, - TSize(cellCount * aWidthForOneUnit + (cellCount - 1) * aCellHorizontalMargin, - aHeight)); - */ - // if owner's horizontal direction is RToL, then aLeftTopPosition actually mean RightTop pos - TInt candHDir = iOwner->CandHDirection(); - TSize candSize = TSize(cellCount * aWidthForOneUnit + (cellCount - 1) * aCellHorizontalMargin, - aHeight); - (candHDir == CFepCtrlDropdownList::ECandFromLToR) ? - iRect.SetRect(aLeftTopPosition, candSize) : - iRect.SetRect(TPoint(aLeftTopPosition.iX - candSize.iWidth, aLeftTopPosition.iY), candSize); - // end modify - - return cellCount; - } - -// ----------------------------------------------------------------------------- -// CCandidate::DrawText -// draw text of the candidate -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CCandidate::DrawText(CFbsBitGc& aGc, const CGraphicsContext::TTextAlign aAlignment, - const TInt aTextMargin, TRgb aTextColor, - TRgb aSpecialTextColor, const TDesC& aFixedText) - { - - aGc.SetBrushStyle(CGraphicsContext::ENullBrush); - if ( aFixedText.Length() == 0 ) - { - // If fixed text has no any data - aGc.SetPenColor(aTextColor); - if(TBidiText::TextDirectionality( *iDisplayText ) == TBidiText:: ERightToLeft) - { - // If find the fixed text in the candidate and the index is equal to 0 - TInt posX = 0; - if(!iTextFont) - { - iTextFont = iOwner->GetFont(); - } - if ( aAlignment == CGraphicsContext::ECenter ) - { - posX = iRect.iTl.iX + - (iRect.Width() - iTextFont->TextWidthInPixels(*iDisplayText)) / 2; - } - else if ( aAlignment == CGraphicsContext::ELeft ) - { - posX = iRect.iTl.iX + aTextMargin; - } - else if ( aAlignment == CGraphicsContext::ERight ) - { - posX = iRect.iTl.iX + iRect.Width() - - iTextFont->TextWidthInPixels(*iDisplayText) - aTextMargin; - } - - CGraphicsContext::TDrawTextExtendedParam param; - param.iParRightToLeft = ETrue; - aGc.DrawTextExtended(*iDisplayText, TPoint(posX,iRect.iTl.iY + iBaselineOffset), param); - } - else - { - aGc.DrawText( *iDisplayText, iRect, iBaselineOffset, aAlignment); - } - } - else - { - if ( iCandidate.Find(aFixedText) == 0 ) - { - // If find the fixed text in the candidate and the index is equal to 0 - TInt posX = 0; - if(!iTextFont) - { - iTextFont = iOwner->GetFont(); - } - if ( aAlignment == CGraphicsContext::ECenter ) - { - posX = iRect.iTl.iX + - (iRect.Width() - iTextFont->TextWidthInPixels(iCandidate)) / 2; - } - else if ( aAlignment == CGraphicsContext::ELeft ) - { - posX = iRect.iTl.iX + aTextMargin; - } - else if ( aAlignment == CGraphicsContext::ERight ) - { - posX = iRect.iTl.iX + iRect.Width() - - iTextFont->TextWidthInPixels(iCandidate) - aTextMargin; - } - - - // Draw Fixed text - aGc.SetPenColor(aTextColor); - aGc.DrawText(aFixedText, TPoint(posX,iRect.iTl.iY + iBaselineOffset)); - - // Snatch the special text - TPtrC buf = iCandidate.Mid(aFixedText.Length()); - - // Set X position for the special text - posX = posX + iTextFont->TextWidthInPixels(aFixedText); - - // Draw special text - aGc.SetPenColor(aSpecialTextColor); - aGc.DrawText(buf, TPoint(posX, iRect.iTl.iY + iBaselineOffset)); - } - else - { - aGc.SetPenColor(aTextColor); - if(TBidiText::TextDirectionality( iCandidate ) == TBidiText:: ERightToLeft) - { - // If find the fixed text in the candidate and the index is equal to 0 - TInt posX = 0; - if(!iTextFont) - { - iTextFont = iOwner->GetFont(); - } - if ( aAlignment == CGraphicsContext::ECenter ) - { - posX = iRect.iTl.iX + - (iRect.Width() - iTextFont->TextWidthInPixels(iCandidate)) / 2; - } - else if ( aAlignment == CGraphicsContext::ELeft ) - { - posX = iRect.iTl.iX + aTextMargin; - } - else if ( aAlignment == CGraphicsContext::ERight ) - { - posX = iRect.iTl.iX + iRect.Width() - - iTextFont->TextWidthInPixels(iCandidate) - aTextMargin; - } - - CGraphicsContext::TDrawTextExtendedParam param; - param.iParRightToLeft = ETrue; - aGc.DrawTextExtended(iCandidate, TPoint(posX,iRect.iTl.iY + iBaselineOffset), param); - } - else - { - aGc.DrawText( iCandidate, iRect, iBaselineOffset, CGraphicsContext::ECenter); - } - } - } - } - -// ----------------------------------------------------------------------------- -// CCandidate::CalculateCells -// calculate the cell for the candidate -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CCandidate::CalculateCells(const TInt aWidthForOneUnit, - const CFont* aTextFont, - const TDesC& aText) - { - const TInt width = aTextFont->TextWidthInPixels(aText) + 2 * iOwner->GetTextMargin(); - - if (width <= aWidthForOneUnit) - { - return 1; - } - - return (width + aWidthForOneUnit + - iOwner->GetCellHorizontalMargin() - 1)/(aWidthForOneUnit + iOwner->GetCellHorizontalMargin()); - } - -TInt CCandidate::CalculateDisplayTextL(const TInt aWidthForOneUnit, - const CFont* aTextFont, - TInt aColNum) - { - TInt cellcnt = CalculateCells(aWidthForOneUnit, aTextFont, *iDisplayText); - - if (cellcnt <= aColNum) - { - return cellcnt; - } - - TPtr ptr = iDisplayText->Des(); - - if (iOwner->CandTruncateType() == CFepCtrlDropdownList::ECandTruncateFromBeginning) - { - while (cellcnt > aColNum && ptr.Length() > 0) - { - ptr.Delete(0, 1); - cellcnt = CalculateCells(aWidthForOneUnit, aTextFont, ptr); - } - } - else if (iOwner->CandTruncateType() == CFepCtrlDropdownList::ECandTruncateAsEllipsis) - { - while (cellcnt > aColNum && ptr.Length() > 1) - { - ptr.Delete(ptr.Length()-2, 2); - ptr.Append(KEllipsis); - cellcnt = CalculateCells(aWidthForOneUnit, aTextFont, ptr); - } - } - else if (iOwner->CandTruncateType() == CFepCtrlDropdownList::ECandTruncateFromEnd) - { - while (cellcnt > aColNum && ptr.Length() > 0) - { - ptr.Delete(ptr.Length()-1, 1); - cellcnt = CalculateCells(aWidthForOneUnit, aTextFont, ptr); - } - } - - return cellcnt; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputdropdownlist.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputdropdownlist.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2292 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: drop-down list control -* -*/ - - -// INCLUDE FILES - - -#include "peninputlistmanager.h" -#include "peninputbitmapdb.h" -#include "peninputcandidate.h" -#include "peninputpages.h" -#include "peninputlayoutbubblectrl.h" - -// added by txin -//#include "peninputlistmultirowrollwithicon.h" -// end -#include "peninputlist.h" -#include -#include -#include -#include -#include -#include - -// constant definition -const TInt32 KInvalidResId = -1; - -// added by txin -const TInt KInvalidCandIndex = -1; -// end adding - -const TInt KPreviewBubbleOffset = 20; - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CFepCtrlDropdownList - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CFepCtrlDropdownList* CFepCtrlDropdownList::NewL( const TPoint& aTopLeftPoint, - CFepUiLayout* aUiLayout, - TInt aControlId, - TResourceReader& aReader, - const TInt aCellWidth, - const TInt aCellHeight, - const TInt aNaviWidth, - const TInt aColNum, - const TInt aRowNum, - const CFont* aFont, - MListEventHandler* aHandler, - const CGraphicsContext::TTextAlign aAlignment, - const TInt aTextMargin, - const TRgb aBorderColor, - const TRgb aBgColor, - const TRgb aNavigationBgColor, - const TRgb aTextColor, - const TRgb aSpecialTextColor, - const TRgb aHighLightTextColor, - const TRgb aHighLightBgColor, - const TRgb aButtonDownBgColor ) - { - CFepCtrlDropdownList* self = NewLC(aTopLeftPoint, - aUiLayout, - aControlId, - aReader, - aCellWidth, - aCellHeight, - aNaviWidth, - aColNum, - aRowNum, - aFont, - aHandler, - aAlignment, - aTextMargin, - aBorderColor, - aBgColor, - aNavigationBgColor, - aTextColor, - aSpecialTextColor, - aHighLightTextColor, - aHighLightBgColor, - aButtonDownBgColor); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::NewLC -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// - -EXPORT_C CFepCtrlDropdownList* CFepCtrlDropdownList::NewLC(const TPoint& aTopLeftPoint, - CFepUiLayout* aUiLayout, - TInt aControlId, - TResourceReader& aReader, - const TInt aCellWidth, - const TInt aCellHeight, - const TInt aNaviWidth, - const TInt aColNum, - const TInt aRowNum, - const CFont* aFont, - MListEventHandler* aHandler, - const CGraphicsContext::TTextAlign aAlignment, - const TInt aTextMargin, - const TRgb aBorderColor, - const TRgb aBgColor, - const TRgb aNavigationBgColor, - const TRgb aTextColor, - const TRgb aSpecialTextColor, - const TRgb aHighLightTextColor, - const TRgb aHighLightBgColor, - const TRgb aButtonDownBgColor) - { - CFepCtrlDropdownList* self = new (ELeave) CFepCtrlDropdownList(aTopLeftPoint, - aUiLayout, - aControlId, - aCellWidth, - aCellHeight, - aNaviWidth, - aColNum, - aRowNum, - aFont, - aHandler, - aAlignment, - aTextMargin, - aBorderColor, - aBgColor, - aNavigationBgColor, - aTextColor, - aSpecialTextColor, - aHighLightTextColor, - aHighLightBgColor, - aButtonDownBgColor); - CleanupStack::PushL(self); - self->ConstructL(aTopLeftPoint,aReader); - return self; - } - -// txin -EXPORT_C CFepCtrlDropdownList* CFepCtrlDropdownList::NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aResId, - TPoint aTopLeftPoint, - TSize aCellSize, - TInt aColNum, - TInt aRowNum) - { - CFepCtrlDropdownList* self = new (ELeave) CFepCtrlDropdownList(aUiLayout, - aControlId, - aTopLeftPoint, - aCellSize, - aColNum, - aRowNum); - CleanupStack::PushL(self); - self->ConstructL(aTopLeftPoint, aResId); - CleanupStack::Pop(self); - return self; - } - -EXPORT_C CFepCtrlDropdownList* CFepCtrlDropdownList::NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt aResId, - TPoint aTopLeftPoint, - const CFont* aFont, - TSize aCellSize, - TInt aNaviWidth, - TInt aColNum, - TInt aRowNum, - TInt aSpinBtnHeight, - TInt aHorizontalCellMargin, - TInt aVerticalCellMargin, - THDirection aDirection, - TBool aPageShown) - { - CFepCtrlDropdownList* self = new (ELeave) CFepCtrlDropdownList(aUiLayout, - aControlId, - aResId, - aTopLeftPoint, - aFont, - aCellSize, - aNaviWidth, - aColNum, - aRowNum, - aSpinBtnHeight, - aHorizontalCellMargin, - aVerticalCellMargin, - aDirection, - aPageShown); - CleanupStack::PushL(self); - self->ConstructL(aTopLeftPoint, aResId); - CleanupStack::Pop(self); - return self; - } - - -// end - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::CFepCtrlDropdownList -// construtor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CFepCtrlDropdownList::CFepCtrlDropdownList(const TPoint& aTopLeftPoint, - CFepUiLayout* aUiLayout, - TInt aControlId, - const TInt aCellWidth, - const TInt aCellHeight, - const TInt aNaviWidth, - const TInt aColNum, - const TInt aRowNum, - const CFont* aFont, - MListEventHandler* aHandler, - const CGraphicsContext::TTextAlign aAlignment, - const TInt aTextMargin, - const TRgb aBorderColor, - const TRgb aBgColor, - const TRgb aNavigationBgColor, - const TRgb aTextColor, - const TRgb aSpecialTextColor, - const TRgb aHighLightTextColor, - const TRgb aHighLightBgColor, - const TRgb aButtonDownBgColor) - : CFepUiBaseCtrl(TRect(), aUiLayout, aControlId), - iEnableSecondary(EFalse), - iFirstCandidateIndex(0), - iLastCandidateIndex(0), - iFont(aFont), iCellWidth(aCellWidth), iCellHeight(aCellHeight), iNaviWidth(aNaviWidth), - iSpinBtnHeight(aCellHeight), - iCellHorizontalMargin(0), - iCellVerticalMargin(0), - iOriginalCandIdx(KInvalidCandIndex), - iOriginalFirstCandIdx(KInvalidCandIndex), - iUpdateListReDraw(ETrue), - iAlignment(aAlignment), iTextMargin(aTextMargin), iColNum(aColNum), iRowNum(aRowNum), - iBorderColor(aBorderColor), iBgColor(aBgColor), iNavigationBgColor(aNavigationBgColor), - iTextColor(aTextColor), iSpecialTextColor(aSpecialTextColor), - iHighLightTextColor(aHighLightTextColor), - iHighLightBgColor(aHighLightBgColor), iButtonDownBgColor(aButtonDownBgColor), - iTopLeftPoint(aTopLeftPoint), - iEventIdForCandidateSelected(-1), - iEventIdForNextPageCandidate(-1), - iEventIdForPreviousPageCandidate(-1), - iEventIdForCandidateExisted(-1), - iListEventHandler(aHandler), iFirstTimeConstruct(ETrue), iListType(EListNoExpandable), - iFuzzyBoundry(0), - iCandExpandType(ECandExpandDownward), - iCandHDirection(ECandFromLToR), - iPageCtrlShown(ETrue) - { - SetControlType(KDropDownListCtrlType); - } - -// txin -CFepCtrlDropdownList::CFepCtrlDropdownList(CFepUiLayout* aUiLayout, - TInt aControlId, - TPoint aTopLeftPoint, - TSize aCellSize, - TInt aColNum, - TInt aRowNum) - : CFepUiBaseCtrl(TRect(), aUiLayout, aControlId), - iEnableSecondary(EFalse), - iFirstCandidateIndex(0), - iLastCandidateIndex(0), - iCellWidth(aCellSize.iWidth), iCellHeight(aCellSize.iHeight), iNaviWidth(iCellWidth), - iSpinBtnHeight(iCellHeight), - iCellHorizontalMargin(0), - iCellVerticalMargin(0), - iOriginalCandIdx(KInvalidCandIndex), - iOriginalFirstCandIdx(KInvalidCandIndex), - iUpdateListReDraw(ETrue), - iAlignment(CGraphicsContext::ECenter), iTextMargin(3), iColNum(aColNum), iRowNum(aRowNum), - iBorderColor(KRgbBlack), iBgColor(TRgb(0xeeeeee)), iNavigationBgColor(TRgb(0xeeeeee)), - iTextColor(KRgbBlack), iSpecialTextColor(KRgbBlack), iHighLightTextColor(KRgbBlack), - iHighLightBgColor(TRgb(0xcccccc)), iButtonDownBgColor(KRgbGray), iTopLeftPoint(aTopLeftPoint), - iEventIdForCandidateSelected(-1), - iEventIdForNextPageCandidate(-1), - iEventIdForPreviousPageCandidate(-1), - iEventIdForCandidateExisted(-1), - iFirstTimeConstruct(ETrue), iListType(EListNoExpandable), - iFuzzyBoundry(0), - iCandExpandType(ECandExpandDownward), - iCandHDirection(ECandFromLToR), - iPageCtrlShown(ETrue) - { - SetControlType(KDropDownListCtrlType); - } - -CFepCtrlDropdownList::CFepCtrlDropdownList(CFepUiLayout* aUiLayout, - TInt aControlId, - TInt /*aResId*/, - TPoint aTopLeftPoint, - const CFont* /*aFont*/, - TSize aCellSize, - TInt aNaviWidth, - TInt aColNum, - TInt aRowNum, - TInt aSpinBtnHeight, - TInt aHorizontalCellMargin, - TInt aVerticalCellMargin, - THDirection aDirection, - TBool aPageShown) - : CFepUiBaseCtrl(TRect(), aUiLayout, aControlId), - iEnableSecondary(EFalse), - iFirstCandidateIndex(0), - iLastCandidateIndex(0), - iCellWidth(aCellSize.iWidth), iCellHeight(aCellSize.iHeight), iNaviWidth(aNaviWidth), - iSpinBtnHeight(aSpinBtnHeight), - iCellHorizontalMargin(aHorizontalCellMargin), - iCellVerticalMargin(aVerticalCellMargin), - iOriginalCandIdx(KInvalidCandIndex), - iOriginalFirstCandIdx(KInvalidCandIndex), - iUpdateListReDraw(ETrue), - iAlignment(CGraphicsContext::ECenter), iTextMargin(3), iColNum(aColNum), iRowNum(aRowNum), - iBorderColor(KRgbBlack), iBgColor(TRgb(0xeeeeee)), iNavigationBgColor(TRgb(0xeeeeee)), - iTextColor(KRgbBlack), iSpecialTextColor(KRgbBlack), iHighLightTextColor(KRgbBlack), - iHighLightBgColor(TRgb(0xcccccc)), iButtonDownBgColor(KRgbGray), iTopLeftPoint(aTopLeftPoint), - iEventIdForCandidateSelected(-1), - iEventIdForNextPageCandidate(-1), - iEventIdForPreviousPageCandidate(-1), - iEventIdForCandidateExisted(-1), - iFirstTimeConstruct(ETrue), iListType(EListNoExpandable), - iFuzzyBoundry(0), - iCandExpandType(ECandExpandDownward), - iCandHDirection(aDirection), - iPageCtrlShown(aPageShown) - { - SetControlType(KDropDownListCtrlType); - } - -// end - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::ConstructL -// 2nd construct function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::ConstructL(const TPoint& aTopLeftPoint, TResourceReader& aReader) - { - BaseConstructL(); - - iBitmapDb = CBitmapDb::NewL(aReader, - TSize(iCellWidth, iCellHeight), - TSize(iNaviWidth, iCellHeight), - TSize(iNaviWidth, iSpinBtnHeight)); - - SetTextColor(iBitmapDb->TextColor()); - SetBorderColor(iBitmapDb->FrameColor()); - iFirstTimeConstruct = EFalse; - - iPages = CPages::NewL(); - - iListManager = CListManager::NewL(this); - - iListManager->SetActiveList(iListManager->ListOneRowWithoutIcon()); - - SetRect( iListManager->ActiveList()->Rect() ); - - const TSize& size = Rect().Size(); - TRect rect(aTopLeftPoint,size); - SetRect(rect); - } - -// txin -void CFepCtrlDropdownList::ConstructL(TPoint aTopLeftPoint, TInt aResId) - { - SetResourceId(aResId); - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, aResId); - ConstructL(aTopLeftPoint, reader); - CleanupStack::PopAndDestroy(); // reader - } -// end - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::~CFepCtrlDropdownList -// destructor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CFepCtrlDropdownList::~CFepCtrlDropdownList() - { - delete iBubbleCtrl; - - // destroy list objects - delete iListManager; - - // Delete bitmapDb - delete iBitmapDb; - - // Delete pages - delete iPages; - - // Delete all candidate - iCandidatelist.ResetAndDestroy(); - - // Clear and close iSecondaryList - iSecondaryList.Close(); - - // Clear and close iHighlightList - iHighlightList.Close(); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SizeChanged -// size change function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SizeChanged(const TInt aCellWidth, - const TInt aCellHeight, - const TInt aNaviWidth, - const TPoint aTopLeftPoint, - const TInt aColNum, - const TInt aRowNum) - { - iCellWidth = aCellWidth; - iCellHeight = aCellHeight; - iNaviWidth = aNaviWidth; - iSpinBtnHeight = aCellHeight; - - iBitmapDb->SizeChanged(TSize(aNaviWidth, aCellHeight)); - - if ( aTopLeftPoint != TPoint(0,0) ) - { - iTopLeftPoint = aTopLeftPoint; - } - - if ( aColNum ) - iColNum = aColNum; - if ( aRowNum ) - iRowNum = aRowNum; - - iListManager->SizeChanged(); - - switch ( iListType ) - { - case EListNoExpandable: - ChangeActiveList( iListManager->ListOneRowWithoutIcon() ); - break; - case EListNoExpandableWithBubble: - { - ChangeActiveList(iListManager->ListOneRowWithoutIconWithBubble()); - } - break; - case EListExpandable: - case EListExpandableWithoutIcon: - { - ChangeActiveList(iListManager->ListOneRowWithIcon()); - } - break; - case EListExpandableWithBubble: - { - ChangeActiveList(iListManager->ListOneRowWithIconWithBubble()); - } - break; - // txin - case EListExpandableRollWithIcon: - { - TInt onerowCandIdx = OneRowStartCandIdx(); - - if (onerowCandIdx != KInvalidCandIndex) - { - ChangeActiveList(iListManager->ListOneRowRollWithIcon(), onerowCandIdx); - return; - } - - ChangeActiveList(iListManager->ListOneRowRollWithIcon()); - } - break; - case EListExpandableRollWithIconWithBubble: - { - TInt onerowCandIdx = OneRowStartCandIdx(); - - if (onerowCandIdx != KInvalidCandIndex) - { - ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble(), onerowCandIdx); - return; - } - - ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble()); - } - break; - - case EListExpandableMultiRowWithoutIcon: - { - ChangeActiveList(iListManager->ListExpandableMultiRowWithoutIcon()); - } - break; - default: - __ASSERT_DEBUG( EFalse, - User::Panic( _L("TListType Error::SizeChanged()"), 0 ) ); - break; - } - } - -// --------------------------------------------------------------------------- -// CFepUiBaseCtrl::HandlePointerDownEventL -// Handle pointer down event -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CFepUiBaseCtrl* CFepCtrlDropdownList::HandlePointerDownEventL(const TPoint& aPoint) - { - CFepUiBaseCtrl::HandlePointerDownEventL(aPoint); - - iListManager->ActiveList()->HandlePointerDownL(aPoint); - - return this; - } - -// --------------------------------------------------------------------------- -// CFepUiBaseCtrl::HandlePointerUpEventL -// Handle pointer up event -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CFepUiBaseCtrl* CFepCtrlDropdownList::HandlePointerUpEventL(const TPoint& aPoint) - { - CFepUiBaseCtrl::HandlePointerUpEventL(aPoint); - - iListManager->ActiveList()->HandlePointerUpL(aPoint); - - return this; - } - -// --------------------------------------------------------------------------- -// CFepUiBaseCtrl::HandlePointerMoveEventL -// Handle pointer move event -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CFepUiBaseCtrl* CFepCtrlDropdownList::HandlePointerMoveEventL(const TPoint& aPoint) - { - - if(!PointerDown()) - { - return NULL; - } - - iListManager->ActiveList()->HandlePointerDragL(aPoint); - - return this; - } - -EXPORT_C void CFepCtrlDropdownList::HandlePointerLeave(const TPoint& aPoint) - { - CFepUiBaseCtrl::HandlePointerLeave(aPoint); - if(!Hiden()) - iListManager->ActiveList()->HandlePointerLeave(aPoint); - ClearBubble(); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::AddCandidatesL -// Add candidate -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::AddCandidatesL(const RPointerArray& aCandidates, - const TListType /*aListType*/) - { - // add new candidates - for (TInt i = iCandidatelist.Count(); i < aCandidates.Count(); i++) - { - CCandidate* candidate = CCandidate::NewL(*aCandidates[i], this); - - if (iCandidatelist.Append(candidate) != KErrNone) - { - delete candidate; - } - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetCandidatesL -// Set candidate -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetCandidatesL(const RPointerArray& aCandidates, - const TListType aListType, - const TDesC& aFixedText) - { - //clear last candidates which had been set - iCandidatelist.ResetAndDestroy(); - - iListManager->ResetStatus(); - - iHighlightList.Reset(); - - iFixedText.Zero(); - iFixedText.Append(aFixedText); - - iFirstCandidateIndex = 0; - iLastCandidateIndex = 0; - // create or add new ones - for( TInt i=0; i < aCandidates.Count(); i++ ) - { - // CCandidate is s.c. self-containing class - CCandidate* candidate = CCandidate::NewL(*aCandidates[i], this); - // referring to memory object - iCandidatelist.Append(candidate); - } - - iListType = aListType; - - switch ( aListType ) - { - case EListNoExpandable: - { - ChangeActiveList( iListManager->ListOneRowWithoutIcon() ); - } - break; - case EListNoExpandableWithBubble: - { - ChangeActiveList( iListManager->ListOneRowWithoutIconWithBubble() ); - } - break; - case EListExpandable: - case EListExpandableWithoutIcon: - { - ChangeActiveList(iListManager->ListOneRowWithIcon()); - } - break; - case EListExpandableWithBubble: - { - ChangeActiveList(iListManager->ListOneRowWithIconWithBubble()); - } - break; - - // txin - case EListExpandableRollWithIcon: - { - SetOneRowStartCandIdx(KInvalidCandIndex); - SetOriginalFirstCandIdx(KInvalidCandIndex); - - ChangeActiveList(iListManager->ListOneRowRollWithIcon()); - } - break; - case EListExpandableRollWithIconWithBubble: - { - SetOneRowStartCandIdx(KInvalidCandIndex); - SetOriginalFirstCandIdx(KInvalidCandIndex); - - ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble()); - } - break; - - case EListExpandableMultiRowWithoutIcon: - { - ChangeActiveList( iListManager->ListExpandableMultiRowWithoutIcon() ); - } - break; - default: - __ASSERT_DEBUG( EFalse, - User::Panic( _L("TListType Error::SetCandidatesL()"), 0 ) ); - break; - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::Move -// when the control is moved, the function will be called -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::Move(const TPoint& aOffset) - { - ClearRect(Rect()); - Invalidate(Rect(),ETrue); - iListManager->Move(aOffset); - SetRect(iListManager->ActiveList()->Rect()); - iListManager->ActiveList()->Draw(); - Invalidate(iListManager->ActiveList()->Rect()); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::OnDeActivate -// when the control is hide, the function will be called -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::OnDeActivate() - { - iListManager->ResetStatus(); - } - -// --------------------------------------------------------------------------- -// Hide or show dropdown list. -// --------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::Hide( TBool aFlag ) - { - ClearBubble(); - CFepUiBaseCtrl::Hide( aFlag ); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::FoldList -// fold the drop down list control -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::FoldList() - { - if ((iListManager->ActiveList() == iListManager->ListMultiRowWithIcon()) - || (iListManager->ActiveList() == iListManager->ListMultiRowWithoutIcon())) - { - ChangeActiveList(iListManager->ListOneRowWithIcon(), iFirstCandidateIndex); - } - // added by txin - else if (iListManager->ActiveList() == iListManager->ListMultiRowRollWithIcon()) - { - TInt onerowCandIdx = OneRowStartCandIdx(); - - if (onerowCandIdx != KInvalidCandIndex) - { - ChangeActiveList(iListManager->ListOneRowRollWithIcon(), onerowCandIdx); - return; - } - - ChangeActiveList(iListManager->ListOneRowRollWithIcon(), iFirstCandidateIndex); - } - else if (iListManager->ActiveList() == iListManager->ListMultiRowRollWithIconWithBubble()) - { - TInt onerowCandIdx = OneRowStartCandIdx(); - - if (onerowCandIdx != KInvalidCandIndex) - { - ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble(), onerowCandIdx); - return; - } - - ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble(), iFirstCandidateIndex); - } - else if(iListManager->ActiveList() == iListManager->ListMultiRowWithIconWithBubble()) - { - ChangeActiveList(iListManager->ListOneRowWithIconWithBubble(), iFirstCandidateIndex); - } - // end - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::ResetAndClear -// reset and clear and redraw the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::ResetAndClear(const TListType aListType) - { - //clear last candidates which had been set - iCandidatelist.ResetAndDestroy(); - - iFixedText.Zero(); - - iFirstCandidateIndex = 0; - iLastCandidateIndex = 0; - - switch ( aListType ) - { - case EListNoExpandable: - ChangeActiveList( iListManager->ListOneRowWithoutIcon() ); - break; - case EListNoExpandableWithBubble: - ChangeActiveList( iListManager->ListOneRowWithoutIconWithBubble() ); - break; - - case EListExpandable: - case EListExpandableWithoutIcon: - { - ChangeActiveList(iListManager->ListOneRowWithIcon()); - NotifyClosePage(); - } - break; - case EListExpandableWithBubble: - { - ChangeActiveList(iListManager->ListOneRowWithIconWithBubble()); - NotifyClosePage(); - } - break; - - // txin - case EListExpandableRollWithIcon: - { - ChangeActiveList(iListManager->ListOneRowRollWithIcon()); - NotifyClosePage(); - } - break; - // end - case EListExpandableRollWithIconWithBubble: - { - ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble()); - NotifyClosePage(); - } - break; - case EListExpandableMultiRowWithoutIcon: - { - ChangeActiveList(iListManager->ListExpandableMultiRowWithoutIcon()); - NotifyClosePage(); - } - break; - default: - __ASSERT_DEBUG( EFalse, - User::Panic( _L("TListType Error::ResetAndClear()"), 0 ) ); - break; - } - } - - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::HandleEvent -// when there is out event coming, the function will be called -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::HandleControlEvent(TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData) - { - if ( iListEventHandler ) - { - iListEventHandler->HandleListOuterEvent(aEventType, aCtrl, aEventData); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::Draw -// draw the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::Draw() - { - if(!AbleToDraw()) - return; - - if (!iFirstTimeConstruct) - { - // if construct is not finished, then no need to draw -///DrawOpaqueMaskBackground(); - - //ActivateBitmapContext(); - - iListManager->ActiveList()->Draw(); - Invalidate(iListManager->ActiveList()->Rect()); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetHighlightCell -// set or unset the high light effect for the cell -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetHighlightCell(const TInt aCellIndex, - TBool aHighlight, - const TBool aIsDraw) - { - if (aHighlight) - { - - iHighlightList.Reset(); - - iHighlightList.Append(aCellIndex); - - if ((iListType == EListExpandableRollWithIcon || - iListType == EListExpandableRollWithIconWithBubble) && - (aCellIndex == GetFirstCandidateIndex())) - { - SetOneRowStartCandIdx(GetFirstCandidateIndex()); - } - } - else - { - TInt index = iHighlightList.Find(aCellIndex); - - if ( index != KErrNotFound ) - { - iHighlightList.Remove(index); - } - } - - if( aIsDraw ) - { - iListManager->ActiveList()->SetHighlightCell(aCellIndex, aHighlight, EFalse); - - Draw(); - } - } - - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::Rect -// get the rect of the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C const TRect& CFepCtrlDropdownList::Rect() - { - return iListManager->ActiveList()->Rect(); - } - - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetEventIdForCandidateSelected -// set event id when candidate is selected -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetEventIdForCandidateSelected(TInt aEventId) - { - iEventIdForCandidateSelected = aEventId; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetEventIdForNextPageCandidate -// set event id when need get next page candidate -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetEventIdForNextPageCandidate(TInt aEventId) - { - iEventIdForNextPageCandidate = aEventId; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetEventIdForPreviousPageCandidate -// set event id when need get previous page candidate -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetEventIdForPreviousPageCandidate(TInt aEventId) - { - iEventIdForPreviousPageCandidate = aEventId; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetEventIdForCandidateExisted -// set event id when need judge if candidate exist -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetEventIdForCandidateExisted(TInt aEventId) - { - iEventIdForCandidateExisted = aEventId; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetTopLeftPoint -// set top left point of the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetTopLeftPoint(const TPoint aTopLeftPoint) - { - SizeChanged(iCellWidth, iCellHeight, iNaviWidth, aTopLeftPoint); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetCellWidth -// set cell width -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetCellWidth(const TInt aCellWidth) - { - SizeChanged(aCellWidth, iCellHeight, iNaviWidth); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetCellHeight -// set cell height -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetCellHeight(const TInt aCellHeight) - { - SizeChanged(iCellWidth, aCellHeight, iNaviWidth); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetNaviWidth -// set navigation width -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetNaviWidth(const TInt aNaviWidth) - { - SizeChanged(iCellWidth, iCellHeight, aNaviWidth); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetColNum -// set columns number -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetColNum(const TInt aColNum) - { - SizeChanged(iCellWidth, iCellHeight, iNaviWidth, iTopLeftPoint, aColNum); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetRowNum -// Set rows number -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetRowNum(const TInt aRowNum) - { - SizeChanged(iCellWidth, iCellHeight, iNaviWidth, iTopLeftPoint, iColNum, aRowNum); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetBorderColor -// Set border color -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetBorderColor(TRgb aBorderColor, TBool aReDraw) - { - iBorderColor = aBorderColor; - - if ( aReDraw ) - { - Draw(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetBgColor -// Set background color for the whole DDl (drop down list) -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetBgColor(TRgb aBgColor, TBool aReDraw) - { - iBgColor = aBgColor; - - if ( aReDraw ) - { - Draw(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetNavigationBgColor -// set background color for navigation area -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetNavigationBgColor(TRgb aNavigationBgColor, TBool aReDraw) - { - iNavigationBgColor = aNavigationBgColor; - - if ( aReDraw ) - { - Draw(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetTextColor -// set text color -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetTextColor(TRgb aTextColor, TBool aReDraw) - { - iTextColor = aTextColor; - - if ( aReDraw ) - { - Draw(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetSpecialTextColor -// set special text color -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetSpecialTextColor(TRgb aSpecialTextColor, TBool aReDraw) - { - iSpecialTextColor = aSpecialTextColor; - - if ( aReDraw ) - { - Draw(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetHighLightTextColor -// set text color for highlight -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetHighLightTextColor(TRgb aHighLightTextColor, TBool aReDraw) - { - iHighLightTextColor = aHighLightTextColor; - - if ( aReDraw ) - { - Draw(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetHighLightBgColor -// set background color for highlight -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetHighLightBgColor(TRgb aHighLightBgColor, TBool aReDraw) - { - iHighLightBgColor = aHighLightBgColor; - - if ( aReDraw ) - { - Draw(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetTextAlighment -// set text alignment -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetTextAlighment(const CGraphicsContext::TTextAlign aAlignment, - TBool aReDraw) - { - iAlignment = aAlignment; - - if ( aReDraw ) - { - Draw(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetTextAlighment -// set text alignment -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetTextMargin(const TInt aTextMargin, TBool aReDraw) - { - iTextMargin = aTextMargin; - - if ( aReDraw ) - { - Draw(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetCellColor -// set cell color -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetSecondaryList(RArray& aIndexList, TBool aReDraw) - { - iSecondaryList.Reset(); - for (TInt i=0; i < aIndexList.Count(); i++) - { - iSecondaryList.Append(aIndexList[i]); - } - - if ( aReDraw ) - { - Draw(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetFont -// set text font -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetFont(const CFont* aFont, TBool aReDraw) - { - iFont = aFont; - - if ( aReDraw ) - { - switch ( iListType ) - { - case EListNoExpandable: - ChangeActiveList( iListManager->ListOneRowWithoutIcon() ); - break; - case EListExpandable: - case EListExpandableWithoutIcon: - ChangeActiveList(iListManager->ListOneRowWithIcon()); - break; - // txin - case EListExpandableRollWithIcon: - ChangeActiveList(iListManager->ListOneRowRollWithIcon()); - break; - case EListExpandableRollWithIconWithBubble: - ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble()); - break; - case EListExpandableMultiRowWithoutIcon: - { - ChangeActiveList( iListManager->ListExpandableMultiRowWithoutIcon() ); - } - break; - default: - __ASSERT_DEBUG( EFalse, - User::Panic( _L("TListType Error::SetFont()"), 0 ) ); - break; - } - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetListEventHandler -// set list event handler -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetListEventHandler(MListEventHandler* aHandler) - { - iListEventHandler = aHandler; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::CandidateCount -// get candidate count -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CFepCtrlDropdownList::CandidateCount() const - { - return iCandidatelist.Count(); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetCellColorList -// get multi color list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -const RArray& CFepCtrlDropdownList::GetSecondaryList() const - { - return iSecondaryList; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::EnableMultiColor -// enable multi color or not -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::EnableSecondary(TBool aEnable, TBool aReDraw) - { - iEnableSecondary = aEnable; - - if ( aReDraw ) - { - Draw(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::IsEnableSecondary -// get multi color is enable or disable -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C TBool CFepCtrlDropdownList::IsEnableSecondary() const - { - return iEnableSecondary; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::DrawMask -// draw mask -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::DrawMask(TRect aRect) - { - Gc()->Activate( MaskBitmapDevice() ); - Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - Gc()->SetBrushColor( TRgb(KOpaqueColor) ); - Gc()->SetPenSize(PenSize()); - Gc()->SetPenColor( TRgb(KOpaqueColor) ); - Gc()->DrawRect(aRect); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::ActivateBitmapContext -// active bitmap context -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::ActivateBitmapContext() - { - Gc()->Activate(BitmapDevice()); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::Gc -// return the graphics context -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CFbsBitGc* CFepCtrlDropdownList::Gc() - { - return static_cast(BitGc()); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetFirstCandidateIndex -// get FirstCandidateIndex -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CFepCtrlDropdownList::GetFirstCandidateIndex() - { - return iFirstCandidateIndex; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetLastCandidateIndex -// get LastCandidateIndex -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CFepCtrlDropdownList::GetLastCandidateIndex() - { - return iLastCandidateIndex; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetFirstCandidateIndex -// set FirstCandidateIndex -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::SetFirstCandidateIndex(TInt aFirstIndex) - { - iFirstCandidateIndex = aFirstIndex; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetLastCandidateIndex -// Set LastCandidateIndex -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::SetLastCandidateIndex(TInt aLastIndex) - { - iLastCandidateIndex = aLastIndex; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetCandidate -// get candidate -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CCandidate* CFepCtrlDropdownList::GetCandidate(TInt aIndex) - { - if ( ( aIndex >= 0 ) && ( aIndex < iCandidatelist.Count() ) ) - { - return iCandidatelist[aIndex]; - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetTopLeftPoint -// get Top Left Point -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TPoint CFepCtrlDropdownList::GetTopLeftPoint() - { - return iTopLeftPoint; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetCellWidth -// get width -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CFepCtrlDropdownList::GetCellWidth() - { - return iCellWidth; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetCellHeight -// get cell height -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CFepCtrlDropdownList::GetCellHeight() - { - return iCellHeight; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetNaviWidth -// get navigation width -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CFepCtrlDropdownList::GetNaviWidth() - { - return iNaviWidth; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetColNum -// get columns number -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CFepCtrlDropdownList::GetColNum() - { - return iColNum; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetRowNum -// get rows number -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CFepCtrlDropdownList::GetRowNum() - { - return iRowNum; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetFont -// get text font -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -const CFont* CFepCtrlDropdownList::GetFont() - { - return iFont; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetAlignment -// get alignment -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CGraphicsContext::TTextAlign CFepCtrlDropdownList::GetAlignment() - { - return iAlignment; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetAlignment -// get alignment -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CFepCtrlDropdownList::GetTextMargin() - { - return iTextMargin; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetBgColor -// get background color -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TRgb CFepCtrlDropdownList::GetBgColor() - { - return iBgColor; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetButtonDownBgColor -// get button down color -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TRgb CFepCtrlDropdownList::GetButtonDownBgColor() - { - return iButtonDownBgColor; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetBorderColor -// get border color -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TRgb CFepCtrlDropdownList::GetBorderColor() - { - return iBorderColor; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetTextColor -// get text color -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TRgb CFepCtrlDropdownList::GetTextColor() - { - return iTextColor; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetHighLightBgColor -// get highlight background color -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TRgb CFepCtrlDropdownList::GetHighLightBgColor() - { - return iHighLightBgColor; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetHighLightTextColor -// get highlignt text color -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TRgb CFepCtrlDropdownList::GetHighLightTextColor() - { - return iHighLightTextColor; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetSpecialTextColor -// get special text color -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TRgb CFepCtrlDropdownList::GetSpecialTextColor() - { - return iSpecialTextColor; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetFixedText -// get fixed text -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TDesC CFepCtrlDropdownList::GetFixedText() - { - return iFixedText; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetHighlightList -// get bitmap manager -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -const RArray& CFepCtrlDropdownList::GetHighlightList() const - { - return iHighlightList; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetPages -// get page manager -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPages* CFepCtrlDropdownList::GetPages() - { - return iPages; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetBitmapDb -// get bitmap manager -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CBitmapDb* CFepCtrlDropdownList::GetBitmapDb() - { - return iBitmapDb; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::ReportCandidateSelectEvent -// report candidate selected event -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::ReportCandidateSelectEventL(const TDesC& aCandidate, - const TInt aSelectedIndex) - { - HBufC* bufc = HBufC::NewL( aCandidate.Length() + 1 ); - TPtr ptr = bufc->Des(); - ptr.Copy( aCandidate ); - ptr.Append( (TUint16*)&aSelectedIndex, 1 ); - ReportEvent(iEventIdForCandidateSelected, *bufc); - delete bufc; - bufc = NULL; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::Invalidate -// update the animation -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::Invalidate(const TRect& aRect, TBool aUpdateAll) - { - RootControl()->UpdateArea(aRect,aUpdateAll); - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::ChangeActiveList -// change active list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::ChangeActiveList(CList* aList, TInt aLastIndex) - { - TRect rect = Rect(); - - CList* beforeList = iListManager->ActiveList(); - - if( RootControl()->CtrlCapPointer() == this) - { - SetCapture(EFalse); - } - - switch ( iListType ) - { - case EListNoExpandable: - case EListNoExpandableWithBubble: - EnableSecondary(ETrue); - break; - case EListExpandable: - case EListExpandableWithBubble: - case EListExpandableWithoutIcon: - // txin - case EListExpandableRollWithIcon: - case EListExpandableRollWithIconWithBubble: - // end - EnableSecondary(EFalse); - break; - case EListExpandableMultiRowWithoutIcon: - break; - default: - __ASSERT_DEBUG( EFalse, - User::Panic( _L("TListType Error::ChangeActiveList()"), 0 ) ); - break; - } - - iListManager->SetActiveList(aList); - SetRect(iListManager->ActiveList()->Rect()); - - if ( aLastIndex ) - { - SetLastCandidateIndex(aLastIndex); - } - else - { - GetPages()->Reset(); - SetFirstCandidateIndex(0); - SetLastCandidateIndex(0); - } - - if(!Hiden() && Ready()) - { - TRAP_IGNORE(iListManager->ActiveList()->UpdateListL()); - } - - // If the list is shrink, then redraw - // txin - if ( ( ( beforeList == iListManager->ListMultiRowWithIcon() ) - && ( aList != iListManager->ListMultiRowWithIcon() ) ) - || ( ( ( beforeList == iListManager->ListMultiRowWithoutIcon() ) - && ( aList != iListManager->ListMultiRowWithoutIcon() ) ) ) - || ( ( ( beforeList == iListManager->ListMultiRowRollWithIcon()) - && ( aList != iListManager->ListMultiRowRollWithIcon() ) ) ) - || ( ( ( beforeList == iListManager->ListExpandableMultiRowWithoutIcon() ) - && ( aList != iListManager->ListExpandableMultiRowWithoutIcon() ) ) ) - || ( ( ( beforeList == iListManager->ListMultiRowWithIconWithBubble() )) - && (aList != iListManager->ListMultiRowWithIconWithBubble() ) ) - || ( ( ( beforeList == iListManager->ListMultiRowRollWithIconWithBubble() )) - && (aList != iListManager->ListMultiRowRollWithIconWithBubble() ) ) ) - { - rect.Shrink(TSize(0,-1)); - RootControl()->ReDrawRect(rect); - Invalidate(rect,ETrue); - } - // end - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::GetPenSize -// get pen size -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -const TSize CFepCtrlDropdownList::GetPenSize() - { - return PenSize(); - } - -void CFepCtrlDropdownList::SetCapture(TBool aFlag) - { - CapturePointer(aFlag); - } - -// --------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetActive -// Set active for the button -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetActive(TBool aActiveFlag) - { - if(IsActive() != aActiveFlag) - { - CFepUiBaseCtrl::SetActive(aActiveFlag); - /*Draw(); - UpdateArea(Rect(),EFalse);*/ - } - } - -// --------------------------------------------------------------------------- -// CFepCtrlDropdownList::ConstructFromResourceL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - User::Leave(KErrArgument); - } - - // first time construct will not go this way - // only useful for skin change - if (!iFirstTimeConstruct) - { - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - iBitmapDb->ConstructFromResourceL(reader, - TSize(iCellWidth, iCellHeight), - TSize(iNaviWidth, iCellHeight), - TSize(iNaviWidth, iSpinBtnHeight)); - CleanupStack::PopAndDestroy(); // reader - SetTextColor(iBitmapDb->TextColor()); - SetBorderColor(iBitmapDb->FrameColor()); - iListManager->ActiveList()->UpdateListL(AbleToDraw(),EFalse); - Draw(); - } - - iFirstTimeConstruct = EFalse; - } - -// --------------------------------------------------------------------------- -// CFepCtrlDropdownList::NotifyGetNextPage -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::NotifyGetNextPage() - { - ReportEvent(iEventIdForNextPageCandidate); - } - -// --------------------------------------------------------------------------- -// CFepCtrlDropdownList::NotifyGetPreviousPage -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::NotifyGetPreviousPage() - { - ReportEvent(iEventIdForPreviousPageCandidate); - } - -// --------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetFlagCandidateExist -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetFlagCandidateExist(TBool aFlag) - { - iCandidateExisted = aFlag; - } - -// --------------------------------------------------------------------------- -// CFepCtrlDropdownList::NextCandidateExist -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TBool CFepCtrlDropdownList::NextCandidateExist() - { - ReportEvent(iEventIdForCandidateExisted); - - return iCandidateExisted; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::AutoChangeActiveList -// change active list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::AutoChangeActiveList( TInt aLastIndex ) - { - switch ( iListType ) - { - case EListExpandable: - if ( iListManager->ActiveList() - == iListManager->ListOneRowWithIcon() ) - { - ChangeActiveList( iListManager->ListMultiRowWithIcon(), aLastIndex ); - BringToTop(); - } - else - { - BringToBack(); - ChangeActiveList( iListManager->ListOneRowWithIcon(), aLastIndex ); - NotifyClosePage(); - } - break; - case EListExpandableWithoutIcon: - if ( iListManager->ActiveList() - == iListManager->ListOneRowWithIcon() ) - { - ChangeActiveList( iListManager->ListMultiRowWithoutIcon(), aLastIndex ); - BringToTop(); - } - else - { - BringToBack(); - ChangeActiveList( iListManager->ListOneRowWithIcon(), aLastIndex ); - } - break; - // txin - case EListExpandableRollWithIcon: - { - if (iListManager->ActiveList() == iListManager->ListOneRowRollWithIcon()) - { - ChangeActiveList(iListManager->ListMultiRowRollWithIcon(), aLastIndex); - BringToTop(); - } - else - { - BringToBack(); - ChangeActiveList(iListManager->ListOneRowRollWithIcon(), aLastIndex); - NotifyClosePage(); - } - } - break; - case EListExpandableRollWithIconWithBubble: - { - if (iListManager->ActiveList() == iListManager->ListOneRowRollWithIconWithBubble()) - { - ChangeActiveList(iListManager->ListMultiRowRollWithIconWithBubble(), aLastIndex); - BringToTop(); - } - else - { - BringToBack(); - ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble(), aLastIndex); - NotifyClosePage(); - } - } - break; - - case EListExpandableWithBubble: - { - if ( iListManager->ActiveList() - == iListManager->ListOneRowWithIconWithBubble() ) - { - ChangeActiveList( iListManager->ListMultiRowWithIconWithBubble(), aLastIndex ); - BringToTop(); - } - else - { - BringToBack(); - ChangeActiveList( iListManager->ListOneRowWithIconWithBubble(), aLastIndex ); - NotifyClosePage(); - } - } - break; - case EListExpandableMultiRowWithoutIcon: - break; - case EListNoExpandable: - case EListNoExpandableWithBubble: - break; - default: - __ASSERT_DEBUG( EFalse, - User::Panic( _L("TListType Error::AutoChangeActiveList()"), 0 ) ); - break; - } - - } - -// added by txin in 2007.06.07 -EXPORT_C void CFepCtrlDropdownList::SetSpinBtnHeight(const TInt aHeight) - { - // make sure navi next, navi previous plus close, do not beyond row count - TInt minExpandHeight = 2 * aHeight + GetCellHeight() + 4 * GetCellVerticalMargin(); - TInt realExpandHeight = GetCellHeight() * GetRowNum() + - (GetRowNum() + 1) * GetCellVerticalMargin(); - - if ((aHeight > 0) && (minExpandHeight <= realExpandHeight)) - { - iSpinBtnHeight = aHeight; - SizeChanged(iCellWidth, iCellHeight, iNaviWidth); - } - } - -EXPORT_C void CFepCtrlDropdownList::SetCellMargin(const TInt aHorizontalMargin, - const TInt aVerticalMargin) - { - if (((aHorizontalMargin > 0) && (aHorizontalMargin != iCellHorizontalMargin)) || - ((aVerticalMargin > 0) && (aVerticalMargin != iCellVerticalMargin))) - { - iCellHorizontalMargin = aHorizontalMargin; - iCellVerticalMargin = aVerticalMargin; - - SizeChanged(iCellWidth, iCellHeight, iNaviWidth); - } - } - -TInt CFepCtrlDropdownList::GetSpinBtnHeight() - { - return iSpinBtnHeight; - } - -TInt CFepCtrlDropdownList::GetCellHorizontalMargin() - { - return iCellHorizontalMargin; - } - -TInt CFepCtrlDropdownList::GetCellVerticalMargin() - { - return iCellVerticalMargin; - } - -TInt CFepCtrlDropdownList::ListType() - { - return iListType; - } - -TInt CFepCtrlDropdownList::OneRowStartCandIdx() - { - return iOriginalCandIdx; - } - -void CFepCtrlDropdownList::SetOneRowStartCandIdx(TInt aOriginalCandIdx) - { - iOriginalCandIdx = aOriginalCandIdx; - } - -TInt CFepCtrlDropdownList::GetOriginalFirstCandIdx() - { - return iOriginalFirstCandIdx; - } - -void CFepCtrlDropdownList::SetOriginalFirstCandIdx(TInt aOriginalFirstCandIdx) - { - iOriginalFirstCandIdx = aOriginalFirstCandIdx; - } - -EXPORT_C void CFepCtrlDropdownList::SetCandTruncateType(const TCandTruncateType aTruncateType) - { - iCandTruncateType = aTruncateType; - } - -TInt CFepCtrlDropdownList::CandTruncateType() - { - return iCandTruncateType; - } - -CList* CFepCtrlDropdownList::ActiveList() - { - return iListManager->ActiveList(); - } - -void CFepCtrlDropdownList::SetUpdateListReDrawFlag(TBool aReDraw) - { - iUpdateListReDraw = aReDraw; - } - -TBool CFepCtrlDropdownList::GetUpdateListRedrawFlag() - { - return iUpdateListReDraw; - } - -EXPORT_C void CFepCtrlDropdownList::SetFuzzyBoundry(TInt aFuzzyBoundry) - { - if (aFuzzyBoundry != iFuzzyBoundry && aFuzzyBoundry >= 0) - { - iFuzzyBoundry = aFuzzyBoundry; - } - } - -TInt CFepCtrlDropdownList::FuzzyBoundry() - { - return iFuzzyBoundry; - } - -EXPORT_C void CFepCtrlDropdownList::SetCandExpandType(const TExpandType aType) - { - if (aType != iCandExpandType) - { - iCandExpandType = aType; - } - } - -TInt CFepCtrlDropdownList::CandExpandType() - { - return iCandExpandType; - } - -void CFepCtrlDropdownList::NotifyClosePage() - { - UiLayout()->RootControl()->Draw(); - } - -EXPORT_C void CFepCtrlDropdownList::SetDropdownListImgID( - TDropdownListDrawInfo aDropdownListDrawInfo) - { - iListManager->ListOneRowWithIcon()->SetDropdownListImgID(aDropdownListDrawInfo); - - iListManager->ListOneRowWithIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo); - - iListManager->ListMultiRowWithIcon()->SetDropdownListImgID(aDropdownListDrawInfo); - - iListManager->ListMultiRowWithIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo); - - iListManager->ListOneRowWithoutIcon()->SetDropdownListImgID(aDropdownListDrawInfo); - - iListManager->ListOneRowWithoutIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo); - - iListManager->ListOneRowRollWithIcon()->SetDropdownListImgID(aDropdownListDrawInfo); - - iListManager->ListOneRowRollWithIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo); - - iListManager->ListMultiRowRollWithIcon()->SetDropdownListImgID(aDropdownListDrawInfo); - - iListManager->ListMultiRowRollWithIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo); - - iListManager->ListExpandableMultiRowWithoutIcon()->SetDropdownListImgID(aDropdownListDrawInfo); - } - -CFepUiLayout* CFepCtrlDropdownList::UiLayout() - { - return CFepUiBaseCtrl::UiLayout(); - } - -TInt CFepCtrlDropdownList::CandHDirection() - { - return iCandHDirection; - } - -TBool CFepCtrlDropdownList::PageCtrlShown() - { - return iPageCtrlShown; - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::ShowBubble -// Set show preview bubble on/off -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::ShowBubble(TBool aFlag) - { - TBool flag = iBubbleCtrl ? ETrue : EFalse; - iIsShowBubble = aFlag; - if ( flag != aFlag ) - { - if(!flag) - { - TRAP_IGNORE(iBubbleCtrl = CBubbleCtrl::NewL(TRect(0,0,0,0),UiLayout(),-0xFFFF)); - } - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetBubbleBitmapParam -// Set preview bubble bitmap -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetBubbleBitmapParam(CFbsBitmap* aBmpId, - CFbsBitmap* aMaskBmpId , - TAknsItemID aBgSkinId ) - { - if ( iBubbleCtrl ) - { - iBubbleCtrl->SetBitmapParam(aBmpId,aMaskBmpId,aBgSkinId); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetBubbleTextFont -// Set preview bubble text font -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetBubbleTextFont(const CFont* aFont) - { - if ( iBubbleCtrl ) - { - iBubbleFont = aFont; - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetTextFormat -// Set preview bubble text format -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetTextFormat(TAknTextLineLayout aTextFormat) - { - if ( iBubbleCtrl ) - { - iBubbleCtrl->SetTextFormat(aTextFormat); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetBubbleSize -// Set preview bubble size -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetFrameDiff(TInt aLeftDiff, TInt aTopDiff, - TInt aRightDiff,TInt aBottomDiff) - { - if ( iBubbleCtrl ) - { - iBubbleCtrl->SetFrameDiff(aLeftDiff,aTopDiff,aRightDiff,aBottomDiff); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::SetBubbleSize -// Set preview bubble size -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::SetBubbleSize(const TSize& aSize) - { - iBubbleSize = aSize; - } - - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::DrawBubble -// Show preview bubble -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::DrawBubble(const TRect aRect, const TDesC& aText) - { - if ( iBubbleCtrl && iIsShowBubble && !(iBubbleCtrl->IsShowing())) - { - if(iBubbleFont) - { - iBubbleSize.iWidth = iBubbleFont->TextWidthInPixels(aText) + KPreviewBubbleOffset; - } - - if(iBubbleSize.iWidth < aRect.Width() + KPreviewBubbleOffset ) - { - iBubbleSize.iWidth = aRect.Width() + KPreviewBubbleOffset; - } - - - TRect rect = iBubbleCtrl->Rect(); - TRect parentWndRect = Rect(); - TInt x1 = aRect.iTl.iX - ( iBubbleSize.iWidth - aRect.Width() ) / 2; - TInt x2 = aRect.iBr.iX + ( iBubbleSize.iWidth - aRect.Width() ) / 2; - - TRect screenRect; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, screenRect); - if ( x1 < 0 ) - { - rect.iTl.iX = screenRect.iTl.iX; - rect.iBr.iX = screenRect.iTl.iX + iBubbleSize.iWidth; - } - else if ( x2 > screenRect.iBr.iX ) - { - rect.iTl.iX = screenRect.iBr.iX - iBubbleSize.iWidth; - rect.iBr.iX = screenRect.iBr.iX; - } - else - { - rect.iTl.iX = x1; - rect.iBr.iX = x2; - } - - rect.iTl.iY = iBubbleVerticalMargin + aRect.iTl.iY - - iBubbleSize.iHeight; - rect.iBr.iY = iBubbleVerticalMargin + aRect.iTl.iY; - - TRAP_IGNORE(iBubbleCtrl->SetTextL(aText)); - - iBubbleCtrl->Popup(rect); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::ClearBubble -// Hide preview bubble -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::ClearBubble() - { - if ( iBubbleCtrl && iBubbleCtrl->IsShowing()) - { - iBubbleCtrl->Close(); - } - } - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::ReDrawBubble -// ReDraw preview bubble -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CFepCtrlDropdownList::ReDrawBubble() - { - if(iBubbleCtrl && iBubbleCtrl->IsShowing()) - { - iBubbleCtrl->Draw(); - } - } - - -// ----------------------------------------------------------------------------- -// CFepCtrlDropdownList::ReDrawRect -// ReDraw Dropdown list rect -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CFepCtrlDropdownList::ReDrawRect(const TRect& /*aRect*/) - { - if(!AbleToDraw()) - return; - - if (!iFirstTimeConstruct) - { - iListManager->ActiveList()->Draw(); - } - } - -// end adding - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlist.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlist.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,984 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Abstract base class for drop-down list objects -* -*/ - -#include - -#include "peninputlist.h" -#include "peninputcandidate.h" -#include "peninputpluginutils.h" -#include -#include "peninputdropdownlist.h" -#include "peninputlayout.h" - -const TInt KInvalidCandIndex = -1; - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CList - -// ----------------------------------------------------------------------------- -// CList::CList -// construtor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CList::CList(CListManager* aManager, MFepCtrlDropdownListContext *aOwner) -: iOwner(aOwner), iManager(aManager), iNextButtonDisable(ETrue), - iPreviousButtonDisable(ETrue) - { - } - -// ----------------------------------------------------------------------------- -// CList::~CList -// desstrutor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CList::~CList() - { - } - -// ----------------------------------------------------------------------------- -// CList::ConstructL -// 2nd construtor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::ConstructL() - { - // Pre calculate all areas - CalculateAreas(); - } - -// ----------------------------------------------------------------------------- -// CList::HandlePointerDownL -// handle pointer down -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::HandlePointerDownL(const TPoint& aPoint) - { - // position where the tap occurred - - // set clicked rect as empty rect - iClickedRect = KEmptyRect; - - // Check if content rect tapped - if ( iContentRect.Contains(aPoint) ) - { - CCandidate* candidate = FindCandidate(aPoint, iClickedCandidateIndex); - - if ( candidate ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif //RD_TACTILE_FEEDBACK - TRect rect = candidate->GetRect(); - iClickedRect.SetRect(rect.iTl,rect.iBr); - - // Set the flag to indicate that candidate button has been pressed down - // so that we know to draw correctly - iIndicateButtonClicked = ETrue ; - DrawSelection(iClickedRect,ETrue); - DrawHighightCell(iClickedRect,EFalse); - } - else - { - iClickedRect = KDummyRect; - // This is a dummy value so that we know - // in HandlePointerUpL that iClickedRect is - // is not empty but the pointer down event did - // not occure inside any valid rect such as - // candidate rect or any of the navigation rects - } - } - } - -// ----------------------------------------------------------------------------- -// CList::HandlePointerDragL -// handle pointer drag function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::HandlePointerDragL(const TPoint& /*aPoint*/) - { - } - -// ----------------------------------------------------------------------------- -// CList::HandlePointerUpL -// handle pointer up function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::HandlePointerUpL( const TPoint& /*aPoint*/) - { - } - -// ----------------------------------------------------------------------------- -// CList::HandlePointerLeave -// handle pointer leave function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::HandlePointerLeave(const TPoint& /*aPoint*/) - { - DrawSelection( iClickedRect, EFalse ); - DrawHighightCell(iClickedRect, ETrue); - } - -// ----------------------------------------------------------------------------- -// CList::Draw -// draw the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::Draw() - { - // Draw mask - iOwner->DrawMask(iRect); - - // Active bitmap context - iOwner->ActivateBitmapContext(); - - iOwner->Gc()->SetBrushStyle(CGraphicsContext::ESolidBrush); - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - iOwner->Gc()->SetPenSize(iOwner->GetPenSize()); - iOwner->Gc()->SetPenStyle(CGraphicsContext::ESolidPen); - iOwner->Gc()->SetPenColor( iOwner->GetBorderColor() ); - iOwner->Gc()->DrawRect(iRect); - - } - -// ----------------------------------------------------------------------------- -// CList::Rect -// get the rect of list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -const TRect& CList::Rect() - { - return iRect; - } - -// ----------------------------------------------------------------------------- -// CList::UpdateList -// update the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::UpdateListL(TBool /*aDrawFlag*/, TBool /*aRecalculate*/) - { - // Do nothing, every derived class will have its action - } - - -// ----------------------------------------------------------------------------- -// CList::ResetStatus -// update the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::ResetStatus() - { - iPenDownInCandidate = EFalse; - iClickedRect = KEmptyRect; - } - -// ----------------------------------------------------------------------------- -// CList::FindCandidate -// find candidate according to the assigned position -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CCandidate* CList::FindCandidate(const TPoint& aPosition, TInt& aIndex) - { - CCandidate* candidate = NULL; - - aIndex = KErrNotFound; - - if ( iOwner->CandidateCount() > 0 ) - { - // Loop through the candidates and find the one that contains - // the TPoint aPosition - for (TInt i = iOwner->GetFirstCandidateIndex(); i < iOwner->GetLastCandidateIndex(); i++) - { - candidate = iOwner->GetCandidate(i); - - if ( !candidate ) - { - continue; - } - - TRect rect = candidate->GetRect(); - - if ( rect.Contains(aPosition) ) - { - // We found the candidate - aIndex = i; - return candidate; - } - } - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CList::CalculatePositionsL -// calculate the position of all visible cells in the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CList::CalculatePositionsL() - { - return 0; - } - -// ----------------------------------------------------------------------------- -// CList::SetHighlightCell -// Set cell to highlight or not -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::SetHighlightCell(const TInt aCellIndex, TBool aHighlight, TBool aForceDraw) - { - if ( !aForceDraw && iPenDownInCandidate ) - { - return; - } - - if ( ( aCellIndex<0 ) || ( aCellIndex > iOwner->CandidateCount() ) ) - { - return; - } - - CCandidate* candidate = iOwner->GetCandidate(aCellIndex); - - if ( ! candidate ) - { - return; - } - - TRect rect = candidate->GetRect(); - - iOwner->DrawMask(rect); - iOwner->ActivateBitmapContext(); - - if (!iDropdownListDrawInfo.iSupportSkin) - { - iOwner->Gc()->SetBrushStyle(CGraphicsContext::ENullBrush); - iOwner->Gc()->SetPenSize(iOwner->GetPenSize()); - iOwner->Gc()->SetPenStyle(CGraphicsContext::ESolidPen); - iOwner->Gc()->SetPenColor(iOwner->GetBorderColor()); - - // Draw the bottom and right line - iOwner->Gc()->DrawLine( TPoint(rect.iTl.iX, rect.iBr.iY),rect.iBr); - iOwner->Gc()->DrawLine( TPoint(rect.iBr.iX, rect.iTl.iY),rect.iBr); - - // also draw left and top line - if (iOwner->GetCellHorizontalMargin() != 0) - { - iOwner->Gc()->DrawLine(rect.iTl, TPoint(rect.iTl.iX, rect.iBr.iY)); - } - - if (iOwner->GetCellVerticalMargin() != 0) - { - iOwner->Gc()->DrawLine(rect.iTl, TPoint(rect.iBr.iX, rect.iTl.iY)); - } - - rect.Shrink(TSize(1,1)); - - if ((iIsMultiRows) && (iOwner->GetCellVerticalMargin() == 0)) - { - if ( ( rect.iTl.iY - 1 - Rect().iTl.iY ) != ( iOwner->GetRowNum() - 1 ) * - iOwner->GetCellHeight() ) - { - //If it isn't the last row - rect.iBr.iY = rect.iBr.iY + 1; - } - } - } - - const CFbsBitmap* bmp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapHighlight); - if ( bmp ) - { - if (aHighlight) - { - CFbsBitmap* bmpTemp = const_cast(bmp); - AknIconUtils::SetSize(bmpTemp, rect.Size(), EAspectRatioNotPreserved); - - if (iDropdownListDrawInfo.iSupportSkin) - { - CBitmapDb::TBitmapType bmpID = CBitmapDb::EBitmapHighlight; - CBitmapDb::TBitmapType maskBmpID = CBitmapDb::EBitmapHighlightMask; - bmp = iOwner->GetBitmapDb()->GetBitMap(bmpID); - bmpTemp = const_cast(bmp); - iOwner->Gc()->DrawBitmapMasked(rect, - bmp, - bmp->SizeInPixels(), - iOwner->GetBitmapDb()->GetBitMap(maskBmpID), - ETrue); - } - else - { - iOwner->Gc()->DrawBitmapMasked(rect, - bmp, - bmp->SizeInPixels(), - iOwner->GetBitmapDb()->GetBitMap( - CBitmapDb::EBitmapHighlightMask), - ETrue); - } - } - else - { - // Draw bitmap - if (iDropdownListDrawInfo.iSupportSkin) - { - TRect innerRect = rect; - innerRect.Shrink( 4, 0 ); - - AknPenInputDrawUtils::Draw3PiecesFrame(AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iCandidateLeftImgID, - iDropdownListDrawInfo.iCandidateMiddleImgID, - iDropdownListDrawInfo.iCandidateRightImgID); - } - else - { - bmp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPrimary); - iOwner->Gc()->DrawBitmapMasked(rect, - bmp, - bmp->SizeInPixels(), - iOwner->GetBitmapDb()->GetBitMap( - CBitmapDb::EBitmapPrimaryMask), - ETrue); - } - } - } - else - { - if (aHighlight) - { - iOwner->Gc()->SetBrushColor(iOwner->GetHighLightBgColor()); - } - else - { - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - } - - iOwner->Gc()->SetPenStyle(CGraphicsContext::ENullPen); - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - - rect.Shrink(TSize(1,1)); - - iOwner->Gc()->DrawRect(rect); - - rect.Shrink(TSize(-1,-1)); - } - - // draw canditate's text - iOwner->Gc()->UseFont(iOwner->GetFont()); - - candidate->DrawText(*iOwner->Gc(),iOwner->GetAlignment(), - iOwner->GetTextMargin(), - iOwner->GetTextColor(), - iOwner->GetSpecialTextColor(), - iOwner->GetFixedText()); - - iOwner->Gc()->DiscardFont(); - iOwner->Invalidate(candidate->GetRect()); - } - -// ----------------------------------------------------------------------------- -// CList::DrawSelection -// Draw selection cell just selected -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::DrawSelection(const TRect& aRect, TBool aIndicate) - { - // Check whether the rect that should be redrawn is in content rect - TRect tmpRect = iContentRect; - tmpRect.Intersection(aRect); - - if ( tmpRect == aRect ) - { - // rect is inside content rect thus we - // should be drawing candidate press - DrawCandidatePress(aRect, aIndicate); - } - else - { - // rect is inside navigation rect thus we - // should be drawing navigation press - DrawNavigationPress(aRect, aIndicate); - } - } - -// ----------------------------------------------------------------------------- -// CList::DrawCandidatePress -// draw candidate when pressed or un-pressed -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::DrawCandidatePress(const TRect& aRect, TBool aIndicate) - { - // We are dealing with the candidates - TInt index = 0; - // Get the candidate - CCandidate* candidate = FindCandidate(aRect.Center(), index); - - if (!candidate) - { - return; - } - - iOwner->DrawMask(aRect); - - iOwner->ActivateBitmapContext(); - - iPenDownInCandidate = EFalse; - - TBool isDrawBmp = ETrue; - CBitmapDb::TBitmapType bmpID = CBitmapDb::EBitmapPrimary; - CBitmapDb::TBitmapType maskBmpID = CBitmapDb::EBitmapPrimaryMask; - const CFbsBitmap* bmp = NULL; - // set bg color - if ( aIndicate ) - { - bmp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPenDown); - if ( bmp ) - { - // Draw bitmap - bmpID = CBitmapDb::EBitmapPenDown; - maskBmpID = CBitmapDb::EBitmapPenDownMask; - isDrawBmp = ETrue; - iPenDownInCandidate = ETrue; - } - else - { - iOwner->Gc()->SetBrushColor(iOwner->GetButtonDownBgColor()); - } - } - else - { - const RArray& secondaryList = iOwner->GetSecondaryList(); - - if ( iOwner->IsEnableSecondary() && (secondaryList.Find(index) != KErrNotFound) ) - { - bmp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapSecondary); - if ( bmp ) - { - // Draw bitmap - bmpID = CBitmapDb::EBitmapSecondary; - maskBmpID = CBitmapDb::EBitmapSecondaryMask; - isDrawBmp = ETrue; - } - else - { - bmp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPrimary); - if ( bmp ) - { - // Draw bitmap - bmpID = CBitmapDb::EBitmapPrimary; - maskBmpID = CBitmapDb::EBitmapPrimaryMask; - isDrawBmp = ETrue; - } - else - { - // If enable multi color and the color has been set, then use the color - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - } - } - } - else - { - // Else use background color - bmp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPrimary); - if ( bmp ) - { - bmpID = CBitmapDb::EBitmapPrimary; - maskBmpID = CBitmapDb::EBitmapPrimaryMask; - isDrawBmp = ETrue; - } - else - { - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - } - } - } - - // Get the candidate rect - TRect rect = candidate->GetRect(); - - if (!iDropdownListDrawInfo.iSupportSkin) - { - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ENullBrush ); - iOwner->Gc()->SetPenSize(iOwner->GetPenSize()); - iOwner->Gc()->SetPenStyle(CGraphicsContext::ESolidPen); - iOwner->Gc()->SetPenColor(iOwner->GetBorderColor()); - - // Draw the bottom line - iOwner->Gc()->DrawLine( TPoint(rect.iTl.iX, rect.iBr.iY),rect.iBr ); - iOwner->Gc()->DrawLine( TPoint(rect.iBr.iX, rect.iTl.iY),rect.iBr ); - - if (iOwner->GetCellHorizontalMargin() != 0) - { - iOwner->Gc()->DrawLine(rect.iTl, TPoint(rect.iTl.iX, rect.iBr.iY)); - } - - if (iOwner->GetCellVerticalMargin() != 0) - { - iOwner->Gc()->DrawLine(rect.iTl, TPoint(rect.iBr.iX, rect.iTl.iY)); - } - - rect.Shrink(TSize(1,1)); - - if ((iIsMultiRows) && (iOwner->GetCellVerticalMargin() == 0)) - { - if ( ( rect.iTl.iY - 1 - Rect().iTl.iY ) != ( iOwner->GetRowNum() - 1 ) * - iOwner->GetCellHeight() ) - { - //If it isn't the last row - rect.iBr.iY = rect.iBr.iY + 1; - } - } - } - - if ( isDrawBmp ) - { - if (iDropdownListDrawInfo.iSupportSkin) - { - if ( aIndicate ) - { -/* - iOwner->Gc()->SetPenStyle(CGraphicsContext::ENullPen); - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - iOwner->Gc()->SetBrushColor(iDropdownListDrawInfo.iCandidatesHighlightColor); - - // Draw the whole rect without border - iOwner->Gc()->DrawRect( rect ); */ - - /*bmpID = CBitmapDb::EBitmapHighlight; - maskBmpID = CBitmapDb::EBitmapHighlightMask; - bmp = iOwner->GetBitmapDb()->GetBitMap(bmpID); - iOwner->Gc()->DrawBitmapMasked(rect, - bmp, - bmp->SizeInPixels(), - iOwner->GetBitmapDb()->GetBitMap(maskBmpID), - ETrue); */ - TRect innerRect = rect; - innerRect.Shrink( 4, 0 ); - - // ----- draw bitmaps ----- - iOwner->ActivateBitmapContext(); - iOwner->Gc()->Clear(rect); - - - - AknPenInputDrawUtils::Draw3PiecesFrame(AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iCandidatePressedLeftImgID, - iDropdownListDrawInfo.iCandidatePressedMiddleImgID, - iDropdownListDrawInfo.iCandidatePressedRightImgID); - } - else - { - TRect innerRect = rect; - innerRect.Shrink( 4, 0 ); - - // ----- draw bitmaps ----- - iOwner->ActivateBitmapContext(); - iOwner->Gc()->Clear(rect); - - - - AknPenInputDrawUtils::Draw3PiecesFrame(AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iCandidateLeftImgID, - iDropdownListDrawInfo.iCandidateMiddleImgID, - iDropdownListDrawInfo.iCandidateRightImgID); - } - } - else - { - bmp = iOwner->GetBitmapDb()->GetBitMap(bmpID); - iOwner->Gc()->DrawBitmapMasked(rect, - bmp, - bmp->SizeInPixels(), - iOwner->GetBitmapDb()->GetBitMap(maskBmpID), - ETrue); - } - } - else - { - iOwner->Gc()->SetPenStyle(CGraphicsContext::ENullPen); - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - // Draw the whole rect without border - iOwner->Gc()->DrawRect( rect ); - } - - // draw canditate's text - iOwner->Gc()->UseFont(iOwner->GetFont()); - TRgb textColor; - if (aIndicate) - { - textColor = iOwner->GetHighLightTextColor(); - } - else - { - textColor = iOwner->GetTextColor(); - } - - candidate->DrawText(*iOwner->Gc(),iOwner->GetAlignment(), - iOwner->GetTextMargin(), - textColor, - iOwner->GetSpecialTextColor(), - iOwner->GetFixedText()); - - iOwner->Gc()->DiscardFont(); - - // Invalidate the rect - iOwner->Invalidate(aRect); - } - -// ----------------------------------------------------------------------------- -// CList::DrawNavigationPress -// draw navigation button when pressed or un-pressed -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CList::DrawNavigationPress(const TRect& /*aRect*/, TBool /*aIndicate*/) - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CList::CalculateAreas -// Calculate all kinds of rectangles -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::CalculateAreas() - { - // - } - -// ----------------------------------------------------------------------------- -// CList::SizeChanged -// size changed function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::SizeChanged() - { - CalculateAreas(); - } - -// ----------------------------------------------------------------------------- -// CList::DrawCandidates -// draw all visible candidates to the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::DrawCandidates() - { - const RArray& secondaryList = iOwner->GetSecondaryList(); - - TBool isDrawBmp = EFalse; - CBitmapDb::TBitmapType bmpID = CBitmapDb::EBitmapPrimary; - CBitmapDb::TBitmapType maskBmpID = CBitmapDb::EBitmapPrimaryMask; - const CFbsBitmap* bmp = NULL; - for(TInt i = iOwner->GetFirstCandidateIndex(); i < iOwner->GetLastCandidateIndex(); i++) - { - CCandidate* candidate = iOwner->GetCandidate(i); - if ( !candidate ) - { - continue; - } - - TRect rect = candidate->GetRect(); - - if (iDropdownListDrawInfo.iSupportSkin) - { - - if (iOwner->GetHighlightList().Find(i) != KErrNotFound) - { - /*iOwner->Gc()->SetPenStyle(CGraphicsContext::ENullPen); - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - iOwner->Gc()->SetBrushColor(iDropdownListDrawInfo.iCandidatesHighlightColor); - // Draw the whole rect without border - iOwner->Gc()->DrawRect( rect );*/ - bmpID = CBitmapDb::EBitmapHighlight; - maskBmpID = CBitmapDb::EBitmapHighlightMask; - bmp = iOwner->GetBitmapDb()->GetBitMap(bmpID); - iOwner->Gc()->DrawBitmapMasked(rect, - bmp, - bmp->SizeInPixels(), - iOwner->GetBitmapDb()->GetBitMap(maskBmpID), - ETrue); - } - else - { - TRect innerRect = rect; - innerRect.Shrink( 4, 0 ); - - // ----- draw bitmaps ----- - iOwner->ActivateBitmapContext(); - - - AknPenInputDrawUtils::Draw3PiecesFrame(AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iCandidateLeftImgID, - iDropdownListDrawInfo.iCandidateMiddleImgID, - iDropdownListDrawInfo.iCandidateRightImgID); - } - } - else - { - if ( iOwner->IsEnableSecondary() && ( secondaryList.Find(i) != KErrNotFound) ) - { - bmp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapSecondary); - if ( bmp ) - { - // Draw bitmap - bmpID = CBitmapDb::EBitmapSecondary; - maskBmpID = CBitmapDb::EBitmapSecondaryMask; - isDrawBmp = ETrue; - } - else - { - bmp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPrimary); - if ( bmp ) - { - // Draw bitmap - bmpID = CBitmapDb::EBitmapPrimary; - maskBmpID = CBitmapDb::EBitmapPrimaryMask; - isDrawBmp = ETrue; - } - else - { - // If enable multi color and the color has been set, then use the color - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - } - } - } - else if (iOwner->GetHighlightList().Find(i) != KErrNotFound) - { - bmp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapHighlight); - if ( bmp ) - { - // Draw bitmap - bmpID = CBitmapDb::EBitmapHighlight; - maskBmpID = CBitmapDb::EBitmapHighlightMask; - isDrawBmp = ETrue; - } - else - { - // If the cell is set to highlight, use high light color - iOwner->Gc()->SetBrushColor(iOwner->GetHighLightBgColor()); - } - } - else - { - // Else use background color - bmp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPrimary); - if ( bmp ) - { - bmpID = CBitmapDb::EBitmapPrimary; - maskBmpID = CBitmapDb::EBitmapPrimaryMask; - isDrawBmp = ETrue; - } - else - { - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - } - } - - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ENullBrush ); - iOwner->Gc()->SetPenSize(iOwner->GetPenSize()); - iOwner->Gc()->SetPenStyle(CGraphicsContext::ESolidPen); - iOwner->Gc()->SetPenColor(iOwner->GetBorderColor()); - // Draw the bottom line - iOwner->Gc()->DrawLine( rect.iTl, TPoint(rect.iBr.iX, rect.iTl.iY) ); - iOwner->Gc()->DrawLine( TPoint(rect.iTl.iX, rect.iBr.iY),rect.iBr ); - iOwner->Gc()->DrawLine( TPoint(rect.iBr.iX, rect.iTl.iY),rect.iBr ); - - if (iOwner->GetCellHorizontalMargin() != 0) - { - iOwner->Gc()->DrawLine(rect.iTl, TPoint(rect.iTl.iX, rect.iBr.iY)); - } - - rect.Shrink(TSize(1,1)); - - if ( isDrawBmp ) - { - bmpID = CBitmapDb::EBitmapSecondary; - maskBmpID = CBitmapDb::EBitmapSecondaryMask; - bmp = iOwner->GetBitmapDb()->GetBitMap(bmpID); - iOwner->Gc()->DrawBitmapMasked(rect, - bmp, - bmp->SizeInPixels(), - iOwner->GetBitmapDb()->GetBitMap(maskBmpID), - ETrue); - } - else - { - iOwner->Gc()->SetPenStyle(CGraphicsContext::ENullPen); - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - iOwner->Gc()->DrawRect(rect); - } - } - - // Draw the text of the candidate - iOwner->Gc()->UseFont(iOwner->GetFont()); - candidate->DrawText(*iOwner->Gc(),iOwner->GetAlignment(), - iOwner->GetTextMargin(), - iOwner->GetTextColor(), - iOwner->GetSpecialTextColor(), - iOwner->GetFixedText()); - } - iOwner->Gc()->DiscardFont(); - } - -// ----------------------------------------------------------------------------- -// CList::CompareRect -// Compare two rect is equal or not -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CList::CompareRect(const TRect& aSrcRect, const TRect& aDesRect) - { - - if (aSrcRect == aDesRect) - { - DrawSelection(iClickedRect, ETrue); - DrawHighightCell(iClickedRect, EFalse); - return ETrue; - } - else - { - TBool hasDraw = EFalse; - const RArray& highLightList = iOwner->GetHighlightList(); - for (TInt i=0; i < highLightList.Count(); i++ ) - { - CCandidate* candidate = iOwner->GetCandidate(i); - if ( candidate ) - { - if ( iClickedRect == candidate->GetRect() ) - { - DrawHighightCell(iClickedRect, ETrue); - hasDraw = ETrue; - break; - } - } - } - - if ( !hasDraw ) - { - DrawSelection(iClickedRect, EFalse); - DrawHighightCell(iClickedRect, ETrue); - } - - return EFalse; - } - } - -// ----------------------------------------------------------------------------- -// CList::Move -// when the drop down list is moved, the function will be called. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CList::Move(const TPoint& aOffsetPoint) - { - // Move the iRect - iRect.Move(aOffsetPoint); - - // Move the content rect - iContentRect.Move(aOffsetPoint); - - // Move the navigation rect - iNavigationRect.Move(aOffsetPoint); - - // Move the close button rect - iNavigationCloseRect.Move(aOffsetPoint); - - // Move the up button rect - iNavigationPreviousRect.Move(aOffsetPoint); - - // Move the down button rect - iNavigationNextRect.Move(aOffsetPoint); - - } - -void CList::DrawHighightCell(const TRect& aSrcRect, const TBool aIndidate) - { - const RArray& highLightList = iOwner->GetHighlightList(); - - TInt candIdx; - for (TInt i = 0; i < highLightList.Count(); i++) - { - candIdx = highLightList[i]; - - // if highlight candidate are not in current page, then do not draw it - if ((candIdx >= iOwner->GetFirstCandidateIndex()) && - (candIdx <= iOwner->GetLastCandidateIndex())) - { - CCandidate* candidate = iOwner->GetCandidate(candIdx); - - if (candidate) - { - if (aSrcRect == candidate->GetRect()) - { - if (aIndidate) - { - SetHighlightCell(candIdx, ETrue); - } - - continue; - } - } - } - } - } - -TInt CList::StartCandIdxOfLine(TInt /*aCandIndex*/) - { - return KInvalidCandIndex; - } - -void CList::SetNextPageHighlightCellAfterOnePageL(const TInt /*aCellIndex*/) - { - } - -void CList::SetDropdownListImgID(TDropdownListDrawInfo aDropdownListDrawInfo) - { - iDropdownListDrawInfo = aDropdownListDrawInfo; - } - - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistexpandablemultirowwithouticon.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistexpandablemultirowwithouticon.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,299 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Multi rows list without icon for drop-down list objects -* -*/ - - - -// Include -#include -#include - -#include "peninputlist.h" -#include "peninputlistexpandablemultirowwithouticon.h" - - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CListExpandableMultiRowWithoutIcon - -// ----------------------------------------------------------------------------- -// CListExpandableMultiRowWithoutIcon::CListExpandableMultiRowWithoutIcon -// C++ default constructor can NOT contain any code, that -// might leave -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListExpandableMultiRowWithoutIcon::CListExpandableMultiRowWithoutIcon( CListManager* aManager, - MFepCtrlDropdownListContext *aOwner ) - :CList( aManager, aOwner ) - { - iIsMultiRows = ETrue; - } - -// ----------------------------------------------------------------------------- -// CListExpandableMultiRowWithoutIcon::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListExpandableMultiRowWithoutIcon* CListExpandableMultiRowWithoutIcon::NewL( - CListManager* aManager, - MFepCtrlDropdownListContext *aOwner ) - { - CListExpandableMultiRowWithoutIcon* self - = new (ELeave) CListExpandableMultiRowWithoutIcon( aManager, aOwner ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CListExpandableMultiRowWithoutIcon::~CListExpandableMultiRowWithoutIcon -// desstrutor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListExpandableMultiRowWithoutIcon::~CListExpandableMultiRowWithoutIcon() - { - } - -// ----------------------------------------------------------------------------- -// CListExpandableMultiRowWithoutIcon::HandlePointerDragL -// handle pointer drag function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListExpandableMultiRowWithoutIcon::HandlePointerDragL( const TPoint& aPoint ) - { - // Pass the event first to the base - CList::HandlePointerDragL( aPoint ); - - if ( !iClickedRect.IsEmpty() ) - { - // clicked rect is not outside the whole DDL - TInt index = -1; - - CCandidate* candidate = FindCandidate( aPoint, index ); - iMoveLatestRect = KEmptyRect; - - if ( candidate ) - { - // candidate exist - iMoveLatestRect.SetRect( candidate->GetRect().iTl, - candidate->GetRect().Size() ); - } - - // Compare the two rect, then decide draw it or not - CompareRect( iMoveLatestRect, iClickedRect ); - } - } - -// ----------------------------------------------------------------------------- -// CListExpandableMultiRowWithoutIcon::HandlePointerUpL -// handle pointer up function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListExpandableMultiRowWithoutIcon::HandlePointerUpL( const TPoint& aPoint ) - { - // clicked rect is outside the whole DDL - if ( iClickedRect.IsEmpty() ) - { - iOwner->SetCapture( EFalse ); - // Change active list object ie. close the DDL - iOwner->AutoChangeActiveList( iOwner->GetFirstCandidateIndex() ); - } - else - { - if ( ( iContentRect.Contains( aPoint ) ) - && ( iClickedRect.Contains( aPoint ) ) ) - { - // Redraw the selected aread - DrawSelection( iClickedRect, EFalse ); - - iOwner->SetCapture( EFalse ); - - // We have selected a candidate and iClickedCandidateIndex is - // the selected Index. - // Send the candidate to others - if (iClickedCandidateIndex != KErrNotFound) - { - iOwner->AutoChangeActiveList( - iOwner->GetFirstCandidateIndex() ); - CCandidate* candidate = iOwner->GetCandidate( - iClickedCandidateIndex ); - if ( candidate ) - { - iOwner->ReportCandidateSelectEventL( - candidate->GetCandidate(), - iClickedCandidateIndex ); - } - } - } - - iClickedRect = KEmptyRect; - } - - iIndicateButtonClicked = EFalse; - } - -// ----------------------------------------------------------------------------- -// CListExpandableMultiRowWithoutIcon::Draw -// draw the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListExpandableMultiRowWithoutIcon::Draw() - { - // Call draw in base class; - CList::Draw(); - - // Draw all visible candidates - DrawCandidates(); - iOwner->Invalidate(iRect); - } - -// ----------------------------------------------------------------------------- -// CListExpandableMultiRowWithoutIcon::CalculateAreas -// Calculate all kinds of rectangles -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListExpandableMultiRowWithoutIcon::CalculateAreas() - { - // Calculate the rect of the list - iRect.iTl = iOwner->GetTopLeftPoint(); - TInt width = iOwner->GetCellWidth() * iOwner->GetColNum() + - iOwner->GetNaviWidth() + - (iOwner->GetColNum() + 2) * iOwner->GetCellHorizontalMargin(); - - TInt height = iOwner->GetCellHeight() * iOwner->GetRowNum() + - (iOwner->GetRowNum() + 1) * iOwner->GetCellVerticalMargin(); - - iRect.SetSize(TSize( width,height)); - - if (iOwner->CandExpandType() == CFepCtrlDropdownList::ECandExpandUpward) - { - // expand upward - TInt onerowheight = iOwner->GetCellHeight() + 2 * iOwner->GetCellVerticalMargin(); - iRect.Move(0, -(height - onerowheight)); - } - - // Calculate the rect of the content - iContentRect.iTl.SetXY(iRect.iTl.iX + iOwner->GetCellHorizontalMargin(), - iRect.iTl.iY + iOwner->GetCellVerticalMargin()); - - iContentRect.SetSize(TSize (width - 2 * iOwner->GetCellHorizontalMargin(), - height - 2 * iOwner->GetCellVerticalMargin())); - - // Initialized the rect of the navigation area and the down and up button - iNavigationRect = KEmptyRect; - iNavigationNextRect = KEmptyRect; - iNavigationPreviousRect = KEmptyRect; - } - -// ----------------------------------------------------------------------------- -// CListExpandableMultiRowWithoutIcon::CalculatePositionsL -// calculate the position of all visible cells in the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CListExpandableMultiRowWithoutIcon::CalculatePositionsL() - { - TInt lastCandidateIndex = iOwner->GetLastCandidateIndex(); - TInt count = iOwner->CandidateCount(); - - if ( count > 0 ) - { - TPoint setpoints; - TBool candHLToR = (iOwner->CandHDirection() == CFepCtrlDropdownList::ECandFromLToR); - candHLToR ? setpoints.SetXY(iContentRect.iTl.iX, iContentRect.iTl.iY) : - setpoints.SetXY(iContentRect.iBr.iX, iContentRect.iTl.iY); - - count = Min( count, lastCandidateIndex - + ( iOwner->GetColNum() + 1 ) * iOwner->GetRowNum() ); - - for ( TInt currentCellIndex = 0, - lastUsedCellCount = 0, - lastusedRow = 0; - lastCandidateIndex <= count; - lastCandidateIndex++ ) - { - // setting a position for this candidate - CCandidate* candidate = iOwner->GetCandidate( lastCandidateIndex ); - - if ( candidate ) - { - // each candidate exist - TInt leftUsedCellCount = candidate->CalculateDisplayTextL(iOwner->GetCellWidth(), iOwner->GetFont(), iOwner->GetColNum()); - if (( currentCellIndex > iOwner->GetColNum() ) || - ((!candHLToR) && ((setpoints.iX < leftUsedCellCount*(iOwner->GetCellWidth() + (lastUsedCellCount-1)*iOwner->GetCellHorizontalMargin()))))) - { - // The cell index moved the edge of right - lastusedRow++; - if ( lastusedRow >= iOwner->GetRowNum() ) - { - // The row index moved bottom - break; - } - - currentCellIndex = 0; - - setpoints.iY = setpoints.iY + - iOwner->GetCellHeight() + - iOwner->GetCellVerticalMargin(); - - candHLToR ? (setpoints.iX = iContentRect.iTl.iX) : (setpoints.iX = iContentRect.iBr.iX); - } - - lastUsedCellCount = candidate->SetPositionL(setpoints, - iOwner->GetCellWidth(), - iOwner->GetCellHeight(), - iOwner->GetFont(), - iOwner->GetCellHorizontalMargin()); - - currentCellIndex += lastUsedCellCount; - candHLToR? (setpoints.iX += lastUsedCellCount*(iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())) : - (setpoints.iX -= lastUsedCellCount*(iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())); - } // if each candidate exist - } // for-loop - } // if candidate exist - - return lastCandidateIndex; // as lastCandidateIndex - } - -// ----------------------------------------------------------------------------- -// CListExpandableMultiRowWithoutIcon::UpdateList -// update the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListExpandableMultiRowWithoutIcon::UpdateListL(TBool aDrawFlag, TBool aRecalculate ) - { - if ( aRecalculate ) - { - // Recalculate the position of all candidates - iOwner->SetLastCandidateIndex( CalculatePositionsL() ); - } - if(aDrawFlag) - { - Draw(); - iOwner->Invalidate(iRect); - } - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmanager.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmanager.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,299 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: List manager,which is used by drop down list -* -*/ - - -#include "peninputlistmanager.h" -#include "peninputlistonerowwithouticon.h" -#include "peninputlistonerowwithouticonwithbubble.h" -#include "peninputlistmultirowwithicon.h" -#include "peninputlistmultirowwithiconwithbubble.h" -#include "peninputlistonerowwithicon.h" -#include "peninputlistonerowwithiconwithbubble.h" -#include "peninputlistmultirowwithouticon.h" - -#include "peninputlistmultirowrollwithiconwithbubble.h" -#include "peninputlistonerowrollwithiconwithbubble.h" - -#include "peninputlistmultirowrollwithicon.h" -#include "peninputlistonerowrollwithicon.h" -#include "peninputlistexpandablemultirowwithouticon.h" -#include - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CListManager - -// ----------------------------------------------------------------------------- -// CListManager::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListManager* CListManager::NewL(MFepCtrlDropdownListContext* aContext) - { - CListManager* self = new (ELeave) CListManager(); - CleanupStack::PushL(self); - self->ConstructL(aContext); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CListManager::~CListManager -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListManager::~CListManager() - { - delete iListOneRowWithoutIcon; - delete iListOneRowWithoutIconWithBubble; - delete iListOneRowWithIcon; - delete iListOneRowWithIconWithBubble; - delete iListMultiRowWithIcon; - delete iListMultiRowWithIconWithBubble; - delete iListMultiRowWithoutIcon; - delete iListMultiRowRollWithIcon; - delete iListOneRowRollWithIcon; - delete iListExpandableMultiRowWithoutIcon; - delete iListMultiRowRollWithIconWithBubble; - delete iListOneRowRollWithIconWithBubble; - } - -// ----------------------------------------------------------------------------- -// CListManager::NewL -// 2nd construct function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListManager::ConstructL(MFepCtrlDropdownListContext* aContext) - { - iContext = aContext; - iListOneRowWithoutIcon = CListOneRowWithoutIcon::NewL(this, aContext); - iListOneRowWithoutIconWithBubble = CListOneRowWithoutIconWithBubble::NewL(this, aContext); - iListOneRowWithIcon = CListOneRowWithIcon::NewL(this, aContext); - iListOneRowWithIconWithBubble = CListOneRowWithIconWithBubble::NewL(this, aContext); - iListMultiRowWithIcon = CListMultiRowWithIcon::NewL(this, aContext); - iListMultiRowWithIconWithBubble = CListMultiRowWithIconWithBubble::NewL(this, aContext); - iListMultiRowWithoutIcon = CListMultiRowWithoutIcon::NewL(this, aContext); - iListMultiRowRollWithIcon = CListMultiRowRollWithIcon::NewL(this, aContext); - iListOneRowRollWithIcon = CListOneRowRollWithIcon::NewL(this, aContext); - iListExpandableMultiRowWithoutIcon = CListExpandableMultiRowWithoutIcon::NewL(this, aContext); - iListMultiRowRollWithIconWithBubble = CListMultiRowRollWithIconWithBubble::NewL(this, aContext); - iListOneRowRollWithIconWithBubble = CListOneRowRollWithIconWithBubble::NewL(this, aContext); - } - -// ----------------------------------------------------------------------------- -// CListManager::SizeChanged -// size change -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListManager::SizeChanged() - { - iListOneRowWithoutIcon->SizeChanged(); - iListOneRowWithoutIconWithBubble->SizeChanged(); - iListOneRowWithIcon->SizeChanged(); - iListOneRowWithIconWithBubble->SizeChanged(); - iListMultiRowWithIcon->SizeChanged(); - iListMultiRowWithIconWithBubble->SizeChanged(); - iListMultiRowWithoutIcon->SizeChanged(); - iListMultiRowRollWithIcon->SizeChanged(); - iListOneRowRollWithIcon->SizeChanged(); - iListExpandableMultiRowWithoutIcon->SizeChanged(); - iListMultiRowRollWithIconWithBubble->SizeChanged(); - iListOneRowRollWithIconWithBubble->SizeChanged(); - } - -// ----------------------------------------------------------------------------- -// CListManager::Move -// move the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListManager::Move(const TPoint& aOffset) - { - iListOneRowWithoutIcon->Move(aOffset); - iListOneRowWithoutIconWithBubble->Move(aOffset); - iListOneRowWithIcon->Move(aOffset); - iListOneRowWithIconWithBubble->Move(aOffset); - iListMultiRowWithIcon->Move(aOffset); - iListMultiRowWithIconWithBubble->Move(aOffset); - iListMultiRowWithoutIcon->Move(aOffset); - iListMultiRowRollWithIcon->Move(aOffset); - iListOneRowRollWithIcon->Move(aOffset); - iListExpandableMultiRowWithoutIcon->Move(aOffset); - iListMultiRowRollWithIconWithBubble->Move(aOffset); - iListOneRowRollWithIconWithBubble->Move(aOffset); - - // Move all candidates - for ( TInt i=0; iCandidateCount(); i++ ) - { - CCandidate* candidate = iContext->GetCandidate(i); - if ( candidate ) - { - candidate->Move(aOffset); - } - } - } - -// ----------------------------------------------------------------------------- -// CListManager::ActiveList -// get active list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CList* CListManager::ActiveList() const - { - return iActiveList; - } -// ----------------------------------------------------------------------------- -// CListManager::SetActiveList -// set active list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListManager::SetActiveList(CList* aList) - { - iActiveList = aList; - } - -// ----------------------------------------------------------------------------- -// CListManager::ListOneRowWithoutIcon -// get one row without icon -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CList* CListManager::ListOneRowWithoutIcon() const - { - return iListOneRowWithoutIcon; - } - -// ----------------------------------------------------------------------------- -// CListManager::ListOneRowWithoutIcon -// get one row without icon -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CList* CListManager::ListOneRowWithoutIconWithBubble() const - { - return iListOneRowWithoutIconWithBubble; - } - - -// ----------------------------------------------------------------------------- -// CListManager::ListOneRowWithIcon -// get one row with icon -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CList* CListManager::ListOneRowWithIcon() const - { - return iListOneRowWithIcon; - } - -// ----------------------------------------------------------------------------- -// CListManager::ListOneRowWithIcon -// get one row with icon -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CList* CListManager::ListOneRowWithIconWithBubble() const - { - return iListOneRowWithIconWithBubble; - } - -// ----------------------------------------------------------------------------- -// CListManager::ListMultiRowWithIcon -// get multi row with icon -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CList* CListManager::ListMultiRowWithIcon() const - { - return iListMultiRowWithIcon; - } - -CList* CListManager::ListMultiRowWithIconWithBubble() const - { - return iListMultiRowWithIconWithBubble; - } - - -// ----------------------------------------------------------------------------- -// CListManager::ListMultiRowWithoutIcon -// get multi row without icon -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CList* CListManager::ListMultiRowWithoutIcon() const - { - return iListMultiRowWithoutIcon; - } - -CList* CListManager::ListMultiRowRollWithIcon() const - { - return iListMultiRowRollWithIcon; - } - -CList* CListManager::ListOneRowRollWithIcon() const - { - return iListOneRowRollWithIcon; - } - -CList* CListManager::ListExpandableMultiRowWithoutIcon() const - { - return iListExpandableMultiRowWithoutIcon; - } - -// ----------------------------------------------------------------------------- -// CListManager::ListMultiRowRollWithIconWithBubble -// get one row roll with icon with bubble -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CList* CListManager::ListOneRowRollWithIconWithBubble() const - { - return iListOneRowRollWithIconWithBubble; - } - -// ----------------------------------------------------------------------------- -// CListManager::ListMultiRowRollWithIconWithBubble -// get multi row roll with icon with bubble -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CList* CListManager::ListMultiRowRollWithIconWithBubble() const - { - return iListMultiRowRollWithIconWithBubble; - } - -void CListManager::ResetStatus() - { - ListOneRowWithoutIcon()->ResetStatus(); - ListOneRowWithoutIconWithBubble()->ResetStatus(); - ListMultiRowWithIcon()->ResetStatus(); - ListMultiRowWithIconWithBubble()->ResetStatus(); - ListOneRowWithIcon()->ResetStatus(); - ListOneRowWithIconWithBubble()->ResetStatus(); - ListMultiRowRollWithIcon()->ResetStatus(); - ListOneRowRollWithIcon()->ResetStatus(); - ListOneRowRollWithIconWithBubble()->ResetStatus(); - ListMultiRowRollWithIconWithBubble()->ResetStatus(); - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowrollwithicon.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowrollwithicon.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,393 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -#include -#include -#include -#include - -#include "peninputdropdownlist.h" -#include "peninputlayout.h" -#include "peninputlistmultirowrollwithicon.h" - -// added by txin -const TInt KInvalidCandIndex = -1; -// end adding - -CListMultiRowRollWithIcon* CListMultiRowRollWithIcon::NewL(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner) - { - CListMultiRowRollWithIcon* self = new (ELeave) CListMultiRowRollWithIcon(aManager, aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -CListMultiRowRollWithIcon::~CListMultiRowRollWithIcon() - { - iLines.Reset(); - iLines.Close(); - } - -void CListMultiRowRollWithIcon::HandlePointerDownL(const TPoint& aPoint) - { - CList::HandlePointerDownL(aPoint); - - // if press outside of expanded list, close it - // also consider fuzzy boundary - TRect fuzzyrect = iRect; - fuzzyrect.Grow(iOwner->FuzzyBoundry(), iOwner->FuzzyBoundry()); - - if (!fuzzyrect.Contains(aPoint)) - { - iOwner->SetCapture(EFalse); - - if (iOwner->OneRowStartCandIdx() != KInvalidCandIndex) - { - iOwner->AutoChangeActiveList(iOwner->OneRowStartCandIdx()); - } - else - { - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - } - - return; - } - - // If click in navigation rect and NextButton is not disable, then do - if ( iNavigationRect.Contains(aPoint) ) - { - if ( iNavigationCloseRect.Contains(aPoint) && !iCloseButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif //RD_TACTILE_FEEDBACK - iClickedRect.SetRect(iNavigationCloseRect.iTl, iNavigationCloseRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else if (!iOwner->PageCtrlShown()) - { - iClickedRect = KDummyRect; - return; - } - else if ( iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif //RD_TACTILE_FEEDBACK - iClickedRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif //RD_TACTILE_FEEDBACK - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else - { - iClickedRect = KDummyRect; - } - } - } - -void CListMultiRowRollWithIcon::HandlePointerUpL(const TPoint& aPoint) - { - // Reset the button clicked flag to EFalse - iIndicateButtonClicked = EFalse; - -#ifdef __WINS__ - // in emulator, double click will be treated as: - // 1 pointer down and 2 pointer up, which will cause error - if (iClickedRect.IsEmpty() && ((CFepUiBaseCtrl*)iOwner)->PointerDown()) -#else - if (iClickedRect.IsEmpty()) -#endif // __WINS__ - { - iOwner->SetCapture(EFalse); - // Change active list object ie. close the dd-list - - // txin modify - //iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - if (iOwner->OneRowStartCandIdx() != KInvalidCandIndex) - { - iOwner->AutoChangeActiveList(iOwner->OneRowStartCandIdx()); - } - else - { - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - } - // end - } - else - { - if ( iContentRect.Contains(aPoint) ) - { - if ( iClickedRect.Contains(aPoint) ) - { - // Redraw the selected aread - DrawSelection(iClickedRect, EFalse); - - iOwner->SetCapture(EFalse); - - // We have selected a candidate and iClickedCandidateIndex is the selected Index. - // Send the candidate to others - if (iClickedCandidateIndex != KErrNotFound) - { - CCandidate* candidate = iOwner->GetCandidate(iClickedCandidateIndex); - - if (candidate) - { - iOwner->ReportCandidateSelectEventL(candidate->GetCandidate(), - iClickedCandidateIndex); - } - - TInt lastIdxOfLine = StartCandIdxOfLine(iClickedCandidateIndex); - - TInt originalFirstCandIdx = iOwner->GetFirstCandidateIndex(); - TInt originalLastCandIdx = iOwner->GetLastCandidateIndex(); - - if (lastIdxOfLine == KInvalidCandIndex) - { - lastIdxOfLine = iOwner->GetFirstCandidateIndex(); - } - - iOwner->SetOneRowStartCandIdx(lastIdxOfLine); - - iOwner->AutoChangeActiveList(lastIdxOfLine); - - iOwner->SetOriginalFirstCandIdx(originalFirstCandIdx); - } - } - } - else if ( iNavigationCloseRect.Contains(aPoint) ) - { - if ( iNavigationCloseRect == iClickedRect ) - { - iOwner->SetCapture(EFalse); - - if (iOwner->OneRowStartCandIdx() != KInvalidCandIndex) - { - iOwner->AutoChangeActiveList(iOwner->OneRowStartCandIdx()); - } - else - { - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - } - } - } - else if (!iOwner->PageCtrlShown()) - { - iClickedRect = KEmptyRect; - return; - } - else if ( iNavigationNextRect.Contains(aPoint) ) - { - if ( iNavigationNextRect == iClickedRect ) - { - iOwner->NotifyGetNextPage(); - UpdateListL(); - } - } - else if ( iNavigationPreviousRect.Contains(aPoint) ) - { - if ( iNavigationPreviousRect == iClickedRect ) - { - // Change page to previous - iOwner->NotifyGetPreviousPage(); // do nothing, just to avoid clear candidate - - TInt firstIndex = 0; - TInt lastIndex = 0; - - if (iOwner->GetPages()->GetPreviousIndex(iOwner->GetLastCandidateIndex(), - firstIndex,lastIndex)) - { - iOwner->SetFirstCandidateIndex(firstIndex); - iOwner->SetLastCandidateIndex(lastIndex); - } - - UpdateListL(ETrue, EFalse); - } - } - - iClickedRect = KEmptyRect; - } - } - -void CListMultiRowRollWithIcon::SetNextPageHighlightCellAfterOnePageL(const TInt aCellIndex) - { - while (aCellIndex >= iOwner->GetLastCandidateIndex()) - { - UpdateListL(); - } - - TInt lastIdxOfLine = StartCandIdxOfLine(aCellIndex); - - TInt originalFirstCandIdx = iOwner->GetFirstCandidateIndex(); - TInt originalLastCandIdx = iOwner->GetLastCandidateIndex(); - - if (lastIdxOfLine == KInvalidCandIndex) - { - lastIdxOfLine = iOwner->GetFirstCandidateIndex(); - } - - iOwner->SetOneRowStartCandIdx(lastIdxOfLine); - - iOwner->AutoChangeActiveList(lastIdxOfLine); - - iOwner->SetOriginalFirstCandIdx(originalFirstCandIdx); - } - -CListMultiRowRollWithIcon::CListMultiRowRollWithIcon(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner): - CListMultiRowWithIcon(aManager, aOwner) - { - iIsMultiRows = ETrue; - } - -TInt CListMultiRowRollWithIcon::StartCandIdxOfLine(TInt aCandIndex) - { - TInt lineCnt = iLines.Count(); - - for (TInt i = 0; i < lineCnt; i++) - { - if ((aCandIndex >= iLines[i].iStartIdx) && (aCandIndex <= iLines[i].iEndIdx)) - { - return iLines[i].iStartIdx; - } - } - - return KInvalidCandIndex; - } - -void CListMultiRowRollWithIcon::ResetStatus() - { - CList::ResetStatus(); - iLines.Reset(); - } - -TInt CListMultiRowRollWithIcon::CalculatePositionsL() - { - TLineCandidate lineCand; - - TInt t = 0; - TPoint setpoints; - TInt count = iOwner->CandidateCount(); - CCandidate* candidate = NULL; - - if ( count > 0 ) - { - // modified by txin - // original - /* - setpoints.iX = iContentRect.iTl.iX; - setpoints.iY = iContentRect.iTl.iY; - */ - - TBool candHLToR = (iOwner->CandHDirection() == CFepCtrlDropdownList::ECandFromLToR); // horizontal direction - candHLToR ? setpoints.SetXY(iContentRect.iTl.iX, iContentRect.iTl.iY) : - setpoints.SetXY(iContentRect.iBr.iX, iContentRect.iTl.iY); - // end modify - - TInt currentCellIndex = 0; - TInt lastUsedCellCount = 0; - TInt lastusedRow = 0; - iOwner->SetFirstCandidateIndex (iOwner->GetLastCandidateIndex()); - count = Min(count, iOwner->GetLastCandidateIndex() + - iOwner->GetColNum() * iOwner->GetRowNum() ); - - lineCand.iStartIdx = iOwner->GetLastCandidateIndex(); - - for(t = iOwner->GetLastCandidateIndex(); t < count ; t++) - { - candidate = iOwner->GetCandidate(t); - - if (!candidate) - { - continue; - } - - lastUsedCellCount = candidate->SetPositionL(setpoints, - iOwner->GetCellWidth(), - iOwner->GetCellHeight(), - iOwner->GetFont(), - iOwner->GetCellHorizontalMargin()); - currentCellIndex += lastUsedCellCount; - if ( currentCellIndex > iOwner->GetColNum() ) - { - lastusedRow++; - if ( lastusedRow >= iOwner->GetRowNum() ) - { - break; - } - - currentCellIndex = 0; - setpoints.iY = setpoints.iY + - iOwner->GetCellHeight() + - iOwner->GetCellVerticalMargin(); - - candHLToR ? (setpoints.iX = iContentRect.iTl.iX) : (setpoints.iX = iContentRect.iBr.iX); - - lastUsedCellCount = candidate->SetPositionL(setpoints, - iOwner->GetCellWidth(), - iOwner->GetCellHeight(), - iOwner->GetFont(), - iOwner->GetCellHorizontalMargin()); - currentCellIndex += lastUsedCellCount; - - lineCand.iEndIdx = t - 1; - iLines.Append(lineCand); - - lineCand.iStartIdx = t; - - candHLToR ? (setpoints.iX += lastUsedCellCount * (iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())) : - (setpoints.iX -= lastUsedCellCount * (iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())); - } - else - { - candHLToR ? (setpoints.iX += lastUsedCellCount * (iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())) : - (setpoints.iX -= lastUsedCellCount * (iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())); - } - } // for-loop - } // if candidate exist - - lineCand.iEndIdx = t-1; - iLines.Append(lineCand); - - return t; // as lastCandidateIndex - } - -void CListMultiRowRollWithIcon::UpdateListL(TBool aDrawFlag, TBool aRecalculate) - { - RefreshListL(aRecalculate); - - if (iOwner->GetUpdateListRedrawFlag() && aDrawFlag ) - { - Draw(); - iOwner->Invalidate(iRect); - } - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowrollwithiconwithbubble.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowrollwithiconwithbubble.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,402 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#include -#include -#include -#include - -#include "peninputdropdownlist.h" -#include "peninputlayout.h" -#include "peninputlistmultirowrollwithiconwithbubble.h" - - -const TInt KInvalidCandIndex = -1; - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CListMultiRowRollWithIconWithBubble - -// ----------------------------------------------------------------------------- -// CListMultiRowRollWithIconWithBubble::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowRollWithIconWithBubble* CListMultiRowRollWithIconWithBubble::NewL(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner) - { - CListMultiRowRollWithIconWithBubble* self = new (ELeave) CListMultiRowRollWithIconWithBubble(aManager, aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CListMultiRowRollWithIconWithBubble::CListMultiRowRollWithIconWithBubble -// C++ default constructor can NOT contain any code, that -// might leave -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowRollWithIconWithBubble::CListMultiRowRollWithIconWithBubble(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner): - CListMultiRowRollWithIcon(aManager, aOwner) - { - } - -// ----------------------------------------------------------------------------- -// CListMultiRowRollWithIconWithBubble::~CListMultiRowRollWithIconWithBubble -// desstrutor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowRollWithIconWithBubble::~CListMultiRowRollWithIconWithBubble() - { - - } - -// ----------------------------------------------------------------------------- -// CListMultiRowRollWithIconWithBubble::HandlePointerDownL -// handle pointer down -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowRollWithIconWithBubble::HandlePointerDownL(const TPoint& aPoint) - { - CList::HandlePointerDownL(aPoint); - - // if press outside of expanded list, close it - // also consider fuzzy boundary - TRect fuzzyrect = iRect; - fuzzyrect.Grow(iOwner->FuzzyBoundry(), iOwner->FuzzyBoundry()); - - if (!fuzzyrect.Contains(aPoint)) - { - iOwner->SetCapture(EFalse); - - if (iOwner->OneRowStartCandIdx() != KInvalidCandIndex) - { - iOwner->AutoChangeActiveList(iOwner->OneRowStartCandIdx()); - } - else - { - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - } - iOwner->ClearBubble(); - return; - } - - // If click in navigation rect and NextButton is not disable, then do - if ( iNavigationRect.Contains(aPoint) ) - { - if ( iNavigationCloseRect.Contains(aPoint) && !iCloseButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif - iClickedRect.SetRect(iNavigationCloseRect.iTl, iNavigationCloseRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else if (!iOwner->PageCtrlShown()) - { - iClickedRect = KDummyRect; - return; - } - else if ( iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif - iClickedRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else - { - iClickedRect = KDummyRect; - } - } - else - { - TInt index = -1; - CCandidate* candidate = FindCandidate(aPoint, index); - if(candidate) - { - iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); - } - } - } - - -// ----------------------------------------------------------------------------- -// CListMultiRowRollWithIconWithBubble::HandlePointerDragL -// handle pointer drag function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowRollWithIconWithBubble::HandlePointerDragL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDragL(aPoint); - - CCandidate* candidate = FindCandidate(aPoint, iClickedCandidateIndex); - - TBool isUpdateBubble = EFalse; - if ( candidate ) - { - if (iClickedRect != candidate->GetRect()) - {// move to the other candidate - // set update prview bubble flag - isUpdateBubble = ETrue; - // remenber the previous cell rect - iMoveLatestRect = iClickedRect; - // get the new cell rect - iClickedRect.SetRect(candidate->GetRect().iTl, candidate->GetRect().Size()); - } - } - else if ( iNavigationRect.Contains(aPoint) ) - { - iOwner->ClearBubble(); - if ( iNavigationCloseRect.Contains(aPoint) && !iCloseButtonDisable && - iClickedRect != iNavigationCloseRect) - { - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(iNavigationCloseRect.iTl, iNavigationCloseRect.iBr); - CompareRect(iMoveLatestRect, iClickedRect); - } - else if (!iOwner->PageCtrlShown()) - { - return; - } - else if ( iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable && - iClickedRect != iNavigationPreviousRect ) - { - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); - CompareRect(iMoveLatestRect, iClickedRect); - } - else if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable && - iClickedRect != iNavigationNextRect ) - { - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - CompareRect(iMoveLatestRect, iClickedRect); - } - else if(!((iNavigationCloseRect.Contains(aPoint) && !iCloseButtonDisable) || - (iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable) || - (iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable))) - { - // Move to navigation area but not valid navigation button - TRect dummyrect = KDummyRect; - if(iClickedRect != dummyrect) - { - iMoveLatestRect = iClickedRect; - iClickedRect = KDummyRect; - CompareRect(iMoveLatestRect, iClickedRect); - } - } - } - else - {// outside the list - // remember the previous cell - iMoveLatestRect = iClickedRect; - // set the new cell to empty - iClickedRect = KDummyRect; - // redraw the cell only when drag outside at the first time - if(iMoveLatestRect != iClickedRect) - { - iOwner->ClearBubble(); - DrawSelection(iMoveLatestRect, EFalse); - DrawHighightCell(iMoveLatestRect, ETrue); - } - } - - if(candidate && isUpdateBubble) - { - iOwner->ClearBubble(); - CompareRect(iMoveLatestRect, iClickedRect); - // Show preview bubble when drag into a candidate cell - // Make sure show the bubble after redraw clicked cell - iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); - } - } - -// ----------------------------------------------------------------------------- -// CListMultiRowRollWithIconWithBubble::HandlePointerUpL -// handle pointer up -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowRollWithIconWithBubble::HandlePointerUpL(const TPoint& aPoint) - { - // Reset the button clicked flag to EFalse - iIndicateButtonClicked = EFalse; - - iOwner->ClearBubble(); -#ifdef __WINS__ - // in emulator, double click will be treated as: - // 1 pointer down and 2 pointer up, which will cause error - if (iClickedRect.IsEmpty() && ((CFepUiBaseCtrl*)iOwner)->PointerDown()) -#else - if (iClickedRect.IsEmpty()) -#endif // __WINS__ - { - iOwner->SetCapture(EFalse); - // Change active list object ie. close the dd-list - - // txin modify - //iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - if (iOwner->OneRowStartCandIdx() != KInvalidCandIndex) - { - iOwner->AutoChangeActiveList(iOwner->OneRowStartCandIdx()); - } - else - { - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - } - // end - } - else - { - if ( iContentRect.Contains(aPoint) ) - { - if ( iClickedRect.Contains(aPoint) ) - { - // Redraw the selected aread - DrawSelection(iClickedRect, EFalse); - - iOwner->SetCapture(EFalse); - - // We have selected a candidate and iClickedCandidateIndex is the selected Index. - // Send the candidate to others - if (iClickedCandidateIndex != KErrNotFound) - { - CCandidate* candidate = iOwner->GetCandidate(iClickedCandidateIndex); - - if (candidate) - { - iOwner->ReportCandidateSelectEventL(candidate->GetCandidate(), - iClickedCandidateIndex); - } - - TInt lastIdxOfLine = StartCandIdxOfLine(iClickedCandidateIndex); - - TInt originalFirstCandIdx = iOwner->GetFirstCandidateIndex(); - TInt originalLastCandIdx = iOwner->GetLastCandidateIndex(); - - if (lastIdxOfLine == KInvalidCandIndex) - { - lastIdxOfLine = iOwner->GetFirstCandidateIndex(); - } - - iOwner->SetOneRowStartCandIdx(lastIdxOfLine); - - iOwner->AutoChangeActiveList(lastIdxOfLine); - - iOwner->SetOriginalFirstCandIdx(originalFirstCandIdx); - } - } - } - else if ( iNavigationCloseRect.Contains(aPoint) ) - { - if ( iNavigationCloseRect == iClickedRect ) - { - iOwner->SetCapture(EFalse); - - if (iOwner->OneRowStartCandIdx() != KInvalidCandIndex) - { - iOwner->AutoChangeActiveList(iOwner->OneRowStartCandIdx()); - } - else - { - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - } - } - } - else if (!iOwner->PageCtrlShown()) - { - iClickedRect = KEmptyRect; - return; - } - else if ( iNavigationNextRect.Contains(aPoint) ) - { - if ( iNavigationNextRect == iClickedRect ) - { - iOwner->NotifyGetNextPage(); - UpdateListL(); - } - } - else if ( iNavigationPreviousRect.Contains(aPoint) ) - { - if ( iNavigationPreviousRect == iClickedRect ) - { - // Change page to previous - iOwner->NotifyGetPreviousPage(); // do nothing, just to avoid clear candidate - - TInt firstIndex = 0; - TInt lastIndex = 0; - - if (iOwner->GetPages()->GetPreviousIndex(iOwner->GetLastCandidateIndex(), - firstIndex,lastIndex)) - { - iOwner->SetFirstCandidateIndex(firstIndex); - iOwner->SetLastCandidateIndex(lastIndex); - } - - UpdateListL(ETrue, EFalse); - } - } - - iClickedRect = KEmptyRect; - } - } - -// ----------------------------------------------------------------------------- -// CListMultiRowRollWithIconWithBubble::CompareRect -// Compare src and des rect -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CListMultiRowRollWithIconWithBubble::CompareRect(const TRect& aSrcRect, const TRect& aDesRect) - { - if(aSrcRect != aDesRect) - { - DrawSelection(aDesRect, ETrue); - DrawSelection(aSrcRect, EFalse); - DrawHighightCell(aSrcRect, ETrue); - } - - return EFalse; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowwithicon.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowwithicon.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1038 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Multi rows list with icon for drop-down list objects -* -*/ - - -// Include -#include -#include -#include -#include -#include -#include -#include "peninputlistmultirowwithicon.h" -#include "peninputlayout.h" - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CListMultiRowWithIcon - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIcon::CListMultiRowWithIcon -// C++ default constructor can NOT contain any code, that -// might leave -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowWithIcon::CListMultiRowWithIcon(CListManager* aManager, - MFepCtrlDropdownListContext *aOwner) -: CList(aManager, aOwner) - { - iIsMultiRows = ETrue; - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIcon::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowWithIcon* CListMultiRowWithIcon::NewL(CListManager* aManager, - MFepCtrlDropdownListContext *aOwner) - { - CListMultiRowWithIcon* self = new (ELeave) CListMultiRowWithIcon(aManager, aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIcon::~CListMultiRowWithIcon -// desstrutor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowWithIcon::~CListMultiRowWithIcon() - { - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIcon::HandlePointerDownL -// handle pointer down -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithIcon::HandlePointerDownL(const TPoint& aPoint) - { - CList::HandlePointerDownL(aPoint); - - // also consider fuzzy boundry of drop down list - TRect fuzzyrect = iRect; - fuzzyrect.Grow(iOwner->FuzzyBoundry(), iOwner->FuzzyBoundry()); - - if (!fuzzyrect.Contains(aPoint)) - { - iOwner->SetCapture(EFalse); - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - return; - } - - // If click in navigation rect and NextButton is not disable, then do - if ( iNavigationRect.Contains(aPoint) ) - { - if ( iNavigationCloseRect.Contains(aPoint) && !iCloseButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif //RD_TACTILE_FEEDBACK - - iClickedRect.SetRect(iNavigationCloseRect.iTl, iNavigationCloseRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else if (!iOwner->PageCtrlShown()) - { - iClickedRect = KDummyRect; - return; - } - else if ( iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif //RD_TACTILE_FEEDBACK - - iClickedRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif //RD_TACTILE_FEEDBACK - - - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else - { - iClickedRect = KDummyRect; - } - } - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIcon::HandlePointerDragL -// handle pointer drag function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithIcon::HandlePointerDragL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDragL(aPoint); - - if ( !iClickedRect.IsEmpty() ) // clicked rect is not outside the whole DDL - { - TInt index = -1; - CCandidate* candidate = FindCandidate(aPoint, index); - - iMoveLatestRect = KEmptyRect; - - if ( candidate ) - { - iMoveLatestRect.SetRect(candidate->GetRect().iTl, candidate->GetRect().Size()); - } - else if ( iNavigationRect.Contains(aPoint) ) - { - if ( iNavigationCloseRect.Contains(aPoint) && !iCloseButtonDisable ) - { - iMoveLatestRect.SetRect(iNavigationCloseRect.iTl, iNavigationCloseRect.iBr); - } - else if (!iOwner->PageCtrlShown()) - { - return; - } - else if ( iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable ) - { - iMoveLatestRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); - } - else if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable ) - { - iMoveLatestRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - } - } - - CompareRect(iMoveLatestRect, iClickedRect); - } - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIcon::HandlePointerUpL -// handle pointer up function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithIcon::HandlePointerUpL(const TPoint& aPoint) - { - // Reset the button clicked flag to EFalse - iIndicateButtonClicked = EFalse; - -#ifdef __WINS__ - // in emulator, double click will be treated as: - // 1 pointer down and 2 pointer up, which will cause error - if (iClickedRect.IsEmpty() && ((CFepUiBaseCtrl*)iOwner)->PointerDown()) -#else - if (iClickedRect.IsEmpty()) -#endif // __WINS__ - { - iOwner->SetCapture(EFalse); - // Change active list object ie. close the dd-list - iOwner->AutoChangeActiveList( iOwner->GetFirstCandidateIndex() ); - } - else - { - if ( iContentRect.Contains(aPoint) ) - { - if ( iClickedRect.Contains(aPoint) ) - { - // Redraw the selected aread - DrawSelection(iClickedRect, EFalse); - - iOwner->SetCapture(EFalse); - - // We have selected a candidate and iClickedCandidateIndex is the selected Index. - // Send the candidate to others - if (iClickedCandidateIndex != KErrNotFound) - { - iOwner->AutoChangeActiveList( iOwner->GetFirstCandidateIndex() ); - CCandidate* candidate = iOwner->GetCandidate(iClickedCandidateIndex); - if ( candidate ) - { - iOwner->ReportCandidateSelectEventL(candidate->GetCandidate(), - iClickedCandidateIndex); - } - } - } - } - else if ( iNavigationCloseRect.Contains(aPoint) ) - { - if ( iNavigationCloseRect == iClickedRect ) - { - iOwner->SetCapture(EFalse); - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - } - } - else if (!iOwner->PageCtrlShown()) - { - iClickedRect = KEmptyRect; - return; - } - else if ( iNavigationNextRect.Contains(aPoint) ) - { - if ( iNavigationNextRect == iClickedRect ) - { - iOwner->NotifyGetNextPage(); - UpdateListL(); - } - } - else if ( iNavigationPreviousRect.Contains(aPoint) ) - { - if ( iNavigationPreviousRect == iClickedRect ) - { - // Change page to previous - iOwner->NotifyGetPreviousPage(); // do nothing, just to avoid clear candidate - - TInt firstIndex = 0; - TInt lastIndex = 0; - - if (iOwner->GetPages()->GetPreviousIndex(iOwner->GetLastCandidateIndex(), - firstIndex,lastIndex)) - { - iOwner->SetFirstCandidateIndex(firstIndex); - iOwner->SetLastCandidateIndex(lastIndex); - } - - UpdateListL(ETrue, EFalse); - } - } - - iClickedRect = KEmptyRect; - } - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIcon::Draw -// draw the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithIcon::Draw() - { - // Call draw in base class; - CList::Draw(); - - DrawCandidates(); - - const CFbsBitmap* bitmapBg = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapListBg); - const CFbsBitmap* bitmapBgMask = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapListBgMask); - - if (!bitmapBg || !bitmapBgMask) - { - iOwner->Gc()->SetPenSize(iOwner->GetPenSize()); - if ((iOwner->GetCellHorizontalMargin() == 0) && (iOwner->GetCellVerticalMargin() == 0)) - { - iOwner->Gc()->SetPenStyle(CGraphicsContext::ESolidPen); - } - else - { - iOwner->Gc()->SetPenStyle(CGraphicsContext::ENullPen); - } - - iOwner->Gc()->SetPenColor(iOwner->GetBorderColor()); - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - - // Draw the rect for navi - iOwner->Gc()->DrawRect(iNavigationRect); - } - else - { - iOwner->Gc()->DrawBitmapMasked(iNavigationRect, bitmapBg, - bitmapBg->SizeInPixels(), bitmapBgMask, ETrue); - - } - - iOwner->Gc()->SetPenStyle(CGraphicsContext::ESolidPen); - - // First draw down button - if ( iBButtonClose ) - { - //mask bitmaps - TRect rect = iNavigationCloseRect; - - if (iDropdownListDrawInfo.iSupportSkin) - { - TRect innerRect = rect; - innerRect.Shrink( 4, 4 ); - - // ----- draw bitmaps ----- - - - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iNormalBtnImgID, - KAknsIIDDefault ); - - - iBButtonMaskClose = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapCloseMask); - - TRect srcRect( TPoint( 0, 0 ), iBButtonClose->SizeInPixels() ); - - iOwner->Gc()->BitBltMasked( iNavigationCloseRect.iTl, - iBButtonClose, - srcRect, - iBButtonMaskClose, - EFalse); - } - else - { - // Draw the rect for navi next - iOwner->Gc()->DrawLine(TPoint(iNavigationCloseRect.iTl.iX, iNavigationCloseRect.iBr.iY), - iNavigationCloseRect.iBr); - - if (iOwner->GetCellHorizontalMargin() != 0) - { - iOwner->Gc()->DrawLine(iNavigationCloseRect.iTl, - TPoint(iNavigationCloseRect.iTl.iX, - iNavigationCloseRect.iBr.iY)); - iOwner->Gc()->DrawLine(TPoint(iNavigationCloseRect.iBr.iX, - iNavigationCloseRect.iTl.iY), - iNavigationCloseRect.iBr); - } - - if (iOwner->GetCellVerticalMargin() != 0) - { - iOwner->Gc()->DrawLine(iNavigationCloseRect.iTl, - TPoint(iNavigationCloseRect.iBr.iX, - iNavigationCloseRect.iTl.iY)); - } - - - rect.Shrink(TSize(1,1)); - rect.iBr.iY = rect.iBr.iY + 1; - - if (iOwner->GetCellHorizontalMargin() != 0) - { - rect.iBr.iX = rect.iBr.iX + 1; - } - - iOwner->Gc()->DrawBitmapMasked(rect, iBButtonClose, - iBButtonClose->SizeInPixels(), iBButtonMaskClose, ETrue); - } - } - - if (!iOwner->PageCtrlShown()) - { - iOwner->Invalidate(iRect); - return; - } - - // First draw down button - if ( iBButtonDown ) - { - //mask bitmaps - TRect rect = iNavigationNextRect; - - if (iDropdownListDrawInfo.iSupportSkin) - { - TRect innerRect = rect; - innerRect.Shrink( 4, 4 ); - - // ----- draw bitmaps ----- - - - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iNormalBtnImgID, - KAknsIIDDefault ); - - - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNextMask); - - TRect srcRect( TPoint( 0, 0 ), iBButtonDown->SizeInPixels() ); - - iOwner->Gc()->BitBltMasked( iNavigationNextRect.iTl, - iBButtonDown, - srcRect, - iBButtonMaskDown, - EFalse); - } - else - { - // Draw the rect for navi next - iOwner->Gc()->DrawLine(iNavigationNextRect.iTl, - TPoint(iNavigationNextRect.iBr.iX, iNavigationNextRect.iTl.iY)); - - if (iOwner->GetCellHorizontalMargin() != 0) - { - iOwner->Gc()->DrawLine(iNavigationNextRect.iTl, - TPoint(iNavigationNextRect.iTl.iX, iNavigationNextRect.iBr.iY)); - iOwner->Gc()->DrawLine(TPoint(iNavigationNextRect.iBr.iX, iNavigationNextRect.iTl.iY), - iNavigationNextRect.iBr); - } - - if (iOwner->GetCellVerticalMargin() != 0) - { - iOwner->Gc()->DrawLine(TPoint(iNavigationNextRect.iTl.iX, iNavigationNextRect.iBr.iY), - iNavigationNextRect.iBr); - } - - rect.Shrink(TSize(1,1)); - - if (iOwner->GetCellHorizontalMargin() != 0) - { - rect.iBr.iX = rect.iBr.iX + 1; - } - - if (iOwner->GetCellVerticalMargin() != 0) - { - rect.iBr.iY = rect.iBr.iY + 1; - } - - iOwner->Gc()->DrawBitmapMasked(rect, iBButtonDown, - iBButtonDown->SizeInPixels(), iBButtonMaskDown, ETrue); - } - } - - // Second draw up button - if ( iBButtonUp ) - { - //mask bitmaps - TRect rect = iNavigationPreviousRect; - - if (iDropdownListDrawInfo.iSupportSkin) - { - TRect innerRect = rect; - innerRect.Shrink( 4, 4 ); - - // ----- draw bitmaps ----- - - - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iNormalBtnImgID, - KAknsIIDDefault ); - - - iBButtonMaskUp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPreviousMask); - - TRect srcRect( TPoint( 0, 0 ), iBButtonMaskUp->SizeInPixels() ); - - iOwner->Gc()->BitBltMasked( iNavigationPreviousRect.iTl, - iBButtonUp, - srcRect, - iBButtonMaskUp, - EFalse); - } - - else - { - // Draw the rect for navi next - iOwner->Gc()->DrawLine(TPoint(iNavigationPreviousRect.iTl.iX, - iNavigationPreviousRect.iBr.iY), - iNavigationPreviousRect.iBr ); - - if (iOwner->GetCellHorizontalMargin() != 0) - { - iOwner->Gc()->DrawLine(iNavigationPreviousRect.iTl, - TPoint(iNavigationPreviousRect.iTl.iX, iNavigationPreviousRect.iBr.iY)); - iOwner->Gc()->DrawLine( - TPoint(iNavigationPreviousRect.iBr.iX, iNavigationPreviousRect.iTl.iY), - iNavigationPreviousRect.iBr); - } - - if (iOwner->GetCellVerticalMargin() != 0) - { - iOwner->Gc()->DrawLine(iNavigationPreviousRect.iTl, - TPoint(iNavigationPreviousRect.iBr.iX, iNavigationPreviousRect.iTl.iY)); - } - - rect.Shrink(TSize(1,1)); - - if (iOwner->GetCellHorizontalMargin() != 0) - { - rect.iBr.iX = rect.iBr.iX + 1; - } - - if (iOwner->GetCellVerticalMargin() != 0) - { - rect.iBr.iY = rect.iBr.iY + 1; - } - - iOwner->Gc()->DrawBitmapMasked(rect, iBButtonUp, - iBButtonUp->SizeInPixels(), iBButtonMaskUp, ETrue); - } - } - - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIcon::UpdateList -// update the liset -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithIcon::UpdateListL(TBool aDrawFlag,TBool aRecalculate) - { - RefreshListL(aRecalculate); - if(aDrawFlag) - { - Draw(); - iOwner->Invalidate(iRect); - } - } - -void CListMultiRowWithIcon::RefreshListL(TBool aRecalculate) - { - // Recalculate the pos for the candidates - if ( aRecalculate ) - { - iOwner->SetLastCandidateIndex(CalculatePositionsL()); - } - - iOwner->GetPages()->AddPage(iOwner->GetFirstCandidateIndex(), iOwner->GetLastCandidateIndex()); - - iCloseButtonDisable = EFalse; - iBButtonClose = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapClose); - iBButtonMaskClose = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapCloseMask); - - if (iOwner->GetFirstCandidateIndex() == 0) // First page, previous button can't be seen - { - iPreviousButtonDisable = ETrue; - iBButtonUp = NULL; - iBButtonMaskUp = NULL; - } - else - { - iPreviousButtonDisable = EFalse; - iBButtonUp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPrevious); - iBButtonMaskUp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPreviousMask); - } - - if ((iOwner->GetLastCandidateIndex() < iOwner->CandidateCount()) || - iOwner->NextCandidateExist()) - { - iNextButtonDisable = EFalse; - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNext); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNextMask); - } - else - { - iNextButtonDisable = ETrue; - iBButtonDown = NULL; - iBButtonMaskDown = NULL; - } - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIcon::CalculateAreas -// Calculate all kinds of rectangles -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithIcon::CalculateAreas() - { - iRect.iTl = iOwner->GetTopLeftPoint(); - TInt width = iOwner->GetCellWidth() * iOwner->GetColNum() + - iOwner->GetNaviWidth() + - (iOwner->GetColNum() + 2) * iOwner->GetCellHorizontalMargin(); - - TInt height = iOwner->GetCellHeight() * iOwner->GetRowNum() + - (iOwner->GetRowNum() + 1) * iOwner->GetCellVerticalMargin(); - - iRect.SetSize(TSize(width, height)); - - if (iOwner->CandExpandType() == CFepCtrlDropdownList::ECandExpandUpward) - { - TInt onerowheight = iOwner->GetCellHeight() + 2 * iOwner->GetCellVerticalMargin(); - iRect.Move(0, -(height - onerowheight)); - } - - TBool candHLToR = (iOwner->CandHDirection() == CFepCtrlDropdownList::ECandFromLToR); - TInt xPos = iRect.iTl.iX + iOwner->GetCellHorizontalMargin(); - TInt yPos = iRect.iTl.iY + iOwner->GetCellVerticalMargin(); - - // width of content rect - TInt widthC = iOwner->GetCellWidth() * iOwner->GetColNum() + - (iOwner->GetColNum() - 1) * iOwner->GetCellHorizontalMargin(); - height = iOwner->GetCellHeight() * iOwner->GetRowNum() + - (iOwner->GetRowNum() - 1) * iOwner->GetCellVerticalMargin(); - // width of navi rect - TInt widthN = iOwner->GetNaviWidth(); - - if (candHLToR) - { - iContentRect.iTl.SetXY(xPos, yPos); - iNavigationRect.iTl.SetXY(xPos + widthC + iOwner->GetCellHorizontalMargin(), - yPos); - } - else - { - iNavigationRect.iTl.SetXY(xPos, yPos); - iContentRect.iTl.SetXY(xPos + widthN + iOwner->GetCellHorizontalMargin(), - yPos); - } - - iContentRect.SetSize(TSize(widthC, height)); - iNavigationRect.SetSize(TSize(widthN, height)); - - iNavigationCloseRect.iTl = iNavigationRect.iTl; - iNavigationCloseRect.SetSize(TSize(iOwner->GetNaviWidth(), iOwner->GetCellHeight())); - - if (!iOwner->PageCtrlShown()) - { - iNavigationPreviousRect = TRect(0, 0, 0, 0); - iNavigationNextRect = TRect(0, 0, 0, 0); - return; - } - else - { - iNavigationPreviousRect.iTl.SetXY(iNavigationCloseRect.iTl.iX, - iNavigationCloseRect.iBr.iY + iOwner->GetCellVerticalMargin()); - iNavigationPreviousRect.SetSize(TSize(iOwner->GetNaviWidth(), iOwner->GetSpinBtnHeight())); - iNavigationNextRect.iTl.SetXY(iNavigationRect.iTl.iX, - iNavigationRect.iBr.iY - iOwner->GetSpinBtnHeight()); - iNavigationNextRect.SetSize(TSize(iOwner->GetNaviWidth(), iOwner->GetSpinBtnHeight())); - } - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIcon::CalculatePositionsL -// calculate the position of all visible cells in the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CListMultiRowWithIcon::CalculatePositionsL() - { - TInt t = 0; - TPoint setpoints; - TInt count = iOwner->CandidateCount(); - CCandidate* candidate = NULL; - if ( count > 0 ) - { - TBool candHLToR = (iOwner->CandHDirection() == CFepCtrlDropdownList::ECandFromLToR); - candHLToR ? setpoints.SetXY(iContentRect.iTl.iX, iContentRect.iTl.iY) : - setpoints.SetXY(iContentRect.iBr.iX, iContentRect.iTl.iY); - - TInt currentCellIndex = 0; - TInt lastUsedCellCount = 0; - TInt lastusedRow = 0; - iOwner->SetFirstCandidateIndex (iOwner->GetLastCandidateIndex()); - count = Min(count, iOwner->GetLastCandidateIndex() + iOwner->GetColNum() * iOwner->GetRowNum() ); - - for(t = iOwner->GetLastCandidateIndex(); t < count ; t++) - { - candidate = iOwner->GetCandidate(t); - - if (!candidate) - { - continue; - } - - lastUsedCellCount = candidate->SetPositionL(setpoints, - iOwner->GetCellWidth(), - iOwner->GetCellHeight(), - iOwner->GetFont(), - iOwner->GetCellHorizontalMargin()); - currentCellIndex += lastUsedCellCount; - if ( currentCellIndex > iOwner->GetColNum() ) - { - lastusedRow++; - if ( lastusedRow >= iOwner->GetRowNum() ) - { - break; - } - - currentCellIndex = 0; - - setpoints.iY = setpoints.iY + - iOwner->GetCellHeight() + - iOwner->GetCellVerticalMargin(); - candHLToR ? (setpoints.iX = iContentRect.iTl.iX) : (setpoints.iX = iContentRect.iBr.iX); - lastUsedCellCount = candidate->SetPositionL(setpoints, - iOwner->GetCellWidth(), - iOwner->GetCellHeight(), - iOwner->GetFont(), - iOwner->GetCellHorizontalMargin()); - currentCellIndex += lastUsedCellCount; - - candHLToR ? (setpoints.iX += lastUsedCellCount*(iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())) : - (setpoints.iX -= lastUsedCellCount*(iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())); - } - else - { - candHLToR ? (setpoints.iX += lastUsedCellCount*(iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())) : - (setpoints.iX -= lastUsedCellCount*(iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())); - } - } // for-loop - } // if candidate exist - - return t; // as lastCandidateIndex - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIcon::DrawNavigationPress -// draw navigation button when pressed or un-pressed -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CListMultiRowWithIcon::DrawNavigationPress(const TRect& aRect,TBool aIndicate) - { - TBool retval = EFalse; - - if ( aRect == iNavigationCloseRect ) - { - retval = ETrue; - - // Activeate bitmap context - iOwner->ActivateBitmapContext(); - - if (iDropdownListDrawInfo.iSupportSkin) - { - TRect rect = iNavigationCloseRect; - TRect innerRect = rect; - innerRect.Shrink( 4, 4 ); - - if ( aIndicate ) - { - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iPressedBtnImgID, - KAknsIIDDefault ); - } - else - { - - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iNormalBtnImgID, - KAknsIIDDefault ); - - } - - iBButtonMaskClose = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapCloseMask); - - TRect srcRect( TPoint( 0, 0 ), iBButtonClose->SizeInPixels() ); - - iOwner->Gc()->BitBltMasked( iNavigationCloseRect.iTl, - iBButtonClose, - srcRect, - iBButtonMaskClose, - EFalse); - } - else - { - if ( aIndicate ) // Pressed the button - { - iBButtonClose = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapClosePress); - iBButtonMaskClose = iOwner->GetBitmapDb()->GetBitMap( - CBitmapDb::EBitmapClosePressMask); - } - else // Release the button - { - iBButtonClose = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapClose); - iBButtonMaskClose = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapCloseMask); - } - - // Begin draw navigation next button - iOwner->DrawMask(iNavigationCloseRect); - // Activeate bitmap context - iOwner->ActivateBitmapContext(); - // Draw bitmap - TRect rect = iNavigationCloseRect; - rect.Shrink(TSize(1,1)); - rect.iBr.iY += 1; - - if (iOwner->GetCellHorizontalMargin() != 0) - { - rect.iBr.iX = rect.iBr.iX + 1; - } - - iOwner->Gc()->DrawBitmapMasked(rect, iBButtonClose, - iBButtonClose->SizeInPixels(), iBButtonMaskClose, ETrue); - } - iOwner->Invalidate(aRect); - } - else if (!iOwner->PageCtrlShown()) - { - return retval; - } - else if ( aRect == iNavigationPreviousRect ) - { - retval = ETrue; - - // Activeate bitmap context - iOwner->ActivateBitmapContext(); - - if (iDropdownListDrawInfo.iSupportSkin) - { - TRect rect = iNavigationPreviousRect; - TRect innerRect = rect; - innerRect.Shrink( 4, 4 ); - - if ( aIndicate ) - { - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iPressedBtnImgID, - KAknsIIDDefault ); - } - else - { - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iNormalBtnImgID, - KAknsIIDDefault ); - } - - iBButtonMaskUp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPreviousMask); - - TRect srcRect( TPoint( 0, 0 ), iBButtonUp->SizeInPixels() ); - - iOwner->Gc()->BitBltMasked( iNavigationPreviousRect.iTl, - iBButtonUp, - srcRect, - iBButtonMaskUp, - EFalse); - } - else - { - if ( aIndicate ) // Pressed the button - { - if ( iBButtonUp ) - { - iBButtonUp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPreviousPress); - iBButtonMaskUp = iOwner->GetBitmapDb()->GetBitMap( - CBitmapDb::EBitmapPreviousPressMask); - } - } - else // Release the button - { - if ( iBButtonUp ) - { - iBButtonUp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPrevious); - iBButtonMaskUp = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapPreviousMask); - } - } - - // Begin draw navigation next button - iOwner->DrawMask(iNavigationPreviousRect); - - // Activeate bitmap context - iOwner->ActivateBitmapContext(); - - // Clear rect - iOwner->Gc()->SetPenSize(iOwner->GetPenSize()); - iOwner->Gc()->SetPenStyle(CGraphicsContext::ESolidPen); - iOwner->Gc()->SetPenColor(iOwner->GetBorderColor()); - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - iOwner->Gc()->DrawRect( iNavigationPreviousRect ); - - // Draw bitmap - TRect rect = iNavigationPreviousRect; - rect.Shrink(TSize(1,1)); - - if (iOwner->GetCellHorizontalMargin() != 0) - { - rect.iBr.iX = rect.iBr.iX + 1; - } - - if (iOwner->GetCellVerticalMargin() != 0) - { - rect.iBr.iY = rect.iBr.iY + 1; - } - - iOwner->Gc()->DrawBitmapMasked(rect, iBButtonUp, - iBButtonUp->SizeInPixels(), iBButtonMaskUp, ETrue); - } - - iOwner->Invalidate(aRect); - - } - else if ( aRect == iNavigationNextRect ) - { - retval = ETrue; - - // Activeate bitmap context - iOwner->ActivateBitmapContext(); - - - if (iDropdownListDrawInfo.iSupportSkin) - { - TRect rect = iNavigationNextRect; - TRect innerRect = rect; - innerRect.Shrink( 4, 4 ); - - if ( aIndicate ) - { - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iPressedBtnImgID, - KAknsIIDDefault ); - } - else - { - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - iDropdownListDrawInfo.iNormalBtnImgID, - KAknsIIDDefault ); - } - - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNextMask); - - TRect srcRect( TPoint( 0, 0 ), iBButtonDown->SizeInPixels() ); - - iOwner->Gc()->BitBltMasked( iNavigationNextRect.iTl, - iBButtonDown, - srcRect, - iBButtonMaskDown, - EFalse); - } - else - { - if ( aIndicate ) // Pressed the button - { - if ( iBButtonDown ) - { - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNextPress); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap( - CBitmapDb::EBitmapNextPressMask); - } - } - else // Release the button - { - if ( iBButtonDown ) - { - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNext); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNextMask); - } - } - - // Begin draw navigation next button - iOwner->DrawMask(iNavigationNextRect); - - // Activeate bitmap context - iOwner->ActivateBitmapContext(); - - // Clear rect - iOwner->Gc()->SetPenSize(iOwner->GetPenSize()); - iOwner->Gc()->SetPenStyle(CGraphicsContext::ESolidPen); - iOwner->Gc()->SetPenColor(iOwner->GetBorderColor()); - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - iOwner->Gc()->DrawRect( iNavigationNextRect ); - - // Draw bitmap - TRect rect = iNavigationNextRect; - rect.Shrink(TSize(1,1)); - - if (iOwner->GetCellHorizontalMargin() != 0) - { - rect.iBr.iX = rect.iBr.iX + 1; - } - - if (iOwner->GetCellVerticalMargin() != 0) - { - rect.iBr.iY = rect.iBr.iY + 1; - } - - iOwner->Gc()->DrawBitmapMasked(rect, iBButtonDown, - iBButtonDown->SizeInPixels(), iBButtonMaskDown, ETrue); - } - - iOwner->Invalidate(aRect); - } - - return retval; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowwithiconwithbubble.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowwithiconwithbubble.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,361 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -// Include -#include -#include -#include -#include -#include -#include -#include "peninputlistmultirowwithicon.h" -#include "peninputlistmultirowwithiconwithbubble.h" -#include "peninputlayout.h" - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CListMultiRowWithIconWithBubble - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIconWithBubble::CListMultiRowWithIconWithBubble -// C++ default constructor can NOT contain any code, that -// might leave -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowWithIconWithBubble::CListMultiRowWithIconWithBubble(CListManager* aManager, - MFepCtrlDropdownListContext *aOwner) -: CListMultiRowWithIcon(aManager, aOwner) - { - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIconWithBubble::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowWithIconWithBubble* CListMultiRowWithIconWithBubble::NewL(CListManager* aManager, - MFepCtrlDropdownListContext *aOwner) - { - CListMultiRowWithIconWithBubble* self = new (ELeave) CListMultiRowWithIconWithBubble(aManager, aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIconWithBubble::~CListMultiRowWithIconWithBubble -// desstrutor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowWithIconWithBubble::~CListMultiRowWithIconWithBubble() - { - } - - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIconWithBubble::HandlePointerDownL -// handle pointer down -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithIconWithBubble::HandlePointerDownL(const TPoint& aPoint) - { - CList::HandlePointerDownL(aPoint); - - // also consider fuzzy boundry of drop down list - TRect fuzzyrect = iRect; - fuzzyrect.Grow(iOwner->FuzzyBoundry(), iOwner->FuzzyBoundry()); - - if (!fuzzyrect.Contains(aPoint)) - { - iOwner->SetCapture(EFalse); - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - iOwner->ClearBubble(); - return; - } - - // If click in navigation rect and NextButton is not disable, then do - if ( iNavigationRect.Contains(aPoint) ) - { - if ( iNavigationCloseRect.Contains(aPoint) && !iCloseButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif - - iClickedRect.SetRect(iNavigationCloseRect.iTl, iNavigationCloseRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else if (!iOwner->PageCtrlShown()) - { - iClickedRect = KDummyRect; - return; - } - else if ( iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif - - iClickedRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif - - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else - { - iClickedRect = KDummyRect; - } - } - else - { - TInt index = -1; - CCandidate* candidate = FindCandidate(aPoint, index); - if(candidate) - { - iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); - } - } - } - - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIconWithBubble::HandlePointerDragL -// handle pointer drag function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithIconWithBubble::HandlePointerDragL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDragL(aPoint); - - CCandidate* candidate = FindCandidate(aPoint, iClickedCandidateIndex); - - TBool isUpdateBubble = EFalse; - if ( candidate ) - { - if (iClickedRect != candidate->GetRect()) - {// move to the other candidate - // set update prview bubble flag - isUpdateBubble = ETrue; - // remenber the previous cell rect - iMoveLatestRect = iClickedRect; - // get the new cell rect - iClickedRect.SetRect(candidate->GetRect().iTl, candidate->GetRect().Size()); - } - } - else if ( iNavigationRect.Contains(aPoint) ) - { - iOwner->ClearBubble(); - if ( iNavigationCloseRect.Contains(aPoint) && !iCloseButtonDisable && - iClickedRect != iNavigationCloseRect) - { - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(iNavigationCloseRect.iTl, iNavigationCloseRect.iBr); - CompareRect(iMoveLatestRect, iClickedRect); - } - else if (!iOwner->PageCtrlShown()) - { - return; - } - else if ( iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable && - iClickedRect != iNavigationPreviousRect ) - { - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); - CompareRect(iMoveLatestRect, iClickedRect); - } - else if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable && - iClickedRect != iNavigationNextRect ) - { - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - CompareRect(iMoveLatestRect, iClickedRect); - } - else if(!((iNavigationCloseRect.Contains(aPoint) && !iCloseButtonDisable) || - (iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable) || - (iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable))) - { - // Move to navigation area but not valid navigation button - TRect dummyrect = KDummyRect; - if(iClickedRect != dummyrect) - { - iMoveLatestRect = iClickedRect; - iClickedRect = KDummyRect; - CompareRect(iMoveLatestRect, iClickedRect); - } - } - } - else - {// move to the aperture - // remember the previous cell - iMoveLatestRect = iClickedRect; - // set the new cell to empty - iClickedRect = KDummyRect; - // redraw the cell only when drag outside at the first time - if(iMoveLatestRect != iClickedRect) - { - iOwner->ClearBubble(); - DrawSelection(iMoveLatestRect, EFalse); - DrawHighightCell(iMoveLatestRect, ETrue); - } - } - - if(candidate && isUpdateBubble) - { - iOwner->ClearBubble(); - CompareRect(iMoveLatestRect, iClickedRect); - // Show preview bubble when drag into a candidate cell - // Make sure show the bubble after redraw clicked cell - iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); - } - - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIconWithBubble::HandlePointerUpL -// handle pointer up function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithIconWithBubble::HandlePointerUpL(const TPoint& aPoint) - { - // Reset the button clicked flag to EFalse - iIndicateButtonClicked = EFalse; - - iOwner->ClearBubble(); - -#ifdef __WINS__ - // in emulator, double click will be treated as: - // 1 pointer down and 2 pointer up, which will cause error - if (iClickedRect.IsEmpty() && ((CFepUiBaseCtrl*)iOwner)->PointerDown()) -#else - if (iClickedRect.IsEmpty()) -#endif // __WINS__ - { - iOwner->SetCapture(EFalse); - // Change active list object ie. close the dd-list - iOwner->AutoChangeActiveList( iOwner->GetFirstCandidateIndex() ); - } - else - { - if ( iContentRect.Contains(aPoint) ) - { - if ( iClickedRect.Contains(aPoint) ) - { - // Redraw the selected aread - DrawSelection(iClickedRect, EFalse); - - iOwner->SetCapture(EFalse); - - // We have selected a candidate and iClickedCandidateIndex is the selected Index. - // Send the candidate to others - if (iClickedCandidateIndex != KErrNotFound) - { - iOwner->AutoChangeActiveList( iOwner->GetFirstCandidateIndex() ); - CCandidate* candidate = iOwner->GetCandidate(iClickedCandidateIndex); - if ( candidate ) - { - iOwner->ReportCandidateSelectEventL(candidate->GetCandidate(), - iClickedCandidateIndex); - } - } - } - } - else if ( iNavigationCloseRect.Contains(aPoint) ) - { - if ( iNavigationCloseRect == iClickedRect ) - { - iOwner->SetCapture(EFalse); - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - } - } - else if (!iOwner->PageCtrlShown()) - { - iClickedRect = KEmptyRect; - return; - } - else if ( iNavigationNextRect.Contains(aPoint) ) - { - if ( iNavigationNextRect == iClickedRect ) - { - iOwner->NotifyGetNextPage(); - UpdateListL(); - } - } - else if ( iNavigationPreviousRect.Contains(aPoint) ) - { - if ( iNavigationPreviousRect == iClickedRect ) - { - // Change page to previous - iOwner->NotifyGetPreviousPage(); // do nothing, just to avoid clear candidate - - TInt firstIndex = 0; - TInt lastIndex = 0; - - if (iOwner->GetPages()->GetPreviousIndex(iOwner->GetLastCandidateIndex(), - firstIndex,lastIndex)) - { - iOwner->SetFirstCandidateIndex(firstIndex); - iOwner->SetLastCandidateIndex(lastIndex); - } - - UpdateListL(ETrue, EFalse); - } - } - - iClickedRect = KEmptyRect; - } - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithIconWithBubble::CompareRect -// Compare src and des rect -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CListMultiRowWithIconWithBubble::CompareRect(const TRect& aSrcRect, const TRect& aDesRect) - { - if(aSrcRect != aDesRect) - { - DrawSelection(aDesRect, ETrue); - DrawSelection(aSrcRect, EFalse); - DrawHighightCell(aSrcRect, ETrue); - } - - return EFalse; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowwithouticon.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistmultirowwithouticon.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,296 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Multi rows list without icon for drop-down list objects -* -*/ - - - -// Include -#include -#include - -#include "peninputlist.h" -#include "peninputlistmultirowwithouticon.h" - - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CListMultiRowWithoutIcon - -// ----------------------------------------------------------------------------- -// CListMultiRowWithoutIcon::CListMultiRowWithoutIcon -// C++ default constructor can NOT contain any code, that -// might leave -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowWithoutIcon::CListMultiRowWithoutIcon( CListManager* aManager, - MFepCtrlDropdownListContext *aOwner ) - :CList( aManager, aOwner ) - { - iIsMultiRows = ETrue; - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithoutIcon::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowWithoutIcon* CListMultiRowWithoutIcon::NewL( - CListManager* aManager, - MFepCtrlDropdownListContext *aOwner ) - { - CListMultiRowWithoutIcon* self - = new (ELeave) CListMultiRowWithoutIcon( aManager, aOwner ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithoutIcon::~CListMultiRowWithoutIcon -// desstrutor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListMultiRowWithoutIcon::~CListMultiRowWithoutIcon() - { - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithoutIcon::HandlePointerDragL -// handle pointer drag function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithoutIcon::HandlePointerDragL( const TPoint& aPoint ) - { - // Pass the event first to the base - CList::HandlePointerDragL( aPoint ); - - if ( !iClickedRect.IsEmpty() ) - { - // clicked rect is not outside the whole DDL - TInt index = -1; - - CCandidate* candidate = FindCandidate( aPoint, index ); - iMoveLatestRect = KEmptyRect; - - if ( candidate ) - { - // candidate exist - iMoveLatestRect.SetRect( candidate->GetRect().iTl, - candidate->GetRect().Size() ); - } - - // Compare the two rect, then decide draw it or not - CompareRect( iMoveLatestRect, iClickedRect ); - } - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithoutIcon::HandlePointerUpL -// handle pointer up function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithoutIcon::HandlePointerUpL( const TPoint& aPoint ) - { - // clicked rect is outside the whole DDL - if ( iClickedRect.IsEmpty() ) - { - iOwner->SetCapture( EFalse ); - // Change active list object ie. close the DDL - iOwner->AutoChangeActiveList( iOwner->GetFirstCandidateIndex() ); - } - else - { - if ( ( iContentRect.Contains( aPoint ) ) - && ( iClickedRect.Contains( aPoint ) ) ) - { - // Redraw the selected aread - DrawSelection( iClickedRect, EFalse ); - - iOwner->SetCapture( EFalse ); - - // We have selected a candidate and iClickedCandidateIndex is - // the selected Index. - // Send the candidate to others - if (iClickedCandidateIndex != KErrNotFound) - { - iOwner->AutoChangeActiveList( - iOwner->GetFirstCandidateIndex() ); - CCandidate* candidate = iOwner->GetCandidate( - iClickedCandidateIndex ); - if ( candidate ) - { - iOwner->ReportCandidateSelectEventL( - candidate->GetCandidate(), - iClickedCandidateIndex ); - } - } - } - - iClickedRect = KEmptyRect; - } - - iIndicateButtonClicked = EFalse; - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithoutIcon::Draw -// draw the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithoutIcon::Draw() - { - // Call draw in base class; - CList::Draw(); - - // Draw all visible candidates - DrawCandidates(); - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithoutIcon::CalculateAreas -// Calculate all kinds of rectangles -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithoutIcon::CalculateAreas() - { - // Calculate the rect of the list - iRect.iTl = iOwner->GetTopLeftPoint(); - TInt width = iOwner->GetCellWidth() * iOwner->GetColNum() + - iOwner->GetNaviWidth() + - (iOwner->GetColNum() + 2) * iOwner->GetCellHorizontalMargin(); - - TInt height = iOwner->GetCellHeight() * iOwner->GetRowNum() + - (iOwner->GetRowNum() + 1) * iOwner->GetCellVerticalMargin(); - - iRect.SetSize(TSize( width,height)); - - if (iOwner->CandExpandType() == CFepCtrlDropdownList::ECandExpandUpward) - { - // expand upward - TInt onerowheight = iOwner->GetCellHeight() + 2 * iOwner->GetCellVerticalMargin(); - iRect.Move(0, -(height - onerowheight)); - } - - // Calculate the rect of the content - iContentRect.iTl.SetXY(iRect.iTl.iX + iOwner->GetCellHorizontalMargin(), - iRect.iTl.iY + iOwner->GetCellVerticalMargin()); - - iContentRect.SetSize(TSize (width - 2 * iOwner->GetCellHorizontalMargin(), - height - 2 * iOwner->GetCellVerticalMargin())); - - // Initialized the rect of the navigation area and the down and up button - iNavigationRect = KEmptyRect; - iNavigationNextRect = KEmptyRect; - iNavigationPreviousRect = KEmptyRect; - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithoutIcon::CalculatePositionsL -// calculate the position of all visible cells in the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CListMultiRowWithoutIcon::CalculatePositionsL() - { - TInt lastCandidateIndex = iOwner->GetLastCandidateIndex(); - TInt count = iOwner->CandidateCount(); - - if ( count > 0 ) - { - TPoint setpoints; - TBool candHLToR = (iOwner->CandHDirection() == CFepCtrlDropdownList::ECandFromLToR); - candHLToR ? setpoints.SetXY(iContentRect.iTl.iX, iContentRect.iTl.iY) : - setpoints.SetXY(iContentRect.iBr.iX, iContentRect.iTl.iY); - - count = Min( count, lastCandidateIndex - + ( iOwner->GetColNum() + 1 ) * iOwner->GetRowNum() ); - - for ( TInt currentCellIndex = 0, - lastUsedCellCount = 0, - lastusedRow = 0; - lastCandidateIndex <= count; - lastCandidateIndex++ ) - { - // setting a position for this candidate - CCandidate* candidate = iOwner->GetCandidate( lastCandidateIndex ); - - if ( candidate ) - { - // each candidate exist - if ( currentCellIndex > iOwner->GetColNum() ) - { - // The cell index moved the edge of right - lastusedRow++; - if ( lastusedRow >= iOwner->GetRowNum() ) - { - // The row index moved bottom - break; - } - - currentCellIndex = 0; - - setpoints.iY = setpoints.iY + - iOwner->GetCellHeight() + - iOwner->GetCellVerticalMargin(); - - candHLToR ? (setpoints.iX = iContentRect.iTl.iX) : (setpoints.iX = iContentRect.iBr.iX); - } - - lastUsedCellCount = candidate->SetPositionL(setpoints, - iOwner->GetCellWidth(), - iOwner->GetCellHeight(), - iOwner->GetFont(), - iOwner->GetCellHorizontalMargin()); - - currentCellIndex += lastUsedCellCount; - candHLToR? (setpoints.iX += lastUsedCellCount*(iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())) : - (setpoints.iX -= lastUsedCellCount*(iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())); - } // if each candidate exist - } // for-loop - } // if candidate exist - - return lastCandidateIndex; // as lastCandidateIndex - } - -// ----------------------------------------------------------------------------- -// CListMultiRowWithoutIcon::UpdateList -// update the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListMultiRowWithoutIcon::UpdateListL( TBool aDrawFlag, TBool aRecalculate ) - { - if ( aRecalculate ) - { - // Recalculate the position of all candidates - iOwner->SetLastCandidateIndex( CalculatePositionsL() ); - } - if(aDrawFlag) - { - Draw(); - iOwner->Invalidate(iRect); - } - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowrollwithicon.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowrollwithicon.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,216 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -#include - -#include "peninputlistonerowrollwithicon.h" -#include "peninputcandidate.h" -#include "peninputdropdownlist.h" -#include "peninputlayout.h" - -const TInt KInvalidCandIndex = -1; - -CListOneRowRollWithIcon* CListOneRowRollWithIcon::NewL(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner) - { - CListOneRowRollWithIcon* self = new (ELeave) CListOneRowRollWithIcon(aManager, aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -CListOneRowRollWithIcon::~CListOneRowRollWithIcon() - { - } - -CListOneRowRollWithIcon::CListOneRowRollWithIcon(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner): - CListOneRowWithIcon(aManager, aOwner) - { - } - -// not needed anymore -// if candidate not enough to fill one row, -// just dim next button, but not hide it -/* -void CListOneRowRollWithIcon::Draw() - { - CList::Draw(); - DrawCandidates(); - - if (!iNextButtonDisable) - { - //Clear bg for iNavigationNextRect - iOwner->Gc()->SetPenSize(iOwner->GetPenSize()); - iOwner->Gc()->SetPenStyle(CGraphicsContext::ESolidPen); - - iOwner->Gc()->SetPenColor(iOwner->GetBorderColor()); - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - iOwner->Gc()->DrawRect( iNavigationNextRect ); - - TRect rect = iNavigationNextRect; - rect.Shrink(1, 1); - - iOwner->Gc()->DrawBitmapMasked(rect, - iBButtonDown, - iBButtonDown->SizeInPixels(), - iBButtonMaskDown, - ETrue); - } - - iOwner->Invalidate(iRect); - } -*/ - -void CListOneRowRollWithIcon::HandlePointerDownL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDownL(aPoint); - - // If click in NextButton, and it is not disable, then do - if (iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif //RD_TACTILE_FEEDBACK - // If click in down button and the down button is enabled - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - } - -void CListOneRowRollWithIcon::HandlePointerUpL(const TPoint& aPoint) - { - iIndicateButtonClicked = EFalse; - - if (!iClickedRect.IsEmpty()) - { - // Find out which rectangle was clicked and save it for - // later usage (HandlePointerUpL) - if (iContentRect.Contains(aPoint)) - { - // The point is inside the content rect - // Check whether the point is inside the same last clicked - // candidate rectangle - if (iClickedRect.Contains(aPoint)) - { - if (iClickedCandidateIndex != KErrNotFound) - { - // Redraw the selected aread - DrawSelection(iClickedRect, EFalse); - - // We have selected a candidate and iClickedCandidateIndex is the selected Index. - // Then send message to plugin - CCandidate* candidate = iOwner->GetCandidate(iClickedCandidateIndex); - if ( candidate ) - { - iOwner->ReportCandidateSelectEventL(candidate->GetCandidate(), - iClickedCandidateIndex); - } - } - } - } - else if ((iNavigationNextRect == iClickedRect) && !iNextButtonDisable) - { - TInt originalFirstCandIndex = iOwner->GetOriginalFirstCandIdx(); - - if ((iOwner->ListType() == CFepCtrlDropdownList::EListExpandableRollWithIcon) && - (originalFirstCandIndex != KInvalidCandIndex)) - { - iOwner->AutoChangeActiveList(originalFirstCandIndex); - } - else - { - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - } - - iOwner->SetCapture(ETrue); - } - - iClickedRect = KEmptyRect; - } - } - -void CListOneRowRollWithIcon::HandlePointerDragL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDragL(aPoint); - - if (iIndicateButtonClicked) // clicked rect is not outside the whole DDL - { - iMoveLatestRect = KEmptyRect; - - if (iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable) - { - // If click in down button and the down button is enabled - iMoveLatestRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - } - else if (iContentRect.Contains(aPoint)) - { - TInt index = -1; - CCandidate* candidate = FindCandidate(aPoint, index); - - if ( candidate ) - { - // If click in candidates area - iMoveLatestRect.SetRect(candidate->GetRect().iTl, candidate->GetRect().Size()); - } - else - { - iMoveLatestRect = KEmptyRect; - } - } - - CompareRect(iMoveLatestRect, iClickedRect); - } - } - -void CListOneRowRollWithIcon::SetHighlightCell(const TInt aCellIndex, - TBool aHighlight, - TBool aForceDraw) - { - if (aCellIndex < iOwner->GetLastCandidateIndex()) - { - CList::SetHighlightCell(aCellIndex, aHighlight, aForceDraw); - } - else if ((iOwner->GetLastCandidateIndex() > 0) && - aHighlight) - { - TInt originalFirstCandIndex = iOwner->GetOriginalFirstCandIdx(); - - iOwner->SetUpdateListReDrawFlag(EFalse); - - if ((iOwner->ListType() == CFepCtrlDropdownList::EListExpandableRollWithIcon) && - (originalFirstCandIndex != KInvalidCandIndex)) - { - iOwner->AutoChangeActiveList(originalFirstCandIndex); - } - else - { - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - } - - TRAP_IGNORE(iOwner->ActiveList()->SetNextPageHighlightCellAfterOnePageL(aCellIndex)); - - iOwner->SetUpdateListReDrawFlag(ETrue); - } - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowrollwithiconwithbubble.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowrollwithiconwithbubble.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,260 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#include - -#include "peninputlistonerowrollwithiconwithbubble.h" -#include "peninputcandidate.h" -#include "peninputdropdownlist.h" -#include "peninputlayout.h" - -const TInt KInvalidCandIndex = -1; - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CListOneRowRollWithIconWithBubble - -// ----------------------------------------------------------------------------- -// CListOneRowRollWithIconWithBubble::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowRollWithIconWithBubble* CListOneRowRollWithIconWithBubble::NewL(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner) - { - CListOneRowRollWithIconWithBubble* self = new (ELeave) CListOneRowRollWithIconWithBubble(aManager, aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CListOneRowRollWithIconWithBubble::~CListOneRowRollWithIconWithBubble -// desstrutor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowRollWithIconWithBubble::~CListOneRowRollWithIconWithBubble() - { - } - -// ----------------------------------------------------------------------------- -// CListOneRowRollWithIconWithBubble::CListOneRowRollWithIconWithBubble -// C++ default constructor can NOT contain any code, that -// might leave -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowRollWithIconWithBubble::CListOneRowRollWithIconWithBubble(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner): - CListOneRowRollWithIcon(aManager, aOwner) - { - } - -// ----------------------------------------------------------------------------- -// CListOneRowRollWithIconWithBubble::HandlePointerDownL -// handle pointer down function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowRollWithIconWithBubble::HandlePointerDownL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDownL(aPoint); - - // If click in NextButton, and it is not disable, then do - if (iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif - - // If click in down button and the down button is enabled - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else - { - TInt index = -1; - CCandidate* candidate = FindCandidate(aPoint, index); - if(candidate) - { - iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); - } - } - } - -// ----------------------------------------------------------------------------- -// CListOneRowRollWithIconWithBubble::HandlePointerUpL -// handle pointer up function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowRollWithIconWithBubble::HandlePointerUpL(const TPoint& aPoint) - { - iIndicateButtonClicked = EFalse; - - if (!iClickedRect.IsEmpty()) - { - // Find out which rectangle was clicked and save it for - // later usage (HandlePointerUpL) - if (iContentRect.Contains(aPoint)) - { - // The point is inside the content rect - // Check whether the point is inside the same last clicked - // candidate rectangle - if (iClickedRect.Contains(aPoint)) - { - if (iClickedCandidateIndex != KErrNotFound) - { - // Redraw the selected aread - DrawSelection(iClickedRect, EFalse); - - // We have selected a candidate and iClickedCandidateIndex is the selected Index. - // Then send message to plugin - CCandidate* candidate = iOwner->GetCandidate(iClickedCandidateIndex); - if ( candidate ) - { - iOwner->ReportCandidateSelectEventL(candidate->GetCandidate(), - iClickedCandidateIndex); - } - } - } - } - else if ((iNavigationNextRect == iClickedRect) && !iNextButtonDisable) - { - TInt originalFirstCandIndex = iOwner->GetOriginalFirstCandIdx(); - - if ((iOwner->ListType() == CFepCtrlDropdownList::EListExpandableRollWithIconWithBubble) && - (originalFirstCandIndex != KInvalidCandIndex)) - { - iOwner->AutoChangeActiveList(originalFirstCandIndex); - } - else - { - iOwner->AutoChangeActiveList(iOwner->GetFirstCandidateIndex()); - } - - iOwner->SetCapture(ETrue); - } - - iClickedRect = KEmptyRect; - } - iOwner->ClearBubble(); - } - -// ----------------------------------------------------------------------------- -// CListOneRowRollWithIconWithBubble::HandlePointerDragL -// handle pointer drag function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowRollWithIconWithBubble::HandlePointerDragL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDragL(aPoint); - - if (iIndicateButtonClicked) // clicked rect is not outside the whole DDL - { - if ( iNavigationRect.Contains(aPoint) ) - { - iOwner->ClearBubble(); - - if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable && - iNavigationNextRect != iClickedRect ) - { - // If click in down button and the down button is enabled - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - } - } - else if (iContentRect.Contains(aPoint)) - { - CCandidate* candidate = FindCandidate(aPoint, iClickedCandidateIndex); - - if ( candidate ) - { - // If click in candidates area - if(iClickedRect != candidate->GetRect()) - { - // Reset clicked rect when move to other candidate. - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(candidate->GetRect().iTl, candidate->GetRect().Size()); - - iOwner->ClearBubble(); - iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); - } - } - else - { - iOwner->ClearBubble(); - iMoveLatestRect = iClickedRect; - - iClickedRect = KEmptyRect; - } - } - else - { - CompareRect(iClickedRect, iMoveLatestRect); - iOwner->ClearBubble(); - iClickedRect = KEmptyRect; - iMoveLatestRect = iClickedRect; - } - - CompareRect(iMoveLatestRect, iClickedRect); - } - } - -// ----------------------------------------------------------------------------- -// CListOneRowRollWithIconWithBubble::HandlePointerLeave -// handle pointer leave function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowRollWithIconWithBubble::HandlePointerLeave(const TPoint& /*aPoint*/) - { - iMoveLatestRect = iClickedRect; - iClickedRect = KEmptyRect; - DrawSelection( iMoveLatestRect, EFalse ); - DrawHighightCell(iMoveLatestRect, ETrue); - } - -// ----------------------------------------------------------------------------- -// CListOneRowRollWithIconWithBubble::CompareRect -// Compare src and des rect -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CListOneRowRollWithIconWithBubble::CompareRect(const TRect& aSrcRect, const TRect& aDesRect) - { - if(aSrcRect != aDesRect) - { - DrawSelection(aDesRect, ETrue); - DrawSelection(aSrcRect, EFalse); - DrawHighightCell(aSrcRect, ETrue); - } - - return EFalse; - - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowwithicon.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowwithicon.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,563 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: One rows list with icon for drop-down list objects -* -*/ - - -// Include -#include -#include -#include -#include - -#include - -#include "peninputlistonerowwithicon.h" -#include "peninputcandidate.h" -#include "peninputdropdownlist.h" -#include "peninputlayout.h" - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CListOneRowWithIcon - -// ----------------------------------------------------------------------------- -// CListOneRowWithIcon::CListOneRowWithIcon -// C++ default constructor can NOT contain any code, that -// might leave -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithIcon::CListOneRowWithIcon(CListManager* aManager, - MFepCtrlDropdownListContext *aOwner) -: CList(aManager, aOwner) - { - iIsMultiRows = EFalse ; - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIcon::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithIcon* CListOneRowWithIcon::NewL(CListManager* aManager, - MFepCtrlDropdownListContext *aOwner) - { - CListOneRowWithIcon* self = new (ELeave) CListOneRowWithIcon(aManager, aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIcon::~CListOneRowWithIcon -// desstrutor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithIcon::~CListOneRowWithIcon() - { - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIcon::HandlePointerDownL -// handle pointer down -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithIcon::HandlePointerDownL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDownL(aPoint); - - // If click in navigation rect and NextButton is not disable, then do - if ( iNavigationRect.Contains(aPoint) ) - { - if ( (iOwner->GetLastCandidateIndex() < iOwner->CandidateCount()) - || ( iOwner->GetPages()->PageCount() > 1 ) ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif //RD_TACTILE_FEEDBACK - } - - if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable ) - { - // If click in down button and the down button is enabled - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else if ( iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable ) - { - // If click in up button and the up button is enabled - iClickedRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - } - } - - -// ----------------------------------------------------------------------------- -// CListOneRowWithIcon::HandlePointerDragL -// handle pointer drag function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithIcon::HandlePointerDragL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDragL(aPoint); - - if ( iIndicateButtonClicked ) // clicked rect is not outside the whole DDL - { - iMoveLatestRect = KEmptyRect; - - if ( iNavigationRect.Contains(aPoint) ) - { - if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable ) - { - // If click in down button and the down button is enabled - iMoveLatestRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - } - else if ( iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable ) - { - // If click in up button and the up button is enabled - iMoveLatestRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); - } - } - else if ( iContentRect.Contains(aPoint) ) - { - TInt index = -1; - CCandidate* candidate = FindCandidate(aPoint, index); - - if ( candidate ) - { - // If click in candidates area - iMoveLatestRect.SetRect(candidate->GetRect().iTl, candidate->GetRect().Size()); - } - else - { - iMoveLatestRect = KEmptyRect; - } - } - - CompareRect(iMoveLatestRect, iClickedRect); - } - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIcon::HandlePointerUpL -// handle pointer up function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithIcon::HandlePointerUpL(const TPoint& aPoint) - { - // Reset the button clicked flag to EFalse - iIndicateButtonClicked = EFalse; - - if ( !iClickedRect.IsEmpty() ) - { - // Find out which rectangle was clicked and save it for - // later usage (HandlePointerUpL) - if ( iContentRect.Contains(aPoint) ) - { - // The point is inside the content rect - // Check whether the point is inside the same last clicked - // candidate rectangle - if ( iClickedRect.Contains(aPoint) ) - { - if ( iClickedCandidateIndex != KErrNotFound ) - { - // Redraw the selected aread - DrawSelection(iClickedRect, EFalse); - - // We have selected a candidate and iClickedCandidateIndex is the selected Index. - // Then send message to plugin - CCandidate* candidate = iOwner->GetCandidate(iClickedCandidateIndex); - if ( candidate ) - { - iOwner->ReportCandidateSelectEventL(candidate->GetCandidate(), - iClickedCandidateIndex); - } - } - } - } - else if ( iNavigationRect.Contains(aPoint) ) - { - if ( iNavigationRect == iClickedRect ) - { - iOwner->AutoChangeActiveList( iOwner->GetFirstCandidateIndex() ); - iOwner->SetCapture(ETrue); - } - } - - iClickedRect = KEmptyRect; - } - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIcon::Draw -// draw the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithIcon::Draw() - { - CList::Draw(); - - DrawCandidates(); - - DrawSelection(iClickedRect, ETrue); - - if (iDropdownListDrawInfo.iSupportSkin) - { - //mask bitmaps - TRect rect = iNavigationNextRect; - TRect innerRect = rect; - innerRect.Shrink( 4, 4 ); - - // ----- draw bitmaps ----- - - - TAknsItemID expandBtnImgID; - CBitmapDb::TBitmapType bitmapType; - - if ( (iOwner->GetLastCandidateIndex() >= iOwner->CandidateCount()) - && ( iOwner->GetPages()->PageCount() < 1 ) ) - { - expandBtnImgID = iDropdownListDrawInfo.iInactiveBtnImgID; - bitmapType = CBitmapDb::EBitmapNextDisableMask; - } - else - { - expandBtnImgID = iDropdownListDrawInfo.iNormalBtnImgID; - bitmapType = CBitmapDb::EBitmapNextMask; - } - - // Draw background - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - expandBtnImgID, - KAknsIIDDefault ); - - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(bitmapType); - TRect srcRect( TPoint( 0, 0 ), iBButtonDown->SizeInPixels() ); - iOwner->Gc()->BitBltMasked( iNavigationNextRect.iTl, - iBButtonDown, - srcRect, - iBButtonMaskDown, - EFalse); - - } - else - { - //Clear bg for iNavigationNextRect - iOwner->Gc()->SetPenSize(iOwner->GetPenSize()); - iOwner->Gc()->SetPenStyle(CGraphicsContext::ESolidPen); - - iOwner->Gc()->SetPenColor(iOwner->GetBorderColor()); - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - iOwner->Gc()->DrawRect( iNavigationNextRect ); - - //Draw navigation bitmap - TRect rect = iNavigationNextRect; - rect.Shrink(1, 1); - iOwner->Gc()->DrawBitmapMasked(rect, iBButtonDown, - iBButtonDown->SizeInPixels(), iBButtonMaskDown, ETrue); - } - - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIcon::UpdateList -// update the liset -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithIcon::UpdateListL(TBool aDrawFlag, TBool aRecalculate) - { - if (aRecalculate) - { - iOwner->SetLastCandidateIndex(CalculatePositionsL()); - } - - if ( (iOwner->GetLastCandidateIndex() >= iOwner->CandidateCount()) - && ( iOwner->GetPages()->PageCount() < 1 ) ) - { - iNextButtonDisable = ETrue; - - //Set disable bitmap for button down and buttondown mask - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNextDisable); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNextDisableMask); - } - else - { - iNextButtonDisable = EFalse; - - //Set enable bitmap for button down and buttondown mask - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapExpand); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapExpandMask); - - if (!iBButtonDown) - { - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNext); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNextMask); - } - } - if(aDrawFlag) - { - Draw(); - iOwner->Invalidate(iRect); - } - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIcon::CalculateAreas -// Calculate all kinds of rectangles -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithIcon::CalculateAreas() - { - // Calculate the rect of the list - iRect.iTl = iOwner->GetTopLeftPoint(); - TInt width = iOwner->GetCellWidth() * iOwner->GetColNum() + iOwner->GetNaviWidth() + - (iOwner->GetColNum() + 2) * iOwner->GetCellHorizontalMargin(); - - TInt height = iOwner->GetCellHeight() + 2 * iOwner->GetCellVerticalMargin(); - - iRect.SetSize(TSize(width, height)); - - TBool candHLToR = (iOwner->CandHDirection() == CFepCtrlDropdownList::ECandFromLToR); - TInt posX = iRect.iTl.iX + iOwner->GetCellHorizontalMargin(); - TInt posY = iRect.iTl.iY + iOwner->GetCellVerticalMargin(); - // width of content rect - TInt widthC = iOwner->GetCellWidth() * iOwner->GetColNum() + (iOwner->GetColNum() - 1) * iOwner->GetCellHorizontalMargin(); - height = iOwner->GetCellHeight(); - // width of navi rect - TInt widthN = iOwner->GetNaviWidth(); - - if (candHLToR) - { - iContentRect.iTl.SetXY(posX, posY); - iNavigationRect.iTl.SetXY(posX + widthC + iOwner->GetCellHorizontalMargin(), - posY); - } - else - { - iNavigationRect.iTl.SetXY(posX, posY); - iContentRect.iTl.SetXY(posX + widthN + iOwner->GetCellHorizontalMargin(), - posY); - } - - // Calculate the rect of the content - iContentRect.SetSize(TSize(widthC, height)); - - // Calculate the rect of the navigation area - iNavigationRect.SetSize(TSize(widthN, height)); - // Calculate the rect of the down button - iNavigationNextRect = iNavigationRect; - // Calculate the rect of the up button - iNavigationPreviousRect = TRect(0,0,0,0); - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIcon::CalculatePositionsL -// calculate the position of all visible cells in the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CListOneRowWithIcon::CalculatePositionsL() - { - TInt t = 0; - TPoint setpoints; - - //RArray& candidates = iOwner->GetCandidatelist; - TInt count = iOwner->CandidateCount(); - - iOwner->SetFirstCandidateIndex(iOwner->GetLastCandidateIndex()); - - if ( count > 0 ) - { - TBool candHLToR = (iOwner->CandHDirection() == CFepCtrlDropdownList::ECandFromLToR); - candHLToR ? setpoints.SetXY(iContentRect.iTl.iX, iContentRect.iTl.iY) : - setpoints.SetXY(iContentRect.iBr.iX, iContentRect.iTl.iY); - - TInt lastUsedCellCount = 0; - TInt currentCellIndex = 0; - count = Min(count,iOwner->GetLastCandidateIndex() + iOwner->GetColNum()); - - for(t = iOwner->GetLastCandidateIndex(); t < count ; t++) - { - // setting a position for this candidate - CCandidate* candidate = iOwner->GetCandidate(t); - - if ( !candidate ) - { - continue; - } - - lastUsedCellCount = candidate->SetPositionL(setpoints, - iOwner->GetCellWidth(), - iOwner->GetCellHeight(), - iOwner->GetFont(), - iOwner->GetCellHorizontalMargin()); - currentCellIndex += lastUsedCellCount; - - if (currentCellIndex > iOwner->GetColNum()) - { - break; - } - - candHLToR ? (setpoints.iX += lastUsedCellCount * (iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())) : - (setpoints.iX -= lastUsedCellCount * (iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin())) ; - } // for-loop - } // if candidate exist - - return t; // as lastCandidateIndex - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIcon::DrawNavigationPress -// draw navigation button when pressed or un-pressed -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CListOneRowWithIcon::DrawNavigationPress(const TRect& aRect,TBool aIndicate) - { - TBool retval = EFalse; - - if ( aRect == iNavigationNextRect ) - { - retval = ETrue; - if (iDropdownListDrawInfo.iSupportSkin) - { - TRect rect = iNavigationNextRect; - TRect innerRect = rect; - innerRect.Shrink( 4, 4 ); - - - TAknsItemID expandBtnImgID; - if ( aIndicate ) - { - expandBtnImgID = iDropdownListDrawInfo.iPressedBtnImgID; - } - else - { - expandBtnImgID = iDropdownListDrawInfo.iNormalBtnImgID; - } - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *iOwner->Gc(), - rect, - innerRect, - expandBtnImgID, - KAknsIIDDefault ); - - - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapExpand); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapExpandMask); - - if (!iBButtonDown) - { - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNext); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNextMask); - } - - TRect srcRect( TPoint( 0, 0 ), iBButtonDown->SizeInPixels() ); - - iOwner->Gc()->BitBltMasked( iNavigationNextRect.iTl, - iBButtonDown, - srcRect, - iBButtonMaskDown, - EFalse); - } - else - { - if ( aIndicate ) - { - // NEXT PRESSED DOWN - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapExpandPress); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap( - CBitmapDb::EBitmapExpandPressMask); - - if (!iBButtonDown) - { - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNextPress); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap( - CBitmapDb::EBitmapNextPressMask); - } - } - else - { - // NEXT ORIGINAL - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapExpand); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapExpandMask); - - if (!iBButtonDown) - { - iBButtonDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNext); - iBButtonMaskDown = iOwner->GetBitmapDb()->GetBitMap(CBitmapDb::EBitmapNextMask); - } - } - - // Begin draw navigation next button - iOwner->DrawMask(iNavigationNextRect); - - // Activeate bitmap context - iOwner->ActivateBitmapContext(); - - // Clear rect - iOwner->Gc()->SetPenSize(iOwner->GetPenSize()); - iOwner->Gc()->SetPenStyle(CGraphicsContext::ESolidPen); - iOwner->Gc()->SetPenColor(iOwner->GetBorderColor()); - iOwner->Gc()->SetBrushColor(iOwner->GetBgColor()); - iOwner->Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush ); - iOwner->Gc()->DrawRect( iNavigationNextRect ); - - // Draw bitmap - TRect rect = iNavigationNextRect; - rect.Shrink(TSize(1,1)); - - if (iOwner->GetCellHorizontalMargin() != 0) - { - rect.iBr.iX = rect.iBr.iX + 1; - } - - if (iOwner->GetCellVerticalMargin() != 0) - { - rect.iBr.iY = rect.iBr.iY + 1; - } - - iOwner->Gc()->DrawBitmapMasked(rect, iBButtonDown, - iBButtonDown->SizeInPixels(), iBButtonMaskDown, ETrue); - } - - iOwner->Invalidate(aRect); - } - - - return retval; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowwithiconwithbubble.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowwithiconwithbubble.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,276 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -// Include -#include -#include -#include -#include - -#include - -#include "peninputlistonerowwithiconwithbubble.h" -#include "peninputcandidate.h" -#include "peninputdropdownlist.h" -#include "peninputlayout.h" - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CListOneRowWithIconWithBubble - -// ----------------------------------------------------------------------------- -// CListOneRowWithIconWithBubble::CListOneRowWithIconWithBubble -// C++ default constructor can NOT contain any code, that -// might leave -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithIconWithBubble::CListOneRowWithIconWithBubble(CListManager* aManager, - MFepCtrlDropdownListContext *aOwner) -: CListOneRowWithIcon(aManager, aOwner) - { - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIconWithBubble::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithIconWithBubble* CListOneRowWithIconWithBubble::NewL(CListManager* aManager, - MFepCtrlDropdownListContext *aOwner) - { - CListOneRowWithIconWithBubble* self = new (ELeave) CListOneRowWithIconWithBubble(aManager, aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIconWithBubble::~CListOneRowWithIconWithBubble -// desstrutor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithIconWithBubble::~CListOneRowWithIconWithBubble() - { - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIconWithBubble::HandlePointerDownL -// handle pointer down -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithIconWithBubble::HandlePointerDownL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDownL(aPoint); - - // If click in navigation rect and NextButton is not disable, then do - if ( iNavigationRect.Contains(aPoint) ) - { - if ( (iOwner->GetLastCandidateIndex() < iOwner->CandidateCount()) - || ( iOwner->GetPages()->PageCount() > 1 ) ) - { - #ifdef RD_TACTILE_FEEDBACK - static_cast(iOwner)->UiLayout()-> - DoTactileFeedback(ETouchFeedbackBasic); - #endif - } - - if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable ) - { - // If click in down button and the down button is enabled - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - else if ( iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable ) - { - // If click in up button and the up button is enabled - iClickedRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); - iIndicateButtonClicked = ETrue; - DrawSelection(iClickedRect, ETrue); - } - } - else - { - TInt index = -1; - CCandidate* candidate = FindCandidate(aPoint, index); - if(candidate) - { - iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); - } - } - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIconWithBubble::HandlePointerDragL -// handle pointer drag function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithIconWithBubble::HandlePointerDragL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDragL(aPoint); - - if ( iIndicateButtonClicked ) // clicked rect is not outside the whole DDL - { - if ( iNavigationRect.Contains(aPoint) ) - { - iOwner->ClearBubble(); - - if ( iNavigationNextRect.Contains(aPoint) && !iNextButtonDisable && - iNavigationNextRect != iClickedRect ) - { - // If click in down button and the down button is enabled - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(iNavigationNextRect.iTl, iNavigationNextRect.iBr); - } - else if ( iNavigationPreviousRect.Contains(aPoint) && !iPreviousButtonDisable && - iNavigationPreviousRect != iClickedRect ) - { - // If click in up button and the up button is enabled - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(iNavigationPreviousRect.iTl, iNavigationPreviousRect.iBr); - } - } - else if ( iContentRect.Contains(aPoint) ) - { - CCandidate* candidate = FindCandidate(aPoint, iClickedCandidateIndex); - - if ( candidate ) - { - // If click in candidates area - if(iClickedRect != candidate->GetRect()) - { - // Reset clicked rect when move to other candidate. - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(candidate->GetRect().iTl, candidate->GetRect().Size()); - - iOwner->ClearBubble(); - iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); - } - } - else - { - iOwner->ClearBubble(); - iMoveLatestRect = iClickedRect; - - iClickedRect = KEmptyRect; - } - } - else - { - CompareRect(iClickedRect, iMoveLatestRect); - iOwner->ClearBubble(); - iClickedRect = KEmptyRect; - iMoveLatestRect = iClickedRect; - } - CompareRect(iMoveLatestRect, iClickedRect); - } - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIconWithBubble::HandlePointerUpL -// handle pointer up function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithIconWithBubble::HandlePointerUpL(const TPoint& aPoint) - { - // Reset the button clicked flag to EFalse - iIndicateButtonClicked = EFalse; - - if ( !iClickedRect.IsEmpty() ) - { - // Find out which rectangle was clicked and save it for - // later usage (HandlePointerUpL) - if ( iContentRect.Contains(aPoint) ) - { - // The point is inside the content rect - // Check whether the point is inside the same last clicked - // candidate rectangle - - if ( iClickedRect.Contains(aPoint) ) - { - if ( iClickedCandidateIndex != KErrNotFound ) - { - // Redraw the selected aread - DrawSelection(iClickedRect, EFalse); - - // We have selected a candidate and iClickedCandidateIndex is the selected Index. - // Then send message to plugin - CCandidate* candidate = iOwner->GetCandidate(iClickedCandidateIndex); - if ( candidate ) - { - iOwner->ReportCandidateSelectEventL(candidate->GetCandidate(), - iClickedCandidateIndex); - } - } - } - } - else if ( iNavigationRect.Contains(aPoint) ) - { - if ( iNavigationRect == iClickedRect ) - { - iOwner->AutoChangeActiveList( iOwner->GetFirstCandidateIndex() ); - iOwner->SetCapture(ETrue); - } - } - - iClickedRect = KEmptyRect; - } - iOwner->ClearBubble(); - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIconWithBubble::HandlePointerLeave -// handle pointer leave function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithIconWithBubble::HandlePointerLeave(const TPoint& /*aPoint*/) - { - iMoveLatestRect = iClickedRect; - iClickedRect = KEmptyRect; - DrawSelection( iMoveLatestRect, EFalse ); - DrawHighightCell(iMoveLatestRect, ETrue); - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithIconWithBubble::CompareRect -// Compare src and des rect -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CListOneRowWithIconWithBubble::CompareRect(const TRect& aSrcRect, const TRect& aDesRect) - { - if(aSrcRect != aDesRect) - { - DrawSelection(aDesRect, ETrue); - DrawSelection(aSrcRect, EFalse); - DrawHighightCell(aSrcRect, ETrue); - } - - return EFalse; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowwithouticon.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowwithouticon.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,284 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: One rows list with icon for drop-down list objects -* -*/ - - -// Include -#include "peninputlistonerowwithouticon.h" -#include "peninputcandidate.h" - -#include -#include - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CListOneRowWithoutIcon - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIcon::CListOneRowWithoutIcon -// C++ default constructor can NOT contain any code, that -// might leave -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithoutIcon::CListOneRowWithoutIcon(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner) -:CList(aManager, aOwner) - { - iIsMultiRows = EFalse; - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIcon::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithoutIcon* CListOneRowWithoutIcon::NewL(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner) - { - CListOneRowWithoutIcon* self = new (ELeave) CListOneRowWithoutIcon(aManager, aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIcon::~CListOneRowWithoutIcon -// desstrutor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithoutIcon::~CListOneRowWithoutIcon() - { - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIcon::HandlePointerDownL -// handle pointer down -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithoutIcon::HandlePointerDownL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDownL(aPoint); - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIcon::HandlePointerDragL -// handle pointer drag function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithoutIcon::HandlePointerDragL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDragL(aPoint); - - // If the mouse have click in the area of DDL - if ( iIndicateButtonClicked ) - { - TInt index = -1; - - CCandidate* candidate = FindCandidate(aPoint, index); - iMoveLatestRect = KEmptyRect; - - if ( candidate ) - { - iMoveLatestRect.SetRect(candidate->GetRect().iTl, candidate->GetRect().Size()); - } - - // Compare the two rect, then decide draw it or not - CompareRect(iMoveLatestRect, iClickedRect); - } - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIcon::HandlePointerUpL -// handle pointer up function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithoutIcon::HandlePointerUpL(const TPoint& aPoint) - { - if ( !iClickedRect.IsEmpty() ) - { - // Find out which rectangle was clicked and save it for - // later usage (HandlePointerUpL) - if ( iContentRect.Contains( aPoint ) ) - { - if ( iClickedRect.Contains( aPoint ) ) - { - if ( iClickedCandidateIndex != KErrNotFound ) - { - // Redraw the selection rect - DrawSelection( iClickedRect, EFalse ); - - // We have selected a candidate - // Send message to plugin - CCandidate* candidate = iOwner->GetCandidate(iClickedCandidateIndex); - if ( candidate ) - { - iOwner->ReportCandidateSelectEventL(candidate->GetCandidate(), - iClickedCandidateIndex); - } - - } - } - - iIndicateButtonClicked = EFalse; - } - - iClickedRect = KEmptyRect; - } - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIcon::Draw -// draw the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithoutIcon::Draw() - { - CList::Draw(); - - // Draw all visible candidates - DrawCandidates(); - DrawSelection(iClickedRect, ETrue); - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIcon::CalculateAreas -// Calculate all kinds of rectangles -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithoutIcon::CalculateAreas() - { - // Calculate the rect of the list - iRect.iTl = iOwner->GetTopLeftPoint(); - TInt width = iOwner->GetCellWidth() * iOwner->GetColNum() + iOwner->GetNaviWidth() + - (iOwner->GetColNum() + 2) * iOwner->GetCellHorizontalMargin(); - TInt height = iOwner->GetCellHeight() + 2 * iOwner->GetCellVerticalMargin(); - - iRect.SetSize(TSize(width,height)); - - // Calculate the rect of the content - iContentRect.iTl = TPoint(iRect.iTl.iX + iOwner->GetCellHorizontalMargin(), - iRect.iTl.iY + iOwner->GetCellVerticalMargin()); - iContentRect.SetSize(TSize(width - 2 * iOwner->GetCellHorizontalMargin(), - iOwner->GetCellHeight())); - - // Calculate the rect of the navigation area - iNavigationRect = TRect(0,0,0,0); - - // Calculate the rect of the down button - iNavigationNextRect = TRect(0,0,0,0); - - // Calculate the rect of the up button - iNavigationPreviousRect = TRect(0,0,0,0); - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIcon::CalculatePositionsL -// calculate the position of all visible cells in the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CListOneRowWithoutIcon::CalculatePositionsL() - { - TInt t = 0; - TPoint setpoints; - - const TInt count = iOwner->CandidateCount(); - - // First store the last index - iOwner->SetFirstCandidateIndex ( iOwner->GetLastCandidateIndex() ); - - if ( count > 0 ) - { - // Initial the position to iContentRect - /* - setpoints.iX = iContentRect.iTl.iX; - setpoints.iY = iContentRect.iTl.iY; - */ - TBool candHLToR = (iOwner->CandHDirection() == CFepCtrlDropdownList::ECandFromLToR); - candHLToR ? setpoints.SetXY(iContentRect.iTl.iX, iContentRect.iTl.iY) : - setpoints.SetXY(iContentRect.iBr.iX, iContentRect.iTl.iY); - - TInt cellNumberInOneRow = iOwner->GetColNum() + 1; - TInt lastUsedCellCount = 0; - TInt currentCellIndex = 0; - TInt newCount = 0; - - newCount = Min(count,iOwner->GetLastCandidateIndex() + cellNumberInOneRow); - - for( t = iOwner->GetLastCandidateIndex(); t < newCount ; t++ ) - { - // setting a position for this candidate - CCandidate* candidate = iOwner->GetCandidate(t); - - if ( !candidate ) - { - continue; - } - - lastUsedCellCount = candidate->SetPositionL(setpoints, - iOwner->GetCellWidth(), - iOwner->GetCellHeight(), - iOwner->GetFont(), - iOwner->GetCellHorizontalMargin()); - currentCellIndex += lastUsedCellCount; - - if ( currentCellIndex > ( iOwner->GetColNum() + 1 ) ) - { - // If no space to contain other cells - break; - } - - // Recalcuate the x position - candHLToR? (setpoints.iX += (iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin()) * lastUsedCellCount) : - (setpoints.iX -= (iOwner->GetCellWidth() + iOwner->GetCellHorizontalMargin()) * lastUsedCellCount); - } // for-loop - } // if candidate exist - - return t; // as lastCandidateIndex - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIcon::UpdateList -// update the list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithoutIcon::UpdateListL(TBool aDrawFlag, TBool aRecalculate) - { - if ( aRecalculate ) - { - // Recalculate the position of all candidates - iOwner->SetLastCandidateIndex(CalculatePositionsL()); - } - if(aDrawFlag) - { - Draw(); - iOwner->Invalidate(iRect); - } - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowwithouticonwithbubble.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputlistonerowwithouticonwithbubble.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,199 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -// Include -#include "peninputlistonerowwithouticonwithbubble.h" -#include "peninputcandidate.h" - -#include -#include - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CListOneRowWithoutIconWithBubble - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIconWithBubble::CListOneRowWithoutIconWithBubble -// C++ default constructor can NOT contain any code, that -// might leave -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithoutIconWithBubble::CListOneRowWithoutIconWithBubble(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner) -:CListOneRowWithoutIcon(aManager, aOwner) - { - iIsMultiRows = EFalse; - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIconWithBubble::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithoutIconWithBubble* CListOneRowWithoutIconWithBubble::NewL(CListManager* aManager, - MFepCtrlDropdownListContext* aOwner) - { - CListOneRowWithoutIconWithBubble* self = new (ELeave) CListOneRowWithoutIconWithBubble(aManager, aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIconWithBubble::~CListOneRowWithoutIconWithBubble -// desstrutor function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CListOneRowWithoutIconWithBubble::~CListOneRowWithoutIconWithBubble() - { - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIconWithBubble::HandlePointerDownL -// handle pointer down -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithoutIconWithBubble::HandlePointerDownL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDownL(aPoint); - - TInt index = -1; - CCandidate* candidate = FindCandidate(aPoint, index); - if(candidate) - iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIconWithBubble::HandlePointerDragL -// handle pointer drag function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithoutIconWithBubble::HandlePointerDragL(const TPoint& aPoint) - { - // Pass the event first to the base - CList::HandlePointerDragL(aPoint); - - // If the mouse have click in the area of DDL - if ( iIndicateButtonClicked ) - { - CCandidate* candidate = FindCandidate(aPoint, iClickedCandidateIndex); - - if ( candidate ) - { - if(iClickedRect != candidate->GetRect()) - { - iMoveLatestRect = iClickedRect; - iClickedRect.SetRect(candidate->GetRect().iTl, candidate->GetRect().Size()); - iOwner->ClearBubble(); - iOwner->DrawBubble(iClickedRect, candidate->GetCandidate()); - } - } - else - { - iOwner->ClearBubble(); - - iMoveLatestRect = iClickedRect; - iClickedRect = KEmptyRect; - } - - // Compare the two rect, then decide draw it or not - CompareRect(iMoveLatestRect, iClickedRect); - } - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIconWithBubble::HandlePointerUpL -// handle pointer up function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithoutIconWithBubble::HandlePointerUpL(const TPoint& aPoint) - { - if ( !iClickedRect.IsEmpty() ) - { - iOwner->ClearBubble(); - // Find out which rectangle was clicked and save it for - // later usage (HandlePointerUpL) - if ( iContentRect.Contains( aPoint ) ) - { - if ( iClickedRect.Contains( aPoint ) ) - { - if ( iClickedCandidateIndex != KErrNotFound ) - { - // Redraw the selection rect - DrawSelection( iClickedRect, EFalse ); - - // We have selected a candidate - // Send message to plugin - CCandidate* candidate = iOwner->GetCandidate(iClickedCandidateIndex); - if ( candidate ) - { - iOwner->ReportCandidateSelectEventL(candidate->GetCandidate(), - iClickedCandidateIndex); - } - - } - } - - iIndicateButtonClicked = EFalse; - } - - iClickedRect = KEmptyRect; - } - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIconWithBubble::HandlePointerLeave -// handle pointer leave function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CListOneRowWithoutIconWithBubble::HandlePointerLeave(const TPoint& /*aPoint*/) - { - iMoveLatestRect = iClickedRect; - iClickedRect = KEmptyRect; - DrawSelection( iMoveLatestRect, EFalse ); - DrawHighightCell(iMoveLatestRect, ETrue); - } - -// ----------------------------------------------------------------------------- -// CListOneRowWithoutIconWithBubble::CompareRect -// Compare src and des rect -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CListOneRowWithoutIconWithBubble::CompareRect(const TRect& aSrcRect, const TRect& aDesRect) - { - if(aSrcRect != aDesRect) - { - DrawSelection(aDesRect, ETrue); - DrawSelection(aSrcRect, EFalse); - DrawHighightCell(aSrcRect, ETrue); - } - - return EFalse; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputpages.cpp --- a/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputpages.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,161 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: page manager,which is used by drop down list -* -*/ - - -#include "peninputpages.h" - -// ======== MEMBER FUNCTIONS ======== - -// Implementation of Class CPages - -// ----------------------------------------------------------------------------- -// CPages::NewL -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPages* CPages::NewL() - { - CPages* self = new (ELeave) CPages(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } - -// ----------------------------------------------------------------------------- -// CPages::~CPages -// factory function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -CPages::~CPages() - { - iFirstIndexList.Close(); - iLastIndexList.Close(); - } - -// ----------------------------------------------------------------------------- -// CPages::NewL -// 2nd construct function -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPages::ConstructL() - { - Reset(); - } - -// ----------------------------------------------------------------------------- -// CPages::Reset -// reset page in the page list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPages::Reset() - { - iFirstIndexList.Reset(); - iLastIndexList.Reset(); - } - -// ----------------------------------------------------------------------------- -// CPages::PageCount -// get page count -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CPages::PageCount() const - { - return iLastIndexList.Count(); - } - -// ----------------------------------------------------------------------------- -// CPages::AddPage -// add one page into the page list -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CPages::AddPage(const TInt aFirstIndex, const TInt aLastIndex) - { - if ( aFirstIndex == aLastIndex ) - { - return; - } - - const TInt index = iLastIndexList.Find(aLastIndex); - - if ( index == KErrNotFound) - { - iLastIndexList.Append(aLastIndex); - iFirstIndexList.Append(aFirstIndex); - } - } - -// ----------------------------------------------------------------------------- -// CPages::GetPreviousIndex -// get the previous page -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPages::GetPreviousIndex(const TInt aLastIndex, - TInt& aFirstIndexOfPrevious, - TInt& aLastIndexOfPrevious) const - { - const TInt index = iLastIndexList.Find( aLastIndex ); - - if ( index != KErrNotFound ) // If found it - { - if ( index > 0 ) // If not the first page - { - aFirstIndexOfPrevious = iFirstIndexList[index-1]; - aLastIndexOfPrevious = iLastIndexList[index-1]; - } - else // If is the first page - { - aFirstIndexOfPrevious = iFirstIndexList[0]; - aLastIndexOfPrevious = iLastIndexList[0]; - } - return ETrue; - } - else - { - return EFalse; - } - } - -// ----------------------------------------------------------------------------- -// CPages::GetPageIndexByPos -// get the page of assigned position -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CPages::GetPageIndexByPos(const TInt aPos, - TInt& aFirstIndex, - TInt& aLastIndex) const - { - if ( ( aPos < 0 ) || ( aPos >= iLastIndexList.Count() ) ) - { - return EFalse; - } - - aLastIndex = iLastIndexList[aPos]; - aFirstIndex = iFirstIndexList[aPos]; - - return ETrue; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputlabel/peninputlabel.cpp --- a/textinput/peninputcommonctrls/src/peninputlabel/peninputlabel.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,312 +0,0 @@ -/* -* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation for button base and dragbar -* -*/ - - -#include - -#include "peninputlabel.h" -#include "peninputlayout.h" - - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::NewL -// factory function -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlLabel* CAknFepCtrlLabel::NewL(CFepUiLayout* aUiLayout, TInt aCtrlId) - { - CAknFepCtrlLabel* lable=new (ELeave) CAknFepCtrlLabel(aUiLayout,aCtrlId); - - CleanupStack::PushL(lable); - lable->BaseConstructL(); - CleanupStack::Pop(lable); - - return lable; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::CAknFepCtrlLabel -// C++ default constructor -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -CAknFepCtrlLabel::CAknFepCtrlLabel(CFepUiLayout* aUiLayout, TInt aCtrlId) - :CFepUiBaseCtrl(TRect(0,0,0,0),aUiLayout,aCtrlId), - iBaseline(-1), - iFontColor(KRgbWhite), - iAlignment(CGraphicsContext::ECenter) - { - SetControlType(EUserCtrlBase | ECtrlBaseCtrl); - -#ifdef __ALPHA_TRANCEPARENCY__ - const TRgb KDefaultButtonBackCol = TRgb(30,30,30); -#else - const TRgb KDefaultButtonBackCol = TRgb(230,230,230); -#endif - - SetBkColor(KDefaultButtonBackCol); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::~CAknFepCtrlLabel -// Destructor -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlLabel::~CAknFepCtrlLabel() - { - delete iText; - - //font - if(iFontOwnership && iFont) - { - BitmapDevice()->ReleaseFont(iFont); - iFont = NULL; - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::Draw -// Draw the control -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlLabel::Draw() - { - if(!AbleToDraw()) - return; - - TRect rect = Rect(); - CFbsBitGc* gc = static_cast(BitGc()); - gc->Activate(MaskBitmapDevice()); - - //clear the rect - gc->SetBrushStyle( CGraphicsContext::ESolidBrush ); - gc->SetBrushColor(TRgb(KOpaqueColor));//non transparency - gc->SetPenStyle(CGraphicsContext::ENullPen); - gc->DrawRect(rect); - - gc->Activate(BitmapDevice()); - - if (BackgroundBmp()) - { - if (BkMaskBmp()) - { - gc->DrawBitmapMasked(rect, BackgroundBmp(), BackgroundBmp()->SizeInPixels(), - BkMaskBmp(), ETrue); - } - else - { - gc->DrawBitmap(rect, BackgroundBmp(), BackgroundBmp()->SizeInPixels()); - } - } - - //draw caption if there is - if(iText && iFont) - { - CFbsBitGc* gc = static_cast(BitGc()); - - //use font - gc->UseFont(iFont); - gc->SetBrushStyle(CGraphicsContext::ENullBrush); - gc->SetPenStyle(CGraphicsContext::ESolidPen); - - TRect rect(iRect); - - //draw text shadow first - rect.Move(1,1); - - TInt baseLine = iFont->AscentInPixels()/2 + iRect.Height()/2; - gc->SetPenColor(iFontColor); - gc->DrawText(*iText, iRect, baseLine, iAlignment); - - gc->DiscardFont(); - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::SetBitmapL -// Set bitmap for given status -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlLabel::SetBitmapL(CFbsBitmap* aBitmap) - { - if(!aBitmap) - { - return; - } - - SetBackgroundBitmapL(aBitmap); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::SetMaskBitmapL -// Set mask bitmap for given status -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlLabel::SetMaskBitmapL(CFbsBitmap* aBmp) - { - if(!aBmp) - { - return; - } - - SetBackgroundMaskBitmapL(aBmp); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::SetFont -// Set caption font -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlLabel::SetFont(const TFontSpec& aFontSpec) - { - iFontSpec = aFontSpec; - //release old font - if(iFontOwnership && iFont) - { - BitmapDevice()->ReleaseFont(iFont); - iFont = NULL; - } - - iFontOwnership = ETrue; - if(BitmapDevice()) - { - if (KErrNone != BitmapDevice()->GetNearestFontInPixels(iFont,iFontSpec)) - iFont = NULL; - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::SetFont -// Set caption font -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlLabel::SetFont(const CFont* aFont) - { - if(iFontOwnership && iFont) - { - BitmapDevice()->ReleaseFont(iFont); - } - - iFontOwnership = EFalse; - iFont = const_cast(aFont); - - if(iFont) - { - iFontSpec = iFont->FontSpecInTwips(); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::SetFontColor -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlLabel::SetFontColor(const TRgb aColor) - { - iFontColor = aColor; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlEventButton::SetText -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlLabel::SetText(const TDesC& aText) - { - - delete iText; - iText = NULL; - - TRAP_IGNORE( iText = aText.AllocL()); - - Draw(); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::SizeChanged -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlLabel::SizeChanged(TRect aNewRect, TBool aIsReloadImages) - { - if (aNewRect.Size().iWidth == 0 || aNewRect.Size().iHeight == 0) - { - return; - } - - SetRect(aNewRect); - - if (aIsReloadImages) - { - ResizeBitmaps(aNewRect.Size()); - } - - Draw(); - UpdateArea(Rect(), EFalse); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::ResizeBitmaps -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlLabel::ResizeBitmaps(TSize aSize) - { - if (BkMaskBmp() && - BkMaskBmp()->SizeInPixels() != aSize) - { - AknIconUtils::SetSize(BkMaskBmp(), aSize, EAspectRatioNotPreserved); - } - - if (BackgroundBmp() && - BackgroundBmp()->SizeInPixels() != aSize) - { - AknIconUtils::SetSize(BackgroundBmp(), aSize, EAspectRatioNotPreserved); - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::SetTextAlignment -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlLabel::SetTextAlignment(CGraphicsContext::TTextAlign aAlignment) - { - iAlignment = aAlignment; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlLabel::TextAlignment -// This methods shall be called by the container's SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CGraphicsContext::TTextAlign CAknFepCtrlLabel::TextAlignment() - { - return iAlignment; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputrangebar/peninputrangebar.cpp --- a/textinput/peninputcommonctrls/src/peninputrangebar/peninputrangebar.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1349 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of range bar -* -*/ - - -// system includes -//#include -#include -#include -#include -#include -#include - -// user includes -#include -#include -#include -#include -#include -#include - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::CAknFepCtrlRangeBar -// C++ constructor -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlRangeBar::CAknFepCtrlRangeBar(CFepUiLayout* aUiLayout, TInt aControlId, - TButtonGroupStyle aStyle) -: CControlGroup(aUiLayout, aControlId, EFalse), iFirstTimeConstruct(ETrue) - { - iStyle = aStyle; - //iActionStyle = ERangeBarActionStyleHide; - iActionStyle = ERangeBarUsingIndicatorStyle; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::~CAknFepCtrlRangeBar -// C++ destructor -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlRangeBar::~CAknFepCtrlRangeBar() - { - iIndicators.ResetAndDestroy(); - iIndicators.Close(); - iCellRects.Close(); - iCellInnerRects.Close(); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::NewL -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlRangeBar* CAknFepCtrlRangeBar::NewL(CFepUiLayout* aUiLayout, TInt aControlId, - TButtonGroupStyle aStyle) - { - CAknFepCtrlRangeBar* self = new (ELeave) CAknFepCtrlRangeBar (aUiLayout, aControlId, aStyle); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::NewLC -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlRangeBar* CAknFepCtrlRangeBar::NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TButtonGroupStyle aStyle) - { - CAknFepCtrlRangeBar* self = new (ELeave) CAknFepCtrlRangeBar (aUiLayout, aControlId, aStyle); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::ConstructL -// Construct the instance -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::ConstructL() - { - // Construct the base control first - CControlGroup::ConstructL(); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::HandlePointerDownEventL -// Implement the pointer down handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -CFepUiBaseCtrl* CAknFepCtrlRangeBar::HandlePointerDownEventL(const TPoint& aPoint) - { - CFepUiBaseCtrl* ctrl = CControlGroup::HandlePointerDownEventL( aPoint ); - return ctrl; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::SizeChanged -// Implement the SizeChanged handler -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::SizeChanged(const TRect aRect) - { - SetCellRect(aRect); - - if( iCellChanged ) - { - SetRect(aRect); - - iActionStyle == ERangeBarUsingIndicatorStyle ? - UpdateIndicatorRectForUsingIndicatorStyle(EFalse) : - UpdateIndicatorRect(EFalse); - } - else - { - iIsReloadImages = ETrue; - SetWholeRect(); - //Draw(); - SetIndicatorRect(); - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::ConstructFromResourceL -// Construct the range bar from the resource -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::ConstructFromResourceL(TResourceReader& aReader) - { - //destroy all previous range buttons - - for (TInt ii = 0; ii < iIndicators.Count(); ++ii) - { - CAknFepCtrlCommonButton* button = iIndicators[ ii ]->iIndicator; - if (button) - { - RemoveControl(button); - } - } - - iIndicators.ResetAndDestroy(); - - const TInt countRanges = aReader.ReadInt16(); - - if (countRanges <= 0) - { - User::Leave(KErrArgument); - } - - // Create range indicator buttons - for (TInt ii = 0; ii < countRanges; ++ii) - { - AddRangeL(aReader); - } - - const TInt defaultRangeIndex = aReader.ReadInt16(); - - if (defaultRangeIndex >= 0 && defaultRangeIndex < iIndicators.Count()) - { - SetRange(iIndicators[defaultRangeIndex]->iInputRange); - } - - iFirstTimeConstruct = EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::SetIndicatorRect() -// Re-calculate the position and layout -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlRangeBar::SetIndicatorRect() - { - TRect rect(iIndicatorRect); - TInt count = iIndicators.Count(); - TInt lastPos = -1; - - for (TInt ii = 0; ii < count; ++ii) - { - if ( ii != 0 && - (iActionStyle != ERangeBarUsingIndicatorStyle || - lastPos != iIndicators[ii]->iPosIdx ) ) - { - if (iStyle == EBtnGroupVertical) - { - rect.Move(0, iIndicatorRect.Height()); - } - else - { - rect.Move(iIndicatorRect.Width(), 0); - } - } - lastPos = iIndicators[ii]->iPosIdx; - - TRect innerRect; - AknPenImageUtils::CalculateGraphicRect( rect, innerRect ); - - if (iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) - { - static_cast(iIndicators[ii]->iIndicator)-> - SizeChanged(rect, innerRect, iIsReloadImages); - } - else - { - static_cast(iIndicators[ii]->iIndicator)-> - SizeChanged(rect, innerRect, iIsReloadImages); - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::Draw() -// Re-calculate the position and layout -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::Draw() - { - if(!AbleToDraw()) - return; - - CControlGroup::Draw(); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::RefreshUI -// Refresh the component -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::RefreshUI() - { - // this function not called anymore - SetIndicatorRect(); - - // Flush the gc memory to the LCD device - UpdateArea(iEraseRect, EFalse); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::HandleControlEvent -// responding on button up event -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, - const TDesC& /*aEventData*/) - { - if (aEventType == EEventButtonUp) - { - // get aCtrl's index - TBool ctrlExist = EFalse; - TInt ctrlIndex = 0; - - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - if ((iIndicators[ii]->iIndicator == aCtrl) - && (!(iIndicators[ii]->iIndicator->IsDimmed()))) - { - ctrlExist = ETrue; - ctrlIndex = ii; - break; - } - } - - if (!ctrlExist) - { - return; - } - - TBool needSendEvent = EFalse; - - // aCtrl's index is ctrlIndex - if ( (ActiveControl() != aCtrl) - || (iIndicators[ctrlIndex]->iCtrlType == EButtonTypePopupMode) ) - { - needSendEvent = ETrue; - } - else // press active button again - { - // only meaningful when it is multimode button - if (iIndicators[ctrlIndex]->iCtrlType == EButtonTypeMultiMode) - { - CAknFepCtrlMultiModeButton* button = static_cast(iIndicators[ctrlIndex]->iIndicator); - - // change range: user press mixed range multimode button, and range is changed - if (iIndicators[ctrlIndex]->iRangeType == ERangeTypeMixed) - { - if ((button->NextMode() != KErrNotFound) && - (button->RangeOfGivenMode(button->CurrentMode()) != - button->RangeOfGivenMode(button->NextMode()))) - { - // change range - ReportEventToObserver(iEventIdForRange, - button->RangeOfGivenMode(button->NextMode())); - } - else if (button->RangeOfGivenMode(button->CurrentMode()) == - button->RangeOfGivenMode(button->NextMode())) - { - // mixed range multimode button: change case - ReportEventToObserver(iEventIdForCase, button->NextMode()); - } - } - else - { - // single range multimode button: change case - ReportEventToObserver(iEventIdForCase, button->NextMode()); - } - } - else - { - if ( iIndicators[ctrlIndex]->iInputRange != iInputRange ) - { - needSendEvent = ETrue; - } - } - } - - if ( needSendEvent ) - { - // press another button instead of active button, it will send range event - if ((iIndicators[ctrlIndex]->iCtrlType == EButtonTypeMultiMode) && - (iIndicators[ctrlIndex]->iRangeType == ERangeTypeMixed)) - { - CAknFepCtrlMultiModeButton* button = - static_cast(aCtrl); - - if ((button) && - (button->IsGivenRangeSupported( - button->RangeOfGivenMode(button->CurrentMode())))) - { - ReportEventToObserver(iEventIdForRange, - button->RangeOfGivenMode(button->CurrentMode())); - } - } - else - { - // for single range multimode button and normal button - ReportEventToObserver(iEventIdForRange, iIndicators[ctrlIndex]->iInputRange); - } - } - - // make sure the normal button press effect for : - // using indicator style, and EIndicatorActionStyleNormal - if (iActionStyle == ERangeBarUsingIndicatorStyle && - iIndicators[ctrlIndex]->iActionStyle == EIndicatorActionStyleNormal && - iIndicators[ctrlIndex]->iIndicator->IsActive()) - { - iIndicators[ctrlIndex]->iIndicator->SetHighlight(EFalse); - } - - if ( iActionStyle == ERangeBarUsingIndicatorStyle && - iIndicators[ctrlIndex]->iActionStyle != EIndicatorActionStyleHighLight ) - { - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - if(iIndicators[ ii ]->iActionStyle == EIndicatorActionStyleHighLight - && ii != ctrlIndex) - { - iIndicators[ ii ]->iIndicator->SetHighlight( - iIndicators[ ii ]->iIndicator->IsActive() ); - } - } - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::SetRange -// set current input range -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CAknFepCtrlRangeBar::SetRange(const TInt aRange) - { - // if set range in a mixed range multimode button, - // should use detailed range, but not mixed range - TBool ret = EFalse; - - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - CAknFepCtrlCommonButton* button = iIndicators[ ii ]->iIndicator; - - if ((button) && (!(button->IsDimmed()))) - { - if ((iIndicators[ii]->iInputRange == aRange) || - ((iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) && - (iIndicators[ii]->iRangeType == ERangeTypeMixed) && - (static_cast(button)->IsGivenRangeSupported(aRange)))) - { - // 1st condition: normal button or single range multimode button - // 2nd condition: mixed range multimode button - if (!(iIndicators[ii]->iInputRange == aRange)) - { - // mixed range multimode button - static_cast(button)->SetRange(aRange); - } - - iInputRange = aRange; - - SetActiveCtrl(button); - - ret = ETrue; - } - else - { - button->SetActive(EFalse); - } - } - } - - if ( iActionStyle == ERangeBarActionStyleHighLight ) - { - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - iIndicators[ ii ]->iIndicator->SetHighlight( iIndicators[ ii ]->iIndicator->IsActive() ); - } - } - else - { - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - if(iIndicators[ ii ]->iActionStyle == EIndicatorActionStyleHighLight) - { - iIndicators[ ii ]->iIndicator->SetHighlight( iIndicators[ ii ]->iIndicator->IsActive() ); - } - } - } - return ret; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::SetCaseL -// set mode of given range -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::SetCaseL(const TInt aRange, const TInt aModeIndex) - { - // aRange is detailed range, it only meaningful for multimodebutton - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - CAknFepCtrlMultiModeButton* button = static_cast - (iIndicators[ii]->iIndicator); - if ((iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) && - ((iIndicators[ii]->iInputRange == aRange) || - ((iIndicators[ii]->iRangeType == ERangeTypeMixed) && - (button->IsGivenRangeSupported(aRange))))) - { - if (iIndicators[ii]->iRangeType == ERangeTypeMixed) - { - button->SetRange(aRange); - } - - if (button->IsActive()) - { - button->SetCurrentModeL(EBtnBmpActive, aModeIndex); - } - else - { - button->SetCurrentModeL(EBtnBmpNonActive, aModeIndex); - } - - break; - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::SetPermittedRanges -// set permitted ranges -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::SetPermittedRanges(const TInt aPermitted) - { - // aPermitted only include detailed range, not mixed - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - TBool needDimButton = EFalse; - CAknFepCtrlCommonButton* button= iIndicators[ii]->iIndicator; - - if ((iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) && - (iIndicators[ii]->iRangeType == ERangeTypeMixed)) - { - // mixed multi button - RArray rangeList; - TRAP_IGNORE(static_cast - (button)->GetRangeListL(rangeList)); - - needDimButton = ETrue; - TInt disableIdx = -1; - - for (TInt ii = 0; ii < rangeList.Count(); ii++) - { - if (aPermitted & rangeList[ii]) - { - static_cast(button)->SetPermittedRange( - rangeList[ii], ETrue); - needDimButton = EFalse; - } - else - { - static_cast(button)->SetPermittedRange( - rangeList[ii], EFalse); - disableIdx = ii; - } - } - - // disable mode can only after permitted modes are all setted. - if ( disableIdx >= 0 ) - { - static_cast(button)->DisableOneModes( - rangeList[disableIdx]); - } - - rangeList.Reset(); - rangeList.Close(); - } - else if (!(aPermitted & iIndicators[ii]->iInputRange)) - { - // disable a normal or single range multi button - needDimButton = ETrue; - - if (iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) - { - TRAP_IGNORE(static_cast(button)->SetCurrentModeL( - EBtnBmpNonActive , 0)); - } - } - - if (needDimButton) - { - button->SetDimmed(ETrue); - button->SetActive(EFalse); - } - else - { - button->SetDimmed(EFalse); - } - } - - if ( iActionStyle == ERangeBarUsingIndicatorStyle ) - { - for(TInt n = 0; n < iIndicators.Count(); n++) - { - for( TInt m = n+1; m < iIndicators.Count(); m++ ) - { - if( iIndicators[n]->iPosIdx == iIndicators[m]->iPosIdx ) - { - TBool nDimmed = iIndicators[n]->iIndicator->IsDimmed(); - TBool mDimmed = iIndicators[m]->iIndicator->IsDimmed(); - - if ( nDimmed != mDimmed ) - { - iIndicators[n]->iIndicator->Hide(nDimmed); - iIndicators[m]->iIndicator->Hide(mDimmed); - } - } - } - } - } - //RefreshUI(); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::SetPermittedRange -// set permitted ranges -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::SetPermittedRange(const TInt aRangeId, TBool aPermit) - { - // this function has take consideration of mixed range multimodebutton - // aRangeId is detailed range here - TBool needDimButton = EFalse; - TBool findButton = EFalse; - TInt buttonIdx = 0; - - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - CAknFepCtrlCommonButton* button = iIndicators[ii]->iIndicator; - - if ((iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) && - (iIndicators[ii]->iRangeType == ERangeTypeMixed)) - { - // mixed multi button - if (static_cast(button)->IsGivenRangeSupported(aRangeId)) - { - findButton = ETrue; - buttonIdx = ii; - - static_cast(button)->SetPermittedRange(aRangeId, - aPermit); - - RArray rangeList; - - TRAP_IGNORE(static_cast(button)->GetRangeListL( - rangeList)); - - if ( (!aPermit) && (rangeList.Count() == 1) ) - { - needDimButton = ETrue; - } - - rangeList.Reset(); - rangeList.Close(); - - break; - } - } - else - { - // normal or single range multi button - if (iIndicators[ii]->iInputRange == aRangeId) - { - findButton = ETrue; - buttonIdx = ii; - - if (!aPermit) - { - needDimButton = ETrue; - - if (iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) - { - TRAP_IGNORE( - static_cast(button)->SetCurrentModeL( - EBtnBmpNonActive , 0)); - } - } - break; - } - } - } - - if (findButton) - { - CAknFepCtrlCommonButton* button = iIndicators[buttonIdx]->iIndicator; - - if (!needDimButton) - { - button->SetDimmed(EFalse); - } - else - { - button->SetDimmed(ETrue); - button->SetActive(EFalse); - } - } - - //RefreshUI(); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::SetPermittedCase -// set permitted ranges -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::SetPermittedCase(const TInt aRangeId, - const TInt aRealCaseId, - TBool aPermit) - { - // aRangeId is detailed range here - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - if (((iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) && - (iIndicators[ii]->iInputRange == aRangeId)) || - ((iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) && - (iIndicators[ii]->iRangeType == ERangeTypeMixed) && - (static_cast(iIndicators[ii]->iIndicator)->IsGivenRangeSupported(aRangeId)))) - { - // single range multimode button OR mixed range multimode button - static_cast(iIndicators[ii]->iIndicator)->SetPermittedModes(aRangeId, aRealCaseId, aPermit); - break; - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::HideRange -// hide given range -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::HideRange(const TInt aRange) - { - // mixed range multimode button is not considerred here - for (TInt ii = 0; ii < iIndicators.Count(); ++ii) - { - if ( ( iIndicators[ ii ] ) && - ( iIndicators[ ii ]->iInputRange == aRange ) && - ( !iIndicators[ ii ]->iIsHide)) - { - iIndicators[ii]->iIndicator->Hide(ETrue); - - iIndicators[ ii ]->iIsHide = ETrue; - - if( iCellChanged ) - { - UpdateIndicatorRect(EFalse); - } - else - { - SetWholeRect(); - iIsReloadImages = EFalse; - //Draw(); - SetIndicatorRect(); - } - - break; - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::HideRangeUsingIndicatorStyle -// hide given range -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::HideRangeUsingIndicatorStyle(const TInt aRange) - { - // mixed range multimode button is not considerred here - TInt indiIdx = IndicatorIdxByRange(aRange); - - if (indiIdx == KErrNotFound) - return; - - HideRangeForHidingIndicatorStyle(indiIdx, ETrue); - - UpdateIndicatorRectForUsingIndicatorStyle(EFalse); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::ShowRange -// show given range -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::ShowRange(const TInt aRange) - { - // mixed range multimode button is not considerred here - for (TInt ii = 0; ii < iIndicators.Count(); ++ii) - { - if ( ( iIndicators[ ii ] ) && - ( iIndicators[ ii ]->iInputRange == aRange ) && - ( iIndicators[ ii ]->iIsHide)) - { - iIndicators[ii]->iIndicator->Hide(EFalse); - iIndicators[ ii ]->iIsHide = EFalse; - - if( iCellChanged ) - { - UpdateIndicatorRect(ETrue); - } - else - { - SetWholeRect(); - iIsReloadImages = EFalse; - - //Draw(); - SetIndicatorRect(); - } - - break; - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::ShowRangeUsingIndicatorStyle -// show given range -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::ShowRangeUsingIndicatorStyle(const TInt aRange) - { - // mixed range multimode button is not considerred here - TInt indiIdx = IndicatorIdxByRange(aRange); - - if (indiIdx == KErrNotFound) - return; - - HideRangeForHidingIndicatorStyle(indiIdx, EFalse); - - UpdateIndicatorRectForUsingIndicatorStyle(EFalse); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::AddRangeL -// add range -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::AddRangeL(TResourceReader& aReader) - { - const TInt16 rangeId = aReader.ReadInt16(); - const TInt16 rangeType = aReader.ReadInt16(); - const TInt16 ctrlId = aReader.ReadInt16(); - const TInt16 ctrlType = aReader.ReadInt16(); - const TInt32 resId = aReader.ReadInt32(); - const TInt actionStyle = aReader.ReadInt16(); - TBool hide = aReader.ReadInt16(); - TInt posidx = aReader.ReadInt16(); - - CAknFepCtrlCommonButton* button = NULL; - - if (ctrlType != EButtonTypeMultiMode) - { - // normal button - button = CAknFepCtrlCommonButton::NewLC(UiLayout(), ctrlId, - KAknsIIDQsnFrFunctionButtonNormal, - KAknsIIDQsnFrFunctionButtonPressed, - KAknsIIDQsnFrFunctionButtonInactive ); - button->SetResourceId(resId); - button->ConstructFromResourceL(); - } - else - { - // Multiple display type button - button = CAknFepCtrlMultiModeButton::NewLC(UiLayout(), ctrlId, - KAknsIIDQsnFrFunctionButtonNormal, - KAknsIIDQsnFrFunctionButtonPressed, - KAknsIIDQsnFrFunctionButtonInactive); - - button->SetResourceId(resId); - button->ConstructFromResourceL(); - } - - button->AddEventObserver( this ); - - AddControlL( button ); - CleanupStack::Pop(button); // button - - TAknFepRangeIndicator* indicator = new (ELeave) TAknFepRangeIndicator; - CleanupStack::PushL( indicator ); - - indicator->iCtrlType = ctrlType; - indicator->iInputRange = rangeId; - indicator->iRangeType = rangeType; - indicator->iCtrlId = ctrlId; - //indicator->iIsHide = EFalse; - indicator->iIsHide = hide; - if (hide) - button->Hide(ETrue); - indicator->iIndicator = button; - indicator->iActionStyle = actionStyle; - indicator->iPosIdx = posidx; - - User::LeaveIfError( iIndicators.Append(indicator) ); - CleanupStack::Pop(indicator); // indicator - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::GetCase -// get mode of given range -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CAknFepCtrlRangeBar::GetCase(TInt aRange) const - { - // get current real case of aRange - // aRange is detailed range here, for mixed range multimode button, it contained in one range of it - for (TInt ii = 0; ii < iIndicators.Count(); ++ii) - { - if (iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) - { - CAknFepCtrlMultiModeButton* button = static_cast - (iIndicators[ii]->iIndicator); - - if ( ( (iIndicators[ii]->iRangeType == ERangeTypeMixed) && - (button->IsGivenRangeSupported(aRange)) && - ((button->RangeOfGivenMode(button->CurrentMode()) == aRange)) ) - || (iIndicators[ii]->iInputRange == aRange)) - { - return button->GetRealCaseByMode(button->CurrentMode()); - } - } - } - - return KErrNotFound; - } - -// ----------------------------------------------------------------------------- -// Implementation of CAknFepCtrlRangeBar::SetFont -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::SetFont(const CFont* aFont) - { - iFont = aFont; - - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - if (iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) - { - static_cast(iIndicators[ii]->iIndicator)->SetFont(iFont); - - break; - } - } - } - -// ----------------------------------------------------------------------------- -// Implementation of CAknFepCtrlRangeBar::Move -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::Move(const TPoint& aOffset) - { - CControlGroup::Move(aOffset); - - iIndicatorRect.Move(aOffset); - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::SetEventIdForRange -// set event id when range is clicked -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::SetEventIdForRange(TInt aEventId) - { - iEventIdForRange = aEventId; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::SetEventIdForCase -// set event id when case is clicked -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::SetEventIdForCase(TInt aEventId) - { - iEventIdForCase = aEventId; - } - - -// ----------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::ShowAllRanges -// Display all ranges whether it is IsHide -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::ShowAllRanges() - { - for (TInt ii = 0; ii < iIndicators.Count(); ++ii) - { - iIndicators[ii]->iIsHide = EFalse; - iIndicators[ii]->iIndicator->Hide(EFalse); - } - - if( iCellChanged ) - { - iActionStyle == ERangeBarUsingIndicatorStyle ? - UpdateIndicatorRectForUsingIndicatorStyle(EFalse) : - UpdateIndicatorRect(EFalse); - } - else - { - SetWholeRect(); - iIsReloadImages = EFalse; - //Draw(); - SetIndicatorRect(); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::SetWholeRect -// Set rect of whole range bar -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepCtrlRangeBar::SetWholeRect() - { - if (iStyle == EBtnGroupVertical) - { - SetRect(TRect(iIndicatorRect.iTl, - TPoint(iIndicatorRect.iTl.iX + iIndicatorRect.Width(), - iIndicatorRect.iTl.iY + - iIndicatorRect.Height() * (NumOfControls() - NumOfHidedRange())))); - } - else - { - SetRect(TRect(iIndicatorRect.iTl, - TPoint(iIndicatorRect.iTl.iX + - iIndicatorRect.Width() * (NumOfControls() - NumOfHidedRange()), - iIndicatorRect.iTl.iY + iIndicatorRect.Height()))); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::NumOfHidedRange -// Get number of hided input ranges -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CAknFepCtrlRangeBar::NumOfHidedRange() - { - TInt numOfHidedRange = 0; - - for (TInt ii = 0; ii < iIndicators.Count(); ++ii) - { - if (iIndicators[ ii ]->iIsHide) - { - numOfHidedRange++; - } - } - - return numOfHidedRange; - } - - -// ----------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::SetActionStyle -// set action style -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::SetActionStyle(TRangeBarActionStyle aActionStyle) - { - iActionStyle = aActionStyle; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::IndicatorIdxByRange -// get indicator index by range -// ----------------------------------------------------------------------------- -// -TInt CAknFepCtrlRangeBar::IndicatorIdxByRange(TInt aRange) - { - for (TInt ii = 0; ii < iIndicators.Count(); ++ii) - { - if ( IsMixedRange(ii) ) - { - CAknFepCtrlMultiModeButton* button = static_cast - (iIndicators[ii]->iIndicator); - if ( button->RangeOfGivenMode(button->NextMode()) == aRange || - button->RangeOfGivenMode(button->CurrentMode()) == aRange ) - { - return ii; - } - } - else if (iIndicators[ii]->iInputRange == aRange) - { - return ii; - } - } - - return KErrNotFound; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::ActiveRange -// active range -// ----------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlRangeBar::ActiveRange(TInt aRange) - { - TInt indiIdx = IndicatorIdxByRange(aRange); - - if (indiIdx == KErrNotFound) - return; - - if (iActionStyle == ERangeBarActionStyleHide || - (iActionStyle == ERangeBarUsingIndicatorStyle && - iIndicators[indiIdx]->iActionStyle == EIndicatorActionStyleHide)) - { - TBool needChange = EFalse; - - if (!iIndicators[indiIdx]->iIndicator->IsDimmed() && iIndicators[indiIdx]->iIndicator) - { - needChange = ETrue; - iInputRange = iIndicators[indiIdx]->iInputRange; - SetActiveCtrl(iIndicators[indiIdx]->iIndicator); - } - - if (needChange) - { - if (iActionStyle == ERangeBarActionStyleHide) - { - for (TInt ii = 0; ii < iIndicators.Count(); ++ii) - { - if (ii == indiIdx) - { - iIndicators[ii]->iIndicator->Hide(ETrue); - iIndicators[ii]->iIsHide = ETrue; - } - else if (iIndicators[ii]->iIsHide) - { - iIndicators[ii]->iIsHide = EFalse; - iIndicators[ii]->iIndicator->Hide(EFalse); - } - } - if (iCellChanged ) - { - UpdateIndicatorRect( EFalse ); - } - else - { - SetWholeRect(); - iIsReloadImages = EFalse; - //Draw(); - SetIndicatorRect(); - } - } - else - { - HideRangeForHidingIndicatorStyle(indiIdx, ETrue); - UpdateIndicatorRectForUsingIndicatorStyle(EFalse); - } - } - } - else - { - // whole range bar's action style is highlight, or it depends on each indicator's - // action style, which is highlight or just visible - SetRange(aRange); - } - - for (TInt ii = 0; ii < iIndicators.Count(); ++ii) - { - TBool highlight = - iIndicators[ii]->iIndicator->IsActive() && !iIndicators[ii]->iIndicator->Hiden(); - iIndicators[ii]->iIndicator->SetHighlight(highlight); - } - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::IsMixedRange -// Judge if button in given index has mixed range -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TBool CAknFepCtrlRangeBar::IsMixedRange(const TInt aIndex) - { - if ((aIndex >= 0) && - (aIndex <= iIndicators.Count()-1) && - (iIndicators[aIndex]->iCtrlType == EButtonTypeMultiMode) && - (iIndicators[aIndex]->iRangeType == ERangeTypeMixed)) - { - return ETrue; - } - - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CAknFepCtrlRangeBar::ReportEventToObserver -// Report range or case event to observer -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAknFepCtrlRangeBar::ReportEventToObserver(const TInt aEventId, const TInt aEventData) - { - TPtrC ptr; - TInt sendData = aEventData; - ptr.Set(reinterpret_cast(&sendData),sizeof(aEventData)); - - ReportEvent(aEventId, ptr); - } - -EXPORT_C void CAknFepCtrlRangeBar::SetDispalyCellRectsL( const RArray& aRects, - const RArray& aInnerRects ) - { - iCellChanged = ETrue; - iCellRects.Close(); - iCellInnerRects.Close(); - for( TInt i = 0; i < aRects.Count(); i++ ) - { - iCellRects.AppendL( aRects[i] ); - } - - for( TInt i = 0; i < aInnerRects.Count(); i++ ) - { - iCellInnerRects.AppendL( aInnerRects[i] ); - } - - iActionStyle == ERangeBarUsingIndicatorStyle ? - UpdateIndicatorRectForUsingIndicatorStyle(ETrue) : - UpdateIndicatorRect(ETrue); - } - -void CAknFepCtrlRangeBar::UpdateIndicatorRect( TBool aUpdateImage) - { - TInt index = 0; - for (TInt ii = 0; ii < iIndicators.Count() && iCellRects.Count() > 0; ++ii) - { - TPoint offset( iIndicatorRect.iTl.iX, iIndicatorRect.iTl.iY ); - if (!iIndicators[ii]->iIsHide ) - { - CAknFepCtrlCommonButton* button = iIndicators[ii]->iIndicator; - if( button ) - { - TInt n = index++; - TRect btnRect( iCellRects[n] ); - TRect btnInnerRect( iCellInnerRects[n] ); - //btnRect.Move( offset ); - if (iIndicators[ii]->iCtrlType == EButtonTypeMultiMode) - { - static_cast(iIndicators[ii]->iIndicator)-> - SizeChanged(btnRect, btnInnerRect, aUpdateImage); - } - else - { - static_cast(iIndicators[ii]->iIndicator)-> - SizeChanged(btnRect, btnInnerRect, aUpdateImage); - } - } - if( index == iCellRects.Count() ) - break; - } - } - } - -void CAknFepCtrlRangeBar::UpdateIndicatorRectForUsingIndicatorStyle(TBool aUpdateImage) - { - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - if (/*!iIndicators[ii]->iIsHide && */ - iIndicators[ii]->iIndicator && - iIndicators[ii]->iPosIdx >= 0 && - iIndicators[ii]->iPosIdx < iCellRects.Count()) - { - iIndicators[ii]->iIndicator->SizeChanged(iCellRects[iIndicators[ii]->iPosIdx], - iCellInnerRects[iIndicators[ii]->iPosIdx], - aUpdateImage); - } - } - } - -void CAknFepCtrlRangeBar::HideRangeForHidingIndicatorStyle(TInt aIdx, - TBool aHide) - { - RArray permitRangeInxArray; - TInt maxPos = 0; - - // Get all the permitted range index array - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - maxPos = iIndicators[ii]->iPosIdx > maxPos ? iIndicators[ii]->iPosIdx : maxPos; - - if( !(iIndicators[ii]->iIndicator->IsDimmed() ) && iIndicators[ii]->iPosIdx >=0 ) - { - permitRangeInxArray.Append(ii); - } - } - - TBool showAllPermittedRange = ETrue; - - // compare the position for every permitted range - if( permitRangeInxArray.Count() == maxPos + 1 ) - { - for(TInt n = 0; n < permitRangeInxArray.Count(); n++) - { - for( TInt m = n+1; m < permitRangeInxArray.Count(); m++ ) - { - if( iIndicators[permitRangeInxArray[n]]->iPosIdx == - iIndicators[permitRangeInxArray[m]]->iPosIdx ) - { - showAllPermittedRange = EFalse; - break; - } - } - } - } - else - { - showAllPermittedRange = EFalse; - } - - permitRangeInxArray.Reset(); - permitRangeInxArray.Close(); - - if( !showAllPermittedRange ) // hide style - { - if (iIndicators[aIdx]->iIsHide != aHide && - iIndicators[aIdx]->iIndicator) - { - TBool canShowNext = ETrue; - - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - if (ii != aIdx && iIndicators[ii]->iPosIdx == iIndicators[aIdx]->iPosIdx) - { - if ( iIndicators[ii]->iIndicator->IsDimmed() ) - { - canShowNext = EFalse; - } - else - { - iIndicators[ii]->iIndicator->Hide(!aHide); - iIndicators[ii]->iIsHide = !aHide; - } - - if (aHide) - break; - } - } - - iIndicators[aIdx]->iIndicator->Hide( canShowNext && aHide); - iIndicators[aIdx]->iIsHide = canShowNext && aHide; - } - } - else - { - // Set the range for special state - for (TInt ii = 0; ii < iIndicators.Count(); ii++) - { - if( iIndicators[ii]->iIndicator->IsDimmed() ) - { - iIndicators[ii]->iIndicator->Hide(ETrue); - iIndicators[ii]->iIsHide = ETrue; - } - else - { - iIndicators[ii]->iIndicator->Hide(EFalse); - iIndicators[ii]->iIsHide = EFalse; - } - } - - } - } -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputselectionlist/peninputcommonchoicelist.cpp --- a/textinput/peninputcommonctrls/src/peninputselectionlist/peninputcommonchoicelist.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,324 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of touch input mode switch -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define MIN_WORD_LENGTH 200 //temperarily added. -const TInt KExtraMargine = 10; -// --------------------------------------------------------------------------- -// C++ constructor. -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputCommonChoiceList:: - CPeninputCommonChoiceList( CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aItemSkinID, - TAknsItemID aBackgroundSkinID, - ECommonChoiceListStyle aListStyle ) -: CFepLayoutChoiceList( aUiLayout, aControlId ) - { - iItemSkinID = aItemSkinID; - iBackgroundSkinID = aBackgroundSkinID; - iListStyle = aListStyle; -#ifdef RD_TACTILE_FEEDBACK - //Advanced Tactile feedback REQ417-47932 - if(aUiLayout) - { - if (aUiLayout->PenInputType() == EPluginInputModeFSQ|| - aUiLayout->PenInputType() == EPluginInputModeVkb) - { - SetTactileFeedbackType(ETouchFeedbackBasicButton); - aUiLayout->ChangeFeedbackType(reinterpret_cast(this),ETouchFeedbackBasicButton); - } - else - { - SetTactileFeedbackType(ETouchFeedbackSensitiveKeypad); - aUiLayout->ChangeFeedbackType(reinterpret_cast(this),ETouchFeedbackSensitiveKeypad); - } - } -#endif //RD_TACTILE_FEEDBACK - } - -// --------------------------------------------------------------------------- -// Symbian Constructor -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputCommonChoiceList* CPeninputCommonChoiceList:: - NewL( CFepUiLayout* aUiLayout, - TInt aControlId, - TAknsItemID aItemSkinID, - TAknsItemID aBackgroundSkinID, - ECommonChoiceListStyle aListStyle ) - { - CPeninputCommonChoiceList *self = new (ELeave) - CPeninputCommonChoiceList( aUiLayout, - aControlId, - aItemSkinID, - aBackgroundSkinID, - aListStyle ); - - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - - return self; - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputCommonChoiceList::~CPeninputCommonChoiceList() - { - iItemRects.Close(); - } - -EXPORT_C void CPeninputCommonChoiceList::AddItemRectL( const TRect& aRect ) - { - iItemRects.AppendL( aRect ); - } - -EXPORT_C void CPeninputCommonChoiceList::RemoveAllItemsRect() - { - iItemRects.Reset(); - } - -EXPORT_C void CPeninputCommonChoiceList:: - SetTextLayout( const TAknTextLineLayout& aTextLayout ) - { - iTextLayout = aTextLayout; - } - -TInt CPeninputCommonChoiceList::MaxWidthOfListItem() - { - if( iTextLayout.FontId() == 0 ) - return 0; - - TInt maxLength = 0; - const CFont* font = AknLayoutUtils::FontFromId(iTextLayout.FontId(), NULL); - ASSERT( font ); - - for( TInt i = 0; i < ItemsCount(); i++ ) - { - TInt length = font->TextWidthInPixels( ItemByIndex(i)->iText ); - maxLength = length > maxLength ? length : maxLength; - } - maxLength = maxLength > MIN_WORD_LENGTH ? maxLength : MIN_WORD_LENGTH; - return maxLength; - } - -EXPORT_C void CPeninputCommonChoiceList::ReCalcLayout() - { - if( iItemRects.Count() == 0 ) - { - return; - } - - if( iListStyle == EAutoFitLength ) - { - TInt itemLength = MaxWidthOfListItem() + iTextLayout.il + iTextLayout.ir; - TInt offsetLength = 0; - offsetLength = Rect().Width() - iItemRects[0].Width(); - - if( itemLength + offsetLength + KExtraMargine > UiLayout()->Rect().Width() ) - { - itemLength = UiLayout()->Rect().Width() - KExtraMargine - offsetLength; - } - TRect rect; - for( TInt i = 0; i < iItemRects.Count(); i++ ) - { - rect = iItemRects[i]; - offsetLength = itemLength - rect.Width(); - rect.SetRect(rect.iTl, TSize( itemLength, rect.Height() ) ); - iItemRects[i] = rect; - } - rect = Rect(); - rect.Resize( offsetLength, 0 ); - SetRect( rect ); - } - } - -EXPORT_C void CPeninputCommonChoiceList::Draw() - { - if(!AbleToDraw()) - return; - - DrawBackground(); - - //draw Item - for(int ii = 0; ii < ItemsCount(); ++ii) - { - DrawItem(ii, CurrentFocusedIndex() == ii); - } - } - -void CPeninputCommonChoiceList::DrawBackground() - { - DrawOpaqueMaskBackground( Rect() ); - if( iBackgroundSkinID.iMajor != EAknsMajorNone && - iBackgroundSkinID.iMinor != EAknsMinorNone ) - { - TRect rtInnerRect( Rect() ); - rtInnerRect.Shrink( 1, 1 ); - CFbsBitGc* gc = static_cast(BitGc()); - - gc->Activate( BitmapDevice() ); - gc->SetBrushColor( KRgbWhite ); - gc->Clear( Rect() ); - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *gc, - Rect(), - rtInnerRect, - iBackgroundSkinID, - KAknsIIDDefault ); - } - } - -void CPeninputCommonChoiceList::DrawItem( TInt aIndex, TBool aIsFocus ) - { - TRect rtFocusRect(iItemRects[aIndex]); - rtFocusRect.Move( Rect().iTl ); - - if( aIsFocus ) - { - //draw focus bitmap - TRect rtInnerRect( rtFocusRect ); - rtInnerRect.Shrink( 7, 7 ); - - if( iItemSkinID.iMajor != EAknsMajorNone && - iItemSkinID.iMinor != EAknsMinorNone) - { - CFbsBitGc* gc = static_cast(BitGc()); - gc->Activate( BitmapDevice() ); - AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(), - *gc, - rtFocusRect, - rtInnerRect, - iItemSkinID, - KAknsIIDDefault ); - } - - } - - // draw text - TAknLayoutText textLayout; - textLayout.LayoutText(rtFocusRect, iTextLayout); - TRgb color( KRgbBlack ); // sane default for nonskinned case - TAknsQsnTextColorsIndex clrIndex; - clrIndex = aIsFocus ? EAknsCIQsnTextColorsCG10 : EAknsCIQsnTextColorsCG20; - - if ( AknsUtils::AvkonSkinEnabled() ) - { - AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), - color, KAknsIIDQsnTextColors, clrIndex ); - } - - textLayout.DrawText(*BitGc(), ItemByIndex(aIndex)->iText, ETrue, color); - } - -EXPORT_C void CPeninputCommonChoiceList::SetListColumnNumWithLafL( TInt aMaxCount) - { - if( iLastColumnNum == aMaxCount ) - return; - - iLastColumnNum = aMaxCount; - RemoveAllItemsRect(); - - TAknWindowLineLayout appWnd = AknLayoutScalable_Avkon::application_window(0).LayoutLine(); - TAknWindowLineLayout mainPane = AknLayoutScalable_Avkon::main_pane(4).LayoutLine(); - TAknLayoutRect mainPaneRect; - mainPaneRect.LayoutRect(appWnd.Rect(), mainPane); - - TAknWindowLineLayout menuWnd = AknLayoutScalable_Avkon:: - popup_menu_window(13).LayoutLine(); - TAknWindowLineLayout choiceWnd = AknLayoutScalable_Avkon:: - popup_submenu_window(aMaxCount - 1).LayoutLine(); - TAknLayoutRect choiceRect; - choiceRect.LayoutRect(mainPaneRect.Rect(), choiceWnd); - - TRect rectChoiseList( 0, 0 , - choiceRect.Rect().Width(), - choiceRect.Rect().Height()); - // set list window rect - SetRect( rectChoiseList ); - - TAknWindowLineLayout listPopupPane = AknLayoutScalable_Avkon:: - listscroll_popup_sub_pane(0).LayoutLine(); - TAknLayoutRect listPopupPaneRect; - listPopupPaneRect.LayoutRect(rectChoiseList, listPopupPane); - TAknWindowLineLayout listSubMenuPane = AknLayoutScalable_Avkon:: - list_submenu_pane(1).LayoutLine(); - TAknLayoutRect listSubMenuPaneRect; - listSubMenuPaneRect.LayoutRect(listPopupPaneRect.Rect(), listSubMenuPane); - - TAknWindowLineLayout listSinglePane; - TAknLayoutRect listSinglePaneRect; - - // set list item rect - for( TInt i = 0; i < aMaxCount; i++ ) - { - listSinglePane = AknLayoutScalable_Avkon:: - list_single_popup_submenu_pane(i, 0, 0).LayoutLine(); - listSinglePaneRect.LayoutRect( listSubMenuPaneRect.Rect(), listSinglePane ); - iItemRects.AppendL(listSinglePaneRect.Rect()); - } - - // set list text layout - SetTextLayout(AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1(0).LayoutLine()); - } - -EXPORT_C void CPeninputCommonChoiceList::SetListSkinID( TAknsItemID aItemSkinID, - TAknsItemID aBackgroundSkinID ) - { - iItemSkinID = aItemSkinID; - iBackgroundSkinID = aBackgroundSkinID; - } -EXPORT_C TInt CPeninputCommonChoiceList::HitTest(const TPoint& aPoint) - { - TPoint pPoint(aPoint.iX - Rect().iTl.iX,aPoint.iY - Rect().iTl.iY); - TInt arrayCount = iItemRects.Count(); - TInt index = arrayCount; - for(TInt i = 0; i < arrayCount; i++) - { - if(iItemRects[i].Contains(pPoint)) - { - index = i; - } - } - if( index >= arrayCount ) - { - return EListOutside; - } - else - { - return index; - } - } -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputselectionlist/peninputlayoutinputmodechoice.cpp --- a/textinput/peninputcommonctrls/src/peninputselectionlist/peninputlayoutinputmodechoice.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,392 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of touch input mode switch -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// CONSTANT -const TInt KInvalidImg = -1 ; -_LIT(KAknUtilsResourceFileName, "z:\\resource\\peninputmodeswitchutilsnew.rsc"); -const TInt KCCMask(0x00000fff); - - -// --------------------------------------------------------------------------- -// C++ constructor. -// --------------------------------------------------------------------------- -// -CPeninputLayoutInputmodelChoice::CPeninputLayoutInputmodelChoice(CFepUiLayout* aUiLayout, - TInt aControlId,TPluginInputMode aInputMode) -: CPeninputCommonChoiceList( aUiLayout, aControlId, KAknsIIDNone, KAknsIIDNone, EAutoFitLength ) - { - iConstructed = EFalse; - iUiLayout = aUiLayout; - iCurPluginInputMode = aInputMode; - iInputLanguage = ELangTest; - iSecretEditor = EFalse; - } - -// --------------------------------------------------------------------------- -// Symbian Constructor -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputLayoutInputmodelChoice* CPeninputLayoutInputmodelChoice::NewL( - CFepUiLayout* aUiLayout, - TInt aControlId, TPluginInputMode aInputMode) - { - CPeninputLayoutInputmodelChoice *self = new (ELeave) - CPeninputLayoutInputmodelChoice(aUiLayout, aControlId, aInputMode); - - CleanupStack::PushL(self); - self->CustomConstructL(); - CleanupStack::Pop(); - - return self; - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputLayoutInputmodelChoice::~CPeninputLayoutInputmodelChoice() - { - iInputModeItems.Close(); - delete iAknFepRepository; - } - -// --------------------------------------------------------------------------- -// Pop up touch input switch list -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutInputmodelChoice::PopUpSwitchListL( const TRect& aRtControl ) - { - ResetListItemL(); - - if (ItemsCount() > 0 && ItemByIndex(0)) - { - Display(aRtControl); - } - } - -// --------------------------------------------------------------------------- -// Initialize internal control -// --------------------------------------------------------------------------- -// -void CPeninputLayoutInputmodelChoice::DoInitializeControlL() - { - if (iConstructed) - { - return; - } - iAknFepRepository = CRepository::NewL(KCRUidAknFep); - - SizeChanged(); - - RFs fsSession; - - User::LeaveIfError(fsSession.Connect()); - CleanupClosePushL(fsSession); - - RResourceFile rsFile; - - TFileName resourceName(KAknUtilsResourceFileName); - CCoeEnv* coeEnv = CCoeEnv::Static(); - BaflUtils::NearestLanguageFile(fsSession, resourceName); - - rsFile.OpenL(fsSession, resourceName); - CleanupClosePushL(rsFile); - - // Create choice list - TResourceReader reader; - - HBufC8* rBuffer = rsFile.AllocReadLC(PENINPUTMODE_SWITCH_CHOICELIST & KCCMask); - reader.SetBuffer(rBuffer); - - TPtrC bmpFileName = reader.ReadTPtrC(); - TInt32 imgMajorSkinId = reader.ReadInt32(); - - if (CreateItemIconL(reader, &iPopupWndBgImg, bmpFileName, imgMajorSkinId)) - { - SetBackgroundBitmapL(iPopupWndBgImg); - } - - if (CreateItemIconL(reader, &iPopupWndFocusImg, bmpFileName, imgMajorSkinId)) - { - SetFocusBmp(iPopupWndFocusImg); - } - - CleanupStack::PopAndDestroy(1); - - // read name to list - - CreateChoiceItemL( reader, rsFile ); -/* CreateChoiceItemL(iInputModeItem[EPenInputHwr], EPluginInputModeHwr, - R_PENINPUTMODE_NAMES, reader, rsFile); - - CreateChoiceItemL(iInputModeItem[EPenInputVkb], EPluginInputModeVkb, - R_PENINPUTMODE_VKB, reader, rsFile); - - CreateChoiceItemL(iInputModeItem[EPenInputItut], EPluginInputModeItut, - R_PENINPUTMODE_FINGERITUT, reader, rsFile); - - CreateChoiceItemL(iInputModeItem[EPenInputFSc], EPluginInputModeFSc, - R_PENINPUTMODE_FULLHWR, reader, rsFile); - -*/ - CleanupStack::PopAndDestroy(2); - - iConstructed = ETrue; - } - -// --------------------------------------------------------------------------- -// Application size Changed -// --------------------------------------------------------------------------- -// -void CPeninputLayoutInputmodelChoice::SizeChanged() - { - /* - if ( Hiden() ) - { - iChoiceList->CloseWindow(); - } - */ - TRect mainPaneRect = MainPaneRect(); - - TAknWindowLineLayout choiceWnd = - AknLayoutScalable_Avkon::popup_choice_list_window(1).LayoutLine(); - - TAknLayoutRect choiceRect; - choiceRect.LayoutRect(mainPaneRect, choiceWnd); - - iItemRect = TRect( - 0, 0, choiceRect.Rect().Width(), - AknLayoutScalable_Avkon::list_single_choice_list_pane(0).LayoutLine().iH); - - TAknTextLineLayout choiceTextLayout = - AknLayoutScalable_Avkon::list_single_choice_list_pane_t1(1).LayoutLine(); - - const CFont* font = AknLayoutUtils::FontFromId(choiceTextLayout.iFont, NULL); - - SetFont(font); - SetItemRect(iItemRect, iItemRect); - - const TInt leftMargin = choiceTextLayout.il; - - SetMarginAndBaseline(leftMargin,font->HeightInPixels()); - SetFontColor(AKN_LAF_COLOR_STATIC(choiceTextLayout.iC)); - - if (iPopupWndBgImg) - { - AknIconUtils::SetSize(iPopupWndBgImg, - TSize(iItemRect.Width(), iItemRect.Height() * 3), - EAspectRatioNotPreserved); - } - - if (iPopupWndFocusImg) - { - AknIconUtils::SetSize(iPopupWndFocusImg, - TSize(iItemRect.Width(), iItemRect.Height() * 3), - EAspectRatioNotPreserved); - } - - iPopupItemSize = iItemRect.Size(); - } - -// --------------------------------------------------------------------------- -// Symbian second-phase constructor -// --------------------------------------------------------------------------- -// -void CPeninputLayoutInputmodelChoice::CustomConstructL( ) - { - //CFepLayoutChoiceList::NewL(iUiLayout, aControlId); - // call base class construction - this->ConstructL(); - - DoInitializeControlL(); - } - -// --------------------------------------------------------------------------- -// Insert choice item to input mode switch list -// --------------------------------------------------------------------------- -// -void CPeninputLayoutInputmodelChoice::CreateChoiceItemL( TResourceReader &aReader, - RResourceFile& aRsFile ) - { - HBufC8* rBuffer = aRsFile.AllocReadLC( R_PENINPUTMODE_NAMES & KCCMask ); - aReader.SetBuffer(rBuffer); - - TInt index; - TInt number; - number = aReader.ReadInt16(); - - CFepLayoutChoiceList::SItem item; - for (index = 0; index < number ; index++) - { - item.iCommand = aReader.ReadInt32(); - //TPtrC ptr = aReader.ReadTPtrC(); - HBufC* buf = aReader.ReadHBufCL(); - item.iText.Copy( buf->Des() ); - delete buf; - iInputModeItems.AppendL( item ); - } - - CleanupStack::PopAndDestroy(1); - } - -// --------------------------------------------------------------------------- -// Create choice item icon -// --------------------------------------------------------------------------- -// -TBool CPeninputLayoutInputmodelChoice::CreateItemIconL(TResourceReader &aReader, - CFbsBitmap** aImg, TPtrC& aBmpFileName, TInt32 aMajorSkinId) - { - MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance(); - - const TInt bmpId = aReader.ReadInt16(); - const TInt bmpMaskId = aReader.ReadInt16(); - const TInt bmpSkinId = aReader.ReadInt16(); - - TAknsItemID id; - id.Set(TInt(aMajorSkinId), bmpSkinId); - - if (bmpId != KInvalidImg) - { - AknsUtils::CreateIconL(skinInstance, - id, - *aImg, - aBmpFileName, - bmpId); - - AknIconUtils::SetSize(*aImg, iPopupItemSize, EAspectRatioNotPreserved); - - return ETrue; - } - - return EFalse; - } - - -// --------------------------------------------------------------------------- -// Get main pane rect -// --------------------------------------------------------------------------- -// -TRect CPeninputLayoutInputmodelChoice::MainPaneRect() - { - TAknWindowLineLayout appWnd; - TAknWindowLineLayout mainPane; - TAknLayoutRect mainPaneLayout; - - appWnd = AknLayoutScalable_Avkon::application_window( 0 ).LayoutLine(); - - TInt id = appWnd.iW > appWnd.iH ? 4 : 1; - - mainPane = AknLayoutScalable_Avkon::main_pane(id).LayoutLine(); - mainPaneLayout.LayoutRect(appWnd.Rect(), mainPane); - - return mainPaneLayout.Rect(); - } - - -// --------------------------------------------------------------------------- -// Reset choice list item -// --------------------------------------------------------------------------- -// -void CPeninputLayoutInputmodelChoice::ResetListItemL() - { - TInt layouts = iUiLayout->GetEnabledPluginMode(); - - ClearItemsL(); - - for ( int i = 0; i < iInputModeItems.Count(); i++ ) - { - if ( layouts & iInputModeItems[i].iCommand ) - { - InsertListItemL( iInputModeItems[i], iInputModeItems[i].iCommand ); - } - } - - SetListColumnNumWithLafL( ItemsCount() ); - } - -// --------------------------------------------------------------------------- -// Insert list item -// --------------------------------------------------------------------------- -// -void CPeninputLayoutInputmodelChoice::InsertListItemL( const CFepLayoutChoiceList::SItem& item, - TInt aInputMode) - { - TInt value = 0; - if (iAknFepRepository) - { - iAknFepRepository->Get(KAknFepInputTxtLang, value); - - iInputLanguage = TLanguage(value); - } - - if (iSecretEditor && (aInputMode == EPluginInputModeHwr || - aInputMode == EPluginInputModeFSc || aInputMode == EPluginInputModeFingerHwr)) - { - return; - } - - // Added for . Do not insert current input mode to the list - if (iUiLayout && (iUiLayout->PenInputType() == aInputMode)) - { - return; - } - - // if current input mode is in choice list, add item to it - // (!ItemByCommand(aInputMode)) - if(FindCommand(aInputMode) < 0) - { - AddItemL( item ); - } - } - -// --------------------------------------------------------------------------- -// Set current editor is secure -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutInputmodelChoice::SetSecretEditor(TBool aSecret) - { - iSecretEditor = aSecret; - } - - -// --------------------------------------------------------------------------- -// Get switch list rect -// --------------------------------------------------------------------------- -// -EXPORT_C TRect CPeninputLayoutInputmodelChoice::SwitchListRect() - { - return TRect(0,0,iItemRect.Width(), iItemRect.Height() * ItemsCount()); - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputselectionlist/peninputscrollablelist.cpp --- a/textinput/peninputcommonctrls/src/peninputselectionlist/peninputscrollablelist.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,727 +0,0 @@ -/* -* Copyright (c) 2008-2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation for button base and dragbar -* -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "peninputscrollablelist.h" - -const TInt KCtrlIdPageUp = 1; -const TInt KCtrlIdPageDown = 2; - -const TInt KInvalidResId = -1; -const TInt KInvalidBmp = -1; - - -const TInt KDisplayTextLen = KMaxItemTextLength + KAknBidiExtraSpacePerLine; - -EXPORT_C CFepLayoutScrollableList* CFepLayoutScrollableList::NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TSize aItemSize, - TInt aHorizontalMargin, - TInt aVerticalMargin, - TSize aNaviSize, - TSize aNaviInnerSize) - { - CFepLayoutScrollableList* self = NewLC(aUiLayout, - aControlId, - aItemSize, - aHorizontalMargin, - aVerticalMargin, - aNaviSize, - aNaviInnerSize); - CleanupStack::Pop(self); - return self; - } - -EXPORT_C CFepLayoutScrollableList* CFepLayoutScrollableList::NewLC(CFepUiLayout* aUiLayout, - TInt aControlId, - TSize aItemSize, - TInt aHorizontalMargin, - TInt aVerticalMargin, - TSize aNaviSize, - TSize aNaviInnerSize) - { - CFepLayoutScrollableList* self = new(ELeave) CFepLayoutScrollableList(aUiLayout, - aControlId, - aItemSize, - aHorizontalMargin, - aVerticalMargin, - aNaviSize, - aNaviInnerSize); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -EXPORT_C CFepLayoutScrollableList::~CFepLayoutScrollableList() - { - //iBmpList.ResetAndDestroy(); - //iBmpList.Close(); - - //delete iPageInfoFormat; - delete iPageInfo; - iItemRects.Close(); - delete iSeperationBmp; - delete iSeperationMaskBmp; - } - -EXPORT_C void CFepLayoutScrollableList::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - User::Leave(KErrArgument); - } - //delete the old bmp res - delete iSeperationBmp; - delete iSeperationMaskBmp; - iSeperationBmp = NULL; - iSeperationMaskBmp = NULL; - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - - TPtrC bmpFileName = reader.ReadTPtrC(); - TInt imgMajorSkinId = reader.ReadInt32(); - - TInt32 pageUpId = reader.ReadInt32(); - TInt32 pageDownId = reader.ReadInt32(); - TAknsItemID id; - - //read seperation line res - const TInt16 bmpId = reader.ReadInt16(); - const TInt16 bmpMskId = reader.ReadInt16(); - // read skin item id - const TInt skinitemid = reader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - if (bmpMskId != KInvalidBmp) - { - AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), - id, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG30, - iSeperationBmp, - iSeperationMaskBmp, - bmpFileName, - bmpId, - bmpMskId, - AKN_LAF_COLOR( 0 ) ); - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - iSeperationBmp, - bmpFileName, - bmpId); - } - } - CleanupStack::PopAndDestroy(1); // reader - - TResourceReader pageUpReader; - CCoeEnv::Static()->CreateResourceReaderLC(pageUpReader, pageUpId); - iPageUp->ConstructFromResourceL(pageUpReader); - CleanupStack::PopAndDestroy(1); // pageUpReader, imgreader - - TResourceReader pageDownReader; - CCoeEnv::Static()->CreateResourceReaderLC(pageDownReader, pageDownId); - iPageDown->ConstructFromResourceL(pageDownReader); - CleanupStack::PopAndDestroy(1); // pageDownReader, imgreader - } - -EXPORT_C void CFepLayoutScrollableList::SizeChanged(TSize aItemSize, - TInt aHorizontalMargin, - TInt aVerticalMargin, - TSize aNaviSize, - TSize aNaviInnerSize) - { - iItemSize = aItemSize; - iHorizontalMargin = aHorizontalMargin; - iVerticalMargin = aVerticalMargin; - iNaviSize = aNaviSize; - iNaviInnerSize = aNaviInnerSize; - - } - -EXPORT_C void CFepLayoutScrollableList::SetTextProperty(const CFont* aFont, - TRgb aFontColor) - { - iFont = aFont; - iFontColor = aFontColor; - - iBaselineOffset = iItemSize.iHeight/2 + aFont->AscentInPixels()/2; - } - -EXPORT_C void CFepLayoutScrollableList::Draw() - { - if (Hiden() || !Ready() || Rect().Size() == TSize(0,0)) - { - return; - } - - // draw background of whole control - CFbsBitGc* gc = static_cast(BitGc()); - - //mask bitmaps - TRect rect = Rect(); - - DrawOpaqueMaskBackground(); - - TRect innerRect = rect; - innerRect.Shrink(4, 4); - - // ----- draw bitmaps ----- - gc->Activate(BitmapDevice()); - gc->Clear(rect); - - AknsDrawUtils::DrawFrame(AknsUtils::SkinInstance(), - *gc, - rect, - innerRect, - iBgFrId, - KAknsIIDDefault); - - // draw item - for (TInt i = iCurrentPage * iOnePageItemCnt; - i < (iCurrentPage + 1) * iOnePageItemCnt && i < ItemArray().Count(); - i++) - { - DrawItem(i); - } - - // draw scroll area - if (iNaviBtnShown) - { - iPageUp->Draw(); - iPageDown->Draw(); - DrawPageInfo(); - } - } - -EXPORT_C void CFepLayoutScrollableList::DrawPageInfo() - { - CFbsBitGc* gc = static_cast(BitGc()); - //TPtr ptr = iPageInfo->Des(); - //FORMATPAGEINFO(ptr, *iPageInfoFormat, iCurrentPage + 1, iTotalPages); - TRAP_IGNORE(UpdatePageInfoL( iCurrentPage + 1, iTotalPages )); - - if( iPageInfoLineSet ) - { - TRgb color( KRgbBlack ); // sane default for nonskinned case - - TAknLayoutText textLayout; - textLayout.LayoutText(iScrollRect, iPageInfoTextLine ); - TAknsQsnTextColorsIndex clrIndex; - clrIndex = EAknsCIQsnTextColorsCG20; - - if ( AknsUtils::AvkonSkinEnabled() ) - { - AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), - color, KAknsIIDQsnTextColors, clrIndex ); - } - - textLayout.DrawText(*gc, iPageInfo->Des(), EFalse, color); - } - else - { - gc->UseFont(iFont); - - gc->SetBrushStyle(CGraphicsContext::ENullBrush); - gc->SetBrushColor(KRgbBlack); - gc->SetPenColor(iFontColor); - gc->SetPenStyle(CGraphicsContext::ESolidPen); - gc->SetPenSize(PenSize()); - - - gc->DrawText(iPageInfo->Des(), - iPageInfoRect, - iBaselineOffset, - CGraphicsContext::ECenter); - - gc->DiscardFont(); - } - } - -EXPORT_C TInt CFepLayoutScrollableList::HitTest(const TPoint& aPoint) - { - if( !Contains( aPoint ) ) - { - return EListOutside; - } - for (TInt i = 0; i < iItemRects.Count(); i++) - { - if (iItemRects[i].Contains(aPoint)) - { - if ((iCurrentPage * iOnePageItemCnt + i) < ItemArray().Count()) - return (iCurrentPage * iOnePageItemCnt + i); - else - break; - } - } - - return EListInsideNoneListItem; - } - -void CFepLayoutScrollableList::ScrollPageUp() - { - if (iCurrentPage >= 0 && iCurrentPage <= (iTotalPages - 1)) - { - if (iCurrentPage == 0) - { - iCurrentPage = iTotalPages - 1; - } - else - { - iCurrentPage--; - } - UpdateNaviButtonStates(); - Draw(); - UpdateArea( Rect(), EFalse); - } - -#ifdef RD_TACTILE_FEEDBACK - UpdateFeedbackArea(); -#endif // RD_TACTILE_FEEDBACK - } - -void CFepLayoutScrollableList::ScrollPageDown() - { - if (iCurrentPage >= 0 && iCurrentPage <= (iTotalPages - 1)) - { - if (iCurrentPage == iTotalPages - 1) - { - iCurrentPage = 0; - } - else - { - iCurrentPage++; - } - UpdateNaviButtonStates(); - Draw(); - UpdateArea( Rect(), EFalse); - } - -#ifdef RD_TACTILE_FEEDBACK - UpdateFeedbackArea(); -#endif // RD_TACTILE_FEEDBACK - } - -EXPORT_C void CFepLayoutScrollableList::UpdateNaviButtonStates() - { - iPageUp->SetDimmed( iTotalPages == 1 ); - iPageDown->SetDimmed(iTotalPages == 1 ); - } - -EXPORT_C void CFepLayoutScrollableList::CalcPageInfo() - { - iCurrentPage = 0; - iTotalPages = (ItemArray().Count() + iOnePageItemCnt - 1) / iOnePageItemCnt; - UpdateNaviButtonStates(); - } - -EXPORT_C void CFepLayoutScrollableList::CalculateItemWidth() - { - iItemSize.iWidth = iInitItemWidth; - const RPointerArray& allItems = ItemArray(); - for( TInt i = 0; i < allItems.Count() ; ++i ) - { - TInt itemWidth = iFont->TextWidthInPixels( allItems[i]->iText ); - if( itemWidth > iItemSize.iWidth ) - { - iItemSize.iWidth = itemWidth; - } - } - - TPixelsTwipsAndRotation ptScreenSize; - CCoeEnv::Static()->ScreenDevice()-> - GetDefaultScreenSizeAndRotation(ptScreenSize); - // calculate the length exclude the item - TInt naviWidth = iNaviBtnShown? iNaviSize.iWidth : 0; - TInt len = 4*iHorizontalMargin + naviWidth; - if( iItemSize.iWidth + len > ptScreenSize.iPixelSize.iWidth) - { - iItemSize.iWidth = ptScreenSize.iPixelSize.iWidth - len; - } - } - -EXPORT_C void CFepLayoutScrollableList::DrawItem(TInt aItemIndex, TBool aItemActive) - { - // aItemIndex is relative to whole item array - TBool isSpecial = ((aItemIndex == ItemArray().Count() - 1) && iSpecialItemOn); - CFbsBitGc* gc = static_cast(BitGc()); - TRect itemRect = iItemRects[aItemIndex % iOnePageItemCnt]; - TBool isFocus = aItemIndex == iCurFocusItem; - - if ( isSpecial ) - { - //mask bitmaps - gc->Activate(MaskBitmapDevice()); - gc->SetBrushStyle(CGraphicsContext::ESolidBrush); - gc->SetBrushColor(TRgb(KOpaqueColor));//Non transparent at all - gc->SetPenStyle(CGraphicsContext::ESolidPen); - gc->SetPenSize(PenSize()); - gc->SetPenColor(TRgb(KOpaqueColor)); - gc->DrawRect(itemRect); - // ----- draw bitmaps ----- - gc->Activate(BitmapDevice()); - - TRect sepRect = itemRect; - sepRect.iBr.iY = sepRect.iTl.iY + 2; - sepRect.Move( 0, -4 ); - SetListSeperationRect( sepRect ); - // draw background frame of special item - if( iSeperationBmp ) - { - TRect srcRect( TPoint( 0, 0 ), iSeperationBmp->SizeInPixels() ); - - if( iSeperationMaskBmp ) - { - gc->BitBltMasked( iSeperationRect.iTl, - iSeperationBmp, - srcRect, - iSeperationMaskBmp, - ETrue); - - } - else - { - gc->BitBlt( iSeperationRect.iTl, - iSeperationBmp, - srcRect ); - } - } - } - if( isFocus ) - { - //mask bitmaps - gc->Activate(MaskBitmapDevice()); - gc->SetBrushStyle(CGraphicsContext::ESolidBrush); - gc->SetBrushColor(TRgb(KOpaqueColor));//Non transparent at all - gc->SetPenStyle(CGraphicsContext::ESolidPen); - gc->SetPenSize(PenSize()); - gc->SetPenColor(TRgb(KOpaqueColor)); - gc->DrawRect(itemRect); - - // ----- draw bitmaps ----- - gc->Activate(BitmapDevice()); - - // draw frame - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TRect innerRect = itemRect; - innerRect.Shrink(7, 7); - AknsDrawUtils::DrawFrame(skin, - *gc, - itemRect, - innerRect, - aItemActive ? iItemActiveFrId : iItemFrId, - KAknsIIDDefault); - } - - // draw text - if (iTextLineSet) - { - gc->SetBrushStyle(CGraphicsContext::ENullBrush); - gc->SetBrushColor(KRgbBlack); - TRgb color( KRgbBlack ); // sane default for nonskinned case - - TAknLayoutText textLayout; - textLayout.LayoutText(itemRect, - iTextLine); - TAknsQsnTextColorsIndex clrIndex; - clrIndex = isFocus ? EAknsCIQsnTextColorsCG10 : EAknsCIQsnTextColorsCG20; - - if ( AknsUtils::AvkonSkinEnabled() ) - { - AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), - color, KAknsIIDQsnTextColors, clrIndex ); - } - - textLayout.DrawText(*gc, ItemArray()[aItemIndex]->iText, ETrue, color); - } - else if (iFont) - { - gc->UseFont(iFont); - - gc->SetBrushStyle(CGraphicsContext::ENullBrush); - gc->SetBrushColor(KRgbBlack); - gc->SetPenColor(iFontColor); - gc->SetPenStyle(CGraphicsContext::ESolidPen); - gc->SetPenSize(PenSize()); - - if (iFont->TextWidthInPixels(ItemArray()[aItemIndex]->iText) > itemRect.Width()) - { - TBuf buf; - AknBidiTextUtils::ConvertToVisualAndClip(ItemArray()[aItemIndex]->iText, - buf, - *iFont, - itemRect.Width(), - itemRect.Width()); - gc->DrawText(buf, - itemRect, - iBaselineOffset, - CGraphicsContext::ELeft); - } - else - { - gc->DrawText(ItemArray()[aItemIndex]->iText, - itemRect, - iBaselineOffset, - CGraphicsContext::ELeft); - } - - gc->DiscardFont(); - } - } - -EXPORT_C void CFepLayoutScrollableList::ConstructL() - { - CFepLayoutPopupWnd::ConstructL(); - - //create page up/down buttons - iPageUp = CAknFepCtrlCommonButton::NewL( - UiLayout(), - KCtrlIdPageUp, - KAknsIIDQsnFrButtonNormal, - KAknsIIDQsnFrButtonPressed, - KAknsIIDQsnFrButtonInactive); - iPageUp->AddEventObserver( this ); - iPageDown = CAknFepCtrlCommonButton::NewL( - UiLayout(), - KCtrlIdPageDown, - KAknsIIDQsnFrButtonNormal, - KAknsIIDQsnFrButtonPressed, - KAknsIIDQsnFrButtonInactive); - iPageDown->AddEventObserver( this ); - AddControlL( iPageUp ); - AddControlL( iPageDown ); - } - -EXPORT_C CFepLayoutScrollableList::CFepLayoutScrollableList(CFepUiLayout* aUiLayout, - TInt aControlId, - TSize aItemSize, - TInt aHorizontalMargin, - TInt aVerticalMargin, - TSize aNaviSize, - TSize aNaviInnerSize) - :CFepLayoutChoiceList(aUiLayout, aControlId), - iItemSize(aItemSize), - iNaviSize(aNaviSize), - iNaviInnerSize(aNaviInnerSize), - iHorizontalMargin(aHorizontalMargin), - iVerticalMargin(aVerticalMargin), - iSpecialItemOn(ETrue), - iNaviBtnShown( ETrue ), - iOnePageItemCnt(4) - { - iCurFocusItem = -1; - iInitItemWidth = aItemSize.iWidth; - } - -EXPORT_C void CFepLayoutScrollableList::ReCalcLayout() - { - CalculateItemWidth(); - CalcPageInfo(); - iContentRect = TRect(TPoint(), TSize(2*iHorizontalMargin + iItemSize.iWidth, - (iOnePageItemCnt + 1)*iVerticalMargin + iOnePageItemCnt*iItemSize.iHeight)); - TRect ctrlRect = iContentRect; - - iItemRects.Reset(); - for (TInt i = 0; i < iOnePageItemCnt; i++) - { - iItemRects.Append(TRect(TPoint(iContentRect.iTl.iX + iHorizontalMargin, - iContentRect.iTl.iY + (i+1)* iVerticalMargin + - i * iItemSize.iHeight) , - iItemSize)); - } - - if (iNaviBtnShown) - { - iScrollRect = TRect(TPoint(iContentRect.Width(), 0), - TSize(2*iHorizontalMargin + iNaviSize.iWidth, iContentRect.Height())); - iPageUpRect = TRect(TPoint(iScrollRect.iTl.iX + iHorizontalMargin, - iScrollRect.iTl.iY + iVerticalMargin), - iNaviSize); - - TPoint innerTl ( iPageUpRect.iTl.iX + ( iNaviSize.iWidth - iNaviInnerSize.iWidth ) /2, - iPageUpRect.iTl.iY + ( iNaviSize.iHeight - iNaviInnerSize.iHeight ) /2 ); - iPageUp->SizeChanged( iPageUpRect, TRect( innerTl, iNaviInnerSize), ETrue ); - - iPageDownRect = TRect(TPoint(iPageUpRect.iTl.iX, - iScrollRect.iBr.iY - iVerticalMargin - iNaviSize.iHeight), - iNaviSize); - - innerTl = TPoint(iPageDownRect.iTl.iX + ( iNaviSize.iWidth - iNaviInnerSize.iWidth ) /2, - iPageDownRect.iTl.iY + ( iNaviSize.iHeight - iNaviInnerSize.iHeight ) /2 ); - iPageDown->SizeChanged( iPageDownRect, TRect(innerTl, iNaviInnerSize), ETrue ); - - iPageInfoRect = TRect(TPoint(iScrollRect.iTl.iX, - iScrollRect.iTl.iY + iScrollRect.Height()/2 - iNaviSize.iHeight/2), - iNaviSize); - - ctrlRect.BoundingRect(iScrollRect); - } - - SetRect(ctrlRect); - UpdateNaviButtonStates(); - } - -EXPORT_C void CFepLayoutScrollableList::HandleControlEvent(TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData) - { - if( aEventType == EEventButtonUp ) - { - if( aCtrl == iPageUp ) - { - ScrollPageUp(); - } - else if( aCtrl == iPageDown ) - { - ScrollPageDown(); - } - } - } - -EXPORT_C void CFepLayoutScrollableList::UpdatePageInfoL( TInt aCurrentPage, TInt aTotalPage ) - { - if( iPageInfoResID == 0 ) - return; - - if (iPageInfo) - { - delete iPageInfo; - iPageInfo = NULL; - } - CArrayFix< TInt >* aInts = new( ELeave ) CArrayFixFlat< TInt >(2); - CleanupStack::PushL(aInts); - - aInts->AppendL( aCurrentPage ); - aInts->AppendL( aTotalPage ); - iPageInfo = StringLoader::LoadL( iPageInfoResID, *aInts ); - - CleanupStack::PopAndDestroy(aInts); - } - -EXPORT_C void CFepLayoutScrollableList::SetImgFrId(TAknsItemID aBgFrId, - TAknsItemID aNaviFrId, - TAknsItemID aNaviActiveFrId, - TAknsItemID aNaviDimFrId, - TAknsItemID aItemFrId, - TAknsItemID aItemActiveFrId) - { - iBgFrId = aBgFrId; - iItemFrId = aItemFrId; - iItemActiveFrId = aItemActiveFrId; - iPageUp->SetImageFrameId( aNaviFrId, aNaviActiveFrId, aNaviDimFrId ); - iPageDown->SetImageFrameId( aNaviFrId, aNaviActiveFrId, aNaviDimFrId ); - } - -EXPORT_C void CFepLayoutScrollableList::Move(const TPoint& aOffset) - { - CFepLayoutChoiceList::Move(aOffset); - iContentRect.Move( aOffset ); - for (TInt i = 0; i < iOnePageItemCnt && i < iItemRects.Count(); i++) - { - iItemRects[i].Move( aOffset ); - } - iScrollRect.Move( aOffset ); - iPageInfoRect.Move( aOffset ); - iSeperationRect.Move( aOffset ); - } -EXPORT_C void CFepLayoutScrollableList::SetListSeperationRect( const TRect& aRect ) - { - iSeperationRect = aRect; - if( iSeperationBmp ) - { - AknIconUtils::SetSize(iSeperationBmp, aRect.Size(), EAspectRatioNotPreserved ); - } - if( iSeperationMaskBmp ) - { - AknIconUtils::SetSize(iSeperationMaskBmp, aRect.Size(), EAspectRatioNotPreserved ); - } - } - - - -EXPORT_C void CFepLayoutScrollableList::Hide(TBool aFlag) - { - CFepLayoutPopupWnd::Hide(aFlag); - -#ifdef RD_TACTILE_FEEDBACK - if (!aFlag) - { - iLastPageItemRect = iRect; - - UpdateFeedbackArea(); - - if (!iPageUp->IsDimmed()) - { - UiLayout()->RegisterFeedbackArea(reinterpret_cast(iPageUp),iPageUp->Rect(),iPageUp->TactileFeedbackType()); - } - - if (!iPageDown->IsDimmed()) - { - UiLayout()->RegisterFeedbackArea(reinterpret_cast(iPageDown),iPageDown->Rect(),iPageDown->TactileFeedbackType()); - } - } - else - { - if (!iPageUp->IsDimmed()) - { - UiLayout()->DeRegisterFeedbackArea(reinterpret_cast(iPageUp),iPageUp->Rect()); - } - - if (!iPageDown->IsDimmed()) - { - UiLayout()->DeRegisterFeedbackArea(reinterpret_cast(iPageDown), - iPageDown->Rect()); - } - } -#endif // RD_TACTILE_FEEDBACK - } - -#ifdef RD_TACTILE_FEEDBACK -void CFepLayoutScrollableList::UpdateFeedbackArea() - { - // calculate total height of all aviliable items in current page - TInt curPageItemCount = 0; - for (TInt i = iCurrentPage * iOnePageItemCnt; - i < (iCurrentPage + 1) * iOnePageItemCnt && i < ItemArray().Count(); - i++) - { - curPageItemCount++; - } - - TRect itemRect(TPoint(iItemRects[0].iTl), - TSize(iItemRects[0].Width(), iItemRects[0].Height() * curPageItemCount)); - - UiLayout()->ChangeFeedbackArea(reinterpret_cast(this),itemRect,iLastPageItemRect); - iLastPageItemRect = itemRect; - } -#endif // RD_TACTILE_FEEDBACK -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputselectionlist/peninputselectionlist.cpp --- a/textinput/peninputcommonctrls/src/peninputselectionlist/peninputselectionlist.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,426 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -#include -#include -#include -#include -#include -#include -#include -#include - -#include "peninputselectionlist.h" - -// constant definition -const TInt KInvalidResId = -1; -const TInt KInvalidBmp = -1; -const TInt KInvalidItemIndex = -1; - -EXPORT_C CPenInputSelectionList* CPenInputSelectionList::NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TPoint aTopLeftPoint, - TSize aItemSize, - TInt aItemHorizontalMargin) - { - CPenInputSelectionList* self = new (ELeave) CPenInputSelectionList(aUiLayout, - aControlId, - aTopLeftPoint, - aItemSize, - aItemHorizontalMargin); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -EXPORT_C CPenInputSelectionList::~CPenInputSelectionList() - { - iItemList.Reset(); - iItemList.Close(); - - iBmpList.ResetAndDestroy(); - iBmpList.Close(); - } - -void CPenInputSelectionList::RecalculateCtrlRect() - { - if (iItemList.Count() == 0) - { - SetRect(TRect(0, 0, 0, 0)); - } - else - { - SetRect(TRect(iItemList[0].iRect.iTl, - iItemList[iItemList.Count() - 1].iRect.iBr)); - } - } - -EXPORT_C void CPenInputSelectionList::SizeChanged(TPoint aTopLeftPoint, - TSize aItemSize, - TInt aItemHorizontalMargin) - { - iTopLeftPoint = aTopLeftPoint; - iItemSize = aItemSize; - iItemHorizontalMargin = aItemHorizontalMargin; - - for (TInt i = 0; i < iItemList.Count(); i++) - { - iItemList[i].iRect = TRect(TPoint(aTopLeftPoint.iX, - aTopLeftPoint.iY + - i * (aItemHorizontalMargin + iItemSize.iHeight)), - aItemSize); - } - - RecalculateCtrlRect(); - } - -EXPORT_C void CPenInputSelectionList::SetItemsL(const RPointerArray& aItemList) - { - Hide(ETrue); - - iItemList.Reset(); - - for (TInt i = 0; i < aItemList.Count(); i++) - { - SItem item(TRect(TPoint(iTopLeftPoint.iX, - iTopLeftPoint.iY + i * (iItemHorizontalMargin + iItemSize.iHeight)), - iItemSize), - *aItemList[i]); - iItemList.AppendL(item); - } - - RecalculateCtrlRect(); - } - -EXPORT_C void CPenInputSelectionList::AddItemL(const TDesC& aItem) - { - SItem item(TRect(TPoint(iTopLeftPoint.iX, - iTopLeftPoint.iY + iItemList.Count() * (iItemHorizontalMargin + - iItemSize.iHeight)),iItemSize), aItem); - iItemList.AppendL(item); - - RecalculateCtrlRect(); - } - -EXPORT_C void CPenInputSelectionList::RemoveItem(TInt aItemIndex) - { - if (aItemIndex < 0 || aItemIndex >= iItemList.Count()) - { - return; - } - - iItemList.Remove(aItemIndex); - - for (TInt i = aItemIndex; i < iItemList.Count(); i++) - { - iItemList[i].iRect.Move(-iItemHorizontalMargin, 0); - } - - RecalculateCtrlRect(); - } - -EXPORT_C void CPenInputSelectionList::RemoveAllItems() - { - iItemList.Reset(); - RecalculateCtrlRect(); - } - -EXPORT_C void CPenInputSelectionList::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - User::Leave(KErrArgument); - } - - iBmpList.ResetAndDestroy(); - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - - TPtrC bmpFileName = reader.ReadTPtrC(); - TInt imgMajorSkinId = reader.ReadInt32(); - - TAknsItemID id; - - for (TInt i = 0; i < EBmpLastType + 1; i+=2) - { - TInt bmpid = reader.ReadInt16(); - TInt maskid = reader.ReadInt16(); - TInt minorskinid = reader.ReadInt16(); - - id.Set(imgMajorSkinId, minorskinid); - - CFbsBitmap* bmp = NULL; - CFbsBitmap* maskbmp = NULL; - - if (bmpid != KInvalidBmp) - { - if (maskid != KInvalidBmp) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - maskbmp, - bmpFileName, - bmpid, - maskid); - - AknIconUtils::SetSize(maskbmp, iItemSize, EAspectRatioNotPreserved); - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - bmpFileName, - bmpid); - } - - AknIconUtils::SetSize(bmp, iItemSize, EAspectRatioNotPreserved); - } - - iBmpList.AppendL(bmp); - iBmpList.AppendL(maskbmp); - } - - CleanupStack::PopAndDestroy(); // reader - } - -EXPORT_C void CPenInputSelectionList::SetTextProperty(const CFont* aFont, - TRgb aFontColor) - { - iFont = aFont; - iFontColor = aFontColor; - - iBaselineOffset = iItemSize.iHeight/2 + aFont->AscentInPixels()/2; - } - -TInt CPenInputSelectionList::HitTest(const TPoint& aPoint) - { - if (!Rect().Contains(aPoint)) - { - return KErrGeneral; - } - - for (TInt i = 0; i < iItemList.Count(); i++) - { - if (iItemList[i].iRect.Contains(aPoint)) - { - return i; - } - } - - return KErrNotFound; - } - -EXPORT_C CFepUiBaseCtrl* CPenInputSelectionList::HandlePointerDownEventL(const TPoint& aPoint) - { - CFepUiBaseCtrl::HandlePointerDownEventL(aPoint); - - TInt index = HitTest(aPoint); - - if (index >= 0) - { - if (index != iFocusItemIndex) - { - TInt prev = iFocusItemIndex; - iFocusItemIndex = index; - - if (prev != KInvalidItemIndex) - { - DrawItem(prev); - } - - DrawItem(iFocusItemIndex); - } - } - else if (index == KErrGeneral) - { - SetPointerDown(EFalse); - CloseWindow(); - } - - return this; - } - -EXPORT_C CFepUiBaseCtrl* CPenInputSelectionList::HandlePointerUpEventL(const TPoint& aPoint) - { - CFepUiBaseCtrl::HandlePointerUpEventL(aPoint); - - TInt index = HitTest(aPoint); - - if (index >= 0) - { - CloseWindow(); - - if (iFocusItemIndex != KInvalidItemIndex) - { - TPtrC ptr; - ptr.Set(reinterpret_cast(&iFocusItemIndex), sizeof(TInt)/sizeof(TText)); - ReportEvent(iEventId, ptr); - } - } - - iFocusItemIndex = KInvalidItemIndex; - - return this; - } - -EXPORT_C CFepUiBaseCtrl* CPenInputSelectionList::HandlePointerMoveEventL(const TPoint& aPoint) - { - CFepUiBaseCtrl::HandlePointerMoveEventL(aPoint); - - if (PointerDown()) - { - TInt index = HitTest(aPoint); - - if (index != iFocusItemIndex && index != KInvalidItemIndex) - { - TInt prev = iFocusItemIndex; - iFocusItemIndex = index; - - if( prev != -1 ) - { - DrawItem(prev); - } - - DrawItem(iFocusItemIndex); - } - } - - return this; - } - -EXPORT_C void CPenInputSelectionList::Display() - { - //Hide(EFalse); - BringToTop(); - Draw(); - } - -EXPORT_C void CPenInputSelectionList::CloseWindow() - { - Hide(ETrue); - RemoveAllItems(); - } - -CPenInputSelectionList::CPenInputSelectionList(CFepUiLayout* aUiLayout, - TInt aControlId, - TPoint aTopLeftPoint, - TSize aItemSize, - TInt aItemHorizontalMargin) - :CFepUiBaseCtrl(TRect(0, 0, 0, 0), aUiLayout, aControlId), - iTopLeftPoint(aTopLeftPoint), - iItemSize(aItemSize), - iItemHorizontalMargin(aItemHorizontalMargin), - iFocusItemIndex(KInvalidItemIndex), - iFrId(KAknsIIDQsnFrPopupSub), - iCenterFrId(KAknsIIDQsnFrPopupCenterSubmenu) - { - SetControlType(EUserCtrlBase | ECtrlBaseCtrl); - } - -void CPenInputSelectionList::ConstructL() - { - BaseConstructL(); - Hide(ETrue); - } - -void CPenInputSelectionList::Draw() - { - if(!AbleToDraw()) - return; - - for (TInt i = 0; i < iItemList.Count(); i++) - { - DrawItem(i); - } - - UiLayout()->UpdateArea(this, this->Rect(), EFalse); - } - -void CPenInputSelectionList::DrawItem(TInt aItemIndex) - { - CFbsBitGc* gc = static_cast(BitGc()); - - //mask bitmaps - gc->Activate( MaskBitmapDevice() ); - - gc->SetBrushStyle( CGraphicsContext::ESolidBrush ); - gc->SetBrushColor(TRgb(KOpaqueColor));//Non transparent at all - gc->SetPenStyle(CGraphicsContext::ESolidPen ); - gc->SetPenSize(PenSize()); - gc->SetPenColor(TRgb(KOpaqueColor) ); - gc->DrawRect(iItemList[aItemIndex].iRect); - - // ----- draw bitmaps ----- - gc->Activate(BitmapDevice()); - - // draw frame - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - - TRect outerRect; - TRect innerRect; - CalculateFrameRects( iItemList[aItemIndex].iRect, outerRect, innerRect); - - AknsDrawUtils::DrawFrame( - skin, *gc, - outerRect, innerRect, - iFrId, iCenterFrId); - - // draw text - if (iTextLineSet) - { - TAknLayoutText textLayout; - textLayout.LayoutText(iItemList[aItemIndex].iRect, - iTextLine); - textLayout.DrawText(*gc, iItemList[aItemIndex].iText); - } - else if (iFont) - { - gc->UseFont(iFont); - - gc->SetBrushStyle(CGraphicsContext::ENullBrush); - gc->SetBrushColor(KRgbBlack); - gc->SetPenColor(iFontColor); - gc->SetPenStyle(CGraphicsContext::ESolidPen); - gc->SetPenSize(PenSize()); - - gc->DrawText(iItemList[aItemIndex].iText, - iItemList[aItemIndex].iRect, - iBaselineOffset, - CGraphicsContext::ECenter); - - gc->DiscardFont(); - } - } -void CPenInputSelectionList::CalculateFrameRects( const TRect aRect, - TRect& aOuterRect, - TRect& aInnerRect ) const - { - TRect windowRect = aRect; - - TAknLayoutRect topLeft; - topLeft.LayoutRect(windowRect, SkinLayout::Submenu_skin_placing_Line_2()); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect(windowRect, SkinLayout::Submenu_skin_placing_Line_5()); - - aOuterRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); - aInnerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); - } -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputvkbctrl/peninputvkbctrlext.cpp --- a/textinput/peninputcommonctrls/src/peninputvkbctrl/peninputvkbctrlext.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,393 +0,0 @@ -/* -* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: vkb control extension -* -*/ - - -// System includes -#include -#include -#include -#include -#include - -// User includes -#include "peninputvkbctrlext.h" -#include "peninputvkbctrllayout.h" - -// Constants -const TUint32 KDefaultTextColor = 0x000000; -const TInt32 KInvalidResId = -1; -const TInt KInvalidImg = -1 ; -// ======== MEMBER FUNCTIONS ======== - - - -// -------------------------------------------------------------------------- -// CPeninputVkbCtrlExt::CPeninputVkbCtrlExt -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputVkbCtrlExt::CPeninputVkbCtrlExt( const TRect& aRect, - CFepUiLayout* aUiLayout, TInt aControlId, const TFontSpec& aFontSpec,TBool aIrregular ) - : CVirtualKeyboard( aRect, aUiLayout, aControlId, aFontSpec, aIrregular ) - { - } - -// -------------------------------------------------------------------------- -// CPeninputVkbCtrlExt::NewL -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputVkbCtrlExt* CPeninputVkbCtrlExt::NewL( const TRect& aRect, - CFepUiLayout* aUiLayout, TInt aControlId, const CFont* aFont,TBool aIrregular) - { - TFontSpec fontSpec; - - CPeninputVkbCtrlExt* vkb = new (ELeave) - CPeninputVkbCtrlExt( aRect, aUiLayout, aControlId, fontSpec,aIrregular ); - CleanupStack::PushL( vkb ); - vkb->ConstructL(); - vkb->SetFont( aFont ); - CleanupStack::Pop( vkb ); - - return vkb; - } - -// -------------------------------------------------------------------------- -// CPeninputVkbCtrlExt::~CPeninputVkbCtrlExt -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputVkbCtrlExt::~CPeninputVkbCtrlExt() - { - Reset(); - if( iResourceId == KInvalidImg ) - { - SetBackgroundBmp( NULL ); - SetBackgroundMaskBmp( NULL ); - } - } - -// -------------------------------------------------------------------------- -// CPeninputVkbCtrlExt::SizeChanged -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputVkbCtrlExt::SizeChanged( const TInt aUnitWidth, - const TInt aUnitHeight, - const TPoint& aLeftTopPoint ) - { - iUnitWidth = aUnitWidth; - iUnitHeight = aUnitHeight; - iLeftTopPoint = aLeftTopPoint; - - if ( iVkbLayoutInfo ) - { - // 1.Reset the size and position of Vkb ctrl and keys - TRect rect = TRect( iLeftTopPoint, TSize( iUnitWidth * iVkbLayoutInfo->Columns(), - iUnitHeight * iVkbLayoutInfo->Rows() ) ); - SetRect( rect ); - - // 2.Move all keys(Needn't change size, because it has been - } - } - -// -------------------------------------------------------------------------- -// CPeninputVkbCtrlExt::SizeChanged -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputVkbCtrlExt::SizeChanged( const TRect& aRect ) - { - SetRect( aRect ); - } - - -// CPeninputVkbCtrlExt::ReorganizeVkbKeys -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputVkbCtrlExt::ReorganizeVkbKeys( - CPeninputVkbLayoutInfo* aVkbLayoutInfo ) - { - Reset(); - - iVkbLayoutInfo = aVkbLayoutInfo; - - TRect rect = TRect( iLeftTopPoint, TSize( iUnitWidth * iVkbLayoutInfo->Columns(), - iUnitHeight * iVkbLayoutInfo->Rows() ) ); - if( iResourceId != KInvalidImg ) - { - if( BackgroundBmp() && BackgroundBmp()->SizeInPixels() != Rect().Size() ) - AknIconUtils::SetSize(BackgroundBmp(), Rect().Size(), EAspectRatioNotPreserved); - if( BkMaskBmp() && BkMaskBmp()->SizeInPixels() != Rect().Size() ) - AknIconUtils::SetSize(BkMaskBmp(), Rect().Size(), EAspectRatioNotPreserved); - } - else - { - if ( iVkbLayoutInfo->BgBmp() ) - { - SetBackgroundBmp( iVkbLayoutInfo->BgBmp() ) ; - } - - if ( iVkbLayoutInfo->BgMaskBmp() ) - { - SetBackgroundMaskBmp( iVkbLayoutInfo->BgMaskBmp() ); - } - } -// SetRect( rect ); - - // According the information in vkbLayout to construct all keys and - // then add into the keys. -/* - if ( iVkbLayoutInfo->BgBmp() ) - { - TRAP_IGNORE( SetBackgroundBitmapL( iVkbLayoutInfo->BgBmp() ) ); - } - - if ( iVkbLayoutInfo->BgMaskBmp() ) - { - TRAP_IGNORE( SetBackgroundMaskBitmapL( iVkbLayoutInfo->BgMaskBmp() ) ); - } -*/ - if ( iVkbLayoutInfo->DimBmp() ) - { - SetDimKeyBmp( iVkbLayoutInfo->DimBmp() ); - } - - if ( iVkbLayoutInfo->DimMaskBmp() ) - { - SetDimKeyMaskBmp( iVkbLayoutInfo->DimMaskBmp() ); - } - - TInt count = iVkbLayoutInfo->HighlightBmps().Count(); - - TRAP_IGNORE( - for ( TInt i = 0; i < count; i++ ) - { - AddKeyHighLightBitmapL(iVkbLayoutInfo->HighlightBmps()[i]); - } - ); - - count = iVkbLayoutInfo->HighlightMaskBmps().Count(); - - TRAP_IGNORE( - for ( TInt i = 0; i < count; i++ ) - { - AddKeyHighLightMaskBitmapL(iVkbLayoutInfo->HighlightMaskBmps()[i]); - } - ); - - count = iVkbLayoutInfo->KeyInfoList().Count(); - TRAP_IGNORE( - for ( TInt i = 0; i < count; i++ ) - { - iVkbLayoutInfo->KeyInfoList()[i]->Key()->SetDimmed( EFalse ); - AddKeyL( iVkbLayoutInfo->KeyInfoList()[i]->Key() ); - } - ); - - TRgb textColor; - TInt error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - textColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG59); - if (error != KErrNone) - { - textColor = TRgb( KDefaultTextColor ); - } - SetFontColor( textColor ); - - Draw(); - } - -// -------------------------------------------------------------------------- -// CPeninputVkbCtrlExt::Reset -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputVkbCtrlExt::Reset() - { - const RPointerArray& keys = KeyArray(); - for(TInt i = keys.Count() - 1 ; i >= 0 ; --i) - { - RemoveKey(keys[i]); - } - - const RPointerArray& bmps = KeyHighlightBmpList(); - for(TInt i = bmps.Count() - 1 ; i >= 0 ; --i) - { - RemoveKeyHighLightBitmap(i); - } - - const RPointerArray& maskbmps = KeyHighlightMaskBmpList(); - for(TInt i = maskbmps.Count() - 1 ; i >= 0 ; --i) - { - RemoveKeyHighLightMaskBitmap(i); - } - - SetDimKeyBmp( NULL ); - SetDimKeyMaskBmp( NULL ); - - iVkbLayoutInfo = NULL; - } - -// -------------------------------------------------------------------------- -// CPeninputVkbCtrlExt::Move -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputVkbCtrlExt::Move( const TPoint& aOffset ) - { - TRect rect = Rect(); - rect.Move( aOffset ); - SetRect( rect ); - } - -// -------------------------------------------------------------------------- -// CPeninputVkbCtrlExt::DimKeys -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputVkbCtrlExt::DimKeys( const HBufC* aPermitted ) - { - TInt count = iVkbLayoutInfo->KeyInfoList().Count(); - - for ( TInt i = 0; i < count ; i++ ) - { - TChar ch = TChar( (TUint)( KeyArray()[i]->KeyCode() ) ); - TInt index = aPermitted->Locate( ch ) ; - - if ( index == KErrNotFound ) - { - DimKey( KeyArray()[i], ETrue ); - } - } - } - -// -------------------------------------------------------------------------- -// CPeninputVkbCtrlExt::DimKeySet -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputVkbCtrlExt::DimKeySet( const HBufC* aSet, TBool aDim ) - { - TInt keyCount = iVkbLayoutInfo->KeyInfoList().Count(); - TInt setCount = const_cast(aSet)->Des().Length(); - TInt findNum = 0; - - for ( TInt i = 0; i < keyCount ; i++ ) - { - TChar ch = TChar( (TUint)( KeyArray()[i]->KeyCode() ) ); - TInt index = aSet->Locate( ch ) ; - - if ( index != KErrNotFound ) - { - findNum++; - DimKey( KeyArray()[i], aDim ); - } - - if ( findNum == setCount ) - { - break; - } - } - } - -// -------------------------------------------------------------------------- -// CPeninputVkbCtrlExt::CancelDims -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputVkbCtrlExt::CancelDims() - { - TInt count = iVkbLayoutInfo->KeyInfoList().Count(); - - for ( TInt i = 0; i < count ; i++ ) - { - DimKey( KeyArray()[i], EFalse ); - } - } - -// -------------------------------------------------------------------------- -// CPeninputVkbCtrlExt::ConstructFromResourceL -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputVkbCtrlExt::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - return; - } - - // Release original resource - if( BackgroundBmp() ) - { - CFbsBitmap* bkBmp = BackgroundBmp(); - delete bkBmp; - SetBackgroundBmp( NULL ); - } - if( BkMaskBmp() ) - { - CFbsBitmap* bkMaskBmp = BkMaskBmp(); - delete bkMaskBmp; - SetBackgroundMaskBmp( NULL ); - } - - TResourceReader resReader; - CCoeEnv::Static()->CreateResourceReaderLC( resReader, iResourceId ); - - TPtrC bmpFileName = resReader.ReadTPtrC(); - TInt32 imgMajorSkinId = resReader.ReadInt32(); - - TAknsItemID id; - TInt skinitemid; - - MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); - const TInt16 bmpId = resReader.ReadInt16(); - const TInt16 bmpMskId = resReader.ReadInt16(); - skinitemid = resReader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidImg) - { - CFbsBitmap* backgroundImg = NULL; - CFbsBitmap* backgroundMaskImg = NULL; - if (bmpMskId != KInvalidImg) - { - AknsUtils::CreateIconL(skininstance, - id, - backgroundImg, - backgroundMaskImg, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateIconL(skininstance, - id, - backgroundImg, - bmpFileName, - bmpId); - } - - SetBackgroundBmp( backgroundImg ); - SetBackgroundMaskBmp( backgroundMaskImg ); - } - CleanupStack::PopAndDestroy( 1 ); - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputvkbctrl/peninputvkbctrllayout.cpp --- a/textinput/peninputcommonctrls/src/peninputvkbctrl/peninputvkbctrllayout.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,902 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of button -* -*/ - - -// system includes -#include -#include -#include -#include - -// user includes -#include "peninputvkbctrllayout.h" -#include "peninputvkbctrlext.h" - -// constants -const TInt KInvalidBmp = -1 ; - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CAknFepCtrlVkbLayout::CAknFepCtrlVkbLayout -// C++ default constructor can NOT contain any code, that -// might leave. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// - - -CAknFepCtrlVkbLayout::CAknFepCtrlVkbLayout() - : iFirstTimeConstruct(ETrue), iResourceId( -1 ), iVkbLayoutId( -1 ) - { - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlVkbLayout::NewL -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlVkbLayout* CAknFepCtrlVkbLayout::NewL() - { - CAknFepCtrlVkbLayout* self = NewLC(); - CleanupStack::Pop(self); - - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlVkbLayout::NewLC -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlVkbLayout* CAknFepCtrlVkbLayout::NewLC() - { - CAknFepCtrlVkbLayout* self = new (ELeave) CAknFepCtrlVkbLayout(); - CleanupStack::PushL(self); - self->ConstructL(); - - return self; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlVkbLayout::Reset -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlVkbLayout::Reset() - { - iVkbLayoutId = -1; - iFirstTimeConstruct = ETrue; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlVkbLayout::ConstructL -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CAknFepCtrlVkbLayout::ConstructL() - { - - } - -// ----------------------------------------------------------------------------- -// Destructor. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C CAknFepCtrlVkbLayout::~CAknFepCtrlVkbLayout() - { - iVkbLayoutInfoList.ResetAndDestroy(); - iVkbLayoutInfoList.Close(); - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlVkbLayout::SetVkbKeyboard -// Two-phased constructor. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlVkbLayout::SetVkbKeyboard( - CPeninputVkbCtrlExt* aVkbCtrl ) - { - iVkbCtrl = aVkbCtrl; - } - -EXPORT_C void CAknFepCtrlVkbLayout::SetIrregularResourceId(TInt32 aResId) - { - iIrregularResId = aResId; - } - -EXPORT_C void CAknFepCtrlVkbLayout::SetNonIrregularResourceId(TInt32 aResId) - { - iNonIrregularResId = aResId; - } - - -EXPORT_C void CAknFepCtrlVkbLayout::ConstructFromIrregularResourceL() - { - if ( iIrregularResId < 0 ) - { - return; - } - - TResourceReader reader; - - CCoeEnv::Static()->CreateResourceReaderLC( reader, iIrregularResId ); - - TPtrC bmpFileName = reader.ReadTPtrC(); - - for (TInt index = 0; index <= EKeyRightUp; index ++) - { - CreateIrregularKeyBitmapsL(reader, bmpFileName, (TVirtualKeyIrregularKeyType) index); - } - - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - for( TInt i = 0; i < iVkbLayoutInfoList.Count(); i++ ) - { - iVkbLayoutInfoList[i]->iIrregular = ETrue; - } - - } - -EXPORT_C void CAknFepCtrlVkbLayout::ConstructFromNonIrregularResourceL() - { - if ( iNonIrregularResId < 0 ) - { - return; - } - - TResourceReader reader; - - CCoeEnv::Static()->CreateResourceReaderLC( reader, iNonIrregularResId ); - - TPtrC bmpFileName = reader.ReadTPtrC(); - TInt32 imgMajorSkinId = reader.ReadInt32(); - TAknsItemID id; - - for (TInt index = 0; index <= EKeyBmpLastType ; index += 2) - { - // Get the image ids and mask ids from resource - TInt bmpId = reader.ReadInt16(); - TInt bmpMskId = reader.ReadInt16(); - - // read skin item id - const TInt skinitemid = reader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidBmp) - { - CFbsBitmap* bmp = NULL; - CFbsBitmap* maskbmp = NULL; - - if (bmpMskId != KInvalidBmp) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - maskbmp, - bmpFileName, - bmpId, - bmpMskId); - - // set maskbmp and size - iVkbCtrl->SetNonIrregularKeyBitmapL(TVirtualKeyBmpType(EKeyBmpNormal + index + 1), - maskbmp ); - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - bmpFileName, - bmpId); - } - - // set bmp and size - iVkbCtrl->SetNonIrregularKeyBitmapL( TVirtualKeyBmpType(EKeyBmpNormal + index), bmp ); - } - } - - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - for( TInt i = 0; i < iVkbLayoutInfoList.Count(); i++ ) - { - iVkbLayoutInfoList[i]->iIrregular = EFalse; - } - - } -void CAknFepCtrlVkbLayout::CreateIrregularKeyBitmapsL(TResourceReader& reader, TPtrC& bmpFileName, - TVirtualKeyIrregularKeyType aKeyType) - { - int maskid = 0; - for(TInt index = 0; index <= EKeyStateDimmedMask; index += 2) - { - maskid = index + 1; - CreateIrregularKeyBitmapL(reader, bmpFileName, aKeyType , - (TVirtualKeyIrregularKeyState)index, - (TVirtualKeyIrregularKeyState)maskid); - } - } - -void CAknFepCtrlVkbLayout::CreateIrregularKeyBitmapL(TResourceReader& reader, TPtrC& bmpFileName, - TVirtualKeyIrregularKeyType aKeyType , - TVirtualKeyIrregularKeyState aKeyState, - TVirtualKeyIrregularKeyState aKeyStateMask) - { - CFbsBitmap* bitmap = NULL; - CFbsBitmap* bitmapmaks = NULL; - TAknsItemID id; - MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); - - TInt bmpID = reader.ReadInt16(); - TInt bmpmaskID = reader.ReadInt16(); - TInt minorskinID = reader.ReadInt16(); - id.Set(TInt(EAknsMajorGeneric), minorskinID); - - if (bmpID > 0) - { - - AknsUtils::CreateIconL( skininstance, - id, - bitmap, - bitmapmaks, - bmpFileName, - bmpID, - bmpmaskID ); - - if (bitmapmaks) - { - AknIconUtils::DisableCompression(bitmapmaks); - } - - if (bitmap && iVkbCtrl) - { - iVkbCtrl->AddIrregularKeyBitmapL(aKeyType, aKeyState, bitmap); - } - - if (bitmapmaks && iVkbCtrl) - { - iVkbCtrl->AddIrregularKeyBitmapL(aKeyType, aKeyStateMask, bitmapmaks); - } - } - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlVkbLayout::SetResourceId -// Set resurce Id -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlVkbLayout::SetResourceId(TInt32 aResId) - { - iResourceId = aResId; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlVkbLayout::ConstructFromResourceL -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlVkbLayout::ConstructFromResourceL() - { - if ( iResourceId < 0 ) - { - return; - } - - TResourceReader reader; - - CCoeEnv::Static()->CreateResourceReaderLC( reader, iResourceId ); - - TInt count = reader.ReadInt16(); - - if( iFirstTimeConstruct ) - { - iVkbLayoutInfoList.ResetAndDestroy(); - for ( TInt i = 0; i < count; i++ ) - { - CPeninputVkbLayoutInfo* vkbLayoutInfo = - CPeninputVkbLayoutInfo::NewL( reader ); - - if (iVkbCtrl) - { - vkbLayoutInfo->iIrregular = iVkbCtrl->IsIrregularKeyBoard(); - } - iVkbLayoutInfoList.Append( vkbLayoutInfo ); - } - } - else - { - // vkb keyboard must reset first, because iKeyInfoList will reset and destroy later - - if( iVkbCtrl != NULL ) - { - iVkbCtrl->Reset(); - } - - for ( TInt i = 0; i < count; i++ ) - { - iVkbLayoutInfoList[i]->ConstructFromResourceL( reader, iVkbCtrl, iVkbLayoutId ); - iVkbLayoutInfoList[i]->ResetSize( - iVkbLayoutInfoList[i]->UnitWidth(), - iVkbLayoutInfoList[i]->UnitHeight(), - iVkbLayoutInfoList[i]->UnitCharWidth(), - iVkbLayoutInfoList[i]->UnitCharHeight(), - iVkbLayoutInfoList[i]->CharLeftTopPoint(), - iVkbLayoutInfoList[i]->CharFont() ); - - if (iVkbCtrl) - { - iVkbLayoutInfoList[i]->iIrregular = iVkbCtrl->IsIrregularKeyBoard(); - } - } - } - - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - - iFirstTimeConstruct = EFalse; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlVkbLayout::VkbLayoutInfoList -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C RPointerArray CAknFepCtrlVkbLayout::VkbLayoutInfoList() - { - return iVkbLayoutInfoList; - } - -// --------------------------------------------------------------------------- -// CAknFepCtrlVkbLayout::ChangeVkbLayout -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CAknFepCtrlVkbLayout::ChangeVkbLayout( TInt aVkbLayoutId ) - { - if( iVkbLayoutId == aVkbLayoutId ) - { - return; - } - iVkbLayoutId = aVkbLayoutId; - for( TInt i = 0; i < iVkbLayoutInfoList.Count(); i++ ) - { - if( aVkbLayoutId == iVkbLayoutInfoList[i]->LayoutID() ) - { - iVkbCtrl->ReorganizeVkbKeys( iVkbLayoutInfoList[i] ); - - return; - } - } - } - -// ------------------------------------------------------------------------ -// CPeninputVkbKeyInfo::NewL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputVkbKeyInfo* CPeninputVkbKeyInfo::NewL( - TResourceReader& aReader ) - { - CPeninputVkbKeyInfo* self = new ( ELeave ) CPeninputVkbKeyInfo(); - - CleanupStack::PushL( self ); - self->ConstructL( aReader ); - CleanupStack::Pop( self ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputVkbKeyInfo::~CPeninputVkbKeyInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputVkbKeyInfo::~CPeninputVkbKeyInfo() - { - delete iKey; - iKey = NULL; - delete iUnicode; - iUnicode = NULL; - } - -// ------------------------------------------------------------------------ -// CPeninputVkbKeyInfo::ConstructL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputVkbKeyInfo::ConstructL( TResourceReader& aReader ) - { - ConstructFromResourceL( aReader ); - } - -// ------------------------------------------------------------------------ -// CPeninputVkbKeyInfo::ConstructFromResourceL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputVkbKeyInfo::ConstructFromResourceL( TResourceReader& aReader ) - { - iUnicode = aReader.ReadHBufCL(); - iScanCode = aReader.ReadInt16(); - iBeginRow = aReader.ReadInt16(); - iBeginColumn = aReader.ReadInt16(); - iEndRow = aReader.ReadInt16(); - iEndColumn = aReader.ReadInt16(); - iHighlightBmpIndex = aReader.ReadInt16(); - iHighlightMaskBmpIndex = aReader.ReadInt16(); - TPtrC displayUnicode = aReader.ReadTPtrC(); - - TInt baseLine = 0; - iKey = CVirtualKey::NewL( *iUnicode, iScanCode, TRect(), - TRect(), baseLine, iHighlightBmpIndex, iHighlightMaskBmpIndex ); - if( displayUnicode.Length() != 0 ) - { - iKey->SetDisplayUnicodeL( displayUnicode ); - } - } - -TVirtualKeyIrregularKeyType CPeninputVkbKeyInfo::KeyTypeFromColumn(TInt aColumns) - { - if (iBeginColumn == 0) - { - return EKeyLeftDown; - } - - if ((iBeginColumn == aColumns - 1) && (aColumns % 2 == 0)) - { - return EKeyRightUp; - } - - if ((iBeginColumn == aColumns - 1) && (aColumns % 2 == 1)) - { - return EKeyRightDown; - } - - if (iBeginColumn % 2 == 0) - { - return EKeyMiddleDown; - } - - return EKeyMiddleUp; - } - -void CPeninputVkbKeyInfo::SetIrregularKeyType(TInt aColumns) - { - if (iKey) - { - iKey->SetIrregualrKeyType(KeyTypeFromColumn(aColumns)); - } - } -// ------------------------------------------------------------------------ -// CPeninputVkbKeyInfo::CreateKeyL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputVkbKeyInfo::CreateKeyL() - { - TInt baseLine = 0; - iKey = CVirtualKey::NewL( *iUnicode, iScanCode, TRect(), - TRect(), baseLine, iHighlightBmpIndex, iHighlightMaskBmpIndex ); - } - -// ------------------------------------------------------------------------ -// CPeninputVkbLayoutInfo::NewL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputVkbLayoutInfo* CPeninputVkbLayoutInfo::NewL( - TResourceReader& aReader ) - { - CPeninputVkbLayoutInfo* self = NewLC( aReader ); - CleanupStack::Pop( self ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputVkbLayoutInfo::NewLC -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputVkbLayoutInfo* CPeninputVkbLayoutInfo::NewLC( - TResourceReader& aReader ) - { - CPeninputVkbLayoutInfo* self = new ( ELeave ) CPeninputVkbLayoutInfo(); - CleanupStack::PushL( self ); - self->ConstructL( aReader ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputVkbLayoutInfo::GetRealSize -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C const TSize CPeninputVkbLayoutInfo::GetRealSize( - const TInt aUnitWidth, const TInt aUnitHeight ) const - { - return TSize( aUnitWidth * iColumns, aUnitHeight * iRows ); - } - -EXPORT_C void CPeninputVkbLayoutInfo::ResetLayoutInfo(const TSize& aSize) - { - AknIconUtils::SetSize( iBgBmp, aSize, EAspectRatioNotPreserved ); - AknIconUtils::SetSize( iBgMaskBmp, aSize, EAspectRatioNotPreserved ); - - } - -EXPORT_C void CPeninputVkbLayoutInfo::SetKeyInfo(const TInt aRow, - const TInt aColumn, - const TRect& aKeyRect, - const TRect& aCharRect, - const CFont* aFont) - { - RPointerArray keyInfoList = KeyInfoList(); - TInt count = keyInfoList.Count(); - - for (TInt i = 0; i < count; i++ ) - { - if (keyInfoList[i] && - keyInfoList[i]->BeginColumn() == aColumn && - keyInfoList[i]->BeginRow() == aRow) - { - keyInfoList[i]->Key()->SetRect( aKeyRect ); - - return; - } - } - } - - -// ------------------------------------------------------------------------ -// CPeninputVkbLayoutInfo::ResetSize -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C void CPeninputVkbLayoutInfo::ResetSize( - const TInt aUnitWidth, - const TInt aUnitHeight, - const TInt aUnitCharWidth, - const TInt aUnitCharHeight, - const TPoint& aCharLeftTopPoint, - const CFont* aFont ) - { - iUnitWidth = aUnitWidth; - iUnitHeight = aUnitHeight; - iUnitCharWidth = aUnitCharWidth; - iUnitCharHeight = aUnitCharHeight; - iCharLeftTopPoint = aCharLeftTopPoint; - iFont = aFont; - - iLastTopLeft = TPoint( 0, 0 ); - - // 1.Resize bk bmp and mask bmp - AknIconUtils::SetSize( iBgBmp, - TSize( aUnitWidth * iColumns, aUnitHeight * iRows ), - EAspectRatioNotPreserved ); - AknIconUtils::SetSize( iBgMaskBmp, - TSize( aUnitWidth * iColumns, aUnitHeight * iRows ), - EAspectRatioNotPreserved ); - - // 2.Resize dim bmp and mask bmp - AknIconUtils::SetSize( iDimBmp, TSize( aUnitWidth, aUnitHeight ), - EAspectRatioNotPreserved ); - AknIconUtils::SetSize( iDimMaskBmp, TSize( aUnitWidth, aUnitHeight ), - EAspectRatioNotPreserved ); - - // 3.Resize all highlight bmp and mask bmp - TInt count = iHighlightBmps.Count(); - TInt i = 0; - - for ( i = 0; i < count; i++ ) - { - AknIconUtils::SetSize( iHighlightBmps[i], - TSize( aUnitWidth, aUnitHeight ), EAspectRatioNotPreserved ); - } - - count = iHighlightMaskBmps.Count(); - for ( i = 0; i < count; i++ ) - { - AknIconUtils::SetSize( iHighlightMaskBmps[i], - TSize( aUnitWidth, aUnitHeight ), EAspectRatioNotPreserved ); - } - - // 4.For every key, reset the key rect and char rect - RPointerArray keyInfoList = KeyInfoList(); - count = keyInfoList.Count(); - TPoint keyLeftTop; - TInt rows; - TInt columns; - TRect rect; - - for ( i = 0; i < count; i++ ) - { - if ( keyInfoList[i]->Key() ) - { - if (keyInfoList[i]->BeginColumn() == 0) - { - keyLeftTop = TPoint( keyInfoList[i]->BeginColumn() * aUnitWidth, - keyInfoList[i]->BeginRow() * aUnitHeight ); - } - else - { - keyLeftTop = TPoint( keyInfoList[i]->BeginColumn() * aUnitWidth - - 6 * keyInfoList[i]->BeginColumn(), - keyInfoList[i]->BeginRow() * aUnitHeight ); - } - - if (!iIrregular) - { - keyLeftTop = TPoint( keyInfoList[i]->BeginColumn() * aUnitWidth, - keyInfoList[i]->BeginRow() * aUnitHeight ); - } - - - rows = keyInfoList[i]->EndRow() - keyInfoList[i]->BeginRow(); - columns = keyInfoList[i]->EndColumn() - - keyInfoList[i]->BeginColumn(); - - //Set key rect - rect = TRect( keyLeftTop, TSize( columns * aUnitWidth, - rows * aUnitHeight ) ); - keyInfoList[i]->Key()->SetRect( rect ); - } - } - } - -// ------------------------------------------------------------------------ -// CPeninputVkbLayoutInfo::~CPeninputVkbLayoutInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputVkbLayoutInfo::~CPeninputVkbLayoutInfo() - { - delete iBgBmp; - iBgBmp = NULL; - delete iBgMaskBmp; - iBgMaskBmp = NULL; - delete iDimBmp; - iDimBmp = NULL; - delete iDimMaskBmp; - iDimMaskBmp = NULL; - - iHighlightBmps.ResetAndDestroy(); - iHighlightBmps.Close(); - - iHighlightMaskBmps.ResetAndDestroy(); - iHighlightMaskBmps.Close(); - - iKeyInfoList.ResetAndDestroy(); - iKeyInfoList.Close(); - } - -// ------------------------------------------------------------------------ -// CPeninputVkbLayoutInfo::FindKey -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputVkbKeyInfo* CPeninputVkbLayoutInfo::FindKey( - const TInt aUnicode ) const - { - const TInt count = iKeyInfoList.Count(); - - for ( TInt i = 0; i < count; i++ ) - { - if ( (*iKeyInfoList[i]->Unicode())[0] == aUnicode ) - { - return iKeyInfoList[i]; - } - } - - return NULL; - } - -// ------------------------------------------------------------------------ -// CPeninputVkbLayoutInfo::MoveKeys -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C void CPeninputVkbLayoutInfo::MoveKeys( const TPoint& aTopLeft ) - { - RPointerArray keyInfoList = KeyInfoList(); - const TInt count = keyInfoList.Count(); - const TPoint difference = aTopLeft - iLastTopLeft; - TRect rect; - - for ( TInt i = 0; i < count; i++ ) - { - if ( keyInfoList[i]->Key() ) - { - //Set key rect - rect = keyInfoList[i]->Key()->Rect(); - rect.SetRect( rect.iTl + difference, rect.Size() ); - keyInfoList[i]->Key()->SetRect( rect ); - } - } - - iLastTopLeft = aTopLeft; - } - -// ------------------------------------------------------------------------ -// CPeninputVkbLayoutInfo::CPeninputVkbLayoutInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -CPeninputVkbLayoutInfo::CPeninputVkbLayoutInfo() - : iCharLeftTopPoint( TPoint(0,0) ) - { - iLastTopLeft = TPoint( 0, 0 ); - } - -// ------------------------------------------------------------------------ -// CPeninputVkbLayoutInfo::ConstructL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputVkbLayoutInfo::ConstructL( TResourceReader& aReader ) - { - - ConstructFromResourceL( aReader ); - } - -// ------------------------------------------------------------------------ -// CPeninputVkbLayoutInfo::ConstructFromResourceL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputVkbLayoutInfo::ConstructFromResourceL( TResourceReader& aReader, - CPeninputVkbCtrlExt* aVkbCtrl, - TInt aVkbLayoutId ) - { - delete iBgBmp; - iBgBmp = NULL; - delete iBgMaskBmp; - iBgMaskBmp = NULL; - delete iDimBmp; - iDimBmp = NULL; - delete iDimMaskBmp; - iDimMaskBmp = NULL; - - iHighlightBmps.ResetAndDestroy(); - iHighlightBmps.Close(); - - iHighlightMaskBmps.ResetAndDestroy(); - iHighlightMaskBmps.Close(); - - iKeyInfoList.ResetAndDestroy(); - iKeyInfoList.Close(); - - iLayoutID = aReader.ReadInt16(); - - // Read the file name of the bmps - TPtrC bmpFileName = aReader.ReadTPtrC(); - TInt32 imgMajorSkinId = aReader.ReadInt32(); - - TInt layoutBmpId = aReader.ReadInt16(); - TInt layoutBmpMaskId = aReader.ReadInt16(); - TInt layoutBmpSkinId = aReader.ReadInt16(); - - TAknsItemID id; - MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); - - id.Set(TInt( imgMajorSkinId ), layoutBmpSkinId); - - if ( layoutBmpId != KInvalidBmp) - { - if ( layoutBmpMaskId != KInvalidBmp) - { - AknsUtils::CreateIconL( skininstance, - id, - iBgBmp, - iBgMaskBmp, - bmpFileName, - layoutBmpId, - layoutBmpMaskId ); - } - else - { - AknsUtils::CreateIconL( skininstance, - id, - iBgBmp, - bmpFileName, - layoutBmpId ); - } - } - - TInt dimBmpId = aReader.ReadInt16(); - TInt dimMaskBmpId = aReader.ReadInt16(); - TInt dimBmpSkinId = aReader.ReadInt16(); - - id.Set( TInt( imgMajorSkinId ), dimBmpSkinId ); - - if ( dimBmpId != KInvalidBmp ) - { - if ( dimMaskBmpId != KInvalidBmp ) - { - AknsUtils::CreateIconL( skininstance, - id, - iDimBmp, - iDimMaskBmp, - bmpFileName, - dimBmpId, - dimMaskBmpId ); - } - else - { - AknsUtils::CreateIconL( skininstance, - id, - iDimBmp, - bmpFileName, - dimBmpId ); - } - } - - iColumns = aReader.ReadInt16(); - iRows = aReader.ReadInt16(); - - TInt i; - TInt count = aReader.ReadInt16(); - TInt bmpId; - - for ( i = 0; i < count; i++ ) - { - bmpId = aReader.ReadInt16(); - if ( bmpId != KInvalidBmp ) - { - CFbsBitmap* bmp = AknIconUtils::CreateIconL( bmpFileName, - bmpId ); - CleanupStack::PushL( bmp ); - iHighlightBmps.Append( bmp ); - CleanupStack::Pop( bmp ); - } - } - - count = aReader.ReadInt16(); - for ( i = 0; i < count; i++ ) - { - bmpId = aReader.ReadInt16(); - if ( bmpId != KInvalidBmp ) - { - CFbsBitmap* bmp = AknIconUtils::CreateIconL( bmpFileName, bmpId ); - CleanupStack::PushL( bmp ); - iHighlightMaskBmps.Append( bmp ); - CleanupStack::Pop( bmp ); - } - } - - count = aReader.ReadInt16(); - - for ( i = 0; i < count; i++ ) - { - CPeninputVkbKeyInfo* keyInfo = CPeninputVkbKeyInfo::NewL( aReader ); - keyInfo->SetIrregularKeyType(iColumns); - iKeyInfoList.Append( keyInfo ); - } - - if ( ( iLayoutID == aVkbLayoutId ) && ( aVkbCtrl ) ) - { - aVkbCtrl->ReorganizeVkbKeys( this ); - } - } -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/srcdata/peninputmodeswitchutils.rss --- a/textinput/peninputcommonctrls/srcdata/peninputmodeswitchutils.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource definitions for project peninputgenericitut -* -*/ - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/srcdata/peninputmodeswitchutilsnew.rss --- a/textinput/peninputcommonctrls/srcdata/peninputmodeswitchutilsnew.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,206 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource definitions for project peninputgenericitut -* -*/ - -// RESOURCE IDENTIFIER -NAME PIMS - -#include -#include -#include -#include - -#include -#include -#include -#include - -STRUCT AKN_FEP_POPUP_WINDOW - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - WORD bgbmp=0xffff; - WORD bgmaskbmp=0xffff; - WORD bgbmpskinid=0xffff; - - WORD focusbmp=0xffff; - WORD focusmaskbmp=0xffff; - WORD focusbmpskinid=0xffff; - } - - -//////////////////////////////////////////loc begin///////////////////////////////// -// LOCALISATION STRINGS - -//d:Text in touch input mode swither list -//d:virtual ITUT touch input method -//l:list_single_choice_list_pane_t1 -//r: 5.0 -//#define qtn_input_switcher_itu_t "Virtual ITU-T" - -//d:Text in touch input mode swither list -//d:full sreen qwerty touch input method -//l:list_single_choice_list_pane_t1 -//r: 5.0 -//#define qtn_input_switcher_fs_qwerty "Full Screen Qwerty" - -//d:Text in touch input mode swither list -//d:small virtual key board touch input method -//l:list_single_choice_list_pane_t1 -//r: 5.0 -//#define qtn_input_switcher_vkb "VKB" - -//d:Text in touch input mode swither list -//d:Handwritting Recognition touch input method -//l:list_single_choice_list_pane_t1 -//r: 5.0 -//#define qtn_input_switcher_hwr "HWR" - -//d:Text in touch input mode swither list -//d:full screen HWR touch input method -//l:list_single_choice_list_pane_t1 -//r: 5.0 -//#define qtn_input_switcher_fs_hwr "Full Screen HWR" - - -//d:Text in candidate match selection list -//d:The last item meaning to enger the spell mode -//l:list_vitu2_match_list_item_pane_t1 -//r: 5.0 -//#define qtn_t9_match_selection_list "Spell" - - -//d:column for ICF prompt text -//l:field_vitu2_entry_pane_t1 -//r: 5.0 -//#define qtn_colon_in_prompt ":" - - - -//d:Text in candidate listt -//d:current page /total pages information -//l:vitu2_page_scroll_pane_t1 -//r: 5.0 -//#define qtn_paging_number_match_selection "%0N/%1N" - - -//d:Text for T9 spelling prompt text -//l:popup_vitu2_query_window_t1 -//r: 5.0 -//#define qtn_t9_spell_query "Word" - - -// End of File -//////////////////////////////////////////loc end///////////////////////////////// - -#define AKN_FEP_VKB_BMP "z:\\resource\\apps\\peninputmodeswitcher.mbm" - -RESOURCE LBUF r_peninputmode_hwr - { - txt=qtn_input_switcher_hwr; - } - -RESOURCE LBUF r_peninputmode_fullhwr - { - txt=qtn_input_switcher_fs_hwr; - } - -RESOURCE LBUF r_peninputmode_vkb - { - txt=qtn_input_switcher_vkb; - } - -RESOURCE LBUF r_peninputmode_fingeritut - { - txt=qtn_input_switcher_itu_t; - } - -RESOURCE LBUF r_peninputmode_fullqwerty - { - txt=qtn_input_switcher_fs_qwerty; - } - -RESOURCE LBUF r_peninput_selection_list_page_num - { - txt=qtn_paging_number_match_selection; - } - -RESOURCE LBUF r_peninput_selection_list_spell - { - txt=qtn_t9_match_selection_list; - } - -RESOURCE LBUF r_peninput_spelling_prompt - { - txt=qtn_t9_spell_query; - } - -RESOURCE LBUF r_peninput_prompt_colon - { - txt=qtn_colon_in_prompt; - } - -RESOURCE AKN_FEP_INPUTMODE_NAMEARRAY r_peninputmode_names - { - names= - { - AKN_FEP_INPUTMODE_NAME - { - modeid = EPluginInputModeHwr; - txt = qtn_input_switcher_hwr; - }, - AKN_FEP_INPUTMODE_NAME - { - modeid = EPluginInputModeVkb; - txt = qtn_input_switcher_vkb; - }, - AKN_FEP_INPUTMODE_NAME - { - modeid = EPluginInputModeFSQ; - txt = qtn_input_switcher_fs_qwerty; - }, - AKN_FEP_INPUTMODE_NAME - { - modeid = EPluginInputModeItut; - txt = qtn_input_switcher_itu_t; - }, - AKN_FEP_INPUTMODE_NAME - { - modeid = EPluginInputModeFSc; - txt = qtn_input_switcher_fs_hwr; - }, - AKN_FEP_INPUTMODE_NAME - { - modeid = EPluginInputModeFingerHwr; - txt = qtn_input_switcher_hwr; - } - }; - } - -RESOURCE AKN_FEP_POPUP_WINDOW peninputmode_switch_choicelist - { - bmpfile=AKN_FEP_VKB_BMP; - imgmajorskinid=EAknsMajorGeneric; - bgbmp=EMbmPeninputmodeswitcherQgn_graf_fep_candi_list_sec; - bgmaskbmp=EMbmPeninputmodeswitcherQgn_graf_fep_candi_list_sec_mask; - bgbmpskinid=EAknsMinorGenericQgnGrafFepCandiListSec; - - focusbmp=EMbmPeninputmodeswitcherQgn_graf_fep_candi_list_sel; - focusmaskbmp=EMbmPeninputmodeswitcherQgn_graf_fep_candi_list_sel_mask; - focusbmpskinid=EAknsMinorGenericQgnGrafFepCandiListSel; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/BWINS/peninputcommonlayoutU.DEF --- a/textinput/peninputcommonlayout/BWINS/peninputcommonlayoutU.DEF Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,206 +0,0 @@ -EXPORTS - ??0CPeninputCommonLayout@@IAE@PAVMLayoutOwner@@@Z @ 1 NONAME ; CPeninputCommonLayout::CPeninputCommonLayout(class MLayoutOwner *) - ??0CPeninputDataConverter@@IAE@XZ @ 2 NONAME ; CPeninputDataConverter::CPeninputDataConverter(void) - ??0CPeninputDataMgr@@IAE@PAVMPeninputLayoutContext@@@Z @ 3 NONAME ; CPeninputDataMgr::CPeninputDataMgr(class MPeninputLayoutContext *) - ??0CPeninputLayoutWindow@@IAE@PAVCFepUiLayout@@PAVMPeninputLayoutContext@@@Z @ 4 NONAME ; CPeninputLayoutWindow::CPeninputLayoutWindow(class CFepUiLayout *, class MPeninputLayoutContext *) - ??0CPeninputUiStateBase@@IAE@PAVMPeninputUiStateMgr@@PAVMPeninputLayoutContext@@@Z @ 5 NONAME ; CPeninputUiStateBase::CPeninputUiStateBase(class MPeninputUiStateMgr *, class MPeninputLayoutContext *) - ??1CPeninputClientLayoutInfo@@UAE@XZ @ 6 NONAME ; CPeninputClientLayoutInfo::~CPeninputClientLayoutInfo(void) - ??1CPeninputCommonLayout@@UAE@XZ @ 7 NONAME ; CPeninputCommonLayout::~CPeninputCommonLayout(void) - ??1CPeninputControlInfo@@UAE@XZ @ 8 NONAME ; CPeninputControlInfo::~CPeninputControlInfo(void) - ??1CPeninputCtrlPool@@UAE@XZ @ 9 NONAME ; CPeninputCtrlPool::~CPeninputCtrlPool(void) - ??1CPeninputDataConverter@@UAE@XZ @ 10 NONAME ; CPeninputDataConverter::~CPeninputDataConverter(void) - ??1CPeninputDataMgr@@UAE@XZ @ 11 NONAME ; CPeninputDataMgr::~CPeninputDataMgr(void) - ??1CPeninputLayoutConfig@@UAE@XZ @ 12 NONAME ; CPeninputLayoutConfig::~CPeninputLayoutConfig(void) - ??1CPeninputLayoutWindow@@UAE@XZ @ 13 NONAME ; CPeninputLayoutWindow::~CPeninputLayoutWindow(void) - ??1CPeninputNumericKepMappingMgr@@UAE@XZ @ 14 NONAME ; CPeninputNumericKepMappingMgr::~CPeninputNumericKepMappingMgr(void) - ??1CPeninputRangeBarInfo@@UAE@XZ @ 15 NONAME ; CPeninputRangeBarInfo::~CPeninputRangeBarInfo(void) - ??1CPeninputRangeInfo@@UAE@XZ @ 16 NONAME ; CPeninputRangeInfo::~CPeninputRangeInfo(void) - ??1CPeninputShiftCapsInfo@@UAE@XZ @ 17 NONAME ; CPeninputShiftCapsInfo::~CPeninputShiftCapsInfo(void) - ??1CPeninputUiStateBase@@UAE@XZ @ 18 NONAME ; CPeninputUiStateBase::~CPeninputUiStateBase(void) - ??1CPeninputUiStateMgr@@UAE@XZ @ 19 NONAME ; CPeninputUiStateMgr::~CPeninputUiStateMgr(void) - ?AddControl@CPeninputCtrlPool@@QAEXPAVCFepUiBaseCtrl@@@Z @ 20 NONAME ; void CPeninputCtrlPool::AddControl(class CFepUiBaseCtrl *) - ?AddControlInfo@CPeninputClientLayoutInfo@@QAEXPAVCPeninputControlInfo@@@Z @ 21 NONAME ; void CPeninputClientLayoutInfo::AddControlInfo(class CPeninputControlInfo *) - ?AddNotOwnedControl@CPeninputLayoutWindow@@IAEXPAVCFepUiBaseCtrl@@@Z @ 22 NONAME ; void CPeninputLayoutWindow::AddNotOwnedControl(class CFepUiBaseCtrl *) - ?AddUiState@CPeninputUiStateMgr@@UAEXPAVCPeninputUiStateBase@@H@Z @ 23 NONAME ; void CPeninputUiStateMgr::AddUiState(class CPeninputUiStateBase *, int) - ?AnyToInt@CPeninputDataConverter@@SAHPAX@Z @ 24 NONAME ; int CPeninputDataConverter::AnyToInt(void *) - ?CaseByShiftCapslockStatus@CPeninputLayoutWindow@@AAEHXZ @ 25 NONAME ; int CPeninputLayoutWindow::CaseByShiftCapslockStatus(void) - ?ChangeButtonStatus@CPeninputLayoutWindow@@IAEXHH@Z @ 26 NONAME ; void CPeninputLayoutWindow::ChangeButtonStatus(int, int) - ?ChangeClientLayout@CPeninputLayoutWindow@@QAEXH@Z @ 27 NONAME ; void CPeninputLayoutWindow::ChangeClientLayout(int) - ?ChangeInputLanguageL@CPeninputLayoutWindow@@QAEXH@Z @ 28 NONAME ; void CPeninputLayoutWindow::ChangeInputLanguageL(int) - ?ChangeLayoutPosition@CPeninputLayoutWindow@@IAEXH@Z @ 29 NONAME ; void CPeninputLayoutWindow::ChangeLayoutPosition(int) - ?ChangeRange@CPeninputLayoutWindow@@QAEXHHH@Z @ 30 NONAME ; void CPeninputLayoutWindow::ChangeRange(int, int, int) - ?ChangeVkbLayout@CPeninputLayoutWindow@@QAEXH@Z @ 31 NONAME ; void CPeninputLayoutWindow::ChangeVkbLayout(int) - ?CombinationToDesc@CPeninputDataConverter@@SAXHIAAVTDes16@@@Z @ 32 NONAME ; void CPeninputDataConverter::CombinationToDesc(int, unsigned int, class TDes16 &) - ?ConfigInfo@CPeninputLayoutWindow@@QBEPAVCPeninputLayoutConfig@@XZ @ 33 NONAME ; class CPeninputLayoutConfig * CPeninputLayoutWindow::ConfigInfo(void) const - ?Construct@CPeninputCtrlPool@@IAEXXZ @ 34 NONAME ; void CPeninputCtrlPool::Construct(void) - ?Construct@CPeninputUiStateBase@@IAEXXZ @ 35 NONAME ; void CPeninputUiStateBase::Construct(void) - ?ConstructFromResourceL@CPeninputClientLayoutInfo@@QAEXAAVTResourceReader@@@Z @ 36 NONAME ; void CPeninputClientLayoutInfo::ConstructFromResourceL(class TResourceReader &) - ?ConstructFromResourceL@CPeninputLayoutWindow@@MAEXAAVTResourceReader@@@Z @ 37 NONAME ; void CPeninputLayoutWindow::ConstructFromResourceL(class TResourceReader &) - ?ConstructFromResourceL@CPeninputLayoutWindow@@MAEXXZ @ 38 NONAME ; void CPeninputLayoutWindow::ConstructFromResourceL(void) - ?ConstructL@CPeninputCommonLayout@@IAEXPBX@Z @ 39 NONAME ; void CPeninputCommonLayout::ConstructL(void const *) - ?ConstructL@CPeninputDataMgr@@IAEXXZ @ 40 NONAME ; void CPeninputDataMgr::ConstructL(void) - ?ConstructL@CPeninputLayoutWindow@@IAEXXZ @ 41 NONAME ; void CPeninputLayoutWindow::ConstructL(void) - ?Control@CPeninputCtrlPool@@QBEPAVCFepUiBaseCtrl@@H@Z @ 42 NONAME ; class CFepUiBaseCtrl * CPeninputCtrlPool::Control(int) const - ?ControlByIndex@CPeninputCtrlPool@@QBEPAVCFepUiBaseCtrl@@H@Z @ 43 NONAME ; class CFepUiBaseCtrl * CPeninputCtrlPool::ControlByIndex(int) const - ?ControlCount@CPeninputCtrlPool@@QBEHXZ @ 44 NONAME ; int CPeninputCtrlPool::ControlCount(void) const - ?Count@CPeninputNumericKepMappingMgr@@QBEHXZ @ 45 NONAME ; int CPeninputNumericKepMappingMgr::Count(void) const - ?CurrentUiState@CPeninputUiStateMgr@@UAEPAVCPeninputUiStateBase@@XZ @ 46 NONAME ; class CPeninputUiStateBase * CPeninputUiStateMgr::CurrentUiState(void) - ?DoClose@CPeninputLayoutWindow@@MAEHXZ @ 47 NONAME ; int CPeninputLayoutWindow::DoClose(void) - ?Draw@CPeninputLayoutWindow@@UAEXXZ @ 48 NONAME ; void CPeninputLayoutWindow::Draw(void) - ?FepCaseByCaseId@CPeninputDataConverter@@SAHH@Z @ 49 NONAME ; int CPeninputDataConverter::FepCaseByCaseId(int) - ?FindClientLayoutInfo@CPeninputLayoutConfig@@QAEPAVCPeninputClientLayoutInfo@@H@Z @ 50 NONAME ; class CPeninputClientLayoutInfo * CPeninputLayoutConfig::FindClientLayoutInfo(int) - ?FindControlInfo@CPeninputClientLayoutInfo@@QAEPAVCPeninputControlInfo@@H@Z @ 51 NONAME ; class CPeninputControlInfo * CPeninputClientLayoutInfo::FindControlInfo(int) - ?FindRange@CPeninputRangeBarInfo@@QAEPAVCPeninputRangeInfo@@H@Z @ 52 NONAME ; class CPeninputRangeInfo * CPeninputRangeBarInfo::FindRange(int) - ?FindShiftCapsInfo@CPeninputLayoutConfig@@QAEPAVCPeninputShiftCapsInfo@@H@Z @ 53 NONAME ; class CPeninputShiftCapsInfo * CPeninputLayoutConfig::FindShiftCapsInfo(int) - ?FindShiftCapsSingleByCase@CPeninputShiftCapsInfo@@QAEPAUTPeninputShiftCapsSingle@1@H@Z @ 54 NONAME ; struct CPeninputShiftCapsInfo::TPeninputShiftCapsSingle * CPeninputShiftCapsInfo::FindShiftCapsSingleByCase(int) - ?FindShiftCapsSingleById@CPeninputShiftCapsInfo@@QAEPAUTPeninputShiftCapsSingle@1@H@Z @ 55 NONAME ; struct CPeninputShiftCapsInfo::TPeninputShiftCapsSingle * CPeninputShiftCapsInfo::FindShiftCapsSingleById(int) - ?FindVkbLayoutInfo@CPeninputLayoutConfig@@QAEPAVCPeninputVkbLayoutInfo@@H@Z @ 56 NONAME ; class CPeninputVkbLayoutInfo * CPeninputLayoutConfig::FindVkbLayoutInfo(int) - ?GetUiState@CPeninputUiStateMgr@@UAEPAVCPeninputUiStateBase@@H@Z @ 57 NONAME ; class CPeninputUiStateBase * CPeninputUiStateMgr::GetUiState(int) - ?HandleCapslockBtnClicked@CPeninputLayoutWindow@@UAEXXZ @ 58 NONAME ; void CPeninputLayoutWindow::HandleCapslockBtnClicked(void) - ?HandleCommand@CPeninputCommonLayout@@UAEHHPAE@Z @ 59 NONAME ; int CPeninputCommonLayout::HandleCommand(int, unsigned char *) - ?HandleControlEvent@CPeninputCommonLayout@@UAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 60 NONAME ; void CPeninputCommonLayout::HandleControlEvent(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?HandleControlEvent@CPeninputLayoutWindow@@UAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 61 NONAME ; void CPeninputLayoutWindow::HandleControlEvent(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?HandleControlEvent@CPeninputUiStateBase@@UAEHHABVTDesC16@@@Z @ 62 NONAME ; int CPeninputUiStateBase::HandleControlEvent(int, class TDesC16 const &) - ?HandleGSRepositoryCallBack@CPeninputDataMgr@@KAHPAX@Z @ 63 NONAME ; int CPeninputDataMgr::HandleGSRepositoryCallBack(void *) - ?HandleGSRepositoryChange@CPeninputDataMgr@@UAEXH@Z @ 64 NONAME ; void CPeninputDataMgr::HandleGSRepositoryChange(int) - ?HandleKeyEventL@CPeninputUiStateBase@@UAEHABVTRawEvent@@@Z @ 65 NONAME ; int CPeninputUiStateBase::HandleKeyEventL(class TRawEvent const &) - ?HandleRangeEvent@CPeninputLayoutWindow@@UAEXH@Z @ 66 NONAME ; void CPeninputLayoutWindow::HandleRangeEvent(int) - ?HandleRangeLoopEvent@CPeninputLayoutWindow@@UAEXH@Z @ 67 NONAME ; void CPeninputLayoutWindow::HandleRangeLoopEvent(int) - ?HandleRawKeyEventL@CPeninputCommonLayout@@UAEHABVTRawEvent@@@Z @ 68 NONAME ; int CPeninputCommonLayout::HandleRawKeyEventL(class TRawEvent const &) - ?HandleShiftBtnClicked@CPeninputLayoutWindow@@UAEXXZ @ 69 NONAME ; void CPeninputLayoutWindow::HandleShiftBtnClicked(void) - ?Init@CPeninputCommonLayout@@MAE?AVTRect@@XZ @ 70 NONAME ; class TRect CPeninputCommonLayout::Init(void) - ?InitMore@CPeninputDataMgr@@UAEXXZ @ 71 NONAME ; void CPeninputDataMgr::InitMore(void) - ?IntToDesc@CPeninputDataConverter@@SAXIAAVTDes16@@@Z @ 72 NONAME ; void CPeninputDataConverter::IntToDesc(unsigned int, class TDes16 &) - ?IsCapsLockPermitted@CPeninputCommonLayout@@UAEHXZ @ 73 NONAME ; int CPeninputCommonLayout::IsCapsLockPermitted(void) - ?IsCapsLockPermitted@CPeninputDataMgr@@QAEHXZ @ 74 NONAME ; int CPeninputDataMgr::IsCapsLockPermitted(void) - ?IsShiftPermitted@CPeninputCommonLayout@@UAEHXZ @ 75 NONAME ; int CPeninputCommonLayout::IsShiftPermitted(void) - ?IsShiftPermitted@CPeninputDataMgr@@QAEHXZ @ 76 NONAME ; int CPeninputDataMgr::IsShiftPermitted(void) - ?IsValidDestination@CPeninputCommonLayout@@MAEHABVTRect@@PAVCDragBar@@AAH2H@Z @ 77 NONAME ; int CPeninputCommonLayout::IsValidDestination(class TRect const &, class CDragBar *, int &, int &, int) - ?KeyMappingStringL@CPeninputNumericKepMappingMgr@@QBEPAVHBufC16@@H@Z @ 78 NONAME ; class HBufC16 * CPeninputNumericKepMappingMgr::KeyMappingStringL(int) const - ?LayoutWindow@CPeninputCommonLayout@@QBEPAVCPeninputLayoutWindow@@XZ @ 79 NONAME ; class CPeninputLayoutWindow * CPeninputCommonLayout::LayoutWindow(void) const - ?NewL@CPeninputClientLayoutInfo@@SAPAV1@AAVTResourceReader@@@Z @ 80 NONAME ; class CPeninputClientLayoutInfo * CPeninputClientLayoutInfo::NewL(class TResourceReader &) - ?NewL@CPeninputControlInfo@@SAPAV1@AAVTResourceReader@@@Z @ 81 NONAME ; class CPeninputControlInfo * CPeninputControlInfo::NewL(class TResourceReader &) - ?NewL@CPeninputCtrlPool@@SAPAV1@XZ @ 82 NONAME ; class CPeninputCtrlPool * CPeninputCtrlPool::NewL(void) - ?NewL@CPeninputDataMgr@@SAPAV1@PAVMPeninputLayoutContext@@@Z @ 83 NONAME ; class CPeninputDataMgr * CPeninputDataMgr::NewL(class MPeninputLayoutContext *) - ?NewL@CPeninputLayoutConfig@@SAPAV1@AAVCAknFepCtrlVkbLayout@@AAVTResourceReader@@@Z @ 84 NONAME ; class CPeninputLayoutConfig * CPeninputLayoutConfig::NewL(class CAknFepCtrlVkbLayout &, class TResourceReader &) - ?NewL@CPeninputNumericKepMappingMgr@@SAPAV1@VTResourceReader@@@Z @ 85 NONAME ; class CPeninputNumericKepMappingMgr * CPeninputNumericKepMappingMgr::NewL(class TResourceReader) - ?NewL@CPeninputRangeBarInfo@@SAPAV1@AAVTResourceReader@@@Z @ 86 NONAME ; class CPeninputRangeBarInfo * CPeninputRangeBarInfo::NewL(class TResourceReader &) - ?NewL@CPeninputRangeInfo@@SAPAV1@AAVTResourceReader@@@Z @ 87 NONAME ; class CPeninputRangeInfo * CPeninputRangeInfo::NewL(class TResourceReader &) - ?NewL@CPeninputShiftCapsInfo@@SAPAV1@AAVTResourceReader@@@Z @ 88 NONAME ; class CPeninputShiftCapsInfo * CPeninputShiftCapsInfo::NewL(class TResourceReader &) - ?NewL@CPeninputUiStateBase@@SAPAV1@PAVMPeninputUiStateMgr@@PAVMPeninputLayoutContext@@@Z @ 89 NONAME ; class CPeninputUiStateBase * CPeninputUiStateBase::NewL(class MPeninputUiStateMgr *, class MPeninputLayoutContext *) - ?NewL@CPeninputUiStateMgr@@SAPAV1@PAVMPeninputLayoutContext@@@Z @ 90 NONAME ; class CPeninputUiStateMgr * CPeninputUiStateMgr::NewL(class MPeninputLayoutContext *) - ?NewLC@CPeninputClientLayoutInfo@@SAPAV1@AAVTResourceReader@@@Z @ 91 NONAME ; class CPeninputClientLayoutInfo * CPeninputClientLayoutInfo::NewLC(class TResourceReader &) - ?NewLC@CPeninputCtrlPool@@SAPAV1@XZ @ 92 NONAME ; class CPeninputCtrlPool * CPeninputCtrlPool::NewLC(void) - ?NewLC@CPeninputDataMgr@@SAPAV1@PAVMPeninputLayoutContext@@@Z @ 93 NONAME ; class CPeninputDataMgr * CPeninputDataMgr::NewLC(class MPeninputLayoutContext *) - ?NewLC@CPeninputNumericKepMappingMgr@@SAPAV1@VTResourceReader@@@Z @ 94 NONAME ; class CPeninputNumericKepMappingMgr * CPeninputNumericKepMappingMgr::NewLC(class TResourceReader) - ?NewLC@CPeninputRangeBarInfo@@SAPAV1@AAVTResourceReader@@@Z @ 95 NONAME ; class CPeninputRangeBarInfo * CPeninputRangeBarInfo::NewLC(class TResourceReader &) - ?NewLC@CPeninputRangeInfo@@SAPAV1@AAVTResourceReader@@@Z @ 96 NONAME ; class CPeninputRangeInfo * CPeninputRangeInfo::NewLC(class TResourceReader &) - ?NewLC@CPeninputShiftCapsInfo@@SAPAV1@AAVTResourceReader@@@Z @ 97 NONAME ; class CPeninputShiftCapsInfo * CPeninputShiftCapsInfo::NewLC(class TResourceReader &) - ?NewLC@CPeninputUiStateMgr@@SAPAV1@PAVMPeninputLayoutContext@@@Z @ 98 NONAME ; class CPeninputUiStateMgr * CPeninputUiStateMgr::NewLC(class MPeninputLayoutContext *) - ?NotifyEngine@CPeninputDataMgr@@UAEXW4TPeninputDataType@@PAX@Z @ 99 NONAME ; void CPeninputDataMgr::NotifyEngine(enum TPeninputDataType, void *) - ?OnAppEditorTextComing@CPeninputCommonLayout@@UAEHABUTFepInputContextFieldData@@@Z @ 100 NONAME ; int CPeninputCommonLayout::OnAppEditorTextComing(struct TFepInputContextFieldData const &) - ?ReadIcfInfo@CPeninputLayoutWindow@@IAEXVTResourceReader@@@Z @ 101 NONAME ; void CPeninputLayoutWindow::ReadIcfInfo(class TResourceReader) - ?ReconfigUnitSize@CPeninputLayoutWindow@@UAEHH@Z @ 102 NONAME ; int CPeninputLayoutWindow::ReconfigUnitSize(int) - ?RemoveControl@CPeninputCtrlPool@@QAEXH@Z @ 103 NONAME ; void CPeninputCtrlPool::RemoveControl(int) - ?RemoveControlInfo@CPeninputClientLayoutInfo@@QAEXH@Z @ 104 NONAME ; void CPeninputClientLayoutInfo::RemoveControlInfo(int) - ?RemoveControlInfo@CPeninputClientLayoutInfo@@QAEXPAVCPeninputControlInfo@@@Z @ 105 NONAME ; void CPeninputClientLayoutInfo::RemoveControlInfo(class CPeninputControlInfo *) - ?RequestData@CPeninputCommonLayout@@UAEPAXW4TPeninputDataType@@@Z @ 106 NONAME ; void * CPeninputCommonLayout::RequestData(enum TPeninputDataType) - ?RequestData@CPeninputDataMgr@@UAEPAXW4TPeninputDataType@@@Z @ 107 NONAME ; void * CPeninputDataMgr::RequestData(enum TPeninputDataType) - ?Reset@CPeninputCtrlPool@@QAEXXZ @ 108 NONAME ; void CPeninputCtrlPool::Reset(void) - ?Reset@CPeninputDataMgr@@UAEXXZ @ 109 NONAME ; void CPeninputDataMgr::Reset(void) - ?Reset@CPeninputNumericKepMappingMgr@@QAEXXZ @ 110 NONAME ; void CPeninputNumericKepMappingMgr::Reset(void) - ?SaveKey@CPeninputCommonLayout@@MAEXHH@Z @ 111 NONAME ; void CPeninputCommonLayout::SaveKey(int, int) - ?SaveKey@CPeninputDataMgr@@UAEXHH@Z @ 112 NONAME ; void CPeninputDataMgr::SaveKey(int, int) - ?SendEventToLayout@CPeninputCommonLayout@@QAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 113 NONAME ; void CPeninputCommonLayout::SendEventToLayout(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?SendEventToWindow@CPeninputCommonLayout@@UAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 114 NONAME ; void CPeninputCommonLayout::SendEventToWindow(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?SendKey@CPeninputUiStateBase@@IAEHABVTDesC16@@@Z @ 115 NONAME ; int CPeninputUiStateBase::SendKey(class TDesC16 const &) - ?Sendkey@CPeninputCommonLayout@@UAEXHABVTDesC16@@@Z @ 116 NONAME ; void CPeninputCommonLayout::Sendkey(int, class TDesC16 const &) - ?SetCurrentUiState@CPeninputUiStateMgr@@UAEXH@Z @ 117 NONAME ; void CPeninputUiStateMgr::SetCurrentUiState(int) - ?SetCurrentUiState@CPeninputUiStateMgr@@UAEXPAVCPeninputUiStateBase@@@Z @ 118 NONAME ; void CPeninputUiStateMgr::SetCurrentUiState(class CPeninputUiStateBase *) - ?SetData@CPeninputCommonLayout@@UAEXW4TPeninputDataType@@PAX@Z @ 119 NONAME ; void CPeninputCommonLayout::SetData(enum TPeninputDataType, void *) - ?SetData@CPeninputDataMgr@@UAEXW4TPeninputDataType@@PAX@Z @ 120 NONAME ; void CPeninputDataMgr::SetData(enum TPeninputDataType, void *) - ?SetEditorTextL@CPeninputLayoutWindow@@QAEXABUTFepInputContextFieldData@@@Z @ 121 NONAME ; void CPeninputLayoutWindow::SetEditorTextL(struct TFepInputContextFieldData const &) - ?SetEnableSettingBtn@CPeninputLayoutWindow@@QAEXH@Z @ 122 NONAME ; void CPeninputLayoutWindow::SetEnableSettingBtn(int) - ?SetEnableSwitchToHwr@CPeninputLayoutWindow@@QAEXH@Z @ 123 NONAME ; void CPeninputLayoutWindow::SetEnableSwitchToHwr(int) - ?SetSwitchBtnFont@CPeninputLayoutWindow@@IAEXAAVCAknFepCtrlEventButton@@@Z @ 124 NONAME ; void CPeninputLayoutWindow::SetSwitchBtnFont(class CAknFepCtrlEventButton &) - ?SetSwitchBtnTextColor@CPeninputLayoutWindow@@IAEXAAVCAknFepCtrlEventButton@@@Z @ 125 NONAME ; void CPeninputLayoutWindow::SetSwitchBtnTextColor(class CAknFepCtrlEventButton &) - ?SetWindowRect@CPeninputLayoutWindow@@IAEXABVTRect@@@Z @ 126 NONAME ; void CPeninputLayoutWindow::SetWindowRect(class TRect const &) - ?ShiftCapsSingleVkbLayoutByCase@CPeninputLayoutConfig@@QAEHHH@Z @ 127 NONAME ; int CPeninputLayoutConfig::ShiftCapsSingleVkbLayoutByCase(int, int) - ?ShiftCapsSingleVkbLayoutId@CPeninputLayoutConfig@@QAEHHH@Z @ 128 NONAME ; int CPeninputLayoutConfig::ShiftCapsSingleVkbLayoutId(int, int) - ?ShiftCapslockByCase@CPeninputDataConverter@@SAXHAAH0@Z @ 129 NONAME ; void CPeninputDataConverter::ShiftCapslockByCase(int, int &, int &) - ?SizeChanged@CPeninputCommonLayout@@UAEHPBX@Z @ 130 NONAME ; int CPeninputCommonLayout::SizeChanged(void const *) - ?SizeChanged@CPeninputLayoutWindow@@UAEXH@Z @ 131 NONAME ; void CPeninputLayoutWindow::SizeChanged(int) - ?UiStateMgr@CPeninputCommonLayout@@QBEPAVMPeninputUiStateMgr@@XZ @ 132 NONAME ; class MPeninputUiStateMgr * CPeninputCommonLayout::UiStateMgr(void) const - ?PenInputType@CPeninputCommonLayout@@UAE?AW4TPenUiTypeTag@@XZ @ 133 NONAME ABSENT ; int CPeninputCommonLayout::PenInputType(void) - ?SetTextIsSecret@CPeninputLayoutWindow@@QAEXH@Z @ 134 NONAME ; void CPeninputLayoutWindow::SetTextIsSecret(int) - ?OnInputLanguageChange@CPeninputLayoutWindow@@UAEXXZ @ 135 NONAME ABSENT ; void CPeninputLayoutWindow::OnInputLanguageChange(void) - ?SetLafLayOut@CPeninputLayoutWindow@@MAEXHH@Z @ 136 NONAME ABSENT ; void CPeninputLayoutWindow::SetLafLayOut(int, int) - ?SetVkbLayoutSize@CPeninputLayoutWindow@@MAEXXZ @ 137 NONAME ABSENT ; void CPeninputLayoutWindow::SetVkbLayoutSize(void) - ?SizeChangedForBaseWindow@CPeninputLayoutWindow@@MAEXH@Z @ 138 NONAME ABSENT ; void CPeninputLayoutWindow::SizeChangedForBaseWindow(int) - ??0CPeninputCommonLayoutExt@@IAE@PAVMLayoutOwner@@@Z @ 139 NONAME ; CPeninputCommonLayoutExt::CPeninputCommonLayoutExt(class MLayoutOwner *) - ??0CPeninputLayoutWindowExt@@IAE@PAVCFepUiLayout@@PAVMPeninputLayoutContext@@@Z @ 140 NONAME ; CPeninputLayoutWindowExt::CPeninputLayoutWindowExt(class CFepUiLayout *, class MPeninputLayoutContext *) - ??1CPeninputCommonLayoutExt@@UAE@XZ @ 141 NONAME ; CPeninputCommonLayoutExt::~CPeninputCommonLayoutExt(void) - ??1CPeninputLayoutWindowExt@@UAE@XZ @ 142 NONAME ; CPeninputLayoutWindowExt::~CPeninputLayoutWindowExt(void) - ?AddNotOwnedControl@CPeninputLayoutWindowExt@@IAEXPAVCFepUiBaseCtrl@@@Z @ 143 NONAME ; void CPeninputLayoutWindowExt::AddNotOwnedControl(class CFepUiBaseCtrl *) - ?CaseByShiftCapslockStatus@CPeninputLayoutWindowExt@@AAEHXZ @ 144 NONAME ; int CPeninputLayoutWindowExt::CaseByShiftCapslockStatus(void) - ?ChangeButtonStatus@CPeninputLayoutWindowExt@@IAEXHH@Z @ 145 NONAME ; void CPeninputLayoutWindowExt::ChangeButtonStatus(int, int) - ?ChangeClientLayout@CPeninputLayoutWindowExt@@QAEXH@Z @ 146 NONAME ; void CPeninputLayoutWindowExt::ChangeClientLayout(int) - ?ChangeInputLanguageL@CPeninputLayoutWindowExt@@QAEXH@Z @ 147 NONAME ; void CPeninputLayoutWindowExt::ChangeInputLanguageL(int) - ?ChangeLayoutPosition@CPeninputLayoutWindowExt@@IAEXH@Z @ 148 NONAME ; void CPeninputLayoutWindowExt::ChangeLayoutPosition(int) - ?ChangeRange@CPeninputLayoutWindowExt@@QAEXHHH@Z @ 149 NONAME ; void CPeninputLayoutWindowExt::ChangeRange(int, int, int) - ?ChangeVkbLayout@CPeninputLayoutWindowExt@@QAEXH@Z @ 150 NONAME ; void CPeninputLayoutWindowExt::ChangeVkbLayout(int) - ?ConfigInfo@CPeninputLayoutWindowExt@@QBEPAVCPeninputLayoutConfig@@XZ @ 151 NONAME ; class CPeninputLayoutConfig * CPeninputLayoutWindowExt::ConfigInfo(void) const - ?ConstructL@CPeninputCommonLayoutExt@@IAEXPBX@Z @ 152 NONAME ; void CPeninputCommonLayoutExt::ConstructL(void const *) - ?ConstructL@CPeninputLayoutWindowExt@@IAEXXZ @ 153 NONAME ; void CPeninputLayoutWindowExt::ConstructL(void) - ?DoClose@CPeninputLayoutWindowExt@@MAEHXZ @ 154 NONAME ; int CPeninputLayoutWindowExt::DoClose(void) - ?Draw@CPeninputLayoutWindowExt@@UAEXXZ @ 155 NONAME ; void CPeninputLayoutWindowExt::Draw(void) - ?HandleCapslockBtnClicked@CPeninputLayoutWindowExt@@UAEXXZ @ 156 NONAME ; void CPeninputLayoutWindowExt::HandleCapslockBtnClicked(void) - ?HandleCommand@CPeninputCommonLayoutExt@@UAEHHPAE@Z @ 157 NONAME ; int CPeninputCommonLayoutExt::HandleCommand(int, unsigned char *) - ?HandleControlEvent@CPeninputCommonLayoutExt@@UAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 158 NONAME ; void CPeninputCommonLayoutExt::HandleControlEvent(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?HandleControlEvent@CPeninputLayoutWindowExt@@UAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 159 NONAME ; void CPeninputLayoutWindowExt::HandleControlEvent(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?HandleRangeEvent@CPeninputLayoutWindowExt@@UAEXH@Z @ 160 NONAME ; void CPeninputLayoutWindowExt::HandleRangeEvent(int) - ?HandleRangeLoopEvent@CPeninputLayoutWindowExt@@UAEXH@Z @ 161 NONAME ; void CPeninputLayoutWindowExt::HandleRangeLoopEvent(int) - ?HandleRawKeyEventL@CPeninputCommonLayoutExt@@UAEHABVTRawEvent@@@Z @ 162 NONAME ; int CPeninputCommonLayoutExt::HandleRawKeyEventL(class TRawEvent const &) - ?HandleShiftBtnClicked@CPeninputLayoutWindowExt@@UAEXXZ @ 163 NONAME ; void CPeninputLayoutWindowExt::HandleShiftBtnClicked(void) - ?Init@CPeninputCommonLayoutExt@@MAE?AVTRect@@XZ @ 164 NONAME ; class TRect CPeninputCommonLayoutExt::Init(void) - ?IsCapsLockPermitted@CPeninputCommonLayoutExt@@UAEHXZ @ 165 NONAME ; int CPeninputCommonLayoutExt::IsCapsLockPermitted(void) - ?IsShiftPermitted@CPeninputCommonLayoutExt@@UAEHXZ @ 166 NONAME ; int CPeninputCommonLayoutExt::IsShiftPermitted(void) - ?IsValidDestination@CPeninputCommonLayoutExt@@MAEHABVTRect@@PAVCDragBar@@AAH2H@Z @ 167 NONAME ; int CPeninputCommonLayoutExt::IsValidDestination(class TRect const &, class CDragBar *, int &, int &, int) - ?LayoutWindow@CPeninputCommonLayoutExt@@QBEPAVCPeninputLayoutWindowExt@@XZ @ 168 NONAME ; class CPeninputLayoutWindowExt * CPeninputCommonLayoutExt::LayoutWindow(void) const - ?OnAppEditorTextComing@CPeninputCommonLayoutExt@@UAEHABUTFepInputContextFieldData@@@Z @ 169 NONAME ; int CPeninputCommonLayoutExt::OnAppEditorTextComing(struct TFepInputContextFieldData const &) - ?OnInputLanguageChange@CPeninputLayoutWindowExt@@UAEXXZ @ 170 NONAME ; void CPeninputLayoutWindowExt::OnInputLanguageChange(void) - ?PenInputType@CPeninputCommonLayoutExt@@UAE?AW4TPenUiTypeTag@@XZ @ 171 NONAME ABSENT ; int CPeninputCommonLayoutExt::PenInputType(void) - ?ReconfigUnitSize@CPeninputLayoutWindowExt@@UAEHH@Z @ 172 NONAME ; int CPeninputLayoutWindowExt::ReconfigUnitSize(int) - ?RequestData@CPeninputCommonLayoutExt@@UAEPAXW4TPeninputDataType@@@Z @ 173 NONAME ; void * CPeninputCommonLayoutExt::RequestData(enum TPeninputDataType) - ?SaveKey@CPeninputCommonLayoutExt@@MAEXHH@Z @ 174 NONAME ; void CPeninputCommonLayoutExt::SaveKey(int, int) - ?SendEventToLayout@CPeninputCommonLayoutExt@@QAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 175 NONAME ; void CPeninputCommonLayoutExt::SendEventToLayout(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?SendEventToWindow@CPeninputCommonLayoutExt@@UAEXHPAVCFepUiBaseCtrl@@ABVTDesC16@@@Z @ 176 NONAME ; void CPeninputCommonLayoutExt::SendEventToWindow(int, class CFepUiBaseCtrl *, class TDesC16 const &) - ?Sendkey@CPeninputCommonLayoutExt@@UAEXHABVTDesC16@@@Z @ 177 NONAME ; void CPeninputCommonLayoutExt::Sendkey(int, class TDesC16 const &) - ?SetData@CPeninputCommonLayoutExt@@UAEXW4TPeninputDataType@@PAX@Z @ 178 NONAME ; void CPeninputCommonLayoutExt::SetData(enum TPeninputDataType, void *) - ?SetEditorTextL@CPeninputLayoutWindowExt@@QAEXABUTFepInputContextFieldData@@@Z @ 179 NONAME ; void CPeninputLayoutWindowExt::SetEditorTextL(struct TFepInputContextFieldData const &) - ?SetEnableSettingBtn@CPeninputLayoutWindowExt@@QAEXH@Z @ 180 NONAME ; void CPeninputLayoutWindowExt::SetEnableSettingBtn(int) - ?SetEnableSwitchToHwr@CPeninputLayoutWindowExt@@QAEXH@Z @ 181 NONAME ; void CPeninputLayoutWindowExt::SetEnableSwitchToHwr(int) - ?SetLafLayOut@CPeninputLayoutWindowExt@@MAEXHH@Z @ 182 NONAME ; void CPeninputLayoutWindowExt::SetLafLayOut(int, int) - ?SetSwitchBtnFont@CPeninputLayoutWindowExt@@IAEXAAVCAknFepCtrlEventButton@@@Z @ 183 NONAME ; void CPeninputLayoutWindowExt::SetSwitchBtnFont(class CAknFepCtrlEventButton &) - ?SetSwitchBtnTextColor@CPeninputLayoutWindowExt@@IAEXAAVCAknFepCtrlEventButton@@@Z @ 184 NONAME ; void CPeninputLayoutWindowExt::SetSwitchBtnTextColor(class CAknFepCtrlEventButton &) - ?SetTextIsSecret@CPeninputLayoutWindowExt@@QAEXH@Z @ 185 NONAME ; void CPeninputLayoutWindowExt::SetTextIsSecret(int) - ?SetVkbLayoutSize@CPeninputLayoutWindowExt@@MAEXXZ @ 186 NONAME ; void CPeninputLayoutWindowExt::SetVkbLayoutSize(void) - ?SetWindowRect@CPeninputLayoutWindowExt@@IAEXABVTRect@@@Z @ 187 NONAME ; void CPeninputLayoutWindowExt::SetWindowRect(class TRect const &) - ?SizeChanged@CPeninputCommonLayoutExt@@UAEHPBX@Z @ 188 NONAME ; int CPeninputCommonLayoutExt::SizeChanged(void const *) - ?SizeChanged@CPeninputLayoutWindowExt@@UAEXH@Z @ 189 NONAME ; void CPeninputLayoutWindowExt::SizeChanged(int) - ?SizeChangedForBaseWindow@CPeninputLayoutWindowExt@@MAEXH@Z @ 190 NONAME ; void CPeninputLayoutWindowExt::SizeChangedForBaseWindow(int) - ?UiStateMgr@CPeninputCommonLayoutExt@@QBEPAVMPeninputUiStateMgr@@XZ @ 191 NONAME ; class MPeninputUiStateMgr * CPeninputCommonLayoutExt::UiStateMgr(void) const - ?PenInputType@CPeninputCommonLayout@@UAEHXZ @ 192 NONAME ; int CPeninputCommonLayout::PenInputType(void) - ?PenInputType@CPeninputCommonLayoutExt@@UAEHXZ @ 193 NONAME ; int CPeninputCommonLayoutExt::PenInputType(void) - ?ChangeMergedButtonStatus@CPeninputLayoutWindowExt@@IAEXHH@Z @ 194 NONAME ; void CPeninputLayoutWindowExt::ChangeMergedButtonStatus(int, int) - ?HandleMergedBtnClicked@CPeninputLayoutWindowExt@@UAEXH@Z @ 195 NONAME ; void CPeninputLayoutWindowExt::HandleMergedBtnClicked(int) - ?ChangeToPreviousRange@CPeninputLayoutWindow@@MAEXH@Z @ 196 NONAME ; void CPeninputLayoutWindow::ChangeToPreviousRange(int) - ?IsCanChangeRange@CPeninputLayoutWindow@@MAEHH@Z @ 197 NONAME ; int CPeninputLayoutWindow::IsCanChangeRange(int) - ?IsMultiLineIcf@CPeninputLayoutWindow@@MAEHXZ @ 198 NONAME ; int CPeninputLayoutWindow::IsMultiLineIcf(void) - ?SetTextAlignmentL@CPeninputLayoutWindow@@QAEXH@Z @ 199 NONAME ; void CPeninputLayoutWindow::SetTextAlignmentL(int) - ?SetTextAlignmentL@CPeninputLayoutWindowExt@@QAEXH@Z @ 200 NONAME ; void CPeninputLayoutWindowExt::SetTextAlignmentL(int) - ?KeyMappingStringL@CPeninputNumericKepMappingMgr@@QBEPAVHBufC16@@HH@Z @ 201 NONAME ; class HBufC16 * CPeninputNumericKepMappingMgr::KeyMappingStringL(int, int) const - ?SetPositionFromOutside@CPeninputCommonLayout@@UAEXABVTPoint@@@Z @ 202 NONAME ; void CPeninputCommonLayout::SetPositionFromOutside(class TPoint const &) - ?SetPositionFromOutside@CPeninputCommonLayoutExt@@UAEXABVTPoint@@@Z @ 203 NONAME ; void CPeninputCommonLayoutExt::SetPositionFromOutside(class TPoint const &) - ?HandleShiftAndCapslockBtnClicked@CPeninputLayoutWindowExt@@UAEXXZ @ 204 NONAME ; void CPeninputLayoutWindowExt::HandleShiftAndCapslockBtnClicked(void) - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/EABI/peninputcommonlayoutU.DEF --- a/textinput/peninputcommonlayout/EABI/peninputcommonlayoutU.DEF Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,319 +0,0 @@ -EXPORTS - _ZN16CPeninputDataMgr10ConstructLEv @ 1 NONAME - _ZN16CPeninputDataMgr11RequestDataE17TPeninputDataType @ 2 NONAME - _ZN16CPeninputDataMgr12NotifyEngineE17TPeninputDataTypePv @ 3 NONAME - _ZN16CPeninputDataMgr16IsShiftPermittedEv @ 4 NONAME - _ZN16CPeninputDataMgr19IsCapsLockPermittedEv @ 5 NONAME - _ZN16CPeninputDataMgr24HandleGSRepositoryChangeEi @ 6 NONAME - _ZN16CPeninputDataMgr26HandleGSRepositoryCallBackEPv @ 7 NONAME - _ZN16CPeninputDataMgr4NewLEP22MPeninputLayoutContext @ 8 NONAME - _ZN16CPeninputDataMgr5NewLCEP22MPeninputLayoutContext @ 9 NONAME - _ZN16CPeninputDataMgr5ResetEv @ 10 NONAME - _ZN16CPeninputDataMgr7SaveKeyEii @ 11 NONAME - _ZN16CPeninputDataMgr7SetDataE17TPeninputDataTypePv @ 12 NONAME - _ZN16CPeninputDataMgr8InitMoreEv @ 13 NONAME - _ZN16CPeninputDataMgrC1EP22MPeninputLayoutContext @ 14 NONAME - _ZN16CPeninputDataMgrC2EP22MPeninputLayoutContext @ 15 NONAME - _ZN16CPeninputDataMgrD0Ev @ 16 NONAME - _ZN16CPeninputDataMgrD1Ev @ 17 NONAME - _ZN16CPeninputDataMgrD2Ev @ 18 NONAME - _ZN17CPeninputCtrlPool10AddControlEP14CFepUiBaseCtrl @ 19 NONAME - _ZN17CPeninputCtrlPool13RemoveControlEi @ 20 NONAME - _ZN17CPeninputCtrlPool4NewLEv @ 21 NONAME - _ZN17CPeninputCtrlPool5NewLCEv @ 22 NONAME - _ZN17CPeninputCtrlPool5ResetEv @ 23 NONAME - _ZN17CPeninputCtrlPool9ConstructEv @ 24 NONAME - _ZN17CPeninputCtrlPoolD0Ev @ 25 NONAME - _ZN17CPeninputCtrlPoolD1Ev @ 26 NONAME - _ZN17CPeninputCtrlPoolD2Ev @ 27 NONAME - _ZN18CPeninputRangeInfo4NewLER15TResourceReader @ 28 NONAME - _ZN18CPeninputRangeInfo5NewLCER15TResourceReader @ 29 NONAME - _ZN18CPeninputRangeInfoD0Ev @ 30 NONAME - _ZN18CPeninputRangeInfoD1Ev @ 31 NONAME - _ZN18CPeninputRangeInfoD2Ev @ 32 NONAME - _ZN19CPeninputUiStateMgr10AddUiStateEP20CPeninputUiStateBasei @ 33 NONAME - _ZN19CPeninputUiStateMgr10GetUiStateEi @ 34 NONAME - _ZN19CPeninputUiStateMgr14CurrentUiStateEv @ 35 NONAME - _ZN19CPeninputUiStateMgr17SetCurrentUiStateEP20CPeninputUiStateBase @ 36 NONAME - _ZN19CPeninputUiStateMgr17SetCurrentUiStateEi @ 37 NONAME - _ZN19CPeninputUiStateMgr4NewLEP22MPeninputLayoutContext @ 38 NONAME - _ZN19CPeninputUiStateMgr5NewLCEP22MPeninputLayoutContext @ 39 NONAME - _ZN19CPeninputUiStateMgrD0Ev @ 40 NONAME - _ZN19CPeninputUiStateMgrD1Ev @ 41 NONAME - _ZN19CPeninputUiStateMgrD2Ev @ 42 NONAME - _ZN20CPeninputControlInfo4NewLER15TResourceReader @ 43 NONAME - _ZN20CPeninputControlInfoD0Ev @ 44 NONAME - _ZN20CPeninputControlInfoD1Ev @ 45 NONAME - _ZN20CPeninputControlInfoD2Ev @ 46 NONAME - _ZN20CPeninputUiStateBase15HandleKeyEventLERK9TRawEvent @ 47 NONAME - _ZN20CPeninputUiStateBase18HandleControlEventEiRK7TDesC16 @ 48 NONAME - _ZN20CPeninputUiStateBase4NewLEP19MPeninputUiStateMgrP22MPeninputLayoutContext @ 49 NONAME - _ZN20CPeninputUiStateBase7SendKeyERK7TDesC16 @ 50 NONAME - _ZN20CPeninputUiStateBase9ConstructEv @ 51 NONAME - _ZN20CPeninputUiStateBaseC1EP19MPeninputUiStateMgrP22MPeninputLayoutContext @ 52 NONAME - _ZN20CPeninputUiStateBaseC2EP19MPeninputUiStateMgrP22MPeninputLayoutContext @ 53 NONAME - _ZN20CPeninputUiStateBaseD0Ev @ 54 NONAME - _ZN20CPeninputUiStateBaseD1Ev @ 55 NONAME - _ZN20CPeninputUiStateBaseD2Ev @ 56 NONAME - _ZN21CPeninputCommonLayout10ConstructLEPKv @ 57 NONAME - _ZN21CPeninputCommonLayout11RequestDataE17TPeninputDataType @ 58 NONAME - _ZN21CPeninputCommonLayout11SizeChangedEPKv @ 59 NONAME - _ZN21CPeninputCommonLayout13HandleCommandEiPh @ 60 NONAME - _ZN21CPeninputCommonLayout16IsShiftPermittedEv @ 61 NONAME - _ZN21CPeninputCommonLayout17SendEventToLayoutEiP14CFepUiBaseCtrlRK7TDesC16 @ 62 NONAME - _ZN21CPeninputCommonLayout17SendEventToWindowEiP14CFepUiBaseCtrlRK7TDesC16 @ 63 NONAME - _ZN21CPeninputCommonLayout18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 64 NONAME - _ZN21CPeninputCommonLayout18HandleRawKeyEventLERK9TRawEvent @ 65 NONAME - _ZN21CPeninputCommonLayout18IsValidDestinationERK5TRectP8CDragBarRiS5_i @ 66 NONAME - _ZN21CPeninputCommonLayout19IsCapsLockPermittedEv @ 67 NONAME - _ZN21CPeninputCommonLayout21OnAppEditorTextComingERK25TFepInputContextFieldData @ 68 NONAME - _ZN21CPeninputCommonLayout4InitEv @ 69 NONAME - _ZN21CPeninputCommonLayout7SaveKeyEii @ 70 NONAME - _ZN21CPeninputCommonLayout7SendkeyEiRK7TDesC16 @ 71 NONAME - _ZN21CPeninputCommonLayout7SetDataE17TPeninputDataTypePv @ 72 NONAME - _ZN21CPeninputCommonLayoutC2EP12MLayoutOwner @ 73 NONAME - _ZN21CPeninputCommonLayoutD0Ev @ 74 NONAME - _ZN21CPeninputCommonLayoutD1Ev @ 75 NONAME - _ZN21CPeninputCommonLayoutD2Ev @ 76 NONAME - _ZN21CPeninputLayoutConfig17FindShiftCapsInfoEi @ 77 NONAME - _ZN21CPeninputLayoutConfig17FindVkbLayoutInfoEi @ 78 NONAME - _ZN21CPeninputLayoutConfig20FindClientLayoutInfoEi @ 79 NONAME - _ZN21CPeninputLayoutConfig26ShiftCapsSingleVkbLayoutIdEii @ 80 NONAME - _ZN21CPeninputLayoutConfig30ShiftCapsSingleVkbLayoutByCaseEii @ 81 NONAME - _ZN21CPeninputLayoutConfig4NewLER20CAknFepCtrlVkbLayoutR15TResourceReader @ 82 NONAME - _ZN21CPeninputLayoutConfigD0Ev @ 83 NONAME - _ZN21CPeninputLayoutConfigD1Ev @ 84 NONAME - _ZN21CPeninputLayoutConfigD2Ev @ 85 NONAME - _ZN21CPeninputLayoutWindow10ConstructLEv @ 86 NONAME - _ZN21CPeninputLayoutWindow11ChangeRangeEiii @ 87 NONAME - _ZN21CPeninputLayoutWindow11ReadIcfInfoE15TResourceReader @ 88 NONAME - _ZN21CPeninputLayoutWindow11SizeChangedEi @ 89 NONAME - _ZN21CPeninputLayoutWindow13SetWindowRectERK5TRect @ 90 NONAME - _ZN21CPeninputLayoutWindow14SetEditorTextLERK25TFepInputContextFieldData @ 91 NONAME - _ZN21CPeninputLayoutWindow15ChangeVkbLayoutEi @ 92 NONAME - _ZN21CPeninputLayoutWindow16HandleRangeEventEi @ 93 NONAME - _ZN21CPeninputLayoutWindow16ReconfigUnitSizeEi @ 94 NONAME - _ZN21CPeninputLayoutWindow16SetSwitchBtnFontER22CAknFepCtrlEventButton @ 95 NONAME - _ZN21CPeninputLayoutWindow18AddNotOwnedControlEP14CFepUiBaseCtrl @ 96 NONAME - _ZN21CPeninputLayoutWindow18ChangeButtonStatusEii @ 97 NONAME - _ZN21CPeninputLayoutWindow18ChangeClientLayoutEi @ 98 NONAME - _ZN21CPeninputLayoutWindow18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 99 NONAME - _ZN21CPeninputLayoutWindow19SetEnableSettingBtnEi @ 100 NONAME - _ZN21CPeninputLayoutWindow20ChangeInputLanguageLEi @ 101 NONAME - _ZN21CPeninputLayoutWindow20ChangeLayoutPositionEi @ 102 NONAME - _ZN21CPeninputLayoutWindow20HandleRangeLoopEventEi @ 103 NONAME - _ZN21CPeninputLayoutWindow20SetEnableSwitchToHwrEi @ 104 NONAME - _ZN21CPeninputLayoutWindow21HandleShiftBtnClickedEv @ 105 NONAME - _ZN21CPeninputLayoutWindow21SetSwitchBtnTextColorER22CAknFepCtrlEventButton @ 106 NONAME - _ZN21CPeninputLayoutWindow22ConstructFromResourceLER15TResourceReader @ 107 NONAME - _ZN21CPeninputLayoutWindow22ConstructFromResourceLEv @ 108 NONAME - _ZN21CPeninputLayoutWindow24HandleCapslockBtnClickedEv @ 109 NONAME - _ZN21CPeninputLayoutWindow25CaseByShiftCapslockStatusEv @ 110 NONAME - _ZN21CPeninputLayoutWindow4DrawEv @ 111 NONAME - _ZN21CPeninputLayoutWindow7DoCloseEv @ 112 NONAME - _ZN21CPeninputLayoutWindowC2EP12CFepUiLayoutP22MPeninputLayoutContext @ 113 NONAME - _ZN21CPeninputLayoutWindowD0Ev @ 114 NONAME - _ZN21CPeninputLayoutWindowD1Ev @ 115 NONAME - _ZN21CPeninputLayoutWindowD2Ev @ 116 NONAME - _ZN21CPeninputRangeBarInfo4NewLER15TResourceReader @ 117 NONAME - _ZN21CPeninputRangeBarInfo5NewLCER15TResourceReader @ 118 NONAME - _ZN21CPeninputRangeBarInfo9FindRangeEi @ 119 NONAME - _ZN21CPeninputRangeBarInfoD0Ev @ 120 NONAME - _ZN21CPeninputRangeBarInfoD1Ev @ 121 NONAME - _ZN21CPeninputRangeBarInfoD2Ev @ 122 NONAME - _ZN22CPeninputDataConverter15FepCaseByCaseIdEi @ 123 NONAME - _ZN22CPeninputDataConverter17CombinationToDescEijR6TDes16 @ 124 NONAME - _ZN22CPeninputDataConverter19ShiftCapslockByCaseEiRiS0_ @ 125 NONAME - _ZN22CPeninputDataConverter8AnyToIntEPv @ 126 NONAME - _ZN22CPeninputDataConverter9IntToDescEjR6TDes16 @ 127 NONAME - _ZN22CPeninputDataConverterC1Ev @ 128 NONAME - _ZN22CPeninputDataConverterC2Ev @ 129 NONAME - _ZN22CPeninputDataConverterD0Ev @ 130 NONAME - _ZN22CPeninputDataConverterD1Ev @ 131 NONAME - _ZN22CPeninputDataConverterD2Ev @ 132 NONAME - _ZN22CPeninputShiftCapsInfo23FindShiftCapsSingleByIdEi @ 133 NONAME - _ZN22CPeninputShiftCapsInfo25FindShiftCapsSingleByCaseEi @ 134 NONAME - _ZN22CPeninputShiftCapsInfo4NewLER15TResourceReader @ 135 NONAME - _ZN22CPeninputShiftCapsInfo5NewLCER15TResourceReader @ 136 NONAME - _ZN22CPeninputShiftCapsInfoD0Ev @ 137 NONAME - _ZN22CPeninputShiftCapsInfoD1Ev @ 138 NONAME - _ZN22CPeninputShiftCapsInfoD2Ev @ 139 NONAME - _ZN25CPeninputClientLayoutInfo14AddControlInfoEP20CPeninputControlInfo @ 140 NONAME - _ZN25CPeninputClientLayoutInfo15FindControlInfoEi @ 141 NONAME - _ZN25CPeninputClientLayoutInfo17RemoveControlInfoEP20CPeninputControlInfo @ 142 NONAME - _ZN25CPeninputClientLayoutInfo17RemoveControlInfoEi @ 143 NONAME - _ZN25CPeninputClientLayoutInfo22ConstructFromResourceLER15TResourceReader @ 144 NONAME - _ZN25CPeninputClientLayoutInfo4NewLER15TResourceReader @ 145 NONAME - _ZN25CPeninputClientLayoutInfo5NewLCER15TResourceReader @ 146 NONAME - _ZN25CPeninputClientLayoutInfoD0Ev @ 147 NONAME - _ZN25CPeninputClientLayoutInfoD1Ev @ 148 NONAME - _ZN25CPeninputClientLayoutInfoD2Ev @ 149 NONAME - _ZN29CPeninputNumericKepMappingMgr4NewLE15TResourceReader @ 150 NONAME - _ZN29CPeninputNumericKepMappingMgr5NewLCE15TResourceReader @ 151 NONAME - _ZN29CPeninputNumericKepMappingMgr5ResetEv @ 152 NONAME - _ZN29CPeninputNumericKepMappingMgrD0Ev @ 153 NONAME - _ZN29CPeninputNumericKepMappingMgrD1Ev @ 154 NONAME - _ZN29CPeninputNumericKepMappingMgrD2Ev @ 155 NONAME - _ZNK17CPeninputCtrlPool12ControlCountEv @ 156 NONAME - _ZNK17CPeninputCtrlPool14ControlByIndexEi @ 157 NONAME - _ZNK17CPeninputCtrlPool7ControlEi @ 158 NONAME - _ZNK21CPeninputCommonLayout10UiStateMgrEv @ 159 NONAME - _ZNK21CPeninputCommonLayout12LayoutWindowEv @ 160 NONAME - _ZNK21CPeninputLayoutWindow10ConfigInfoEv @ 161 NONAME - _ZNK29CPeninputNumericKepMappingMgr17KeyMappingStringLEi @ 162 NONAME - _ZNK29CPeninputNumericKepMappingMgr5CountEv @ 163 NONAME - _ZTI16CPeninputDataMgr @ 164 NONAME ; ## - _ZTI17CPeninputCtrlPool @ 165 NONAME ; ## - _ZTI18CPeninputRangeInfo @ 166 NONAME ; ## - _ZTI19CPeninputUiStateMgr @ 167 NONAME ; ## - _ZTI20CPeninputControlInfo @ 168 NONAME ; ## - _ZTI20CPeninputUiStateBase @ 169 NONAME ; ## - _ZTI21CPeninputCommonLayout @ 170 NONAME ; ## - _ZTI21CPeninputLayoutConfig @ 171 NONAME ; ## - _ZTI21CPeninputLayoutWindow @ 172 NONAME ; ## - _ZTI21CPeninputRangeBarInfo @ 173 NONAME ; ## - _ZTI22CPeninputDataConverter @ 174 NONAME ; ## - _ZTI22CPeninputShiftCapsInfo @ 175 NONAME ; ## - _ZTI25CPeninputClientLayoutInfo @ 176 NONAME ; ## - _ZTI29CPeninputNumericKepMappingMgr @ 177 NONAME ; ## - _ZTV16CPeninputDataMgr @ 178 NONAME ; ## - _ZTV17CPeninputCtrlPool @ 179 NONAME ; ## - _ZTV18CPeninputRangeInfo @ 180 NONAME ; ## - _ZTV19CPeninputUiStateMgr @ 181 NONAME ; ## - _ZTV20CPeninputControlInfo @ 182 NONAME ; ## - _ZTV20CPeninputUiStateBase @ 183 NONAME ; ## - _ZTV21CPeninputCommonLayout @ 184 NONAME ; ## - _ZTV21CPeninputLayoutConfig @ 185 NONAME ; ## - _ZTV21CPeninputLayoutWindow @ 186 NONAME ; ## - _ZTV21CPeninputRangeBarInfo @ 187 NONAME ; ## - _ZTV22CPeninputDataConverter @ 188 NONAME ; ## - _ZTV22CPeninputShiftCapsInfo @ 189 NONAME ; ## - _ZTV25CPeninputClientLayoutInfo @ 190 NONAME ; ## - _ZTV29CPeninputNumericKepMappingMgr @ 191 NONAME ; ## - _ZThn448_N21CPeninputLayoutWindow18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 192 NONAME ABSENT ; ## - _ZThn4_N16CPeninputDataMgr11RequestDataE17TPeninputDataType @ 193 NONAME ; ## - _ZThn4_N16CPeninputDataMgr5ResetEv @ 194 NONAME ; ## - _ZThn4_N16CPeninputDataMgr7SaveKeyEii @ 195 NONAME ; ## - _ZThn4_N16CPeninputDataMgr7SetDataE17TPeninputDataTypePv @ 196 NONAME ; ## - _ZThn4_N19CPeninputUiStateMgr10AddUiStateEP20CPeninputUiStateBasei @ 197 NONAME ; ## - _ZThn4_N19CPeninputUiStateMgr10GetUiStateEi @ 198 NONAME ; ## - _ZThn4_N19CPeninputUiStateMgr14CurrentUiStateEv @ 199 NONAME ; ## - _ZThn4_N19CPeninputUiStateMgr17SetCurrentUiStateEP20CPeninputUiStateBase @ 200 NONAME ; ## - _ZThn4_N19CPeninputUiStateMgr17SetCurrentUiStateEi @ 201 NONAME ; ## - _ZThn4_N21CPeninputCommonLayout13HandleCommandEiPh @ 202 NONAME ; ## - _ZThn4_N21CPeninputCommonLayout21OnAppEditorTextComingERK25TFepInputContextFieldData @ 203 NONAME ABSENT ; ## - _ZThn4_N21CPeninputCommonLayout4InitEv @ 204 NONAME ; ## - _ZThn92_N21CPeninputCommonLayout11RequestDataE17TPeninputDataType @ 205 NONAME ABSENT ; ## - _ZThn92_N21CPeninputCommonLayout16IsShiftPermittedEv @ 206 NONAME ABSENT ; ## - _ZThn92_N21CPeninputCommonLayout17SendEventToWindowEiP14CFepUiBaseCtrlRK7TDesC16 @ 207 NONAME ABSENT ; ## - _ZThn92_N21CPeninputCommonLayout19IsCapsLockPermittedEv @ 208 NONAME ABSENT ; ## - _ZThn92_N21CPeninputCommonLayout7SaveKeyEii @ 209 NONAME ABSENT ; ## - _ZThn92_N21CPeninputCommonLayout7SendkeyEiRK7TDesC16 @ 210 NONAME ABSENT ; ## - _ZThn92_N21CPeninputCommonLayout7SetDataE17TPeninputDataTypePv @ 211 NONAME ABSENT ; ## - _ZThn8_N21CPeninputCommonLayout18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 212 NONAME ; ## - _ZThn8_N21CPeninputLayoutWindow22ConstructFromResourceLEv @ 213 NONAME ; ## - _ZN21CPeninputCommonLayout12PenInputTypeEv @ 214 NONAME - _ZThn4_N21CPeninputCommonLayout12PenInputTypeEv @ 215 NONAME ; ## - _ZThn616_N21CPeninputLayoutWindow18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 216 NONAME ; ## - _ZN21CPeninputLayoutWindow15SetTextIsSecretEi @ 217 NONAME - _ZN24CPeninputCommonLayoutExt10ConstructLEPKv @ 218 NONAME - _ZN24CPeninputCommonLayoutExt11RequestDataE17TPeninputDataType @ 219 NONAME - _ZN24CPeninputCommonLayoutExt11SizeChangedEPKv @ 220 NONAME - _ZN24CPeninputCommonLayoutExt13HandleCommandEiPh @ 221 NONAME - _ZN24CPeninputCommonLayoutExt12PenInputTypeEv @ 222 NONAME - _ZN24CPeninputCommonLayoutExt16IsShiftPermittedEv @ 223 NONAME - _ZN24CPeninputCommonLayoutExt17SendEventToLayoutEiP14CFepUiBaseCtrlRK7TDesC16 @ 224 NONAME - _ZN24CPeninputCommonLayoutExt17SendEventToWindowEiP14CFepUiBaseCtrlRK7TDesC16 @ 225 NONAME - _ZN24CPeninputCommonLayoutExt18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 226 NONAME - _ZN24CPeninputCommonLayoutExt18HandleRawKeyEventLERK9TRawEvent @ 227 NONAME - _ZN24CPeninputCommonLayoutExt18IsValidDestinationERK5TRectP8CDragBarRiS5_i @ 228 NONAME - _ZN24CPeninputCommonLayoutExt19IsCapsLockPermittedEv @ 229 NONAME - _ZN24CPeninputCommonLayoutExt21OnAppEditorTextComingERK25TFepInputContextFieldData @ 230 NONAME - _ZN24CPeninputCommonLayoutExt4InitEv @ 231 NONAME - _ZN24CPeninputCommonLayoutExt7SaveKeyEii @ 232 NONAME - _ZN24CPeninputCommonLayoutExt7SendkeyEiRK7TDesC16 @ 233 NONAME - _ZN24CPeninputCommonLayoutExt7SetDataE17TPeninputDataTypePv @ 234 NONAME - _ZN24CPeninputCommonLayoutExtC2EP12MLayoutOwner @ 235 NONAME - _ZN24CPeninputCommonLayoutExtD0Ev @ 236 NONAME - _ZN24CPeninputCommonLayoutExtD1Ev @ 237 NONAME - _ZN24CPeninputCommonLayoutExtD2Ev @ 238 NONAME - _ZN24CPeninputLayoutWindowExt10ConstructLEv @ 239 NONAME - _ZN24CPeninputLayoutWindowExt11ChangeRangeEiii @ 240 NONAME - _ZN24CPeninputLayoutWindowExt11SizeChangedEi @ 241 NONAME - _ZN24CPeninputLayoutWindowExt12SetLafLayOutEii @ 242 NONAME - _ZN24CPeninputLayoutWindowExt13SetWindowRectERK5TRect @ 243 NONAME - _ZN24CPeninputLayoutWindowExt14SetEditorTextLERK25TFepInputContextFieldData @ 244 NONAME - _ZN24CPeninputLayoutWindowExt15ChangeVkbLayoutEi @ 245 NONAME - _ZN24CPeninputLayoutWindowExt15SetTextIsSecretEi @ 246 NONAME - _ZN24CPeninputLayoutWindowExt16HandleRangeEventEi @ 247 NONAME - _ZN24CPeninputLayoutWindowExt16ReconfigUnitSizeEi @ 248 NONAME - _ZN24CPeninputLayoutWindowExt16SetSwitchBtnFontER22CAknFepCtrlEventButton @ 249 NONAME - _ZN24CPeninputLayoutWindowExt16SetVkbLayoutSizeEv @ 250 NONAME - _ZN24CPeninputLayoutWindowExt18AddNotOwnedControlEP14CFepUiBaseCtrl @ 251 NONAME - _ZN24CPeninputLayoutWindowExt18ChangeButtonStatusEii @ 252 NONAME - _ZN24CPeninputLayoutWindowExt18ChangeClientLayoutEi @ 253 NONAME - _ZN24CPeninputLayoutWindowExt18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 254 NONAME - _ZN24CPeninputLayoutWindowExt19SetEnableSettingBtnEi @ 255 NONAME - _ZN24CPeninputLayoutWindowExt20ChangeInputLanguageLEi @ 256 NONAME - _ZN24CPeninputLayoutWindowExt20ChangeLayoutPositionEi @ 257 NONAME - _ZN24CPeninputLayoutWindowExt20HandleRangeLoopEventEi @ 258 NONAME - _ZN24CPeninputLayoutWindowExt20SetEnableSwitchToHwrEi @ 259 NONAME - _ZN24CPeninputLayoutWindowExt21HandleShiftBtnClickedEv @ 260 NONAME - _ZN24CPeninputLayoutWindowExt21OnInputLanguageChangeEv @ 261 NONAME - _ZN24CPeninputLayoutWindowExt21SetSwitchBtnTextColorER22CAknFepCtrlEventButton @ 262 NONAME - _ZN24CPeninputLayoutWindowExt24HandleCapslockBtnClickedEv @ 263 NONAME - _ZN24CPeninputLayoutWindowExt24SizeChangedForBaseWindowEi @ 264 NONAME - _ZN24CPeninputLayoutWindowExt25CaseByShiftCapslockStatusEv @ 265 NONAME - _ZN24CPeninputLayoutWindowExt4DrawEv @ 266 NONAME - _ZN24CPeninputLayoutWindowExt7DoCloseEv @ 267 NONAME - _ZN24CPeninputLayoutWindowExtC2EP12CFepUiLayoutP22MPeninputLayoutContext @ 268 NONAME - _ZN24CPeninputLayoutWindowExtD0Ev @ 269 NONAME - _ZN24CPeninputLayoutWindowExtD1Ev @ 270 NONAME - _ZN24CPeninputLayoutWindowExtD2Ev @ 271 NONAME - _ZNK24CPeninputCommonLayoutExt10UiStateMgrEv @ 272 NONAME - _ZNK24CPeninputCommonLayoutExt12LayoutWindowEv @ 273 NONAME - _ZNK24CPeninputLayoutWindowExt10ConfigInfoEv @ 274 NONAME - _ZTI24CPeninputCommonLayoutExt @ 275 NONAME ; ## - _ZTI24CPeninputLayoutWindowExt @ 276 NONAME ; ## - _ZTV24CPeninputCommonLayoutExt @ 277 NONAME ; ## - _ZTV24CPeninputLayoutWindowExt @ 278 NONAME ; ## - _ZThn4_N24CPeninputCommonLayoutExt13HandleCommandEiPh @ 279 NONAME ; ## - _ZThn4_N24CPeninputCommonLayoutExt12PenInputTypeEv @ 280 NONAME ; ## - _ZThn4_N24CPeninputCommonLayoutExt4InitEv @ 281 NONAME ; ## - _ZThn616_N24CPeninputLayoutWindowExt18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 282 NONAME ; ## - _ZThn92_N24CPeninputCommonLayoutExt11RequestDataE17TPeninputDataType @ 283 NONAME ABSENT ; ## - _ZThn92_N24CPeninputCommonLayoutExt16IsShiftPermittedEv @ 284 NONAME ABSENT ; ## - _ZThn92_N24CPeninputCommonLayoutExt17SendEventToWindowEiP14CFepUiBaseCtrlRK7TDesC16 @ 285 NONAME ABSENT ; ## - _ZThn92_N24CPeninputCommonLayoutExt19IsCapsLockPermittedEv @ 286 NONAME ABSENT ; ## - _ZThn92_N24CPeninputCommonLayoutExt7SaveKeyEii @ 287 NONAME ABSENT ; ## - _ZThn92_N24CPeninputCommonLayoutExt7SendkeyEiRK7TDesC16 @ 288 NONAME ABSENT ; ## - _ZThn92_N24CPeninputCommonLayoutExt7SetDataE17TPeninputDataTypePv @ 289 NONAME ABSENT ; ## - _ZThn8_N24CPeninputCommonLayoutExt18HandleControlEventEiP14CFepUiBaseCtrlRK7TDesC16 @ 290 NONAME ; ## - _ZN24CPeninputLayoutWindowExt22HandleMergedBtnClickedEi @ 291 NONAME - _ZN24CPeninputLayoutWindowExt24ChangeMergedButtonStatusEii @ 292 NONAME - _ZN21CPeninputLayoutWindow14IsMultiLineIcfEv @ 293 NONAME - _ZN21CPeninputLayoutWindow16IsCanChangeRangeEi @ 294 NONAME - _ZN21CPeninputLayoutWindow21ChangeToPreviousRangeEi @ 295 NONAME - _ZN21CPeninputLayoutWindow17SetTextAlignmentLEi @ 296 NONAME - _ZN24CPeninputLayoutWindowExt17SetTextAlignmentLEi @ 297 NONAME - _ZThn88_N21CPeninputCommonLayout11RequestDataE17TPeninputDataType @ 298 NONAME ; ## - _ZThn88_N21CPeninputCommonLayout16IsShiftPermittedEv @ 299 NONAME ; ## - _ZThn88_N21CPeninputCommonLayout17SendEventToWindowEiP14CFepUiBaseCtrlRK7TDesC16 @ 300 NONAME ; ## - _ZThn88_N21CPeninputCommonLayout19IsCapsLockPermittedEv @ 301 NONAME ; ## - _ZThn88_N21CPeninputCommonLayout7SaveKeyEii @ 302 NONAME ; ## - _ZThn88_N21CPeninputCommonLayout7SendkeyEiRK7TDesC16 @ 303 NONAME ; ## - _ZThn88_N21CPeninputCommonLayout7SetDataE17TPeninputDataTypePv @ 304 NONAME ; ## - _ZThn88_N24CPeninputCommonLayoutExt11RequestDataE17TPeninputDataType @ 305 NONAME ; ## - _ZThn88_N24CPeninputCommonLayoutExt16IsShiftPermittedEv @ 306 NONAME ; ## - _ZThn88_N24CPeninputCommonLayoutExt17SendEventToWindowEiP14CFepUiBaseCtrlRK7TDesC16 @ 307 NONAME ; ## - _ZThn88_N24CPeninputCommonLayoutExt19IsCapsLockPermittedEv @ 308 NONAME ; ## - _ZThn88_N24CPeninputCommonLayoutExt7SaveKeyEii @ 309 NONAME ; ## - _ZThn88_N24CPeninputCommonLayoutExt7SendkeyEiRK7TDesC16 @ 310 NONAME ; ## - _ZThn88_N24CPeninputCommonLayoutExt7SetDataE17TPeninputDataTypePv @ 311 NONAME ; ## - _ZNK29CPeninputNumericKepMappingMgr17KeyMappingStringLEii @ 312 NONAME - _ZN21CPeninputCommonLayout22SetPositionFromOutsideERK6TPoint @ 313 NONAME - _ZN24CPeninputCommonLayoutExt22SetPositionFromOutsideERK6TPoint @ 314 NONAME - _ZThn4_N21CPeninputCommonLayout22SetPositionFromOutsideERK6TPoint @ 315 NONAME ; ## - _ZThn4_N24CPeninputCommonLayoutExt22SetPositionFromOutsideERK6TPoint @ 316 NONAME ; ## - _ZN24CPeninputLayoutWindowExt32HandleShiftAndCapslockBtnClickedEv @ 317 NONAME - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/group/bld.inf --- a/textinput/peninputcommonlayout/group/bld.inf Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Build information file for project peninputcommonlayout -* -*/ - -#include - - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS - -../rom/peninputcommonlayout.iby CORE_MW_LAYER_IBY_EXPORT_PATH( peninputcommonlayout.iby ) - -../inc/peninputclientlayoutinfo.h |../../../inc/peninputclientlayoutinfo.h -../inc/peninputclientlayoutinfo.inl |../../../inc/peninputclientlayoutinfo.inl -../inc/peninputcommonlayout.h |../../../inc/peninputcommonlayout.h -../inc/peninputcommonlayoutext.h |../../../inc/peninputcommonlayoutext.h -../inc/peninputcommonlayout.rh |../../../inc/peninputcommonlayout.rh -../inc/peninputcommonlayoutglobalenum.h |../../../inc/peninputcommonlayoutglobalenum.h -../inc/peninputctrlpool.h |../../../inc/peninputctrlpool.h -../inc/peninputdataconverter.h |../../../inc/peninputdataconverter.h -../inc/peninputdatamgr.h |../../../inc/peninputdatamgr.h -../inc/peninputdataprovider.h |../../../inc/peninputdataprovider.h -../inc/peninputlayoutconfig.h |../../../inc/peninputlayoutconfig.h -../inc/peninputlayoutconfig.inl |../../../inc/peninputlayoutconfig.inl -../inc/peninputlayoutcontext.h |../../../inc/peninputlayoutcontext.h -../inc/peninputlayoutwindow.h |../../../inc/peninputlayoutwindow.h -../inc/peninputlayoutwindowext.h |../../../inc/peninputlayoutwindowext.h -../inc/peninputrangebarinfo.h |../../../inc/peninputrangebarinfo.h -../inc/peninputrangebarinfo.inl |../../../inc/peninputrangebarinfo.inl -../inc/peninputshiftcapsInfo.h |../../../inc/peninputshiftcapsinfo.h -../inc/peninputshiftcapsinfo.inl |../../../inc/peninputshiftcapsinfo.inl -../inc/peninputuistatebase.h |../../../inc/peninputuistatebase.h -../inc/peninputuistatemgr.h |../../../inc/peninputuistatemgr.h -../inc/peninputuistatemgrinterface.h |../../../inc/peninputuistatemgrinterface.h - -PRJ_MMPFILES -../group/peninputcommonlayout.mmp diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/group/peninputcommonlayout.mmp --- a/textinput/peninputcommonlayout/group/peninputcommonlayout.mmp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Project definition file for project peninputcommonlayout -* -*/ - - -#include -#include - -TARGET peninputcommonlayout.dll -TARGETTYPE DLL -UID 0x1000008D 0x10282357 - -CAPABILITY CAP_GENERAL_DLL -VENDORID VID_DEFAULT - -SOURCEPATH ../src -SOURCE peninputclientlayoutinfo.cpp -SOURCE peninputcommonlayout.cpp -SOURCE peninputcommonlayoutext.cpp -SOURCE peninputctrlpool.cpp -SOURCE peninputdatamgr.cpp -SOURCE peninputlayoutconfig.cpp -SOURCE peninputlayoutwindow.cpp -SOURCE peninputlayoutwindowext.cpp -SOURCE peninputrangebarinfo.cpp -SOURCE peninputshiftcapsInfo.cpp -SOURCE peninputdataconverter.cpp -SOURCE peninputuistatemgr.cpp -SOURCE peninputuistatebase.cpp -SOURCE peninputnumerickeymappingmgr.cpp - -USERINCLUDE ../inc - -// This is a SYSTEMINCLUDE macro containing the middleware -// layer specific include directories -MW_LAYER_SYSTEMINCLUDE - -SYSTEMINCLUDE /epoc32/include/ecom -SYSTEMINCLUDE ../../../inc -SYSTEMINCLUDE ../../inc - -LIBRARY euser.lib -LIBRARY ws32.lib -LIBRARY ecom.lib -LIBRARY efsrv.lib -LIBRARY gdi.lib -LIBRARY bafl.lib -LIBRARY avkon.lib -LIBRARY aknlayout.lib -LIBRARY aknlayout2scalable.lib -LIBRARY aknicon.lib -LIBRARY centralrepository.lib -LIBRARY cone.lib -LIBRARY peninputlayouteng.lib -LIBRARY peninputlayoutcontrol.lib -LIBRARY peninputpluginutils.lib -LIBRARY peninputcommonctrls.lib -LIBRARY aknskins.lib diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputclientayoutinfo.inl --- a/textinput/peninputcommonlayout/inc/peninputclientayoutinfo.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: image layout inline function -* -*/ - - -// ----------------------------------------------------------------------------- -// CPeninputControlInfo::ControlID -// ----------------------------------------------------------------------------- -// -inline const TInt CPeninputControlInfo::ControlID() const - { - return iControlID; - } - -inline const TInt CPeninputControlInfo::ControlType() const - { - return iControlType; - } - -inline const TInt CPeninputControlInfo::BeginRow() const - { - return iBeginRow; - } - -inline const TInt CPeninputControlInfo::EndRow() const - { - return iEndRow; - } - -inline const TInt CPeninputControlInfo::BeginColumn() const - { - return iBeginColumn; - } - -inline const TInt CPeninputControlInfo::EndColumn() const - { - return iEndColumn; - } - -inline TInt CPeninputClientLayoutInfo::LayoutID() const - { - return iLayoutID; - } - -inline TInt CPeninputClientLayoutInfo::Columns() const - { - return iColumns; - } - -inline TInt CPeninputClientLayoutInfo::Rows() const - { - return iRows; - } - -inline RPointerArray& CPeninputClientLayoutInfo::ControlInfoList() - { - return iControlInfoList; - } - -// End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputclientlayoutinfo.h --- a/textinput/peninputcommonlayout/inc/peninputclientlayoutinfo.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,317 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: client layout information -* -*/ - - -#ifndef C_PENINPUTCLIENTLAYOUTINFO_H -#define C_PENINPUTCLIENTLAYOUTINFO_H - -// System includes -#include -#include -#include - -/** - * Control info class - * - * This class is to define control info. Application can create it from - * resource file. Control info includes control id, begin row, end row, - * bgin column and end column. - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputControlInfo : public CBase - { - -public: - - /** - * Symbian constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputControlInfo object - */ - IMPORT_C static CPeninputControlInfo* NewL( TResourceReader& aReader ); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputControlInfo(); - - /** - * Get control id - * - * @since S60 v3.2 - * @return Control id - */ - inline const TInt ControlID() const; - - /** - * Get control type - * - * @since S60 v3.2 - * @return Control type - */ - inline const TInt ControlType() const; - - /** - * Get begin row - * - * @since S60 v3.2 - * @return Begin row - */ - inline const TInt BeginRow() const; - - /** - * Get end row - * - * @since S60 v3.2 - * @return End row - */ - inline const TInt EndRow() const; - - /** - * Get begine column - * - * @since S60 v3.2 - * @return Begine column - */ - inline const TInt BeginColumn() const; - - /** - * Get end column - * - * @since S60 v3.2 - * @return End column - */ - inline const TInt EndColumn() const; - -protected: - - /** - * Second phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructL( TResourceReader& aReader ); - - /** - * Construct from resource - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructFromResourceL( TResourceReader& aReader ); - -private: // Data - - /** - * Control id - */ - TInt iControlID; - - /** - * Control Type - */ - TInt iControlType; - - /** - * Begin row - */ - TInt iBeginRow; - - /** - * End row - */ - TInt iEndRow; - - /** - * Begin column - */ - TInt iBeginColumn; - - /** - * End column - */ - TInt iEndColumn; - - }; - -/** - * Client layout class - * - * This class is to implement image layout. Application can create it from - * resource file. Control info includes control id, row and column. - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputClientLayoutInfo : public CBase - { - -public: - - /** - * Symbian constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputClientLayoutInfo object - */ - IMPORT_C static CPeninputClientLayoutInfo* NewL( - TResourceReader& aReader ); - - /** - * Symbian constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputClientLayoutInfo object - */ - IMPORT_C static CPeninputClientLayoutInfo* NewLC( - TResourceReader& aReader ); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputClientLayoutInfo(); - - /** - * Contruct from resource file - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - IMPORT_C void ConstructFromResourceL( TResourceReader& aReader ); - - /** - * Get control info - * - * @since S60 v3.2 - * @param aControlID control id - * @return The pointer to CPeninputControlInfo object - */ - IMPORT_C CPeninputControlInfo* FindControlInfo( const TInt aControlID ); - - /** - * Add control info - * - * @since S60 v3.2 - * @param aControlInfo Pointer to control info - * @return None - */ - IMPORT_C void AddControlInfo( CPeninputControlInfo* aControlInfo ); - - /** - * Remove control info - * - * @since S60 v3.2 - * @param aControlInfo Pointer to control info - * @return None - */ - IMPORT_C void RemoveControlInfo( CPeninputControlInfo* aControlInfo ); - - /** - * Remove control info based on control id - * - * @since S60 v3.2 - * @param aControlID Control id - * @return None - */ - IMPORT_C void RemoveControlInfo( const TInt aControlID ); - - /** - * Get layout id - * - * @since S60 v3.2 - * @return Layout id - */ - inline TInt LayoutID() const; - - /** - * Get column - * - * @since S60 v3.2 - * @return Column - */ - inline TInt Columns() const; - - /** - * Get row - * - * @since S60 v3.2 - * @return Row - */ - inline TInt Rows() const; - - /** - * Get control array - * - * @since S60 v3.2 - * @return Control array - */ - inline RPointerArray& ControlInfoList(); - -protected: - - /** - * Symbian second-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructL( TResourceReader& aReader ); - -private: // Data - - /** - * Layout id - */ - TInt iLayoutID; - - /** - * Column count - */ - TInt iColumns; - - /** - * Row count - */ - TInt iRows; - - /** - * Control info array - */ - RPointerArray iControlInfoList; - - }; - -#include "peninputclientlayoutinfo.inl" - -#endif // C_PENINPUTCLIENTLAYOUTINFO_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputclientlayoutinfo.inl --- a/textinput/peninputcommonlayout/inc/peninputclientlayoutinfo.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: image layout inline function -* -*/ - - -// ----------------------------------------------------------------------------- -// CPeninputControlInfo::ControlID -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline const TInt CPeninputControlInfo::ControlID() const - { - return iControlID; - } - -// ----------------------------------------------------------------------------- -// CPeninputControlInfo::ControlType -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline const TInt CPeninputControlInfo::ControlType() const - { - return iControlType; - } - -// ----------------------------------------------------------------------------- -// CPeninputControlInfo::BeginRow -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline const TInt CPeninputControlInfo::BeginRow() const - { - return iBeginRow; - } - -// ----------------------------------------------------------------------------- -// CPeninputControlInfo::EndRow -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline const TInt CPeninputControlInfo::EndRow() const - { - return iEndRow; - } - -// ----------------------------------------------------------------------------- -// CPeninputControlInfo::BeginColumn -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline const TInt CPeninputControlInfo::BeginColumn() const - { - return iBeginColumn; - } - -// ----------------------------------------------------------------------------- -// CPeninputControlInfo::EndColumn -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline const TInt CPeninputControlInfo::EndColumn() const - { - return iEndColumn; - } - -// ----------------------------------------------------------------------------- -// CPeninputClientLayoutInfo::LayoutID -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputClientLayoutInfo::LayoutID() const - { - return iLayoutID; - } - -// ----------------------------------------------------------------------------- -// CPeninputClientLayoutInfo::Columns -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputClientLayoutInfo::Columns() const - { - return iColumns; - } - -// ----------------------------------------------------------------------------- -// CPeninputClientLayoutInfo::Rows -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputClientLayoutInfo::Rows() const - { - return iRows; - } - -// ----------------------------------------------------------------------------- -// CPeninputClientLayoutInfo::ControlInfoList -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline RPointerArray& - CPeninputClientLayoutInfo::ControlInfoList() - { - return iControlInfoList; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputcommonlayout.h --- a/textinput/peninputcommonlayout/inc/peninputcommonlayout.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,379 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: peninput common layout framework -* -*/ - - -#ifndef C_CPENINPUTCOMMONLAYOUT_H -#define C_CPENINPUTCOMMONLAYOUT_H - -// System includes -#include -#include -#include - -// User includes -#include "peninputlayoutcontext.h" - -// Forward decalaration -class CPeninputDataMgr; -class CPeninputUiStateMgr; -class MPeninputUiStateMgr; -class CPeninputLayoutWindow; - -/** - * Peninput common layout - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputCommonLayout : public CFepUiLayout, - public MPeninputLayoutContext - { - -public: - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputCommonLayout(); - - /** - * Get data manager - * - * @since S60 v3.2 - * @return The pointer to MPeninputDataProvider - */ - IMPORT_C MPeninputDataProvider* DataMgr() const; - - /** - * Get layout window - * - * @since S60 v3.2 - * @return The pointer to CPeninputLayoutWindow object - */ - IMPORT_C CPeninputLayoutWindow* LayoutWindow() const; - - /** - * Get ui state manager - * - * @since S60 v3.2 - * @return The pointer to MPeninputUiStateMgr - */ - IMPORT_C MPeninputUiStateMgr* UiStateMgr() const; - -// From CFepUiLayout - - /** - * From CFepUiLayout - * Handle layout command event - * - * @since S60 v3.2 - * @param aCmd Command Id - * @param aData Data for command - * @return Errors when return value smaller than 0 - */ - IMPORT_C TInt HandleCommand( TInt aCmd, TUint8* aData ); - - /** - * From CFepUiLayout - * Inform layout the size changing event - * - * @since S60 v3.2 - * @param aData The event data - * @return KErrNone if successfully size changing - */ - IMPORT_C TInt SizeChanged( const TAny* aData ); - - /** - * From CFepUiLayout - * Handle the event from control - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aCtrl The sender - * @param aEventData The event data - * @return None - */ - IMPORT_C virtual void HandleControlEvent( TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData ); - - /** - * From CFepUiLayout - * Handle editor text coming - * Called by animation dll when app editor text is coming - * If a ui layout has a editor area, it must implements - * this function to get the text - * - * @since S60 v3.2 - * @param aData Editor Text Coming data - * @return KErrNone is operation succeeded - */ - IMPORT_C TInt OnAppEditorTextComing( - const TFepInputContextFieldData& aData ); - - /** - * From CFepUiLayout - * Get the layout type, vkb or hwr. It's now similar to LayoutType which defines in - * another interface. - * - * @since S60 v3.2 - * @return The layout type - */ - IMPORT_C virtual TInt PenInputType(); - - -// From MKeyRawEventHandler - - /** - * From CFepUiLayout - * Handle raw event key - * - * @since S60 v3.2 - * @param aKeyEvent The key raw event data - * @return ETrue if the key was handled, otherwise EFalse - */ - IMPORT_C TBool HandleRawKeyEventL( const TRawEvent& aKeyEvent ); - -// From MPeninputLayoutContext - - /** - * Send event to window - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aCtrl The sender - * @param aEventData The event data - * @return None - */ - IMPORT_C void SendEventToWindow( TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData = KNullDesC ); - - /** - * Send event to layout - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aCtrl The sender - * @param aEventData The event data - * @return None - */ - IMPORT_C void SendEventToLayout( TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData = KNullDesC ); - - - IMPORT_C TBool IsShiftPermitted(); - - IMPORT_C TBool IsCapsLockPermitted(); - /** - * Request data from data provider - * - * @since S60 v3.2 - * @param aDataType The data request - * @return The data you request - */ - IMPORT_C TAny* RequestData( TPeninputDataType aDataType ); - - /** - * Set resource utils - * - * @since S60 v3.2 - * @param aDataType Data type - * @param aData Data value - * @return None - */ - IMPORT_C void SetData( TPeninputDataType aDataType, TAny* aData ); - - /** - * Sendkey to fep - * - * @since S60 v3.2 - * @param aEventType Event type - * @param aEventData Event data - * @return None - */ - IMPORT_C void Sendkey( TInt aEventType, - const TDesC& aEventData = KNullDesC ); - - IMPORT_C void SetPositionFromOutside(const TPoint& aNewPos); - -protected: - - /** - * 2nd phase construction - constructor - * - * @since S60 v3.2 - * @param aLafEnv The LAF enviroment - * @param aLayoutOwner The owner of layout - * @return None - */ - IMPORT_C CPeninputCommonLayout( MLayoutOwner* aLayoutOwner ); - - /** - * 2nd phase construction - second constructor - * - * @since S60 v3.2 - * @param aInitData Init data of layout - * @return None - */ - IMPORT_C void ConstructL( const TAny* aInitData ); - - /** - * From CFepUiLayout - * Test whether the position is valid - * This is used to test the target position when draging controls - * to some place - * - * @since S60 v4.0 - * @param aRect The rect to be checked - * @param aDragbar The dragbar being dragged - * @param aVInfo The valid information in vertial dirtection. ETrue is - * vertical moving is valid.It's only used when aRect is not - * valid but moving in vertical direction is valid - * @param aHInfo The valid information in horizontal dirtection - * ETrue is horizontal moving is valid.It's only used when aRect - * is not valid but moving in vertical direction is valid - * @param aFlag ETrue if whole layout is moving, otherwise, only - * components moving - * @return ETrue if aRect is a valid position. Otherwise, EFalse - */ - IMPORT_C TBool IsValidDestination( const TRect& aRect, - CDragBar* aDragBar, - TBool& aVInfo, - TBool& aHInfo, - TBool aFlag ); - - /** - * Init layout owner - * - * @since S60 v3.2 - * @return The rect of the layout - */ - IMPORT_C virtual TRect Init(); - - /** - * Save a virtual keybroad key to the repository - * - * @since S60 v3.2 - * @param aKey The key name in repository - * @param aValue The unicode of key - * @return None - */ - IMPORT_C virtual void SaveKey( TInt aKey, TInt aValue ); - - /** - * Factory method for creation of layout window. The decision which - * layout window(VKB or HWR) is created will be postboned in subclasses - * of this class. - * - * @since S60 v3.2 - * @return None - */ - virtual void CreateLayoutWindowL() = 0; - - /** - * Factory method for creation resource config. It is enough at present - * to create and initialize resource config. Any necessary extension - * will be implemented in subclasses. - * - * @since S60 v3.2 - * @return None - */ - virtual void CreateDataMgrL( const TAny* aInitData ) = 0; - - /** - * Get the layout type, vkb or hwr, child class must rewrite the function. - * - * @since S60 v3.2 - * @return The layout type - */ - virtual TInt LayoutType() = 0; - -private: // New method - - /** - * Change input language - * - * @since S60 v3.2 - * @param aLangID The language id you want to change to - * @return None - */ - void ChangeInputLanguage( TInt aLangID ); - - /** - * Change current range - * - * @since S60 v3.2 - * @param aRange The range need to set - * @return None - */ - void ChangeRange( TInt aRange ); - - /** - * Translate range for some languages - * - * @since S60 v3.2 - * @param aRange The range need to set - * @return New range - */ - TInt TranslateRange(TInt aRange); - - /** - * Set if enable switch to hwr - * - * @since S60 v3.2 - * @param aEnable The enable flag - * @return None - */ - void SetEnableSwitchToHwr(TBool aEnable); - - /** - * Set if enable option button and language switch button - * - * @since S60 v3.2 - * @param aEnable The enable flag - * @return None - */ - void SetEnableSettingBtn(TBool aEnable); - -protected: - - /** - * The data manager - * Own - */ - CPeninputDataMgr* iDataMgr; - - /** - * The ui state manager - * Own - */ - CPeninputUiStateMgr* iUiStateMgr; - - /** - * The layout window - * Own - */ - CPeninputLayoutWindow* iLayoutWindow; - - }; - -#endif // C_CPENINPUTCOMMONLAYOUT_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputcommonlayout.rh --- a/textinput/peninputcommonlayout/inc/peninputcommonlayout.rh Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,442 +0,0 @@ -/* -* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource headers for project peninputcommonlayout -* -*/ - - -#ifndef PENINPUTCOMMONLAYOUT_RH -#define PENINPUTCOMMONLAYOUT_RH - -// system includes -#include -#include - -// --------------------------------------------------------------------------- -// Layout base window -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_BASE_WINDOW - { - WORD supportskin = 0xffff; - LLINK moveimage = 0; - LLINK closeimage; - LLINK icfimage; - LLINK optionimage; - LLINK keymapping = 0; - LLINK shadow; - LLINK arrowleftimage = 0; - LLINK arrowrightimage = 0; - LLINK bgimage = 0; - } -// --------------------------------------------------------------------------- -// Layout base window -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_BASE_WINDOW_INFO - { - WORD supportskin = 0xffff; - LLINK shadow; - LLINK bgimage = 0; - STRUCT controls[]; - } -// --------------------------------------------------------------------------- -// Window input context field -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_ICF - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - - WORD icfbgimg=0xffff; - WORD icfbgimgmask=0xffff; - WORD icfbgimgskinid=0xffff; - - LONG colormajorskinid = 0xffff; - WORD textcolorgrp = 0xffff; - WORD textcoloridx = 0xffff; - } - - -STRUCT PENINPUT_LAYOUT_MULTILINE_ICF - { - LONG colormajorskinid = 0xffff; - WORD textcolorgrp = 0xffff; - WORD textcoloridx = 0xffff; - WORD bordercolorgrp = 0xffff; - WORD bordercoloridx = 0xffff; - } - -// --------------------------------------------------------------------------- -// Window shadow -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_WINDOW_SHADOW - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - - WORD shadowimgtl=0xffff; - WORD shadowimgtlmask=0xffff; - WORD shadowimgtlskinid=0xffff; - - WORD shadowimgt=0xffff; - WORD shadowimgtmask=0xffff; - WORD shadowimgtskinid=0xffff; - - WORD shadowimgtr=0xffff; - WORD shadowimgtrmask=0xffff; - WORD shadowimgtrskinid=0xffff; - - WORD shadowimgl=0xffff; - WORD shadowimglmask=0xffff; - WORD shadowimglskinid=0xffff; - - WORD shadowimgr=0xffff; - WORD shadowimgrmask=0xffff; - WORD shadowimgrskinid=0xffff; - - WORD shadowimgbl=0xffff; - WORD shadowimgblmask=0xffff; - WORD shadowimgblskinid=0xffff; - - WORD shadowimgb=0xffff; - WORD shadowimgbmask=0xffff; - WORD shadowimgbskinid=0xffff; - - WORD shadowimgbr=0xffff; - WORD shadowimgbrmask=0xffff; - WORD shadowimgbrskinid=0xffff; - } - -// --------------------------------------------------------------------------- -// Layout numeric key mapping string list -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_NUMERIC_KEY_MAPPING_STRING_LIST - { - STRUCT items[]; - } - -// --------------------------------------------------------------------------- -// Layout numeric key mapping string -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_NUMERIC_KEY_MAPPING_STRING - { - WORD numerickeymapping=0; - - LTEXT PermittedString=""; - } - -// --------------------------------------------------------------------------- -// Layout config information -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_CONFIG_INFO - { - WORD language=0; // TLanguage in symbian - - LTEXT languagestring=""; // such as "En", - - WORD casesensitive=0; // 0:case not sensitive 1:case sensitive - - WORD guideline=0; // TPeninputGuideLineStyle - - WORD positiontopline=0; // The position percent of bottom line - - WORD positionbottomline=0; // The position percent of bottom line - - LLINK clientlayoutlist; // PENINPUT_LAYOUT_CLIENT_LAYOUT_LIST - - LLINK vkblayoutlist; // PENINPUT_LAYOUT_VKB _LAYOUT_LIST - - LLINK rangebarinfo; // PENINPUT_LAYOUT_RANGE_BAR_INFO - - LLINK shiftcapsinfo; // PENINPUT_LAYOUT_SHIFT_CAPS_INFO - - LLINK rangebarresource; // Range bar resource - } - -// --------------------------------------------------------------------------- -// Client layout list -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_CLIENT_LAYOUT_LIST - { - STRUCT items[]; - } - -// --------------------------------------------------------------------------- -// Client layout -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_CLIENT_LAYOUT - { - // Client layout id - WORD id=0; - - // column counts - WORD colcount=0; - - // row counts - WORD rowcount=0; - - // the bg mask bmp of the layout - STRUCT controls[]; - } - -// --------------------------------------------------------------------------- -// Layout control -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_CONTROL - { - // Control ID - WORD id=0; - - // the control type - WORD controltype=0; - - // the begin row of the control - WORD beginrow=0; - - // the begin column of the control - WORD begincolumn=0; - - // the end row of the control - WORD endrow=0; - - // the end column of the control - WORD endcolumn=0; - } - -// start by vv -STRUCT PENINPUT_LAYOUT_CONTROL_INFO - { - // Control ID TPeninputCommonCtrlID - WORD id=0; - - //the control type, new define TResourceCtrlType - //WORD controltype=-1; - - // the control event id TPeninputLayoutEvent - //WORD controleventid=-1; - - // TKeyCode - //WORD controleventkeycode = -1; - - // the begin column of the control - LLINK image; - } -// end by vv - -// --------------------------------------------------------------------------- -// Vkb layout list -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_VKB_LAYOUT_LIST - { - STRUCT items[]; - } - -// --------------------------------------------------------------------------- -// Vkb layout -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_VKB_LAYOUT - { - // Vkb layout type id - WORD id=0; - - // Mbm file name which store the bg bmp of the layout and all controls - LTEXT mbmfile=""; - LONG imgmajorskinid=0xffff; - - // the bg, bg mask and bg skin bmp of the layout - WORD bgbmp=0xffff; - WORD bgbmpmask=0xffff; - WORD bgbmpskinid=0xffff; - - // the bg, bg mask and bg skin bmp for dimmed key - WORD dimbmp=0xffff; - WORD dimmask=0xffff; - WORD dimbmpskinid=0xffff; - - // column counts - WORD colcount=0; - - // row counts - WORD rowcount=0; - - STRUCT highlightbmps[]; // list of PENINPUT_LAYOUT_BITMAP_ID - - STRUCT highlightmaskbmps[]; // list of PENINPUT_LAYOUT_BITMAP_ID - - // keys - STRUCT keys[]; - } - -// --------------------------------------------------------------------------- -// Bitmap id -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_BITMAP_ID - { - // id of bitmap - WORD bmpid=0; - } - -// --------------------------------------------------------------------------- -// Unit key -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_UNIT_KEY - { - LTEXT unicode=""; - - WORD scancode=0; - - WORD beginrow=0; - - WORD begincolumn=0; - - WORD endrow=0; - - WORD endcolumn=0; - - WORD highlightbmpindex=-1; - - WORD highlightmaskbmpindex=-1; - - // add this item because some special characters need additional unicode to display - LTEXT displayunicode=""; - } - -// --------------------------------------------------------------------------- -// Popup window -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_POPUP_WINDOW - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - - WORD bgbmp=0xffff; - WORD bgmaskbmp=0xffff; - WORD bgbmpskinid=0xffff; - - WORD focusbmp=0xffff; - WORD focusmaskbmp=0xffff; - WORD focusbmpskinid=0xffff; - } - -// --------------------------------------------------------------------------- -// Shift&caps info list -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_SHIFT_CAPS_INFO_LIST - { - STRUCT items[]; - } - -// --------------------------------------------------------------------------- -// Shift&caps info -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_SHIFT_CAPS_INFO - { - WORD range = 0; - STRUCT items[]; - } - -// --------------------------------------------------------------------------- -// Shift&caps info single -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_SHIFT_CAPS_INFO_SINGLE - { - WORD id=0; - WORD vkblayoutid=0; - WORD caseused=0; - } - -// --------------------------------------------------------------------------- -// Range bar info -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_RANGE_BAR_INFO - { - WORD style=0; // 0:hide-style 1:highlight-style - - STRUCT ranges[]; // PENINPUT_LAYOUT_RANGE_INFO - } - -// --------------------------------------------------------------------------- -// Range info -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_RANGE_INFO - { - WORD rangeid=0; - - WORD responsestyle=0; // 0:No action 1: change range directory 2: pop choice item - - WORD clientlayoutid=0; - - WORD vkblayoutid=0; - - } - -// --------------------------------------------------------------------------- -// Switch text info -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_SWITCH_TEXT - { - LONG colormajorskinid=0xffff; - WORD textcolorgrp=0xffff; - WORD textcoloridx=0xffff; - WORD shadowtextcoloridx=0xffff; - } - -// --------------------------------------------------------------------------- -// Base window background -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_WINDOW_BG - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - - WORD bgimg=0xffff; - WORD bgimgmask=0xffff; - WORD bgimgskinid=0xffff; - } - -// --------------------------------------------------------------------------- -// Vkb keyboard -// --------------------------------------------------------------------------- -// -STRUCT PENINPUT_LAYOUT_VKB_KEYBOARD - { - LTEXT bmpfile=""; - LONG imgmajorskinid=0xffff; - - WORD bgimg=0xffff; - WORD bgimgmask=0xffff; - WORD bgimgskinid=0xffff; - } -#endif // PENINPUTCOMMONLAYOUT_RH diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputcommonlayoutext.h --- a/textinput/peninputcommonlayout/inc/peninputcommonlayoutext.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,378 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: peninput common layout framework -* -*/ - - -#ifndef C_CPENINPUTCOMMONLAYOUTEXT_H -#define C_CPENINPUTCOMMONLAYOUTEXT_H - -// System includes -#include -#include -#include - -// User includes -#include "peninputlayoutcontext.h" - -// Forward decalaration -class CPeninputDataMgr; -class CPeninputUiStateMgr; -class MPeninputUiStateMgr; -class CPeninputLayoutWindowExt; - -/** - * Peninput common layout - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputCommonLayoutExt : public CFepUiLayout, - public MPeninputLayoutContext - { - -public: - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputCommonLayoutExt(); - - /** - * Get data manager - * - * @since S60 v3.2 - * @return The pointer to MPeninputDataProvider - */ - IMPORT_C MPeninputDataProvider* DataMgr() const; - - /** - * Get layout window - * - * @since S60 v3.2 - * @return The pointer to CPeninputLayoutWindow object - */ - IMPORT_C CPeninputLayoutWindowExt* LayoutWindow() const; - - /** - * Get ui state manager - * - * @since S60 v3.2 - * @return The pointer to MPeninputUiStateMgr - */ - IMPORT_C MPeninputUiStateMgr* UiStateMgr() const; - -// From CFepUiLayout - - /** - * From CFepUiLayout - * Handle layout command event - * - * @since S60 v3.2 - * @param aCmd Command Id - * @param aData Data for command - * @return Errors when return value smaller than 0 - */ - IMPORT_C TInt HandleCommand( TInt aCmd, TUint8* aData ); - - /** - * From CFepUiLayout - * Inform layout the size changing event - * - * @since S60 v3.2 - * @param aData The event data - * @return KErrNone if successfully size changing - */ - IMPORT_C TInt SizeChanged( const TAny* aData ); - - /** - * From CFepUiLayout - * Handle the event from control - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aCtrl The sender - * @param aEventData The event data - * @return None - */ - IMPORT_C virtual void HandleControlEvent( TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData ); - - /** - * From CFepUiLayout - * Handle editor text coming - * Called by animation dll when app editor text is coming - * If a ui layout has a editor area, it must implements - * this function to get the text - * - * @since S60 v3.2 - * @param aData Editor Text Coming data - * @return KErrNone is operation succeeded - */ - IMPORT_C TInt OnAppEditorTextComing( - const TFepInputContextFieldData& aData ); - - /** - * From CFepUiLayout - * Get the layout type, vkb or hwr. It's now similar to LayoutType which defines in - * another interface. - * - * @since S60 v3.2 - * @return The layout type - */ - IMPORT_C virtual TInt PenInputType(); - - IMPORT_C void SetPositionFromOutside(const TPoint& aNewPos); - -// From MKeyRawEventHandler - - /** - * From CFepUiLayout - * Handle raw event key - * - * @since S60 v3.2 - * @param aKeyEvent The key raw event data - * @return ETrue if the key was handled, otherwise EFalse - */ - IMPORT_C TBool HandleRawKeyEventL( const TRawEvent& aKeyEvent ); - -// From MPeninputLayoutContext - - /** - * Send event to window - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aCtrl The sender - * @param aEventData The event data - * @return None - */ - IMPORT_C void SendEventToWindow( TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData = KNullDesC ); - - /** - * Send event to layout - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aCtrl The sender - * @param aEventData The event data - * @return None - */ - IMPORT_C void SendEventToLayout( TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData = KNullDesC ); - - - IMPORT_C TBool IsShiftPermitted(); - - IMPORT_C TBool IsCapsLockPermitted(); - /** - * Request data from data provider - * - * @since S60 v3.2 - * @param aDataType The data request - * @return The data you request - */ - IMPORT_C TAny* RequestData( TPeninputDataType aDataType ); - - /** - * Set resource utils - * - * @since S60 v3.2 - * @param aDataType Data type - * @param aData Data value - * @return None - */ - IMPORT_C void SetData( TPeninputDataType aDataType, TAny* aData ); - - /** - * Sendkey to fep - * - * @since S60 v3.2 - * @param aEventType Event type - * @param aEventData Event data - * @return None - */ - IMPORT_C void Sendkey( TInt aEventType, - const TDesC& aEventData = KNullDesC ); - -protected: - - /** - * 2nd phase construction - constructor - * - * @since S60 v3.2 - * @param aLafEnv The LAF enviroment - * @param aLayoutOwner The owner of layout - * @return None - */ - IMPORT_C CPeninputCommonLayoutExt( MLayoutOwner* aLayoutOwner ); - - /** - * 2nd phase construction - second constructor - * - * @since S60 v3.2 - * @param aInitData Init data of layout - * @return None - */ - IMPORT_C void ConstructL( const TAny* aInitData ); - - /** - * From CFepUiLayout - * Test whether the position is valid - * This is used to test the target position when draging controls - * to some place - * - * @since S60 v4.0 - * @param aRect The rect to be checked - * @param aDragbar The dragbar being dragged - * @param aVInfo The valid information in vertial dirtection. ETrue is - * vertical moving is valid.It's only used when aRect is not - * valid but moving in vertical direction is valid - * @param aHInfo The valid information in horizontal dirtection - * ETrue is horizontal moving is valid.It's only used when aRect - * is not valid but moving in vertical direction is valid - * @param aFlag ETrue if whole layout is moving, otherwise, only - * components moving - * @return ETrue if aRect is a valid position. Otherwise, EFalse - */ - IMPORT_C TBool IsValidDestination( const TRect& aRect, - CDragBar* aDragBar, - TBool& aVInfo, - TBool& aHInfo, - TBool aFlag ); - - /** - * Init layout owner - * - * @since S60 v3.2 - * @return The rect of the layout - */ - IMPORT_C virtual TRect Init(); - - /** - * Save a virtual keybroad key to the repository - * - * @since S60 v3.2 - * @param aKey The key name in repository - * @param aValue The unicode of key - * @return None - */ - IMPORT_C virtual void SaveKey( TInt aKey, TInt aValue ); - - /** - * Factory method for creation of layout window. The decision which - * layout window(VKB or HWR) is created will be postboned in subclasses - * of this class. - * - * @since S60 v3.2 - * @return None - */ - virtual void CreateLayoutWindowL() = 0; - - /** - * Factory method for creation resource config. It is enough at present - * to create and initialize resource config. Any necessary extension - * will be implemented in subclasses. - * - * @since S60 v3.2 - * @return None - */ - virtual void CreateDataMgrL( const TAny* aInitData ) = 0; - - /** - * Get the layout type, vkb or hwr, child class must rewrite the function. - * - * @since S60 v3.2 - * @return The layout type - */ - virtual TInt LayoutType() = 0; - -private: // New method - - /** - * Change input language - * - * @since S60 v3.2 - * @param aLangID The language id you want to change to - * @return None - */ - void ChangeInputLanguage( TInt aLangID ); - - /** - * Change current range - * - * @since S60 v3.2 - * @param aRange The range need to set - * @return None - */ - void ChangeRange( TInt aRange ); - - /** - * Translate range for some languages - * - * @since S60 v3.2 - * @param aRange The range need to set - * @return New range - */ - TInt TranslateRange(TInt aRange); - - /** - * Set if enable switch to hwr - * - * @since S60 v3.2 - * @param aEnable The enable flag - * @return None - */ - void SetEnableSwitchToHwr(TBool aEnable); - - /** - * Set if enable option button and language switch button - * - * @since S60 v3.2 - * @param aEnable The enable flag - * @return None - */ - void SetEnableSettingBtn(TBool aEnable); - -protected: - - /** - * The data manager - * Own - */ - CPeninputDataMgr* iDataMgr; - - /** - * The ui state manager - * Own - */ - CPeninputUiStateMgr* iUiStateMgr; - - /** - * The layout window - * Own - */ - CPeninputLayoutWindowExt* iLayoutWindow; - - }; - -#endif // C_CPeninputCommonLayoutExt_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputcommonlayoutglobalenum.h --- a/textinput/peninputcommonlayout/inc/peninputcommonlayoutglobalenum.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -/* -* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: the enumeration of peninputcommonlayout -* -*/ - - -#ifndef PENINPUTCOMMONLAYOUTGLOBALENUM_H -#define PENINPUTCOMMONLAYOUTGLOBALENUM_H - -/** - * Pen input range button response style - */ -enum TPeninputRangeResponseStyle - { - EPeninputRangeResponseNoAction = 0, - EPeninputRangeResponseSwitchRange = 1, - EPeninputRangeResponsePopupChoiceItem = 2 - }; - -/** - * Pen input range extention - */ -enum TPeninputLayoutExtRange - { - ERangeNativeNumber = 0x0020, - ERangeMixedText = 0x0040, // e.g. arabic native text mixed with latin text - ERangeMixedNumber = 0x0080 // e.g. arabic native number mixed with latin number - }; - -/** - * Pen input layout event - */ -enum TPeninputLayoutEvent - { - EPeninputLayoutEventClose = 1001, //starts from control event extended base - EPeninputLayoutEventOpen, - EPeninputLayoutEventOption, - EPeninputLayoutEventEnter, - EPeninputLayoutEventBack, - EPeninputLayoutEventSwitchLanguage, - EPeninputLayoutEventToHwr, - EPeninputLayoutEventToVkb, - EPeninputLayoutEventDataQueryPosition, - EPeninputLayoutEventMovePosition, - EPeninputLayoutEventRange, - EPeninputLayoutEventRangeLoop, - EPeninputLayoutEventShift, - EPeninputLayoutEventCapslock, - EPeninputLayoutEventSpace, - EPeninputLayoutEventTab, - - EPeninputLayoutEventSetPermittedRange, - EPeninputLayoutEventSetPermittedCase, - EPeninputLayoutEventSetCase, - EPeninputLayoutEventCloseWindow, - EPeninputLayoutEventChangeInputMode, - - EPeninputLayoutEventLeftArrow, - EPeninputLayoutEventRightArrow, - - EPeninputLayoutEventLast = 2000 // user event starts from here, same as base control - }; - -/** - * Pen input common control id - */ -enum TPeninputCommonCtrlID - { - EPeninutWindowCtrlIdBaseWindow = 0, - - // Controls in the titlepane - EPeninutWindowCtrlIdMoveBtn, - EPeninupWindowCtrlIdArrowLeftBtn,// new added by vv - EPeninupWindowCtrlIdArrowRightBtn,// new added by vv - EPeninutWindowCtrlIdCloseBtn, - EPeninutWindowCtrlIdOptionBtn, - EPeninutWindowCtrlIdInputContextField, - - EPeninutWindowCtrlIdVkbCtrl, - EPeninutWindowCtrlIdBackspaceBtn, - EPeninutWindowCtrlIdEnterBtn, - EPeninutWindowCtrlIdInputLangSwitcherBtn, - - // Controls in the next line - EPeninutWindowCtrlIdTabBtn, - EPeninutWindowCtrlIdCapslockBtn, - EPeninutWindowCtrlIdShiftBtn, - EPeninutWindowCtrlIdSpaceBtn, - EPeninutWindowCtrlIdSwitchToHwrBtn, - EPeninutWindowCtrlIdSwitchToVkbBtn, - - EPeninutWindowCtrlIdRangeBar, - - // Button Id in range bar - EPeninutWindowCtrlIdNativeCharBtn, - EPeninutWindowCtrlIdNativeNumberBtn, - EPeninutWindowCtrlIdLatinCharBtn, - EPeninutWindowCtrlIdLatinNumberBtn, - EPeninutWindowCtrlIdSymbolBtn, - EPeninutWindowCtrlIdAccentedBtn, - - // Hwr box - EPeninutWindowCtrlIdHwrBox, - - // Pop up window - EPeninutWindowCtrlIdAccentPopupWindow, - EPeninutWindowCtrlIdSwitcherPopupWindow, - EPeninputWindowCtrlIdMultiLineICF, - //candidate list - EPentinputHwrCandidateList, - EPeninputWindowCtrlIdLastOne, - - EPeninutWindowCtrlIdRangeBtn //todo split view - }; - -/** - * Pen input postion change style - */ -enum TPeninputPositionChangeStyle - { - EPeninputPositionChangeNone = 0, - EPeninputPositionChangeTlJustify = 1, - EPeninputPositionChangeBrJustify = 2, - EPeninputPositionChangeDataQuery = 3 - }; - -enum TPeninputGuideLineStyle - { - EPeninputGuideLineNone = 0, - EPeninputGuideLineTop = 1, - EPeninputGuideLineBottom = 2, - EPeninputGuideLineBoth = 3 - }; - -#endif // PENINPUTCOMMONLAYOUTGLOBALENUM_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputctrlpool.h --- a/textinput/peninputcommonlayout/inc/peninputctrlpool.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: controls management utility -* -*/ - - -#ifndef C_CPENINPUTCTRLPOOL_H -#define C_CPENINPUTCTRLPOOL_H - -// System includes -#include -#include - -// Forward declaration -class CFepUiBaseCtrl; - -/** - * Peninput control pool class - * - * This class is control pool. Application can use this class to - * manage their controls. Control creates out side and add itself to this - * pool. Application can get and remove one control based on control - * id. - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputCtrlPool : public CBase - { - -public: - - /** - * Symbian constructor - * - * @since S60 v3.2 - * @return Pointer to created CPeninputCtrlPool object - */ - IMPORT_C static CPeninputCtrlPool* NewL(); - - /** - * Symbian constructor - * - * @since S60 v3.2 - * @return Pointer to created CPeninputCtrlPool object - */ - IMPORT_C static CPeninputCtrlPool* NewLC(); - - /** - * Destructor, it need to destroy all controls - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputCtrlPool(); - - /** - * Add one control to the pooling, the control should have - * one control id - * - * @since S60 v3.2 - * @param aControl Pointer to control - * @return None - */ - IMPORT_C void AddControl( CFepUiBaseCtrl* aControl ); - - /** - * Remove one control from the pooling - * - * @since S60 v3.2 - * @param aControlID Control id - * @return None - */ - IMPORT_C void RemoveControl( const TInt aControlID ); - - /** - * Get one control from the pooling according to the control id - * - * @since S60 v3.2 - * @param aControlID Control id - * @return Pointer to control - */ - IMPORT_C CFepUiBaseCtrl* Control( const TInt aControlID ) const; - - /** - * Remove all controls and delete them - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Reset(); - - /** - * Get current control count in this pool - * - * @since S60 v3.2 - * @return The count of controls - */ - IMPORT_C TInt ControlCount() const; - - /** - * Get the control from the pool according to the index - * - * @since S60 v3.2 - * @param aIndex Index in array - * @return Pointer to control - */ - IMPORT_C CFepUiBaseCtrl* ControlByIndex( const TInt aIndex ) const; - -protected: - - /** - * Symbian second-phase constructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Construct(); - -private: // Data - - /** - * Control pointer array - */ - RPointerArray iControlList; - - }; - -#endif // C_CPENINPUTCTRLPOOL_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputdataconverter.h --- a/textinput/peninputcommonlayout/inc/peninputdataconverter.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: data converter utility -* -*/ - - -#ifndef C_CPENINPUTDATACONVERTER_H -#define C_CPENINPUTDATACONVERTER_H - -// System includes -#include -#include -#include -#include - -/** - * Peninput data converter utility - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputDataConverter : public CBase - { - -public: - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputDataConverter(); - - /** - * From integer to descriptor - * - * @since S60 v3.2 - * @param aNum Integer number to be converted - * @param aBuf Buffer to store converted number - * @return None - */ - IMPORT_C static void IntToDesc( TUint aNum, - TDes16& aBuf ); - - /** - * From combination to descriptor - * - * @since S60 v3.2 - * @param aBool Bool value to be converted - * @param aNum Number to append to a Bool value - * @param aBuf Buffer to store converted number - * @return None - */ - IMPORT_C static void CombinationToDesc( TBool aBool, - TUint aNum, - TDes16& aBuf ); - - /** - * From TAny* to TInt - * - * @since S60 v3.2 - * @param aOrginal Orginal data - * @return Converted descriptor - */ - IMPORT_C static TInt AnyToInt( TAny* aOrginal ); - - /** - * Get shift and caps status by case - * - * @since S60 v3.2 - * @param aCase The case - * @param aShiftStatus The shift status - * @param aCapsStatus The capslock status - * @return None - */ - IMPORT_C static void ShiftCapslockByCase( TInt aCase, - TInt& aShiftStatus, - TInt& aCapsStatus ); - - /** - * Get fep case by case id internal - * - * @since S60 v3.2 - * @param aCaseId The internal case - * @return The fep case - */ - IMPORT_C static TInt FepCaseByCaseId( TInt aCaseId ); - -protected: - - /** - * 1st phase constructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C CPeninputDataConverter(); - - }; - -#endif // C_CPENINPUTDATACONVERTER_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputdatamgr.h --- a/textinput/peninputcommonlayout/inc/peninputdatamgr.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,360 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of the common layout data manager -* -*/ - - -#ifndef C_CPENINPUTDATAMGR_H -#define C_CPENINPUTDATAMGR_H - -// System includes -#include -#include -#include -#include - -// User includes -#include "peninputdataprovider.h" - -// Forward decalaration -class MPeninputLayoutContext; -class CRepository; - -/** - * Data manager implementation - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputDataMgr : public CBase, - public MPeninputDataProvider - { - -public: - - /** - * Create one CPeninputDataMgr object - * - * @since S60 v3.2 - * @param aContext The layout context - * @return The pointer to CPeninputDataMgr object - */ - IMPORT_C static CPeninputDataMgr* NewL( - MPeninputLayoutContext* aContext ); - - /** - * Create one CPeninputDataMgr object - * - * @since S60 v3.2 - * @param aContext The layout context - * @return The pointer to CPeninputDataMgr object - */ - IMPORT_C static CPeninputDataMgr* NewLC( - MPeninputLayoutContext* aContext ); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputDataMgr(); - - /** - * Other initialization - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual void InitMore(); - - /** - * Call back function, which is called when some key changed - * - * @since S60 v3.2 - * @param aChangedKey The key whose value is changed - * @return None - */ - IMPORT_C virtual void HandleGSRepositoryChange( TInt aChangedKey ); - - /** - * Notify engine that some data changed - * - * @since S60 v3.2 - * @param aType The type of the data to be notified - * @param aData The pointer to the notified data - * @return None - */ - IMPORT_C virtual void NotifyEngine( TPeninputDataType aType, - TAny* aData ); - - IMPORT_C TBool IsShiftPermitted(); - IMPORT_C TBool IsCapsLockPermitted(); - -// From base class MPeninputDataProvider - - /** - * From MPeninputDataProvider - * Request data according to the data type - * - * @since S60 v3.2 - * @param aDataType The data type need to get - * @return The pointer to TAny type required data - */ - IMPORT_C TAny* RequestData( TPeninputDataType aDataType ); - - /** - * From MPeninputDataProvider - * Set data according to the data type - * - * @since S60 v3.2 - * @param aDataType The data type need to set - * @param aData The pointer to the new setting data - * @return None - */ - IMPORT_C void SetData( TPeninputDataType aDataType, TAny* aData ); - - /** - * From MPeninputDataProvider - * Reset data contained in data manager - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual void Reset(); - - /** - * From MPeninputDataProvider - * Save data into AknFepRepository - * - * @since S60 v3.2 - * @param aKey The key name - * @param aValue The key value - * @return None - */ - IMPORT_C virtual void SaveKey( TInt aKey, TInt aValue ); - -protected: - - /** - * Constructor - * - * @since S60 v3.2 - * @param aContext The layout context - * @return None. - */ - IMPORT_C CPeninputDataMgr( MPeninputLayoutContext* aContext ); - - /** - * 2nd constructor function - * - * @since S60 v3.2 - * @return None. - */ - IMPORT_C void ConstructL(); - - /** - * Handle notification from CenRep monitor - * - * @since S60 v3.2 - * @param aPtr The pointer to callback data - * @return The result value. - */ - IMPORT_C static TInt HandleGSRepositoryCallBack( TAny* aPtr ); - -private: - - /** - * Set Screen Mode - * - * @since S60 v3.2 - * @param aScreenMode The reference of the screen mode data - * @return None - */ - void SetScreenMode( const TPixelsTwipsAndRotation& aScreenMode ); - -protected: // Data - - /** - * The case - */ - TInt iCase; - - /** - * The peninput language - */ - TInt iInputLanguage; - - /** - * The permitted range - */ - TInt iPermittedRange; - - /** - * The permitted case - */ - TInt iPermittedCase; - - /** - * The current range - */ - TInt iCurrentRange; - - /** - * The client layout - */ - TInt iClientLayout; - - /** - * The vkb layout - */ - TInt iVkbLayoutId; - - /** - * The editor numeric key map - */ - TInt iEditorNumericKeymap; - - /** - * The editor numeric key map - */ - TBool iEnableSwitchBtn; - - /** - * The flag of shift down - */ - TBool iShiftDown; - - /** - * The flag of capslock down - */ - TBool iCapslockDown; - - /** - * The current accent - */ - TInt iCurrentAccent; - - /** - * The window position - */ - TInt iWindowPosition; - - /** - * The screen mode - */ - TPixelsTwipsAndRotation iScreenMode; - - /** - * The screen size - */ - TSize iScreenSize; - - /** - * The unit width - */ - TInt iUnitWidth; - - /** - * The unit height - */ - TInt iUnitHeight; - - /** - * The setting id for window postion - */ - TInt iPositionSettingId; - - /** - * The rectangle of data query dialog - */ - TRect iDataQueryDlgRect; - - /** - * The layout context - * Not own - */ - MPeninputLayoutContext* iContext; - - /** - * The global setttings repository - * Own - */ - CRepository* iGSRepository; - - /** - * The aknfep repository - * Own - */ - CRepository* iAknFepRepository; - - /** - * The repository watcher, - * which will monitor change of the language and guide line - * Own - */ - CAknFepRepositoryWatcher* iGSRepositoryWatcher; - - /** - * The user defined resource for number - * Own - */ - HBufC* iUserDefinedResource; - - /** - * The reserve data - * not Own - */ - TAny* iReserve_1; - - /** - * The position of the top guide line - */ - TInt iGuideLineTop; - - /** - * The position of the bottom guide line - */ - TInt iGuideLineBottom; - - /** - * Layout size changing flag - */ - TBool iLayoutSizeChanging; - - /** - * Indicate whether unit width has been set - */ - TBool iUnitWidthSet; - - /** - * Indicate whether unit height has been set - */ - TBool iUnitHeightSet; - - /** - * Indicate whether DeadKey has been latched - */ - TBool iLatched; - - /** - * Indicate whether unitsize has been changed - */ - TBool iUnitSizeSet; - - TBool iAllowCaseChange; - }; - -#endif // C_CPENINPUTDATAMGR_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputdataprovider.h --- a/textinput/peninputcommonlayout/inc/peninputdataprovider.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: interface of data provider -* -*/ - - -#ifndef M_MPENINPUTDATAPROVIDER_H -#define M_MPENINPUTDATAPROVIDER_H - -// System includes -#include - -/** - * Pen input data type -*/ -enum TPeninputDataType - { - EPeninputDataTypeCase = 0x00000001, - EPeninputDataTypeInputLanguage = 0x00000002, - EPeninputDataTypePermittedRange = 0x00000004, - EPeninputDataTypeCurrentRange = 0x00000008, - EPeninputDataTypeClientLayout = 0x00000010, - EPeninputDataTypeVkbLayout = 0x00000020, - EPeninputDataTypeNumericKeymap = 0x00000040, - EPeninputDataTypeShiftDown = 0x00000080, - EPeninputDataTypeCapslockDown = 0x00000100, - EPeninputDataTypeCurrentAccent = 0x00000200, - EPeninputDataTypeScreenMode = 0x00000400, - EPeninputDataTypeScreenSize = 0x00000800, - EPeninputDataTypeWindowPosition = 0x00001000, - EPeninputDataTypePositionSettingId = 0x00002000, - EPeninputDataTypeUnitWidth = 0x00004000, - EPeninputDataTypeUnitHeight = 0x00008000, - EPeninputDataTypeDataQueryDlgRect = 0x00010000, - EPeninputDataTypePenTailColor = 0x00020000, - EPeninputDataTypeReserve_1 = 0x00040000, - EPeninputDataTypePermittedCase = 0x00080000, - EAknFepDataTypeUseDefinedResource = 0x00100000, - EAkninputDataTypeGuideLineTop = 0x00200000, - EAkninputDataTypeGuideLineBottom = 0x00400000, - EAkninputDataTypeSizeChanging = 0x00800000, - EAkninputDataTypeUnitSizeSet = 0x01000000, - EAkninputDataTypeLatchedSet = 0x02000000, - EAkninputDataTypeInputArea = 0x04000000, - EAkninputDataTypeAllowCaseChange = 0x08000000 - }; - -/** - * Data provider interface - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class MPeninputDataProvider - { - -public: - - /** - * Request data from data provider - * - * @since S60 v3.2 - * @param aDataType The data request - * @return The data you request - */ - virtual TAny* RequestData( TPeninputDataType aDataType ) = 0; - - /** - * Set data according to the data type - * - * @since S60 v3.2 - * @param aDataType The data type need to set - * @param aData The new data - * @return None - */ - virtual void SetData( TPeninputDataType aDataType, - TAny* aData ) = 0; - - /** - * Reset some data in data manager - * - * @since S60 v3.2 - * @return None - */ - virtual void Reset() = 0; - - /** - * Save key into CenRep(AknFep) - * - * @since S60 v3.2 - * @param aKey The key name - * @param aValue The new value - * @return None - */ - virtual void SaveKey( TInt aKey, TInt aValue ) = 0; - - }; - -#endif //M_MPENINPUTDATAPROVIDER_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputlayoutconfig.h --- a/textinput/peninputcommonlayout/inc/peninputlayoutconfig.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,282 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: common layout config -* -*/ - - -#ifndef C_CPENINPUTLAYOUTCONFIG_H -#define C_CPENINPUTLAYOUTCONFIG_H - - -// System includes -#include -#include - -// Forward decalaration -class CPeninputClientLayoutInfo; -class CPeninputVkbLayoutInfo; -class CPeninputRangeBarInfo; -class CPeninputShiftCapsInfo; -class CPeninputCtrlPool; -/** - * Peninput commonlayout layout config - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputLayoutConfig : public CBase - { - -public: - - /** - * Symbian constructor - * - * @since S60 v3.2 - * @param aResUtils Resource Utils - * @param aReader Resource reader - * @return Pointer to created CPeninputLayoutConfig object - */ - IMPORT_C static CPeninputLayoutConfig* NewL( CAknFepCtrlVkbLayout& aVkblayout, - TResourceReader& aReader ); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputLayoutConfig(); - - /** - * Get language id - * - * @since S60 v3.2 - * @return Language id - */ - inline TInt Language(); - - /** - * Get language name - * - * @since S60 v3.2 - * @return Language name - */ - inline HBufC* LanguageString(); - - /** - * Get case sensitive flag - * - * @since S60 v3.2 - * @return Case sensitive flag - */ - inline TBool CaseSensitive(); - - /** - * Get guide line - * - * @since S60 v3.2 - * @return The guide line style - */ - inline TInt GuideLine(); - - /** - * The position percent of top guide line - * - * @since S60 v3.2 - * @return The position percent of top guide line - */ - inline TInt PositionTopLine(); - - /** - * The position percent of bottom guide line - * - * @since S60 v3.2 - * @return The position percent of bottom guide line - */ - inline TInt PositionBottomLine(); - - /** - * Get client layout info list - * - * @since S60 v3.2 - * @return The reference of pointer array containing client layout list - */ - inline RPointerArray& ClientLayoutInfoList(); - - /** - * Get vkb layout info list - * - * @since S60 v3.2 - * @return The reference of pointer array containing vkb layout list - */ - inline RPointerArray& VkbLayoutInfoList(); - - /** - * Get shift&caps info - * - * @since S60 v3.2 - * @return The reference of pointer array containing shift&caps info - */ - inline RPointerArray& ShiftCapsInfoList(); - - /** - * Get client layout info - * - * @since S60 v3.2 - * @param aLayoutId Client layout id - * @return The pointer to CPeninputClientLayoutInfo object - */ - IMPORT_C CPeninputClientLayoutInfo* FindClientLayoutInfo( - TInt aLayoutId ); - - /** - * Get vkb layout info - * - * @since S60 v3.2 - * @param aLayoutId Vkb layout id - * @return The pointer to CPeninputVkbLayoutInfo object - */ - IMPORT_C CPeninputVkbLayoutInfo* FindVkbLayoutInfo( TInt aLayoutId ); - - /** - * Get shift&caps info - * - * @since S60 v3.2 - * @param aRangeId Range id - * @return The pointer to CPeninputShiftCapsInfo object - */ - IMPORT_C CPeninputShiftCapsInfo* FindShiftCapsInfo( TInt aRangeId ); - - /** - * Get vkb layout id - * - * @since S60 v3.2 - * @param aRangeId Range id - * @param aShiftCapsSingleId Shift&caps single id - * @return The vkb layout id - */ - IMPORT_C TInt ShiftCapsSingleVkbLayoutId( TInt aRangeId, - TInt aShiftCapsSingleId ); - - /** - * Get vkb layout id - * - * @since S60 v3.2 - * @param aRangeId Range id - * @param aCase The case - * @return The vkb layout id - */ - IMPORT_C TInt ShiftCapsSingleVkbLayoutByCase( TInt aRangeId, - TInt aCase ); - /** - * Get range bar info - * - * @since S60 v3.2 - * @return The pointer to CPeninputRangeBarInfo object - */ - inline CPeninputRangeBarInfo* RangeBarInfo(); - - /** - * Get range bar resource id - * - * @since S60 v3.2 - * @return The resource id - */ - inline TInt RangebarResId(); - -protected: - - /** - * Constructor - * - * @since S60 v3.2 - * @return None - */ - CPeninputLayoutConfig(); - - /** - * Second phase constructor - * - * @since S60 v3.2 - * @param aResUtils Resource Utils - * @param aReader Resource reader - * @return None - */ - void ConstructL( CAknFepCtrlVkbLayout& aVkblayout, TResourceReader& aReader ); - -private: // Data - - /** - * Language id - */ - TInt iLanguage; - - /** - * Language string - * Own - */ - HBufC* iLanguageString; - - /** - * Case sensitive flag - */ - TBool iCaseSensitive; - - /** - * Guide line style - */ - TInt iGuideLine; - - /** - * The position percent of top guide line - */ - TInt iPositionTopLine; - - /** - * The position percent of bottom guide line - */ - TInt iPositionBottomLine; - - /** - * Client layout info list - */ - RPointerArray iClientLayoutInfoList; - - /** - * Vkb layout info list - */ - RPointerArray iVkbLayoutInfoList; - - /** - * Range bar info - * Own - */ - CPeninputRangeBarInfo* iRangeBarInfo; - - /** - * Shift&caps info list - */ - RPointerArray iShiftCapsInfoList; - - /** - * Resource Id for range bar - */ - TInt iRangeBarResId; - }; - -#include "peninputlayoutconfig.inl" - -#endif // C_CPENINPUTLAYOUTCONFIG_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputlayoutconfig.inl --- a/textinput/peninputcommonlayout/inc/peninputlayoutconfig.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,127 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: common layout config inline functions -* -*/ - - -// ----------------------------------------------------------------------------- -// CPeninputLayoutConfig::Language -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputLayoutConfig::Language() - { - return iLanguage; - } - -// ----------------------------------------------------------------------------- -// CPeninputLayoutConfig::LanguageString -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline HBufC* CPeninputLayoutConfig::LanguageString() - { - return iLanguageString; - } - -// ----------------------------------------------------------------------------- -// CPeninputLayoutConfig::CaseSensitive -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TBool CPeninputLayoutConfig::CaseSensitive() - { - return iCaseSensitive; - } - -// ----------------------------------------------------------------------------- -// CPeninputLayoutConfig::GuideLine -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputLayoutConfig::GuideLine() - { - return iGuideLine; - } - -// ----------------------------------------------------------------------------- -// CPeninputLayoutConfig::PositionTopLine -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputLayoutConfig::PositionTopLine() - { - return iPositionTopLine; - } - -// ----------------------------------------------------------------------------- -// CPeninputLayoutConfig::PositionBottomLine -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputLayoutConfig::PositionBottomLine() - { - return iPositionBottomLine; - } - -// ----------------------------------------------------------------------------- -// CPeninputLayoutConfig::ClientLayoutInfoList -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline RPointerArray& - CPeninputLayoutConfig::ClientLayoutInfoList() - { - return iClientLayoutInfoList; - } - -// ----------------------------------------------------------------------------- -// CPeninputLayoutConfig::VkbLayoutInfoList -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline RPointerArray& - CPeninputLayoutConfig::VkbLayoutInfoList() - { - return iVkbLayoutInfoList; - } - -// ----------------------------------------------------------------------------- -// CPeninputLayoutConfig::ShiftCapsInfoList -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline RPointerArray& - CPeninputLayoutConfig::ShiftCapsInfoList() - { - return iShiftCapsInfoList; - } - -// ----------------------------------------------------------------------------- -// CPeninputLayoutConfig::RangeBarInfo -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline CPeninputRangeBarInfo* - CPeninputLayoutConfig::RangeBarInfo() - { - return iRangeBarInfo; - } - -inline TInt CPeninputLayoutConfig::RangebarResId() - { - return iRangeBarResId; - } - \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputlayoutcontext.h --- a/textinput/peninputcommonlayout/inc/peninputlayoutcontext.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: interface of layout context -* -*/ - - -#ifndef M_MPENINPUTLAYOUTCONTEXT_H -#define M_MPENINPUTLAYOUTCONTEXT_H - -// System includes -#include - -// User includes -#include "peninputdataprovider.h" - -// Class forward decalaration -class CFepUiBaseCtrl; - -/** - * Peninput common layout interface - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class MPeninputLayoutContext - { - -public: - - /** - * Send event to window - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aCtrl The sender control - * @param aEventData The event data - * @return None - */ - virtual void SendEventToWindow( TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData = KNullDesC ) = 0; - - virtual TBool IsShiftPermitted() = 0; - virtual TBool IsCapsLockPermitted() = 0; - - /** - * Send key to fep - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aEventData The event data - * @return None - */ - virtual void Sendkey( TInt aEventType, - const TDesC& aEventData = KNullDesC ) = 0; - - /** - * Request data from data provider - * - * @since S60 v3.2 - * @param aDataType The data type request - * @return The pointer to TAny type data requested - */ - virtual TAny* RequestData( TPeninputDataType aDataType ) = 0; - - /** - * Set data for data provider - * - * @since S60 v3.2 - * @param aDataType The data type to set value - * @param aData The pointer to TAny type data - * @return None - */ - virtual void SetData( TPeninputDataType aDataType, TAny* aData ) = 0; - - /** - * Save key into CenRep(AknFep) - * - * @since S60 v3.2 - * @param aKey The key name - * @param aValue The new value - * @return None - */ - virtual void SaveKey( TInt aKey, TInt aValue ) = 0; - - /** - * Get the layout type, vkb or hwr. - * - * @since S60 v3.2 - * @return The layout type - */ - virtual TInt LayoutType() = 0; - - }; - -#endif // End of M_PENINPUTLAYOUTCONTEXT_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputlayoutwindow.h --- a/textinput/peninputcommonlayout/inc/peninputlayoutwindow.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,675 +0,0 @@ -/* -* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: common layout window class -* -*/ - - -#ifndef C_CPENINPUTLAYOUTWINDOW_H -#define C_CPENINPUTLAYOUTWINDOW_H - -// System includes -#include - -// User includes -#include "peninputctrlpool.h" -#include "peninputlayoutconfig.h" -#include "peninputcommonlayoutglobalenum.h" - -// Forward declarations -class CFepUiLayout; -class CFepInputContextField; -class CAknFepCtrlEventButton; -class MPeninputLayoutContext; -class CPeninputLayoutConfig; -class CPeninputNumericKepMappingMgr; -class CFepLayoutMultiLineIcf; -class CAknFepCtrlRepeatButton; - -/** - * Common pen input layout window class. - * This class define the common behaviors of VKB layout window and - * HWR layout window. - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputLayoutWindow : public CAknFepCtrlBaseWindow - { - -public: - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputLayoutWindow(); - - /** - * Get layout config - * - * @since S60 v3.2 - * @return The pointer to CPeninputLayoutConfig object - */ - IMPORT_C CPeninputLayoutConfig* ConfigInfo() const; - - /** - * Change input language - * - * @since S60 v3.2 - * @param aLangID The new language id - * @return None - */ - IMPORT_C void ChangeInputLanguageL( TInt aLangID ); - - /** - * Change range - * - * @since S60 v3.2 - * @param aRange The destination range - * @return None - */ - IMPORT_C void ChangeRange( TInt aRange, TInt aVkbLayoutId = 0, TBool aNotify = ETrue ); - - /** - * Set the input context field text - * - * @since S60 v3.2 - * @param aData The data of type TFepInputContextFieldData to be set - * @return None - */ - IMPORT_C void SetEditorTextL( const TFepInputContextFieldData& aData ); - - /** - * Set if the input context field text is secret - * - * @since S60 v3.2 - * @param aData The flag - * @return None - */ - IMPORT_C void SetTextIsSecret( TBool aData ); - - void SetNumberGrouping( TBool aData ); - - /** - * Method for size changing of the window - * - * @since S60 v3.2 - * @param aLandscapeStyle The flag that specify the window style is - * landscape or portrait - * @return None - */ - IMPORT_C virtual void SizeChanged( TBool aLanscapeStyle ); - - /** - * Handle control event - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aCtrl The control who sends the event - * @param aEventData The event data - * @return None - */ - IMPORT_C virtual void HandleControlEvent( TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData ); - - /** - * Change client area layout - * - * @since S60 v3.2 - * @param aClientLayoutId The id of client area layout - * @return None - */ - IMPORT_C void ChangeClientLayout( TInt aClientLayoutId ); - - /** - * Change vkb area layout - * - * @since S60 v3.2 - * @param aVkbLayoutId The id of vkb area layout - * @return None - */ - IMPORT_C void ChangeVkbLayout( TInt aVkbLayoutId ); - - /** - * Get id of window config resource - * - * @since S60 v3.2 - * @return The id of window config resource - */ - virtual TInt GetWindowConfigResId() = 0; - - /** - * Get id of window resource - * - * @since S60 v3.2 - * @return The id of window resource - */ - virtual TInt GetWindowResId() = 0; - - /** - * Get file name of window config resource - * - * @since S60 v3.2 - * @param aLangID The id of language - * @return The file name of window config resource - */ - virtual const TDesC& - GetWindowConfigResFileName( TInt aLangID ) = 0; - - /** - * Get file name of window resource - * - * @since S60 v3.2 - * @return The file name of window resource - */ - virtual const TDesC& GetWindowResFileName() = 0; - - /** - * Change unit size - * - * @since S60 v3.2 - * @return The rect of whole window - */ - virtual const TRect ChangeUnitSize() = 0; - - /** - * Change size of client area - * - * @since S60 v3.2 - * @param aLeftTopPoint The left top point of client area - * @return None - */ - virtual void ChangeClientSize() = 0; - - /** - * Construct all controls specified in resource(implementation will be - * postponed in subclass) - * - * @since S60 v3.2 - * @return None - */ - virtual void CreateAllControlsL() = 0; - - /** - * Set control fonts. Fonts info comes from resource - * - * @since S60 v3.2 - * @return None - */ - virtual void SetControlsFont() = 0; - - /** - * Pop up choice list - * - * @since S60 v3.2 - * @return None - */ - virtual void PopupChoiceList() = 0; - - /** - * Re-organize all controls in the assigned client area layout - * - * @since S60 v3.2 - * @param aClientLayoutId The id of client area layout - * @return None - */ - virtual void ReorganizeControls( TInt aClientLayoutId, TBool aNeedReset ) = 0; - - /** - * Do when case changed - * - * @since S60 v3.2 - * @param aNewCase The new case - * @return None - */ - virtual void DoCaseChange( TInt aNewCase ) = 0; - - /** - * Handler for range button clicked - * - * @since S60 v3.2 - * @param aRange The range id - * @return None - */ - IMPORT_C virtual void HandleRangeEvent( TInt aRange ); - - /** - * Handler for range loop event - * - * @since S60 v3.2 - * @param aLoop The loop id - * @return None - */ - IMPORT_C virtual void HandleRangeLoopEvent( TInt aLoop ); - - /** - * Handler for shift button clicked - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual void HandleShiftBtnClicked(); - - /** - * Handler for capslock button clicked - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual void HandleCapslockBtnClicked(); - - /** - * Draw window and shadow - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual void Draw(); - - /** - * Set if enable switch to hwr - * - * @since S60 v3.2 - * @param aEnable The enable flag - * @return None - */ - IMPORT_C void SetEnableSwitchToHwr(TBool aEnable); - - /** - * Set if enable option button and language switch button - * - * @since S60 v3.2 - * @param aEnable The enable flag - * @return None - */ - IMPORT_C void SetEnableSettingBtn(TBool aEnable); - - /** - * config unit size, reason may due to client layout id changed, - * or screen resolution changed - * - * @since S60 v3.2 - * @param aClientLayoutId New client layout id - * @return ETrue means unit size changed, otherwise EFalse - */ - IMPORT_C virtual TBool ReconfigUnitSize(TInt aClientLayoutId); - - IMPORT_C void CPeninputLayoutWindow::SetTextAlignmentL( TInt aAlignment ); - -protected: - - /** - * constructor - * - * @since S60 v3.2 - * @param aUiLayout The pointer to CFepUiLayout object - * @param aLayoutContext The pointer to MPeninputLayoutContext - * @return None - */ - IMPORT_C CPeninputLayoutWindow( CFepUiLayout* aUiLayout, - MPeninputLayoutContext* aLayoutContext ); - - /** - * Second-phase constructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructL(); - /** - * From CAknFepCtrlBaseWindow - * Close window - * - * @since S60 v3.2 - * @return The TBool indicating the result of close operation - */ - IMPORT_C TBool DoClose(); - - /** - * Construct from resource file - * - * @since S60 v3.2 - * @param aResReader The resource reader - * @param aResUtils The resource utils - * @return None - */ - IMPORT_C virtual void ConstructFromResourceL( - TResourceReader& aResReader ); - - /** - * ConstructFromResourceL load settings from resource. - * Before calling this function, the resource id should be set - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructFromResourceL(); - - /** - * Add not owned control into the window - * - * @since S60 v3.2 - * @param aControl The control to be added - * @return None - */ - IMPORT_C void AddNotOwnedControl( CFepUiBaseCtrl* aControl ); - - /** - * Change button status - * - * @since S60 v3.2 - * @param aIsDown The button is down or not - * @param aControlId The destination button id - * @return None - */ - - IMPORT_C void ChangeButtonStatus(const TInt aIsDown, const TInt aControlId); - - /** - * Change layout position - * - * @since S60 v3.2 - * @return The new rectangle of layout - */ - IMPORT_C void ChangeLayoutPosition( TInt aJustifyStyle ); - - /** - * Set the window rect - * - * @since S60 v3.2 - * @param aRect The new rect of the window - * @return None - */ - IMPORT_C void SetWindowRect(const TRect& aRect); - - /** - * Read icf bitmap from resource - * - * @since S60 v3.2 - * @param aResReader The reource reader - * @return None - */ - IMPORT_C void ReadIcfInfo( TResourceReader aResReader ); - - /** - * Set text font for language switch button. - * - * @since S60 v3.2 - * @param aSwitchBtn Pointer to language switch button - * @return None - */ - IMPORT_C void SetSwitchBtnFont(CAknFepCtrlEventButton& aSwitchBtn); - - /** - * Set text color for language switch button. - * - * @since S60 v3.2 - * @param aSwitchBtn Pointer to language switch button - * @return None - */ - IMPORT_C void SetSwitchBtnTextColor(CAknFepCtrlEventButton& aSwitchBtn); - - - IMPORT_C virtual TBool IsMultiLineIcf(); - - IMPORT_C virtual TBool IsCanChangeRange(TInt aRange); - - IMPORT_C virtual void ChangeToPreviousRange(TInt aRange); - -private: - /** - * Read shadow bitmap from resource - * - * @since S60 v3.2 - * @param aResReader The reource reader - * @return None - */ - void ReadShadowInfoL( TResourceReader aResReader ); - - /** - * Read background bitmap from resource - * - * @since S60 v3.2 - * @param aResId resource ID - * @return None - */ - void CPeninputLayoutWindow::ReadBackgroundInfoL( TInt aResId ); - - /** - * Read laf of shadow - * - * @since S60 v3.2 - * @param aRect the parent window - * @return None - */ - void ReadLafForShadow(); - - /** - * Add context field into the window - * - * @since S60 v3.2 - * @return None - */ - void AddContextFieldL(); - - /** - * Add touch input button into the window - * - * @since S60 v3.2 - * @param aResID The reource id for touch input button - * @return None - */ - void AddTouchInputButtonL( TInt aResId ); - - - /** - * Check whether or not the resource file exists - * - * @since S60 v3.2 - * @param aFileName The name of resource file - * @return The TBool indicating existance of resource file - */ - TBool CheckResourceExist( const TDesC& aFileName ); - - /** - * Get case decided by shift&caps status - * - * @since S60 v3.2 - * @return The case value - */ - TInt CaseByShiftCapslockStatus(); - - /** - * Dim keys - * - * @since S60 v3.2 - * @return None - */ - void DimKeys(); - - /** - * Change size for base window, such as move button,drag button etc. - * - * @since S60 v3.2 - * @return None - */ - void SizeChangedForBaseWindow( TInt aTotalColumns ); - - /** - * Change range bar - * - * @since S60 v3.2 - * @return None - */ - void ChangeRangeBarL(); - - /** - * Change window position - * - * @since S60 v3.2 - * @return None. - */ - void TopLeftJustify(); - - /** - * Change window position - * - * @since S60 v3.2 - * @return None. - */ - void BottomRightJustify(); - - /** - * Change window position - * - * @since S60 v3.2 - * @return None. - */ - void DataQueryJustify(); - - /** - * Get key mapping string from resource or user defined mappings - * - * @since S60 v3.2 - * @param aKeyMapping The key mapping enum - * @return None. - */ - HBufC* GetKeyMappingStringL(TInt aKeyMapping); - - void ReadMultiLineIcfInforL(TInt aResID = 0); - - void AddMultiContextFieldL(); - -protected: // data - - /** - * The input context field - * Own - */ - CFepInputContextField* iInputContextField; - - - CFepLayoutMultiLineIcf* iMultiLineIcf; - - /** - * The touch input options button - * Own - */ - CAknFepCtrlEventButton* iTouchInputOptionButton; - - /** - * Control pool maintainer - * Own - */ - CPeninputCtrlPool* iCtrlPool; - - /** - * The layout config - * Own - */ - CPeninputLayoutConfig* iConfigInfo; - - /** - * The layout context - * Not own - */ - MPeninputLayoutContext* iLayoutContext; - - /** - * The numeric kep mapping manager - * Own - */ - CPeninputNumericKepMappingMgr* iKeyMappingMgr; - - /** - * Vkb layout - * Own - */ - CAknFepCtrlVkbLayout* iVkbLayout; - - /** - * Language is changed - */ - TBool iLangOrSizeChanged; - - /** - * The total column for the window - */ - TInt iLastUsedTotalColumns; - - /** - * The resource id of window - */ - TInt iWinResId; - - /** - * The resource id of config - */ - TInt iConfigResId; - - /** - * Width of top left shadow rect - */ - TInt iShadowTlWidth; - - /** - * Height of top left shadow rect - */ - TInt iShadowTlHeight; - - /** - * Width of bottom right shadow rect - */ - TInt iShadowBrWidth; - - /** - * Height of bottom right shadow rect - */ - TInt iShadowBrHeight; - - /** - * First time construct flag - */ - TBool iFirstTimeConstruct; - - /** - * Switch button font id - */ - TInt32 iSwitchFont; - - /** - * Switch button shadow font id - */ - TInt32 iSwitchShadowFont; - - /** - * Indicate whether switch(shadow) font has been set - */ - TBool iSwitchFontSet; - - /** - * Indicate whether need size change when change unit size - */ - TBool iUnitSizeChange; - /** - * The backspace button - * Own - */ - CAknFepCtrlRepeatButton* iBackspaceButton; - }; -#endif // C_CPENINPUTLAYOUTWINDOW_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputlayoutwindowext.h --- a/textinput/peninputcommonlayout/inc/peninputlayoutwindowext.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,662 +0,0 @@ -/* -* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: common layout window class -* -*/ - - -#ifndef C_CPENINPUTLAYOUTWINDOWEXT_H -#define C_CPENINPUTLAYOUTWINDOWEXT_H - -// System includes -#include - -// User includes -#include "peninputctrlpool.h" -#include "peninputlayoutconfig.h" -#include "peninputcommonlayoutglobalenum.h" - -// Forward declarations -class CFepUiLayout; -class CFepInputContextField; -class CAknFepCtrlEventButton; -class MPeninputLayoutContext; -class CPeninputLayoutConfig; -class CPeninputNumericKepMappingMgr; - -/** - * Common pen input layout window class. - * This class define the common behaviors of VKB layout window and - * HWR layout window. - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputLayoutWindowExt : public CAknFepCtrlBaseWindowExt - { - -public: - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputLayoutWindowExt(); - - /** - * Get layout config - * - * @since S60 v3.2 - * @return The pointer to CPeninputLayoutConfig object - */ - IMPORT_C CPeninputLayoutConfig* ConfigInfo() const; - - /** - * Change input language - * - * @since S60 v3.2 - * @param aLangID The new language id - * @return None - */ - IMPORT_C void ChangeInputLanguageL( TInt aLangID ); - - /** - * Change range - * - * @since S60 v3.2 - * @param aRange The destination range - * @return None - */ - IMPORT_C void ChangeRange( TInt aRange, TInt aVkbLayoutId = 0, TBool aNotify = ETrue ); - - /** - * Set the input context field text - * - * @since S60 v3.2 - * @param aData The data of type TFepInputContextFieldData to be set - * @return None - */ - IMPORT_C void SetEditorTextL( const TFepInputContextFieldData& aData ); - - /** - * Set if the input context field text is secret - * - * @since S60 v3.2 - * @param aData The flag - * @return None - */ - IMPORT_C void SetTextIsSecret( TBool aData ); - - void SetNumberGrouping(TBool aData); - - /** - * Method for size changing of the window - * - * @since S60 v3.2 - * @param aLandscapeStyle The flag that specify the window style is - * landscape or portrait - * @return None - */ - IMPORT_C virtual void SizeChanged( TBool aLanscapeStyle ); - - /** - * Handle control event - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aCtrl The control who sends the event - * @param aEventData The event data - * @return None - */ - IMPORT_C virtual void HandleControlEvent( TInt aEventType, - CFepUiBaseCtrl* aCtrl, - const TDesC& aEventData ); - - /** - * Change client area layout - * - * @since S60 v3.2 - * @param aClientLayoutId The id of client area layout - * @return None - */ - IMPORT_C void ChangeClientLayout( TInt aClientLayoutId ); - - /** - * Change vkb area layout - * - * @since S60 v3.2 - * @param aVkbLayoutId The id of vkb area layout - * @return None - */ - IMPORT_C void ChangeVkbLayout( TInt aVkbLayoutId ); - - /** - * Get id of window config resource - * - * @since S60 v3.2 - * @return The id of window config resource - */ - virtual TInt GetWindowConfigResId() = 0; - - /** - * Get id of window resource - * - * @since S60 v3.2 - * @return The id of window resource - */ - virtual TInt GetWindowResId() = 0; - - /** - * Get file name of window config resource - * - * @since S60 v3.2 - * @param aLangID The id of language - * @return The file name of window config resource - */ - virtual const TDesC& - GetWindowConfigResFileName( TInt aLangID ) = 0; - - /** - * Get file name of window resource - * - * @since S60 v3.2 - * @return The file name of window resource - */ - virtual const TDesC& GetWindowResFileName() = 0; - - /** - * Change unit size - * - * @since S60 v3.2 - * @return The rect of whole window - */ - virtual const TRect ChangeUnitSize() = 0; - - /** - * Change size of client area - * - * @since S60 v3.2 - * @param aLeftTopPoint The left top point of client area - * @return None - */ - virtual void ChangeClientSize() = 0; - - /** - * Construct all controls specified in resource(implementation will be - * postponed in subclass) - * - * @since S60 v3.2 - * @return None - */ - virtual void CreateAllControlsL() = 0; - - /** - * Set control fonts. Fonts info comes from resource - * - * @since S60 v3.2 - * @return None - */ - virtual void SetControlsFont() = 0; - - /** - * Pop up choice list - * - * @since S60 v3.2 - * @return None - */ - virtual void PopupChoiceList() = 0; - - /** - * Re-organize all controls in the assigned client area layout - * - * @since S60 v3.2 - * @param aClientLayoutId The id of client area layout - * @return None - */ - virtual void ReorganizeControls( TInt aClientLayoutId, TBool aNeedReset ) = 0; - - /** - * Do when case changed - * - * @since S60 v3.2 - * @param aNewCase The new case - * @return None - */ - virtual void DoCaseChange( TInt aNewCase ) = 0; - IMPORT_C virtual void OnInputLanguageChange(); - - /** - * Handler for range button clicked - * - * @since S60 v3.2 - * @param aRange The range id - * @return None - */ - IMPORT_C virtual void HandleRangeEvent( TInt aRange ); - - /** - * Handler for range loop event - * - * @since S60 v3.2 - * @param aLoop The loop id - * @return None - */ - IMPORT_C virtual void HandleRangeLoopEvent( TInt aLoop ); - - /** - * Handler for shift and capslock merged button clicked - * - * @since S60 v3.2 - * @param aMode The mode of the mutimode button - * @return None - */ - IMPORT_C virtual void HandleMergedBtnClicked( TInt aCase ); - - /** - * Handler for shift button clicked - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual void HandleShiftBtnClicked(); - - /** - * Handler for capslock button clicked - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual void HandleCapslockBtnClicked(); - - /** - * Handler for shif and capslock button clicked - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual void HandleShiftAndCapslockBtnClicked(); - - /** - * Draw window and shadow - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual void Draw(); - - /** - * Set if enable switch to hwr - * - * @since S60 v3.2 - * @param aEnable The enable flag - * @return None - */ - IMPORT_C void SetEnableSwitchToHwr(TBool aEnable); - - /** - * Set if enable option button and language switch button - * - * @since S60 v3.2 - * @param aEnable The enable flag - * @return None - */ - IMPORT_C void SetEnableSettingBtn(TBool aEnable); - - /** - * config unit size, reason may due to client layout id changed, - * or screen resolution changed - * - * @since S60 v3.2 - * @param aClientLayoutId New client layout id - * @return ETrue means unit size changed, otherwise EFalse - */ - IMPORT_C virtual TBool ReconfigUnitSize(TInt aClientLayoutId); - - /** - * Get numeric keymapping resource id - * - * @since S60 v3.2 - * @return The id of numeric keymapping - */ - virtual TInt GetNumKeymappingResId() = 0; - - IMPORT_C void CPeninputLayoutWindowExt::SetTextAlignmentL( TInt aAlignment ); - -protected: - - /** - * constructor - * - * @since S60 v3.2 - * @param aUiLayout The pointer to CFepUiLayout object - * @param aLayoutContext The pointer to MPeninputLayoutContext - * @return None - */ - IMPORT_C CPeninputLayoutWindowExt( CFepUiLayout* aUiLayout, - MPeninputLayoutContext* aLayoutContext ); - - /** - * Second-phase constructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void ConstructL(); - /** - * From CAknFepCtrlBaseWindow - * Close window - * - * @since S60 v3.2 - * @return The TBool indicating the result of close operation - */ - IMPORT_C TBool DoClose(); - - /** - * Construct from resource file - * - * @since S60 v3.2 - * @param aResReader The resource reader - * @param aResUtils The resource utils - * @return None - */ - //IMPORT_C virtual void ConstructFromResourceL( - //TResourceReader& aResReader ); - - /** - * ConstructFromResourceL load settings from resource. - * Before calling this function, the resource id should be set - * - * @since S60 v3.2 - * @return None - */ - //IMPORT_C void ConstructFromResourceL(); - - /** - * Add not owned control into the window - * - * @since S60 v3.2 - * @param aControl The control to be added - * @return None - */ - IMPORT_C void AddNotOwnedControl( CFepUiBaseCtrl* aControl ); - - /** - * Change button status - * - * @since S60 v3.2 - * @param aIsDown The button is down or not - * @param aControlId The destination button id - * @return None - */ - - IMPORT_C void ChangeButtonStatus(const TInt aIsDown, const TInt aControlId); - - /** - * Change Merged shift and capslock button status - * - * @since S60 v3.2 - * @param aIsShiftCase when shift case - * @param aIsCapslockCase when capslock case - * @return None - */ - - IMPORT_C void ChangeMergedButtonStatus( const TInt aIsShiftCase, - const TInt aIsCapslockCase ); - - /** - * Change layout position - * - * @since S60 v3.2 - * @return The new rectangle of layout - */ - IMPORT_C void ChangeLayoutPosition( TInt aJustifyStyle ); - - /** - * Set the window rect - * - * @since S60 v3.2 - * @param aRect The new rect of the window - * @return None - */ - IMPORT_C void SetWindowRect(const TRect& aRect); - - /** - * Read icf bitmap from resource - * - * @since S60 v3.2 - * @param aResReader The reource reader - * @return None - */ - //IMPORT_C void ReadIcfInfo( TResourceReader aResReader ); - - /** - * Set text font for language switch button. - * - * @since S60 v3.2 - * @param aSwitchBtn Pointer to language switch button - * @return None - */ - IMPORT_C void SetSwitchBtnFont(CAknFepCtrlEventButton& aSwitchBtn); - - /** - * Set text color for language switch button. - * - * @since S60 v3.2 - * @param aSwitchBtn Pointer to language switch button - * @return None - */ - IMPORT_C void SetSwitchBtnTextColor(CAknFepCtrlEventButton& aSwitchBtn); - - - /** - * Change size for base window, such as move button,drag button etc. - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual void SizeChangedForBaseWindow( TInt aTotalColumns ); - - IMPORT_C virtual void SetLafLayOut(TInt aRows, TInt aColumns); - - IMPORT_C virtual void SetVkbLayoutSize(); - - virtual TBool CreateCustomControlL( TInt16 aControlId, TInt32 aImageId ); - - virtual void AddCustomControlGroupL(CFepUiBaseCtrl* aCtrl); - -private: - - /** - * Read laf of shadow - * - * @since S60 v3.2 - * @param aRect the parent window - * @return None - */ - void ReadLafForShadow(); - - /** - * Check whether or not the resource file exists - * - * @since S60 v3.2 - * @param aFileName The name of resource file - * @return The TBool indicating existance of resource file - */ - TBool CheckResourceExist( const TDesC& aFileName ); - - /** - * Get case decided by shift&caps status - * - * @since S60 v3.2 - * @return The case value - */ - TInt CaseByShiftCapslockStatus(); - - /** - * Dim keys - * - * @since S60 v3.2 - * @return None - */ - void DimKeys(); - void DimKeysL(); - - /** - * Change range bar - * - * @since S60 v3.2 - * @return None - */ - void ChangeRangeBarL(); - - /** - * Change window position - * - * @since S60 v3.2 - * @return None. - */ - void TopLeftJustify(); - - /** - * Change window position - * - * @since S60 v3.2 - * @return None. - */ - void BottomRightJustify(); - - /** - * Change window position - * - * @since S60 v3.2 - * @return None. - */ - void DataQueryJustify(); - - /** - * Get key mapping string from resource or user defined mappings - * - * @since S60 v3.2 - * @param aKeyMapping The key mapping enum - * @return None. - */ - HBufC* GetKeyMappingStringL( TInt aKeyMapping, const TInt aLang ); - - void ResetLastColRow(); -protected: // data - - /** - * The layout config - * Own - */ - CPeninputLayoutConfig* iConfigInfo; - - /** - * The layout context - * Not own - */ - MPeninputLayoutContext* iLayoutContext; - - /** - * The numeric kep mapping manager - * Own - */ - CPeninputNumericKepMappingMgr* iKeyMappingMgr; - - /** - * Vkb layout - * Own - */ - CAknFepCtrlVkbLayout* iVkbLayout; - - /** - * Language is changed - */ - TBool iLangOrSizeChanged; - - /** - * The total column for the window - */ - TInt iLastUsedTotalColumns; - - TInt iLastUsedTotalRows; - - /** - * The resource id of window - */ - TInt iWinResId; - - /** - * The resource id of config - */ - TInt iConfigResId; - - /** - * Width of top left shadow rect - */ - TInt iShadowTlWidth; - - /** - * Height of top left shadow rect - */ - TInt iShadowTlHeight; - - /** - * Width of bottom right shadow rect - */ - TInt iShadowBrWidth; - - /** - * Height of bottom right shadow rect - */ - TInt iShadowBrHeight; - - /** - * First time construct flag - */ - TBool iFirstTimeConstruct; - - /** - * Switch button font id - */ - TInt32 iSwitchFont; - - /** - * Switch button shadow font id - */ - TInt32 iSwitchShadowFont; - - /** - * Indicate whether switch(shadow) font has been set - */ - TBool iSwitchFontSet; - - /** - * Indicate whether need size change when change unit size - */ - TBool iUnitSizeChange; - - /** - * Tone mark set for Viet - */ - HBufC* iToneSet; - - /** - * Vowel char flag for Viet - */ - TBool iVowelChar; - }; -#endif // C_CPeninputLayoutWindowExt_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputnumerickeymappingmgr.h --- a/textinput/peninputcommonlayout/inc/peninputnumerickeymappingmgr.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: vkb number keymapping manager header file -* -*/ - - -#ifndef C_CPENINPUTNUMERICKEYMAPPINGMGR_H -#define C_CPENINPUTNUMERICKEYMAPPINGMGR_H - -// System includes -#include -#include - -/** - * vkb number keymapping manager class - * - * This class is to manage number keymapping. When this class contructs, keymapping - * manager loads all mapping number key string from resource file. User can get - * mapping key string according to keymapping id and delete all internal value when - * destructing or calling reset. - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputNumericKepMappingMgr : public CBase - { - -public: - - /** - * Two-phased constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputNumericKepMappingMgr object - */ - IMPORT_C static CPeninputNumericKepMappingMgr* NewL( - TResourceReader aReader ); - - /** - * Two-phased constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputNumericKepMappingMgr object - */ - IMPORT_C static CPeninputNumericKepMappingMgr* NewLC( - TResourceReader aReader ); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputNumericKepMappingMgr(); - - /** - * Remove all keymapping ids and strings in array - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Reset(); - - /** - * Get count of items in keymapping id array - * - * @since S60 v3.2 - * @return The count of items in keymapping id array - */ - IMPORT_C TInt Count() const; - - /** - * Get keymapping string by keymapping id - * - * @since S60 v3.2 - * @param aKeyMappingId Keymapping id - * @return The pointer to HBufC data containing keymapping string - */ - IMPORT_C HBufC* KeyMappingStringL( const TInt aKeyMappingId ) const; - - /** - * Get Arabic keymapping string by keymapping id - * - * @since S60 v3.2 - * @param aKeyMappingId Keymapping id - * @return The pointer to HBufC data containing Arabic keymapping string - */ - IMPORT_C HBufC* KeyMappingStringL( const TInt aKeyMappingID, - const TInt aLang ) const; - -protected: - - /** - * Symbian second-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructL( TResourceReader aReader ); - -private: // Data - - /** - * Keymapping id array - */ - RArray iKeyMappingIdList; - - /** - * Keymapping string array - */ - RPointerArray iKeyMappingStringList; - - }; - -#endif // C_CPENINPUTNUMERICKEYMAPPINGMGR_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputrangebarinfo.h --- a/textinput/peninputcommonlayout/inc/peninputrangebarinfo.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,242 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: range bar layout implementation -* -*/ - - -#ifndef C_CPENINPUTRANGEBARINFO_H -#define C_CPENINPUTRANGEBARINFO_H - -// System includes -#include -#include -#include - -// User includes -#include "peninputcommonlayoutglobalenum.h" - -/** - * Peninput range bar definition - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputRangeInfo : public CBase - { - -public: - /** - * Two-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputRangeInfo object - */ - IMPORT_C static CPeninputRangeInfo* NewL( TResourceReader& aReader ); - - /** - * Two-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputRangeInfo object - */ - IMPORT_C static CPeninputRangeInfo* NewLC( TResourceReader& aReader ); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputRangeInfo(); - - /** - * Get range id - * - * @since S60 v3.2 - * @return Range id - */ - inline TInt RangeId(); - - - /** - * Get response style - * - * @since S60 v3.2 - * @return Response style - */ - inline TPeninputRangeResponseStyle ResponseStyle(); - - /** - * Get client layout id - * - * @since S60 v3.2 - * @return Client layout id - */ - inline TInt ClientLayoutId(); - - /** - * Get vkb layout id - * - * @since S60 v3.2 - * @return Vkb layout id - */ - inline TInt VkbLayoutId(); - - -protected: - - /** - * Second phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructL( TResourceReader& aReader ); - - /** - * Construct from resource - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructFromResourceL( TResourceReader& aReader ); - -private: // data - - /** - * Range id - */ - TInt iRangeId; - - /** - * Response style - */ - TPeninputRangeResponseStyle iResponseStyle; - - /** - * Client layout id - */ - TInt iClientLayoutId; - - /** - * Vkb layout id - */ - TInt iVkbLayoutId; - - }; - -/** - * Peninput range bar definition - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputRangeBarInfo : public CBase - { - -public: - - /** - * Two-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputRangeBarInfo object - */ - IMPORT_C static CPeninputRangeBarInfo* NewL( TResourceReader& aReader ); - - /** - * Two-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputRangeBarInfo object - */ - IMPORT_C static CPeninputRangeBarInfo* NewLC( TResourceReader& aReader ); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputRangeBarInfo(); - - /** - * Get range style - * - * @since S60 v3.2 - * @return Range style - */ - inline TInt RangeStyle(); - - /** - * Get range info by range id - * - * @since S60 v3.2 - * @param aRangeId Range id - * @return The pointer to CPeninputRangeInfo object - */ - IMPORT_C CPeninputRangeInfo* FindRange( TInt aRangeId ); - - /** - * Get reference of pointer array of ranges - * - * @since S60 v3.2 - * @return The reference of pointer array of ranges - */ - inline RPointerArray& Ranges(); - -protected: - - /** - * Second phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructL( TResourceReader& aReader ); - - /** - * Construct from resource - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructFromResourceL( TResourceReader& aReader ); - -private: // data - - /** - * Range bar style - */ - TInt iRangeStyle; - - /** - * Array of ranges on rangebar - */ - RPointerArray iRanges; - - }; - -#include "peninputrangebarinfo.inl" - -#endif // C_CPENINPUTRANGEBARINFO_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputrangebarinfo.inl --- a/textinput/peninputcommonlayout/inc/peninputrangebarinfo.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: range bar layout inline function -* -*/ - - -// ----------------------------------------------------------------------------- -// CPeninputRangeInfo::RangeId -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputRangeInfo::RangeId() - { - return iRangeId; - } - -// ----------------------------------------------------------------------------- -// CPeninputRangeInfo::ResponseStyle -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TPeninputRangeResponseStyle CPeninputRangeInfo::ResponseStyle() - { - return iResponseStyle; - } - -// ----------------------------------------------------------------------------- -// CPeninputRangeInfo::ClientLayoutId -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputRangeInfo::ClientLayoutId() - { - return iClientLayoutId; - } - -// ----------------------------------------------------------------------------- -// CPeninputRangeInfo::VkbLayoutId -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputRangeInfo::VkbLayoutId() - { - return iVkbLayoutId; - } - -// ----------------------------------------------------------------------------- -// CPeninputRangeBarInfo::RangeStyle -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputRangeBarInfo::RangeStyle() - { - return iRangeStyle; - } - - -// ----------------------------------------------------------------------------- -// CPeninputRangeBarInfo::Ranges -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline RPointerArray& CPeninputRangeBarInfo::Ranges() - { - return iRanges; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputshiftcapsInfo.h --- a/textinput/peninputcommonlayout/inc/peninputshiftcapsInfo.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: shift and capslock information -* -*/ - - -#ifndef C_CPENINPUTSHIFTCAPSINFO_H -#define C_CPENINPUTSHIFTCAPSINFO_H - -// System includes -#include -#include -#include - -/** - * Peninput shift and capslock info definition - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputShiftCapsInfo : public CBase - { - -public: - - /** - * shift&caps single info - */ - struct TPeninputShiftCapsSingle - { - TInt iId; - TInt iVkbLayoutId; - TInt iCaseUsed; - }; - - /** - * Two-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputShiftCapsInfo object - */ - IMPORT_C static CPeninputShiftCapsInfo* NewL( TResourceReader& aReader ); - - /** - * Two-phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return The pointer to CPeninputShiftCapsInfo object - */ - IMPORT_C static CPeninputShiftCapsInfo* NewLC( TResourceReader& aReader ); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputShiftCapsInfo(); - - /** - * Get shift caps single info by id - * - * @since S60 v3.2 - * @param aId Shift caps id - * @return The pointer to TPeninputShiftCapsSingle object - */ - IMPORT_C TPeninputShiftCapsSingle* FindShiftCapsSingleById( TInt aId ); - - /** - * Get shift caps single info by case - * - * @since S60 v3.2 - * @param aCase Range id - * @return The pointer to TPeninputShiftCapsSingle object - */ - IMPORT_C TPeninputShiftCapsSingle* FindShiftCapsSingleByCase( TInt aCase ); - - /** - * Get range id - * - * @since S60 v3.2 - * @return Range id - */ - inline TInt RangeId(); - - /** - * Get array of shift caps single info - * - * @since S60 v3.2 - * @return The reference of pointer array of shift - * caps single info - */ - inline RPointerArray& ShiftCapsSingleList(); - -protected: - - /** - * Second phase constructor - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructL( TResourceReader& aReader ); - - /** - * Construct from resource - * - * @since S60 v3.2 - * @param aReader Resource reader - * @return None - */ - void ConstructFromResourceL( TResourceReader& aReader ); - -private: // Data - - /** - * Range id - */ - TInt iRangeId; - - /** - * Array of shift caps single info - */ - RPointerArray iShiftCapsSingleList; - - }; - -#include "peninputshiftcapsinfo.inl" - -#endif // C_CPENINPUTSHIFTCAPSINFO_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputshiftcapsinfo.inl --- a/textinput/peninputcommonlayout/inc/peninputshiftcapsinfo.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: shift caps info inline function -* -*/ - - -// ----------------------------------------------------------------------------- -// CPeninputShiftCapsInfo::RangeId -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline TInt CPeninputShiftCapsInfo::RangeId() - { - return iRangeId; - } - -// ----------------------------------------------------------------------------- -// CPeninputShiftCapsInfo::ShiftCapsSingleList -// (other items were commented in a header) -// ----------------------------------------------------------------------------- -// -inline RPointerArray& - CPeninputShiftCapsInfo::ShiftCapsSingleList() - { - return iShiftCapsSingleList; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputuistatebase.h --- a/textinput/peninputcommonlayout/inc/peninputuistatebase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Interface of ui state -* -*/ - - -#ifndef C_CPENINPUTUISTATEBASE_H -#define C_CPENINPUTUISTATEBASE_H - -// System includes -#include -#include -#include - -// Forward declarations -class MPeninputUiStateMgr; -class MPeninputLayoutContext; - -/** - * Basic class of ui state - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputUiStateBase : public CBase - { - -public: - - /** - * Two-phased constructor - * - * @since S60 v3.2 - * @param aUiStateMgr The ui state manager - * @param aContext The layout context - * @return The pointer to CPeninputUiStateBase object - */ - IMPORT_C static CPeninputUiStateBase* NewL( - MPeninputUiStateMgr* aUiStateMgr, - MPeninputLayoutContext* aContext ); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputUiStateBase(); - - /** - * Handle key event - * - * @since S60 v3.2 - * @param aData Carry information of key pressed - * @return ETrue means event was consumed, otherwise EFalse - */ - IMPORT_C virtual TBool HandleKeyEventL( const TRawEvent& aData ); - - /** - * Handle control event - * - * @since S60 v3.2 - * @param aEventType The event type - * @param aEventData The event data - * @return ETrue means event was consumed, otherwise EFalse - */ - IMPORT_C virtual TBool HandleControlEvent( TInt aEventType, - const TDesC& aEventData ); - -protected: - - /** - * Constructor - * - * @since S60 v3.2 - * @param aUiStateMgr The ui state manager - * @param aContext The layout context - * @return None - */ - IMPORT_C CPeninputUiStateBase( MPeninputUiStateMgr* aUiStateMgr, - MPeninputLayoutContext* aContext ); - - /** - * Symbian second-phase constructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C void Construct(); - - /** - * Send key event through layout context - * - * @since S60 v3.2 - * @param aEventData Event data, the left most is unicode - * @return ETrue if key event was consumed, otherwise EFalse - */ - IMPORT_C TBool SendKey( const TDesC& aEventData ); - -protected: - - /** - * Ui state manager - * Not own - */ - MPeninputUiStateMgr* iUiStateMgr; - - /** - * Layout context - * Not own - */ - MPeninputLayoutContext* iContext; - - }; - -#endif // C_CPENINPUTUISTATEBASE_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputuistatemgr.h --- a/textinput/peninputcommonlayout/inc/peninputuistatemgr.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,172 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Interface of ui state manager -* -*/ - - -#ifndef C_CPENINPUTUISTATEMGR_H -#define C_CPENINPUTUISTATEMGR_H - -// System includes -#include -#include - -// User includes -#include "peninputuistatemgrinterface.h" - -// Forward declarations -class CPeninputUiStateBase; -class MPeninputLayoutContext; - -/** - * The ui state manager - * It provides get method of all ui state and current ui state - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class CPeninputUiStateMgr : public CBase, - public MPeninputUiStateMgr - { - -public: - - /** - * Two-phased constructor - * - * @since S60 v3.2 - * @param aContext The layout context - * @return The pointer to CPeninputUiStateMgr object - */ - IMPORT_C static CPeninputUiStateMgr* NewL( - MPeninputLayoutContext* aContext ); - - /** - * Two-phased constructor - * - * @since S60 v3.2 - * @param aContext The layout context - * @return The pointer to CPeninputUiStateMgr object - */ - IMPORT_C static CPeninputUiStateMgr* NewLC( - MPeninputLayoutContext* aContext ); - - /** - * Destructor - * - * @since S60 v3.2 - * @return None - */ - IMPORT_C virtual ~CPeninputUiStateMgr(); - -// from base class MPeninputUiStateMgr - - /** - * From MPeninputUiStateMgr - * Get current ui state - * - * @since S60 v3.2 - * @return The pointer to CPeninputUiStateBase object - */ - IMPORT_C CPeninputUiStateBase* CurrentUiState(); - - /** - * From MPeninputUiStateMgr - * Get ui state object according to the input state type - * - * @since S60 v3.2 - * @param aUiStateType The type of ui state - * @return The pointer to CPeninputUiStateBase object - */ - IMPORT_C CPeninputUiStateBase* GetUiState( TInt aUiStateType ); - - /** - * From MPeninputUiStateMgr - * Set current ui state by state object - * - * @since S60 v3.2 - * @param aUiState The state to be set as current ui state - * @return None - */ - IMPORT_C void SetCurrentUiState( CPeninputUiStateBase* aUiState ); - - /** - * From MPeninputUiStateMgr - * Set current ui state by state type - * - * @since S60 v3.2 - * @param aUiStateType The type of ui state - * @return None - */ - IMPORT_C void SetCurrentUiState( TInt aUiStateType ); - - /** - * From MPeninputUiStateMgr - * Add ui state to list - * - * @since S60 v3.2 - * @param aUiState The ui state object to be added to list - * @param aUiStateType The ui state type to be added to list - * @return None - */ - IMPORT_C void AddUiState( CPeninputUiStateBase* aUiState, - TInt aUiStateType ); - -protected: //method - - /** - * Symbian second phase constructor - * - * @since S60 v3.2 - * @return None - */ - virtual void Construct(); - - /** - * Constructor - * - * @since S60 v3.2 - * @param aContext The layout context - * @return None - */ - CPeninputUiStateMgr( MPeninputLayoutContext* aContext ); - -private: // Data - - /** - * The pointer points to current ui state - * Own - */ - CPeninputUiStateBase* iCurrentState; - - /** - * The pointer points to layout context - * Not own - */ - MPeninputLayoutContext* iContext; - - /** - * Ui state list - */ - RPointerArray iUiStateList; - - /** - * Ui type list - */ - RArray iUiStateTypeList; - - }; - -#endif // C_CPENINPUTUISTATEMGR_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/inc/peninputuistatemgrinterface.h --- a/textinput/peninputcommonlayout/inc/peninputuistatemgrinterface.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Interface of ui state manager -* -*/ - - -#ifndef M_MPENINPUTUISTATEMGR_H -#define M_MPENINPUTUISTATEMGR_H - -// Forward declarations -class CPeninputUiStateBase; - -/** - * The ui state manager interfaces - * It provides intefaces to access ui state manager - * - * @lib peninputcommonlayout.lib - * @since S60 v3.2 - */ -class MPeninputUiStateMgr - { - -public: - - /** - * Get current ui state - * - * @since S60 v3.2 - * @return The pointer to CPeninputUiStateBase object - */ - virtual CPeninputUiStateBase* CurrentUiState() = 0; - - /** - * Get ui state object according to the ui state type - * - * @since S60 v3.2 - * @param aUiStateType The type of ui state - * @return The pointer to CPeninputUiStateBase object - */ - virtual CPeninputUiStateBase* GetUiState( TInt aUiStateType ) = 0; - - /** - * Set current ui state by state object - * - * @since S60 v3.2 - * @param aUiState The state to be set as current ui state - * @return None - */ - virtual void SetCurrentUiState( CPeninputUiStateBase* aUiState ) = 0; - - /** - * Set current ui state by state type - * - * @since S60 v3.2 - * @param aUiStateType The type of ui state - * @return None - */ - virtual void SetCurrentUiState( TInt aUiStateType ) = 0; - - /** - * Add ui state to list - * - * @since S60 v3.2 - * @param aUiState The ui state object to be added to list - * @param aUiStateType The ui state type to be added to list - * @return None - */ - virtual void AddUiState( CPeninputUiStateBase* aUiState, - TInt aUiStateType ) = 0; - - }; - -#endif // M_MPENINPUTUISTATEMGR_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/rom/peninputcommonlayout.iby --- a/textinput/peninputcommonlayout/rom/peninputcommonlayout.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* -* Copyright (c) 2002 - 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Image description file for project peninputcommonlayout -* -*/ - - -#ifndef PENINPUTCOMMONLAYOUT_IBY -#define PENINPUTCOMMONLAYOUT_IBY - -#include -#include - -#ifdef __PEN_SUPPORT -#ifdef RD_SCALABLE_UI_V2 - -file=ABI_DIR\BUILD_DIR\peninputcommonlayout.dll SHARED_LIB_DIR\peninputcommonlayout.dll - -#endif // RD_SCALABLE_UI_V2 -#endif // __PEN_SUPPORT - -#endif // PENINPUTCOMMONLAYOUT_IBY diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputclientlayoutinfo.cpp --- a/textinput/peninputcommonlayout/src/peninputclientlayoutinfo.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,214 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: client layout implementation -* -*/ - - -// User includes -#include "peninputclientlayoutinfo.h" - - -// ======== MEMBER FUNCTIONS ======== - -// ------------------------------------------------------------------------ -// CPeninputControlInfo::NewL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputControlInfo* CPeninputControlInfo::NewL( - TResourceReader& aReader ) - { - CPeninputControlInfo* self = new ( ELeave ) CPeninputControlInfo(); - CleanupStack::PushL( self ); - self->ConstructL( aReader ); - CleanupStack::Pop( self ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputControlInfo::~CPeninputControlInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputControlInfo::~CPeninputControlInfo() - { - } - -// ------------------------------------------------------------------------ -// CPeninputControlInfo::ConstructL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputControlInfo::ConstructL( TResourceReader& aReader ) - { - ConstructFromResourceL( aReader ); - } - -// ------------------------------------------------------------------------ -// CPeninputControlInfo::ConstructFromResourceL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputControlInfo::ConstructFromResourceL( TResourceReader& aReader ) - { - iControlID = aReader.ReadInt16(); - iControlType = aReader.ReadInt16(); - iBeginRow = aReader.ReadInt16(); - iBeginColumn = aReader.ReadInt16(); - iEndRow = aReader.ReadInt16(); - iEndColumn = aReader.ReadInt16(); - } - -// ------------------------------------------------------------------------ -// CPeninputClientLayoutInfo::NewL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputClientLayoutInfo* CPeninputClientLayoutInfo::NewL( - TResourceReader& aReader ) - { - CPeninputClientLayoutInfo* self = NewLC( aReader ); - CleanupStack::Pop( self ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputClientLayoutInfo::NewLC -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputClientLayoutInfo* CPeninputClientLayoutInfo::NewLC( - TResourceReader& aReader ) - { - CPeninputClientLayoutInfo* self = - new ( ELeave ) CPeninputClientLayoutInfo(); - CleanupStack::PushL( self ); - self->ConstructL( aReader ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputClientLayoutInfo::~CPeninputClientLayoutInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputClientLayoutInfo::~CPeninputClientLayoutInfo() - { - iControlInfoList.ResetAndDestroy(); - } - -// ------------------------------------------------------------------------ -// CPeninputClientLayoutInfo::ConstructFromResourceL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C void CPeninputClientLayoutInfo::ConstructFromResourceL( - TResourceReader& aReader ) - { - iLayoutID = aReader.ReadInt16(); - iColumns = aReader.ReadInt16(); - iRows = aReader.ReadInt16(); - - const TInt count = aReader.ReadInt16(); - for ( TInt i = 0; i < count; i++ ) - { - CPeninputControlInfo* controlInfo = - CPeninputControlInfo::NewL( aReader ); - AddControlInfo( controlInfo ); - } - } - -// ------------------------------------------------------------------------ -// CPeninputClientLayoutInfo::FindControlInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputControlInfo* CPeninputClientLayoutInfo::FindControlInfo( - const TInt aControlID ) - { - const TInt count = iControlInfoList.Count(); - - for ( TInt i = 0; i < count; i++ ) - { - if ( iControlInfoList[i]->ControlID() == aControlID ) - { - return iControlInfoList[i]; - } - } - - return NULL; - } - -// ------------------------------------------------------------------------ -// CPeninputClientLayoutInfo::AddControlInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C void CPeninputClientLayoutInfo::AddControlInfo( - CPeninputControlInfo* aControlInfo ) - { - iControlInfoList.Append( aControlInfo ); - } - -// ------------------------------------------------------------------------ -// CPeninputClientLayoutInfo::RemoveControlInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C void CPeninputClientLayoutInfo::RemoveControlInfo( - CPeninputControlInfo* aControlInfo ) - { - CPeninputControlInfo* controlInfo = - FindControlInfo( aControlInfo->ControlID() ); - if ( controlInfo ) - { - RemoveControlInfo( controlInfo->ControlID() ); - } - } - -// ------------------------------------------------------------------------ -// CPeninputClientLayoutInfo::RemoveControlInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C void CPeninputClientLayoutInfo::RemoveControlInfo( - const TInt aControlID ) - { - const TInt count = iControlInfoList.Count(); - - for ( TInt i = 0; i < count; i++ ) - { - if ( iControlInfoList[i]->ControlID() == aControlID ) - { - CPeninputControlInfo* controlInfo = iControlInfoList[i]; - delete controlInfo; - iControlInfoList.Remove( i ); - break; - } - } - } - -// ------------------------------------------------------------------------ -// CPeninputClientLayoutInfo::ConstructL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputClientLayoutInfo::ConstructL( TResourceReader& aReader ) - { - ConstructFromResourceL( aReader ); - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputcommonlayout.cpp --- a/textinput/peninputcommonlayout/src/peninputcommonlayout.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,653 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: common layout framework -* -*/ - - -// System includes -#include // Command from fep or IME to plugin -#include // Define EPluginInputModeHwr -#include // Use global signal -#include -#include -#include -#include - -// User includes -#include "peninputuistatebase.h" -#include "peninputdataconverter.h" -#include "peninputcommonlayout.h" -#include "peninputlayoutwindow.h" -#include "peninputdatamgr.h" -#include "peninputuistatemgr.h" -#include "peninputrangebarinfo.h" - -// Constants -const TInt KPeninputCommonLayoutBufLen = 8; -const TInt KIntSizeToInt16 = 2; - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::CPeninputCommonLayout -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputCommonLayout::CPeninputCommonLayout( MLayoutOwner* aLayoutOwner ) - : CFepUiLayout( aLayoutOwner ) - { - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::ConstructL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayout::ConstructL( const TAny* aInitData ) - { - BaseConstructL(); - - TPixelsTwipsAndRotation ptSize; - - CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation( ptSize ); - - SetScreenSize(ptSize.iPixelSize); - - // This method must be called first, because it will initialize - // language from CenRep - CreateDataMgrL(aInitData); - - TBool sizeChanging = ETrue; - if ( iDataMgr ) - { - // Store screen mode, and get new window position - iDataMgr->SetData( EPeninputDataTypeScreenMode, ( TAny* ) &ptSize ); - - // Store justify style - iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging); - } - - iUiStateMgr = CPeninputUiStateMgr::NewL( this ); - - CreateLayoutWindowL(); - - if ( iLayoutWindow ) - { - iLayoutWindow->Hide(ETrue); - AddControlL( iLayoutWindow ); - - // Config layout self using the whole screen - //SetRect(TRect(TPoint(0, 0), ptSize.iPixelSize )); - - // Call the function in window to read config info - //ChangeInputLanguage( *( (TInt*)iDataMgr->RequestData(EPeninputDataTypeInputLanguage))); - - iLayoutWindow->SizeChanged( ETrue ); - EnableLayoutMoving( static_cast( iLayoutWindow->MoveButton() ) ); - } - - if (iDataMgr) - { - sizeChanging = EFalse; - iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging); - } - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::~CPeninputCommonLayout -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputCommonLayout::~CPeninputCommonLayout() - { - delete iUiStateMgr; - delete iDataMgr; - - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::UiStateMgr -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C MPeninputUiStateMgr* CPeninputCommonLayout::UiStateMgr() const - { - return iUiStateMgr; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::LayoutWindow -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputLayoutWindow* CPeninputCommonLayout::LayoutWindow() const - { - return NULL; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::HandleCommand -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputCommonLayout::HandleCommand( TInt aCmd, - TUint8* aData ) - { - // Handle command from fep or IME to this layout - TUint* data = ( TUint* ) aData; - TBuf buf; - TBuf bufStyle; - TInt style; - TInt ret = KErrNone; - - switch ( aCmd ) - { - case ECmdPenInputPermittedRange: - CPeninputDataConverter::IntToDesc( *data, buf ); - SendEventToWindow( EPeninputLayoutEventSetPermittedRange, NULL, - buf ); - break; - case ECmdPenInputPermittedCase: - { - CPeninputDataConverter::IntToDesc( *data, buf ); - SendEventToWindow( EPeninputLayoutEventSetPermittedCase, NULL, - buf ); - } - break; - case ECmdPenInputEditorNumericKeyMap: - { - iDataMgr->SetData( EPeninputDataTypeNumericKeymap, data ); - } - break; - case ECmdPenInputCase: - { - CPeninputDataConverter::IntToDesc( *data, buf ); - SendEventToWindow( EPeninputLayoutEventSetCase, NULL, - buf ); - } - break; - case ECmdPenInputLanguage: - { - ChangeInputLanguage(*data); - } - break; - case ECmdPenInputRange: - { - ChangeRange( TranslateRange(*data) ); - } - break; - case ECmdPenInputEnableSettingBtn: - { - SetEnableSettingBtn(*data); - } - break; - case ECmdPenInputIsSecretText: - { - iLayoutWindow->SetTextIsSecret( *aData ); - } - break; - case ECmdPenInputIsNumberGrouping: - { - iLayoutWindow->SetNumberGrouping( *aData ); - } - break; - case ECmdPenInputWindowOpen: - { - if ( *data == EPenInputOpenManually ) - { - style = EPeninputPositionChangeBrJustify; - bufStyle = ( TUint16* )&style; - SendEventToWindow(EPeninputLayoutEventMovePosition, NULL, bufStyle ); - } - iLayoutWindow->Hide(EFalse); - LayoutOwner()->Hide( EFalse ); - } - break; - case ECmdPenInputWindowClose: - { - iLayoutWindow->Hide(ETrue); - LayoutOwner()->Hide( ETrue ); - - SendEventToWindow( EPeninputLayoutEventCloseWindow, NULL ); - } - break; - case ECmdPenInputSetWindowPos: - { - // Only VKB need to move position automatically - if ( LayoutType() == EPluginInputModeVkb ) - { - // Data is a TRect - iDataMgr->SetData( EPeninputDataTypeDataQueryDlgRect, - (TRect*) aData ); - - // Store justify style - style = EPeninputPositionChangeDataQuery; - bufStyle = ( TUint16* )&style; - SendEventToWindow(EPeninputLayoutEventMovePosition, NULL, bufStyle); - } - } - break; - case ECmdPenInputEditorCustomNumericKeyMap: - { - iDataMgr->SetData(EAknFepDataTypeUseDefinedResource, aData); - } - break; - case ECmdPenInputSetTextAlignment: - { - TRAP_IGNORE(iLayoutWindow->SetTextAlignmentL( *data )); - } - break; - default: - { - ret = CFepUiLayout::HandleCommand( aCmd, aData ); - } - break; - } - - return ret; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::SizeChanged -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputCommonLayout::SizeChanged( const TAny* /*aData*/ ) - { - TBool sizeChanging = ETrue; - iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging); - - // Handle size changed event - TPixelsTwipsAndRotation ptSize; - - CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation( ptSize ); - //SetScreenSize(ptSize.iPixelSize); - - // Store screen mode, and get new window position - iDataMgr->SetData( EPeninputDataTypeScreenMode, ( TAny* )&ptSize ); - - // The following need to implement - iLayoutWindow->SizeChanged( ETrue ); - - sizeChanging = EFalse; - iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging); - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::HandleControlEvent -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayout::HandleControlEvent( - TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData ) - { - // Handle event from control - TInt* data = ( TInt* ) aEventData.Ptr(); - - // Buffer for data conversion - TBuf buf; - - switch ( aEventType ) - { - case EPeninputLayoutEventClose: - { - SignalOwner( ESignalLayoutClosed ); - } - break; - case EPeninputLayoutEventOption: - { - SignalOwner( ESignalLaunchOptionMenu ); - } - break; - case EPeninputLayoutEventSwitchLanguage: - { - SignalOwner( ESignalLaunchLanguageMenu ); - } - break; - // When drag end, store the position data - case EEventDraggingEnd: - { - TInt x = 0; - TInt y = 0; - x = 0x0000FFFF & ( Position().iX + Rect().Width() ); - y = 0xFFFF0000 & ( ( Position().iY + Rect().Height() ) << 16 ); - TInt position = x | y; - if ( position ) - { - iDataMgr->SetData( EPeninputDataTypeWindowPosition, &position ); - } - } - break; - default: - { - if ( iUiStateMgr->CurrentUiState() ) - { - if ( !iUiStateMgr->CurrentUiState()->HandleControlEvent - ( aEventType, aEventData ) ) - { - SendEventToWindow( aEventType, aCtrl, aEventData ); - } - } - } - break; - } - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::OnAppEditorTextComing -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputCommonLayout::OnAppEditorTextComing( - const TFepInputContextFieldData& aData ) - { - // Handle edit text coming - if ( iLayoutWindow ) - { - TRAPD( err, iLayoutWindow->SetEditorTextL( aData ) ); - return err; - } - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::HandleRawKeyEventL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputCommonLayout::HandleRawKeyEventL( - const TRawEvent& aKeyEvent ) - { - return iUiStateMgr->CurrentUiState()->HandleKeyEventL( aKeyEvent ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::SendEventToWindow -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayout::SendEventToWindow( - TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData ) - { - iLayoutWindow->HandleControlEvent( aEventType, aCtrl, aEventData ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::SendEventToLayout -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayout::SendEventToLayout( - TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData ) - { - HandleControlEvent( aEventType, aCtrl, aEventData ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::Sendkey -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayout::Sendkey( TInt aEventType, - const TDesC& aEventData ) - { - SignalOwner( aEventType, aEventData ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::IsShiftPermitted -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputCommonLayout::IsShiftPermitted() - { - return iDataMgr->IsShiftPermitted(); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::IsCapsLockPermitted -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputCommonLayout::IsCapsLockPermitted() - { - return iDataMgr->IsCapsLockPermitted(); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::RequestData -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TAny* CPeninputCommonLayout::RequestData( - TPeninputDataType aDataType ) - { - return iDataMgr->RequestData( aDataType ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::SetData -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayout::SetData( TPeninputDataType aDataType, - TAny* aData ) - { - iDataMgr->SetData( aDataType, aData ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::SetData -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputCommonLayout::IsValidDestination( const TRect& aRect, - CDragBar* aDragBar, - TBool& aVInfo, - TBool& aHInfo, - TBool aFlag ) - { - // Validate move button destination - if ( !aDragBar ) - { - return EFalse; - } - - TRect rect = aRect; - - if ( aFlag ) - { - // Layout is moving - aHInfo = aVInfo = EFalse; - TRect dragbarRect( aRect.iTl, aDragBar->Rect().Size() ); - - if ( dragbarRect.iTl.iX >= 0 - && dragbarRect.iBr.iX < ScreenSize().iWidth ) - { - aHInfo = ETrue; - } - - if ( dragbarRect.iTl.iY >= 0 - && dragbarRect.iBr.iY < ScreenSize().iHeight ) - { - aVInfo = ETrue; - } - - return ( aHInfo && aVInfo ); - } - else - { - if ( aDragBar ) - { - rect.SetSize( aDragBar->Rect().Size() ); - } - - TBool tlInvalid = !Rect().Contains( rect.iTl ); - TBool brInvalid = !Rect().Contains( rect.iBr ); - - if ( tlInvalid && !brInvalid ) - { - if ( rect.iTl.iX >= Rect().iTl.iX - && rect.iTl.iX <= Rect().iBr.iX ) - { - aHInfo = ETrue; - } - else if ( rect.iTl.iY >= Rect().iTl.iY - && rect.iTl.iY <= Rect().iBr.iY ) - { - aVInfo = ETrue; - } - } - else if ( !tlInvalid && brInvalid ) - { - if ( rect.iBr.iX >= Rect().iTl.iX - && rect.iBr.iX <= Rect().iBr.iX ) - { - aHInfo = ETrue; - } - else if ( rect.iBr.iY >= Rect().iTl.iY - && rect.iBr.iY <= Rect().iBr.iY ) - { - aVInfo = ETrue; - } - } - - return !( tlInvalid || brInvalid ); - } - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::TranslateRange -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TInt CPeninputCommonLayout::TranslateRange(TInt aRange) - { - TInt newRange = aRange; - - if ( aRange == ERangeNative) - { - if ( iLayoutWindow - && iLayoutWindow->ConfigInfo() - && iLayoutWindow->ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) ) - { - newRange = ERangeNative; - } - else - { - newRange = ERangeEnglish; - } - } - else if ( aRange == ERangeEnglish) - { - if ( iLayoutWindow - && iLayoutWindow->ConfigInfo() - && iLayoutWindow->ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) ) - { - newRange = ERangeEnglish; - } - else - { - newRange = ERangeNative; - } - } - - return newRange; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::Init -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TRect CPeninputCommonLayout::Init() - { - TRect r = CFepUiLayout::Init(); - //wxy -- No need to set position here - //LayoutOwner()->SetPosition( Rect().iTl ); - //r = TRect( Position(), r.Size() ); - - return r; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::SaveKey -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayout::SaveKey( TInt aKey, TInt aValue ) - { - iDataMgr->SaveKey( aKey, aValue ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::ChangeInputLanguage -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputCommonLayout::ChangeInputLanguage( TInt aLangID ) - { - // Call ChangeInputLanguage function in iLayoutWindow - TRAP_IGNORE( iLayoutWindow->ChangeInputLanguageL( aLangID ) ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::ChangeLanguage -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CPeninputCommonLayout::ChangeRange( TInt aRange ) - { - iLayoutWindow->ChangeRange( aRange, 0 , EFalse); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::SetEnableSwitchToHwr -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CPeninputCommonLayout::SetEnableSwitchToHwr( TBool aEnable ) - { - iLayoutWindow->SetEnableSwitchToHwr( aEnable ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayout::SetEnableSettingBtn -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CPeninputCommonLayout::SetEnableSettingBtn( TBool aEnable ) - { - iLayoutWindow->SetEnableSettingBtn( aEnable ); - } - -EXPORT_C TInt CPeninputCommonLayout::PenInputType() - { - return LayoutType(); - } - -EXPORT_C void CPeninputCommonLayout::SetPositionFromOutside(const TPoint& aNewPos) - { - LayoutOwner()->SetPosition(aNewPos); - TInt x = 0x0000FFFF & aNewPos.iX; - TInt y = 0xFFFF0000 & ( aNewPos.iY << 16 ); - TInt position = x | y; - - SetData( EPeninputDataTypeWindowPosition, (TAny*)&position ); - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputcommonlayoutext.cpp --- a/textinput/peninputcommonlayout/src/peninputcommonlayoutext.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,675 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: common layout framework -* -*/ - - -// System includes -#include // Command from fep or IME to plugin -#include // Define EPluginInputModeHwr -#include // Use global signal -#include -#include -#include -#include - -// User includes -#include "peninputuistatebase.h" -#include "peninputdataconverter.h" -#include "peninputcommonlayoutext.h" -#include "peninputlayoutwindowext.h" -#include "peninputdatamgr.h" -#include "peninputuistatemgr.h" -#include "peninputrangebarinfo.h" - -// Constants -const TInt KPeninputCommonLayoutBufLen = 8; -const TInt KIntSizeToInt16 = 2; - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::CPeninputCommonLayoutExt -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputCommonLayoutExt::CPeninputCommonLayoutExt( MLayoutOwner* aLayoutOwner ) - : CFepUiLayout( aLayoutOwner ) - { - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::ConstructL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayoutExt::ConstructL( const TAny* aInitData ) - { - BaseConstructL(); - - TPixelsTwipsAndRotation ptSize; - - CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation( ptSize ); - - SetScreenSize(ptSize.iPixelSize); - - // This method must be called first, because it will initialize - // language from CenRep - CreateDataMgrL(aInitData); - - TBool sizeChanging = ETrue; - if ( iDataMgr ) - { - // Store screen mode, and get new window position - iDataMgr->SetData( EPeninputDataTypeScreenMode, ( TAny* ) &ptSize ); - - // Store justify style - iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging); - } - - iUiStateMgr = CPeninputUiStateMgr::NewL( this ); - - CreateLayoutWindowL(); - - if ( iLayoutWindow ) - { - iLayoutWindow->Hide(ETrue); - AddControlL( iLayoutWindow ); - - // Config layout self using the whole screen - //SetRect(TRect(TPoint(0, 0), ptSize.iPixelSize )); - - // Call the function in window to read config info - //ChangeInputLanguage( *( (TInt*)iDataMgr->RequestData(EPeninputDataTypeInputLanguage))); - - iLayoutWindow->SizeChanged( ETrue ); -// EnableLayoutMoving( static_cast( iLayoutWindow->MoveButton() ) ); - } - - if (iDataMgr) - { - sizeChanging = EFalse; - iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging); - } - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::~CPeninputCommonLayoutExt -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputCommonLayoutExt::~CPeninputCommonLayoutExt() - { - delete iUiStateMgr; - delete iDataMgr; - - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::UiStateMgr -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C MPeninputUiStateMgr* CPeninputCommonLayoutExt::UiStateMgr() const - { - return iUiStateMgr; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::LayoutWindow -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputLayoutWindowExt* CPeninputCommonLayoutExt::LayoutWindow() const - { - return iLayoutWindow; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::HandleCommand -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputCommonLayoutExt::HandleCommand( TInt aCmd, - TUint8* aData ) - { - // Handle command from fep or IME to this layout - TUint* data = ( TUint* ) aData; - TBuf buf; - TBuf bufStyle; - TInt style; - TInt ret = KErrNone; - - switch ( aCmd ) - { - case ECmdPenInputPermittedRange: - CPeninputDataConverter::IntToDesc( *data, buf ); - SendEventToWindow( EPeninputLayoutEventSetPermittedRange, NULL, - buf ); - break; - case ECmdPenInputAllowChangeCase: - { - iDataMgr->SetData( EAkninputDataTypeAllowCaseChange, data ); - } - break; - case ECmdPenInputPermittedCase: - { - CPeninputDataConverter::IntToDesc( *data, buf ); - SendEventToWindow( EPeninputLayoutEventSetPermittedCase, NULL, - buf ); - } - break; - case ECmdPenInputEditorNumericKeyMap: - { - iDataMgr->SetData( EPeninputDataTypeNumericKeymap, data ); - } - break; - case ECmdPenInputCase: - { - CPeninputDataConverter::IntToDesc( *data, buf ); - SendEventToWindow( EPeninputLayoutEventSetCase, NULL, - buf ); - } - break; - case ECmdPenInputLanguage: - { - ChangeInputLanguage(*data); - } - break; - case ECmdPenInputRange: - { - ChangeRange( TranslateRange(*data) ); - } - break; - /*case ECmdPenInputEnableSwitchBtn: - { - if ( LayoutType() == EPluginInputModeVkb ) - { - SetEnableSwitchToHwr(*data); - } - } - break;*/ - case ECmdPenInputEnableSettingBtn: - { - SetEnableSettingBtn(*data); - } - break; - case ECmdPenInputIsSecretText: - { - iLayoutWindow->SetTextIsSecret( *aData ); - } - break; - case ECmdPenInputIsNumberGrouping: - { - iLayoutWindow->SetNumberGrouping( *aData ); - } - break; - case ECmdPenInputWindowOpen: - { - if ( *data == EPenInputOpenManually ) - { - style = EPeninputPositionChangeBrJustify; - bufStyle = ( TUint16* )&style; - SendEventToWindow(EPeninputLayoutEventMovePosition, NULL, bufStyle ); - } - iLayoutWindow->Hide(EFalse); - LayoutOwner()->Hide( EFalse ); - } - break; - case ECmdPenInputWindowClose: - { - iLayoutWindow->Hide(ETrue); - LayoutOwner()->Hide( ETrue ); - - SendEventToWindow( EPeninputLayoutEventCloseWindow, NULL ); - } - break; - case ECmdPenInputSetWindowPos: - { - // Only VKB need to move position automatically - if ( LayoutType() == EPluginInputModeVkb ) - { - // Data is a TRect - iDataMgr->SetData( EPeninputDataTypeDataQueryDlgRect, - (TRect*) aData ); - - // Store justify style - style = EPeninputPositionChangeDataQuery; - bufStyle = ( TUint16* )&style; - SendEventToWindow(EPeninputLayoutEventMovePosition, NULL, bufStyle); - } - } - break; - case ECmdPenInputEditorCustomNumericKeyMap: - { - iDataMgr->SetData(EAknFepDataTypeUseDefinedResource, aData); - } - break; - case ECmdPenInputSetTextAlignment: - { - TRAP_IGNORE(iLayoutWindow->SetTextAlignmentL( *data )); - } - break; - default: - { - ret = CFepUiLayout::HandleCommand( aCmd, aData ); - } - break; - } - - return ret; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::SizeChanged -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputCommonLayoutExt::SizeChanged( const TAny* /*aData*/ ) - { - TBool sizeChanging = ETrue; - iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging); - - // Handle size changed event - TPixelsTwipsAndRotation ptSize; - - CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation( ptSize ); - //SetScreenSize(ptSize.iPixelSize); - - // Store screen mode, and get new window position - iDataMgr->SetData( EPeninputDataTypeScreenMode, ( TAny* )&ptSize ); - - // The following need to implement - iLayoutWindow->SizeChanged( ETrue ); - - sizeChanging = EFalse; - iDataMgr->SetData(EAkninputDataTypeSizeChanging, &sizeChanging); - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::HandleControlEvent -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayoutExt::HandleControlEvent( - TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData ) - { - // Handle event from control - TInt* data = ( TInt* ) aEventData.Ptr(); - - // Buffer for data conversion - TBuf buf; - - switch ( aEventType ) - { - case EPeninputLayoutEventClose: - { - SignalOwner( ESignalLayoutClosed ); - } - break; - case EPeninputLayoutEventOption: - { - SignalOwner( ESignalLaunchOptionMenu ); - } - break; - case EPeninputLayoutEventSwitchLanguage: - { - SignalOwner( ESignalLaunchLanguageMenu ); - } - break; - // When drag end, store the position data - case EEventDraggingEnd: - { - TInt x = 0; - TInt y = 0; - x = 0x0000FFFF & ( Position().iX + Rect().Width() ); - y = 0xFFFF0000 & ( ( Position().iY + Rect().Height() ) << 16 ); - TInt position = x | y; - if ( position ) - { - iDataMgr->SetData( EPeninputDataTypeWindowPosition, &position ); - } - } - break; - case EPeninputLayoutEventToVkb: - { - TBool switchByMode = ETrue; - TInt mode = EPluginInputModeVkb; - CPeninputDataConverter::CombinationToDesc( switchByMode, - mode, buf ); - SignalOwner( ESignalLayoutUIChanged, buf ); - } - break; - default: - { - if ( iUiStateMgr->CurrentUiState() ) - { - if ( !iUiStateMgr->CurrentUiState()->HandleControlEvent - ( aEventType, aEventData ) ) - { - SendEventToWindow( aEventType, aCtrl, aEventData ); - } - } - } - break; - } - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::OnAppEditorTextComing -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputCommonLayoutExt::OnAppEditorTextComing( - const TFepInputContextFieldData& aData ) - { - // Handle edit text coming - if ( iLayoutWindow ) - { - TRAPD( err, iLayoutWindow->SetEditorTextL( aData ) ); - return err; - } - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::HandleRawKeyEventL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputCommonLayoutExt::HandleRawKeyEventL( - const TRawEvent& aKeyEvent ) - { - return iUiStateMgr->CurrentUiState()->HandleKeyEventL( aKeyEvent ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::SendEventToWindow -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayoutExt::SendEventToWindow( - TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData ) - { - iLayoutWindow->HandleControlEvent( aEventType, aCtrl, aEventData ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::SendEventToLayout -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayoutExt::SendEventToLayout( - TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData ) - { - HandleControlEvent( aEventType, aCtrl, aEventData ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::Sendkey -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayoutExt::Sendkey( TInt aEventType, - const TDesC& aEventData ) - { - SignalOwner( aEventType, aEventData ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::IsShiftPermitted -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputCommonLayoutExt::IsShiftPermitted() - { - return iDataMgr->IsShiftPermitted(); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::IsCapsLockPermitted -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputCommonLayoutExt::IsCapsLockPermitted() - { - return iDataMgr->IsCapsLockPermitted(); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::RequestData -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TAny* CPeninputCommonLayoutExt::RequestData( - TPeninputDataType aDataType ) - { - return iDataMgr->RequestData( aDataType ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::SetData -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayoutExt::SetData( TPeninputDataType aDataType, - TAny* aData ) - { - iDataMgr->SetData( aDataType, aData ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::SetData -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputCommonLayoutExt::IsValidDestination( const TRect& aRect, - CDragBar* aDragBar, - TBool& aVInfo, - TBool& aHInfo, - TBool aFlag ) - { - // Validate move button destination - if ( !aDragBar ) - { - return EFalse; - } - - TRect rect = aRect; - - if ( aFlag ) - { - // Layout is moving - aHInfo = aVInfo = EFalse; - TRect dragbarRect( aRect.iTl, aDragBar->Rect().Size() ); - - if ( dragbarRect.iTl.iX >= 0 - && dragbarRect.iBr.iX < ScreenSize().iWidth ) - { - aHInfo = ETrue; - } - - if ( dragbarRect.iTl.iY >= 0 - && dragbarRect.iBr.iY < ScreenSize().iHeight ) - { - aVInfo = ETrue; - } - - return ( aHInfo && aVInfo ); - } - else - { - if ( aDragBar ) - { - rect.SetSize( aDragBar->Rect().Size() ); - } - - TBool tlInvalid = !Rect().Contains( rect.iTl ); - TBool brInvalid = !Rect().Contains( rect.iBr ); - - if ( tlInvalid && !brInvalid ) - { - if ( rect.iTl.iX >= Rect().iTl.iX - && rect.iTl.iX <= Rect().iBr.iX ) - { - aHInfo = ETrue; - } - else if ( rect.iTl.iY >= Rect().iTl.iY - && rect.iTl.iY <= Rect().iBr.iY ) - { - aVInfo = ETrue; - } - } - else if ( !tlInvalid && brInvalid ) - { - if ( rect.iBr.iX >= Rect().iTl.iX - && rect.iBr.iX <= Rect().iBr.iX ) - { - aHInfo = ETrue; - } - else if ( rect.iBr.iY >= Rect().iTl.iY - && rect.iBr.iY <= Rect().iBr.iY ) - { - aVInfo = ETrue; - } - } - - return !( tlInvalid || brInvalid ); - } - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::TranslateRange -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TInt CPeninputCommonLayoutExt::TranslateRange(TInt aRange) - { - TInt newRange = aRange; - - if ( aRange == ERangeNative) - { - if ( iLayoutWindow - && iLayoutWindow->ConfigInfo() - && iLayoutWindow->ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) ) - { - newRange = ERangeNative; - } - else - { - newRange = ERangeEnglish; - } - } - else if ( aRange == ERangeEnglish) - { - if ( iLayoutWindow - && iLayoutWindow->ConfigInfo() - && iLayoutWindow->ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) ) - { - newRange = ERangeEnglish; - } - else - { - newRange = ERangeNative; - } - } - - return newRange; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::Init -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TRect CPeninputCommonLayoutExt::Init() - { - TRect r = CFepUiLayout::Init(); - //wxy -- No need to set position here - //LayoutOwner()->SetPosition( Rect().iTl ); - //r = TRect( Position(), r.Size() ); - - return r; - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::SaveKey -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputCommonLayoutExt::SaveKey( TInt aKey, TInt aValue ) - { - iDataMgr->SaveKey( aKey, aValue ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::ChangeInputLanguage -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputCommonLayoutExt::ChangeInputLanguage( TInt aLangID ) - { - // Call ChangeInputLanguage function in iLayoutWindow - TRAP_IGNORE( iLayoutWindow->ChangeInputLanguageL( aLangID ) ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::ChangeLanguage -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CPeninputCommonLayoutExt::ChangeRange( TInt aRange ) - { - iLayoutWindow->ChangeRange( aRange, 0, EFalse ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::SetEnableSwitchToHwr -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CPeninputCommonLayoutExt::SetEnableSwitchToHwr( TBool aEnable ) - { - iLayoutWindow->SetEnableSwitchToHwr( aEnable ); - } - -// --------------------------------------------------------------------------- -// CPeninputCommonLayoutExt::SetEnableSettingBtn -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CPeninputCommonLayoutExt::SetEnableSettingBtn( TBool aEnable ) - { - iLayoutWindow->SetEnableSettingBtn( aEnable ); - } - -EXPORT_C TInt CPeninputCommonLayoutExt::PenInputType() - { - return LayoutType(); - } - -EXPORT_C void CPeninputCommonLayoutExt::SetPositionFromOutside(const TPoint& aNewPos) - { - LayoutOwner()->SetPosition(aNewPos); - TInt x = 0x0000FFFF & aNewPos.iX; - TInt y = 0xFFFF0000 & ( aNewPos.iY << 16 ); - TInt position = x | y; - - SetData( EPeninputDataTypeWindowPosition, (TAny*)&position ); - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputctrlpool.cpp --- a/textinput/peninputcommonlayout/src/peninputctrlpool.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,158 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: control pool -* -*/ - - -// System includes -#include - -// User includes -#include "peninputctrlpool.h" - - -// ======== MEMBER FUNCTIONS ======== - -// ------------------------------------------------------------------------ -// CPeninputCtrlPool::NewL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputCtrlPool* CPeninputCtrlPool::NewL() - { - CPeninputCtrlPool* self = NewLC(); - CleanupStack::Pop( self ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputCtrlPool::NewLC -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputCtrlPool* CPeninputCtrlPool::NewLC() - { - CPeninputCtrlPool* self = new ( ELeave ) CPeninputCtrlPool(); - CleanupStack::PushL( self ); - self->Construct(); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputCtrlPool::ConstructL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C void CPeninputCtrlPool::Construct() - { - } - -// ------------------------------------------------------------------------ -// CPeninputCtrlPool::~CPeninputCtrlPool -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputCtrlPool::~CPeninputCtrlPool() - { - iControlList.ResetAndDestroy(); - iControlList.Close(); - } - -// ------------------------------------------------------------------------ -// CPeninputCtrlPool::AddControl -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C void CPeninputCtrlPool::AddControl( CFepUiBaseCtrl* aControl ) - { - iControlList.Append( aControl ); - } - -// ------------------------------------------------------------------------ -// CPeninputCtrlPool::RemoveControl -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C void CPeninputCtrlPool::RemoveControl( const TInt aControlID ) - { - CFepUiBaseCtrl* ctrl = Control( aControlID ); - const TInt index = iControlList.Find( ctrl ); - delete ctrl; - iControlList.Remove( index ); - } - -// ------------------------------------------------------------------------ -// CPeninputCtrlPool::Control -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CFepUiBaseCtrl* CPeninputCtrlPool::Control( - const TInt aControlID ) const - { - const TInt count = iControlList.Count(); - CFepUiBaseCtrl* ctrl = NULL; - - for ( TInt i = 0; i < count; i++ ) - { - if ( iControlList[i]->ControlId() == aControlID ) - { - ctrl = iControlList[i]; - break; - } - } - - return ctrl; - } - -// ------------------------------------------------------------------------ -// CPeninputCtrlPool::ControlByIndex -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CFepUiBaseCtrl* CPeninputCtrlPool::ControlByIndex( - const TInt aIndex ) const - { - CFepUiBaseCtrl* ctrl = NULL; - const TInt count = iControlList.Count(); - - if ( ( aIndex < count ) && ( aIndex >= 0 ) ) - { - ctrl = iControlList[aIndex]; - } - - return ctrl; - } - -// ------------------------------------------------------------------------ -// CPeninputCtrlPool::ControlCount -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C TInt CPeninputCtrlPool::ControlCount() const - { - return iControlList.Count(); - } - -// ------------------------------------------------------------------------ -// CPeninputCtrlPool::Reset -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C void CPeninputCtrlPool::Reset() - { - iControlList.ResetAndDestroy(); - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputdataconverter.cpp --- a/textinput/peninputcommonlayout/src/peninputdataconverter.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: the data converter of peninput -* -*/ - - -// System includes -#include - -// User includes -#include "peninputdataconverter.h" - -// Const -const TUint KNumToBuffer = sizeof( TUint )/sizeof( TUint16); -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPeninputDataConverter::CPeninputDataConverter -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputDataConverter::CPeninputDataConverter() - { - } - -// --------------------------------------------------------------------------- -// CPeninputDataConverter::~CPeninputDataConverter -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputDataConverter::~CPeninputDataConverter() - { - } - -// --------------------------------------------------------------------------- -// CPeninputDataConverter::IntToDesc -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputDataConverter::IntToDesc( TUint aNum, - TDes16& aBuf ) - { - aBuf.Zero(); - // Convert integer number to be string - aBuf.Append( reinterpret_cast( &aNum ),KNumToBuffer ); - } - -// --------------------------------------------------------------------------- -// CPeninputDataConverter::CombinationToDesc -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputDataConverter::CombinationToDesc( - TBool aBool, TUint aNum, TDes16& aBuf ) - { - aBuf.Zero(); - // Convert integer number to be string - aBuf.Append( reinterpret_cast( &aBool ), KNumToBuffer ); - aBuf.Append( reinterpret_cast( &aNum ), KNumToBuffer ); - } - -// --------------------------------------------------------------------------- -// CPeninputDataConverter::AnyToInt -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputDataConverter::AnyToInt( TAny* aOrginal ) - { - return *( reinterpret_cast( aOrginal ) ); - } - -// --------------------------------------------------------------------------- -// CPeninputDataConverter::ShiftCapslockByCase -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputDataConverter::ShiftCapslockByCase( TInt aCase, - TInt& aShiftStatus, - TInt& aCapsStatus ) - { - switch ( aCase ) - { - case ECaseUpper: - aShiftStatus = 0; - aCapsStatus = 1; - break; - case ECaseText: - aShiftStatus = 1; - aCapsStatus = 0; - break; - case ECaseLower: - case ECaseInverseText: - case ECaseInvalide: - default: - aShiftStatus = 0; - aCapsStatus = 0; - break; - } - } - -EXPORT_C TInt CPeninputDataConverter::FepCaseByCaseId( TInt aCaseId ) - { - switch ( aCaseId ) - { - case 0: - return ECaseLower; - case 1: - return ECaseText; - case 2: - return ECaseUpper; - case 3: - return ECaseInverseText; - default: - return ECaseLower; - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputdatamgr.cpp --- a/textinput/peninputcommonlayout/src/peninputdatamgr.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,488 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of the common layout data manager -* -*/ - - -// System includes -#include -#include -#include // Use resource utils,laf env,rep notifier -#include -#include -#include - -// User includes -#include "peninputdatamgr.h" -#include "peninputdataprovider.h" -#include "peninputlayoutcontext.h" - - -// ======== MEMBER FUNCTIONS ======== - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::NewL -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputDataMgr* CPeninputDataMgr::NewL( - MPeninputLayoutContext* aContext ) - { - CPeninputDataMgr* self = NewLC( aContext ); - CleanupStack::Pop( self ); - - return self; - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::NewLC -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputDataMgr* CPeninputDataMgr::NewLC( - MPeninputLayoutContext* aContext ) - { - CPeninputDataMgr* self = new ( ELeave ) CPeninputDataMgr( aContext ); - CleanupStack::PushL( self ); - self->ConstructL(); - - return self; - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::~CPeninputDataMgr -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputDataMgr::~CPeninputDataMgr() - { - delete iGSRepositoryWatcher; - delete iGSRepository; - delete iAknFepRepository; - delete iUserDefinedResource; - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::CPeninputDataMgr -// (other items were commented in a header). -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputDataMgr::CPeninputDataMgr( - MPeninputLayoutContext* aContext ) - : iContext(aContext), - iUnitWidthSet(EFalse), - iUnitHeightSet(EFalse) - { - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::ConstructL -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputDataMgr::ConstructL() - { - TInt ret = 0; - - // Construct aknfep CenRep - TRAP( ret, iAknFepRepository = CRepository::NewL( KCRUidAknFep ) ); - - // Construct GS CenRep - TRAP( ret, iGSRepository = - CRepository::NewL( KCRUidPersonalizationSettings ) ); - - if ( iGSRepository ) - { - // Read Language - iGSRepository->Get( KSettingsPenInputLang, iInputLanguage ); - } - - // Add GS Watcher - if ( ret == KErrNone ) - { - iGSRepositoryWatcher = CAknFepRepositoryWatcher::NewL( - KCRUidPersonalizationSettings, - TCallBack( HandleGSRepositoryCallBack, this ), - iGSRepository ); - } - - // Call init function, which is virutal function - InitMore(); - } - -// --------------------------------------------------------------------------- -// CPeninputDataMgr::IsShiftPermitted -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputDataMgr::IsShiftPermitted() - { - if( !iAllowCaseChange && iCurrentRange == ERangeNative ) - { - return EFalse; - } - - return (iPermittedCase & ECaseText) || - (iPermittedCase & ECaseInverseText); - } - -// --------------------------------------------------------------------------- -// CPeninputDataMgr::IsCapsLockPermitted -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputDataMgr::IsCapsLockPermitted() - { - if( !iAllowCaseChange && iCurrentRange == ERangeNative ) - { - return EFalse; - } - - return iPermittedCase & ECaseUpper; - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::SetData -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputDataMgr::SetData( TPeninputDataType aDataType, - TAny* aData ) - { - switch ( aDataType ) - { - case EPeninputDataTypeCase: - { - iCase = *( ( TInt* ) aData ); - } - break; - case EPeninputDataTypeInputLanguage: - { - iInputLanguage = *( ( TInt* ) aData ); - } - break; - case EPeninputDataTypePermittedRange: - { - iPermittedRange = *( ( TInt* ) aData ); - } - break; - case EAkninputDataTypeAllowCaseChange: - { - iAllowCaseChange = *((TBool*)aData); - } - break; - case EPeninputDataTypePermittedCase: - { - iPermittedCase = *( (TInt* ) aData ); - } - break; - case EPeninputDataTypeCurrentRange: - { - iCurrentRange = *( ( TInt* ) aData ); - } - break; - case EPeninputDataTypeClientLayout: - { - iClientLayout = *( ( TInt* ) aData ); - } - break; - case EPeninputDataTypeVkbLayout: - { - iVkbLayoutId = *( ( TInt* ) aData ); - } - break; - case EPeninputDataTypeNumericKeymap: - { - iEditorNumericKeymap = *( ( TInt* ) aData ); - } - break; - case EPeninputDataTypeShiftDown: - { - iShiftDown = *( ( TInt* ) aData ); - } - break; - case EPeninputDataTypeCapslockDown: - { - iCapslockDown = *( ( TInt* ) aData ); - } - break; - case EPeninputDataTypeCurrentAccent: - { - iCurrentAccent = *( ( TInt* ) aData ); - } - break; - case EPeninputDataTypeScreenMode: - { - SetScreenMode( *( ( TPixelsTwipsAndRotation* ) aData ) ); - } - break; - case EPeninputDataTypeScreenSize: - { - iScreenSize = *( ( TSize* ) aData ); - } - break; - case EPeninputDataTypeWindowPosition: - { - iWindowPosition = *( ( TInt* ) aData ); - } - break; - case EPeninputDataTypeUnitWidth: - { - iUnitWidth = *( ( TInt* ) aData ); - iUnitWidthSet = ETrue; - } - break; - case EPeninputDataTypeUnitHeight: - { - iUnitHeight = *( ( TInt* ) aData ); - iUnitHeightSet = ETrue; - } - break; - case EPeninputDataTypeDataQueryDlgRect: - { - iDataQueryDlgRect = *( ( TRect* ) aData ); - } - break; - case EAknFepDataTypeUseDefinedResource: - { - delete iUserDefinedResource; - TInt* len = (TInt*)((TUint8*)aData - 4); - TPtrC16 keymapRes((const TUint16*)aData, *len/2); - iUserDefinedResource = keymapRes.Alloc(); - } - break; - case EPeninputDataTypeReserve_1: - { - iReserve_1 = aData; - } - break; - case EAkninputDataTypeSizeChanging: - { - iLayoutSizeChanging = *((TBool*)aData); - } - break; - case EAkninputDataTypeLatchedSet: - { - iLatched = *((TBool*)aData); - } - break; - default: - break; - } - - NotifyEngine( aDataType, aData ) ; - } - - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::RequestData -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C TAny* CPeninputDataMgr::RequestData( TPeninputDataType aDataType ) - { - switch ( aDataType ) - { - case EPeninputDataTypeCase: - return &iCase; - case EPeninputDataTypeInputLanguage: - return &iInputLanguage; - case EPeninputDataTypePermittedRange: - return &iPermittedRange; - case EPeninputDataTypePermittedCase: - return &iPermittedCase; - case EPeninputDataTypeCurrentRange: - return &iCurrentRange; - case EPeninputDataTypeClientLayout: - return &iClientLayout; - case EPeninputDataTypeVkbLayout: - return &iVkbLayoutId; - case EPeninputDataTypeNumericKeymap: - return &iEditorNumericKeymap; - case EPeninputDataTypeShiftDown: - return &iShiftDown; - case EPeninputDataTypeCapslockDown: - return &iCapslockDown; - case EPeninputDataTypeCurrentAccent: - return &iCurrentAccent; - case EPeninputDataTypeScreenMode: - return &iScreenMode; - case EPeninputDataTypeScreenSize: - return &iScreenSize; - case EPeninputDataTypeWindowPosition: - return &iWindowPosition; - case EPeninputDataTypePositionSettingId: - return &iPositionSettingId; - case EPeninputDataTypeUnitWidth: - return &iUnitWidth; - case EPeninputDataTypeUnitHeight: - return &iUnitHeight; - case EPeninputDataTypeDataQueryDlgRect: - return &iDataQueryDlgRect; - case EAknFepDataTypeUseDefinedResource: - return iUserDefinedResource; - case EPeninputDataTypeReserve_1: - return iReserve_1; - case EAkninputDataTypeGuideLineTop: - return &iGuideLineTop; - case EAkninputDataTypeGuideLineBottom: - return &iGuideLineBottom; - case EAkninputDataTypeSizeChanging: - return &iLayoutSizeChanging; - case EAkninputDataTypeLatchedSet: - return &iLatched; - case EAkninputDataTypeUnitSizeSet: - { - iUnitSizeSet = (iUnitWidthSet & iUnitHeightSet); - return &iUnitSizeSet; - } - default: - break; - } - - return NULL; - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::Reset -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputDataMgr::Reset() - { - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::HandleGSRepositoryCallBack -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputDataMgr::HandleGSRepositoryCallBack( TAny* aPtr ) - { - CPeninputDataMgr* self = static_cast( aPtr ); - - CAknFepRepositoryWatcher* watcher = self->iGSRepositoryWatcher; - if ( watcher ) - { - self->HandleGSRepositoryChange( watcher->ChangedKey() ); - } - - return KErrNone; - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::SaveKey -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputDataMgr::SaveKey( TInt aKey, TInt aValue ) - { - if ( iAknFepRepository ) - { - iAknFepRepository->Set( aKey, aValue ); - } - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::SetScreenMode -// (other items were commented in a header). -// -------------------------------------------------------------------------- -// -void CPeninputDataMgr::SetScreenMode( - const TPixelsTwipsAndRotation& aScreenMode ) - { - switch ( aScreenMode.iRotation ) - { - case CFbsBitGc::EGraphicsOrientationNormal: - { - iPositionSettingId = KAknFepHwrWindowPosition0; - } - break; - case CFbsBitGc::EGraphicsOrientationRotated90: - { - iPositionSettingId = KAknFepHwrWindowPosition1; - } - break; - case CFbsBitGc::EGraphicsOrientationRotated180: - { - iPositionSettingId = KAknFepHwrWindowPosition2; - } - break; - case CFbsBitGc::EGraphicsOrientationRotated270: - { - iPositionSettingId = KAknFepHwrWindowPosition3; - } - break; - default: - break; - } - - iScreenSize = aScreenMode.iPixelSize; - iScreenMode = aScreenMode; - if ( iAknFepRepository ) - { - iAknFepRepository->Get( iPositionSettingId, iWindowPosition ); - } - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::InitMore -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputDataMgr::InitMore() - { - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::HandleGSRepositoryChange -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputDataMgr::HandleGSRepositoryChange( TInt /*aChangedKey*/ ) - { - } - -// -------------------------------------------------------------------------- -// CPeninputDataMgr::NotifyEngine -// (other items were commented in a header). -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputDataMgr::NotifyEngine( TPeninputDataType aType, - TAny* aData ) - { - TInt data = *( (TInt*) aData ); - switch ( aType ) - { - case EPeninputDataTypeCurrentRange: - if (iAknFepRepository) - { - if ( ( data == ERangeEnglish ) || ( data == ERangeNative ) ) - { - iAknFepRepository->Set(KAknFepLastUsedRange, data ); - } - } - break; - case EPeninputDataTypeWindowPosition: - if (iAknFepRepository) - { - iAknFepRepository->Set(iPositionSettingId, data ); - } - break; - default: - break; - } - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputlayoutconfig.cpp --- a/textinput/peninputcommonlayout/src/peninputlayoutconfig.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,281 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: common layout config management -* -*/ - - -// System includes -#include -#include -#include - -// User includes -#include "peninputlayoutconfig.h" -#include "peninputrangebarinfo.h" -#include -#include "peninputclientlayoutinfo.h" -#include "peninputshiftcapsInfo.h" - - -// Constants -const TInt KPeninputLayoutConfigInvalidId = -1; - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPeninputLayoutConfig::NewL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputLayoutConfig* CPeninputLayoutConfig::NewL( - CAknFepCtrlVkbLayout& aVkblayout, TResourceReader& aReader ) - { - CPeninputLayoutConfig* self = new ( ELeave ) CPeninputLayoutConfig(); - CleanupStack::PushL( self ); - self->ConstructL( aVkblayout, aReader ); - CleanupStack::Pop( self ); - - return self; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutConfig::CPeninputLayoutConfig -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -CPeninputLayoutConfig::CPeninputLayoutConfig() - : iLanguageString( NULL ), iRangeBarInfo( NULL ) - { - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutConfig::ConstructL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutConfig::ConstructL( CAknFepCtrlVkbLayout& aVkblayout, - TResourceReader& aReader ) - { - TResourceReader reader; - TInt count = 0; - TInt i = 0; - - iLanguage = aReader.ReadInt16(); - iLanguageString = aReader.ReadHBufCL(); - - if ( aReader.ReadInt16() != 0 ) - { - iCaseSensitive = ETrue; - } - else - { - iCaseSensitive = EFalse; - } - - iGuideLine = aReader.ReadInt16(); - iPositionTopLine = aReader.ReadInt16(); - iPositionBottomLine = aReader.ReadInt16(); - - const TInt32 clientLayoutInfoListResId = aReader.ReadInt32(); - const TInt32 vkbLayoutInfoListResId = aReader.ReadInt32(); - const TInt32 rangeBarInfoResId = aReader.ReadInt32(); - const TInt32 shiftCapsInfoResId = aReader.ReadInt32(); - - iRangeBarResId = aReader.ReadInt32(); - - // Create client layout list - if ( clientLayoutInfoListResId > 0 ) - { - CCoeEnv::Static()->CreateResourceReaderLC( reader, clientLayoutInfoListResId ); - - count = reader.ReadInt16(); - for ( i = 0; i < count; i++ ) - { - CPeninputClientLayoutInfo* clientLayoutInfo = - CPeninputClientLayoutInfo::NewL( reader ); - iClientLayoutInfoList.Append( clientLayoutInfo ); - } - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - } - - // Create vkb layout list - if ( vkbLayoutInfoListResId > 0 ) - { - aVkblayout.SetResourceId( vkbLayoutInfoListResId ); - aVkblayout.ConstructFromResourceL(); - iVkbLayoutInfoList = aVkblayout.VkbLayoutInfoList(); - } - - // Create range bar - if ( rangeBarInfoResId > 0 ) - { - CCoeEnv::Static()->CreateResourceReaderLC( reader, rangeBarInfoResId ); - iRangeBarInfo = CPeninputRangeBarInfo::NewL( reader ); - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - } - - // Create shift & caps - if ( shiftCapsInfoResId > 0 ) - { - CCoeEnv::Static()->CreateResourceReaderLC( reader, shiftCapsInfoResId ); - count = reader.ReadInt16(); - for ( i = 0; i < count; i++ ) - { - CPeninputShiftCapsInfo* shiftCapsInfo = - CPeninputShiftCapsInfo::NewL( reader ); - iShiftCapsInfoList.Append( shiftCapsInfo ); - } - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutConfig::~CPeninputLayoutConfig -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputLayoutConfig::~CPeninputLayoutConfig() - { - delete iLanguageString; - delete iRangeBarInfo; - iClientLayoutInfoList.ResetAndDestroy(); - iShiftCapsInfoList.ResetAndDestroy(); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutConfig::FindClientLayoutInfo -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputClientLayoutInfo* - CPeninputLayoutConfig::FindClientLayoutInfo( TInt aLayoutId ) - { - const TInt count = iClientLayoutInfoList.Count(); - - for ( TInt i = 0; i < count; i++ ) - { - if ( iClientLayoutInfoList[i]->LayoutID() == aLayoutId ) - { - return iClientLayoutInfoList[i]; - } - } - - return NULL; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutConfig::FindVkbLayoutInfo -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputVkbLayoutInfo* - CPeninputLayoutConfig::FindVkbLayoutInfo( TInt aLayoutId ) - { - const TInt count = iVkbLayoutInfoList.Count(); - - for ( TInt i = 0; i < count; i++ ) - { - if ( iVkbLayoutInfoList[i]->LayoutID() == aLayoutId ) - { - return iVkbLayoutInfoList[i]; - } - } - - return NULL; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutConfig::FindShiftCapsInfo -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputShiftCapsInfo* - CPeninputLayoutConfig::FindShiftCapsInfo( TInt aRangeId ) - { - const TInt count = iShiftCapsInfoList.Count(); - - for ( TInt i = 0; i < count; i++ ) - { - if ( iShiftCapsInfoList[i]->RangeId() == aRangeId ) - { - return iShiftCapsInfoList[i]; - } - } - - return NULL; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutConfig::ShiftCapsSingleVkbLayoutId -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputLayoutConfig::ShiftCapsSingleVkbLayoutId( - TInt aRangeId, TInt aShiftCapsSingleId ) - { - CPeninputShiftCapsInfo* shiftCapsInfo = FindShiftCapsInfo( aRangeId ); - - if ( !shiftCapsInfo ) - { - return KPeninputLayoutConfigInvalidId; - } - else - { - CPeninputShiftCapsInfo::TPeninputShiftCapsSingle* shiftCapsSingle = - shiftCapsInfo->FindShiftCapsSingleById( aShiftCapsSingleId ); - if ( shiftCapsSingle ) - { - return shiftCapsSingle->iVkbLayoutId; - } - else - { - return KPeninputLayoutConfigInvalidId; - } - } - } - - -// --------------------------------------------------------------------------- -// CPeninputLayoutConfig::FindVkbLayoutIdByCase -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputLayoutConfig::ShiftCapsSingleVkbLayoutByCase( - TInt aRangeId, TInt aCase ) - { - CPeninputShiftCapsInfo* shiftCapsInfo = FindShiftCapsInfo( aRangeId ); - - if ( !shiftCapsInfo ) - { - return KPeninputLayoutConfigInvalidId; - } - else - { - CPeninputShiftCapsInfo::TPeninputShiftCapsSingle* shiftCapsSingle = - shiftCapsInfo->FindShiftCapsSingleByCase( aCase ); - if ( shiftCapsSingle ) - { - return shiftCapsSingle->iVkbLayoutId; - } - else - { - return KPeninputLayoutConfigInvalidId; - } - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputlayoutwindow.cpp --- a/textinput/peninputcommonlayout/src/peninputlayoutwindow.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2259 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: common layout window for UI interface of VKB and HWR -* -*/ - - -// System includes -#include - -#include -#include -#include -#include // Use global signal -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// User includes -#include "peninputdataconverter.h" -#include "peninputrangebarinfo.h" -#include "peninputlayoutwindow.h" -#include "peninputclientlayoutinfo.h" -#include "peninputdataprovider.h" -#include "peninputlayoutcontext.h" -#include "peninputvkbctrlext.h" -#include "peninputnumerickeymappingmgr.h" - -// Constants -const TInt KIntLengthForByte = 8; -const TInt KPeninputLayoutWindowRegionCount = 8; -const TInt KPeninputLayoutWindowUnitWidth = 12; -const TInt KInvalidIndex = -1; - -const TInt32 KInvalidResId = -1; -const TInt KInvalidImg = -1 ; -const TUint32 KDefaultTextColor = 0x000000; -const TUint32 KDefaultShadowTextColor = 0xffffff; -const TInt KNotSupportSkin = -1; - -const TInt KIntSizeToInt16 = 2; - - - -// ======== MEMBER FUNCTIONS ======== - -// ------------------------------------------------------------------------ -// CPeninputLayoutWindow::CPeninputLayoutWindow -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputLayoutWindow::CPeninputLayoutWindow( - CFepUiLayout* aUiLayout, MPeninputLayoutContext* aLayoutContext ) - : CAknFepCtrlBaseWindow( aUiLayout, EPeninutWindowCtrlIdBaseWindow ), - iConfigInfo( NULL ), iLayoutContext( aLayoutContext ), - iLastUsedTotalColumns( KPeninputLayoutWindowUnitWidth ), - iFirstTimeConstruct( ETrue ), - iSwitchFontSet(EFalse), - iUnitSizeChange(EFalse) - { - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ConstructL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::ConstructL() - { - BaseConstructL(); - - if( iLayoutContext->LayoutType() == EPluginInputModeVkb ) - { - iVkbLayout = CAknFepCtrlVkbLayout::NewL(); - } - else - { - iVkbLayout = NULL; - } - - CCoeEnv* coeEnv = CCoeEnv::Static(); - - // Set up resources - TFileName resFileName = GetWindowResFileName(); - BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resFileName ); - iWinResId = coeEnv->AddResourceFileL( resFileName ); - - TResourceReader reader; - - coeEnv->CreateResourceReaderLC( reader, GetWindowResId() ); - SetResourceId( GetWindowResId() ); - ConstructFromResourceL(); - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - MoveButton()->AddEventObserver( UiLayout() ); - iCtrlPool = CPeninputCtrlPool::NewL(); - - CreateAllControlsL(); - SetControlsFont(); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::~CPeninputLayoutWindow -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputLayoutWindow::~CPeninputLayoutWindow() - { - delete iCtrlPool; - delete iConfigInfo; - delete iKeyMappingMgr; - delete iVkbLayout; - // Delete resource file from CoeEnv - CCoeEnv::Static()->DeleteResourceFile( iWinResId ); - - CCoeEnv::Static()->DeleteResourceFile( iConfigResId ); - - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ConstructFromResourceL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::ConstructFromResourceL( - TResourceReader& aResReader ) - { - TInt supportskin = aResReader.ReadInt16(); - - if (iFirstTimeConstruct && (supportskin != KNotSupportSkin)) - { - UiLayout()->AddControlL(this); - } - - const TInt32 moveBtnResId = aResReader.ReadInt32(); - const TInt32 closeBtnResId = aResReader.ReadInt32(); - const TInt32 icfResId = aResReader.ReadInt32(); - const TInt32 optionBtnResId = aResReader.ReadInt32(); - const TInt32 keymappingResId = aResReader.ReadInt32(); - const TInt32 shadowResId = aResReader.ReadInt32(); - const TInt32 arrowLeftResId = aResReader.ReadInt32(); - const TInt32 arrowRightResId = aResReader.ReadInt32(); - const TInt32 bgImageResId = aResReader.ReadInt32(); - - TResourceReader resReader; - - TBool multiLine = EFalse; - - if (iFirstTimeConstruct) - { - // Read bitmaps of close and move button - CCoeEnv::Static()->CreateResourceReaderLC( resReader, moveBtnResId ); - MoveButton()->SetResourceId( moveBtnResId ); - MoveButton()->ConstructFromResourceL(); - CleanupStack::PopAndDestroy( 1 ); - - CCoeEnv::Static()->CreateResourceReaderLC( resReader, closeBtnResId ); - CloseButton()->SetResourceId( closeBtnResId ); - CloseButton()->ConstructFromResourceL(); - CleanupStack::PopAndDestroy( 1 ); - - // Read information of key mapping - CCoeEnv::Static()->CreateResourceReaderLC( resReader, keymappingResId ); - iKeyMappingMgr = CPeninputNumericKepMappingMgr::NewL( resReader ); - CleanupStack::PopAndDestroy( 1 ); - - - multiLine = IsMultiLineIcf(); - - // Add input context field into the headpane - if (multiLine) - { - AddMultiContextFieldL(); - } - else - { - AddContextFieldL(); - } - - - // Add touch input button into the headpane - AddTouchInputButtonL( optionBtnResId ); - } - else - { - multiLine = IsMultiLineIcf(); - CControlGroup::ConstructFromResourceL(); - } - - // Read information of shadow - CCoeEnv::Static()->CreateResourceReaderLC( resReader, shadowResId ); - ReadShadowInfoL( resReader ); - CleanupStack::PopAndDestroy( 1 ); - - if (!multiLine) - { - //Read resource of icf - CCoeEnv::Static()->CreateResourceReaderLC( resReader, icfResId ); - ReadIcfInfo( resReader ); - CleanupStack::PopAndDestroy( 1 ); - } - else - { - ReadMultiLineIcfInforL(icfResId); - } - - // Read background image resource - ReadBackgroundInfoL( bgImageResId ); - iFirstTimeConstruct = EFalse; - } - -// ----------------------------------------------------------------------------- -// CPeninputLayoutWindow::ConstructFromResourceL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - User::Leave(KErrArgument); - } - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - - TInt supportskin = reader.ReadInt16(); - - if (iFirstTimeConstruct && (supportskin != KNotSupportSkin)) - { - UiLayout()->AddControlL(this); - } - - const TInt32 moveBtnResId = reader.ReadInt32(); - const TInt32 closeBtnResId = reader.ReadInt32(); - const TInt32 icfResId = reader.ReadInt32(); - const TInt32 optionBtnResId = reader.ReadInt32(); - const TInt32 keymappingResId = reader.ReadInt32(); - const TInt32 shadowResId = reader.ReadInt32(); - const TInt32 arrowLeftResId = reader.ReadInt32(); - const TInt32 arrowRightResId = reader.ReadInt32(); - const TInt32 bgImageResId = reader.ReadInt32(); - - - TResourceReader resReader; - TBool multiLine = EFalse; - - if (iFirstTimeConstruct) - { - // Read bitmaps of close and move button - CCoeEnv::Static()->CreateResourceReaderLC( resReader, moveBtnResId ); - MoveButton()->SetResourceId( moveBtnResId ); - MoveButton()->ConstructFromResourceL(); - CleanupStack::PopAndDestroy( 1 ); - - CCoeEnv::Static()->CreateResourceReaderLC( resReader, closeBtnResId ); - CloseButton()->SetResourceId( closeBtnResId ); - CloseButton()->ConstructFromResourceL(); - CleanupStack::PopAndDestroy( 1 ); - - // Read information of key mapping - CCoeEnv::Static()->CreateResourceReaderLC( resReader, keymappingResId ); - iKeyMappingMgr = CPeninputNumericKepMappingMgr::NewL( resReader ); - CleanupStack::PopAndDestroy( 1 ); - - multiLine = IsMultiLineIcf(); - - // Add input context field into the headpane - if (multiLine) - { - AddMultiContextFieldL(); - } - else - { - AddContextFieldL(); - } - - // Add touch input button into the headpane - AddTouchInputButtonL( optionBtnResId ); - } - else - { - multiLine = IsMultiLineIcf(); - CControlGroup::ConstructFromResourceL(); - } - - // Read information of shadow - CCoeEnv::Static()->CreateResourceReaderLC( resReader, shadowResId ); - ReadShadowInfoL( resReader ); - CleanupStack::PopAndDestroy( 1 ); - - if (!multiLine) - { - //Read resource of icf - CCoeEnv::Static()->CreateResourceReaderLC( resReader, icfResId ); - ReadIcfInfo( resReader ); - CleanupStack::PopAndDestroy( 1 ); - } - else - { - ReadMultiLineIcfInforL(icfResId); - } - - CleanupStack::PopAndDestroy(); // reader - - // Read background image resource - ReadBackgroundInfoL( bgImageResId ); - - if( iLayoutContext->LayoutType() == EPluginInputModeVkb ) - { - iVkbLayout->ConstructFromResourceL(); - } - - iFirstTimeConstruct = EFalse; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::SizeChanged -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::SizeChanged( TBool /*aLandscapeStyle*/ ) - { - iLangOrSizeChanged = ETrue; - ChangeUnitSize(); - - ReadLafForShadow(); - - if ( iConfigInfo ) - { - ChangeClientSize(); - // Change the size of base window - SizeChangedForBaseWindow( iLastUsedTotalColumns ); - - } - - TInt style = EPeninputPositionChangeBrJustify; - TBuf bufStyle; - bufStyle = ( TUint16* )&style; - HandleControlEvent(EPeninputLayoutEventMovePosition, NULL, bufStyle); - - iLangOrSizeChanged = EFalse; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ReadLafForShadow -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindow::ReadLafForShadow() - { - if(!CPeninputDataConverter::AnyToInt - (iLayoutContext->RequestData(EAkninputDataTypeSizeChanging))) - { - return; - } - - TRect anyRect; - - TAknWindowLineLayout shadowPane; - TAknWindowLineLayout shadowTl; - TAknWindowLineLayout shadowBr; - TAknLayoutRect shadowRect; - TAknLayoutRect shadowTlRect; - TAknLayoutRect shadowBrRect; - - shadowPane = AknLayoutScalable_Avkon::bg_popup_fep_shadow_pane(1).LayoutLine(); - shadowRect.LayoutRect(anyRect, shadowPane); - - shadowTl = AknLayoutScalable_Avkon::bg_popup_fep_shadow_pane_g1().LayoutLine(); - shadowTlRect.LayoutRect(shadowRect.Rect(), shadowTl); - - shadowBr = AknLayoutScalable_Avkon::bg_popup_fep_shadow_pane_g8().LayoutLine(); - shadowBrRect.LayoutRect(shadowRect.Rect(), shadowBr); - - iShadowTlWidth = shadowTlRect.Rect().Size().iWidth; - iShadowTlHeight = shadowTlRect.Rect().Size().iHeight; - iShadowBrWidth = shadowBrRect.Rect().Size().iWidth; - iShadowBrHeight = shadowBrRect.Rect().Size().iHeight; - - //TRect newWinRect = Rect(); - //newWinRect.iTl = ShadowRect().iTl + TPoint(iShadowTlWidth, iShadowTlHeight); - //SetRect( newWinRect ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::SizeChanged -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindow::SizeChangedForBaseWindow( TInt aTotalColumns ) - { - //only responsible for controls that layout window managed - //if ( ( aTotalColumns != iLastUsedTotalColumns ) || iLangOrSizeChanged ) - { - TRect wndRect = Rect(); - TRect rtTitleBar = TitleBar()->Rect(); - - TInt UnitWidth = *( static_cast( iLayoutContext->RequestData - ( EPeninputDataTypeUnitWidth ) ) ); - - TInt UnitHeight = *( static_cast( iLayoutContext->RequestData - ( EPeninputDataTypeUnitHeight ) ) ); - - TInt moveBtnColumns = 1; - TInt closeBtnColumns = 1; - TInt optionBtnColumns = 1; - TInt headerPaneColumns; - TInt icfColumns; - - //Call SetRect function of dragbutton - if( iLayoutContext->LayoutType() == EPluginInputModeVkb) - { - moveBtnColumns = 2; - closeBtnColumns = 2; - } - - TRect rectClose ( rtTitleBar.iTl, TSize( closeBtnColumns * UnitWidth, UnitHeight ) ); - TRect innerRect; - AknPenImageUtils::CalculateGraphicRect( rectClose, innerRect ); - CloseButton()->SizeChanged( rectClose, innerRect, ETrue ); - - //Call SetRect function of Head pane - headerPaneColumns = aTotalColumns - moveBtnColumns - closeBtnColumns; - TRect rectHeader ( TPoint(rectClose.iBr.iX, rectClose.iTl.iY ), - TSize( headerPaneColumns * UnitWidth, UnitHeight ) ); - HeaderPane()->SetRect( rectHeader ); - - //Call SetRect function of input context field - icfColumns = headerPaneColumns - optionBtnColumns; - TRect rectIcf( rectHeader.iTl, - TSize( icfColumns * UnitWidth, UnitHeight ) ); - if(ConfigInfo()->Language() == ELangArabic) - { - rectIcf.iTl.iX = rectIcf.iTl.iX + UnitWidth; - } - if(IsMultiLineIcf()) - { - iMultiLineIcf->SetRect( rectIcf ); - } - else - { - iInputContextField->SetRect( rectIcf ); - } - if(ConfigInfo()->Language() == ELangArabic) - { - TRect rectBackspace(rectHeader.iTl, TSize(UnitWidth, UnitHeight)); - AknPenImageUtils::CalculateGraphicRect( rectBackspace, innerRect ); - iBackspaceButton->SizeChanged(rectBackspace, innerRect, ETrue); - } - //set the rect of option button - TRect rectOption ( TPoint( rectIcf.iBr.iX, rectIcf.iTl.iY ), - TSize( optionBtnColumns * UnitWidth, UnitHeight ) ); - AknPenImageUtils::CalculateGraphicRect( rectOption, innerRect ); - iTouchInputOptionButton->SizeChanged( rectOption, innerRect, ETrue ); - - //Call SetRect function of close button - TRect rectMove ( TPoint( rectHeader.iBr.iX, rectHeader.iTl.iY), - TSize( closeBtnColumns * UnitWidth, UnitHeight ) ); - AknPenImageUtils::CalculateGraphicRect( rectMove, innerRect ); - MoveButton()->SizeChanged( rectMove, innerRect, ETrue ); - - SetControlsFont(); - iLastUsedTotalColumns = aTotalColumns; - } - } -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::HandleControlEvent -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::HandleControlEvent( TInt aEventType, - CFepUiBaseCtrl* aCtrl, const TDesC& aEventData ) - { - // Call this function in base class - CAknFepCtrlBaseWindow::HandleControlEvent( aEventType, - aCtrl, aEventData ); - - TInt* data = ( TInt* ) aEventData.Ptr(); - - switch ( aEventType ) - { - case EPeninputLayoutEventSwitchLanguage: - { - TRAP_IGNORE( ChangeInputLanguageL( *data ) ); - } - break; - case EPeninputLayoutEventRange: - { - HandleRangeEvent( *data ); - } - break; - case EPeninputLayoutEventRangeLoop: - { - HandleRangeLoopEvent( *data ); - } - break; - case EPeninputLayoutEventShift: - { - HandleShiftBtnClicked(); - } - break; - case EPeninputLayoutEventCapslock: - { - HandleCapslockBtnClicked(); - } - break; - case EPeninputLayoutEventMovePosition: - { - TInt style = *( ( TUint16* ) aEventData.Ptr() ); - ChangeLayoutPosition( style ); - } - break; - case EPeninputLayoutEventSetPermittedRange: - { - if ( *data & ERangeNative ) - { - *data = *data | ERangeAccent | ERangeNativeNumber - | ERangeMixedText | ERangeMixedNumber; - } - else if(*data & ERangeEnglish) - { - *data = *data | ERangeAccent; - } - /* - if ( *data & ERangeNative ) - { - *data = *data | ERangeNativeNumber - | ERangeMixedText | ERangeMixedNumber; - } - */ - // Update data:range - iLayoutContext->SetData( EPeninputDataTypePermittedRange, data ); - - // Set range of range bar component - CFepUiBaseCtrl* bar = - iCtrlPool->Control( EPeninutWindowCtrlIdRangeBar ); - if ( bar ) - { - CAknFepCtrlRangeBar* rangebar = - static_cast( bar ); - rangebar->SetPermittedRanges( *data ); - } - } - break; - case EPeninputLayoutEventSetPermittedCase: - { - // Update data:case - iLayoutContext->SetData( EPeninputDataTypePermittedCase, data ); - - // Set range of case - CFepUiBaseCtrl* bar = - iCtrlPool->Control( EPeninutWindowCtrlIdRangeBar ); - if ( bar ) - { - CAknFepCtrlRangeBar* rangebar = - static_cast( bar ); - - rangebar->SetPermittedCase( ERangeEnglish, ECaseUpper, - ( *data & ECaseUpper) != 0 ); - rangebar->SetPermittedCase( ERangeEnglish, ECaseLower, - ( *data & ECaseLower) != 0 ); - rangebar->SetPermittedCase( ERangeEnglish, ECaseText, - ( *data & ECaseText) != 0 ); - } - } - break; - case EPeninputLayoutEventSetCase: - { - DoCaseChange( *data ); - } - break; - case EEventSizeChanged: - { - //if icf editor size changed, we need to inform owner - if(aCtrl == iInputContextField || - aCtrl == iMultiLineIcf ) - { - iLayoutContext->Sendkey( ESignalLayoutICFLengthChanged, KNullDesC ); - } - } - break; - default: - break; - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::SetEditorTextL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::SetEditorTextL( - const TFepInputContextFieldData& aData ) - { - if(IsMultiLineIcf()) - { - if (iMultiLineIcf) - { - iMultiLineIcf->SetTextL( aData ); - } - } - else - { - if (iInputContextField) - { - iInputContextField->SetTextL( aData ); - } - - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::SetEditorTextL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::SetTextIsSecret( TBool aData ) - { - if(IsMultiLineIcf()) - { - if (iMultiLineIcf) - { - iMultiLineIcf->SetTextIsSecret( aData ); - } - } - else - { - if (iInputContextField) - { - iInputContextField->SetTextIsSecret( aData ); - } - } - } - -void CPeninputLayoutWindow::SetNumberGrouping( TBool aData ) - { - if(IsMultiLineIcf()) - { - if (iMultiLineIcf) - { - iMultiLineIcf->SetNumberGrouping( aData ); - } - } - } - - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::DoClose -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputLayoutWindow::DoClose() - { - // Send EVkbEventWindowClose to layout - this->ReportEvent( EPeninputLayoutEventClose, KNullDesC ); - - // Return true which will permit the window close - return EFalse; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::AddContextFieldL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindow::AddContextFieldL() - { - // Get reference CControlGroup of headerPane - CControlGroup* headerPane = HeaderPane(); - - User::LeaveIfNull( headerPane ); - - // Input context field - iInputContextField = CFepInputContextField::NewL( TRect(), - UiLayout(), EPeninutWindowCtrlIdInputContextField ); - - // Transfer to headerPane - headerPane->AddControlL( iInputContextField ); - iInputContextField->SetFocus(ETrue); - - // Add layout as event observer - iInputContextField->AddEventObserver( UiLayout() ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::AddTouchInputButtonL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindow::AddTouchInputButtonL( TInt aResID ) - { - // Get reference CControlGroup of headerPane - CControlGroup* headerPane = HeaderPane(); - - User::LeaveIfNull( headerPane ); - - // Create Touch Input Option - iTouchInputOptionButton = CAknFepCtrlEventButton::NewL( UiLayout(), - EPeninutWindowCtrlIdOptionBtn, EPeninputLayoutEventOption, 0, - KAknsIIDQsnFrFunctionButtonNormal, - KAknsIIDQsnFrFunctionButtonPressed, - KAknsIIDQsnFrFunctionButtonInactive ); - - // Read resource - TResourceReader reader; - - CCoeEnv::Static()->CreateResourceReaderLC( reader, aResID ); - iTouchInputOptionButton->SetResourceId( aResID ); - iTouchInputOptionButton->ConstructFromResourceL(); - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - - // Add into the group - headerPane->AddControlL( iTouchInputOptionButton ); - iTouchInputOptionButton->AddEventObserver( UiLayout() ); - } - -// --------------------------------------------------------------------------- -// Get layout config method. It does a lasy initialization for a instance of -// CPeninputLayoutWindow::ConfigInfo -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputLayoutConfig* CPeninputLayoutWindow::ConfigInfo() const - { - return iConfigInfo; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::CheckResourceExist -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TBool CPeninputLayoutWindow::CheckResourceExist( const TDesC& aFileName ) - { - RFile file; - - if ( !aFileName.Length() ) - { - return EFalse; - } - - TInt rs = file.Open( CCoeEnv::Static()->FsSession(), aFileName, EFileRead ); - - if ( rs == KErrNotFound ) - { - return EFalse; - } - else - { - file.Close(); - - return ETrue; - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ChangeInputLanguageL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::ChangeInputLanguageL( TInt aLangID ) - { - // Determine whether a new language id is same as existing one, - if ( ConfigInfo() ) - { - // If language not changed, exit this function - if ( ConfigInfo()->Language() == aLangID ) - { - return; - } - } - - // First check file exist or not - TBool found = CheckResourceExist( GetWindowConfigResFileName( aLangID ) ); - if ( !found ) - { - aLangID = ELangEnglish; - found = CheckResourceExist( GetWindowConfigResFileName( aLangID ) ); - } - - if ( found ) - { - // Store language - iLayoutContext->SetData( EPeninputDataTypeInputLanguage, &aLangID ); - - if ( iLayoutContext->LayoutType() == EPluginInputModeVkb ) - { - CFepUiBaseCtrl* ctrl = - iCtrlPool->Control( EPeninutWindowCtrlIdVkbCtrl ); - if ( ctrl ) - { - ( static_cast( ctrl ) )->Reset(); - } - } - - ( const_cast&> - ( ClientPane()->ControlList() ) ).Reset(); - - // Re-construct config info - if ( iConfigInfo ) - { - delete iConfigInfo; - iConfigInfo = NULL; - } - - if (iConfigResId) - { - CCoeEnv::Static()->DeleteResourceFile( iConfigResId ); - } - - // construct resource utils - - CCoeEnv* coeEnv = CCoeEnv::Static(); - - // Set up resources - TFileName resFileName = GetWindowConfigResFileName( aLangID ); - BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resFileName ); - iConfigResId = coeEnv->AddResourceFileL( resFileName ); - - TResourceReader reader; - - coeEnv->CreateResourceReaderLC( reader, GetWindowConfigResId() ); - if ( iLayoutContext->LayoutType() == EPluginInputModeVkb ) - { - iVkbLayout->Reset(); - } - iConfigInfo = CPeninputLayoutConfig::NewL( *iVkbLayout, reader ); - - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - - // Re-construct rangebar - ChangeRangeBarL(); - - iLangOrSizeChanged = ETrue; - //ChangeClientSize(); - - TBuf<10> iISOCode; - AknPenInputUtils::GetISOLanguageCode - ( static_cast(aLangID), iISOCode ); - CFepUiBaseCtrl* langBtn = - iCtrlPool->Control( EPeninutWindowCtrlIdInputLangSwitcherBtn ); - - if ( langBtn ) - { - ( static_cast( langBtn ) )->SetText - ( iISOCode ); - UpdateArea(( static_cast( langBtn ) )->Rect(), - ETrue ); - } - TInt range = -1; - iLayoutContext->SetData( EPeninputDataTypeCurrentRange, &range ); - iLayoutContext->SetData( EPeninputDataTypeClientLayout, &range ); - - iMultiLineIcf->SetLanguageId( aLangID ); - } - else - { - // Report error, do nothing - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ChangeRangeBarL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindow::ChangeRangeBarL() - { - // Read range bar from config into and reconstruct range button - if ( iConfigInfo ) - { - TInt resid = iConfigInfo->RangebarResId(); - CFepUiBaseCtrl* bar = - iCtrlPool->Control( EPeninutWindowCtrlIdRangeBar ); - - if ( bar ) - { - CAknFepCtrlRangeBar* rangebar = - static_cast( bar ); - - CAknFepCtrlRangeBar::TRangeBarActionStyle style = - ( CAknFepCtrlRangeBar::TRangeBarActionStyle ) - iConfigInfo->RangeBarInfo()->RangeStyle(); - - rangebar->SetActionStyle( style ); - - TResourceReader reader; - - CCoeEnv::Static()->CreateResourceReaderLC( reader, resid ); - - rangebar->ConstructFromResourceL( reader ); - - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - } - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ChangeRange -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::ChangeRange( TInt aRange, TInt aVkbLayoutId, TBool aNotify ) - { - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - - - CFepUiBaseCtrl* bar = - iCtrlPool->Control( EPeninutWindowCtrlIdRangeBar ); - CAknFepCtrlRangeBar* rangebar = - static_cast( bar ); - - if ( rangebar ) - { - rangebar->ActiveRange( aRange ); - } - - if ( ( curRange != aRange ) || ( iLangOrSizeChanged ) ) - { - // Change client layout - //UiLayout()->LayoutOwner()->Hide(ETrue); - CPeninputRangeBarInfo* rangeBar = iConfigInfo->RangeBarInfo(); - CPeninputRangeInfo* rangeInfo = rangeBar->FindRange( aRange ); - - if ( !rangeInfo ) - { - aRange = ERangeNumber; - rangeInfo = rangeBar->FindRange( ERangeNumber ); - } - - // Get the whole columns - - iUnitSizeChange = ReconfigUnitSize(rangeInfo->ClientLayoutId()); - /*if (iUnitSizeChange) - { - UiLayout()->LayoutOwner()->Hide(ETrue); - } - */ - ChangeClientLayout( rangeInfo->ClientLayoutId() ); - - CPeninputClientLayoutInfo* clientLayout = - ConfigInfo()->FindClientLayoutInfo( rangeInfo->ClientLayoutId() ); - if ( clientLayout ) - { - SizeChangedForBaseWindow( clientLayout->Columns() ); - } - - // Update data:range - iLayoutContext->SetData( EPeninputDataTypeCurrentRange, &aRange ); - - // Notify fep the new range - if ( aNotify ) - { - TBuf buf; - CPeninputDataConverter::IntToDesc( aRange, buf ); - iLayoutContext->Sendkey( ESignalRange, buf ); - } - - // Change vkb layout - if ( iLayoutContext->LayoutType() == EPluginInputModeVkb ) - { - if ( ( aRange == ERangeEnglish ) || ( aRange == ERangeAccent ) - || ( ConfigInfo()->CaseSensitive() - && ( aRange == ERangeNative ) ) ) - { - // Change shift and capslock button status according to the current case - TInt curCase = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCase ) ); - TInt shfit; - TInt capslock; - - CPeninputDataConverter::ShiftCapslockByCase( curCase, - shfit, capslock ); - - iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shfit ); - ChangeButtonStatus( shfit, EPeninutWindowCtrlIdShiftBtn ); - iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &capslock ); - ChangeButtonStatus( capslock, EPeninutWindowCtrlIdCapslockBtn ); - - TInt caseid = CaseByShiftCapslockStatus(); - TInt vkblayoutid = - ConfigInfo()->ShiftCapsSingleVkbLayoutId( aRange, caseid ); - - if ( aRange == ERangeAccent ) - { - TInt curAccentIndex = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentAccent ) ); - vkblayoutid = vkblayoutid + curAccentIndex * 2; - } - - // Change vkb layout - ChangeVkbLayout( vkblayoutid ); - } - else - { - TInt flag = 0; - - iLayoutContext->SetData( EPeninputDataTypeShiftDown, &flag ); - ChangeButtonStatus( 0, EPeninutWindowCtrlIdShiftBtn ); - iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &flag ); - ChangeButtonStatus( 0, EPeninutWindowCtrlIdCapslockBtn ); - - // Change vkb layout - if ( aVkbLayoutId ) - { - ChangeVkbLayout( aVkbLayoutId ); - } - else - { - ChangeVkbLayout( rangeInfo->VkbLayoutId() ); - } - } - - } - - /*if (iUnitSizeChange) - { - //SizeChanged(ETrue); - const TRect rect = ChangeUnitSize(); - ReadLafForShadow( rect ); - if ( iConfigInfo ) - { - // Change the size of base window - SizeChangedForBaseWindow( iLastUsedTotalColumns ); - ChangeClientSize(); - } - UiLayout()->LayoutOwner()->Hide(EFalse); - iUnitSizeChange = EFalse; - }*/ - - if ( ( iLayoutContext->LayoutType() == EPluginInputModeVkb ) - && ( curRange == ERangeNumber ) && ( curRange == aRange ) ) - { - // Dimmed some keys if needed - DimKeys(); - } - - UiLayout()->Draw(); - } - - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ChangeClientLayout -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::ChangeClientLayout( TInt aClientLayoutId ) - { - TInt curClientId = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeClientLayout ) ); - - if ( ( curClientId != aClientLayoutId ) || ( iLangOrSizeChanged ) ) - { - // Re-Orginize all controls according to the configuration - ReorganizeControls( aClientLayoutId, ETrue ); - - // Update data:client layout id - iLayoutContext->SetData( EPeninputDataTypeClientLayout, - &aClientLayoutId ); - - // Reset lang changed flag - if ( ( iLangOrSizeChanged ) - && ( iLayoutContext->LayoutType() != EPluginInputModeVkb ) ) - { - iLangOrSizeChanged = EFalse; - } - - //iUnitSizeChange = ReconfigUnitSize(aClientLayoutId); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ChangeVkbLayout -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::ChangeVkbLayout( TInt aVkbLayoutId ) - { - TInt latchedFlag = CPeninputDataConverter::AnyToInt( - iLayoutContext->RequestData(EAkninputDataTypeLatchedSet)); - // If the DeadKey is latched, cancel it and then change the VKB layout - if(latchedFlag) - { - RPointerArray vkbListInfo; - RPointerArray keyInfoList; - - vkbListInfo = iVkbLayout->VkbLayoutInfoList(); - TInt vkbListNum = vkbListInfo.Count(); - - CVirtualKey* pKey; - TBool deadKeyChange = EFalse; - // Find the latched DeadKey in all the Vkb layout - for(TInt i = 0; i < vkbListNum; i++) - { - // Get key info list in one VKB layout - keyInfoList = vkbListInfo[i]->KeyInfoList(); - TInt keyListNum = keyInfoList.Count(); - for(TInt j = 0; j < keyListNum; j++) - { - pKey = keyInfoList[j]->Key(); - if(pKey->Latched()) - { - // Unlatch the DeadKey - pKey->SetLatched(EFalse); - - // Set the DeadKey state - iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange); - deadKeyChange = ETrue; - break; - } - } - if(deadKeyChange) - { - break; - } - } - } - - TInt curVkbId = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeVkbLayout ) ); - - if ( ( curVkbId != aVkbLayoutId ) || ( iLangOrSizeChanged ) ) - { - iVkbLayout->ChangeVkbLayout( aVkbLayoutId ); - - TInt curClientId = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeClientLayout ) ); - CPeninputControlInfo* vkbInfo = iConfigInfo->FindClientLayoutInfo - ( curClientId )->FindControlInfo( EPeninutWindowCtrlIdVkbCtrl ); - - TRect rect; - CPeninputVkbCtrlExt* vkbCtrl = static_cast - ( ClientPane()->ControlById( EPeninutWindowCtrlIdVkbCtrl ) ); - - if ( vkbInfo ) - { - TInt unitWidth = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeUnitWidth ) ); - - TInt unitHeight = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData - ( EPeninputDataTypeUnitHeight ) ); - - rect.iTl = vkbCtrl->Rect().iTl + TPoint( vkbInfo->BeginColumn() - * unitWidth, vkbInfo->BeginRow() * unitHeight ); - TInt cols = vkbInfo->EndColumn() - vkbInfo->BeginColumn(); - TInt rows = vkbInfo->EndRow() - vkbInfo->BeginRow(); - rect.SetSize( TSize( cols * unitWidth, rows * unitHeight ) ); - } - - CPeninputVkbLayoutInfo* vkblayout = - ConfigInfo()->FindVkbLayoutInfo( aVkbLayoutId ); - - if ( vkbCtrl && vkblayout ) - { - vkbCtrl->SetRect( rect ); - DimKeys(); - - // Make the true draw - UpdateArea( vkbCtrl->Rect(), EFalse ); - } - - // Update data : vkb layout id - iLayoutContext->SetData( EPeninputDataTypeVkbLayout, &aVkbLayoutId ); - - // Reset lang changed flag - if ( iLangOrSizeChanged ) - { - iLangOrSizeChanged = EFalse; - } - } - - } - -// -------------------------------------------------------------------------- -// CPeninputLayoutWindow::HandleRangeEvent -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::HandleRangeEvent( TInt aRange ) - { - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - - if (!IsCanChangeRange(aRange)) - { - ChangeToPreviousRange(curRange); - return; - } - - CPeninputRangeBarInfo* rangeBar = iConfigInfo->RangeBarInfo(); - if ( !rangeBar ) - { - return; - } - - CPeninputRangeInfo* rangeInfo = rangeBar->FindRange( aRange ); - - if ( !rangeInfo ) - { - return; - } - - TInt responseStyle = rangeInfo->ResponseStyle(); - if ( responseStyle == EPeninputRangeResponseNoAction ) - { - return; - } - - if ( curRange != aRange ) - { - if ( responseStyle == EPeninputRangeResponseSwitchRange ) - { - TInt index = KInvalidIndex; - - if ( aRange == ERangeAccent ) - { - index = 0; - } - iLayoutContext->SetData( EPeninputDataTypeCurrentAccent, &index ); - - ChangeRange( aRange ); - - // When change range mannually, make the entire window visible - TInt style = EPeninputPositionChangeBrJustify; - TBuf bufStyle; - bufStyle = ( TUint16* )&style; - HandleControlEvent(EPeninputLayoutEventMovePosition, NULL, bufStyle); - } - else if ( responseStyle == EPeninputRangeResponsePopupChoiceItem ) - { - PopupChoiceList(); - } - } - } - -// -------------------------------------------------------------------------- -// CPeninputLayoutWindow::HandleRangeLoopEvent -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::HandleRangeLoopEvent( TInt aLoop ) - { - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - - CFepUiBaseCtrl* ctrl = iCtrlPool->Control( EPeninutWindowCtrlIdRangeBar ); - CAknFepCtrlRangeBar* rangebar = static_cast( ctrl ); - - if ( rangebar ) - { - TRAP_IGNORE( rangebar->SetCaseL( curRange, aLoop ) ); - - if ( ( curRange == ERangeEnglish ) || ( ConfigInfo()->CaseSensitive() - && ( curRange == ERangeNative ) ) ) - { - TInt curCase = rangebar->GetCase( curRange ); - - - - // Store case in the data manager, the engine will - // get notice at the same time - iLayoutContext->SetData( EPeninputDataTypeCase, &curCase ); - - // Notify fep the new case - TBuf buf; - CPeninputDataConverter::IntToDesc( curCase, buf ); - iLayoutContext->Sendkey( ESignalCaseMode, buf ); - } - } - } - -// -------------------------------------------------------------------------- -// CPeninputLayoutWindow::CaseByShiftCapslockStatus -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputLayoutWindow::CaseByShiftCapslockStatus() - { - TInt shiftStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) ); - TInt capslockStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCapslockDown ) ); - - return ( capslockStatus * 2 + shiftStatus ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::HandleShiftBtnClicked -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::HandleShiftBtnClicked() - { - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - TBool flag = ( curRange == ERangeEnglish ) || ( curRange == ERangeAccent ) - || ( ConfigInfo()->CaseSensitive() && ( curRange == ERangeNative ) ); - - if ( flag && !( iLayoutContext->IsShiftPermitted() ) ) - { - ChangeButtonStatus( 0, EPeninutWindowCtrlIdShiftBtn ); - return; - } - - TInt shiftStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) ); - - if ( shiftStatus ) - { - shiftStatus = 0; - } - else - { - shiftStatus = 1; - } - - // Update data - iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shiftStatus ); - ChangeButtonStatus( shiftStatus, EPeninutWindowCtrlIdShiftBtn ); - - // Update vkb layout - TInt caseid = CaseByShiftCapslockStatus(); - - TInt vkbLayout = iConfigInfo->ShiftCapsSingleVkbLayoutId( curRange, - caseid ); - - TInt responseStyle = - iConfigInfo->RangeBarInfo()->FindRange( curRange )->ResponseStyle(); - if ( ( curRange == ERangeAccent ) - && ( responseStyle == EPeninputRangeResponsePopupChoiceItem ) ) - { - TInt curAccentIndex = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentAccent ) ); - vkbLayout = vkbLayout + curAccentIndex * 2; - } - - ChangeVkbLayout( vkbLayout ); - - // Synchronize case if needed - if ( flag ) - { - // Notify fep the new case - TBuf buf; - TInt fepcase = CPeninputDataConverter::FepCaseByCaseId( caseid ); - iLayoutContext->SetData( EPeninputDataTypeCase, &fepcase ); - CPeninputDataConverter::IntToDesc( fepcase, buf ); - iLayoutContext->Sendkey( ESignalCaseMode, buf ); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::HandleCapslockBtnClicked -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::HandleCapslockBtnClicked() - { - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - TBool flag = ( curRange == ERangeEnglish ) || ( curRange == ERangeAccent ) - || ( ConfigInfo()->CaseSensitive() && ( curRange == ERangeNative ) ); - - if ( flag && !( iLayoutContext->IsCapsLockPermitted() ) ) - { - ChangeButtonStatus( 0, EPeninutWindowCtrlIdCapslockBtn ); - return; - } - - TInt capslockStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCapslockDown ) ); - TInt shiftStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) ); - - if ( capslockStatus ) - { - capslockStatus = 0; - } - else - { - capslockStatus = 1; - } - - if( shiftStatus ) - { - shiftStatus = 0; - iLayoutContext->SetData( EPeninputDataTypeShiftDown, - &shiftStatus ); - ChangeButtonStatus( shiftStatus, EPeninutWindowCtrlIdShiftBtn ); - } - - // Update data - iLayoutContext->SetData( EPeninputDataTypeCapslockDown, - &capslockStatus ); - ChangeButtonStatus( capslockStatus, EPeninutWindowCtrlIdCapslockBtn ); - - // Update vkb layout - TInt caseid = CaseByShiftCapslockStatus(); - TInt vkbLayout = iConfigInfo->ShiftCapsSingleVkbLayoutId( curRange, - caseid ); - - TInt responseStyle = - iConfigInfo->RangeBarInfo()->FindRange( curRange )->ResponseStyle(); - if ( ( curRange == ERangeAccent ) - && ( responseStyle == EPeninputRangeResponsePopupChoiceItem ) ) - { - TInt curAccentIndex = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentAccent ) ); - vkbLayout = vkbLayout + curAccentIndex * 2; - } - - ChangeVkbLayout( vkbLayout ); - - // Synchronize case if needed - if ( flag ) - { - // Notify fep the new case - TBuf buf; - TInt fepcase = CPeninputDataConverter::FepCaseByCaseId( caseid ); - iLayoutContext->SetData( EPeninputDataTypeCase, &fepcase ); - CPeninputDataConverter::IntToDesc( fepcase, buf ); - iLayoutContext->Sendkey( ESignalCaseMode, buf ); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::DimKeys -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindow::DimKeys() - { - CPeninputVkbCtrlExt* vkbCtrl = static_cast - ( ClientPane()->ControlById( EPeninutWindowCtrlIdVkbCtrl ) ); - vkbCtrl->CancelDims(); - TInt currentRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - TInt permitRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypePermittedRange ) ); - TInt keyMapping = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeNumericKeymap ) ); - - if ( ( currentRange == ERangeNumber ) - && ( permitRange == ERangeNumber ) ) - { - HBufC* rs = NULL; - TRAP_IGNORE(rs = GetKeyMappingStringL(keyMapping)); - if( rs ) - { - vkbCtrl->DimKeys( rs ); - delete rs; - } - } - vkbCtrl->Draw(); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::AddControlL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::AddNotOwnedControl( - CFepUiBaseCtrl* aControl ) - { - //do nothing if we already has the control. - if ( KErrNotFound != ClientPane()->ControlList().Find( aControl ) ) - { - return; - } - - if ( aControl ) - { - ( const_cast&> - ( ClientPane()->ControlList() ) ).Append( aControl ); - aControl->SetParent( ClientPane() ); - RRegion region( KPeninputLayoutWindowRegionCount ); - region.Copy( ClientPane()->Region() ); - - region.AddRect( aControl->Rect() ); - ClientPane()->SetRegion( region ); - } - } -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ChangeButtonStatus -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::ChangeButtonStatus( const TInt aIsDown, - const TInt aControlId ) - { - CAknFepCtrlEventButton* button = - static_cast - ( ClientPane()->ControlById( aControlId ) ); - - if ( button ) - { - button->SetHighlight( aIsDown == 0 ? EFalse : ETrue ); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ChangeLayoutPosition -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::ChangeLayoutPosition( TInt aJustifyStyle ) - { - switch ( aJustifyStyle ) - { - case EPeninputPositionChangeBrJustify: - { - BottomRightJustify(); - } - break; - case EPeninputPositionChangeDataQuery: - { - BottomRightJustify(); - DataQueryJustify(); - } - break; - /*case EPeninputPositionChangeNone: - break;*/ - default: - { - TopLeftJustify(); - } - break; - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::SetWindowRect -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::SetWindowRect( const TRect& aRect ) - { - TRect rect = aRect; - - - TRect shadowRect = TRect( TPoint(), - TSize( aRect.Width() + iShadowBrWidth + iShadowTlWidth, - aRect.Height() + iShadowTlHeight + iShadowBrHeight) - ); - - rect.Move( TPoint(iShadowTlWidth, iShadowTlHeight) - rect.iTl ); - - SetRect( rect ); - RootControl()->SetRect( rect ); - UiLayout()->SetShadowRect( shadowRect ); - } - - -// ----------------------------------------------------------------------------- -// CPeninputLayoutWindow::SetSwitchBtnFont -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::SetSwitchBtnFont(CAknFepCtrlEventButton& aSwitchBtn) - { - // read switch font laf info only when need - if (CPeninputDataConverter::AnyToInt( - iLayoutContext->RequestData(EAkninputDataTypeSizeChanging)) || (!iSwitchFontSet)) - { - TAknTextLineLayout langSwitch; - TAknTextLineLayout langSwitchShadow; - - switch( iLayoutContext->LayoutType() ) - { - case EPluginInputModeVkb: - { - langSwitch = - AknLayoutScalable_Avkon::cell_vkb_side_pane_t1().LayoutLine(); - langSwitchShadow = - AknLayoutScalable_Avkon::cell_vkb_side_pane_t1_copy1().LayoutLine(); - } - break; - case EPluginInputModeHwr: - { - langSwitch = - AknLayoutScalable_Avkon::cell_hwr_side_pane_t1().LayoutLine(); - langSwitchShadow = - AknLayoutScalable_Avkon::cell_hwr_side_pane_t1_copy1().LayoutLine(); - } - break; - default: - { - return; - } - } - - iSwitchFont = langSwitch.iFont; - iSwitchShadowFont = langSwitchShadow.iFont; - } - - aSwitchBtn.SetFont(AknLayoutUtils::FontFromId(iSwitchFont, NULL)); - aSwitchBtn.SetShadowFont(AknLayoutUtils::FontFromId(iSwitchShadowFont, NULL)); - iSwitchFontSet = ETrue; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::TopLeftJustify -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::SetSwitchBtnTextColor(CAknFepCtrlEventButton& aSwitchBtn) - { - TRgb textColor; - TInt error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - textColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG59); - - if (error != KErrNone) - { - textColor = TRgb(KDefaultTextColor); - } - - aSwitchBtn.SetFontColor( textColor ); - - TRgb shadowTextColor; - error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - shadowTextColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG62); - - if (error != KErrNone) - { - shadowTextColor = TRgb(KDefaultShadowTextColor); - } - - aSwitchBtn.SetShadowFontColor( shadowTextColor ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::TopLeftJustify -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindow::TopLeftJustify() - { - // Read position from datamgr - TSize layoutSize = UiLayout()->Rect().Size(); - - TPoint tl = UiLayout()->Position(); - - TPoint oldBr = tl + layoutSize; - - if ( tl.iX < 0 ) - { - tl.iX = 0; - } - - if ( tl.iY < 0 ) - { - tl.iY = 0; - } - - TPoint br = tl + layoutSize; - - if ( br != oldBr ) - { - //Write the new position into CenRep - TInt x = 0; - TInt y = 0; - x = 0x0000FFFF & br.iX; - y = 0xFFFF0000 & ( br.iY << 16 ); - TInt pos = x | y; - iLayoutContext->SetData( EPeninputDataTypeWindowPosition, &pos ); - } - - //Set the layout position - //UiLayout()->SetRect( newRect ); - UiLayout()->LayoutOwner()->SetPosition( tl ); - //UiLayout()->LayoutOwner()->LayoutSizeChanged( newRect.Size() ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::BottomRightJustify -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindow::BottomRightJustify() - { - // Read position from datamgr - TSize layoutSize( UiLayout()->Rect().Size() ); - TPoint oldbr; - TPoint br; - TPoint tl; - TSize screenSize = *( ( TSize* ) iLayoutContext->RequestData - ( EPeninputDataTypeScreenSize ) ); - - TRect screenRect = TRect( TPoint( 0, 0 ), screenSize ); - - TInt windowPosition = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeWindowPosition ) ); - - oldbr.iX = windowPosition & 0x0000FFFF; - oldbr.iY = ( windowPosition & 0xFFFF0000 ) >> 16; - - br = oldbr; - - if ( !screenRect.Contains( br ) ) - { - if ( screenSize.iWidth < br.iX ) - { - br.iX = screenSize.iWidth; - } - if ( screenSize.iHeight < br.iY ) - { - br.iY = screenSize.iHeight; - } - } - - // Check the top left point is in screen - tl.iX = br.iX - layoutSize.iWidth; - if ( tl.iX < 0 ) - { - tl.iX = 0; - br.iX = layoutSize.iWidth; - } - - tl.iY = br.iY - layoutSize.iHeight; - if ( tl.iY < 0 ) - { - tl.iY = 0; - br.iY = layoutSize.iHeight; - } - - - if ( oldbr != br ) - { - //Write the new position into CenRep - TInt x = 0; - TInt y = 0; - x = 0x0000FFFF & br.iX; - y = 0xFFFF0000 & ( br.iY << 16 ); - TInt pos = x | y; - iLayoutContext->SetData( EPeninputDataTypeWindowPosition, &pos ); - } - - //Set the layout position - //UiLayout()->SetRect( newRect ); - //UiLayout()->LayoutOwner()->LayoutSizeChanged( newRect.Size() ); - UiLayout()->LayoutOwner()->SetPosition( tl ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::DataQueryJustify -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindow::DataQueryJustify() - { - TRect* dataQueryRect = ( TRect* )( iLayoutContext->RequestData - ( EPeninputDataTypeDataQueryDlgRect) ); - - TRect rect = TRect( UiLayout()->Position(), UiLayout()->Rect().Size() ); - - //move the VKB to the bottom-right corner - TSize scrsz = UiLayout()->ScreenSize(); - - if( scrsz.iWidth < scrsz.iHeight ) - { - return; - } - rect = TRect( TPoint( scrsz.iWidth - rect.Width(), scrsz.iHeight - rect.Height() ), - rect.Size() ); - - //Write the new position into CenRep - TInt x = 0; - TInt y = 0; - x = 0x0000FFFF & rect.iBr.iX; - y = 0xFFFF0000 & ( rect.iBr.iY << 16 ); - TInt pos = x | y; - iLayoutContext->SetData( EPeninputDataTypeWindowPosition, &pos ); - - /*if ( rect.Intersects( *dataQueryRect ) ) - { - TInt Y = dataQueryRect->iTl.iY; - TInt height = rect.iBr.iY - rect.iTl.iY; - rect.iTl.iY = Y - height; - rect.iBr.iY = Y; - - if( rect.iTl.iY <0 ) - { - rect.iTl.iY = 0; - rect.iBr.iY = height; - } - //Write the new position into CenRep - TInt x = 0; - TInt y = 0; - x = 0x0000FFFF & rect.iBr.iX; - y = 0xFFFF0000 & ( rect.iBr.iY << 16 ); - TInt pos = x | y; - iLayoutContext->SetData( EPeninputDataTypeWindowPosition, &pos ); - } - */ - //Set the layout position - UiLayout()->SetRect( rect ); - UiLayout()->LayoutOwner()->SetPosition( rect.iTl ); - UiLayout()->LayoutOwner()->LayoutSizeChanged( rect.Size() ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ReadShadowInfoL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindow::ReadShadowInfoL( TResourceReader aResReader ) - { - TPtrC bmpFileName = aResReader.ReadTPtrC(); - TInt32 imgMajorSkinId = aResReader.ReadInt32(); - - TAknsItemID id; - TInt skinitemid; - - MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); - - for ( TInt i = 0; i < KShadowBmpBr + 1; i++ ) - { - const TInt16 bmpId = aResReader.ReadInt16(); - const TInt16 bmpMskId = aResReader.ReadInt16(); - skinitemid = aResReader.ReadInt16(); - - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidImg) - { - CFbsBitmap* shadowImg = NULL; - CFbsBitmap* shadowMaskImg = NULL; - - if (bmpMskId != KInvalidImg) - { - AknsUtils::CreateIconL(skininstance, - id, - shadowImg, - shadowMaskImg, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateIconL(skininstance, - id, - shadowImg, - bmpFileName, - bmpId); - } - - UiLayout()->SetShadowBmp(shadowImg, shadowMaskImg, TShadowBitmapIndex(i)); - } - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ReadBackgroundInfoL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindow::ReadBackgroundInfoL( TInt aResId ) - { - if( aResId == 0 ) - return; - - if( BackgroundBmp() ) - { - CFbsBitmap* bkBmp = BackgroundBmp(); - delete bkBmp; - SetBackgroundBmp( NULL ); - } - if( BkMaskBmp() ) - { - CFbsBitmap* bkMaskBmp = BkMaskBmp(); - delete bkMaskBmp; - SetBackgroundMaskBmp( NULL ); - } - - TResourceReader resReader; - CCoeEnv::Static()->CreateResourceReaderLC( resReader, aResId ); - - TPtrC bmpFileName = resReader.ReadTPtrC(); - TInt32 imgMajorSkinId = resReader.ReadInt32(); - - TAknsItemID id; - TInt skinitemid; - - MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); - const TInt16 bmpId = resReader.ReadInt16(); - const TInt16 bmpMskId = resReader.ReadInt16(); - skinitemid = resReader.ReadInt16(); - id.Set(TInt(imgMajorSkinId), skinitemid); - - if (bmpId != KInvalidImg) - { - CFbsBitmap* backgroundImg = NULL; - CFbsBitmap* backgroundMaskImg = NULL; - if (bmpMskId != KInvalidImg) - { - AknsUtils::CreateIconL(skininstance, - id, - backgroundImg, - backgroundMaskImg, - bmpFileName, - bmpId, - bmpMskId); - } - else - { - AknsUtils::CreateIconL(skininstance, - id, - backgroundImg, - bmpFileName, - bmpId); - } - - SetBackgroundBmp( backgroundImg ); - SetBackgroundMaskBmp( backgroundMaskImg ); - } - CleanupStack::PopAndDestroy( 1 ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ReadIcfInfo -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::ReadIcfInfo( TResourceReader aResReader ) - { - TPtrC bmpFileName = aResReader.ReadTPtrC(); - TInt32 imgMajorSkinId = aResReader.ReadInt32(); - - TAknsItemID id; - TInt skinitemid; - - MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); - - const TInt16 icfbgId = aResReader.ReadInt16(); - const TInt16 icfbgmaskId = aResReader.ReadInt16(); - skinitemid = aResReader.ReadInt16(); - - id.Set( TInt( imgMajorSkinId ), skinitemid ); - - if ( icfbgId != KInvalidImg ) - { - CFbsBitmap* icfImg = NULL; - - if (icfbgmaskId != KInvalidImg) - { - CFbsBitmap* icfmaskImg = NULL; - - TRAP_IGNORE( AknsUtils::CreateIconL(skininstance, - id, - icfImg, - icfmaskImg, - bmpFileName, - icfbgId, - icfbgmaskId ) ); - - AknIconUtils::SetSize(icfmaskImg, TSize(1,1), EAspectRatioNotPreserved); - TRAP_IGNORE( iInputContextField->SetBackgroundMaskBitmapL(icfmaskImg) ); - } - else - { - TRAP_IGNORE( AknsUtils::CreateIconL(skininstance, - id, - icfImg, - bmpFileName, - icfbgId) ); - } - - AknIconUtils::SetSize(icfImg, TSize(1,1), EAspectRatioNotPreserved); - TRAP_IGNORE( iInputContextField->SetBackgroundBitmapL(icfImg) ); - } - - // read text color - TRgb textcolor; - TInt32 colorMajorSkinId = aResReader.ReadInt32(); - skinitemid = aResReader.ReadInt16(); - - id.Set(TInt(colorMajorSkinId), skinitemid); - - const TInt16 textcoloridx = aResReader.ReadInt16(); - - TInt error = AknsUtils::GetCachedColor(skininstance, - textcolor, - id, - textcoloridx); - - if (error == KErrNone) - { - iInputContextField->SetTextColor( textcolor ); - } - else - { - iInputContextField->SetTextColor( TRgb( KDefaultTextColor ) ); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::Draw -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::Draw() - { - // Draw shadow - CAknFepCtrlBaseWindow::Draw(); - - //DrawShadow(); - - UpdateArea(UiLayout()->Rect(), EFalse); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::GetKeyMappingStringL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -HBufC* CPeninputLayoutWindow::GetKeyMappingStringL(TInt aKeyMapping) - { - HBufC* rs = NULL; - if ( aKeyMapping == EKeymapFromResource ) - { - HBufC* customRes = (HBufC*) iLayoutContext->RequestData(EAknFepDataTypeUseDefinedResource); - _LIT(KTenNumbers,"0123456789"); - rs = HBufC::NewL(KTenNumbers().Length() + customRes->Length()); - rs->Des().Copy(*customRes); - rs->Des().Append(KTenNumbers); - } - else - { - rs = iKeyMappingMgr->KeyMappingStringL( aKeyMapping ); - } - - return rs; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::SetEnableSwitchToHwr -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::SetEnableSwitchToHwr(TBool aEnable) - { - CAknFepCtrlEventButton* switchToHwrBtn = static_cast - ( iCtrlPool->Control( EPeninutWindowCtrlIdSwitchToHwrBtn ) ); - - if( switchToHwrBtn != NULL ) - { - if ( aEnable ) - { - switchToHwrBtn->SetDimmed(EFalse); - } - else - { - switchToHwrBtn->SetDimmed(ETrue); - switchToHwrBtn->SetActive(EFalse); - } - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::SetEnableSettingBtn -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindow::SetEnableSettingBtn(TBool aEnable) - { - CAknFepCtrlEventButton* langSetBtn = static_cast - ( iCtrlPool->Control( EPeninutWindowCtrlIdInputLangSwitcherBtn ) ); - - - if( langSetBtn != NULL ) - { - if ( aEnable ) - { - langSetBtn->SetDimmed(EFalse); - iTouchInputOptionButton->SetDimmed(EFalse); - } - else - { - langSetBtn->SetDimmed(ETrue); - langSetBtn->SetActive(EFalse); - iTouchInputOptionButton->SetDimmed(ETrue); - iTouchInputOptionButton->SetActive(EFalse); - } - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ReconfigUnitSize -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputLayoutWindow::ReconfigUnitSize(TInt /*aClientLayoutId*/) - { - return EFalse; - } - -void CPeninputLayoutWindow::AddMultiContextFieldL() - { - const CFont* icfFont = NULL; - TAknTextLineLayout textPaneTextLayout; - - textPaneTextLayout = - AknLayoutScalable_Avkon::fep_vkb_top_text_pane_t1().LayoutLine(); - - icfFont = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, NULL ); - if ( icfFont ) - { - iMultiLineIcf = CFepLayoutMultiLineIcf::NewL( TRect(), - UiLayout(), EPeninputWindowCtrlIdMultiLineICF, - icfFont->HeightInPixels(), - icfFont->FontMaxHeight(),icfFont ); - - HeaderPane()->AddControlL( iMultiLineIcf ); - - // Add layout as event observer - iMultiLineIcf->AddEventObserver( UiLayout() ); - iMultiLineIcf->SetFocus(ETrue); - } - } - -EXPORT_C TBool CPeninputLayoutWindow::IsMultiLineIcf() - { - return EFalse; - } - - -void CPeninputLayoutWindow::ReadMultiLineIcfInforL(TInt aResID) - { - if (!aResID) - { - return; - } - - TResourceReader resReader; - CCoeEnv::Static()->CreateResourceReaderLC( resReader, aResID ); - - TPtrC bmpFileName = resReader.ReadTPtrC(); - TInt32 imgMajorSkinId = resReader.ReadInt32(); - - TAknsItemID id; - TInt skinitemid; - - MAknsSkinInstance* skininstance = AknsUtils::SkinInstance(); - - const TInt16 icfbgId = resReader.ReadInt16(); - const TInt16 icfbgmaskId = resReader.ReadInt16(); - skinitemid = resReader.ReadInt16(); - - id.Set( TInt( imgMajorSkinId ), skinitemid ); - - if ( icfbgId != KInvalidImg ) - { - CFbsBitmap* icfImg = NULL; - - if (icfbgmaskId != KInvalidImg) - { - CFbsBitmap* icfmaskImg = NULL; - - TRAP_IGNORE( AknsUtils::CreateIconL(skininstance, - id, - icfImg, - icfmaskImg, - bmpFileName, - icfbgId, - icfbgmaskId ) ); - - AknIconUtils::SetSize(icfmaskImg, TSize(1,1), EAspectRatioNotPreserved); - TRAP_IGNORE( iMultiLineIcf->SetBackgroundMaskBitmapL(icfmaskImg) ); - } - else - { - TRAP_IGNORE( AknsUtils::CreateIconL(skininstance, - id, - icfImg, - bmpFileName, - icfbgId) ); - } - - AknIconUtils::SetSize(icfImg, TSize(1,1), EAspectRatioNotPreserved); - TRAP_IGNORE( iMultiLineIcf->SetBackgroundBitmapL(icfImg) ); - } - - // read text color - TRgb textcolor; - TInt32 colorMajorSkinId = resReader.ReadInt32(); - skinitemid = resReader.ReadInt16(); - - id.Set(TInt(colorMajorSkinId), skinitemid); - - const TInt16 textcoloridx = resReader.ReadInt16(); - - TInt error = AknsUtils::GetCachedColor(skininstance, - textcolor, - id, - textcoloridx); - - if (error == KErrNone) - { - iMultiLineIcf->SetTextColorL( textcolor ); - } - else - { - iMultiLineIcf->SetTextColorL( TRgb( KDefaultTextColor ) ); - } - CleanupStack::PopAndDestroy( 1 ); // resReader*/ - } - -EXPORT_C TBool CPeninputLayoutWindow::IsCanChangeRange(TInt /*aRange*/) - { - return ETrue; - } - -EXPORT_C void CPeninputLayoutWindow::ChangeToPreviousRange(TInt /*aRange*/) - { - - } - -EXPORT_C void CPeninputLayoutWindow::SetTextAlignmentL( TInt aAlignment ) - { - if ( iMultiLineIcf && ConfigInfo()->Language() != ELangNone ) - { - iMultiLineIcf->SetTextAlignmentL( aAlignment, ConfigInfo()->Language() ); - } - } -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputlayoutwindowext.cpp --- a/textinput/peninputcommonlayout/src/peninputlayoutwindowext.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1829 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: common layout window for UI interface of VKB and HWR -* -*/ - - -// System includes -#include - -#include -#include -#include -#include // Use global signal -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include - -// User includes -#include "peninputdataconverter.h" -#include "peninputrangebarinfo.h" -#include "peninputlayoutwindowext.h" -#include "peninputclientlayoutinfo.h" -#include "peninputdataprovider.h" -#include "peninputlayoutcontext.h" -#include "peninputvkbctrlext.h" -#include "peninputnumerickeymappingmgr.h" - -// Constants -const TInt KIntLengthForByte = 8; -const TInt KPeninputLayoutWindowUnitWidth = 12; -const TInt KInvalidIndex = -1; - -//const TInt32 KInvalidResId = -1; -//const TInt KInvalidImg = -1 ; -const TUint32 KDefaultTextColor = 0x000000; -const TUint32 KDefaultShadowTextColor = 0xffffff; -//const TInt KNotSupportSkin = -1; - -const TInt KIntSizeToInt16 = 2; -const TInt KMaxNumericString = 32; - -// ======== MEMBER FUNCTIONS ======== - -// ------------------------------------------------------------------------ -// CPeninputLayoutWindowExt::CPeninputLayoutWindowExt -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputLayoutWindowExt::CPeninputLayoutWindowExt( - CFepUiLayout* aUiLayout, MPeninputLayoutContext* aLayoutContext ) - : CAknFepCtrlBaseWindowExt( aUiLayout, EPeninutWindowCtrlIdBaseWindow ), - iConfigInfo( NULL ), iLayoutContext( aLayoutContext ), - iLastUsedTotalColumns( KPeninputLayoutWindowUnitWidth ), - iFirstTimeConstruct( ETrue ), - iSwitchFontSet(EFalse), - iUnitSizeChange(EFalse) - { - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::ConstructL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::ConstructL() - { - BaseConstructL(); - - if( iLayoutContext->LayoutType() == EPluginInputModeVkb || - iLayoutContext->LayoutType() == EPluginInputModeFSQ ) - { - iVkbLayout = CAknFepCtrlVkbLayout::NewL(); - } - else - { - iVkbLayout = NULL; - } - - CCoeEnv* coeEnv = CCoeEnv::Static(); - - // Set up resources - TFileName resFileName = GetWindowResFileName(); - BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resFileName ); - iWinResId = coeEnv->AddResourceFileL( resFileName ); - - //TResourceReader reader; - - //coeEnv->CreateResourceReaderLC( reader, GetWindowResId() ); - SetResourceId( GetWindowResId() ); - ConstructFromResourceL(); - - if (!iKeyMappingMgr) - { - // if key mapping mgr is not constructed in ConstructFromResourceL, need to - // construct it here - TResourceReader resReader; - CCoeEnv::Static()->CreateResourceReaderLC(resReader, GetNumKeymappingResId()); - iKeyMappingMgr = CPeninputNumericKepMappingMgr::NewL(resReader); - CleanupStack::PopAndDestroy(1); - } - - CreateAllControlsL(); - SetControlsFont(); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::~CPeninputLayoutWindowExt -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputLayoutWindowExt::~CPeninputLayoutWindowExt() - { - delete iConfigInfo; - delete iKeyMappingMgr; - delete iVkbLayout; - // Delete resource file from CoeEnv - CCoeEnv::Static()->DeleteResourceFile( iWinResId ); - - CCoeEnv::Static()->DeleteResourceFile( iConfigResId ); - - delete iToneSet; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::SizeChanged -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::SizeChanged( TBool /*aLandscapeStyle*/ ) - { - iLangOrSizeChanged = ETrue; - ReadLafForShadow(); - ResetLastColRow(); - - if ( iConfigInfo ) - { - ChangeClientSize(); - } - - //ReadLafForShadow( rect ); - - TInt style = EPeninputPositionChangeBrJustify; - TBuf bufStyle; - bufStyle = ( TUint16* )&style; - HandleControlEvent(EPeninputLayoutEventMovePosition, NULL, bufStyle); - - iLangOrSizeChanged = EFalse; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::ReadLafForShadow -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindowExt::ReadLafForShadow() - { - TAknWindowLineLayout shadowPane; - TAknWindowLineLayout shadowTl; - TAknWindowLineLayout shadowBr; - TAknLayoutRect shadowRect; - TAknLayoutRect shadowTlRect; - TAknLayoutRect shadowBrRect; - - shadowPane = AknLayoutScalable_Avkon::bg_popup_fep_shadow_pane(1).LayoutLine(); - shadowRect.LayoutRect(TRect(), shadowPane); - - shadowTl = AknLayoutScalable_Avkon::bg_popup_fep_shadow_pane_g1().LayoutLine(); - shadowTlRect.LayoutRect(shadowRect.Rect(), shadowTl); - - shadowBr = AknLayoutScalable_Avkon::bg_popup_fep_shadow_pane_g8().LayoutLine(); - shadowBrRect.LayoutRect(shadowRect.Rect(), shadowBr); - - iShadowTlWidth = shadowTlRect.Rect().Size().iWidth; - iShadowTlHeight = shadowTlRect.Rect().Size().iHeight; - iShadowBrWidth = shadowBrRect.Rect().Size().iWidth; - iShadowBrHeight = shadowBrRect.Rect().Size().iHeight; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::SizeChanged -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::SizeChangedForBaseWindow( TInt /*aTotalColumns*/ ) - { - } -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::HandleControlEvent -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::HandleControlEvent( TInt aEventType, - CFepUiBaseCtrl* aCtrl, const TDesC& aEventData ) - { - // Call this function in base class - CAknFepCtrlBaseWindowExt::HandleControlEvent( aEventType, - aCtrl, aEventData ); - - TInt* data = ( TInt* ) aEventData.Ptr(); - - switch ( aEventType ) - { - case EEventButtonUp: - { - // check current range - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - if( aCtrl->ControlId() == EPeninutWindowCtrlIdShiftBtn) - { - if ( ( curRange == ERangeEnglish ) || ( curRange == ERangeAccent ) - || ( ConfigInfo()->CaseSensitive() && ( curRange == ERangeNative ) ) ) - { - CAknFepCtrlMultiModeButton* button = - static_cast( aCtrl ); - TInt realCase = button->GetRealCaseByMode( button->CurrentMode() ); - HandleMergedBtnClicked( realCase ); - } - else - { - HandleShiftAndCapslockBtnClicked(); - TInt shiftStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) ); - ChangeMergedButtonStatus( shiftStatus, 0 ); - } - } - - } - break; - case EPeninputLayoutEventSwitchLanguage: - { - TRAP_IGNORE( ChangeInputLanguageL( *data ) ); - } - break; - case EPeninputLayoutEventRange: - { - HandleRangeEvent( *data ); - } - break; - case EPeninputLayoutEventRangeLoop: - { - HandleRangeLoopEvent( *data ); - } - break; - case EPeninputLayoutEventShift: - { - HandleShiftAndCapslockBtnClicked(); - } - break; - case EPeninputLayoutEventCapslock: - { - HandleCapslockBtnClicked(); - } - break; - case EPeninputLayoutEventMovePosition: - { - TInt style = *( ( TUint16* ) aEventData.Ptr() ); - ChangeLayoutPosition( style ); - } - break; - case EPeninputLayoutEventSetPermittedRange: - { - if ( *data & ERangeNative ) - { - *data = *data | ERangeAccent | ERangeNativeNumber - | ERangeMixedText | ERangeMixedNumber; - } - else if(*data & ERangeEnglish) - { - *data = *data | ERangeAccent; - } - - iLayoutContext->SetData( EPeninputDataTypePermittedRange, data ); - - // Set range of range bar component - CFepUiBaseCtrl* bar = - Control( EPeninutWindowCtrlIdRangeBar ); - if ( bar ) - { - CAknFepCtrlRangeBar* rangebar = - static_cast( bar ); - rangebar->SetPermittedRanges( *data ); - } - } - break; - case EPeninputLayoutEventSetPermittedCase: - { - // Update data:case - iLayoutContext->SetData( EPeninputDataTypePermittedCase, data ); - - // Set range of case - CFepUiBaseCtrl* bar = - Control( EPeninutWindowCtrlIdRangeBar ); - if ( bar ) - { - CAknFepCtrlRangeBar* rangebar = - static_cast( bar ); - - rangebar->SetPermittedCase( ERangeEnglish, ECaseUpper, - ( *data & ECaseUpper) != 0 ); - rangebar->SetPermittedCase( ERangeEnglish, ECaseLower, - ( *data & ECaseLower) != 0 ); - rangebar->SetPermittedCase( ERangeEnglish, ECaseText, - ( *data & ECaseText) != 0 ); - } - } - break; - case EPeninputLayoutEventSetCase: - { - DoCaseChange( *data ); - } - break; - case EEventSizeChanged: - { - //if icf editor size changed, we need to inform owner - if(aCtrl->ControlId() == EPeninutWindowCtrlIdInputContextField || - aCtrl->ControlId() == EPeninputWindowCtrlIdMultiLineICF) - { - iLayoutContext->Sendkey( ESignalLayoutICFLengthChanged, KNullDesC ); - } - } - break; - default: - break; - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::SetEditorTextL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::SetEditorTextL( - const TFepInputContextFieldData& aData ) - { - if (Control(EPeninutWindowCtrlIdInputContextField)) - { - static_cast( Control(EPeninutWindowCtrlIdInputContextField))->SetTextL( aData ); - return; - } - - if (Control(EPeninputWindowCtrlIdMultiLineICF)) - { - CFepLayoutMultiLineIcf* multiIcf = - static_cast( Control(EPeninputWindowCtrlIdMultiLineICF)); - - multiIcf->SetTextL( aData ); - - if ( iLayoutContext->LayoutType() == EPluginInputModeVkb || - iLayoutContext->LayoutType() == EPluginInputModeFSQ ) - { - TInt lang = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeInputLanguage ) ); - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - - if ( lang == ELangVietnamese && curRange == ERangeEnglish ) - { - TBuf<1> preData; - multiIcf->ExtractText( preData, aData.iCurSel.LowerPos()-1, 1 ); - iVowelChar = EFalse; - - if ( KNullDesC() != preData ) - { - for (TUint i = 0; i < sizeof(VietVowelList) / sizeof(TText); ++i) - { - TBuf<1> buf; - buf.Append( VietVowelList[i] ); - if (preData == buf) - { - iVowelChar = ETrue; - break; - } - } - } - CPeninputVkbCtrlExt* vkbCtrl = static_cast - ( Control( EPeninutWindowCtrlIdVkbCtrl ) ); - vkbCtrl->DimKeySet( iToneSet, !iVowelChar ); - } - } - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::SetEditorTextL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::SetTextIsSecret( TBool aData ) - { - if ( Control(EPeninutWindowCtrlIdInputContextField)) - { - static_cast - (Control(EPeninutWindowCtrlIdInputContextField))->SetTextIsSecret( aData ); - } - else if (Control(EPeninputWindowCtrlIdMultiLineICF)) - { - static_cast - (Control(EPeninputWindowCtrlIdMultiLineICF))->SetTextIsSecret( aData ); - } - } - -void CPeninputLayoutWindowExt::SetNumberGrouping( TBool aData ) - { - if (Control(EPeninputWindowCtrlIdMultiLineICF)) - { - static_cast - (Control(EPeninputWindowCtrlIdMultiLineICF))->SetNumberGrouping( aData ); - } - } - - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::DoClose -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputLayoutWindowExt::DoClose() - { - // Send EVkbEventWindowClose to layout - this->ReportEvent( EPeninputLayoutEventClose, KNullDesC ); - - // Return true which will permit the window close - return EFalse; - } - - -// --------------------------------------------------------------------------- -// Get layout config method. It does a lasy initialization for a instance of -// CPeninputLayoutWindowExt::ConfigInfo -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C CPeninputLayoutConfig* CPeninputLayoutWindowExt::ConfigInfo() const - { - return iConfigInfo; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::CheckResourceExist -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -TBool CPeninputLayoutWindowExt::CheckResourceExist( const TDesC& aFileName ) - { - RFile file; - - if ( !aFileName.Length() ) - { - return EFalse; - } - - TInt rs = file.Open( CCoeEnv::Static()->FsSession(), aFileName, EFileRead ); - - if ( rs == KErrNotFound ) - { - return EFalse; - } - else - { - file.Close(); - - return ETrue; - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::ChangeInputLanguageL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::ChangeInputLanguageL( TInt aLangID ) - { - // Determine whether a new language id is same as existing one, - if ( ConfigInfo() ) - { - // If language not changed, exit this function - if ( ConfigInfo()->Language() == aLangID ) - { - return; - } - } - - // First check file exist or not - TBool found = CheckResourceExist( GetWindowConfigResFileName( aLangID ) ); - if ( !found ) - { - aLangID = ELangEnglish; - found = CheckResourceExist( GetWindowConfigResFileName( aLangID ) ); - } - - if ( found ) - { - // Store language - iLayoutContext->SetData( EPeninputDataTypeInputLanguage, &aLangID ); - - if ( iLayoutContext->LayoutType() == EPluginInputModeVkb || - iLayoutContext->LayoutType() == EPluginInputModeFSQ ) - { - CFepUiBaseCtrl* ctrl = - Control( EPeninutWindowCtrlIdVkbCtrl ); - if ( ctrl ) - { - ( static_cast( ctrl ) )->Reset(); - } - } - - // Re-construct config info - if ( iConfigInfo ) - { - delete iConfigInfo; - iConfigInfo = NULL; - } - - if (iConfigResId) - { - CCoeEnv::Static()->DeleteResourceFile( iConfigResId ); - } - - // construct resource utils - - CCoeEnv* coeEnv = CCoeEnv::Static(); - - // Set up resources - TFileName resFileName = GetWindowConfigResFileName( aLangID ); - BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resFileName ); - iConfigResId = coeEnv->AddResourceFileL( resFileName ); - - TResourceReader reader; - - coeEnv->CreateResourceReaderLC( reader, GetWindowConfigResId() ); - if ( iLayoutContext->LayoutType() == EPluginInputModeVkb || - iLayoutContext->LayoutType() == EPluginInputModeFSQ ) - { - iVkbLayout->Reset(); - } - iConfigInfo = CPeninputLayoutConfig::NewL( *iVkbLayout, reader ); - - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - - // Re-construct rangebar - ChangeRangeBarL(); - - //Reset range and layoutid - TInt range = -1; - iLayoutContext->SetData( EPeninputDataTypeCurrentRange, &range ); - iLayoutContext->SetData( EPeninputDataTypeClientLayout, &range ); - ResetLastColRow(); - iLangOrSizeChanged = ETrue; - - CFepUiBaseCtrl* icfCtrl = Control( EPeninputWindowCtrlIdMultiLineICF ); - if ( icfCtrl ) - { - static_cast(icfCtrl)->SetLanguageId( aLangID ); - } - - delete iToneSet; - iToneSet = NULL; - - if ( aLangID == ELangVietnamese ) - { - iToneSet = HBufC::NewL( KNumberOfToneMarks ); - - for (TInt index = 0; index < KNumberOfToneMarks; index ++) - { - iToneSet->Des().Append( VietToneMatrix[0][index] ); - } - } - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::ChangeRangeBarL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindowExt::ChangeRangeBarL() - { - // Read range bar from config into and reconstruct range button - if ( iConfigInfo ) - { - TInt resid = iConfigInfo->RangebarResId(); - CFepUiBaseCtrl* bar = - Control( EPeninutWindowCtrlIdRangeBar ); - - if ( bar ) - { - CAknFepCtrlRangeBar* rangebar = - static_cast( bar ); - - CAknFepCtrlRangeBar::TRangeBarActionStyle style = - ( CAknFepCtrlRangeBar::TRangeBarActionStyle ) - iConfigInfo->RangeBarInfo()->RangeStyle(); - - rangebar->SetActionStyle( style ); - - TResourceReader reader; - - CCoeEnv::Static()->CreateResourceReaderLC( reader, resid ); - - rangebar->ConstructFromResourceL( reader ); - - // Pop and destroy reader - CleanupStack::PopAndDestroy( 1 ); - } - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::ChangeRange -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::ChangeRange( TInt aRange, TInt aVkbLayoutId, - TBool aNotify ) - { - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - TInt curVkbLayout = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeVkbLayout ) ); - - CFepUiBaseCtrl* bar = - Control( EPeninutWindowCtrlIdRangeBar ); - CAknFepCtrlRangeBar* rangebar = - static_cast( bar ); - - if ( rangebar ) - { - rangebar->ActiveRange( aRange ); - } - - if (curRange != aRange || curVkbLayout != aVkbLayoutId || aRange == ERangeAccent) - { - // Update data:range - if (curRange != aRange) - iLayoutContext->SetData( EPeninputDataTypeCurrentRange, &aRange ); - - // Change client layout - CPeninputRangeBarInfo* rangeBarInfo = iConfigInfo->RangeBarInfo(); - CPeninputRangeInfo* rangeInfo = rangeBarInfo->FindRange(aRange); - - __ASSERT_DEBUG(rangeInfo, User::Panic(_L("Commonlayout-Invalid Range"), aRange)); - - ChangeClientLayout(rangeInfo->ClientLayoutId()); - - // Notify fep the new range - if (aNotify) - { - TBuf buf; - CPeninputDataConverter::IntToDesc( aRange, buf ); - iLayoutContext->Sendkey( ESignalRange, buf ); - - // When change range mannually, make the entire window visible - TInt style = EPeninputPositionChangeBrJustify; - TBuf bufStyle; - bufStyle = ( TUint16* )&style; - HandleControlEvent(EPeninputLayoutEventMovePosition, NULL, bufStyle); - } - - // Change vkb layout - if ( iLayoutContext->LayoutType() == EPluginInputModeVkb || - iLayoutContext->LayoutType() == EPluginInputModeFSQ ) - { - if ( ( aRange == ERangeEnglish ) || ( aRange == ERangeAccent ) - || ( aRange == ERangeNativeNumber ) - || ( ConfigInfo()->CaseSensitive() - && ( aRange == ERangeNative ) ) ) - { - // Change shift and capslock button status according to the current case - TInt curCase = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCase ) ); - TInt shfit; - TInt capslock; - - CPeninputDataConverter::ShiftCapslockByCase( curCase, - shfit, capslock ); - - iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shfit ); - //ChangeButtonStatus( shfit, EPeninutWindowCtrlIdShiftBtn ); - iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &capslock ); - //ChangeButtonStatus( capslock, EPeninutWindowCtrlIdCapslockBtn ); - ChangeMergedButtonStatus( shfit, capslock ); - - TInt caseid = CaseByShiftCapslockStatus(); - TInt vkblayoutid = - ConfigInfo()->ShiftCapsSingleVkbLayoutId( aRange, caseid ); - - if ( aRange == ERangeAccent ) - { - TInt curAccentIndex = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentAccent ) ); - vkblayoutid = vkblayoutid + curAccentIndex * 2; - } - - // Change vkb layout - ChangeVkbLayout( vkblayoutid ); - } - else - { - TInt flag = 0; - - iLayoutContext->SetData( EPeninputDataTypeShiftDown, &flag ); - //ChangeButtonStatus( 0, EPeninutWindowCtrlIdShiftBtn ); - iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &flag ); - //ChangeButtonStatus( 0, EPeninutWindowCtrlIdCapslockBtn ); - ChangeMergedButtonStatus( 0, 0 ); - - // Change vkb layout - if ( aVkbLayoutId ) - { - ChangeVkbLayout( aVkbLayoutId ); - } - else - { - ChangeVkbLayout( rangeInfo->VkbLayoutId() ); - } - } - } - - } - - if ( ( iLayoutContext->LayoutType() == EPluginInputModeVkb || - iLayoutContext->LayoutType() == EPluginInputModeFSQ ) - && ( curRange == ERangeNumber || curRange == ERangeNativeNumber ) - && ( curRange == aRange ) ) - { - // Dimmed some keys if needed - DimKeys(); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::ChangeClientLayout -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::ChangeClientLayout( - TInt aClientLayoutId ) - { - TInt curClientId = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeClientLayout ) ); - - if ( curClientId != aClientLayoutId ) - { - CPeninputClientLayoutInfo* clientLayout = - ConfigInfo()->FindClientLayoutInfo( aClientLayoutId ); - - __ASSERT_DEBUG( clientLayout, User::Panic(_L("Commonlayout-Invalid ClientLayout"), aClientLayoutId)); - - SetLafLayOut( clientLayout->Rows(), clientLayout->Columns() ); - - //SizeChangedForBaseWindow( clientLayout->Columns() ); - - // Re-Orginize all controls according to the configuration - ReorganizeControls( aClientLayoutId, ETrue ); - - // Update data:client layout id - iLayoutContext->SetData( EPeninputDataTypeClientLayout, - &aClientLayoutId ); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::ChangeVkbLayout -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::ChangeVkbLayout( TInt aVkbLayoutId ) - { - TInt latchedFlag = CPeninputDataConverter::AnyToInt( - iLayoutContext->RequestData(EAkninputDataTypeLatchedSet)); - // If the DeadKey is latched, cancel it and then change the VKB layout - if(latchedFlag) - { - RPointerArray vkbListInfo; - RPointerArray keyInfoList; - - vkbListInfo = iVkbLayout->VkbLayoutInfoList(); - TInt vkbListNum = vkbListInfo.Count(); - - CVirtualKey* pKey; - TBool deadKeyChange = EFalse; - // Find the latched DeadKey in all the Vkb layout - for(TInt i = 0; i < vkbListNum; i++) - { - // Get key info list in one VKB layout - keyInfoList = vkbListInfo[i]->KeyInfoList(); - TInt keyListNum = keyInfoList.Count(); - for(TInt j = 0; j < keyListNum; j++) - { - pKey = keyInfoList[j]->Key(); - if(pKey->Latched()) - { - // Unlatch the DeadKey - pKey->SetLatched(EFalse); - - // Set the DeadKey state - iLayoutContext->SetData(EAkninputDataTypeLatchedSet, &deadKeyChange); - deadKeyChange = ETrue; - break; - } - } - if(deadKeyChange) - { - break; - } - } - } - - TInt curVkbId = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeVkbLayout ) ); - - if ( ( curVkbId != aVkbLayoutId ) || ( iLangOrSizeChanged ) ) - { - iLangOrSizeChanged = EFalse; - // Update data : vkb layout id - iLayoutContext->SetData( EPeninputDataTypeVkbLayout, &aVkbLayoutId ); - - iVkbLayout->ChangeVkbLayout( aVkbLayoutId ); - SetVkbLayoutSize(); - - TInt curClientId = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeClientLayout ) ); - CPeninputControlInfo* vkbInfo = iConfigInfo->FindClientLayoutInfo - ( curClientId )->FindControlInfo( EPeninutWindowCtrlIdVkbCtrl ); - - TRect rect; - CPeninputVkbCtrlExt* vkbCtrl = static_cast - ( Control(EPeninutWindowCtrlIdVkbCtrl)); - - - CPeninputVkbLayoutInfo* vkblayout = - ConfigInfo()->FindVkbLayoutInfo( aVkbLayoutId ); - - if ( vkbCtrl && vkblayout ) - { - DimKeys(); - - // Make the true draw - UpdateArea( vkbCtrl->Rect(), EFalse ); - } - } - } - -// -------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::HandleRangeEvent -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::HandleRangeEvent( TInt aRange ) - { - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - - CPeninputRangeBarInfo* rangeBar = iConfigInfo->RangeBarInfo(); - if ( !rangeBar ) - { - return; - } - - CPeninputRangeInfo* rangeInfo = rangeBar->FindRange( aRange ); - - if ( !rangeInfo ) - { - return; - } - - TInt responseStyle = rangeInfo->ResponseStyle(); - if ( responseStyle == EPeninputRangeResponseNoAction ) - { - return; - } - - if (curRange != aRange && responseStyle == EPeninputRangeResponseSwitchRange) - { - TInt index = KInvalidIndex; - - if ( aRange == ERangeAccent ) - { - index = 0; - } - iLayoutContext->SetData( EPeninputDataTypeCurrentAccent, &index ); - - ChangeRange( aRange ); - } - else if ( responseStyle == EPeninputRangeResponsePopupChoiceItem ) - { - PopupChoiceList(); - } - } - -// -------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::HandleRangeLoopEvent -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::HandleRangeLoopEvent( TInt aLoop ) - { - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - - CFepUiBaseCtrl* ctrl = Control( EPeninutWindowCtrlIdRangeBar ); - CAknFepCtrlRangeBar* rangebar = static_cast( ctrl ); - - if ( rangebar ) - { - TRAP_IGNORE( rangebar->SetCaseL( curRange, aLoop ) ); - - if ( ( curRange == ERangeEnglish ) || ( ConfigInfo()->CaseSensitive() - && ( curRange == ERangeNative ) ) ) - { - TInt curCase = rangebar->GetCase( curRange ); - - // Store case in the data manager, the engine will - // get notice at the same time - iLayoutContext->SetData( EPeninputDataTypeCase, &curCase ); - - // Notify fep the new case - TBuf buf; - CPeninputDataConverter::IntToDesc( curCase, buf ); - iLayoutContext->Sendkey( ESignalCaseMode, buf ); - } - } - } - -// -------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::CaseByShiftCapslockStatus -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C TInt CPeninputLayoutWindowExt::CaseByShiftCapslockStatus() - { - TInt shiftStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) ); - TInt capslockStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCapslockDown ) ); - - return ( capslockStatus * 2 + shiftStatus ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::HandleShiftBtnClicked -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::HandleMergedBtnClicked( TInt aCase ) - { - switch( aCase ) - { - case ECaseLower: - { - HandleCapslockBtnClicked(); - } - break; - case ECaseUpper: - { - HandleShiftBtnClicked(); - } - break; - case ECaseText: -// case ECaseInverseText: - { - // Current case is Text, equals shift button - //HandleCapslockBtnClicked(); - HandleShiftAndCapslockBtnClicked(); - } - break; - default: - break; - } - - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::HandleShiftBtnClicked -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::HandleShiftBtnClicked() - { - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - - TInt shiftStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) ); - TInt capslockStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCapslockDown ) ); - - // Update data - if ( iLayoutContext->IsCapsLockPermitted() ) - { - if ( curRange == ERangeEnglish || curRange == ERangeAccent - || ( ConfigInfo()->CaseSensitive() && curRange == ERangeNative ) ) - { - capslockStatus = !capslockStatus; - ChangeMergedButtonStatus( shiftStatus, capslockStatus ); - iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &capslockStatus ); - } - } - else - { - if ( iLayoutContext->IsShiftPermitted() ) - { - shiftStatus = !shiftStatus; - ChangeMergedButtonStatus( shiftStatus, capslockStatus ); - iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shiftStatus ); - } - } - - // Update vkb layout - TInt caseid = CaseByShiftCapslockStatus(); - - TInt vkbLayout = iConfigInfo->ShiftCapsSingleVkbLayoutId( curRange, - caseid ); - - TInt responseStyle = - iConfigInfo->RangeBarInfo()->FindRange( curRange )->ResponseStyle(); - if ( ( curRange == ERangeAccent ) - && ( responseStyle == EPeninputRangeResponsePopupChoiceItem ) ) - { - TInt curAccentIndex = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentAccent ) ); - vkbLayout = vkbLayout + curAccentIndex * 2; - } - - ChangeVkbLayout( vkbLayout ); - - // Synchronize case if needed - if ( ( curRange == ERangeEnglish ) || ( curRange == ERangeAccent ) - || ( ConfigInfo()->CaseSensitive() && ( curRange == ERangeNative ) ) ) - { - // Notify fep the new case - TBuf buf; - TInt fepcase = CPeninputDataConverter::FepCaseByCaseId( caseid ); - iLayoutContext->SetData( EPeninputDataTypeCase, &fepcase ); - CPeninputDataConverter::IntToDesc( fepcase, buf ); - iLayoutContext->Sendkey( ESignalCaseMode, buf ); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::HandleCapslockBtnClicked -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::HandleCapslockBtnClicked() - { - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - - TInt capslockStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCapslockDown ) ); - TInt shiftStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) ); - - if ( iLayoutContext->IsShiftPermitted() ) - { - if ( curRange == ERangeEnglish || curRange == ERangeAccent || - ( ConfigInfo()->CaseSensitive() && curRange == ERangeNative ) ) - { - shiftStatus = !shiftStatus; - ChangeMergedButtonStatus( shiftStatus, capslockStatus ); - iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shiftStatus ); - } - } - else - { - if ( iLayoutContext->IsCapsLockPermitted() ) - { - capslockStatus = !capslockStatus; - ChangeMergedButtonStatus( shiftStatus, capslockStatus ); - iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &capslockStatus ); - } - } - - // Update vkb layout - TInt caseid = CaseByShiftCapslockStatus(); - TInt vkbLayout = iConfigInfo->ShiftCapsSingleVkbLayoutId( curRange, - caseid ); - - TInt responseStyle = - iConfigInfo->RangeBarInfo()->FindRange( curRange )->ResponseStyle(); - if ( ( curRange == ERangeAccent ) - && ( responseStyle == EPeninputRangeResponsePopupChoiceItem ) ) - { - TInt curAccentIndex = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentAccent ) ); - vkbLayout = vkbLayout + curAccentIndex * 2; - } - - ChangeVkbLayout( vkbLayout ); - - // Synchronize case if needed - if ( ( curRange == ERangeEnglish ) || ( curRange == ERangeAccent ) - || ( ConfigInfo()->CaseSensitive() && ( curRange == ERangeNative ) ) ) - { - // Notify fep the new case - TBuf buf; - TInt fepcase = CPeninputDataConverter::FepCaseByCaseId( caseid ); - iLayoutContext->SetData( EPeninputDataTypeCase, &fepcase ); - CPeninputDataConverter::IntToDesc( fepcase, buf ); - iLayoutContext->Sendkey( ESignalCaseMode, buf ); - } - } - -EXPORT_C void CPeninputLayoutWindowExt::HandleShiftAndCapslockBtnClicked() - { - TInt curRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - - TInt shiftStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeShiftDown ) ); - TInt capslockStatus = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCapslockDown ) ); - - if ( shiftStatus ) - { - shiftStatus = 0; - } - else - { - shiftStatus = 1; - } - - // Update data - iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shiftStatus ); - - if ( iLayoutContext->IsCapsLockPermitted() ) - { - if ( curRange == ERangeEnglish || curRange == ERangeAccent - || ( ConfigInfo()->CaseSensitive() && curRange == ERangeNative ) ) - { - capslockStatus = !capslockStatus; - ChangeMergedButtonStatus( shiftStatus, capslockStatus ); - iLayoutContext->SetData( EPeninputDataTypeCapslockDown, &capslockStatus ); - } - } - else - { - if ( iLayoutContext->IsShiftPermitted() ) - { - shiftStatus = !shiftStatus; - ChangeMergedButtonStatus( shiftStatus, capslockStatus ); - iLayoutContext->SetData( EPeninputDataTypeShiftDown, &shiftStatus ); - } - } - - // Update vkb layout - TInt caseid = CaseByShiftCapslockStatus(); - - TInt vkbLayout = iConfigInfo->ShiftCapsSingleVkbLayoutId( curRange, - caseid ); - - TInt responseStyle = - iConfigInfo->RangeBarInfo()->FindRange( curRange )->ResponseStyle(); - if ( ( curRange == ERangeAccent ) - && ( responseStyle == EPeninputRangeResponsePopupChoiceItem ) ) - { - TInt curAccentIndex = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentAccent ) ); - vkbLayout = vkbLayout + curAccentIndex * 2; - } - - ChangeVkbLayout( vkbLayout ); - - // Synchronize case if needed - if ( ( curRange == ERangeEnglish ) || ( curRange == ERangeAccent ) - || ( ConfigInfo()->CaseSensitive() && ( curRange == ERangeNative ) ) ) - { - // Notify fep the new case - TBuf buf; - TInt fepcase = CPeninputDataConverter::FepCaseByCaseId( caseid ); - iLayoutContext->SetData( EPeninputDataTypeCase, &fepcase ); - CPeninputDataConverter::IntToDesc( fepcase, buf ); - iLayoutContext->Sendkey( ESignalCaseMode, buf ); - } - - - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::DimKeys -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindowExt::DimKeys() - { - TRAP_IGNORE(DimKeysL()); - } -void CPeninputLayoutWindowExt::DimKeysL() - { - CPeninputVkbCtrlExt* vkbCtrl = static_cast - ( Control( EPeninutWindowCtrlIdVkbCtrl ) ); - vkbCtrl->CancelDims(); - TInt currentRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeCurrentRange ) ); - TInt permitRange = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypePermittedRange ) ); - TInt keyMapping = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeNumericKeymap ) ); - TInt inputLang = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeInputLanguage ) ); - - if ( currentRange == ERangeNumber && - (permitRange == ERangeNumber || - permitRange == ERangeNativeNumber || - permitRange == (ERangeNumber | ERangeNativeNumber)) ) - { - HBufC* rs = NULL; - if ( keyMapping == EKeymapFromResource ) - { - HBufC* customRes = - (HBufC*) iLayoutContext->RequestData(EAknFepDataTypeUseDefinedResource); - _LIT(KTenNumbers,"0123456789"); - rs = HBufC::NewL(KTenNumbers().Length() + customRes->Length()); - rs->Des().Copy(*customRes); - rs->Des().Append(KTenNumbers); - } - else - { - TRAP_IGNORE( rs = iKeyMappingMgr->KeyMappingStringL( keyMapping ); ); - } - - if( rs ) - { - vkbCtrl->DimKeys( rs ); - delete rs; - } - } - else if ( currentRange == ERangeNativeNumber && - (permitRange == ERangeNumber || - permitRange == ERangeNativeNumber || - permitRange == (ERangeNumber | ERangeNativeNumber)) ) - { - HBufC* rs = NULL; - TRAP_IGNORE( rs = GetKeyMappingStringL( keyMapping, inputLang ) ); - if( rs ) - { - vkbCtrl->DimKeys( rs ); - delete rs; - } - } - - else if ( (currentRange == ERangeNative || currentRange == ERangeEnglish) && CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeInputLanguage ) ) == ELangVietnamese ) - { - vkbCtrl->DimKeySet( iToneSet, !iVowelChar ); - } - - vkbCtrl->Draw(); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::AddControlL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::AddNotOwnedControl( - CFepUiBaseCtrl* aControl ) - { - //do nothing if we already has the control. - if ( KErrNotFound != ControlList().Find( aControl ) ) - { - return; - } - - if ( aControl ) - { - ( const_cast&> - ( ControlList() ) ).Append( aControl ); - } - } -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::ChangeButtonStatus -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::ChangeButtonStatus( const TInt aIsDown, - const TInt aControlId ) - { - CAknFepCtrlEventButton* button = - static_cast - (ControlById( aControlId ) ); - - if ( button ) - { - button->SetHighlight( aIsDown == 0 ? EFalse : ETrue ); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindow::ChangeButtonStatus -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::ChangeMergedButtonStatus( - const TInt aIsShiftCase, - const TInt aIsCapslockCase ) - { - CAknFepCtrlMultiModeButton* button = - static_cast - (ControlById( EPeninutWindowCtrlIdShiftBtn ) ); - - if( !button ) - { - return; - } - switch ( aIsCapslockCase * 2 + aIsShiftCase ) - { - case 1: // text case - { - TRAP_IGNORE( button->SetCurrentModeL( EBtnBmpActive, 1 ) ); - button->SetHighlight( ETrue ); - } - break; - case 2: // upper case - { - TRAP_IGNORE( button->SetCurrentModeL( EBtnBmpActive, 2 ) ); - button->SetHighlight( ETrue ); - } - break; - default: - { - TRAP_IGNORE( button->SetCurrentModeL( EBtnBmpActive, 0 ) ); - button->SetHighlight( EFalse ); - } - break; - } - } -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::ChangeLayoutPosition -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::ChangeLayoutPosition( TInt aJustifyStyle ) - { - if ( iLayoutContext->LayoutType() == EPluginInputModeFSQ ) - { - TopLeftJustify(); - return; - } - switch ( aJustifyStyle ) - { - case EPeninputPositionChangeBrJustify: - { - BottomRightJustify(); - } - break; - case EPeninputPositionChangeDataQuery: - { - //BottomRightJustify(); - DataQueryJustify(); - } - break; - default: - { - TopLeftJustify(); - } - break; - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::SetWindowRect -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::SetWindowRect( const TRect& aRect ) - { - //we should know the layout size now - if(iLayoutContext->LayoutType() == EPluginInputModeFSQ) - { - SetRect( aRect ); - UiLayout()->SetRect(aRect); - } - else - { - TRect rect = aRect; - - - TRect shadowRect = TRect( TPoint(), - TSize( aRect.Width() + iShadowBrWidth + iShadowTlWidth, - aRect.Height() + iShadowTlHeight + iShadowBrHeight) - ); - - rect.Move( TPoint(iShadowTlWidth, iShadowTlHeight) - rect.iTl ); - - SetRect( rect ); - RootControl()->SetRect( rect ); - UiLayout()->SetShadowRect( shadowRect ); - } - } - - -// ----------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::SetSwitchBtnFont -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::SetSwitchBtnFont(CAknFepCtrlEventButton& aSwitchBtn) - { - // read switch font laf info only when need - if (CPeninputDataConverter::AnyToInt( - iLayoutContext->RequestData(EAkninputDataTypeSizeChanging)) ||(!iSwitchFontSet)) - { - TAknTextLineLayout langSwitch; - TAknTextLineLayout langSwitchShadow; - - switch( iLayoutContext->LayoutType() ) - { - case EPluginInputModeVkb: - case EPluginInputModeFSQ: - { - langSwitch = - AknLayoutScalable_Avkon::cell_vkb_side_pane_t1().LayoutLine(); - langSwitchShadow = - AknLayoutScalable_Avkon::cell_vkb_side_pane_t1_copy1().LayoutLine(); - } - break; - case EPluginInputModeHwr: - { - langSwitch = - AknLayoutScalable_Avkon::cell_hwr_side_pane_t1().LayoutLine(); - langSwitchShadow = - AknLayoutScalable_Avkon::cell_hwr_side_pane_t1_copy1().LayoutLine(); - } - break; - default: - { - return; - } - } - - iSwitchFont = langSwitch.iFont; - iSwitchShadowFont = langSwitchShadow.iFont; - } - - aSwitchBtn.SetFont(AknLayoutUtils::FontFromId(iSwitchFont, NULL)); - aSwitchBtn.SetShadowFont(AknLayoutUtils::FontFromId(iSwitchShadowFont, NULL)); - iSwitchFontSet = ETrue; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::TopLeftJustify -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::SetSwitchBtnTextColor(CAknFepCtrlEventButton& aSwitchBtn) - { - TRgb textColor; - TInt error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - textColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG59); - - if (error != KErrNone) - { - textColor = TRgb(KDefaultTextColor); - } - - aSwitchBtn.SetFontColor( textColor ); - - TRgb shadowTextColor; - error = AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), - shadowTextColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG62); - - if (error != KErrNone) - { - shadowTextColor = TRgb(KDefaultShadowTextColor); - } - - aSwitchBtn.SetShadowFontColor( shadowTextColor ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::TopLeftJustify -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindowExt::TopLeftJustify() - { - // Read position from datamgr - TSize layoutSize = UiLayout()->Rect().Size(); - - TPoint tl = UiLayout()->Position(); - - TPoint oldBr = tl + layoutSize; - - if ( tl.iX < 0 ) - { - tl.iX = 0; - } - - if ( tl.iY < 0 ) - { - tl.iY = 0; - } - - TPoint br = tl + layoutSize; - - if ( br != oldBr ) - { - //Write the new position into CenRep - TInt x = 0; - TInt y = 0; - x = 0x0000FFFF & br.iX; - y = 0xFFFF0000 & ( br.iY << 16 ); - TInt pos = x | y; - iLayoutContext->SetData( EPeninputDataTypeWindowPosition, &pos ); - } - - UiLayout()->LayoutOwner()->SetPosition( tl ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::BottomRightJustify -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindowExt::BottomRightJustify() - { - // Read position from datamgr - TSize layoutSize( UiLayout()->Rect().Size() ); - - TPoint oldbr; - TPoint br; - TPoint tl; - - TSize screenSize = *( ( TSize* ) iLayoutContext->RequestData - ( EPeninputDataTypeScreenSize ) ); - - TInt windowPosition = CPeninputDataConverter::AnyToInt - ( iLayoutContext->RequestData( EPeninputDataTypeWindowPosition ) ); - - oldbr.iX = windowPosition & 0x0000FFFF; - oldbr.iY = ( windowPosition & 0xFFFF0000 ) >> 16; - - br = oldbr; - - // Check the top left point is in screen - if (br.iX > screenSize.iWidth) - { - br.iX = screenSize.iWidth; - } - if( br.iY > screenSize.iHeight ) - { - br.iY = screenSize.iHeight; - } - - tl.iX = br.iX - layoutSize.iWidth; - tl.iY = br.iY - layoutSize.iHeight; - - if ( tl.iX < 0 ) - { - tl.iX = 0; - br.iX = layoutSize.iWidth; - } - - if ( tl.iY < 0 ) - { - tl.iY = 0; - br.iY = layoutSize.iHeight; - } - - if ( oldbr != br ) - { - //Write the new position into CenRep - TInt x = 0; - TInt y = 0; - x = 0x0000FFFF & br.iX; - y = 0xFFFF0000 & ( br.iY << 16 ); - TInt pos = x | y; - iLayoutContext->SetData( EPeninputDataTypeWindowPosition, &pos ); - } - - UiLayout()->LayoutOwner()->SetPosition( tl ); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::DataQueryJustify -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -void CPeninputLayoutWindowExt::DataQueryJustify() - { - TRect* dataQueryRect = ( TRect* )( iLayoutContext->RequestData - ( EPeninputDataTypeDataQueryDlgRect) ); - - TRect rect = TRect( UiLayout()->Position(), UiLayout()->Rect().Size() ); - - CCoeEnv* coeEnv = CCoeEnv::Static(); - TPixelsTwipsAndRotation ptSize; - coeEnv->ScreenDevice()->GetDefaultScreenSizeAndRotation(ptSize); - - // Landscape mode: move window to the br of the screen - if (ptSize.iPixelSize.iWidth > ptSize.iPixelSize.iHeight) - { - rect.SetRect(ptSize.iPixelSize.iWidth - rect.Width(), - ptSize.iPixelSize.iHeight/2 - rect.Height()/2, - ptSize.iPixelSize.iWidth, - ptSize.iPixelSize.iHeight/2 + rect.Height()/2); - } - // Portrait mode: dodge the dataquery - else if ( rect.Intersects( *dataQueryRect ) ) - { - TInt Y = dataQueryRect->iTl.iY; - TInt height = rect.iBr.iY - rect.iTl.iY; - rect.iTl.iY = Y - height; - rect.iBr.iY = Y; - - if( rect.iTl.iY <0 ) - { - rect.iTl.iY = 0; - rect.iBr.iY = height; - } - } - - //Write the new position into CenRep - TInt x = 0; - TInt y = 0; - x = 0x0000FFFF & rect.iBr.iX; - y = 0xFFFF0000 & ( rect.iBr.iY << 16 ); - TInt pos = x | y; - iLayoutContext->SetData( EPeninputDataTypeWindowPosition, &pos ); - - //Set the layout position - UiLayout()->LayoutOwner()->SetPosition( rect.iTl ); - } - -TBool CPeninputLayoutWindowExt::CreateCustomControlL( TInt16 /*aControlId*/, TInt32 /*aImageId*/ ) - { - return EFalse; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::Draw -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::Draw() - { - // Draw shadow - CAknFepCtrlBaseWindowExt::Draw(); - UpdateArea(UiLayout()->Rect(), EFalse); - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::GetKeyMappingStringL -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -HBufC* CPeninputLayoutWindowExt::GetKeyMappingStringL(TInt aKeyMapping, - const TInt aLang ) - { - HBufC* rs = NULL; - if ( aKeyMapping == EKeymapFromResource ) - { - HBufC* customRes = (HBufC*) iLayoutContext->RequestData(EAknFepDataTypeUseDefinedResource); - _LIT(KTenNumbers,"0123456789"); - TBuf numbers; - if( aLang == ELangArabic ) - { - numbers.Format( _L("%c%c%c%c%c%c%c%c%c%c"), - 0x0660, 0x0661, 0x0662, - 0x0663, 0x0664, 0x0665, - 0x0666, 0x0667, 0x0668, 0x0669 ); - } - else if( aLang == ELangUrdu || aLang == ELangFarsi ) - { - numbers.Format( _L("%c%c%c%c%c%c%c%c%c%c"), - 0x06F0, 0x06F1, 0x06F2, - 0x06F3, 0x06F4, 0x06F5, - 0x06F6, 0x06F7, 0x06F8, 0x06F9 ); - } - else if( aLang == ELangHindi ) - { - numbers.Format( _L("%c%c%c%c%c%c%c%c%c%c"), - 0x0966, 0x0967, 0x0968, - 0x0969, 0x096a, 0x096b, - 0x096c, 0x096d, 0x096e, 0x096f ); - } - else if( aLang == ELangThai ) - { - numbers.Format( _L("%c%c%c%c%c%c%c%c%c%c"), - 0x0E50, 0x0E51, 0x0E52, - 0x0E53, 0x0E54, 0x0E55, - 0x0E56, 0x0E57, 0x0E58, 0x0E59 ); - } - else - { - numbers = KTenNumbers; - } - - rs = HBufC::NewL(numbers.Length() + customRes->Length()); - rs->Des().Copy(*customRes); - rs->Des().Append(numbers); - } - else - { - rs = iKeyMappingMgr->KeyMappingStringL( aKeyMapping, aLang ); - } - - return rs; - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::SetEnableSwitchToHwr -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::SetEnableSwitchToHwr(TBool aEnable) - { - CAknFepCtrlEventButton* switchToHwrBtn = static_cast - ( Control( EPeninutWindowCtrlIdSwitchToHwrBtn ) ); - - if ( aEnable ) - { - switchToHwrBtn->SetDimmed(EFalse); - } - else - { - switchToHwrBtn->SetDimmed(ETrue); - switchToHwrBtn->SetActive(EFalse); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::SetEnableSettingBtn -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C void CPeninputLayoutWindowExt::SetEnableSettingBtn(TBool aEnable) - { - CAknFepCtrlEventButton* optionBtn = static_cast - (Control( EPeninutWindowCtrlIdOptionBtn ) ); - - if ( aEnable ) - { - optionBtn->SetDimmed(EFalse); - } - else - { - optionBtn->SetDimmed(ETrue); - optionBtn->SetActive(EFalse); - } - } - -// --------------------------------------------------------------------------- -// CPeninputLayoutWindowExt::ReconfigUnitSize -// (other items were commented in a header) -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputLayoutWindowExt::ReconfigUnitSize(TInt /*aClientLayoutId*/) - { - return EFalse; - } - -EXPORT_C void CPeninputLayoutWindowExt::SetLafLayOut(TInt /*aRows*/, TInt /*aColumns*/) - { - - } - -EXPORT_C void CPeninputLayoutWindowExt::SetVkbLayoutSize() - { - - } -EXPORT_C void CPeninputLayoutWindowExt::OnInputLanguageChange() - { - if ( iLayoutContext->LayoutType() == EPluginInputModeVkb ) - { - CFepUiBaseCtrl* ctrl = - Control( EPeninutWindowCtrlIdVkbCtrl ); - if ( ctrl ) - { - ( static_cast( ctrl ) )->Reset(); - } - } - } - -void CPeninputLayoutWindowExt::AddCustomControlGroupL(CFepUiBaseCtrl* aCtrl) - { - AddControlL(aCtrl); - } - -void CPeninputLayoutWindowExt::ResetLastColRow() - { - iLastUsedTotalColumns = 0; - iLastUsedTotalRows = 0; - } - - -EXPORT_C void CPeninputLayoutWindowExt::SetTextAlignmentL( TInt aAlignment ) - { - CFepLayoutMultiLineIcf* icf = - static_cast( Control(EPeninputWindowCtrlIdMultiLineICF)); - - if ( icf && ConfigInfo()->Language() != ELangNone ) - { - icf->SetTextAlignmentL( aAlignment, ConfigInfo()->Language() ); - } - } - -//End Of File diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputnumerickeymappingmgr.cpp --- a/textinput/peninputcommonlayout/src/peninputnumerickeymappingmgr.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,202 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: number keymapping manager -* -*/ - - -// System includes -#include - -// User includes -#include "peninputnumerickeymappingmgr.h" - -// Constants -_LIT( KNumberString, "0123456789" ); -const TInt KMaxNumericString = 32; - - -// ======== MEMBER FUNCTIONS ======== - -// ------------------------------------------------------------------------ -// CPeninputNumericKepMappingMgr::NewL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputNumericKepMappingMgr* CPeninputNumericKepMappingMgr::NewL( - TResourceReader aReader ) - { - CPeninputNumericKepMappingMgr* self = NewLC( aReader ); - CleanupStack::Pop( self ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputNumericKepMappingMgr::NewLC -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputNumericKepMappingMgr* CPeninputNumericKepMappingMgr::NewLC( - TResourceReader aReader ) - { - CPeninputNumericKepMappingMgr* self = - new ( ELeave ) CPeninputNumericKepMappingMgr(); - CleanupStack::PushL( self ); - self->ConstructL( aReader ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputNumericKepMappingMgr::ConstructL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputNumericKepMappingMgr::ConstructL( TResourceReader aReader ) - { - const TInt count = aReader.ReadInt16(); - - for ( TInt i = 0; i < count; i++ ) - { - iKeyMappingIdList.Append( aReader.ReadInt16() ); - TPtrC ptr = aReader.ReadTPtrC(); - iKeyMappingStringList.Append( ptr.AllocL() ); - } - } - -// ------------------------------------------------------------------------ -// CPeninputNumericKepMappingMgr::~CPeninputNumericKepMappingMgr -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputNumericKepMappingMgr::~CPeninputNumericKepMappingMgr() - { - iKeyMappingIdList.Reset(); - iKeyMappingIdList.Close(); - - iKeyMappingStringList.ResetAndDestroy(); - iKeyMappingStringList.Close(); - } - -// ------------------------------------------------------------------------ -// CPeninputNumericKepMappingMgr::KeyMappingStringL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C HBufC* CPeninputNumericKepMappingMgr::KeyMappingStringL( - const TInt aKeyMappingId ) const - { - TLocale locale; - TBuf rs = KNumberString(); - const TInt index = iKeyMappingIdList.Find( aKeyMappingId ); - - if ( index != KErrNotFound ) - { - HBufC* buf = iKeyMappingStringList[index]; - - rs.Append( *buf ); - - if ( ( aKeyMappingId == EAknEditorCalculatorNumberModeKeymap ) - || ( aKeyMappingId == EAknEditorConverterNumberModeKeymap ) ) - { - rs.Append( locale.DecimalSeparator() ); - } - } - - return rs.AllocL(); - } - -// ------------------------------------------------------------------------ -// CPeninputNumericKepMappingMgr::ArabicKeyMappingStringL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C HBufC* CPeninputNumericKepMappingMgr::KeyMappingStringL( - const TInt aKeyMappingId, const TInt aLang ) const - { - - TLocale locale; - TBuf rs; - if( aLang == ELangArabic ) - { - rs.Format( _L("%c%c%c%c%c%c%c%c%c%c"), - 0x0660, 0x0661, 0x0662, - 0x0663, 0x0664, 0x0665, - 0x0666, 0x0667, 0x0668, 0x0669 ); - } - else if( aLang == ELangFarsi || aLang == ELangUrdu ) - { - rs.Format( _L("%c%c%c%c%c%c%c%c%c%c"), - 0x06F0, 0x06F1, 0x06F2, - 0x06F3, 0x06F4, 0x06F5, - 0x06F6, 0x06F7, 0x06F8, 0x06F9 ); - } - else if( aLang == ELangHindi ) - { - rs.Format( _L("%c%c%c%c%c%c%c%c%c%c"), - 0x0966, 0x0967, 0x0968, - 0x0969, 0x096a, 0x096b, - 0x096c, 0x096d, 0x096e, 0x096f ); - } - else if( aLang == ELangThai ) - { - rs.Format( _L("%c%c%c%c%c%c%c%c%c%c"), - 0x0E50, 0x0E51, 0x0E52, - 0x0E53, 0x0E54, 0x0E55, - 0x0E56, 0x0E57, 0x0E58, 0x0E59 ); - } - else - { - rs = KNumberString(); - } - - const TInt index = iKeyMappingIdList.Find( aKeyMappingId ); - - if ( index != KErrNotFound ) - { - HBufC* buf = iKeyMappingStringList[index]; - - rs.Append( *buf ); - - if ( ( aKeyMappingId == EAknEditorCalculatorNumberModeKeymap ) - || ( aKeyMappingId == EAknEditorConverterNumberModeKeymap ) ) - { - rs.Append( locale.DecimalSeparator() ); - } - } - - return rs.AllocL(); - } - -// ------------------------------------------------------------------------ -// CPeninputNumericKepMappingMgr::Count -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C TInt CPeninputNumericKepMappingMgr::Count() const - { - return iKeyMappingIdList.Count(); - } - -// ------------------------------------------------------------------------ -// CPeninputNumericKepMappingMgr::Reset -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C void CPeninputNumericKepMappingMgr::Reset() - { - iKeyMappingIdList.Reset(); - iKeyMappingStringList.ResetAndDestroy(); - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputrangebarinfo.cpp --- a/textinput/peninputcommonlayout/src/peninputrangebarinfo.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,200 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: range bar layout implementation -* -*/ - - -// User includes -#include "peninputrangebarinfo.h" - -// ======== MEMBER FUNCTIONS ======== - -// ------------------------------------------------------------------------ -// CPeninputRangeInfo::NewL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputRangeInfo* CPeninputRangeInfo::NewL( - TResourceReader& aReader ) - { - CPeninputRangeInfo* self = NewLC( aReader ); - CleanupStack::Pop( self ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputRangeInfo::NewLC -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputRangeInfo* CPeninputRangeInfo::NewLC( - TResourceReader& aReader ) - { - CPeninputRangeInfo* self = new ( ELeave ) CPeninputRangeInfo(); - - CleanupStack::PushL( self ); - self->ConstructL( aReader ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputRangeInfo::~CPeninputRangeInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputRangeInfo::~CPeninputRangeInfo() - { - } - -// ------------------------------------------------------------------------ -// CPeninputRangeInfo::ConstructL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputRangeInfo::ConstructL( TResourceReader& aReader ) - { - ConstructFromResourceL( aReader ); - } - -// ------------------------------------------------------------------------ -// CPeninputRangeInfo::ConstructFromResourceL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputRangeInfo::ConstructFromResourceL( TResourceReader& aReader ) - { - User::LeaveIfError( iRangeId = aReader.ReadInt16() ); - - TInt responseStyle = aReader.ReadInt16(); - - switch ( responseStyle ) - { - case 0: - { - iResponseStyle = EPeninputRangeResponseNoAction; - } - break; - case 1: - { - iResponseStyle = EPeninputRangeResponseSwitchRange; - } - break; - case 2: - { - iResponseStyle = EPeninputRangeResponsePopupChoiceItem; - } - break; - default: - { - iResponseStyle = EPeninputRangeResponseNoAction; - } - break; - } - - iClientLayoutId = aReader.ReadInt16(); - iVkbLayoutId = aReader.ReadInt16(); - - } - -// ------------------------------------------------------------------------ -// CPeninputRangeBarInfo::NewL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputRangeBarInfo* CPeninputRangeBarInfo::NewL( - TResourceReader& aReader ) - { - CPeninputRangeBarInfo* self = NewLC( aReader ); - CleanupStack::Pop( self ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputRangeBarInfo::NewLC -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputRangeBarInfo* CPeninputRangeBarInfo::NewLC( - TResourceReader& aReader ) - { - CPeninputRangeBarInfo* self = new ( ELeave ) CPeninputRangeBarInfo(); - - CleanupStack::PushL( self ); - self->ConstructL( aReader ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputRangeBarInfo::~CPeninputRangeBarInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputRangeBarInfo::~CPeninputRangeBarInfo() - { - iRanges.ResetAndDestroy(); - iRanges.Close(); - } - -// ------------------------------------------------------------------------ -// CPeninputRangeBarInfo::FindRange -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputRangeInfo* CPeninputRangeBarInfo::FindRange( TInt aRangeId ) - { - const TInt count = iRanges.Count(); - - for ( TInt i = 0; i < count; i++ ) - { - if ( iRanges[i]->RangeId() == aRangeId ) - { - return iRanges[i]; - } - } - - return NULL; - } - -// ------------------------------------------------------------------------ -// CPeninputRangeBarInfo::ConstructL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputRangeBarInfo::ConstructL( TResourceReader& aReader ) - { - ConstructFromResourceL( aReader ); - } - -// ------------------------------------------------------------------------ -// CPeninputRangeBarInfo::ConstructFromResourceL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputRangeBarInfo::ConstructFromResourceL( - TResourceReader& aReader ) - { - iRangeStyle = aReader.ReadInt16(); - - TInt count = aReader.ReadInt16(); - for ( TInt i = 0; i < count; i++ ) - { - CPeninputRangeInfo* rangeInfo = CPeninputRangeInfo::NewL( aReader ); - iRanges.Append( rangeInfo ); - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputshiftcapsInfo.cpp --- a/textinput/peninputcommonlayout/src/peninputshiftcapsInfo.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: shift&caps info implementation -* -*/ - - -// User includes -#include "peninputshiftcapsInfo.h" - - -// ======== MEMBER FUNCTIONS ======== - -// ------------------------------------------------------------------------ -// CPeninputShiftCapsInfo::NewL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputShiftCapsInfo* CPeninputShiftCapsInfo::NewL( - TResourceReader& aReader ) - { - CPeninputShiftCapsInfo* self = NewLC( aReader ); - CleanupStack::Pop( self ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputShiftCapsInfo::NewLC -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputShiftCapsInfo* CPeninputShiftCapsInfo::NewLC( - TResourceReader& aReader ) - { - CPeninputShiftCapsInfo* self = new ( ELeave ) CPeninputShiftCapsInfo(); - - CleanupStack::PushL( self ); - self->ConstructL( aReader ); - - return self; - } - -// ------------------------------------------------------------------------ -// CPeninputShiftCapsInfo::~CPeninputShiftCapsInfo -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputShiftCapsInfo::~CPeninputShiftCapsInfo() - { - iShiftCapsSingleList.ResetAndDestroy(); - iShiftCapsSingleList.Close(); - } - -// ------------------------------------------------------------------------ -// CPeninputShiftCapsInfo::FindShiftCapsSingleById -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputShiftCapsInfo::TPeninputShiftCapsSingle* - CPeninputShiftCapsInfo::FindShiftCapsSingleById( TInt aId ) - { - const TInt count = iShiftCapsSingleList.Count(); - - for ( TInt i = 0; i < count; i++ ) - { - if ( iShiftCapsSingleList[i]->iId == aId ) - { - return iShiftCapsSingleList[i]; - } - } - - return NULL; - } - -// ------------------------------------------------------------------------ -// CPeninputShiftCapsInfo::FindShiftCapsSingleByCase -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -EXPORT_C CPeninputShiftCapsInfo::TPeninputShiftCapsSingle* - CPeninputShiftCapsInfo::FindShiftCapsSingleByCase( TInt aCase ) - { - const TInt count = iShiftCapsSingleList.Count(); - - for ( TInt i = 0; i < count; i++ ) - { - if ( iShiftCapsSingleList[i]->iCaseUsed == aCase ) - { - return iShiftCapsSingleList[i]; - } - } - - return NULL; - } - -// ------------------------------------------------------------------------ -// CPeninputShiftCapsInfo::ConstructL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputShiftCapsInfo::ConstructL( TResourceReader& aReader ) - { - ConstructFromResourceL( aReader ); - } - -// ------------------------------------------------------------------------ -// CPeninputShiftCapsInfo::ConstructFromResourceL -// (other items were commented in a header) -// ------------------------------------------------------------------------ -// -void CPeninputShiftCapsInfo::ConstructFromResourceL( - TResourceReader& aReader ) - { - iRangeId = aReader.ReadInt16(); - - const TInt count = aReader.ReadInt16(); - for ( TInt i = 0; i < count; i++ ) - { - TPeninputShiftCapsSingle* shiftCapsSingle = - new ( ELeave ) TPeninputShiftCapsSingle(); - - shiftCapsSingle->iId = aReader.ReadInt16(); - shiftCapsSingle->iVkbLayoutId = aReader.ReadInt16(); - shiftCapsSingle->iCaseUsed = aReader.ReadInt16(); - - iShiftCapsSingleList.Append( shiftCapsSingle ); - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputuistatebase.cpp --- a/textinput/peninputcommonlayout/src/peninputuistatebase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,149 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of the ui state base -* -*/ - - -// User includes -#include -#include // Define EPluginInputModeHwr -#include -#include "peninputuistatebase.h" -#include "peninputlayoutcontext.h" -#include "peninputcmd.h" -#include "peninputcommonlayoutglobalenum.h" - -const TInt KMaxKeyLength = 10; - -// ======== MEMBER FUNCTIONS ======== - -// -------------------------------------------------------------------------- -// CPeninputUiStateBase::CPeninputUiStateBase -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputUiStateBase::CPeninputUiStateBase( - MPeninputUiStateMgr* aUiStateMgr, MPeninputLayoutContext* aContext ) - : iUiStateMgr( aUiStateMgr ), iContext( aContext ) - { - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateBase::NewL -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputUiStateBase* CPeninputUiStateBase::NewL( - MPeninputUiStateMgr* aUiStateMgr, MPeninputLayoutContext* aContext ) - { - CPeninputUiStateBase* self = new ( ELeave ) - CPeninputUiStateBase( aUiStateMgr, aContext ); - CleanupStack::PushL( self ); - self->Construct(); - CleanupStack::Pop( self ); - - return self; - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateBase::ConstructL -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputUiStateBase::Construct() - { - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateBase::~CPeninputUiStateBase -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputUiStateBase::~CPeninputUiStateBase() - { - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateBase::HandleKeyEventL -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputUiStateBase::HandleKeyEventL( - const TRawEvent& /*aData*/ ) - { - return EFalse; - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateBase::HandleControlEvent -// (other items were commented in a header). -// -------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputUiStateBase::HandleControlEvent( TInt /*aEventType*/, - const TDesC& /*aEventData*/ ) - { - return EFalse; - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateBase::SendKey -// (other items were commented in a header). -// -------------------------------------------------------------------------- -// -EXPORT_C TBool CPeninputUiStateBase::SendKey( const TDesC& aEventData ) - { - TInt len = aEventData.Length(); - - if ( iContext->LayoutType() == EPluginInputModeHwr ) - { - iContext->Sendkey(ESignalKeyEvent,aEventData); - } - else - { - if ( len == 1) - { - // If it is enter, tab, space, back key etc. - TPtrC ptr = aEventData.Left(1); - iContext->Sendkey(ESignalKeyEvent,ptr); - } - else if ( len > 1) - { - // If it is virtual key - TVirtualKeyEventData* data = (TVirtualKeyEventData* ) aEventData.Ptr(); - - TInt lang = CPeninputDataConverter::AnyToInt - ( iContext->RequestData( EPeninputDataTypeInputLanguage ) ); - - TBuf trueKeySeries; - - if ( lang == ELangArabic ) - { - TInt len = data->iKeyData.Length(); - for ( TInt i=0;i < len; i++ ) - { - trueKeySeries.Append(data->iKeyData[len-i-1]); - } - } - else - { - trueKeySeries.Append( data->iKeyData ); - } - - iContext->Sendkey( ESignalKeyEvent, trueKeySeries ); - } - } - - return ETrue; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonlayout/src/peninputuistatemgr.cpp --- a/textinput/peninputcommonlayout/src/peninputuistatemgr.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,152 +0,0 @@ -/* -* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implementation of the ui state machine manager -* -*/ - - -// User includes -#include "peninputuistatemgr.h" -#include "peninputlayoutcontext.h" -#include "peninputuistatebase.h" - - -// ======== MEMBER FUNCTIONS ======== - -// -------------------------------------------------------------------------- -// CPeninputUiStateMgr::CPeninputUiStateMgr -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -CPeninputUiStateMgr::CPeninputUiStateMgr( MPeninputLayoutContext* aContext ) - : iContext( aContext ) - { - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateMgr::NewL -// (other items were commented in a header). -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputUiStateMgr* CPeninputUiStateMgr::NewL( - MPeninputLayoutContext* aContext ) - { - CPeninputUiStateMgr* self = NewLC( aContext ); - CleanupStack::Pop( self ); - - return self; - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateMgr::NewLC -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputUiStateMgr* CPeninputUiStateMgr::NewLC( - MPeninputLayoutContext* aContext ) - { - CPeninputUiStateMgr* self = - new ( ELeave ) CPeninputUiStateMgr( aContext ); - CleanupStack::PushL( self ); - self->Construct(); - - return self; - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateMgr::~CPeninputUiStateMgr -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputUiStateMgr::~CPeninputUiStateMgr() - { - iUiStateTypeList.Reset(); - iUiStateTypeList.Close(); - - iUiStateList.ResetAndDestroy(); - iUiStateList.Close(); - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateMgr::CurrentUiState -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C CPeninputUiStateBase* CPeninputUiStateMgr::CurrentUiState() - { - return iCurrentState; - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateMgr::GetUiState -// (other items were commented in a header). -// -------------------------------------------------------------------------- -EXPORT_C CPeninputUiStateBase* CPeninputUiStateMgr::GetUiState( - TInt aUiStateType ) - { - CPeninputUiStateBase* uiState = NULL; - - for ( TInt i = 0; i < iUiStateTypeList.Count(); i++ ) - { - if ( iUiStateTypeList[i] == aUiStateType ) - { - uiState = iUiStateList[i]; - break; - } - } - - return uiState; - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateMgr::SetCurrentUiState -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputUiStateMgr::SetCurrentUiState( - CPeninputUiStateBase* aUiState ) - { - iCurrentState = aUiState; - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateMgr::SetCurrentUiState -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputUiStateMgr::SetCurrentUiState( TInt aUiStateType ) - { - iCurrentState = GetUiState( aUiStateType ); - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateMgr::AddUiState -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -EXPORT_C void CPeninputUiStateMgr::AddUiState( CPeninputUiStateBase* aUiState, - TInt aUiStateType ) - { - iUiStateTypeList.Append( aUiStateType ); - iUiStateList.Append( aUiState ); - } - -// -------------------------------------------------------------------------- -// CPeninputUiStateMgr::ConstructL -// (other items were commented in a header) -// -------------------------------------------------------------------------- -// -void CPeninputUiStateMgr::Construct() - { - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/data/TrainUiPreset.dat Binary file textinput/peninputhwrtrui/data/TrainUiPreset.dat has changed diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/data/trui.rss --- a/textinput/peninputhwrtrui/data/trui.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2624 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource definitions for project TrainingUI -* -*/ - -NAME HELL - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "trui.hrh" -#include "trui.rh" - -#define TRUI_SHORTCUTEDITOR_TEXT_MAXLENGTH 160 - -// d:Radio button's text in shortcut edit model view -// l:(none) -// r:5.0 -// -#define qtn_hwrt_radio_button_own_symbol "Own symbol" - -// d:Tooltip text for grid buttont on edit symbol view -// l:list_single_graphic_pane -// r:5.0 -// -#define qtn_hwrt_tooltip_select_symbol "Select symbol" - -// d:Radio button's text in shortcut edit model view -// l:(none) -// r:5.0 -// -#define qtn_hwrt_radio_button_preset_symbol "Preset symbol" - -// d:Tooltip text for preset symbols in shortcut edit model view -// l:none -// r:5.0 -// -#define qtn_hwrt_text_purpose_selected_symbol "You can select a symbol for the shortcut text and use it later to call the text." - -// d:Query note for all preset models are in use -// l:popup_note_window -// r:5.0 -// -#define qtn_hwrt_all_symbols_in_use_notification "All preset symbols are in use." - -// d:Displayed in SCT dialog. -// d:Text in sct dialog as the title -// l:(none) -// r:5.0 -// -#define qtn_sct_dialog_title "Select a character:" - -// d:Short application name in application shell. -// l:(none) -// r:5.0 -// -#define qtn_trui_short_caption "trui" - -// d:Item in choicelist when language script is western. -// d:Perform the function of changing character range to western lower -// l:(none) -// r:5.0 -// -#define qtn_hwrt_char_range_lower "ab" - -// d:Item in choicelist when language script is western. -// d:Perform the function of changing character range to western captial -// l:(none) -// r:5.0 -// -#define qtn_hwrt_char_range_capital "AB" - -// d:Item in choicelist under all scripts. -// d:Perform the function of changing character range to digits -// l:(none) -// r:5.0 -// -#define qtn_hwrt_char_range_digits "12" - -// d:Item in choicelist under all scripts. -// d:Perform the function of changing character range to symbols -// l:(none) -// r:5.0 -// -#define qtn_hwrt_char_range_symbols "*#" - -// d:Item in choicelist when language script is cyrillic. -// d:Perform the function of changing character range to cyrillic lower -// l:(none) -// r:5.0 -// -#define qtn_hwrt_cyrillic_lower_range <0x0430><0x0431> - -// d:Item in choicelist when language script is cyrillic. -// d:Perform the function of changing character range to cyrillic capital -// l:(none) -// r:5.0 -// -#define qtn_hwrt_cyrillic_capital_range <0x0410><0x0411> - -// d:Item in choicelist when language script is greek. -// d:Perform the function of changing character range to greek lower -// l:(none) -// r:5.0 -// -#define qtn_hwrt_greek_lower_range <0x03B1><0x03C9> - -// d:Item in choicelist when language script is greek. -// d:Perform the function of changing character range to greek captial -// l:(none) -// r:5.0 -// -#define qtn_hwrt_greek_capital_range <0x0391><0x03A9> - -// d:Item in choicelist when language script is hebrew. -// d:Perform the function of changing character range to hebrew letters -// l:(none) -// r:5.0 -// -#define qtn_hwrt_hebrew_letters <0x05D0><0x05D1> - -// d:Command in options list of sub menu of character range under western script. -// d:Perform the function of changing character range to western lower. -// l:(none) -// r:5.0 -// -#define qtn_hwrt_submenu_latin_lower "ab" - -// d:Command in options list of sub menu of character range under western script. -// d:Perform the function of changing character range to western capital -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_latin_capital "AB" - -// d:Command in options list of sub menu of character range under western script. -// d:Perform the function of changing character range to western accent -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_char_range_latin_accent <0x00E0><0x017E> - -// d:Command in options list of sub menu of character range under all scripts. -// d:Perform the function of changing character range to digits -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_digits "12" - -// d:Command in options list of sub menu of character range under all scripts. -// d:Perform the function of changing character range to symbols -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_symbols "*#" - -// d:Command in options list of sub menu of character range under cyrillic script. -// d:Perform the function of changing character range to cyrillic lower -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_cyrillic_lower <0x0430><0x0431> - -// d:Command in options list of sub menu of character range under cyrillic script. -// d:Perform the function of changing character range to cyrillic capital -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_cyrillic_capital <0x0410><0x0411> - -// d:Command in options list of sub menu of character range under cyrillic script. -// d:Perform the function of changing character range to cyrillic accent -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_char_range_cyrillic_accent <0x044A><0x0451> - -// d:Command in options list of sub menu of character range under greek script. -// d:Perform the function of changing character range to greek lower -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_greek_lower <0x03B1><0x03C9> - -// d:Command in options list of sub menu of character range under greek script. -// d:Perform the function of changing character range to greek capital. -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_greek_capital <0x0391><0x03A9> - -// d:Command in options list of sub menu of character range under hebrew script. -// d:Perform the function of changing character range to hebrew letters. -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_hebrew_letters <0x05D0><0x05D1> - -// Latin character set -// d:Displayed in SCT, used during developping temporarily. -// d:Latin lower letters -// l:(none) -// r:5.0 -// -#define qtn_sct_latin_lowerletters <0x0061><0x0062><0x0063><0x0064><0x0065>\ - <0x0066><0x0067><0x0068><0x0069><0x006A>\ - <0x006B><0x006C><0x006D><0x006E><0x006F>\ - <0x0070><0x0071><0x0072><0x0073><0x0074>\ - <0x0075><0x0076><0x0077><0x0078><0x0079>\ - <0x007A> - -// d:Displayed in SCT, used during developping temporarily. -// d:Latin upper letters -// l:(none) -// r:5.0 -// -#define qtn_sct_latin_upperletters <0x0041><0x0042><0x0043><0x0044><0x0045>\ - <0x0046><0x0047><0x0048><0x0049><0x004A>\ - <0x004B><0x004C><0x004D><0x004E><0x004F>\ - <0x0050><0x0051><0x0052><0x0053><0x0054>\ - <0x0055><0x0056><0x0057><0x0058><0x0059>\ - <0x005A> - -// d:Displayed in SCT, used during developping temporarily. -// d:Latin digital letters -// l:(none) -// r:5.0 -// -#define qtn_sct_latin_digital <0x0031><0x0032><0x0033><0x0034><0x0035>\ - <0x0036><0x0037><0x0038><0x0039><0x0030> - -// d:Displayed in SCT, used during developping temporarily. -// d:Latin symbol letters -// l:(none) -// r:5.0 -// -#define qtn_sct_latin_symbol <0x002E><0x002C><0x0027><0x003F>\ - <0x0021><0x0022><0x002D><0x0028>\ - <0x0029><0x0040><0x002F><0x003A>\ - <0x005F><0x003B><0x002B><0x0026>\ - <0x0025><0x002A><0x003D><0x00A3>\ - <0x20AC><0x0024><0x00A5><0x00A4>\ - <0x003C><0x003E><0x005C><0x007E>\ - <0x005E><0x00A1><0x00BF><0x0023>\ - <0x007C><0x0060><0x201E><0x00B1>\ - <0x2030><0x00A2><0x20AA><0x0E3F>\ - <0x20AB> - -// d:Displayed in SCT, used during developping temporarily. -// d:Chinese Latin symbol letters -// l:(none) -// r:5.0 -// -#define qtn_sct_latin_symbol_chinese <0x002E><0x002C><0x0027><0x003F>\ - <0x0021><0x0022><0x002D><0x0028>\ - <0x0029><0x0040><0x002F><0x003A>\ - <0x005F><0x003B><0x002B><0x0026>\ - <0x0025><0x002A><0x003D><0x00A3>\ - <0x20AC><0x0024><0x00A5><0x00A4>\ - <0x003C><0x003E><0x005C><0x007E>\ - <0x005E><0x00A1><0x00BF><0x0023>\ - <0x007C><0x0060><0x201E><0x00B1>\ - <0x2030><0x00A2> - -// d:Displayed in SCT, used during developping temporarily. -// d:Latin accent letters -// l:(none) -// r:5.0 -// -#define qtn_sct_latin_accent <0x00C0><0x00C1><0x00C2><0x00C3><0x00C4><0x00C5><0x00C6>\ - <0x00C7><0x00C8><0x00C9><0x00CA><0x00CB><0x00CC><0x00CD>\ - <0x00CE><0x00CF><0x00D0><0x00D1><0x00D2><0x00D3><0x00D4>\ - <0x00D5><0x00D6><0x00D8><0x00D9><0x00DA><0x00DB><0x00DC>\ - <0x00DD><0x00DE><0x00DF><0x00E0><0x00E1><0x00E2><0x00E3>\ - <0x00E4><0x00E5><0x00E6><0x00E7><0x00E8><0x00E9><0x00EA>\ - <0x00EB><0x00EC><0x00ED><0x00EE><0x00EF><0x00F0><0x00F1>\ - <0x00F2><0x00F3><0x00F4><0x00F5><0x00F6><0x00F8><0x00F9>\ - <0x00FA><0x00FB><0x00FC><0x00FD><0x00FE><0x00FF><0x0100>\ - <0x0101><0x0102><0x0103><0x0104><0x0105><0x0106><0x0107>\ - <0x0108><0x0109><0x010A><0x010B><0x010C><0x010D><0x010E>\ - <0x010F><0x0110><0x0111><0x0112><0x0113><0x0114><0x0115>\ - <0x0116><0x0117><0x0118><0x0119><0x011A><0x011B><0x011C>\ - <0x011D><0x011E><0x011F><0x0120><0x0121><0x0122><0x0123>\ - <0x0124><0x0125><0x0126><0x0127><0x012A><0x012B><0x012C>\ - <0x012D><0x012E><0x012F><0x0130><0x0131><0x0134><0x0135>\ - <0x0136><0x0137><0x0139><0x013A><0x013B><0x013C><0x013D>\ - <0x013E><0x013F><0x0140><0x0141><0x0142><0x0143><0x0144>\ - <0x0145><0x0146><0x0147><0x0148><0x014A><0x014B><0x014C>\ - <0x014D><0x014E><0x014F><0x0150><0x0151><0x0152><0x0153>\ - <0x0154><0x0155><0x0156><0x0157><0x0158><0x0159><0x015A>\ - <0x015B><0x015C><0x015D><0x015E><0x015F><0x0160><0x0161>\ - <0x0162><0x0163><0x0164><0x0165><0x0166><0x0167><0x016A>\ - <0x016B><0x016C><0x016D><0x016E><0x016F><0x0170><0x0171>\ - <0x0172><0x0173><0x0174><0x0175><0x0176><0x0177><0x0178>\ - <0x0179><0x017A><0x017B><0x017C><0x017D><0x017E><0x018F>\ - <0x01B7><0x01E4><0x01E5><0x01E6><0x01E7><0x01E8><0x01E9>\ - <0x01EE><0x01EF><0x021E><0x021F><0x0259><0x0292> - -// Cyrillic character set -// d:Displayed in SCT, used during developping temporarily. -// d:Cyrillic lower letters -// l:(none) -// r:5.0 -// -#define qtn_sct_cyrillic_lowerletters <0x0430><0x0431><0x0432><0x0433>\ - <0x0491><0x0434><0x0452><0x0435>\ - <0x0451><0x0454><0x0436><0x0437>\ - <0x0438><0x0439><0x0456><0x0457>\ - <0x0458><0x043A><0x043B><0x0459>\ - <0x043C><0x043D><0x045A><0x043E>\ - <0x043F><0x0440><0x0441><0x0442>\ - <0x045B><0x0443><0x0444><0x0445>\ - <0x0446><0x0447><0x0448><0x0449>\ - <0x044A><0x044B><0x044C><0x044D>\ - <0x044E><0x044F> - -// d:Displayed in SCT, used during developping temporarily. -// d:Cyrillic upper letters -// l:(none) -// r:5.0 -// -#define qtn_sct_cyrillic_upperletters <0x0410><0x0411><0x0412><0x0413>\ - <0x0490><0x0414><0x0402><0x0415>\ - <0x0401><0x0404><0x0416><0x0417>\ - <0x0418><0x0419><0x0406><0x0407>\ - <0x0408><0x041A><0x041B><0x0409>\ - <0x041C><0x041D><0x040A><0x041E>\ - <0x041F><0x0420><0x0421><0x0422>\ - <0x0423><0x0424><0x0425><0x0426>\ - <0x0427><0x0428><0x0429><0x042A>\ - <0x042B><0x042C><0x042D><0x042E>\ - <0x042F> - -// d:Displayed in SCT, used during developping temporarily. -// d:Cyrillic accent letters -// l:(none) -// r:5.0 -// -#define qtn_sct_cyrillic_accent <0x0453><0x0403><0x0491><0x0490>\ - <0x0493><0x0492><0x0452><0x0402>\ - <0x0455><0x0405><0x0450><0x0400>\ - <0x0451><0x0401><0x0454><0x0404>\ - <0x04D9><0x04D8><0x04C2><0x04C1>\ - <0x0456><0x0406><0x0457><0x0407>\ - <0x045D><0x040D><0x0458><0x0408>\ - <0x045C><0x040C><0x049B><0x049A>\ - <0x049D><0x049C><0x0459><0x0409>\ - <0x045A><0x040A><0x04A3><0x04A2>\ - <0x04E9><0x04E8><0x045E><0x040E>\ - <0x04AF><0x04AE><0x04B1><0x04B0>\ - <0x04B3><0x04B2><0x045F><0x040F>\ - <0x045B><0x040B><0x04B9><0x04B8>\ - <0x04BB><0x04BA> - -// d:Displayed in SCT, used during developping temporarily. -// d:Greek lower letters -// l:(none) -// r:5.0 -// -#define qtn_sct_greek_lowerletters <0x03B1><0x03AC><0x03B2><0x03B3>\ - <0x03B4><0x03B5><0x03AD><0x03B6>\ - <0x03B7><0x03AE><0x03B8><0x03B9>\ - <0x03AF><0x03CA><0x0390><0x03BA>\ - <0x03BB><0x03BC><0x03BD><0x03BE>\ - <0x03BF><0x03CC><0x03C0><0x03C1>\ - <0x03C3><0x03C2><0x03C4><0x03C5>\ - <0x03CD><0x03CB><0x03B0><0x03C6>\ - <0x03C7><0x03C8><0x03C9><0x03CE> - - -// d:Displayed in SCT, used during developping temporarily. -// d:Greek upper letters -// l:(none) -// r:5.0 -// -#define qtn_sct_greek_upperletters <0x0391><0x0386><0x0392><0x0393>\ - <0x0394><0x0395><0x0388><0x0396>\ - <0x0397><0x0389><0x0398><0x0399>\ - <0x038A><0x03AA><0x039A><0x039B>\ - <0x039C><0x039D><0x039E><0x039F>\ - <0x038C><0x03A0><0x03A1><0x03A3>\ - <0x03A4><0x03A5><0x038E><0x03AB>\ - <0x03A6><0x03A7><0x03A8><0x03A9>\ - <0x038F> - -// Hebrew character set -// d:Displayed in SCT, used during developping temporarily. -// d:Hebrew lower letters -// l:(none) -// r:5.0 -// -#define qtn_sct_hebrew_letters <0x05D0><0x05D1><0x05D2><0x05D3>\ - <0x05D4><0x05D5><0x05D6><0x05D7>\ - <0x05D8><0x05D9><0x05DB><0x05DA>\ - <0x05DC><0x05DE><0x05DD><0x05E0>\ - <0x05DF><0x05E1><0x05E2><0x05E4>\ - <0x05E3><0x05E6><0x05E5><0x05E7>\ - <0x05E8><0x05E9><0x05EA> - -// Cyrillic character set -// d:Displayed in SCT, used during developping temporarily. -// d:Bulgarian lower letters -// l:(none) -// r:5.0 -// -#define qtn_sct_cyrillic_lowerletters_bulgarian <0x0430><0x0431><0x0432><0x0433>\ - <0x0434><0x0435><0x0436><0x0437>\ - <0x0438><0x0439><0x043A><0x043B>\ - <0x043C><0x043D><0x043E><0x043F>\ - <0x0440><0x0441><0x0442><0x0443>\ - <0x0444><0x0445><0x0446><0x0447>\ - <0x0448><0x0449><0x044A><0x044C>\ - <0x044E><0x044F> - -// Cyrillic character set -// d:Displayed in SCT, used during developping temporarily. -// d:Russian lowers letters -// l:(none) -// r:5.0 -// -#define qtn_sct_cyrillic_lowerletters_russian <0x0430><0x0431><0x0432><0x0433>\ - <0x0434><0x0435><0x0451><0x0436>\ - <0x0437><0x0438><0x0439><0x043A>\ - <0x043B><0x043C><0x043D><0x043E>\ - <0x043F><0x0440><0x0441><0x0442>\ - <0x0443><0x0444><0x0445><0x0446>\ - <0x0447><0x0448><0x0449><0x044A>\ - <0x044B><0x044C><0x044D><0x044E>\ - <0x044F> -// Cyrillic character set -// d:Displayed in SCT, used during developping temporarily. -// d:Ukraine lowers letters -// l:(none) -// r:5.0 -// -#define qtn_sct_cyrillic_lowerletters_ukraine <0x0430><0x0431><0x0432><0x0433>\ - <0x0491><0x0434><0x0435><0x0454>\ - <0x0436><0x0437><0x0438><0x0439>\ - <0x0456><0x0457><0x043A><0x043B>\ - <0x043C><0x043D><0x043E><0x043F>\ - <0x0440><0x0441><0x0442><0x0443>\ - <0x0444><0x0445><0x0446><0x0447>\ - <0x0448><0x0449><0x044C><0x044E>\ - <0x044F> - -// d:Displayed in SCT, used during developping temporarily. -// d:Bulgarian upper letters -// l:(none) -// r:5.0 -// -#define qtn_sct_cyrillic_upperletters_bulgarian <0x0410><0x0411><0x0412><0x0413>\ - <0x0414><0x0415><0x0416><0x0417>\ - <0x0418><0x0419><0x041A><0x041B>\ - <0x041C><0x041D><0x041E><0x041F>\ - <0x0420><0x0421><0x0422><0x0423>\ - <0x0424><0x0425><0x0426><0x0427>\ - <0x0428><0x0429><0x042A><0x042C>\ - <0x042E><0x042F> - -// d:Displayed in SCT, used during developping temporarily. -// d:Russian upper letters -// l:(none) -// r:5.0 -// -#define qtn_sct_cyrillic_upperletters_russian <0x0410><0x0411><0x0412><0x0413>\ - <0x0414><0x0415><0x0401><0x0416>\ - <0x0417><0x0418><0x0419><0x041A>\ - <0x041B><0x041C><0x041D><0x041E>\ - <0x041F><0x0420><0x0421><0x0422>\ - <0x0423><0x0424><0x0425><0x0426>\ - <0x0427><0x0428><0x0429><0x042A>\ - <0x042B><0x042C><0x042D><0x042E>\ - <0x042F> - -// d:Displayed in SCT, used during developping temporarily. -// d:Ukraine upper letters -// l:(none) -// r:5.0 -// -#define qtn_sct_cyrillic_upperletters_ukraine <0x0410><0x0411><0x0412><0x0413>\ - <0x0490><0x0414><0x0415><0x0404>\ - <0x0416><0x0417><0x0418><0x0419>\ - <0x0406><0x0407><0x041A><0x041B>\ - <0x041C><0x041D><0x041E><0x041F>\ - <0x0420><0x0421><0x0422><0x0423>\ - <0x0424><0x0425><0x0426><0x0427>\ - <0x0428><0x0429><0x042C><0x042E>\ - <0x042F> - -// Preset symbols character set -// d:Preset symbols text -// l:none -// r:5.0 -// -#define qtn_hwrt_preset_characters <0x2600><0x2601><0x2610><0x2630><0x2690><0x26A1><0x2642>\ - <0x2640><0x2661><0x2662><0x2664><0x2667><0x263E><0x2606>\ - <0x266C><0x26AF><0x2668><0x2698><0x2687><0x2695> - -// d:Fullname of MBG files saving App info. -// l:(none) -// r:5.0 -// -#define qtn_trui_appinfo_icons_filename "trui_aif.mif" - -// d:Fullname of MBG files. -// l:(none) -// r:5.0 -// -#define qtn_trui_icons_filename "trui_icons.mif" - -// d:Indicator's text in main view. -// d:Information of which character being trained. -// d:%S stands for the currently trained character -// l:(none) -// r:5.0 -// -#define qtn_hwrt_active_char_indicator "%S" - -// d:Default in SCT must be set when initializing a SCT dialog -// d:It is not used for display, but only for initializing a SCT dialog successfully. -// l:(none) -// r:5.0 -// -#define qtn_hwr_sct_initial_text " " - -// d:Tooltip of character model failing to be saved. -// l:popup_note_window -// r:5.0 -// -#define qtn_hwrt_note_save_failed "Save failed" - -// d:Full application name in application shell. -// l:(none) -// r:5.0 -// -#define qtn_trui_full_caption "TrainingUI" - -// --------------------------------------------------------------------------- -// -// Define the resource file signature -// This resource should be empty. -// -// --------------------------------------------------------------------------- -// -RESOURCE RSS_SIGNATURE { } - -// --------------------------------------------------------------------------- -// -// Default Document Name -// -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_default_document_name { buf=""; } - -// --------------------------------------------------------------------------- -// -// Define default menu and CBA key. -// -// --------------------------------------------------------------------------- -// -RESOURCE EIK_APP_INFO - { - menubar = r_trui_mainview_menubar; - } - -RESOURCE EIK_APP_INFO_EXT r_trui_toolbar_info_extension - { - popup_toolbar = r_trui_fixed_toolbar; - } - -// --------------------------------------------------------------------------- -// r_trui_mainview -// Define main view -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_VIEW r_trui_mainview - { - menubar = r_trui_mainview_menubar; - cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT; - toolbar = r_trui_mainview_toolbar; - } - -// --------------------------------------------------------------------------- -// -// r_trui_fixed_toolbar -// fixed toolbar -// -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_TOOLBAR r_trui_fixed_toolbar - { - flags = KAknToolbarWithoutCba | KAknToolbarTransparent | KAknToolbarFixed; - } - -// --------------------------------------------------------------------------- -// -// r_trui_mainview_toolbar_buttons -// fixed toolbar button groups -// -// --------------------------------------------------------------------------- -// -RESOURCE TOOLBAR_BUTTON_GROUPS r_trui_mainview_toolbar_buttons - { - buttons = - { - TBAR_CTRL - { - type = EAknCtButton; - id = EMainViewButtonIdGrid; - control = SKIN_BUTTON - { - flags = KAknButtonSizeFitText; - helptxt= qtn_hwrt_tooltip_select_character; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_char_grid; - bmpmask = EMbmTrui_iconsQgn_indi_tb_char_grid_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiTbCharGrid; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EMainViewButtonIdPreview; - control = SKIN_BUTTON - { - flags = KAknButtonSizeFitText; - helptxt= qtn_hwrt_tooltip_preview_drawing; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_model_preview; - bmpmask = EMbmTrui_iconsQgn_indi_tb_model_preview_mask; - mainitemid = EAknsMajorNone; - minoritemid = EAknsMinorGenericQgnIndiTbModelPreview; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EMainViewButtonIdDelete; - control = SKIN_BUTTON - { - flags = KAknButtonSizeFitText; - helptxt= qtn_hwrt_tooltip_delete_drawing; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_remove; - bmpmask = EMbmTrui_iconsQgn_indi_tb_remove_mask; - mainitemid = EAknsMajorNone; - minoritemid = EAknsMinorGenericQgnIndiTbRemove; - }; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_mainview_menubar -// Menu title definition in main view -// --------------------------------------------------------------------------- -// -RESOURCE MENU_BAR r_trui_mainview_menubar - { - titles = - { - MENU_TITLE - { - menu_pane = r_trui_mainview_menupane; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_mainview_menupane -// Menu for "Options" in main view -// --------------------------------------------------------------------------- -// -RESOURCE MENU_PANE r_trui_mainview_menupane - { - items = - { - MENU_ITEM - { - command = EMainViewDeleteModel; - cascade = r_trui_mainview_menu_delete_cascade; - txt = qtn_hwrt_om_delete_model; - }, - MENU_ITEM - { - command = EMainViewPreviewModel; - txt = qtn_hwrt_om_preview_model; - }, - MENU_ITEM - { - command = EMainViewCharRange; - cascade = r_trui_mainview_menu_charrange_cascade; - txt = qtn_hwrt_om_character_range; - }, - MENU_ITEM - { - command = EMainViewCharGrid; - txt = qtn_hwrt_om_character_grid; - }, - MENU_ITEM - { - command = EMainViewLanguageScript; - cascade = r_trui_mainview_menu_languagescript_cascade; - txt = qtn_hwrt_om_select_language; - }, - MENU_ITEM - { - command = EMainViewToShortcutsView; - txt = qtn_hwrt_om_shortcuts; - }, - MENU_ITEM - { - command = EMainViewHelp; - txt = qtn_options_help; - }, - MENU_ITEM - { - command = EAknSoftkeyExit; - txt = qtn_options_exit; - } - }; - } - -//----------------------------------------------------------------------------- -// -// r_trui_mainview_menu_delete_cascade -// Sub menu-pane of "Language script" menu -// -//----------------------------------------------------------------------------- -// -RESOURCE MENU_PANE r_trui_mainview_menu_delete_cascade - { - items= - { - MENU_ITEM - { - command = EMainViewDeleteCurrentModel; - txt = qtn_hwrt_submenu_delete_current_model; - }, - MENU_ITEM - { - command = EMainViewDeleteAllModel; - txt = qtn_hwrt_submenu_delete_all_models; - } - }; - } - -//----------------------------------------------------------------------------- -// -// r_trui_mainview_menu_languagescript_cascade -// Sub menu-pane of "Language script" menu -// -//----------------------------------------------------------------------------- -// -RESOURCE MENU_PANE r_trui_mainview_menu_languagescript_cascade - { - items= - { - MENU_ITEM - { - command = EMainViewSubmenuWestern; - txt = qtn_hwrt_submenu_western; - flags = EEikMenuItemRadioStart | EEikMenuItemSymbolOn; - }, - MENU_ITEM - { - command = EMainViewSubmenuCyrillic; - txt = qtn_hwrt_submenu_cyrillic; - }, - MENU_ITEM - { - command = EMainViewSubmenuGreek; - txt = qtn_hwrt_submenu_greek; - }, - MENU_ITEM - { - command = EMainViewSubmenuHebrew; - txt = qtn_hwrt_submenu_hebrew; - flags = EEikMenuItemRadioEnd; - } - }; - } - -//----------------------------------------------------------------------------- -// -// r_trui_mainview_menu_charrange_cascade -// Sub menu-pane of "Character Range" menu -// -//----------------------------------------------------------------------------- -// -RESOURCE MENU_PANE r_trui_mainview_menu_charrange_cascade - { - } - -//----------------------------------------------------------------------------- -// -// r_trui_mainview_submenu_charrange_latin -// Sub menu items of "Character Range" under Latin -// -//----------------------------------------------------------------------------- -// -RESOURCE MENU_ITEMS r_trui_mainview_submenu_charrange_latin - { - items= - { - MENU_ITEM - { - command = EMainViewSubmenuLatinLowerLetter; - txt = qtn_hwrt_submenu_latin_lower; - flags = EEikMenuItemRadioStart | EEikMenuItemSymbolOn; - }, - MENU_ITEM - { - command = EMainViewSubmenuLatinUpperLetter; - txt = qtn_hwrt_submenu_latin_capital; - }, - MENU_ITEM - { - command = EMainViewSubmenuLatinAccent; - txt = qtn_hwrt_char_range_latin_accent; - }, - MENU_ITEM - { - command = EMainViewSubmenuDigital; - txt = qtn_hwrt_submenu_digits; - }, - MENU_ITEM - { - command = EMainViewSubmenuSymbols; - txt = qtn_hwrt_submenu_symbols; - flags = EEikMenuItemRadioEnd; - } - }; - } - -//----------------------------------------------------------------------------- -// -// r_trui_mainview_submenu_charrange_cyrillic -// Sub menu items of "Character Range" under Cyrillic -// -//----------------------------------------------------------------------------- -// -RESOURCE MENU_ITEMS r_trui_mainview_submenu_charrange_cyrillic - { - items= - { - MENU_ITEM - { - command = EMainViewSubmenuCyrillicLowerLetters; - txt = qtn_hwrt_submenu_cyrillic_lower; - flags = EEikMenuItemRadioStart | EEikMenuItemSymbolOn; - }, - MENU_ITEM - { - command = EMainViewSubmenuCyrillicUpperLetters; - txt = qtn_hwrt_submenu_cyrillic_capital; - }, - MENU_ITEM - { - command = EMainViewSubmenuCyrillicAccent; - txt = qtn_hwrt_char_range_cyrillic_accent; - }, - MENU_ITEM - { - command = EMainViewSubmenuDigital; - txt = qtn_hwrt_submenu_digits; - }, - MENU_ITEM - { - command = EMainViewSubmenuSymbols; - txt = qtn_hwrt_submenu_symbols; - flags = EEikMenuItemRadioEnd; - } - }; - } - -//----------------------------------------------------------------------------- -// -// r_trui_mainview_submenu_charrange_greek -// Sub menu items of "Character Range" under Greek -// -//----------------------------------------------------------------------------- -// -RESOURCE MENU_ITEMS r_trui_mainview_submenu_charrange_greek - { - items= - { - MENU_ITEM - { - command = EMainViewSubmenuGreekLowerLetters; - txt = qtn_hwrt_submenu_greek_lower; - flags = EEikMenuItemRadioStart | EEikMenuItemSymbolOn; - }, - MENU_ITEM - { - command = EMainViewSubmenuGreekUpperLetters; - txt = qtn_hwrt_submenu_greek_capital; - }, - MENU_ITEM - { - command = EMainViewSubmenuDigital; - txt = qtn_hwrt_submenu_digits; - }, - MENU_ITEM - { - command = EMainViewSubmenuSymbols; - txt = qtn_hwrt_submenu_symbols; - flags = EEikMenuItemRadioEnd; - } - }; - } - -//----------------------------------------------------------------------------- -// -// r_trui_mainview_submenu_charrange_hebrew -// Sub menu items of "Character Range" under Hebrew -// -//----------------------------------------------------------------------------- -// -RESOURCE MENU_ITEMS r_trui_mainview_submenu_charrange_hebrew - { - items= - { - MENU_ITEM - { - command = EMainViewSubmenuHebrewLetters; - txt = qtn_hwrt_submenu_hebrew_letters; - flags = EEikMenuItemRadioStart | EEikMenuItemSymbolOn; - }, - MENU_ITEM - { - command = EMainViewSubmenuDigital; - txt = qtn_hwrt_submenu_digits; - }, - MENU_ITEM - { - command = EMainViewSubmenuSymbols; - txt = qtn_hwrt_submenu_symbols; - flags = EEikMenuItemRadioEnd; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_shortcutsview -// Define shortcuts view -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_VIEW r_trui_shortcutsview - { - menubar = r_trui_shortcutsview_menubar; - cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT; - toolbar = r_trui_shortcuts_toolbar; - } - -// --------------------------------------------------------------------------- -// r_trui_shortcutedittextview -// Define shortcut edit text view -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_VIEW r_trui_shortcutedittextview - { - cba = r_trui_shortcuteditview_empty_cba; - } - -// --------------------------------------------------------------------------- -// -// r_trui_shortcuts_toolbar_buttons -// fixed toolbar button groups -// -// --------------------------------------------------------------------------- -// -RESOURCE TOOLBAR_BUTTON_GROUPS r_trui_shortcuts_toolbar_buttons - { - buttons = - { - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutsViewButtonIdEditText; - control = SKIN_BUTTON - { - flags = KAknButtonSizeFitText; - helptxt= qtn_hwrt_tooltip_edit_shortcut_text; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_mce_tb_text; - bmpmask = EMbmTrui_iconsQgn_indi_mce_tb_text_mask; - mainitemid = EAknsMajorNone; - minoritemid = EAknsMinorGenericQgnIndiMceTbText; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutsViewButtonIdEditModel; - control = SKIN_BUTTON - { - flags = KAknButtonSizeFitText; - helptxt= qtn_hwrt_tooltip_edit_shortcut_symbol; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_edit_model; - bmpmask = EMbmTrui_iconsQgn_indi_tb_edit_model_mask; - mainitemid = EAknsMajorNone; - minoritemid = EAknsMinorGenericQgnIndiTbEditModel; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutsViewButtonIdDelete; - control = SKIN_BUTTON - { - flags = KAknButtonSizeFitText; - helptxt= qtn_hwrt_tooltip_delete; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_remove; - bmpmask = EMbmTrui_iconsQgn_indi_tb_remove_mask; - mainitemid = EAknsMajorNone; - minoritemid = EAknsMinorGenericQgnIndiTbRemove; - }; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_shortcutsview_menubar -// Menu title definition in shortcuts view -// --------------------------------------------------------------------------- -// -RESOURCE MENU_BAR r_trui_shortcutsview_menubar - { - titles = - { - MENU_TITLE - { - menu_pane = r_trui_shortcutsview_menupane; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_shortcutsview_menupane -// Menu for "Options" in shortcuts view -// --------------------------------------------------------------------------- -// -RESOURCE MENU_PANE r_trui_shortcutsview_menupane - { - items = - { - MENU_ITEM - { - command = EShortcutViewEditText; - txt = qtn_hwrt_om_edit_shortcut_text; - }, - MENU_ITEM - { - command = EShortcutViewEditModel; - txt = qtn_hwrt_om_edit_shortcut_symbol; - }, - MENU_ITEM - { - command = EShortcutViewCreate; - txt = qtn_hwrt_om_new_shortcut; - }, - MENU_ITEM - { - command = EShortcutViewDelete; - txt = qtn_hwrt_om_delete_shortcut; - }, - MENU_ITEM - { - command = EShortcutViewLinkToHandwritting; - txt = qtn_hwrt_om_training; - }, - MENU_ITEM - { - command = EShortcutViewMark; - txt = qtn_options_list_mark_one; - }, - MENU_ITEM - { - command = EShortcutViewUnmark; - txt = qtn_options_list_unmark_one; - }, - MENU_ITEM - { - command = EShortcutViewResetInfoMessage; - txt = qtn_hwrt_om_reset_intro; - }, - MENU_ITEM - { - command = EShortcutViewHelp; - txt = qtn_options_help; - }, - MENU_ITEM - { - command = EAknSoftkeyExit; - txt = qtn_options_exit; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_shortcutsview_context_menubar -// Menu title definition for context menu in shortcuts view -// --------------------------------------------------------------------------- -// -RESOURCE MENU_BAR r_trui_shortcutsview_context_menubar - { - titles = - { - MENU_TITLE - { - menu_pane = r_trui_shortcutsview_context_menupane; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_shortcutsview_context_menupane -// Menu for context menu in shortcuts view -// --------------------------------------------------------------------------- -// -RESOURCE MENU_PANE r_trui_shortcutsview_context_menupane - { - items = - { - MENU_ITEM - { - command = EShortcutViewEditText; - txt = qtn_msk_edit_text; - }, - MENU_ITEM - { - command = EShortcutViewEditModel; - txt = qtn_msk_edit_symbol; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_shortcuteditview -// Define shortcut edit view -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_VIEW r_trui_shortcuteditview - { - cba = R_AVKON_SOFTKEYS_DONE_BACK; - toolbar = r_trui_shortcut_edit_symbol_toolbar; - } - -// --------------------------------------------------------------------------- -// -// r_trui_shortcuteditview_create_cba -// CBA button when enter shortcut edit symbol view in wizard -// -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_trui_shortcuteditview_create_cba - { - flags = 0; - buttons = - { - CBA_BUTTON - { - id = EAknSoftkeyDone; - txt = text_softkey_finish; - }, - CBA_BUTTON - { - id = EAknSoftkeyBack; - txt = text_softkey_back; - } - }; - } - -// --------------------------------------------------------------------------- -// -// r_trui_shortcuteditview_empty_cba -// Empty CBA button -// -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_trui_shortcuteditview_empty_cba - { - flags = 0; - buttons = - { - CBA_BUTTON - { - }, - CBA_BUTTON - { - } - }; - } - -// --------------------------------------------------------------------------- -// -// r_trui_shortcuteditview_toolbar_buttons -// fixed toolbar button groups -// -// --------------------------------------------------------------------------- -// -RESOURCE TOOLBAR_BUTTON_GROUPS r_trui_shortcuteditview_toolbar_buttons - { - buttons = - { - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutEditViewGrid; - control = SKIN_BUTTON - { - flags = KAknButtonSizeFitText; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutEditViewPreviewModel; - control = SKIN_BUTTON - { - flags = KAknButtonSizeFitText; - helptxt= qtn_hwrt_tooltip_preview_drawing; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_model_preview; - bmpmask = EMbmTrui_iconsQgn_indi_tb_model_preview_mask; - mainitemid = EAknsMajorNone; - minoritemid = EAknsMinorGenericQgnIndiTbModelPreview; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutEditViewDelete; - control = SKIN_BUTTON - { - flags = KAknButtonSizeFitText; - helptxt= qtn_hwrt_tooltip_delete_drawing; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_remove; - bmpmask = EMbmTrui_iconsQgn_indi_tb_remove_mask; - mainitemid = EAknsMajorNone; - minoritemid = EAknsMinorGenericQgnIndiTbRemove; - }; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_infomessageview -// Define shortcut edit view -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_VIEW r_trui_infomessageview - { - cba = r_trui_infomessageview_cba; - } - -// --------------------------------------------------------------------------- -// -// r_trui_infomessageview_cba -// CBA button for trui infomessage view -// -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_trui_infomessageview_cba - { - flags = 0; - buttons = - { - CBA_BUTTON - { - id = EAknSoftkeyNext; - txt = text_softkey_start; - }, - CBA_BUTTON - { - id = EAknSoftkeyCancel; - txt = text_softkey_cancel; - } - }; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_charrange_latin_lower -// Skin-specified button for latin lower range -// -// --------------------------------------------------------------------------- -// - -RESOURCE SKIN_BUTTON r_mainview_button_charrange_latin_lower - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_case_small; - bmpmask = EMbmTrui_iconsQgn_indi_input_case_small_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiFepButtonCaseSmall; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_charrange_latin_upper -// Skin-specified button for latin upper range -// -// --------------------------------------------------------------------------- -// - -RESOURCE SKIN_BUTTON r_mainview_button_charrange_latin_upper - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_case_capital; - bmpmask = EMbmTrui_iconsQgn_indi_input_case_capital_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiFepButtonCaseCapital; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_charrange_latin_accent -// Skin-specified button for latin accent range -// -// --------------------------------------------------------------------------- -// - -RESOURCE SKIN_BUTTON r_mainview_button_charrange_latin_accent - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_case_accented; - bmpmask = EMbmTrui_iconsQgn_indi_input_case_accented_mask; - mainitemid = EAknsMajorNone; - minoritemid = EAknsMinorGenericQgnIndiFepButtonCaseAccented; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_charrange_cyrillic_lower -// Skin-specified button for cyrillic lower range -// -// --------------------------------------------------------------------------- -// - -RESOURCE SKIN_BUTTON r_mainview_button_charrange_cyrillic_lower - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_case_small_cyrillic; - bmpmask = EMbmTrui_iconsQgn_indi_input_case_small_cyrillic_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiFepButtonCaseSmallCyrillic; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_charrange_cyrillic_upper -// Skin-specified button for cyrillic upper range -// -// --------------------------------------------------------------------------- -// -RESOURCE SKIN_BUTTON r_mainview_button_charrange_cyrillic_upper - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_case_capital_cyrillic; - bmpmask = EMbmTrui_iconsQgn_indi_input_case_capital_cyrillic_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiFepButtonCaseCapitalCyrillic; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_charrange_cyrillic_accent -// Skin-specified button for cyrillic accent range -// -// --------------------------------------------------------------------------- -// -RESOURCE SKIN_BUTTON r_mainview_button_charrange_cyrillic_accent - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_case_accented_cyrillic; - bmpmask = EMbmTrui_iconsQgn_indi_input_case_accented_cyrillic_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiFepButtonCaseAccentedCyrillic; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_charrange_greek_lower -// Skin-specified button for greek lower range -// -// --------------------------------------------------------------------------- -// -RESOURCE SKIN_BUTTON r_mainview_button_charrange_greek_lower - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_case_small_greek; - bmpmask = EMbmTrui_iconsQgn_indi_input_case_small_greek_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiFepButtonCaseSmallGreek; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_charrange_greek_upper -// Skin-specified button for greek upper range -// -// --------------------------------------------------------------------------- -// -RESOURCE SKIN_BUTTON r_mainview_button_charrange_greek_upper - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_case_capital_greek; - bmpmask = EMbmTrui_iconsQgn_indi_input_case_capital_greek_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiFepButtonCaseCapitalGreek; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_charrange_hebrew_letters -// Skin-specified button for hebrew range -// -// --------------------------------------------------------------------------- -// -RESOURCE SKIN_BUTTON r_mainview_button_charrange_hebrew_letters - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_case_text_hebrew; - bmpmask = EMbmTrui_iconsQgn_indi_input_case_text_hebrew_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiFepButtonCaseTextHebrew; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_charrange_numeric -// Skin-specified button for numeric range -// -// --------------------------------------------------------------------------- -// -RESOURCE SKIN_BUTTON r_mainview_button_charrange_numeric - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_case_numeric; - bmpmask = EMbmTrui_iconsQgn_indi_input_case_numeric_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiFepButtonCaseNumeric; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_charrange_symbol -// Skin-specified button for symbol range -// -// --------------------------------------------------------------------------- -// -RESOURCE SKIN_BUTTON r_mainview_button_charrange_symbol - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_case_special; - bmpmask = EMbmTrui_iconsQgn_indi_input_case_special_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiFepButtonCaseSpecial; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_left -// Skin-specified button for left button -// -// --------------------------------------------------------------------------- -// -RESOURCE SKIN_BUTTON r_mainview_button_left - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_char_prev; - bmpmask = EMbmTrui_iconsQgn_indi_input_char_prev_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiInputCharPrev; - } - -// --------------------------------------------------------------------------- -// -// r_mainview_button_right -// Skin-specified button for right button -// -// --------------------------------------------------------------------------- -// -RESOURCE SKIN_BUTTON r_mainview_button_right - { - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_input_char_next; - bmpmask = EMbmTrui_iconsQgn_indi_input_char_next_mask; - mainitemid = EAknsMajorSkin; - minoritemid = EAknsMinorGenericQgnIndiInputCharNext; - } - -RESOURCE LABEL r_mainview_label_tip - { - horiz_align = EEikLabelAlignHLeft; - vert_align = EEikLabelAlignVTop; - } - -RESOURCE LABEL r_mainview_label_indicator - { - horiz_align = EEikLabelAlignHCenter; - vert_align = EEikLabelAlignVCenter; - } - -// --------------------------------------------------------------------------- -// -// r_navigationpane_tabgroup -// Tab group definition, loaded when menu item selected -// -// --------------------------------------------------------------------------- -// -RESOURCE TAB_GROUP r_navigationpane_tabgroup - { - tab_width = EAknTabWidthWithTwoTabs; // display two tabs - active = 0; - tabs = - { - TAB - { - id = ENavigationPaneMainViewTab; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_prop_hwrtraining_tab2; - bmpmask = EMbmTrui_iconsQgn_prop_hwrtraining_tab2_mask; - }, - TAB - { - id = ENavigationPaneShortcutsViewTab; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_prop_hwrtraining_shortcut_tab2; - bmpmask = EMbmTrui_iconsQgn_prop_hwrtraining_shortcut_tab2_mask; - } - }; - } - -// --------------------------------------------------------------------------- -// -// r_shortcuteditview_label_shortcuttext -// Shortcut edit botton in the shortcuteditview -// -// --------------------------------------------------------------------------- -// -RESOURCE LABEL r_shortcuteditview_label_shortcuttext - { - horiz_align = EEikLabelAlignHCenter; - vert_align = EEikLabelAlignVCenter; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_dialog -// SCT definition. -// -// --------------------------------------------------------------------------- -// -RESOURCE DIALOG r_trui_sct_dialog - { - flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | - EEikDialogFlagNoShadow | EEikDialogFlagWait; - buttons = R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT; - items= - { - DLG_LINE - { - type = EAknCtPopupHeadingPane; - id = EAknSCTQueryHeadingId; - control = AVKON_HEADING - { - label = qtn_hwrt_sct_select_character; - headinglayout = R_AVKON_SCT_LIST_HEADING_PANE; - }; - }, - DLG_LINE - { - type = EAknCtSpecialCharacterMap; - id = EAknSCTQueryContentId; - control = SPECIAL_CHAR_TABLE - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_hwr_sct_initial_text; - } - }; - }; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_latin_lower -// SCT charset definition for latin lower range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_latin_lower - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_latin_lowerletters; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_latin_upper -// SCT charset definition for latin upper range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_latin_upper - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_latin_upperletters; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_latin_numeric -// SCT charset definition for latin numeric range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_latin_numeric - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_latin_digital; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_latin_symbol -// SCT charset definition for latin symbol range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_latin_symbol - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_latin_symbol; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_latin_symbol_chinese -// SCT charset definition for latin symbol range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_latin_symbol_chinese - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_latin_symbol_chinese; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_latin_accent -// SCT charset definition for latin accent range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_latin_accent - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_latin_accent; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_cyrillic_lower -// SCT charset definition for cyrillic lower range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_cyrillic_lower - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_cyrillic_lowerletters; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_cyrillic_lower_bulgarian -// SCT charset definition for Bulgarian lower range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_cyrillic_lower_bulgarian - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_cyrillic_lowerletters_bulgarian; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_cyrillic_lower_russian -// SCT charset definition for Russian lower range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_cyrillic_lower_russian - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_cyrillic_lowerletters_russian; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_cyrillic_lower_ukraine -// SCT charset definition for Ukraine lower range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_cyrillic_lower_ukraine - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_cyrillic_lowerletters_ukraine; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_cyrillic_upper -// SCT charset definition for cyrillic upper range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_cyrillic_upper - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_cyrillic_upperletters; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_cyrillic_upper_bulgarian -// SCT charset definition for Bulgarian upper range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_cyrillic_upper_bulgarian - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_cyrillic_upperletters_bulgarian; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_cyrillic_upper_russian -// SCT charset definition for Russian upper range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_cyrillic_upper_russian - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_cyrillic_upperletters_russian; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_cyrillic_upper_ukraine -// SCT charset definition for Ukraine upper range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_cyrillic_upper_ukraine - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_cyrillic_upperletters_ukraine; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_cyrillic_accent -// SCT charset definition for cyrillic accent range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_cyrillic_accent - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_cyrillic_accent; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_greek_lower -// SCT charset definition for greek lower range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_greek_lower - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_greek_lowerletters; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_greek_upper -// SCT charset definition for greek upper range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_greek_upper - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_greek_upperletters; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_hebrew_letters -// SCT charset definition for hebrew letters range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_hebrew_letters - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_sct_hebrew_letters; - } - }; - } - -// --------------------------------------------------------------------------- -// -// r_trui_querydialog_delete_shortcut -// Query dialog appear -// when pressing "Delete shortcut" from menu. -// -// --------------------------------------------------------------------------- -// -RESOURCE DIALOG r_trui_querydialog_delete_shortcut - { - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_YES_NO; - items = - { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_CONFIRMATION_QUERY - { - layout = EConfirmationQueryLayout; - }; - } - }; - } - -// --------------------------------------------------------------------------- -// -// r_trui_querydialog_shortcut_not_assigned -// Query dialog appearing when exiting without model -// -// --------------------------------------------------------------------------- -// -RESOURCE DIALOG r_trui_querydialog_shortcut_not_assigned - { - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_YES_NO; - items = - { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_CONFIRMATION_QUERY - { - layout = EConfirmationQueryLayout; - label = qtn_hwrt_note_shortcut_not_assigned; - }; - } - }; - } - -// --------------------------------------------------------------------------- -// r_trui_shortcut_edit_text_editor -// Shortcut text setting editor -// -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_SETTING_PAGE r_trui_shortcut_edit_text_editor - { - softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL; - label = qtn_hwrt_shortcut_assign_text; - type = EEikCtEdwin; - editor_resource_id = r_trui_shortcut_setting_editor_edwin; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_CANCEL; - extension = r_trui_setting_page_extension; - } - -RESOURCE AVKON_SETTING_PAGE_EXTENSION r_trui_setting_page_extension - { - flags = KAknSettingPageNoEmbeddedSoftKeys; - } - -// --------------------------------------------------------------------------- -// r_trui_shortcut_setting_editor_edwin -// Setting editor control. -// -// --------------------------------------------------------------------------- -// -RESOURCE EDWIN r_trui_shortcut_setting_editor_edwin - { - lines = 0; - maxlength = TRUI_SHORTCUTEDITOR_TEXT_MAXLENGTH; - } - -// --------------------------------------------------------------------------- -// r_trui_shortcut_edit_text_editor -// Shortcut text setting editor -// -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_SETTING_PAGE r_trui_shortcut_wizard_editor - { - softkey_resource = r_trui_shortcutedittextview_next_back; - label = qtn_hwrt_shortcut_assign_text; - type = EEikCtEdwin; - editor_resource_id = r_trui_shortcut_setting_editor_edwin; - invalid_contents_softkey_resource = R_AVKON_SOFTKEYS_BACK; - extension = r_trui_setting_page_extension; - } - -// --------------------------------------------------------------------------- -// -// r_trui_shortcutedittextview_next_back -// CBA button -// -// --------------------------------------------------------------------------- -// -RESOURCE CBA r_trui_shortcutedittextview_next_back - { - flags = 0; - buttons = - { - CBA_BUTTON - { - id = EAknSoftkeyNext; - txt = text_softkey_next; - }, - CBA_BUTTON - { - id = EAknSoftkeyBack; - txt = text_softkey_back; - } - }; - } - -// --------------------------------------------------------------------------- -// -// This is the first option of the listbox in the -// shortcut view "New WHR Shortcut" -// -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_shortcutview_new_shortcut - { buf = qtn_hwrt_list_item_new_shortcut; } - -// --------------------------------------------------------------------------- -// -// The text above the Writing Box -// -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_mainview_text_teach_character - { buf = qtn_hwrt_text_teach_character; } - -// --------------------------------------------------------------------------- -// -// The Active character indicator -// -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_mainview_active_char_indicator - { buf = qtn_hwrt_active_char_indicator; } - -// --------------------------------------------------------------------------- -// -// Text for Character Range -// -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_mainview_char_range_lower - { buf = qtn_hwrt_char_range_lower; } - -RESOURCE TBUF r_trui_mainview_char_range_capital - { buf = qtn_hwrt_char_range_capital; } - -RESOURCE TBUF r_trui_mainview_char_range_accent - { buf = qtn_hwrt_char_range_latin_accent; } - -RESOURCE TBUF r_trui_mainview_char_range_digits - { buf = qtn_hwrt_char_range_digits; } - -RESOURCE TBUF r_trui_mainview_char_range_symbols - { buf = qtn_hwrt_char_range_symbols; } - -RESOURCE TBUF r_trui_mainview_cyrillic_lower - { buf = qtn_hwrt_cyrillic_lower_range; } - -RESOURCE TBUF r_trui_mainview_cyrillic_capital - { buf = qtn_hwrt_cyrillic_capital_range; } - -RESOURCE TBUF r_trui_mainview_cyrillic_accent - { buf = qtn_hwrt_char_range_cyrillic_accent; } - -RESOURCE TBUF r_trui_mainview_greek_lower - { buf = qtn_hwrt_greek_lower_range; } - -RESOURCE TBUF r_trui_mainview_greek_capital - { buf = qtn_hwrt_greek_capital_range; } - -RESOURCE TBUF r_trui_mainview_hebrew_letters - { buf = qtn_hwrt_hebrew_letters; } - - -// --------------------------------------------------------------------------- -// -// Text for Character Set -// -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_characterset_latin_lowerletters - { buf = qtn_sct_latin_lowerletters; } - -RESOURCE TBUF r_trui_characterset_latin_upperletters - { buf = qtn_sct_latin_upperletters;} - -RESOURCE TBUF r_trui_characterset_latin_accent - { buf = qtn_sct_latin_accent;} - -RESOURCE TBUF r_trui_characterset_latin_digital - { buf = qtn_sct_latin_digital; } - -RESOURCE TBUF r_trui_characterset_latin_symbol - { buf = qtn_sct_latin_symbol; } - -RESOURCE TBUF r_trui_characterset_latin_symbol_chinese - { buf = qtn_sct_latin_symbol_chinese; } - -RESOURCE TBUF r_trui_characterset_cyrillic_lowerletters - { buf = qtn_sct_cyrillic_lowerletters; } - -RESOURCE TBUF r_trui_characterset_cyrillic_lowerletters_bulgarian - { buf = qtn_sct_cyrillic_lowerletters_bulgarian; } - -RESOURCE TBUF r_trui_characterset_cyrillic_lowerletters_ukraine - { buf = qtn_sct_cyrillic_lowerletters_ukraine; } - -RESOURCE TBUF r_trui_characterset_cyrillic_lowerletters_russian - { buf = qtn_sct_cyrillic_lowerletters_russian; } - -RESOURCE TBUF r_trui_characterset_cyrillic_upperletters - { buf = qtn_sct_cyrillic_upperletters; } - -RESOURCE TBUF r_trui_characterset_cyrillic_upperletters_bulgarian - { buf = qtn_sct_cyrillic_upperletters_bulgarian; } - -RESOURCE TBUF r_trui_characterset_cyrillic_upperletters_russian - { buf = qtn_sct_cyrillic_upperletters_russian; } - -RESOURCE TBUF r_trui_characterset_cyrillic_upperletters_ukraine - { buf = qtn_sct_cyrillic_upperletters_ukraine; } - -RESOURCE TBUF r_trui_characterset_cyrillic_accent - { buf = qtn_sct_cyrillic_accent;} - -RESOURCE TBUF r_trui_characterset_greek_lowerletters - { buf = qtn_sct_greek_lowerletters; } - -RESOURCE TBUF r_trui_characterset_greek_upperletters - { buf = qtn_sct_greek_upperletters; } - -RESOURCE TBUF r_trui_characterset_hebrew_letters - { buf = qtn_sct_hebrew_letters; } - -// --------------------------------------------------------------------------- -// -// Operation tooltip -// -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_tooltip_saved - { buf = qtn_hwrt_confirmation_banner_saved; } -RESOURCE TBUF r_trui_tooltip_deleted - { buf = qtn_hwrt_confirmation_banner_deleted; } -RESOURCE TBUF r_trui_note_clear_box - { buf = qtn_hwrt_note_clear_box; } -RESOURCE TBUF r_trui_note_similar_model - { buf = qtn_hwrt_note_similar_model; } -RESOURCE TBUF r_trui_note_save_failed - { buf = qtn_hwrt_note_save_failed; } - -// --------------------------------------------------------------------------- -// -// Text for title pane -// -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_mainview_titlepane_text - { buf = qtn_hwrt_title_pane; } -RESOURCE TBUF r_trui_shortcutsview_titlepane_text - { buf = qtn_hwrt_title_pane; } -RESOURCE TBUF r_trui_shortcuteditview_titlepane_text - { buf = qtn_hwrt_title_wizard_hwr_shortcut; } -RESOURCE TBUF r_trui_infomessageview_titlepane_text - { buf = qtn_hwrt_title_crete_new_shortcut; } -RESOURCE TBUF r_trui_shortcutedittextview_titlepane_text - { buf = qtn_hwrt_title_hwr_shortcut; } -RESOURCE TBUF r_trui_shortcutedittextview_titlepane_number - { buf = qtn_hwrt_title_first_page_number; } -RESOURCE TBUF r_trui_shortcutedittextview_titlepane_last_number - { buf = qtn_hwrt_title_last_page_number; } - -// --------------------------------------------------------------------------- -// r_trui_localisable_app_info -// Trainui localisable app info. -// -// --------------------------------------------------------------------------- -// -RESOURCE LOCALISABLE_APP_INFO r_trui_localisable_app_info - { - short_caption = qtn_apps_hwrt_grid; - caption_and_icon = - { - CAPTION_AND_ICON_INFO - { - number_of_icons = 1; - icon_file = APP_BITMAP_DIR"\\"qtn_trui_appinfo_icons_filename; - } - }; - } - -// --------------------------------------------------------------------------- -// -// Text for shortcut edit model view -// -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_shortcuteditmodelview_radiobutton_own - { buf = qtn_hwrt_radio_button_own_symbol; } -RESOURCE TBUF r_trui_shortcuteditmodelview_radiobutton_preset - { buf = qtn_hwrt_radio_button_preset_symbol; } -RESOURCE TBUF r_trui_shortcuteditmodelview_label_own - { buf = qtn_hwrt_text_purpose_own_symbol; } - -// --------------------------------------------------------------------------- -// r_trui_language_script_set -// Define the resource struct for mapping table -// from language code to language script. -// --------------------------------------------------------------------------- -// -RESOURCE LANGUAGE_SCRIPT_SET r_trui_language_script_set - { - contents = - { - LANGUAGE_SCRIPT - { - id = EMainViewSubmenuWestern; - codes = - { - 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 13, - 14, 15, 17, 18, 25, 26, 27, 28, 39, 45, 49, - 51, 59, 67, 68, 70, 76, 78, 79, 83, 157, 158, - 159, 160, 161, 326, 327, 44, 102, 103, 401, 402 - }; - }, - LANGUAGE_SCRIPT - { - id = EMainViewSubmenuCyrillic; - codes = - { - 16, 42, 93 - }; - }, - LANGUAGE_SCRIPT - { - id = EMainViewSubmenuGreek; - codes = - { - 54 - }; - }, - LANGUAGE_SCRIPT - { - id = EMainViewSubmenuHebrew; - codes = - { - 57 - }; - } - }; - } - -// --------------------------------------------------------------------------- -// The informative message for shortcut wizard. -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_infomaessageview_message - { buf = qtn_hwrt_informative_message; } - -// --------------------------------------------------------------------------- -// The text for checkbox in info message view. -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_infomaessageview_checkbox_text - { buf = qtn_hwrt_informative_message_check_box_label; } - -// --------------------------------------------------------------------------- -// The text for own symbol in shortcut edit symbol view. -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_shortcuteditview_own_symbol - { buf = qtn_hwrt_text_purpose_own_symbol; } - -// --------------------------------------------------------------------------- -// The text for preset symbol in shortcut edit symbol view. -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_shortcuteditview_preset_symbol - { buf = qtn_hwrt_text_purpose_selected_symbol; } - -// --------------------------------------------------------------------------- -// The text for error note of symbol in use. -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_shortcuteditview_error_note_in_use - { buf = qtn_hwrt_note_shortcut_is_used; } - -// --------------------------------------------------------------------------- -// The text for error note of all symbols in use. -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_shortcuteditview_error_note_all_in_use - { buf = qtn_hwrt_all_symbols_in_use_notification; } - -// --------------------------------------------------------------------------- -// r_trui_sct_charset_latin_lower -// SCT charset definition for latin lower range. -// -// --------------------------------------------------------------------------- -// -RESOURCE SPECIAL_CHAR_TABLE r_trui_sct_charset_preset - { - contents = - { - SCT_CHAR_SET - { - id = EAknSCTLowerCase; - chars = qtn_hwrt_preset_characters; - } - }; - } - -// --------------------------------------------------------------------------- -// Preset symbols -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_trui_preset_symbols - { buf = qtn_hwrt_preset_characters; } - -// --------------------------------------------------------------------------- -// -// r_trui_querydialog_delete_shortcut -// Query dialog appear -// when pressing "Current shortcut" from menu. -// -// --------------------------------------------------------------------------- -// -RESOURCE DIALOG r_trui_querydialog_delete_all_models - { - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_YES_NO; - items = - { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_CONFIRMATION_QUERY - { - layout = EConfirmationQueryLayout; - label = qtn_hwrt_note_delete_all_models; - }; - } - }; - } - -// --------------------------------------------------------------------------- -// Query dialog text for deleting single shortcut. -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_qtn_hwrt_query_delete_shortcut - { buf = qtn_hwrt_query_delete_shortcut; } - -// --------------------------------------------------------------------------- -// Query dialog text for deleting mutiple shortcuts. -// --------------------------------------------------------------------------- -// -RESOURCE TBUF r_qtn_hwrt_query_delete_several_shortcuts - { buf = qtn_hwrt_query_delete_several_shortcuts; } - -// --------------------------------------------------------------------------- -// -// r_trui_mainview_toolbar -// toolbar -// -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_TOOLBAR r_trui_mainview_toolbar - { - flags = KAknToolbarWithoutCba | KAknToolbarTransparent | KAknToolbarFixed; - items = - { - TBAR_CTRL - { - type = EAknCtButton; - id = EMainViewButtonIdGrid; - control = AVKON_BUTTON - { - flags = KAknButtonSizeFitText; - states = - { - AVKON_BUTTON_STATE - { - helptxt= qtn_hwrt_tooltip_select_character; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_char_grid; - bmpmask = EMbmTrui_iconsQgn_indi_tb_char_grid_mask; - } - }; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EMainViewButtonIdPreview; - control = AVKON_BUTTON - { - flags = KAknButtonSizeFitText; - states = - { - AVKON_BUTTON_STATE - { - helptxt= qtn_hwrt_tooltip_preview_drawing; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_model_preview; - bmpmask = EMbmTrui_iconsQgn_indi_tb_model_preview_mask; - } - }; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EMainViewButtonIdDelete; - control = AVKON_BUTTON - { - flags = KAknButtonSizeFitText; - states = - { - AVKON_BUTTON_STATE - { - helptxt= qtn_hwrt_tooltip_delete_drawing; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_remove; - bmpmask = EMbmTrui_iconsQgn_indi_tb_remove_mask; - } - }; - }; - } - }; - } - -// --------------------------------------------------------------------------- -// -// r_trui_shortcuts_toolbar -// toolbar -// -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_TOOLBAR r_trui_shortcuts_toolbar - { - flags = KAknToolbarWithoutCba | KAknToolbarTransparent | KAknToolbarFixed; - items = - { - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutsViewButtonIdEditText; - control = AVKON_BUTTON - { - flags = KAknButtonSizeFitText; - states = - { - AVKON_BUTTON_STATE - { - helptxt= qtn_hwrt_tooltip_edit_shortcut_text; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_mce_tb_text; - bmpmask = EMbmTrui_iconsQgn_indi_mce_tb_text_mask; - } - }; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutsViewButtonIdEditModel; - control = AVKON_BUTTON - { - flags = KAknButtonSizeFitText; - states = - { - AVKON_BUTTON_STATE - { - helptxt= qtn_hwrt_tooltip_edit_shortcut_symbol; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_edit_model; - bmpmask = EMbmTrui_iconsQgn_indi_tb_edit_model_mask; - } - }; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutsViewButtonIdDelete; - control = AVKON_BUTTON - { - flags = KAknButtonSizeFitText; - states = - { - AVKON_BUTTON_STATE - { - helptxt= qtn_hwrt_tooltip_delete; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_remove; - bmpmask = EMbmTrui_iconsQgn_indi_tb_remove_mask; - } - }; - }; - } - }; - } - -// --------------------------------------------------------------------------- -// -// r_trui_shortcut_edit_symbol_toolbar -// toolbar -// -// --------------------------------------------------------------------------- -// -RESOURCE AVKON_TOOLBAR r_trui_shortcut_edit_symbol_toolbar - { - flags = KAknToolbarWithoutCba | KAknToolbarTransparent | KAknToolbarFixed; - items = - { - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutEditViewGrid; - control = AVKON_BUTTON - { - flags = KAknButtonSizeFitText; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutEditViewPreviewModel; - control = AVKON_BUTTON - { - flags = KAknButtonSizeFitText; - states = - { - AVKON_BUTTON_STATE - { - helptxt= qtn_hwrt_tooltip_preview_drawing; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_model_preview; - bmpmask = EMbmTrui_iconsQgn_indi_tb_model_preview_mask; - } - }; - }; - }, - TBAR_CTRL - { - type = EAknCtButton; - id = EShortcutEditViewDelete; - control = AVKON_BUTTON - { - flags = KAknButtonSizeFitText; - states = - { - AVKON_BUTTON_STATE - { - helptxt= qtn_hwrt_tooltip_delete_drawing; - bmpfile = APP_BITMAP_DIR"\\"qtn_trui_icons_filename; - bmpid = EMbmTrui_iconsQgn_indi_tb_remove; - bmpmask = EMbmTrui_iconsQgn_indi_tb_remove_mask; - } - }; - }; - } - }; - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/data/trui_reg.rss --- a/textinput/peninputhwrtrui/data/trui_reg.rss Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource definitions for project TrainingUI -* -*/ -//trui application's registration resource file - -#include -#include -#include - -UID2 KUidAppRegistrationResourceFile -UID3 0x2000B104 - -// d:Trui app file name -// l:(none) -// r:5.0 -// -#define qtn_trui_app_file "trui" - -// d:Trui localisable resource file name -// l:(none) -// r:5.0 -// -#define qtn_trui_localisable_resource_file "trui" - -RESOURCE APP_REGISTRATION_INFO - { - app_file = qtn_trui_app_file; - localisable_resource_file = APP_RESOURCE_DIR"\\"qtn_trui_localisable_resource_file; - localisable_resource_id = R_TRUI_LOCALISABLE_APP_INFO; - hidden = KAppIsHidden; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/group/bld.inf --- a/textinput/peninputhwrtrui/group/bld.inf Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Build information file for project ?myapp -* -*/ - -#include - -PRJ_EXPORTS -../loc/trui.loc MW_LAYER_LOC_EXPORT_PATH(trui.loc) -../data/TrainUiPreset.dat /epoc32/RELEASE/winscw/udeb/Z/resource/TrainUiPreset.dat -../data/TrainUiPreset.dat /epoc32/RELEASE/winscw/urel/Z/resource/TrainUiPreset.dat -../data/TrainUiPreset.dat /epoc32/RELEASE/armv5/UREL/z/resource/TrainUiPreset.dat -../data/TrainUiPreset.dat /epoc32/RELEASE/armv5/UDEB/z/resource/TrainUiPreset.dat -../inc/truisupportedlanguageid.h |../../../inc/truisupportedlanguageid.h - -../rom/peninputhwrtruivariant.iby CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(peninputhwrtruivariant.iby) -../rom/peninputhwrtruiresources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(peninputhwrtruiresources.iby) - -PRJ_MMPFILES - -//gnumakefile trui_aif.mk -trui.mmp - -PRJ_EXTENSIONS -START EXTENSION s60/mifconv -OPTION TARGETFILE trui_icons.mif -OPTION HEADERFILE trui_icons.mbg -OPTION SOURCEFILE iconlist.txt -END - -START EXTENSION s60/mifconv -OPTION TARGETFILE trui_aif.mif -OPTION SOURCEFILE iconlist_aif.txt -END - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/group/iconlist.txt --- a/textinput/peninputhwrtrui/group/iconlist.txt Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ --c32,1 qgn_indi_input_case_accented.svg --c32,1 qgn_indi_input_case_capital.svg --c32,1 qgn_indi_input_case_capital_cyrillic.svg --c32,1 qgn_indi_input_case_capital_greek.svg --c32,1 qgn_indi_input_case_numeric.svg --c32,1 qgn_indi_input_case_small.svg --c32,1 qgn_indi_input_case_small_cyrillic.svg --c32,1 qgn_indi_input_case_small_greek.svg --c32,1 qgn_indi_input_case_text_hebrew.svg --c32,1 qgn_indi_input_case_special.svg --c32,1 qgn_indi_input_char_next.svg --c32,1 qgn_indi_input_char_prev.svg --c32,1 qgn_indi_tb_char_grid.svg --c32,1 qgn_indi_tb_edit_model.svg --c32,1 qgn_indi_tb_model_preview.svg --c32,1 qgn_indi_tb_remove.svg --c32,1 qgn_prop_hwrtraining_shortcut_new.svg --c32,1 qgn_prop_hwrtraining_shortcut_tab2.svg --c32,1 qgn_prop_hwrtraining_tab2.svg --c32,1 qgn_indi_mce_tb_text.svg --c32,1 qgn_indi_marked_add.svg --c32,1 qgn_graf_fep_bg_colour.svg --c32,1 qgn_graf_fep_popup_shadow_tl.svg --c32,1 qgn_graf_fep_popup_shadow_t.svg --c32,1 qgn_graf_fep_popup_shadow_tr.svg --c32,1 qgn_graf_fep_popup_shadow_b.svg --c32,1 qgn_graf_fep_popup_shadow_bl.svg --c32,1 qgn_graf_fep_popup_shadow_br.svg --c32,1 qgn_graf_fep_popup_shadow_l.svg --c32,1 qgn_graf_fep_popup_shadow_r.svg --c32,1 qgn_indi_input_case_accented_cyrillic.svg \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/group/iconlist_aif.txt --- a/textinput/peninputhwrtrui/group/iconlist_aif.txt Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ --c32,1 qgn_menu_hwr_training.svg \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/group/trui.mmp --- a/textinput/peninputhwrtrui/group/trui.mmp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,101 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Project definition file for TrainingUI -* -*/ - - -#include -#include - -TARGETPATH PROGRAMS_DIR -TARGET trui.exe -TARGETTYPE exe -UID 0x100039CE 0x2000B104 - -CAPABILITY CAP_APPLICATION -VENDORID VID_DEFAULT -EPOCSTACKSIZE 0x5000 - -SOURCEPATH ../src -SOURCE trui.cpp -SOURCE truiapplication.cpp -SOURCE truidocument.cpp -SOURCE truiappui.cpp -SOURCE truimainview.cpp -SOURCE truishortcutsview.cpp -SOURCE truishortcuteditview.cpp -SOURCE truicontainerbase.cpp -SOURCE truimainviewcontainer.cpp -SOURCE truishortcutscontainer.cpp -SOURCE truishortcuteditcontainer.cpp -SOURCE truiengine.cpp -SOURCE truihwrbox.cpp -SOURCE truitextsettingpagecontainer.cpp -SOURCE truishortcutedittextview.cpp -SOURCE truiinfomessageview.cpp -SOURCE truiinfomessagecontainer.cpp -SOURCE truilanguagerelation.cpp -SOURCE truiappradiobutton.cpp - -USERINCLUDE ../inc -MW_LAYER_SYSTEMINCLUDE -APP_LAYER_SYSTEMINCLUDE - -LIBRARY euser.lib -LIBRARY apparc.lib -LIBRARY cone.lib -LIBRARY eikcore.lib -LIBRARY avkon.lib -LIBRARY eikcoctl.lib -LIBRARY bafl.lib -LIBRARY eiksrv.lib -LIBRARY eikctl.lib -LIBRARY aknicon.lib -LIBRARY egul.lib -LIBRARY estor.lib -LIBRARY efsrv.lib -LIBRARY CommonEngine.lib -LIBRARY centralrepository.lib -LIBRARY ptiengine.lib -LIBRARY hlplch.lib -LIBRARY cdlengine.lib -LIBRARY aknlayout2.lib -LIBRARY gdi.lib -LIBRARY aknskins.lib -LIBRARY aknskinsrv.lib -LIBRARY aknswallpaperutils.lib -LIBRARY fbscli.lib -LIBRARY aknlayout2scalable.lib -LIBRARY ws32.lib -LIBRARY etext.lib -LIBRARY form.lib - -LIBRARY FeatMgr.lib // feature manager -#ifdef RD_TACTILE_FEEDBACK -LIBRARY touchfeedback.lib -#endif // RD_TACTILE_FEEDBACK - -SOURCEPATH ../data -START RESOURCE trui.rss -HEADER -LANGUAGE_IDS -TARGETPATH APP_RESOURCE_DIR -END // RESOURCE - -START RESOURCE trui_reg.rss -DEPENDS trui.rsg -TARGETPATH /private/10003a3f/apps -END // RESOURCE - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/group/trui_aif.mk --- a/textinput/peninputhwrtrui/group/trui_aif.mk Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -# -# Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0"" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: icons makefile for project ?myapp -# - -ifeq (WINS,$(findstring WINS, $(PLATFORM))) -ZDIR=$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(CFG)\Z -else -ZDIR=$(EPOCROOT)Epoc32\data\z -endif - -TARGETDIR = $(ZDIR)\resource\apps -HEADERDIR = $(EPOCROOT)epoc32\include -APPINFOFILENAME = $(TARGETDIR)\trui_aif.mif -ICONTARGETFILENAME = $(TARGETDIR)\trui_icons.mif -HEADERFILENAME = $(HEADERDIR)\trui_icons.mbg -ICONDIR = ..\data - -do_nothing : - @rem do_nothing - -MAKMAKE : do_nothing - -BLD : do_nothing - -CLEAN : do_nothing - -LIB : do_nothing - -CLEANLIB : do_nothing - -RESOURCE : - mifconv $(ICONTARGETFILENAME) /H$(HEADERFILENAME) \ - /c32,1 qgn_indi_input_case_accented.svg \ - /c32,1 qgn_indi_input_case_capital.svg \ - /c32,1 qgn_indi_input_case_capital_cyrillic.svg \ - /c32,1 qgn_indi_input_case_capital_greek.svg \ - /c32,1 qgn_indi_input_case_numeric.svg \ - /c32,1 qgn_indi_input_case_small.svg \ - /c32,1 qgn_indi_input_case_small_cyrillic.svg \ - /c32,1 qgn_indi_input_case_small_greek.svg \ - /c32,1 qgn_indi_input_case_text_hebrew.svg \ - /c32,1 qgn_indi_input_case_special.svg \ - /c32,1 qgn_indi_input_char_next.svg \ - /c32,1 qgn_indi_input_char_prev.svg \ - /c32,1 qgn_indi_tb_char_grid.svg \ - /c32,1 qgn_indi_tb_edit_model.svg \ - /c32,1 qgn_indi_tb_model_preview.svg \ - /c32,1 qgn_indi_tb_remove.svg \ - /c32,1 qgn_prop_hwrtraining_shortcut_new.svg \ - /c32,1 qgn_prop_hwrtraining_shortcut_tab2.svg \ - /c32,1 qgn_prop_hwrtraining_tab2.svg \ - /c32,1 qgn_indi_mce_tb_text.svg \ - /c32,1 qgn_indi_marked_add.svg \ - /c32,1 $(ICONDIR)\qgn_graf_fep_bg_colour.svg \ - /c32,1 $(ICONDIR)\qgn_graf_fep_popup_shadow_tl.svg \ - /c32,1 $(ICONDIR)\qgn_graf_fep_popup_shadow_t.svg \ - /c32,1 $(ICONDIR)\qgn_graf_fep_popup_shadow_tr.svg \ - /c32,1 $(ICONDIR)\qgn_graf_fep_popup_shadow_b.svg \ - /c32,1 $(ICONDIR)\qgn_graf_fep_popup_shadow_bl.svg \ - /c32,1 $(ICONDIR)\qgn_graf_fep_popup_shadow_br.svg \ - /c32,1 $(ICONDIR)\qgn_graf_fep_popup_shadow_l.svg \ - /c32,1 $(ICONDIR)\qgn_graf_fep_popup_shadow_r.svg \ - /c32,1 qgn_indi_input_case_accented_cyrillic.svg - - mifconv $(APPINFOFILENAME)\ - /c32,1 qgn_menu_hwr_training.svg - -FREEZE : do_nothing - -SAVESPACE : do_nothing - -RELEASABLES : - @echo $(ICONTARGETFILENAME) - -FINAL : do_nothing diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/trui.hrh --- a/textinput/peninputhwrtrui/inc/trui.hrh Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource headers for project TrainingUI -* -*/ - - -#ifndef TRUI_HRH -#define TRUI_HRH - -/** trui enumerate command codes */ -enum TTruiIds - { - ENavigationPaneMainViewTab = 1, // start value must not be 0 - ENavigationPaneShortcutsViewTab, - EMainViewDeleteModel, - EMainViewDeleteCurrentModel, - EMainViewDeleteAllModel, - EMainViewPreviewModel, - EMainViewCharRange, - EMainViewCharGrid, - EMainViewLanguageScript, - EMainViewToShortcutsView, - EMainViewHelp, - EMainViewSubmenuWestern, - EMainViewSubmenuCyrillic, - EMainViewSubmenuGreek, - EMainViewSubmenuHebrew, - EMainViewSubmenuLatinLowerLetter, - EMainViewSubmenuLatinUpperLetter, - EMainViewSubmenuDigital, - EMainViewSubmenuSymbols, - EMainViewSubmenuLatinAccent, - EMainViewSubmenuCyrillicLowerLetters, - EMainViewSubmenuCyrillicUpperLetters, - EMainViewSubmenuCyrillicAccent, - EMainViewSubmenuGreekLowerLetters, - EMainViewSubmenuGreekUpperLetters, - EMainViewSubmenuHebrewLetters, - EShortcutViewEditText, - EShortcutViewEditModel, - EShortcutViewCreate, - EShortcutViewDelete, - EShortcutViewLinkToHandwritting, - EShortcutViewMark, - EShortcutViewUnmark, - EShortcutViewResetInfoMessage, - EShortcutViewHelp, - EShortcutEditViewDelete, - EShortcutEditViewPreviewModel, - EShortcutEditViewGrid, - EMainViewMsk, - EMainViewButtonIdGrid, - EMainViewButtonIdPreview, - EMainViewButtonIdDelete, - EShortcutsViewButtonIdEditText, - EShortcutsViewButtonIdEditModel, - EShortcutsViewButtonIdDelete - }; - -/** trui enumerate character range id */ -enum TTruiCharacterRange - { - ELatinLowerLetters = EMainViewSubmenuLatinLowerLetter, - ELatinUpperLetters, - ELatinDigital, - ELatinSymbol, - ELatinAccent, - ECyrillicLowerLetters, - ECyrillicUpperLetters, - ECyrillicAccent, - EGreekLowerLetters, - EGreekUpperLetters, - EHebrewLetters - }; -#endif // TRUI_HRH diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/trui.rh --- a/textinput/peninputhwrtrui/inc/trui.rh Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Resource headers for project ?myapp -* -*/ - -#ifndef TRUI_RH -#define TRUI_RH - -// --------------------------------------------------------------------------- -// Define MENU_ITEMS struct type to save all menu items -// --------------------------------------------------------------------------- -// -STRUCT MENU_ITEMS - { - // All menu items - STRUCT items[]; - } - -// --------------------------------------------------------------------------- -// Define LANGUAGE_SCRIPT_SET struct type to store supported language script. -// --------------------------------------------------------------------------- -// -STRUCT LANGUAGE_SCRIPT_SET - { - // All language script - STRUCT contents[]; - } - -// --------------------------------------------------------------------------- -// Define LANGUAGE_SCRIPT_SET struct type to store supported language script. -// --------------------------------------------------------------------------- -// -STRUCT LANGUAGE_SCRIPT - { - WORD id; - WORD codes[]; - } - -// --------------------------------------------------------------------------- -// Define LANGUAGE_SCRIPT_SET struct type for skin specified button. -// --------------------------------------------------------------------------- -// -STRUCT SKIN_BUTTON - { - WORD flags=0; - LTEXT helptxt=""; - LTEXT bmpfile=""; - WORD bmpid=0xffff; - WORD bmpmask=0xffff; - WORD press_bmpid=0xffff; - WORD press_bmpmask=0xffff; - LONG mainitemid=0; - LONG minoritemid=0; - LONG mainitempressid=0; - LONG minoritempressid=0; - } - -STRUCT TOOLBAR_BUTTON_GROUPS - { - STRUCT buttons[]; - } - -#endif // TRUI_RH diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truiapplication.h --- a/textinput/peninputhwrtrui/inc/truiapplication.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Application class of TrainingUI -* -*/ - - -#ifndef C_TRUIAPPLICATION_H -#define C_TRUIAPPLICATION_H - -// UID for the application, this should correspond to the uid defined in the mmp file -static const TUid KUidtruiApp = { 0x2000B104 }; - -#include - -/** - * Instance of CTruiApplication is the application part of the AVKON - * application framework for the TrainingUI application - * - * @code - * new CTruiApplication; - * @endcode - * - * @lib avkon.lib eikcore.lib eiksrv.lib - */ -class CTruiApplication : public CAknApplication - { -public: // from CAknApplication - - /** - * Returns the application DLL UID value - * - * @return the UID of this Application/Dll - */ - TUid AppDllUid() const; - -protected: // from CAknApplication - - /** - * Create a CApaDocument object and return a pointer to it - * - * @return a pointer to the created document - */ - CApaDocument* CreateDocumentL(); - - /** - * Opens the .ini file associated with the application. - * - * @param aFs File server session to use. Not used. - * @return Pointer to the dictionary store object representing the - * application's .ini file. - */ - CDictionaryStore* OpenIniFileLC( RFs& aFs ) const; - }; - -#endif // C_TRUIAPPLICATION_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truiappradiobutton.h --- a/textinput/peninputhwrtrui/inc/truiappradiobutton.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,301 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: radio button - control in Training UI application -* -*/ - - -#ifndef C_TRUIAPPRADIOBUTTON_H -#define C_TRUIAPPRADIOBUTTON_H - -// includes -#include - -// Class declaration -class MTruiRadioButtonObserver; - -/** - * CTruiRadioButton is a new component for selecting own/preset model - * in shortcut edit view. - * @lib avkon.lib - */ - -class CTruiRadioButton: public CCoeControl, public MCoeControlObserver - { -public: - /* Flags for radion button status. */ - enum TRadioButtonStatus - { - ENonSelected = 0, - ESelected - }; - - /* Flags for button type. */ - enum TSelectionType - { - ERadioButton = 0, - ECheckBox - }; - - /** - * Two-phased constructor. - * @param aParent the parent control for choice list - * @param aTextArray the items' text that will be displayed in radion button. - * @param aStatusArray the selected status for each radio button. - * @param aSelectionType The type of the selection type, radio or checkbox - * @return Pointer to CTruiRadioButton's instance - */ - static CTruiRadioButton* NewL( CCoeControl* aParent, - TSelectionType aSelectionType, - MTruiRadioButtonObserver* aObserver = NULL ); - - /** - * Two-phased constructor. - * @param aParent the parent control for choice list - * @param aTextArray the items' text that will be displayed in radion button. - * @param aStatusArray The selected status for each radio button. - * @param aSelectionType The type of the selection type, radio or checkbox - * @return Pointer to CTruiRadioButton's instance - */ - static CTruiRadioButton* NewLC( CCoeControl* aParent, - TSelectionType aSelectionType, - MTruiRadioButtonObserver* aObserver = NULL ); - /** - * Destructor - */ - ~CTruiRadioButton(); - - /** - * Convert texts into Label and update them in radio buttons - */ - void HandleItemAdditionL(); - - /** - * Add one item to radio button - * @param aText The text of the radio button. - * @param aStatus The current selected status of the radio button - */ - void AddItem( const HBufC* aText, TRadioButtonStatus aStatus ); - - /** - * Return the status array - */ - inline const RArray& StatusArray() const - { - return iStatusArray; - }; - - /** - * Handle pointer on radio button - * - * @param aIndex The index of the button group item. - * @param aEventType The event type. - */ - void HandlePointerRadioButtonL( TInt aIndex, TCoeEvent aEventType ); - - /** - * Handle pointer on checkbox - * - * @param aIndex The index of the button group item. - * @param aEventType The event type. - */ - void HandlePointerCheckBox( TInt aIndex, TCoeEvent aEventType ); - - inline void SetMultilineLayout( const TAknMultiLineTextLayout& aMultilineLayout ) - { - iMultilineLayout = aMultilineLayout; - }; - -// from CCoeControl - /** - * Return the control's minisize. - */ - TSize MinimumSize(); - -private: - - /** - * C++ Default Constructor - */ - CTruiRadioButton( MTruiRadioButtonObserver* aObserver, - TSelectionType aSelectionType ); - - /** - * 2nd phase constructor - * @param aParent the parent control for choice list - * @param aTextArray the items' text that will be displayed in radion button. - * @param aStatusArray the selected status for each radio button. - */ - void ConstructL( CCoeControl* aParent ); - - /** - * Create radio button's bitmap. - */ - void CreateBitmapForRadioButtonL(); - - /** - * Get cached color of skin for label control - * - * @param aColor The color of Label will be set - */ - TInt GetCachedLabelTextColor( TRgb& aColor ); - - /** - * Load layouts for icons from LAF. - * - * @param aVarity Varity for LAF - */ - void LoadIconsLayout( TInt aVarity ); - - /** - * Convert logical name to visual name for label when needed. - * - * @param aLabel The label is used to show text - * @param aLogicalTxt The logical text which is needed to be converted. - * @param aFont The font of label text - * @param aLineWidth The line width of each text of label - */ - void ConvertToVisualForEdwinL( CEikLabel* aLabel, const TDesC& aLogicalTxt, - const CFont& aFont, TInt aLineWidth ); - - /** - * Clip text of label to fit label width. - * - * @param aLabel The label is used to show text - * @param aIndex The index of text in text array - */ - void ClipToFitLabelL( CEikLabel* aLabel, TInt aIndex ); - -// from MCoeControlObserver - /** - * From MCoeControlObserver. Handles an event from an observed control. - * @param aControl The control that sent the event. - * @param aEventType The event type. - */ - void HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType ); - -// from CCoeControl - /** - * Responds to changes to the size and position of the contents of this control. - */ - void SizeChanged(); - - /** - * Draws control to given area - * @param aRect The rectangle that should be drawn by the control. - */ - void Draw( const TRect& aRect ) const; - - /** - * Gets the number of controls contained in a compound control. - * @return The number of component controls contained by this control. - */ - TInt CountComponentControls() const; - - /** - * Gets an indexed component of a compound control. - * @param aIndex The index of the control. - * @return The component control with an index of aIndex. - */ - CCoeControl* ComponentControl( TInt aIndex ) const; - - /** - * Gets an indexed component of a compound control. - * @param aIndex The index of the control. - * @return The component control with an index of aIndex. - */ - void HandlePointerEventL( const TPointerEvent& aPointerEvent ); - - /** - * From CoeControl. - * Handles a change to the control's resources. - * - * @param aType A message UID value. - */ - void HandleResourceChange( TInt aType ); - -private: // data - - /** - * The control array store all sub-controls - * Own - */ - CArrayPtrFlat* iControlArray; - - /** - * The array to store the current status for each radio button - * Own - */ - RArray iStatusArray; - - /** - * The text array to store the text for each radio button - * Own - */ - RPointerArray iTextArray; - - /** - * The bitmap for selected radio button. - * Own - */ - CFbsBitmap* iRadioButtonSelectedBmp; - - /** - * The bitmap mask for selected radio button. - * Own - */ - CFbsBitmap* iRadioButtonSelectedBmpm; - - /** - * The bitmap for non-selected radio button. - * Own - */ - CFbsBitmap* iRadioButtonNonSelectedBmp; - - /** - * The bitmap mask for non-selected radio button. - * Own - */ - CFbsBitmap* iRadioButtonNonSelectedBmpm; - - /** - * The observer used to notify the current selected item changed - * Not own - */ - MTruiRadioButtonObserver* iObserver; - - /** - * The observer used to notify the current selected item changed - * Not own - */ - TSelectionType iSelectionType; - - /** - * Array to store TAknLayoutRect for icons - * - * Own - */ - RArray iIconLayout; - - TBool iTactileSupported; - - /** - * MultilineLayout for edwin - * - */ - TAknMultiLineTextLayout iMultilineLayout; - }; - -#endif // C_TRUIAPPRADIOBUTTON_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truiappui.h --- a/textinput/peninputhwrtrui/inc/truiappui.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,173 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: UI class of TrainingUI -* -*/ - - -#ifndef C_TRUIAPPUI_H -#define C_TRUIAPPUI_H - -#include -#include - -// Forward reference -class CTruiMainView; -class CTruiShortcutsView; -class CTruiShortcutEditView; -class CAknNavigationDecorator; -class CTruiEngine; -class CTruiShortcutEditTextView; -class CTruiInfoMessageView; - -/** - * Instance of CTruidemoAppUi is the User Interface part of the AVKON - * application framework for the TrainingUI application - * - * @code - * CEikAppUi* appUi = new (ELeave) CTruiAppUi; - * @endcode - * - * @lib avkon.lib eikcore.lib eiksrv.lib - */ -class CTruiAppUi : public CAknViewAppUi, public MAknTabObserver - { -public: - /** - * Perform the second phase construction of a CTruiAppUi object - */ - void ConstructL(); - - /** - * Perform the first phase of two phase construction. - */ - CTruiAppUi(); - - /** - * Destroy the object and release all memory objects - */ - ~CTruiAppUi(); - - /** - * Get hand writing engine - * - * @return Pointer to CTruiEngine's instance - */ - CTruiEngine* HwrEngine() const; - - /** - * Get hand Navigation Decorator - * - * @return The pointer to navigation pane. - */ - CAknNavigationDecorator* GetNaviDecorator() const; - - /** - * Close the navi pane - */ - void CloseNaviPaneL(); - - /** - * Show the navi pane - */ - void ShowNaviPaneL(); - - /** - * Show the title pane - * - * @param aTitle: The text to be displayed in Tilte pane - */ - void ShowTitlePaneL( const TDesC& aTitle ); - -// from CAknViewAppUi - - /** - * Handle user menu selections - * - * @param aCommand the enumerated code for the option selected - */ - void HandleCommandL( TInt aCommand ); - - // from MAknTabObserver - /** - * Handle active tab changed - * - * @param aIndex the index of active tab. - */ - void TabChangedL( TInt aIndex ); - -private: - - /** - * Create navigation pane. - * - * @param aResourceId The resource Id. - * @return The pointer to navigation pane. - * - */ - CAknNavigationDecorator* CreateNavigationTabL( const TInt aResourceId, - const TInt aDefaultActive ); - -private: // data - /** - * iMainView is the view that allows user to train HWR engine to - * recognize user's own writing style - * Own - */ - CTruiMainView* iMainView; - - /** - * iShortcutsView is the view that allows user to manage the shortcuts - * Own - */ - CTruiShortcutsView* iShortcutsView; - - /** - * iShortcutEditView is the view that allows user to edit the shortcuts - * Own - */ - CTruiShortcutEditView* iShortcutEditView; - - /** - * Pointer to shortcut edit text view - * on which users can alter shortcut's text. - * Own - */ - CTruiShortcutEditTextView* iShortcutEditTextView; - - /** - * Pointer to info message view for shortcut wizard. - * Own - */ - CTruiInfoMessageView* iInfoMessageView; - - /** - * iNaviDecorator is navigation pane. - * Allow users to switch views between main view and shortcut main view. - * Own - */ - CAknNavigationDecorator* iNaviDecorator; - - CAknNavigationDecorator* iEmptyNaviDecorator; - - /** - * hand writing engine - * Own - */ - CTruiEngine* iEngine; - }; - - -#endif // C_TRUIAPPUI_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truicontainerbase.h --- a/textinput/peninputhwrtrui/inc/truicontainerbase.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,232 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiContainerBase class of TrainingUI -* -*/ - - -#ifndef C_TRUICONTAINERBASE_H -#define C_TRUICONTAINERBASE_H - - -#include -#include - -class CTruiAppUi; -class CTruiEngine; -class MCoeControlObserver; -class CAknButton; -class CAknToolbar; -class TAknLayoutText; -class CAknView; - -// Varity of landscape -const TInt KLandscapeVarity = 1; - -// Varity of portrait -const TInt KPortraitVarity = 0; - -const TInt KLabelMaxLines = 20; - -/* Key lead to the setting of always displaying wizard view*/ -const TUint32 KAlwaysDisplayWizardKey = 0x00000001; - -_LIT( KLineBreak, "\n" ); - -const TUid KAknfepUID = { 0x100056de }; - -const TInt KExtraSize = 10; - -/** - * Base class for contrainers - * All contrainer need to be inherited from this class - * - */ -class CTruiContainerBase : public CCoeControl - { -public: - - /** - * Destructor. - */ - virtual ~CTruiContainerBase(); - - /** - * Get the origin size in which input the model for preset symbols. - * - * @return The size in which to input preset symbols. - */ - static TSize OriginSymbolSize(); - inline void SetView( CAknView* aView ) - { - iView = aView; - }; -protected: - CTruiContainerBase(); - - /** - * Wrap the text to fit the minisize of Label - * - * @param aLabel The pointer to the label. - * @param aText The origin text - * @param aMaxLines The max line of the wrapped text. - * @param aWrappedText Store the wrapped text. - * @return The number of lines. - */ - TInt WrapLabelText( const CEikLabel* aLabel, const TDesC& aText, - TInt aMaxLines, HBufC* aWrappedText ); - - /** - * Wrap the text to fit the minisize of Label - * - * @param aLayoutText Layout of text. - * @param aText The origin text - * @param aMaxLines The max line of the wrapped text. - * @param aWrappedText Store the wrapped text. - * @return The number of lines. - */ - TInt WrapLabelText( const TAknLayoutText& aLayoutText, const TDesC& aText, - TInt aMaxLines, HBufC* aWrappedText ); - - /** - * Wrap the text to fit Label - * - * @param aFont Font of text. - * @param aText The origin text need to be wrapped - * @param aLineWidthArray Line width array. - * @param aWrappedText Store the wrapped text. - */ - void WrapLabelTextL( const CFont* aFont, const TDesC& aText, - const RArray& aLineWidthArray, - HBufC* aWrappedText ); - - - /** - * Create skin specified button from resource - * - * @param aResourceId The resource Id. - * @param aParent The parent of control - * @param aObserver The observer of control - * @return Instance of aknbutton. - */ - CAknButton* CreateButtonL( TInt aResourceId, - const CCoeControl* aParent, - MCoeControlObserver* aObserver ); - - /** - * Add skin specified buttons into toolbar - * - * @param aToolbar The toolbar will contain skin-specified buttons. - * @param aResourceId Button groups resource id. - */ - void AddButtonsToToolbarL( CAknToolbar* aToolbar, TInt aResourceId ); - - /** - * Return current keyboard mode. - * - * @return 0: ITU-T; 1: QWERTY. - */ - TInt CurrentKeyBoardModeL(); - - /** - * Read setting from ini file to decide if display wizard view. - * - * @param aKey Key value in ini file. - * @param aValue Value of the key. - */ - void GetSettingFromIniFileL( TUint32 aKey, TInt& aValue ); - - /** - * Save settings into file - * - * @param aKey Key value to specify one setting - * @param aValue Value to be stored - */ - void SaveSettingIntoIniFileL( TUint32 aKey, TInt aValue ); - - /** - * Get cached color of skin for label control - * - * @param aColor The color of Label will be set - */ - TInt GetCachedLabelTextColor( TRgb& aColor ); - - /** - * Get cached color of skin for icon - * - * @param aColorId The color id of icon color group - * @param aColorIndex The color index in the color group - * @param aColor On return, the catched color. - */ - TInt GetCachedIcontColor( TRgb& aColor, const TAknsItemID& aColorId, TInt aColorIndex ); - - /** - * Construct icons from resource. - * - * @param aResourceId Resource Id. - * @return The constructed icon - */ - CGulIcon* ConstructIconFromResourceL( TInt aResourceId ); - - /** - * From CoeControl. - * Handles a change to the control's resources. - * - * @param aType A message UID value. - */ - void HandleResourceChange( TInt aType ); - -private: - /** - * Create skin specified button from resource - * - * @param aReader The resource reader. - * @return Instance of aknbutton. - */ - CAknButton* ConstructButtonFromResourceL( TResourceReader& aReader ); - - /** - * Wrap the text to fit the minisize of Label - * - * @param aFont Font of text. - * @param aWidth Width of text. - * @param aText The origin text - * @param aMaxLines The max line of the wrapped text. - * @param aWrappedText Store the wrapped text. - * @return The number of lines. - */ - TInt DoWrapLabelText( const CFont* aFont, TInt aWidth, - const TDesC& aText, - TInt aMaxLines, - HBufC* aWrappedText ); - - -protected: // data - - /** - * Point to the controlor class of the application. - * Not Own. - */ - CTruiAppUi* iAppUi; - - /** - * hand writing engine - * Not Own. - */ - CTruiEngine* iEngine; - CAknView* iView; - }; - -#endif // C_TRUICONTAINERBASE_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truidocument.h --- a/textinput/peninputhwrtrui/inc/truidocument.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Declares document for TrainingUI -* -*/ - - -#ifndef C_TRUIDOCUMENT_H -#define C_TRUIDOCUMENT_H - -#include - -// Forward references -class CTruiAppUi; -class CAknApplication; - -/** - * Instance of class CTruiDocument is the Document part of the AVKON - * application framework for the TrainingUI application - * - * @code - * CApaDocument* document = new (ELeave) CTruiDocument(*this); - * @endcode - * - * @lib avkon.lib eikcore.lib eiksrv.lib - */ -class CTruiDocument : public CAknDocument - { -public: - /** - * Perform the first phase of two phase construction - * - * @param aApp application creating this document - */ - CTruiDocument( CAknApplication& aApp ); - - /** - * Destroy the object and release all memory objects - */ - ~CTruiDocument(); - - - /** - * Create a CTruiAppUi object and return a pointer to it - * - * @return a pointer to the created instance of the AppUi created - */ - CEikAppUi* CreateAppUiL(); - - }; - -#endif // C_TRUIDOCUMENT_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truiengine.h --- a/textinput/peninputhwrtrui/inc/truiengine.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,484 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiEngine class of TrainingUI -* -*/ - - -#ifndef C_TRUIENGINE_H -#define C_TRUIENGINE_H - -#include -#include - -const TInt KShortcutMaxLength = 164; -class CPtiEngine; -class MTruiEngine; -class TLanguageRelation; -class CEikonEnv; - -/** - * CTruiEngine view class. - * - */ -class CTruiEngine : public CBase - { -public: - /** - * Two phase construction. - * - * @return Pointer to CTruiEngine's instance - */ - static CTruiEngine* NewL( CEikonEnv* aEikonEnv ); - - /** - * Two phase construction. - * - * @return Pointer to CTruiEngine's instance - */ - static CTruiEngine* NewLC( CEikonEnv* aEikonEnv ); - - /** - * Destroy the object and release all memory objects - */ - virtual ~CTruiEngine(); - - /** - * Get the current input language - * - * @return Current input language - */ - inline TLanguage InputLanguage() const; - -//Language Script - /** - * Set current language script - * - * @param aIndex The index of language script in the array named iSupportedScript - */ - void SetLanguageScriptByIndexL( TInt aIndex ); - - /** - * Get name list of all supported language scripts - * - * @return CDesCArray* The name list - */ - inline const CDesCArray* LanguageScriptName(); - - /** - * Get id of supported language script - * - * @return RArray list of the script id - */ - inline const RArray& SupportedLanguageScript(); - - /** - * Get enum ID of the current language script - * - * @return ID of the current language - */ - inline TInt CurrentLanguageScript() const; - -//Character Range - /** - * Set current character range - * - * @param aIndex The index of character range in the array named iSupportedRange - */ - void SetCharacterRangeByIndexL( TInt aIndex ); - - /** - * Get name list of all supported character range - * - * @return CDesCArray* The name list - */ - CDesCArray* GetCharacterRangeName(); - - /** - * Get enum ID of the current character range - * - * @return TInt ID of the character range - */ - TInt GetCurrentCharacterRange(); - - /** - * Get enum ID of the supported character ranges - * - * @return Reference to the array saving IDs of the supported range - */ - inline const RArray& GetCurrentSupportedRangesId(); - - /** - * Transform character range to engine's subrange - */ - void SetSubrange(); - -//Character Set - - /** - * Get current character set - * - * @return HBufC* The string contained character set - */ - const HBufC* CharacterSet(); - - /** - * Check if character has model - * - * @param aLanguageScript Where the character is come from - * @param aChar The character which is checked - * @return TBool True means this character has model - * False means this character doesn't has model yet - */ - TBool CheckCharacterModel( const TDesC& aChar ); - - /** - * Get character model - * - * @param aChar Get this character's model - * @param aModel Array of points where the character's model is stored. - */ - void GetCharacterModelL( const TDesC& aChar, RArray& aModel ); - - /** - * Set character model - * - * @param aChar Set model to this character - * @param aModel Array of points where the character's model is stored. - * @param aSimilarMsg Text exists in the HWREngine with the similar model. - * @return none, if the symbol model is invalid, leave with KErrAlreadyExists - */ - void SetCharacterModelL( const TDesC& aChar, - RArray& aModel, - TDes& aSimilarMsg ); - - /** - * Delete character model - * - * @param aChar Delete this character's model - * @return TInt Error value. If no error occurred, KErrNone is returned - */ - TInt DeleteCharacterModel( const TDesC& aChar ); - -//Shortcut - - /** - * Check if shortcut has model - * - * @param aText The shortcut which is checked - * @return TBool True means this shortcut has model - * False means this shortcut doesn't has model yet - */ - TBool CheckShortcutModel( const TDesC& aText ); - - /** - * Change the text of an existing shortcut - * - * @param aOldText The text of an existing shortcut - * @param aNewText The new text of the shortcut - */ - void ChangeShortcutTextL( const TDesC& aNewText ); - - /** - * Set current editing shortcut - * - * @param sShortcut text of the shortcut - * @return TInt Error value. If no error occurred, KErrNone is returned - */ - TInt SetShortcut( const TDesC& aText ); - - /** - * Get current edited shortcut - * - * @return TDes shortcut text - */ - inline TDes& Shortcut(); - - /** - * Get all shortcuts from HWR engine - * - * @return Pointer to iShortcutList to contain all existing shortcut - */ - inline CDesCArray* ShortcutTextList(); - - /** - * Save shortcut text and its assigned character model into PTI Engine - * - * @param aText Save this Shortcut's model - * @param aModel Array of points where the Shortcut's model is stored. - * @param aSimilarMsg Text exists in the HWREngine with the similar model. - * @return none, if the symbol model is invalid, leave with KErrAlreadyExists - */ - void SaveShortcutL( const TDesC& aText, - RArray& aModel, - TDes& aSimilarMsg ); - - /** - * Delete Shortcut model - * - * @param aText Delete this Shortcut's model - * @return TInt Error value. If no error occurred, KErrNone is returned - */ - TInt DeleteShortcut( const TDesC& aText ); - - /** - * Update Shortcut list - * - */ - void UpdateShortcutListL(); - - /** - * Set edit state - * - * @param aNew: ETrue, perform the function of adding new shortcut. - * EFalse, perform the function of editting old shortcut. - */ - inline void NewShortcut( TBool aNew ); - - /** - * Get edit state - * - */ - inline TBool NewShortcut(); - - /** - * Set if display shortcut wizard view. - * - * @param aIsDisplay ETrue: Display shortcut wizard view - */ - inline void SetDisplayWizard( TBool aIsDisplay ); - - /** - * Get if display shortcut wizard view - * - * @return ETrue: Display shortcut wizard view - */ - inline TBool DisplayWizard() const; - - /** - * Set the current selected index - * - * @param aSelectedIndex currently selected index of shortcuts - */ - inline void SetCurrentSelectedIndex( TInt aSelectedIndex ); - - /** - * Get the current selected index - * - * @return aSelectedIndex currently selected index of shortcuts - */ - inline TInt CurrentSelectedIndex(); - - /** - * Get guiding line pos - * - * @param aSize The size of WritingBox - * @param aTop The vertical coordinate of top guiding line - * @param aBottom The vertical coordinate of bottom guiding line - * @return TInt Error value. If no error occurred, KErrNone is returned - */ - TInt GetGuidingLinePos( const TSize& aSize, TInt& aTop , TInt& aBottom); - - /** - * Get the number of the maximum of shortcuts - * - * @return TInt The number of the maximum of shortcuts - */ - TInt MaxShortCutLength(); - - /** - * Get trails assigned to the specified shortcut. - * - * @param aText The specified shortcut text - * @param aModel Trails of the shortcut. - * @param aUnicode The assigned preset text if it is a preset shortcut, - * otherwise, it is 0; - */ - void GetShortcutModelL( const TDesC& aText, RArray& aModel, TUint& aUnicode ); - - /** - * Save preset shortcuts. - * - * @param aUnicode The assigned preset text. - * @param aShortcut The shortcut to be save. - */ - void SavePresetShortcutL( TUint aUnicode, const TDesC& aShortcut ); - - /** - * Get trails assigned to a preset text. - * - * @param aUnicode The unicode of the preset text. - * @param aModel Store trails of the preset text. - * @param aShortcut Indicate whether the preset text has been assigned to a shortcut text. - * If KNullDesC, it is not in use. - */ - void GetPresetSymbolByUnicodeL( TUint aUnicode, RArray& aModel, TDes& aShortcut ); - - /** - * Return all unicodes of preset text stored in PTI engine - * - * @param aPresets All preset text's unicodes are stored in this array. - */ - void GetAllPresetSymbolsL( RArray& aPresets ); - -private: - - /** - * Perform the first phase of two phase construction. - */ - CTruiEngine( CEikonEnv* aEikonEnv ); - - /** - * Perform the second phase construction of a CTruidemoAppUi object - */ - void ConstructL(); - - /** - * Initialize the table used to map language to language script - * @param aResourceId ResourceId of Language script set. - * @param aLanguageRelation Store the mappint relation. - */ - void InitLanguageRelationL( TInt aResourceId, - RArray& aLanguageRelation ); - - /** - * Initialize the supported language script. - * @param aSupportedScript Store the suppotred script. - * @param aEngine PtiEngine from which get supported input language. - * @param aLanguageRelation Mapping relation used to convert language - * into language script. - */ - void InitSupportedLanguageScriptL( RArray& aSupportedScript, - CPtiEngine* aEngine, - const RArray& aLanguageRelation ); - - /** - * Get the active language script from the active input language - * @param aLanguageCode Currently active input language code. - * @param aLanguageRelation Mapping relation used to convert language - * into language script. - */ - TInt GetActiveLanguageScript( TInt aLanguageCode, - const RArray& aLanguageRelation ); - - /** - * Get the resourc id of lower case of Cyrillic according to the current input language - * @param aLanguage Currently input language. - * @return resource id - */ - TInt CyrillicLowerResourceId( TLanguage aLanguage ); - - /** - * Get the resourc id of upper case of Cyrillic according to the current input language - * @param aLanguage Currently input language. - * @return resource id - */ - TInt CyrillicUpperResourceId( TLanguage aLanguage ); - -private: - - /** - * Current edited shortcut - */ - TBuf iShortcut; - - /** - * Array of all supported language script - * Own - */ - RArray iSupportedScript; - - /** - * Current language script - */ - TInt iCurrentScript; - - /** - * Array of all supported character range - * Own - */ - RArray iSupportedRange; - - /** - * Array of the name of all supported character range - * Own - */ - CDesCArray* iRangeName; - - /** - * Current character range - */ - TInt iCurrentRange; - - /** - * String of character set - * Own - */ - HBufC* iCharacterSet; - - /** - * Array of the shortcut - * Own - */ - CDesCArray* iShortcutList; - - /** - * Indicate if current edited shortcut is new created - */ - TBool iNewShortcut; - - /** - * The currently selected index of shortcuts - */ - TInt iSelectedShortcut; - - /** - * PtiEngine - * Own - */ - CPtiEngine* iEngine; - - /** - * Interface trui used in PtiEngine - * Not own - */ - MTruiEngine* iPtiEngine; - - /** - * Current subrange - */ - TInt iSubrange; - - /** - * Pointer to eikon enviroment. - * Not own - */ - CEikonEnv* iEnv; - - /** - * Check if need to display shortcut wizard view - */ - TBool iIsDisplay; - - /** - * Current input language - */ - TLanguage iInputLanguage; - }; - -#include "truiengine.inl" - -#endif // C_TRUIENGINE_H - - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truiengine.inl --- a/textinput/peninputhwrtrui/inc/truiengine.inl Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: implementation of inline function of CTruiEngine -* -*/ - - -// --------------------------------------------------------------------------- -// Get enum ID of the current language script -// --------------------------------------------------------------------------- -// -inline TInt CTruiEngine::CurrentLanguageScript() const - { - return iCurrentScript; - } - -// --------------------------------------------------------------------------- -// Get name list of all supported character range -// --------------------------------------------------------------------------- -// -inline CDesCArray* CTruiEngine::GetCharacterRangeName() - { - return iRangeName; - } - -// --------------------------------------------------------------------------- -// Get enum ID of the current character range -// --------------------------------------------------------------------------- -// -inline TInt CTruiEngine::GetCurrentCharacterRange() - { - return iCurrentRange; - } - -// --------------------------------------------------------------------------- -// Get enum ID of the supported character ranges -// --------------------------------------------------------------------------- -// -inline const RArray& CTruiEngine::GetCurrentSupportedRangesId() - { - return iSupportedRange; - } - -// --------------------------------------------------------------------------- -// Get current character set -// --------------------------------------------------------------------------- -// -inline const HBufC* CTruiEngine::CharacterSet() - { - return iCharacterSet; - } - -// --------------------------------------------------------------------------- -// Get current edited shortcut -// --------------------------------------------------------------------------- -// -inline TDes& CTruiEngine::Shortcut() - { - return iShortcut; - } - -inline const RArray& CTruiEngine::SupportedLanguageScript() - { - return iSupportedScript; - } - -// --------------------------------------------------------------------------- -// Set edit state -// --------------------------------------------------------------------------- -// -inline void CTruiEngine::NewShortcut( TBool aNew ) - { - iNewShortcut = aNew; - } - -// --------------------------------------------------------------------------- -// Get edit state -// --------------------------------------------------------------------------- -// -inline TBool CTruiEngine::NewShortcut() - { - return iNewShortcut; - } - -// --------------------------------------------------------------------------- -// Set if display shortcut wizard view. -// --------------------------------------------------------------------------- -// -inline void CTruiEngine::SetDisplayWizard( TBool aIsDisplay ) - { - iIsDisplay = aIsDisplay; - } - -// --------------------------------------------------------------------------- -// Get if display shortcut wizard view -// --------------------------------------------------------------------------- -// -inline TBool CTruiEngine::DisplayWizard() const - { - return iIsDisplay; - } - -// --------------------------------------------------------------------------- -// Set the current selected index -// --------------------------------------------------------------------------- -// -inline void CTruiEngine::SetCurrentSelectedIndex( TInt aSelectedIndex ) - { - iSelectedShortcut = aSelectedIndex; - } - -// --------------------------------------------------------------------------- -// Get the current selected index -// --------------------------------------------------------------------------- -// -inline TInt CTruiEngine::CurrentSelectedIndex() - { - return iSelectedShortcut; - } - -// --------------------------------------------------------------------------- -// Get shortcut list -// --------------------------------------------------------------------------- -// -inline CDesCArray* CTruiEngine::ShortcutTextList() - { - return iShortcutList; - } - -// --------------------------------------------------------------------------- -// Get the current input language -// --------------------------------------------------------------------------- -// -inline TLanguage CTruiEngine::InputLanguage() const - { - return iInputLanguage; - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truihelp.h --- a/textinput/peninputhwrtrui/inc/truihelp.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Define help topic -* -*/ - - -#ifndef TRUIHELP_H -#define TRUIHELP_H - -// Main view topic in help application -_LIT( HWRT_HLP_MAIN_VIEW,"HWRT_HLP_MAIN_VIEW" ); - -// Shortcuts view topic in help application -_LIT( HWRT_HLP_SHORTCUTS,"HWRT_HLP_SHORTCUTS_MAIN_VIEW" ); - -// Shortcut edit view topic in help application -_LIT( HWRT_HLP_SHORTCUTS_EDIT_VIEW,"SHORTCUTS_EDIT_VIEW" ); - -#endif - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truihwrbox.h --- a/textinput/peninputhwrtrui/inc/truihwrbox.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,593 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: hand writing box - control in Training UI application -* -*/ - - -#ifndef C_TRAININGUIHWRBOX_H -#define C_TRAININGUIHWRBOX_H - -// includes -#include -#include // Tooltip - -// forward declarations -class MTruiHwrBoxObserver; -class CAknInfoPopupNoteController; -class CAknsBasicBackgroundControlContext; - -const TPoint KTail( 0xFFFF,0 ); - -// Class declaration -/** - * CTruiHwrBox - * CTruiHwrBox is new component, which allows input and output a character - * model by strokes - * @lib avkon.lib - */ -class CTruiHwrBox : public CCoeControl, public MAknInfoPopupNoteObserver - { -public: - - /* Flags for hwrbox state. HwrBox must be one and only one state */ - enum TBoxState - { - /* Already has model but doesn't play the animation */ - EExistModelStop = 0, - /* Already has model and play the animation */ - EExistModelDraw, - /* Ready to input an new character model */ - ENewModelStop, - /* Use is inputting an new character model */ - ENewModelDraw, - }; - - enum THwrBoxFlag - { - ENoFrameHwrBox = 0x00000000, - EFrameHwrBox = 0x00000001, - EReadOnlyHwrBox = 0x00000002, - EWritableHwrBox = 0x00000004 - }; - -public: - - /** - * Two-phased constructor. - * @param aParent the parent control for choice list - * @param aRect the extent of the control - * @return Pointer to CTruiHwrBox's instance - */ - static CTruiHwrBox* NewL( CCoeControl* aParent, - MTruiHwrBoxObserver* aHwrBoxObserver = NULL, - MAknsControlContext* aBgContext = NULL ); - - /** - * Two-phased constructor. - * @param aParent the parent control for choice list - * @param aRect the extent of the control - * @return Pointer to CTruiHwrBox's instance - */ - static CTruiHwrBox* NewLC( CCoeControl* aParent, - MTruiHwrBoxObserver* aHwrBoxObserver = NULL, - MAknsControlContext* aBgContext = NULL ); - - /** - * Destructor - */ - ~CTruiHwrBox(); - - /** - * Periodic Callback function - * To save the model - * - * @param aObject: Transfer the pointer to CTruiHwrBox into this function - * @return system-wide err code - */ - static TInt TimeToSaveL( TAny* aObject ); - - /** - * Save the new inputting model - */ - void SaveModelL(); - - /** - * Save the new inputting model by manual. - */ - void SaveModelByManuallyL(); - - /** - * Periodic Callback function - * To draw the next piont in the animation - * - * @param aObject: Transfer the pointer to CTruiHwrBox into this function - * @return system-wide err code - */ - static TInt TimeToDrawNextL( TAny* aObject ); - - /** - * Draw the next piont in the animation - */ - void DrawNextL(); - - /** - * Begin to draw the existing model - * - * @param aIsScale ETrue scale points to the fitable size before playing. - * @param aRefSize The size as the reference coordination for scaling. - */ - void PlayAnimation( TBool aIsScale = EFalse, const TSize& aRefSize = TSize( 1, 1 ) ); - - /** - * clear the existing model - */ - void ClearExistModel(); - - /** - * Set HwrBox observer - * @param aHwrBoxObserver the observer - */ - void SetHwrBoxObserver( MTruiHwrBoxObserver* aHwrBoxObserver ); - - /** - * Get the Hwrbox's model - * - * @return Reference to iPointArrayModel - */ - RArray& Model(); - - /** - * Get the Hwrbox's state - * - * @return Current HWR box's state - */ - TInt BoxState() const; - - /** - * Pause the playing of animation - */ - void PausePlaying(); - - /** - * Resume the playing of animation - */ - void ResumePlaying(); - - /** - * Set guiding line - * - * @param aTop The vertical coordinate of top guiding line - * @param aBottom The vertical coordinate of bottom guiding line - * @return system-wide err code - */ - TInt SetGuidingLine( TInt aTop, TInt aBottom ); - - /** - * Show trails statically - * - * @param aPointArray The points that will be shown in HwrBox - */ - void ShowTrails( const RArray& aPointArray, - TBool aIsScale = EFalse, - const TSize& aRefSize = TSize( 1, 1 ) ); - - /** - * Show tooltip - * - * @param aText The tooltip tex. - * @param aPosition The tooltip's location. - * @param aBeforeTimeout The time internal that will popup tooltip - * @param aInViewTimeout The time internal that will hide tooltip - */ - void ShowTooltipL( const TDesC& aText, - const TPoint& aPosition, - const TInt aBeforeTimeout, - const TInt aInViewTimeout ); - - /** - * Set the position for tooltip - * - * @param aPosition The tooltip's location. - */ - void SetTooltipPosition( const TPoint& aPosition ); - - /** - * Hide tooltip - * - */ - void HideInfoPopupNote(); -// From CCoeControl - - /** - * From CCoeControl. Handles key events. - * @param aKeyEvent the key event - * @param aType The type of key event - * @return Indicates whether or not the keyevent was used by this control - */ - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); - - /** - * From CCoeControl. Draws control to given area - * @param aRect The rectangle that should be drawn by the control. - */ - void Draw( const TRect& aRect ) const; - - /** - * Draw character model - */ - void DrawModel(); - - /** - * Set box state from outside - * - * @param aReady ture means model is loaded - * false means no model is loaded - */ - void ModelIsReady( TBool aReady = ETrue ); - - TRect DrawableRect() const; - - inline void SetHwrBoxFlag( TUint aFlag ) - { - iFlag = aFlag; - }; - - /** - * Set flag to indicate if draw bottom guideline - * - * @param aBottomGuideLineDisplay ETrue means draw bottom guideline - */ - inline void SetDisplayBottomGuideLine( TBool aBottomGuideLineDisplay ) - { - iBottomGuideLineDisplay = aBottomGuideLineDisplay; - }; - - /** - * Set flag to indicate if draw top guideline - * - * @param aTopGuideLineDisplay ETrue means draw bottom guideline - */ - inline void SetDisplayTopGuideLine( TBool aTopGuideLineDisplay ) - { - iTopGuideLineDisplay = aTopGuideLineDisplay; - }; - - /** - * Set editing mode to readonly or writable - * - * @param aReadOnly ETrue means hwrbox is readonly - * EFalse means hwrbox is loaded - */ - void SetHwrBoxReadOnly( TBool aReadOnly ); - -// from CCoeControl - - /** - * From CCoeControl. Handles pointer events - * @param aPointerEvent the pointer event be be handled. - */ - void HandlePointerEventL( const TPointerEvent& aPointerEvent ); - -protected: - - - /** - * From CoeControl. - * Responds to changes to the size and position of the contents of this control. - */ - void SizeChanged(); - - /** - * Handles a change to the control's resources. - * - * @param aType A message UID value. - */ - void HandleResourceChange( TInt aType ); - - /** - * Handle focus changed - * - */ - void FocusChanged( TDrawNow aDrawNow ); - -private: - - /** - * C++ Default Constructor - */ - CTruiHwrBox(); - - /** - * 2nd phase constructor - * @param aParent the parent control for choice list - * @param aRect the extent of the control - */ - void ConstructL( CCoeControl* aParent, - MTruiHwrBoxObserver* aHwrBoxObserver = NULL, - MAknsControlContext* aBgContext = NULL ); - - /** - * Check if the point is contained in drawing area - * - * @param aPoint The point which to be checked - * @return ETrue: The point is in drawing area - * EFalse: The point isn't in drawing area - */ - TBool IsContained( const TPoint& aPoint ) const; - - /** - * Adjust shortcut model's point to fit the popup hwr box. - * @param aOriginSize Origin size of which input character model. - * @param aRealSize Real popup hwr box's size. - * @param aModel The model to be adjuested. - */ - void ScaleModel( const TSize& aOriginSize, - const TSize& aRealSize, - RArray& aModel ); - - /** - * Draws all points. - */ - void DrawTrails( CWindowGc& aGc ) const; - - /** - * Set context for this control. - * - * @param aGc Handle for CWindowGc - */ - void PrepareContext( CWindowGc& aGc ) const; - - /** - * Load bitmaps for border. - * - */ - void LoadBorderBitmapsL(); - - /** - * Load bitmaps for shadows. - * - */ - void LoadShadowBitmapsL(); - - /** - * Load bitmaps for guidelines. - * - */ - void LoadGuideLineBitmapsL(); - - /** - * Load layouts for borders from LAF. - * - * @param aVarity Varity for LAF - */ - void LoadBorderLayout( TInt aVarity ); - - /** - * Load layouts for shadows from LAF. - * - * @param aVarity Varity for LAF - */ - void LoadShadowLayout( TInt aVarity ); - - /** - * Load layouts for guidelines from LAF. - * - * @param aVarity Varity for LAF - */ - void LoadGuideLineLayout( TInt aVarity ); - - /** - * Draw borders. - * - */ - void DrawBorders( CWindowGc& aGc ) const; - - /** - * Draw shadows. - * - */ - void DrawShadows( CWindowGc& aGc ) const; - - /** - * Draw guideliens. - * - */ - void DrawGuideLines( CWindowGc& aGc ) const; - -// From MAknInfoPopupNoteObserver - /** - * Handles events reported from info popup note. - * @param aController The controller that controls the note, from - * where the event originates. - * @param aEvent The event. - */ - void HandleInfoPopupNoteEvent( CAknInfoPopupNoteController* aController, - TAknInfoPopupNoteEvent aEvent ); - -private: // data - - /** - * When this timer time out, the inputting of new character is over. - * Own. - */ - CPeriodic* iTimeToSave; - - /** - * To control drawing speed - * Own. - */ - CPeriodic* iTimeToDrawNext; - - /** - * Contain the points need to be drawn on screen - * Own - */ - RArray iPointArrayDraw; - - /** - * Contain the character model points - * Own - */ - RArray iPointArrayModel; - - /** - * Current control state - */ - TBoxState iBoxState; - - /** - * Observe user's input - * Not own - */ - MTruiHwrBoxObserver* iHwrBoxObserver; - - /** - * Use this attribute to count the last animated point - * zero implies the first point - */ - TInt iLastAnimatedPoint; - - /** - * Guideline top left point - */ - TPoint iGuideLineTopL; - - /** - * Guideline top right point - */ - TPoint iGuideLineTopR; - - /** - * Guideline bottom left point - */ - TPoint iGuideLineBottomL; - - /** - * Guideline bottom right point - */ - TPoint iGuideLineBottomR; - - /** - * Indicate pen position - */ - TBool iPenInRect; - - /** - * Flag of training box. - */ - TUint iFlag; - - /** - * Component used to show tooltip - * Own. - */ - CAknInfoPopupNoteController* iTooltip; - - /** - * Check if draw bottom guideline. - */ - TBool iBottomGuideLineDisplay; - - /** - * Check if draw bottom guideline. - */ - TBool iTopGuideLineDisplay; - - /** - * Pointer array to store pointers to bitmaps of borders - * - * Own - */ - RPointerArray iBorderBitmaps; - - /** - * Pointer array to store pointers to mask bitmaps of borders - * - * Own - */ - RPointerArray iBorderBitmapMasks; - - /** - * Array to store pointers to TAknLayoutRect for borders - * - * Own - */ - RArray iBorderLayout; - - - /** - * Pointer array to store pointers to bitmaps of shadows - * - * Own - */ - RPointerArray iShadowBitmaps; - - /** - * Pointer array to store pointers to mask bitmaps of shadows - * - * Own - */ - RPointerArray iShadowBitmapMasks; - - /** - * Array to store pointers to TAknLayoutRect for shadows - * - * Own - */ - RArray iShadowLayout; - - /** - * Pointer array to store pointers to bitmaps of guideline - * - * Own - */ - RPointerArray iGuideLineBitmaps; - - /** - * Pointer array to store pointers to mask bitmaps of guideline - * - * Own - */ - RPointerArray iGuideLineBitmapMasks; - - /** - * Array to store pointers to TAknLayoutRect for guidelines - * - * Own - */ - RArray iGuideLineLayout; - - /** - * Rect of drawable for trails; - * - */ - TRect iDrawabelRect; - - /** - * Color of pen; - * - */ - TRgb iPenColor; - - - CAknsBasicBackgroundControlContext* iBgContext; - - TBool iStartSave; - }; - -#endif // TRAININGUIHWRBOX_H - -// end of file - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truihwrboxobserver.h --- a/textinput/peninputhwrtrui/inc/truihwrboxobserver.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Control's observer -* -*/ - - -#ifndef M_TRUIHWRBOXOBSERVER_H -#define M_TRUIHWRBOXOBSERVER_H - -// CLASS DECLARATION - -/** -* MTruiHwrBoxObserver. -* An instance of a class derived from MTrainingUIHwrBoxObserver is an object -* which can be informed when an event defined in this interface occured. -*/ -class MTruiHwrBoxObserver - { -public: - enum TMessageType - { - EModelExist, - EModelDelete - }; - /** - * TimeOut - * Handle the event when a time out occurs. - * @param aModel the array of points where the model is stored - */ - virtual void SaveNewModelL() = 0; - - /** - * HandleEventL - * Handle the message event from the HwrBox - * @param aMessage According to the aMessage to handle the event - */ - virtual void HandleEventL( TMessageType aMessage ) = 0; - }; - -#endif //M_TRUIHWRBOXOBSERVER_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truiinfomessagecontainer.h --- a/textinput/peninputhwrtrui/inc/truiinfomessagecontainer.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiInfoMessageContainer class of TrainingUI -* -*/ - - -#ifndef C_TRUIINFOMESSAGECONTAINER_H -#define C_TRUIINFOMESSAGECONTAINER_H - -#include -#include "truicontainerbase.h" - -class CAknsBasicBackgroundControlContext; -class CEikButtonGroupContainer; -class CEikLabel; -class CTruiRadioButton; -class CEikEdwin; - -/** - * CTruiInfoMessageContainer container control - * Used as the component to shortcut main view - * - * @code - * iContainer = CTruiInfoMessageContainer::NewL( ClientRect() ); - * iContainer->SetMopParent( this ); - * AppUi()->AddToStackL( *this, iContainer ); - * @endcode - * - */ - -class CTruiInfoMessageContainer : public CTruiContainerBase - { -public: - /** - * Two-phased constructor. - * @param aRect The rectangle that defines the control's extent. - * The rectangle's origin is relative to the origin - * of its associated window. - * @return Pointer to the component control - */ - static CTruiInfoMessageContainer* NewL( const TRect& aRect ); - - /** - * Two-phased constructor. - * @param aRect The rectangle that defines the control's extent. - * The rectangle's origin is relative to the origin - * of its associated window. - * @return Pointer to the component control - */ - static CTruiInfoMessageContainer* NewLC( const TRect& aRect ); - - /** - * Destructor. - */ - virtual ~CTruiInfoMessageContainer(); - - /** - * Do something before exit - */ - void PrepareToExitL(); - -private: - - /** - * Constructor. - */ - CTruiInfoMessageContainer(); - - /** - * Two-phased constructor. Second phase - * @param aRect The rectangle that defines the control's extent. - * The rectangle's origin is relative to the origin - * of its associated window. - */ - void ConstructL( const TRect& aRect ); - - /** - * Create controls to be displayed in this container. - */ - void InitializeControlsL(); - - /** - * Create label and display it in the container. - * - * @param aParent The parent of the control. - * @return The pointer to the label. - */ - CEikLabel* CreateLabelL( const CCoeControl* aParent ); - - - -// from base class CCoeControl - /** - * Draw the screen. - * @param aRect the rectangle of this view that needs updating - */ - void Draw( const TRect& aRect ) const; - - /** - * From CoeControl. - * Responds to changes to the size and position of the contents of this control. - */ - void SizeChanged(); - - /** - * From CoeControl. - * Handles a change to the control's resources. - * - * @param aType A message UID value. - */ - void HandleResourceChange( TInt aType ); - -private: // data - - /** - * Pointer to background - * Own - */ - CAknsBasicBackgroundControlContext* iBackGround; - - /** - * Pointer to the label text - * Own - */ - HBufC* iLabelText; - - /** - * Pointer to the radio button - * Own - */ - CTruiRadioButton* iRadioButtonContainer; - - /** - * Pointer to the edwin text - * Own - */ - CEikEdwin* iEdwin; - - /** - * MultilineLayout for edwin - * - */ - TAknMultiLineTextLayout iMultilineLayout; - - /** - * TRect of instruct pane for edwin - * - */ - TRect iInstructPaneRect; - }; - -#endif // C_TRUIINFOMESSAGECONTAINER_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truiinfomessageview.h --- a/textinput/peninputhwrtrui/inc/truiinfomessageview.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiInfoMessageView class of TrainingUI -* -*/ - - -#ifndef C_TRUIINFOMESSAGEVIEW_H -#define C_TRUIINFOMESSAGEVIEW_H - -#include - -class CTruiInfoMessageContainer; - -// UID of view -const TUid KTruiInfoMessageViewId = {5}; - -/** - * CTruiInfoMessageView view class. - * - * @code - * CTruiInfoMessageView* view = CTruiInfoMessageView::NewLC(); - * AddViewL( view ); - * CleanupStack::Pop(); - * @endcode - * - */ -class CTruiInfoMessageView : public CAknView - { -public: - /** - * Two phase construction. - * - * @return Pointer to CTruiInfoMessageView's instance - */ - static CTruiInfoMessageView* NewL(); - - /** - * Two phase construction. - * - * @return Pointer to CTruiInfoMessageView's instance - */ - static CTruiInfoMessageView* NewLC(); - - /** - * Destructor. - */ - virtual ~CTruiInfoMessageView(); - -// from base class CAknView - - /** - * From CAknView - * Returns views id. - * - * @return id for this view. - */ - TUid Id() const; - - /** - * From CAknView - * Command handling function. - * - * @param aCommand ID of the command to respond to. - */ - void HandleCommandL( TInt aCommand ); - -private: - - CTruiInfoMessageView(); - - void ConstructL(); - - /** - * From CAknView - * Called by the framework when view is activated. - * - * @param aPrevViewId This is not used now. - * @param aCustomMessage This is not used now. - * @param aCustomMessage This is not used now. - */ - void DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ); - - /** - * From CAknView - * Called by the framework when view is deactivated. - * - */ - void DoDeactivate(); - -private: // data - - CTruiInfoMessageContainer* iContainer; - }; - -#endif // C_TRUIINFOMESSAGEVIEW_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truilanguagerelation.h --- a/textinput/peninputhwrtrui/inc/truilanguagerelation.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: TLanguageRelation class of TrainingUI -* -*/ - - -#ifndef T_TRUILANGUAGERELATION_H -#define T_TRUILANGUAGERELATION_H - -#include - -class TLanguageRelation - { -public: - TLanguageRelation( TInt aCode, TInt aLanguageScriptId ); - - inline TInt LanguageCode() const - { - return iCode; - }; - - inline TInt LanguageScriptId() const - { - return iLanguageScriptId; - }; - -private: - TInt iCode; - TInt iLanguageScriptId; - }; - -#endif // T_TRUILANGUAGERELATION_H diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truimainview.h --- a/textinput/peninputhwrtrui/inc/truimainview.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,166 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiMainView class of TrainingUI -* -*/ - - -#ifndef C_TRUIMAINVIEW_H -#define C_TRUIMAINVIEW_H - -#include -#include - -class CTruiMainViewContainer; - -// UID of view -const TUid KTruiMainViewId = {1}; - -/** - * CTruiMainView view class. - * - * @code - * CTruiMainView* view = CTruiMainView::NewLC(); - * AddViewL( view ); - * CleanupStack::Pop(); - * @endcode - * - */ -class CTruiMainView : public CAknView, public MAknToolbarObserver - { -public: - - /** - * Two phase construction. - * - * @return Pointer to CTruiMainView's instance - */ - static CTruiMainView* NewL(); - - /** - * Two phase construction. - * - * @return Pointer to CTruiMainView's instance - */ - static CTruiMainView* NewLC(); - - /** - * Destructor. - */ - virtual ~CTruiMainView(); - -// from base class CAknView - - /** - * Returns views id. - * - * @return id for this view. - */ - TUid Id() const; - - /** - * Command handling function. - * - * @param aCommand ID of the command to respond to. - */ - void HandleCommandL( TInt aCommand ); - -// from MEikMenuObserver - /** - * Dynamically initialises a menu pane. - * - * @param aResourceId The resource Id. - * @param aMenuPane The in-memory representation of the menu pane. - */ - void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); - -private: - - /** - * Constructor. - */ - CTruiMainView(); - - /** - * Perform the second phase construction of a CTruiMainView object. - */ - void ConstructL(); - - /** - * Dynamically initialises the character range menu pane. - * - * @param aScriptId Language script Id. - * @param aMenuPane The in-memory representation of the menu pane. - */ - void InitCharRangeSubMenuL( TInt aScriptId, CEikMenuPane* aMenuPane); - - /** - * Get reource ID of menu items for initializing menu pane. - * - * @param aScriptId Language script Id. - * @return resource Id of menu items. - */ - TInt MenuItemsReourceId( TInt aScriptId ); - - /** - * Check menu item dimmed by menu item id. - * - * @param aMenuPane Pointer to menu pane. - * @param aMenuItemId Menu item id of menu. - * @return ETrue: menu item is dimmed - */ - TBool IsMenuItemDimmed( CEikMenuPane* aMenuPane, TInt aMenuItemId ); - -// from base class CAknView - /** - * Called by the framework when view is activated. - * - * @param aPrevViewId This is not used now. - * @param aCustomMessage This is not used now. - * @param aCustomMessage This is not used now. - */ - void DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ); - - /** - * Called by the framework when view is deactivated. - * - */ - void DoDeactivate(); - - /** - * From MAknToolbarObserver. - * Handles toolbar events for a certain toolbar item. - * - * @param aCommand The command ID of some toolbar item. - */ - void OfferToolbarEventL( TInt aCommand ); - -private: // data - - /** - * Pointer to the component control - * own. - */ - CTruiMainViewContainer* iContainer; - - /** - * Indicates whether all delete is dimmed - */ - TBool iDimAllDelete; - }; - -#endif // C_TRUIMAINVIEW_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truimainviewcontainer.h --- a/textinput/peninputhwrtrui/inc/truimainviewcontainer.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,439 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiMainViewContainer class of TrainingUI -* -*/ - - -#ifndef C_TRUIMAINVIEWCONTAINER_H -#define C_TRUIMAINVIEWCONTAINER_H - -#include "truicontainerbase.h" -#include "truihwrboxobserver.h" - -class CAknButton; -class CAknChoiceList; -class CTruiHwrBox; -class CAknCharMapDialog; -class CAknsBasicBackgroundControlContext; -class CEikLabel; -class CAknPreviewPopUpController; - -const TInt KActiveCharSize = 1; -const TInt KLabelTextLen = 100; -/** - * CTruiMainViewContainer container control - * Used as the component to training ui main view - * - * @code - * iContainer = CTruiMainViewContainer::NewL( ClientRect() ); - * iContainer->SetMopParent( this ); - * AppUi()->AddToStackL( *this, iContainer ); - * @endcode - * - */ -class CTruiMainViewContainer : public CTruiContainerBase, - public MCoeControlObserver, - public MTruiHwrBoxObserver - { -public: - - /** - * Two-phased constructor. - * @param aRect The rectangle that defines the control's extent. - * The rectangle's origin is relative to the origin of its associated window. - * @return Pointer to the component control - */ - static CTruiMainViewContainer* NewL( const TRect& aRect ); - - /** - * Two-phased constructor. - * @param aRect The rectangle that defines the control's extent. - * The rectangle's origin is relative to the origin of its associated window. - * @return Pointer to the component control - */ - static CTruiMainViewContainer* NewLC( const TRect& aRect ); - - /** - * Destructor. - */ - virtual ~CTruiMainViewContainer(); - - /** - * Handles an event from an observed control. - * - * @param aControl The control that sent the event. - * @param aEventType The event type. - */ - void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); - - /** - * Handles language script changed. - * - * @param aScriptId The selected language script's Id - */ - void HandleLanguageScriptChangedL( TInt aScriptId ); - - /** - * Handles character range changed. - * - * @param aIndex The index of range item in Menu "character range" or choicelist - * @param aRangeId The range Id. - */ - void HandleCharRangeChangedL( TInt aIndex, TInt aRangeId ); - - /** - * Handles choosing an active char from SCT. - * - */ - void HandleChooseCharEventL(); - - /** - * Preview character model - * - */ - void PreviewCharacterModel(); - - /** - * Set current trained character - * - * @param aChar the trained character - */ - void SetCurrentCharL( const TPtrC& aChar ); - - /** - * Clear current model - * - */ - void ClearCurrentModel(); - - /** - * Delete model of current character - * - */ - void DeleteModelL(); - - /** - * Delete all models of current character - * - */ - void DeleteAllModelL(); - - /** - * Check if clear button has been dimmed - * - * @return ETrue: dimmed; EFalse: undimmed - */ - TBool IsButtonDimmed(); - - /** - * Check if all delete button has been dimmed - * - * @return ETrue: dimmed; EFalse: undimmed - */ - TBool IsAllDelete(); - - /** - * Get character set Id, used to choose which characters will be displayed in SCT - * - * @param aRangeId Character range Id for special character table - * - * @return Id of character set. - */ - TInt SctCharacterSetId( TInt aRangeId ); - - /** - * Get cyrillic lower character set Id - * - * @param aInputLanguage Current input language - * - * @return Id of character set. - */ - TInt SctCyrillicLowerCharacterSetId( TLanguage aInputLanguage ); - - /** - * Get cyrillic upper character set Id - * - * @param aInputLanguage Current input language - * - * @return Id of character set. - */ - TInt SctCyrillicUpperCharacterSetId( TLanguage aInputLanguage ); - - /** - * Before exit, do some necessary operation - * - */ - void PrepareToExitL(); - - /** - * Handle size changed - * - * @param aVarity: Use aVarity to load different resulotion's LAF data. - */ - void DoSizeChanged( TInt aVarity ); - -private: - - /** - * Constructor. - */ - CTruiMainViewContainer(); - - /** - * Perform the second phase construction of a CTruiMainViewContainer object. - * - * @param aRect: The rectangle that defines the control's extent. - */ - void ConstructL( const TRect& aRect ); - - /** - * Create controls to be displayed in this container. - * - */ - void InitializeControlsL(); - - /** - * Create label and display it in the container. - * - * @param aResourceID The resource ID - * @param aParent The parent of the control. - * @param aObserver The observer of the control. - * @return The pointer to the label. - */ - CEikLabel* CreateLabelL( const TInt aResourceId, - const CCoeControl* aParent, - MCoeControlObserver* aObserver ); - - /** - * Create choicelist and display it in the container. - * - * @param aParent The parent of the control. - * @param aObserver The observer of the control. - * @param aTextArray The content displayed in the control. - * @param aButton The attached button. - * @return The pointer to the choiclist. - */ - CAknChoiceList* CreateChoiceListL( CCoeControl* aParent, - MCoeControlObserver* aObserver, - CDesCArray* aTextArray, - CAknButton* aButton ); - - /** - * Create HWRBox and display it in the container. - * - * @param aParent The parent of the control. - * @param aObserver The observer of the control. - * @return The pointer to the choiclist. - */ - CTruiHwrBox* CreateHwrBoxL( CCoeControl* aParent, - MTruiHwrBoxObserver* aObserver ); - - /** - * Return button's resourceId by Character Range Id. - * - * @param aRangeId The character range ID. - * @return Reource Id to be used to create button for choicelist. - */ - TInt ButtonResourceId( TInt aRangeId ) const; - - /** - * Pop Sct dialog - * - * @param aCharCase Character case for special character table - * - * @param aSpecialChar Reference to the buffer where selected special characters are put. - * @param aCharSetResourceId The resource ID of special character table - * @return Id of the button used to dismiss dialog. - * - */ - TInt PopupSctDialogL( TInt aCharCase, TDes& aSpecialChars, TInt aCharSetResourceId ); - - /** - * Popup information note - * - * @param aText The text to be displayed in CAknInformationNote. - */ - void PopupInformationNoteL( const TDesC& aText ); - - /** - * Adjust special behavior characters to displayable characters. - * @param aResult Return result for adjustment. - * - */ - void AdjustDisplayChars( TDes& aResult ); - - /** - * From CoeControl. - * Handles key event. - * - * @param aKeyEvent The key event. - * @param aType The type of key event: EEventKey, EEventKeyUp or EEventKeyDown. - * @return Indicates whether or not the key event was used by this control. - */ - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); - - /** - * GetHelpContext() - * Identify the help context so that the framework can look up - * the corresponding help topic - * @param aContext Returns the help context - */ - void GetHelpContext( TCoeHelpContext& aContext ) const; - - /** - * From CoeControl. - * Responds to changes to the size and position of the contents of this control. - */ - void SizeChanged(); - - /** - * From CoeControl. - * Responds to a change in focus. - * - * @param aRect Contains the value that was passed to it by SetFocus(). - */ - void FocusChanged( TDrawNow aDrawNow ); - - /** - * From CoeControl. - * Draws the container. - * - * @param aRect The region of the control to be redrawn. Co-ordinates are relative to the control's origin (top left corner). - */ - virtual void Draw( const TRect& aRect ) const; - - /** - * From CoeControl. - * Handles a change to the control's resources. - * - * @param aType A message UID value. - */ - void HandleResourceChange( TInt aType ); - - void HandlePointerEventL(const TPointerEvent& aPointerEvent); - -// From MTruiHWRBoxObserver - /** - * From MTruiHWRBoxObserver. - * Input times out - * Handle the save model event - */ - void SaveNewModelL(); - - /** - * From MTruiHWRBoxObserver. - * HandleEventL - * Handle the message event from the HWRBox - * @param aMessage According to the aMessage to handle the event - */ - void HandleEventL( TMessageType aMessage ); - -private: // data - - /** - * The current trained character - */ - TBuf iCurrentChar; - - /** - * The current tip of training character - */ - HBufC* iLabeltext; - - /** - * Store the wrapped text to indicate which character is being trained. - * - * Own - */ - HBufC* iWrappedLabelText; - - /** - * This text helps a user understand that he / she is - * teaching his / her own character models to HWR engine - * Not own - */ - CEikLabel* iLabel; - - /** - * The Clear button in toolbar, used to clean up the Writing Box - * Not own - */ - CAknButton* iClearBtn; - - /** - * The preview button in toolbar - * Not own - */ - CAknButton* iPreviewBtn; - - /** - * The button currently associated with choicelist. - * Not own - */ - CAknButton* iCurChoiceListBtn; - - /** - * Left buttons allow quick access to the previous character - * in the selected character range. - * Not own - */ - CAknButton* iLeftBtn; - - /** - * Indicates which character is currently selected. - * Not own - */ - CEikLabel* iIindicator; - - /** - * Right buttons allow quick access to the Next character - * in the selected character range. - * Not own - */ - CAknButton* iRightBtn; - - /** - * ChoiceList is used for switching between character ranges. - * Not own - */ - CAknChoiceList* iChoicelist; - - /** - * The Writing Box is used for drawing a character model. - * Not own - */ - CTruiHwrBox* iHwrBox; - - /** - * Pointer to background - * Own - */ - CAknsBasicBackgroundControlContext* iBackGround; - - /** - * Rect of parent pane of label - */ - TRect iLabelPaneRect; - - /** - * MultiLineTextLayout of Label - */ - TAknMultiLineTextLayout iMultilineLayout; - - RArray iLineWidthArray; - }; - -#endif // C_TRUIMAINVIEWCONTAINER_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truiradiobuttonobserver.h --- a/textinput/peninputhwrtrui/inc/truiradiobuttonobserver.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Control radio button's observer -* -*/ - -#ifndef M_TRUIRADIOBUTTONOBSERVER_H -#define M_TRUIRADIOBUTTONOBSERVER_H - -// CLASS DECLARATION - -/** -* MTruiRadioButtonObserver. -* An instance of a class derived from MTruiRadioButtonObserver is an object -* which can be informed when an event of state-changed occure. -*/ -class MTruiRadioButtonObserver - { -public: - /** - * Notify that which radio button is selected. - * @param aIndex The index of currently selected index. - */ - virtual void SelectChangedL( TInt aIndex ) = 0; - }; - -#endif //M_TRUIRADIOBUTTONOBSERVER_H - - - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truishortcuteditcontainer.h --- a/textinput/peninputhwrtrui/inc/truishortcuteditcontainer.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,417 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiShortcutEditContainer class of TrainingUI -* -*/ - - -#ifndef C_TRUISHORTCUTEDITCONTAINER_H -#define C_TRUISHORTCUTEDITCONTAINER_H - -#include -#include "truicontainerbase.h" -#include "truihwrboxobserver.h" -#include "truiradiobuttonobserver.h" - -class CAknButton; -class CTruiHwrBox; -class CAknsBasicBackgroundControlContext; -class CTruiRadioButton; -class CAknCharMapDialog; - -/** - * CTruiShortcutEditContainer container control - * Used as the component to shortcut main view - * - * @code - * iContainer = CTruiShortcutEditContainer::NewL( ClientRect() ); - * iContainer->SetMopParent( this ); - * AppUi()->AddToStackL( *this, iContainer ); - * @endcode - * - */ -class CTruiShortcutEditContainer : public CTruiContainerBase, - public MCoeControlObserver, - public MTruiHwrBoxObserver, - public MTruiRadioButtonObserver - { -public: - - /** - * Two-phased constructor. - * @param aRect The rectangle that defines the control's extent. - * The rectangle's origin is relative to the origin - * of its associated window. - * @return Pointer to the component control - */ - static CTruiShortcutEditContainer* NewL( const TRect& aRect ); - - /** - * Two-phased constructor. - * @param aRect The rectangle that defines the control's extent. - * The rectangle's origin is relative to the origin - * of its associated window. - * @return Pointer to the component control - */ - static CTruiShortcutEditContainer* NewLC( const TRect& aRect ); - - /** - * Destructor. - */ - virtual ~CTruiShortcutEditContainer(); - - /** - * Switch app's active view to ShortcutView. - */ - void SwitchToShortcutViewL(); - - /** - * Go back to the previous view. - */ - void BackToPreviousViewL(); - - /** - * Query if shortcut model exist - */ - TBool HasShortcutModel(); - - /** - * Preview shortcut model - */ - void PreviewShortcutModel(); - - /** - * Before exit, do some necessary operation - * - * @retrun TBool if ready to exit, true will be return, - * otherwise it will return false - */ - TBool PrepareToExitL(); - - /** - * Clear current model - * - */ - void ClearCurrentModelL(); - - /** - * Return the currently selected index, which will be set in Shortcuts view. - * - * @param aItemList The shortcut list array in which will locate the aTex. - * @param aText The shortcut item which will be located in aItemList - * @return The index of aText in aItemList. - * If it doesn't exist, it will return KErrNotFound. - */ - TInt DefaultSelectedIndex( const CDesCArray* aItemList, - const TDesC& aText ); - - /** - * Popup SCT dialog. - * - */ - void PopupSctDialogL(); - -private: - - /** - * Constructor. - */ - CTruiShortcutEditContainer(); - - /** - * Two-phased constructor. Second phase - * @param aRect The rectangle that defines the control's extent. - * The rectangle's origin is relative to the origin - * of its associated window. - */ - void ConstructL( const TRect& aRect ); - - /** - * Create controls to be displayed in this container. - */ - void InitializeControlsL(); - - /** - * Create radio button. - */ - void CreateRadioButtonL(); - - /** - * Create HWRBox - */ - void CreateHwrBoxL(); - - /** - * Create buttons - */ - void CcnstructButtonL(); - - /** - * Create Label - */ - void CreateLabelL(); - - /** - * Popup tooltip - * - * @param aResourceID The numeric ID of the resource string to be read. - */ - void PopupTooltipL( TInt aResourceID ); - - /** - * Layout under landscape condition - */ - void DoLayoutLandscape(); - - /** - * Layout under portait condition - */ - void DoLayoutPortait(); - - /** - * Save own shortcut. - * - * @param aShortcut The shortcut text which to be stored. - * @param aModel The points array assigned to the shortcut. - * @param aErrMsg The error message for too similar. - * Leave with code KErrAlreadyInUse - */ - void SaveOwnShortcutL( const TDesC& aShortcut, - RArray& aModel, - TDes& aErrMsg ); - - /** - * Save preset shortcut - * - * @param aShortcut The shortcut text which to be stored. - * @param aUnicode The unicode of preset symbol assigned to the shortcut. - * Leave with code KErrAlreadyInUse - */ - void SavePresetShortcutL( const TDesC& aShortcut, TUint aUnicode ); - - /** - * Backup shortcut model. It is probably to be restored when press Back to exit. - * - * @param aOriginalModel The shortcut model which to be backuped. - * @param aOriginalUnicode The unicode of preset symbol which to be backuped. - */ - void BackupShortcutModel( const RArray& aOriginalModel, - TUint aOriginalUnicode ); - - /** - * Set active char. - * - * @param aUnicode The unicode which to be displayed. - */ - void SetActiveCharL( TUint aUnicode ); - - /** - * Find the first available preset symbol. - * - * @param aStartPos The position from which to search - * @param aDirection The direction of how to search in preset arrays, - * Toward left or toward right - * @param aUnicode The unicode of the first available preset symbol. - * @return ETrue: search successfully; EFalse: Fail to seach, meaning all in use - */ - TBool FindFirstAvailableCharL( TInt aStartPos, TInt aEndPos, - TInt aDirection, TUint& aUnicode ); - - /** - * Return if the preset is in use - * - * @param aUnicode The preset's unicode - * @return ETrue: in use - */ - TBool CheckPresetSymbolInUseL( TUint aUnicode ); - - /** - * Do something to response to size changed - * - * @param aVarity Varity to decide which option will be retrieved from LAF data - */ - void DoSizeChanged( TInt aVarity ); - -// from base class CCoeControl - /** - * Draw the screen. - * @param aRect the rectangle of this view that needs updating - */ - void Draw( const TRect& aRect ) const; - - /** - * From CoeControl. - * Responds to changes to the size and position of the contents of this control. - */ - void SizeChanged(); - - /** - * From CoeControl. - * Responds to a change in focus. - * - * @param aRect Contains the value that was passed to it by SetFocus(). - */ - void FocusChanged( TDrawNow aDrawNow ); - - /** - * Handles a change to the control's resources. - * - * @param aType A message UID value. - */ - void HandleResourceChange( TInt aType ); - -// from MCoeControlObserver - /** - * Handles an event from an observed control. - * This function is called when a control for which this control is the - * observer calls CCoeControl::ReportEventL(). It should be implemented - * by the observer control, and should handle all events sent by controls - * it observes. - * - *@param aControl The control that sent the event. - *@param aEventType The event type. - */ - void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); - -// From MTruiHWRBoxObserver - /** - * From MTruiHWRBoxObserver. - * Input times out - * Handle the save model event - */ - void SaveNewModelL(); - - /** - * From MTruiHWRBoxObserver. - * HandleEventL - * Handle the message event from the HWRBox - * @param aMessage According to the aMessage to handle the event - */ - void HandleEventL( TMessageType aMessage ); - -// from MTruiRadioButtonObserver - /** - * Notify that which radio button is selected. - * @param aIndex The index of currently selected index. - */ - void SelectChangedL( TInt aIndex ); - -private: // data - /** - * The Writing Box is used for drawing a character model. - * Not own - */ - CTruiHwrBox* iHwrBox; - - /** - * Pointer to background - * Own - */ - CAknsBasicBackgroundControlContext* iBackGround; - - /** - * Pointer to radio button - * Not own - */ - CTruiRadioButton* iRadioButtonContainer; - - /** - * Pointer to the tip label - * Not own - */ - CEikLabel* iLabelTip; - - /** - * The current tip of training shortcut - * Own - */ - HBufC* iLabeltext; - - /** - * Store the wrapped text to give tips about own or preset. - * Own - */ - HBufC* iWrappedLabelText; - - /** - * Left button. - * Not own - */ - CAknButton* iLeftBtn; - - /** - * Right button. - * Not own - */ - CAknButton* iRightBtn; - - /** - * Active indicator. - * Not own - */ - CEikLabel* iIndicator; - - /** - * Current preset symbol. - */ - TUint iUnicode; - - /** - * Current shortcut type. - */ - TInt iShortcutType; - - /** - * Store the old points of the current shortcut. - * own - */ - RArray iModelBak; - - /** - * Store the old unicode of the current preset shortcut. - */ - TUint iUnicodeBak; - - /** - * Check if need to restore old shortcut. - */ - TBool iIsRestored; - - /** - * Check if the hwrbox is empty. - */ - TBool iIsEmptyHwrBox; - - /** - * Store all presets from Engine. - * Own - */ - RArray iPresets; - - /** - * Which char is active in preset array. - */ - TInt iActiveCharPos; - - TAknMultiLineTextLayout iMultilineLayout; - - /** - * Line array. - * Own - */ - RArray iLineWidthArray; - }; - -#endif // C_TRUISHORTCUTEDITCONTAINER_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truishortcutedittextview.h --- a/textinput/peninputhwrtrui/inc/truishortcutedittextview.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiShortcutEditTextView class of TrainingUI -* -*/ - - -#ifndef C_TRUISHORTCUTEDITTEXTVIEW_H -#define C_TRUISHORTCUTEDITTEXTVIEW_H - -#include - -class CTruiTextSettingPageContainer; - -// UID of view -const TUid KTruiShortcutEditTextViewId = {4}; - -/** - * CTruiShortcutEditTextView view class. - * - * @code - * CTruiShortcutEditTextView* view = CTruiShortcutEditTextView::NewLC(); - * AddViewL( view ); - * CleanupStack::Pop(); - * @endcode - * - */ -class CTruiShortcutEditTextView : public CAknView - { -public: - - /** - * Two phase construction. - * - * @return Pointer to CTruiShortcutEditTextView's instance - */ - static CTruiShortcutEditTextView* NewL(); - - /** - * Two phase construction. - * - * @return Pointer to CTruiShortcutEditTextView's instance - */ - static CTruiShortcutEditTextView* NewLC(); - - /** - * Destructor. - */ - virtual ~CTruiShortcutEditTextView(); - - inline const TVwsViewId& StartViewId() - { - return iStartView; - }; - -// from base class CAknView - - /** - * From CAknView - * Returns views id. - * - * @return id for this view. - */ - TUid Id() const; - -private: - - CTruiShortcutEditTextView(); - - void ConstructL(); - - /** - * From CAknView - * Called by the framework when view is activated. - * - * @param aPrevViewId This is not used now. - * @param aCustomMessage This is not used now. - * @param aCustomMessage This is not used now. - */ - void DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ); - - /** - * From CAknView - * Called by the framework when view is deactivated. - * - */ - void DoDeactivate(); - -private: // data - - /** - * Pointer to the component control - * own. - */ - CTruiTextSettingPageContainer* iContainer; - - TVwsViewId iStartView; - }; - -#endif diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truishortcuteditview.h --- a/textinput/peninputhwrtrui/inc/truishortcuteditview.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiShortcutEditView class of TrainingUI -* -*/ - - - -#ifndef C_TRUISHORTCUTEDITVIEW_H -#define C_TRUISHORTCUTEDITVIEW_H - -#include -#include - -class CTruiShortcutEditContainer; - -// UID of view -const TUid KTruiShortcutEditViewId = {3}; - -/** - * CTruiShortcutEditView view class. - * - * @code - * CTruiShortcutEditView* view = CTruiShortcutEditView::NewLC(); - * AddViewL( view ); - * CleanupStack::Pop(); - * @endcode - * - */ -class CTruiShortcutEditView : public CAknView, public MAknToolbarObserver - { -public: - - /** - * Two phase construction. - * - * @return Pointer to CTruiShortcutEditView's instance - */ - static CTruiShortcutEditView* NewL(); - - /** - * Two phase construction. - * - * @return Pointer to CTruiShortcutEditView's instance - */ - static CTruiShortcutEditView* NewLC(); - - /** - * Destructor. - */ - virtual ~CTruiShortcutEditView(); - - inline const TVwsViewId& PreviousViewId() const - { - return iPreViewId; - }; - -// from base class CAknView - - /** - * Returns views id. - * - * @return id for this view. - */ - TUid Id() const; - - /** - * Command handling function. - * - * @param aCommand ID of the command to respond to. - */ - void HandleCommandL( TInt aCommand ); - -private: - - /** - * Constructor. - */ - CTruiShortcutEditView(); - - /** - * Perform the second phase construction of a CTruiShortcutEditView object. - */ - void ConstructL(); - -// From CAknView - /** - * Called by the framework when view is activated. - * - * @param aPrevViewId This is not used now. - * @param aCustomMessage This is not used now. - * @param aCustomMessage This is not used now. - */ - void DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ); - - /** - * Called by the framework when view is deactivated. - * - */ - void DoDeactivate(); - -// MAknToolbarObserver - /** - * Handles toolbar events for a certain toolbar item. - * @param aCommand The command ID of some toolbar item. - */ - void OfferToolbarEventL( TInt aCommand ); - -private: // data - - /** - * Pointer to the component control - * own. - */ - CTruiShortcutEditContainer* iContainer; - - /** - * The previous view id - */ - TVwsViewId iPreViewId; - }; - -#endif // C_TRUISHORTCUTEDITVIEW_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truishortcutscontainer.h --- a/textinput/peninputhwrtrui/inc/truishortcutscontainer.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,319 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiShortcutsContainer class of TrainingUI -* -*/ - - -#ifndef C_TRUISHORTCUTSCONTAINER_H -#define C_TRUISHORTCUTSCONTAINER_H - -#include -#include -#include "truicontainerbase.h" - -class CEikButtonGroupContainer; -class CAknSingleGraphicStyleListBox; -class CTruiHwrBox; -class CAknPreviewPopUpController; - -/** - * CTruiShortcutsContainer container control - * Used as the component to shortcut main view - * - * @code - * iContainer = CTruiShortcutsContainer::NewL( ClientRect() ); - * iContainer->SetMopParent( this ); - * AppUi()->AddToStackL( *this, iContainer ); - * @endcode - * - */ -class CTruiShortcutsContainer : public CTruiContainerBase, - public MEikListBoxObserver, - public MAknPreviewPopUpObserver - { -public: - - /** - * Two-phased constructor. - * @param aRect The rectangle that defines the control's extent. - * The rectangle's origin is relative to the origin of its associated window. - * @return Pointer to the component control - */ - static CTruiShortcutsContainer* NewL( const TRect& aRect ); - - /** - * Two-phased constructor. - * @param aRect The rectangle that defines the control's extent. - * The rectangle's origin is relative to the origin of its associated window. - * @return Pointer to the component control - */ - static CTruiShortcutsContainer* NewLC( const TRect& aRect ); - - /** - * Destructor. - */ - virtual ~CTruiShortcutsContainer(); - - /** - * Popup the TextSettingPage and added the new shortcut to ListBox. - */ - void AddShortcutL(); - - /** - * Delete shortcut. - */ - void DeleteShortcutL(); - - /** - * Mark shortcut. - */ - void MarkShortcutL(); - - /** - * Unmark shortcut. - */ - void UnmarkShortcutL(); - - /** - * Return currently selected item's index. - * - * @return Currently selected item's index. - */ - TInt CurrentItemIndex(); - - /** - * Test if the currently selected index is marked. - * - * @param aSelectedIndex: Current selected item's index - * @return ETrue if the item is marked. EFalse if it is not marked. - */ - TBool IsMarked( TInt aSelectedIndex ); - - /** - * Return the count of being marked currently. - * - * @return The count of being marked. - */ - TInt MarkCount(); - - /** - * Edit shortcut - * @param aOnlyEditText ETrue : Only edit shortcut text. - * EFalse : Only edit shortcut model. - */ - void EditShortcutL( TBool aOnlyEditText = EFalse ); - - - /** - * Check if reset introduction - * - * @return ETrue: Reset introcudtion - * EFalse: Do not. - */ - TBool IsResetIntroduction(); - - /** - * Reset introduction - * - */ - void ResetIntroductionL(); - - /** - * Set flag to indicate popup window being displayed. - * - * @param aDisplayPopupWindow ETrue : Displaying. - * EFalse : Not displaying. - */ - inline void SetDisplayPopupWindow( TBool aDisplayPopupWindow ) - { - iDisplayPopupWindow = aDisplayPopupWindow; - }; - -// from MEikListBoxObserver - /** - * Observer callback from the listbox - * @param aListBox ptr to listbox that is calling the method - * @param aEventType type of event; defined by MEikListBoxObserver - */ - void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType ); - -// from CCoeControl - /** - * Handles key event. - * - * @param aKeyEvent The key event. - * @param aType The type of key event: EEventKey, EEventKeyUp or EEventKeyDown. - * - * @return Indicates whether or not the key event was used by this control. - */ - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, - TEventCode aType ); - - /** - * GetHelpContext() - * Identify the help context so that the framework can look up - * the corresponding help topic - * @param aContext Returns the help context - */ - void GetHelpContext( TCoeHelpContext& aContext ) const; - -private: - - /** - * Constructor. - */ - CTruiShortcutsContainer(); - - /** - * Perform the second phase construction of a CTruiMainViewContainer object. - * - * @param aRect: The rectangle that defines the control's extent. - */ - void ConstructL( const TRect& aRect ); - - /** - * Create controls to be displayed in this container. - */ - void InitializeControlsL(); - - /** - * Delete shortcut from ListBox. - */ - void DeleteItemsL(); - - /** - * Create preview popup controller to show popup hwrbox. - */ - CAknPreviewPopUpController* CreatePopupHwrBoxL(); - - /** - * Popup HWR box - * @param aPosition The position to display HWR box - * @param aShowDelay The delay time interval before being shown. - * @param aHideDelay The delay time interval after which to hide tooltip. - */ - void PopupHwrBoxL( const TPoint& aPosition, - const TTimeIntervalMicroSeconds32& aShowDelay, - const TTimeIntervalMicroSeconds32& aHideDelay ); - /** - * Preview shortcut model in popup hwrbox. - * @param aShortcutText The shortcut to be previewed - */ - void PreviewShortcutModelL( const TDesC& aShortcutText, TInt aIndex ); - - /** - * Check if need to preview shortcut and perform previewing necessarily. - * - * @param aIndex To stand for which item of the listbox - * @return ETrue : Preview shortcut model. EFalse : Don't preview it. - */ - TBool CheckAndPreviewShortcutModelL( TInt aIndex ); - - /** - * Update buttons' status in toolbar. - * - * @param aIndex To stand for which item of the listbox. - */ - void UpdateToolbarButtonStatus( TInt aIndex ); - - /** - * Create ListBox - */ - void CreateListBoxL(); - - /** - * Setup text data for listbox - */ - void LoadTextArrayL( const CDesCArray* aTextArray ); - - /** - * Handle event when listbox change to another focused item. - */ - void HandleListBoxFocusChangedL( TInt aIndex ); - - /** - * Popup context menu. - * @param aResourceId The resource Id of the context menu. - */ - void PopupContextMenuL( TInt aResourceId ); - - /** - * Get position relative to screen origin for popup window. - * @param aIndex The index of item from which pop up. - */ - TPoint PopupWindowPosition( TInt aIndex ); - -// from MAknPreviewPopUpObserver - /** - * Called by the preview popup when an appropriate event takes place. - * @param aController Pointer to the sender of the event. - * @param aEvent Event type. - */ - void HandlePreviewPopUpEventL( - CAknPreviewPopUpController* aController, TPreviewPopUpEvent aEvent ); - -// from CoeControl. - /** - * Responds to changes to the size and position of the contents of this control. - */ - void SizeChanged(); - - /** - * Responds to a change in focus. - * @param aDrawNow Contains the value that was passed to it by SetFocus(). - */ - void FocusChanged( TDrawNow aDrawNow ); - - /** - * Handles pointer events. - * @param aPointerEvent The pointer event. - */ - void HandlePointerEventL( const TPointerEvent& aPointerEvent ); - -private: // data - - /** - * list box to display all shortcut - * Not own - */ - CAknSingleGraphicStyleListBox* iListBox; - - /** - * Pointer to HWR box displayed in popup controller - * Own - */ - CTruiHwrBox* iHwrBox; - - /** - * Pointer to preview popup used to show tooltip - * Own - */ - CAknPreviewPopUpController* iPopupController; - - /** - * Check if popup preview when focus changed - */ - TBool iDisplayPopupWindow; - - TUint iShortcutUnicode; - - /** - * Point of pen down on item. - */ - TPoint iPenDownPoint; - }; - -#endif // C_TRUISHORTCUTSCONTAINER_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truishortcutsview.h --- a/textinput/peninputhwrtrui/inc/truishortcutsview.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiShortcutsView class of TrainingUI -* -*/ - - - -#ifndef C_TRUISHORTCUTSVIEW_H -#define C_TRUISHORTCUTSVIEW_H - -#include -#include - -class CTruiShortcutsContainer; -class CTruiTextSettingPageContainer; - -// UID of view -const TUid KTruiShortcutsViewId = {2}; - -/** - * CTruiShortcutsView view class. - * - * @code - * CTruiShortcutsView* view = CTruiShortcutsView::NewLC(); - * AddViewL( view ); - * CleanupStack::Pop(); - * @endcode - * - */ -class CTruiShortcutsView : public CAknView, public MAknToolbarObserver - { -public: - - /** - * Two phase construction. - * - * @return Pointer to CTruiShortcutsView's instance - */ - static CTruiShortcutsView* NewL(); - - /** - * Two phase construction. - * - * @return Pointer to CTruiShortcutsView's instance - */ - static CTruiShortcutsView* NewLC(); - - /** - * Destructor. - */ - virtual ~CTruiShortcutsView(); - -// from base class CAknView - /** - * From CAknView - * Returns views id. - * - * @return id for this view. - */ - TUid Id() const; - - /** - * From CAknView - * Command handling function. - * - * @param aCommand ID of the command to respond to. - */ - void HandleCommandL( TInt aCommand ); - -private: - - CTruiShortcutsView(); - - void ConstructL(); - - /** - * From CAknView - * Called by the framework when view is activated. - * - * @param aPrevViewId This is not used now. - * @param aCustomMessage This is not used now. - * @param aCustomMessage This is not used now. - */ - void DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ); - - /** - * From CAknView - * Called by the framework when view is deactivated. - * - */ - void DoDeactivate(); - -// from MEikMenuObserver - /** - * Dynamically initialises a menu pane. - * - * @param aResourceId The resource Id. - * @param aMenuPane The in-memory representation of the menu pane. - */ - void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); - - /** - * Dynamically initialises a menu bar. - * - * @param aResourceId The resource Id. - * @param aMenuPane The in-memory representation of the menu bar. - */ - void DynInitMenuBarL( TInt aResourceId, CEikMenuBar *aMenuBar ); - -// from MAknToolbarObserver - /** - * Handles toolbar events for a certain toolbar item. - * - * @param aCommand The command ID of some toolbar item. - */ - void OfferToolbarEventL( TInt aCommand ); - /** - * From CAknView. This function processes user commands. - * @param aCommand ID of the command to respond to. - */ - void ProcessCommandL( TInt aCommand ); - -private: // data - - /** - * Pointer to the component control - * own. - */ - CTruiShortcutsContainer* iContainer; - }; - -#endif // C_TRUISHORTCUTSVIEW_H - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truisupportedlanguageid.h --- a/textinput/peninputhwrtrui/inc/truisupportedlanguageid.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Define which language should be supported. -* -*/ - - - -#ifndef T_TRUISUPPORTEDLANGUAGEID_H -#define T_TRUISUPPORTEDLANGUAGEID_H - -#include - -const TInt KTruiSupportedLanguages[] = - { - ELangEnglish, - ELangFrench, - ELangGerman, - ELangSpanish, - ELangItalian, - ELangSwedish, - ELangDanish, - ELangNorwegian, - ELangFinnish, - ELangAmerican, - ELangPortuguese, - ELangTurkish, - ELangIcelandic, - ELangRussian, - ELangHungarian, - ELangDutch, - ELangCzech, - ELangSlovak, - ELangPolish, - ELangSlovenian, - ELangTagalog, - ELangBulgarian, - ELangCroatian, - ELangEstonian, - ELangCanadianFrench, - ELangIndonesian, - ELangLatvian, - ELangLithuanian, - ELangMalay, - ELangBrazilianPortuguese, - ELangRomanian, - ELangSerbian, - ELangLatinAmericanSpanish, - ELangEnglish_Taiwan, - ELangEnglish_HongKong, - ELangEnglish_Prc, - ELangEnglish_Japan, - ELangEnglish_Thailand, - ELangMalay_Apac, - 327, - ELangCatalan, - 102, - 103, - 401, - 402, - ELangUkrainian, - ELangGreek, - ELangHebrew - }; - -#endif // \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/inc/truitextsettingpagecontainer.h --- a/textinput/peninputhwrtrui/inc/truitextsettingpagecontainer.h Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: CTruiTextSettingPageContainer class of TrainingUI -* -*/ - - -#ifndef C_TRUITEXTSETTINGPAGECONTAINER_H -#define C_TRUITEXTSETTINGPAGECONTAINER_H - -#include -#include - -class CTruiHwrBox; -class CAknPreviewPopUpController; - -class CTruiTextSettingPageContainer : public CAknTextSettingPage, - public MAknPreviewPopUpObserver - { -public: - - /** - * Two-phased constructor. - * @param aResourceId Resource Id of CAknTextSettingPage - * @param aText Reference to text for editing - * @param aEnableHwrBox Indicate whether to open HWR box to preview model - * assigned to the shortcut text - * @param aTextSettingPageFlags option flags for miscellaneous things - * @return Pointer to the component control - */ - static CTruiTextSettingPageContainer* NewL( TInt aResourceId, - TDes& aText, - const TRect& aRect, - TBool aEnableHwrBox = EFalse, - TInt aTextSettingPageFlags = 0 ); - - /** - * Two-phased constructor. - * @param aResourceId Resource Id of CAknTextSettingPage - * @param aText Reference to text for editing - * @param aEnableHwrBox Indicate whether to open HWR box to preview model - * assigned to the shortcut text - * @param aTextSettingPageFlags option flags for miscellaneous things - * @return Pointer to the component control - */ - static CTruiTextSettingPageContainer* NewLC( TInt aResourceId, - TDes& aText, - const TRect& aRect, - TBool aEnableHwrBox = EFalse, - TInt aTextSettingPageFlags = 0 ); - - /** - * Destructor. - */ - virtual ~CTruiTextSettingPageContainer(); - -private: - /** - * Constructor. - * @param aSettingPageResourceId Setting Page to use (if present) - * @param aText Reference to text for editing - * @param aTextSettingPageFlags option flags for miscellaneous things - */ - CTruiTextSettingPageContainer( TInt aResourceID, TDes& aText, TInt aTextSettingPageFlags = 0 ); - - /** - * Perform the second phase construction of a CTruiMainViewContainer object. - * - * @param aEnableHwrBox Indicate whether to open HWR box to preview model - * assigned to the shortcut text - */ - void ConstructL( const TRect& aRect, TBool aEnableHwrBox = EFalse ); - - /** - * From CoeControl. - * Responds to changes to the size and position of the contents of this control. - */ - void SizeChanged(); - - /** - * From CAknSettingPage - * Processes events from the softkeys. - * - * @param aCommandId Event Id from the soft-key - */ - void ProcessCommandL( TInt aCommandId ); - -// from MAknPreviewPopUpObserver - /** - * Called by the preview popup when an appropriate event takes place. - * @param aController Pointer to the sender of the event. - * @param aEvent Event type. - */ - void HandlePreviewPopUpEventL( - CAknPreviewPopUpController* aController, TPreviewPopUpEvent aEvent ); - -private: // data - /** - * Pointer to HWR box. - * Own - */ - CTruiHwrBox* iHwrBox; - - /** - * Pointer to preview popup used to show tooltip - * Own - */ - CAknPreviewPopUpController* iPopupController; - }; - -#endif // C_TRUITEXTSETTINGPAGECONTAINER_H \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/loc/trui.loc --- a/textinput/peninputhwrtrui/loc/trui.loc Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,391 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Localization strings for project TrainingUI -* -*/ - - -// d:Command in options list in mainview and shortcut edit view. -// d:Perform the function of deleting character model -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_delete_model "Delete a model" - -// d:Command in options list in mainview. -// d:Perform the function of previewing character model -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_preview_model "Preview model" - -// d:Command in options list in mainview. -// d:Perform the function of changing character range. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_character_range "Character range" - -// d:Command in options list in mainview. -// d:Perform the function of openning sct dialog. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_character_grid "Character grid" - -// d:Command in options list in mainview. -// d:Perform the function of changing language script. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_select_language "Language script" - -// d:Command in options list in mainview, shortcuts view and shortcut edit view. -// d:Perform the function of openning help application. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_options_help "Help" - -// d:Command in options list in mainview, shortcuts view and shortcut edit view. -// d:Perform the function of exitting the application. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_options_exit "Exit" - -// d:Command in options list in shortcuts view. -// d:Perform the function of editting the old text of shortcut. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_edit_shortcut_text "Edit text" - -// d:Command in options list in shortcuts view. -// d:Perform the function of editting the old model of shortcut. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_edit_shortcut_symbol "Edit model" - -// d:Command in options list in shortcuts view. -// d:Perform the function of creating a new shortcut. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_new_shortcut "Create shortcut" - -// d:Command in options list in shortcuts view. -// d:The entry of deleting shortcuts -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_delete_shortcut "Delete shortcut" - -// d:Command in options list in shortcuts view. -// d:Perform the function of switching to the main view. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_training "Training view" - -// d:Command in options list in shortcuts view. -// d:Perform the function of marking an old shortcut. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_options_list_mark_one "Mark" - -// d:Command in options list in shortcuts view. -// d:Perform the function of unmarking an old shortcut. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_options_list_unmark_one "Unmark" - -// d:Tip text in shortcut text setting page. -// d:Tip of shortcut text setting page. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_shortcut_assign_text "Shortcut text:" - -// d:First item's text of ListBox in shortcuts view. -// d:Perform the function of creating a new shortcut. -// l:(none) -// r:5.0 -// -#define qtn_hwrt_list_item_new_shortcut "New shortcut" - -// d:Label's text in main view. -// d:Information of which character being trained. -// d:%U stands for the currently trained character -// l:list_single_hwr_training_instruct_pane_t1 -// r:5.0 -// -#define qtn_hwrt_text_teach_character "Teach your own character '%U' for handwriting recognition" - -// d:Title pane text in main view and shortcuts view. -// l:title_pane_t2/opt9 -// r:5.0 -// -#define qtn_hwrt_title_pane "Handwritting" - -// d:Title pane text in info message view. -// l:title_pane_t2/opt9 -// r:5.0 -// -#define qtn_hwrt_title_crete_new_shortcut "Create new shortcut" - -// d:Tooltip text in confirmation banner. -// d:Information of the character model being saved successfully. -// l:popup_preview_text_window_t1 -// r:5.0 -// -#define qtn_hwrt_confirmation_banner_saved "Saved" - -// d:Tooltip text in confirmation banner. -// d:Information of the character model being deleted. -// l:popup_preview_text_window_t1 -// r:5.0 -// -#define qtn_hwrt_confirmation_banner_deleted "Deleted" - -// d:Command in options list of sub_menu language script in main view. -// d:Perform the function of changing language script -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_western "WESTERN" - -// d:Command in options list of sub_menu language script in main view. -// d:Perform the function of changing language script -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_cyrillic "CYRILLIC" - -// d:Command in options list of sub_menu language script in main view. -// d:Perform the function of changing language script -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_greek "GREEK" - -// d:Command in options list of sub_menu language script in main view. -// d:Perform the function of changing language script -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_hebrew "HEBREW" - -// d:Tooltip to clear current character model first in the state of drawing the unempty HWR box. -// l:popup_preview_text_window/opt1 -// r:5.0 -// -#define qtn_hwrt_note_clear_box "Delete the current model first and then draw a new one" - -// d:Tooltip to clear current character model first in the state of saving a similar model. -// d: %S stands for the similar character with which the newly inputed model is similar with. -// l:popup_preview_text_window/opt1 -// r:5.0 -// -#define qtn_hwrt_note_similar_model "Character model is too similar to %S" - -// d:Tooltip of shortcut will being deleted before leave shortcut edit view with empty character model. -// l:popup_note_window -// r:5.0 -// -#define qtn_hwrt_note_shortcut_not_assigned "Shortcut model missing. Shortcut will be deleted.\nExit anyway?" - -// d:Displayed in Query dialog, when press "Current shortcut" from menu. -// d:Text in query dialog to query if delete the selected shortcut -// l:popup_note_window -// r:5.0 -// -#define qtn_hwrt_query_delete_shortcut "Delete shortcut?" - -// d:Displayed in context menu in shortcuts view. -// d:Text in context emnu -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_msk_edit_text "Edit text" - -// d:Displayed in context menu in shortcuts view. -// d:Text in context emnu -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_msk_edit_symbol "Edit symbol" - -// d:Tooltip text for edit text button in toolbar on shortcut main view -// l:popup_preview_text_window_t1 -// r:5.0 -// -#define qtn_hwrt_tooltip_edit_shortcut_text "Edit Shortcut text" - -// d:Tooltip text for edit symbol button in toolbar on shortcut main view -// l:popup_preview_text_window_t1 -// r:5.0 -// -#define qtn_hwrt_tooltip_edit_shortcut_symbol "Edit Shortcut Symbol" - -// d:Tooltip text for delete button in toolbar on shortcut main view -// l:popup_preview_text_window_t1 -// r:5.0 -// -#define qtn_hwrt_tooltip_delete "Delete" - -// d:Tooltip text for own symbols in shortcut edit model view -// l:list_single_hwr_training_instruct_pane/opt3 -// r:5.0 -// -#define qtn_hwrt_text_purpose_own_symbol "You can drow a symbol for the shortcut text and use it later to call the text. Please use maximum of six strokes." - -// d:Infomation message -// l:list_single_hwr_training_instruct_pane/opt3 -// r:5.0 -// -#define qtn_hwrt_informative_message "To create a new shortcut, please, first define the text (1/1). After that, select or draw your own symbol for the shortcut (2/2)." - -// d:Text for radio button in infomessage view -// l:list_single_hwr_training_symbol_option_pane_t1 -// r:5.0 -// -#define qtn_hwrt_informative_message_check_box_label "Don’t show this again" - -// d:Text of left softkey for Next -// l:control_pane_t1/opt7 -// r:5.0 -// -#define text_softkey_next "Next" - -// d:Text of left softkey for Back -// l:control_pane_t1/opt7 -// r:5.0 -// -#define text_softkey_back "Back" - -// d:Text of left softkey for Finish -// l:control_pane_t1/opt7 -// r:5.0 -// -#define text_softkey_finish "Finish" - -// d:Error note for already in use of shortcut -// l:None -// r:5.0 -// -#define qtn_hwrt_note_shortcut_is_used "Shortcut symbol is in use, select a new one." - -// d:Text on main view option menu -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_delete_current_model "Current model" - -// d:Text on main view option menu -// l:list_single_popup_submenu_pane_t1 -// r:5.0 -// -#define qtn_hwrt_submenu_delete_all_models "All Models" - -// d:Text on main view option menu -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_shortcuts "Shortcuts view" - -// d:Text for LSK on infomessage view -// l:control_pane_t1/opt7 -// r:5.0 -// -#define text_softkey_start "Start" - -// d:Text for LSK on infomessage view -// l:control_pane_t1/opt7 -// r:5.0 -// -#define text_softkey_cancel "Cancel" - -// d:Tooltip text for grid buttont on training main view -// l:popup_preview_text_window_t1 -// r:5.0 -// -#define qtn_hwrt_tooltip_select_character "Select character" - -// d:Tooltip text for preview buttont on training main view -// l:popup_preview_text_window_t1 -// r:5.0 -// -#define qtn_hwrt_tooltip_preview_drawing "Preview drawing" - -// d:Tooltip text for delete buttont on training main view -// l:popup_preview_text_window_t1 -// r:5.0 -// -#define qtn_hwrt_tooltip_delete_drawing "Delete drawing" - -// d:Query note for delete all models -// l:popup_note_window -// r:5.0 -// -#define qtn_hwrt_note_delete_all_models "Are you sure you want to delete all models?" - -// d:Displayed in SCT dialog. -// d:Text in sct dialog as the title -// l:heading_pane_t1/opt1 -// r:5.0 -// -#define qtn_hwrt_sct_select_character "Select a character" - -// d:Tooltip of HWR Training in Fast swap window -// d:Text in sct dialog as the title -// l:cell_app_pane_t1 -// r:5.0 -// -#define qtn_apps_hwrt_grid "Training" - -// d:Last page number for title pane in shortcut edit text view -// l:title_pane_t2/opt9 -// r:5.0 -// -#define qtn_hwrt_title_last_page_number "2(2)" - -// d:Text of query dialog for shortcut mail view when deleting mutiple shortcuts -// d:%N is the number of marked list items. -// l:popup_note_window -// r:5.0 -// -#define qtn_hwrt_query_delete_several_shortcuts "Delete %N Shortcuts?" - -// d:Option menu item on shortcut main view. -// d:To get the hided Informative Message View visible again. -// l:list_single_pane_t1_cp2 -// r:5.0 -// -#define qtn_hwrt_om_reset_intro "Reset introduction" - -// d:Title pane text in shortcut edit view. -// l:title_pane_t2/opt9 -// r:5.0 -// -#define qtn_hwrt_title_wizard_hwr_shortcut "1(2) HWR shortcut" - -// d:Title pane text in shortcut edit view. -// l:title_pane_t2/opt9 -// r:5.0 -// -#define qtn_hwrt_title_hwr_shortcut "HWR Shortcut" diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/rom/peninputhwrtruiresources.iby --- a/textinput/peninputhwrtrui/rom/peninputhwrtruiresources.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Image description file for TrainUI application -* -*/ - -#ifndef TRUIRESOURCES_IBY -#define TRUIRESOURCES_IBY -#ifdef __PEN_SUPPORT -#include - -#ifndef FF_CAPACITIVE_DISPLAY -#ifdef __HANDWRITING_RECOGNITION_INPUT - -// TrainUI UI ======================================================= -S60_APP_RESOURCE(trui) - -#endif // __HANDWRITING_RECOGNITION_INPUT -#endif // FF_CAPACITIVE_DISPLAY - -#endif // __PEN_SUPPORT -#endif // TRUIRESOURCES_IBY \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/rom/peninputhwrtruivariant.iby --- a/textinput/peninputhwrtrui/rom/peninputhwrtruivariant.iby Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Image description file for TrainUI application -* -*/ - -#ifndef TRUI_IBY -#define TRUI_IBY - -#include -#include - -#ifdef __PEN_SUPPORT -#ifndef FF_CAPACITIVE_DISPLAY -#ifdef __HANDWRITING_RECOGNITION_INPUT -#if defined(LOCALES_SC_IBY) || defined(__LOCALES_01_IBY__) \ - || defined(__LOCALES_02_IBY__) || defined(__LOCALES_03_IBY__) \ - || defined(__LOCALES_04_IBY__) || defined(__LOCALES_05_IBY__) \ - || defined(__LOCALES_06_IBY__) || defined(__LOCALES_07_IBY__) \ - || defined(__LOCALES_08_IBY__) || defined(__LOCALES_09_IBY__) \ - || defined(__LOCALES_10_IBY__) || defined(__LOCALES_13_IBY__) \ - || defined(__LOCALES_14_IBY__) || defined(__LOCALES_15_IBY__) \ - || defined(__LOCALES_16_IBY__) || defined(__LOCALES_17_IBY__) \ - || defined(__LOCALES_18_IBY__) || defined(__LOCALES_25_IBY__) \ - || defined(__LOCALES_26_IBY__) || defined(__LOCALES_27_IBY__) \ - || defined(__LOCALES_28_IBY__) || defined(__LOCALES_39_IBY__) \ - || defined(__LOCALES_45_IBY__) || defined(__LOCALES_49_IBY__) \ - || defined(__LOCALES_51_IBY__) || defined(__LOCALES_59_IBY__) \ - || defined(__LOCALES_67_IBY__) || defined(__LOCALES_68_IBY__) \ - || defined(__LOCALES_70_IBY__) || defined(__LOCALES_76_IBY__) \ - || defined(__LOCALES_78_IBY__) || defined(__LOCALES_79_IBY__) \ - || defined(__LOCALES_83_IBY__) || defined(__LOCALES_157_IBY__) \ - || defined(__LOCALES_158_IBY__) || defined(__LOCALES_159_IBY__) \ - || defined(__LOCALES_160_IBY__) || defined(__LOCALES_161_IBY__) \ - || defined(__LOCALES_326_IBY__) || defined(__LOCALES_327_IBY__) \ - || defined(__LOCALES_44_IBY__) || defined(__LOCALES_401_IBY__) \ - || defined(__LOCALES_402_IBY__) || defined(__LOCALES_186_IBY__) \ - || defined(__LOCALES_102_IBY__) || defined(__LOCALES_103_IBY__) \ - || defined(__LOCALES_230_IBY__) || defined(__LOCALES_16_IBY__) \ - || defined(__LOCALES_42_IBY__) || defined(__LOCALES_93_IBY__) \ - || defined(__LOCALES_54_IBY__) || defined(__LOCALES_57_IBY__) -#define PENINPUT_TRUI -#endif // __HANDWRITING_RECOGNITION_INPUT -#endif // FF_CAPACITIVE_DISPLAY -#endif // __PEN_SUPPORT - -#ifdef PENINPUT_TRUI -// TrainUI UI ======================================================= -S60_APP_EXE(trui) -S60_APP_AIF_ICONS(trui) -S60_APP_AIF_RSC(trui) -data=\epoc32\release\armv5\urel\z\resource\TrainUiPreset.dat RESOURCE_FILES_DIR\TrainUiPreset.dat -data=\epoc32\data\Z\resource\apps\trui_icons.mif APP_BITMAP_DIR\trui_icons.mif -#endif -#endif // __PEN_SUPPORT - -#endif // TRUI_IBY \ No newline at end of file diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/trui.cpp --- a/textinput/peninputhwrtrui/src/trui.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Application entrance -* -*/ - - -#include -#include "truiapplication.h" - -// ================= EXPORTED FUNCTIONS ================================= -// --------------------------------------------------------------------------- -// Create an application, and return a pointer to it -// --------------------------------------------------------------------------- -// -CApaApplication* NewApplication() - { - return new CTruiApplication; - } - - -TInt E32Main() - { - return EikStart::RunApplication( NewApplication ); - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truiapplication.cpp --- a/textinput/peninputhwrtrui/src/truiapplication.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiApplication -* -*/ - - -#include - -#include "truidocument.h" -#include "truiapplication.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// To create document -// --------------------------------------------------------------------------- -// -CApaDocument* CTruiApplication::CreateDocumentL() - { - // Create an trui document, and return a pointer to it - CApaDocument* document = new (ELeave) CTruiDocument( *this ); - return document; - } - -// --------------------------------------------------------------------------- -// Get Uid of AppDll -// --------------------------------------------------------------------------- -// -TUid CTruiApplication::AppDllUid() const - { - // Return the UID for the trui application - return KUidtruiApp; - } - -// --------------------------------------------------------------------------- -// Opens the .ini file associated with the application. -// --------------------------------------------------------------------------- -// -CDictionaryStore* CTruiApplication::OpenIniFileLC( RFs& aFs ) const - { - return CEikApplication::OpenIniFileLC( aFs ); - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truiappradiobutton.cpp --- a/textinput/peninputhwrtrui/src/truiappradiobutton.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,545 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiRadioButton -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef RD_TACTILE_FEEDBACK -#include -#endif //RD_TACTILE_FEEDBACK - -#include "truiappradiobutton.h" -#include "truiradiobuttonobserver.h" -#include "truicontainerbase.h" - -// The amount of icons of bitmap files for ratio button -const TInt KRadioButtonIconCounts = 2; - -const TInt KSpaceBetweenItems = 10; - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CTruiRadioButton* CTruiRadioButton::NewL( CCoeControl* aParent, - TSelectionType aSelectionType, - MTruiRadioButtonObserver* aObserver ) - { - CTruiRadioButton* self = CTruiRadioButton::NewLC( aParent, aSelectionType, - aObserver ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CTruiRadioButton* CTruiRadioButton::NewLC( CCoeControl* aParent, - TSelectionType aSelectionType, - MTruiRadioButtonObserver* aObserver ) - { - CTruiRadioButton* self = new ( ELeave ) CTruiRadioButton( aObserver, - aSelectionType ); - CleanupStack::PushL( self ); - self->ConstructL( aParent ); - return self; - } - -// ----------------------------------------------------------------------------- -// CTruiHwrBox::CTruiHwrBox() -// C++ default constructor can NOT contain any code, that might leave. -// ----------------------------------------------------------------------------- -// -CTruiRadioButton::CTruiRadioButton( MTruiRadioButtonObserver* aObserver, - TSelectionType aSelectionType ) - :iObserver( aObserver ), iSelectionType( aSelectionType ) - { - // No implementation required - } - - -// ----------------------------------------------------------------------------- -// CTruiRadioButton::ConstructL() -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CTruiRadioButton::ConstructL( CCoeControl* aParent ) - { - SetContainerWindowL( *aParent ); - CreateBitmapForRadioButtonL(); - #ifdef RD_TACTILE_FEEDBACK - iTactileSupported = FeatureManager::FeatureSupported( KFeatureIdTactileFeedback ); - #endif // RD_TACTILE_FEEDBACK - } - -// ----------------------------------------------------------------------------- -// Convert texts into Label and update them in radio buttons. -// ----------------------------------------------------------------------------- -// -void CTruiRadioButton::HandleItemAdditionL() - { - // Re-init control array - delete iControlArray; - iControlArray = NULL; - if ( iTextArray.Count() > 0 ) - { - iControlArray = new (ELeave) CArrayPtrFlat - ( iTextArray.Count() ); - } - // text layout - // Add items for radio button - for ( TInt i = 0; i < iTextArray.Count(); i++ ) - { - // Create label - CEikLabel* label = new (ELeave) CEikLabel(); - CleanupStack::PushL( label ); - label->SetContainerWindowL( *this ); - label->SetObserver( this ); - label->SetTextL( *iTextArray[i] ); - - // Add label to control array - iControlArray->AppendL( label ); - CleanupStack::Pop( label ); - } - } - -// ----------------------------------------------------------------------------- -// Add one item to radio button. -// ----------------------------------------------------------------------------- -// -void CTruiRadioButton::AddItem( const HBufC* aText, TRadioButtonStatus aStatus ) - { - iTextArray.Append( aText ); - iStatusArray.Append( aStatus ); - } - -// ----------------------------------------------------------------------------- -// CTruiRadioButton::~CTruiRadioButton() -// Destructor. -// ----------------------------------------------------------------------------- -// -CTruiRadioButton::~CTruiRadioButton() - { - iStatusArray.Close(); - iTextArray.ResetAndDestroy(); - if ( iControlArray ) - { - iControlArray->ResetAndDestroy(); - delete iControlArray; - } - delete iRadioButtonSelectedBmp; - delete iRadioButtonSelectedBmpm; - delete iRadioButtonNonSelectedBmp; - delete iRadioButtonNonSelectedBmpm; - iIconLayout.Close(); - } - -// --------------------------------------------------------------------------- -// Handles an event from an observed control. -// --------------------------------------------------------------------------- -// -void CTruiRadioButton::HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType ) - { - TInt index; - for ( index = 0; index < iControlArray->Count(); index++ ) - { - if ( aControl == iControlArray->At( index ) ) - { - break; - } - } - if ( iSelectionType == ERadioButton ) - { - HandlePointerRadioButtonL( index, aEventType ); - } - else - { - HandlePointerCheckBox( index, aEventType ); - } - DrawNow(); - } - -// --------------------------------------------------------------------------- -// Handle pointer on radio button. -// --------------------------------------------------------------------------- -// -void CTruiRadioButton::HandlePointerRadioButtonL( TInt aIndex, TCoeEvent aEventType ) - { - if ( aIndex < iStatusArray.Count() && aEventType == EEventRequestFocus ) - { - for ( TInt i = 0; i < iStatusArray.Count(); i++ ) - { - if ( i == aIndex ) - { - if ( iStatusArray[aIndex] == ENonSelected ) - { - iStatusArray[aIndex] = ESelected; - if ( iObserver ) - { - iObserver->SelectChangedL( aIndex ); - } - } - } - else - { - iStatusArray[i] = ENonSelected; - } - } - } - } - -// --------------------------------------------------------------------------- -// Handle pointer on checkbox. -// --------------------------------------------------------------------------- -// -void CTruiRadioButton::HandlePointerCheckBox( TInt aIndex, TCoeEvent aEventType ) - { - if ( aIndex < iControlArray->Count() && aEventType == EEventRequestFocus ) - { - iStatusArray[aIndex] = ( iStatusArray[aIndex] == ENonSelected ) - ? ESelected : ENonSelected; - } - } - -// --------------------------------------------------------------------------- -// Handles an event from an observed control. -// --------------------------------------------------------------------------- -// -void CTruiRadioButton::SizeChanged() - { - LoadIconsLayout( 0 ); - for ( TInt i = 0; i < iIconLayout.Count(); i++ ) - { - TSize iconSize = iIconLayout[i].Rect().Size(); - AknIconUtils::SetSize( iRadioButtonSelectedBmp, iconSize ); - AknIconUtils::SetSize( iRadioButtonSelectedBmpm, iconSize ); - AknIconUtils::SetSize( iRadioButtonNonSelectedBmpm, iconSize ); - AknIconUtils::SetSize( iRadioButtonNonSelectedBmpm, iconSize ); - } - // list_single_hwr_training_symbol_option_pane_t1 - if ( iControlArray && iTextArray.Count() > 0 ) - { - for ( TInt i = 0; i < iTextArray.Count(); i++ ) - { - TAknTextComponentLayout option_pane_t1_layout = - AknLayoutScalable_Apps:: - list_single_hwr_training_symbol_option_pane_t1( 0 ); - CEikLabel* label = static_cast( iControlArray->At( i ) ); - AknLayoutUtils::LayoutLabel( label, - Rect(), - iMultilineLayout ); - // Set color for label - TRgb labelColor = KRgbBlack; - TInt error = GetCachedLabelTextColor( labelColor ); - if ( error == KErrNone ) - { - TRAP_IGNORE( label->OverrideColorL( EColorLabelText, labelColor ) ); - } - TRAP_IGNORE( ClipToFitLabelL( label, i ) ); - // Set font for label - if ( TBidiText::ScriptDirectionality( User::Language() ) - == TBidiText::ERightToLeft ) - { // arabic,hebrew, set text RTL - label->SetLabelAlignment( ELayoutAlignBidi ); - } - } - } - } - -// ----------------------------------------------------------------------------- -// Draws control to given area -// ----------------------------------------------------------------------------- -// -void CTruiRadioButton::Draw( const TRect& /*aRect*/ ) const - { - CWindowGc& gc = SystemGc(); - // Gets the control's extent - TRect rect( Rect() ); - // Clears the screen - Window().SetBackgroundColor( TRgb( ~0 ) ); - - TSize pixSize = iRadioButtonSelectedBmp->SizeInPixels(); - for ( TInt i = 0; i < iStatusArray.Count(); i++ ) - { - TPoint tl( rect.iTl.iX, rect.iTl.iY + pixSize.iWidth * i - + KSpaceBetweenItems * i ); - if ( iStatusArray[i] == ESelected ) - { - iIconLayout[0].DrawImage( gc, iRadioButtonSelectedBmp, iRadioButtonSelectedBmpm ); - } - else if ( iStatusArray[i] == ENonSelected ) - { - iIconLayout[0].DrawImage( gc, iRadioButtonNonSelectedBmp, - iRadioButtonNonSelectedBmpm ); - } - } - } - -// ----------------------------------------------------------------------------- -// Gets the number of controls contained in a compound control. -// ----------------------------------------------------------------------------- -// -TInt CTruiRadioButton::CountComponentControls() const - { - if ( iControlArray ) - { - return iControlArray->Count(); - } - return 0; - } - -// ----------------------------------------------------------------------------- -// Gets an indexed component of a compound control. -// ----------------------------------------------------------------------------- -// -CCoeControl* CTruiRadioButton::ComponentControl( TInt aIndex ) const - { - if ( iControlArray && aIndex < iControlArray->Count() ) - { - return iControlArray->At( aIndex ); - } - return NULL; - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Handles a change to the control's resources. -// --------------------------------------------------------------------------- -// -void CTruiRadioButton::HandleResourceChange( TInt aType ) - { - CCoeControl::HandleResourceChange( aType ); - if ( aType == KAknsMessageSkinChange && iControlArray ) - { - TRgb labelColor = KRgbBlack; - TInt error = GetCachedLabelTextColor( labelColor ); - if ( error == KErrNone ) - { - for ( TInt i = 0; i < iControlArray->Count(); i++ ) - { - CCoeControl* label = iControlArray->At( i ); - TRAP_IGNORE( label->OverrideColorL( EColorLabelText, labelColor ) ); - } - } - TRAP_IGNORE( CreateBitmapForRadioButtonL() ); - SizeChanged(); - } - } - -// ----------------------------------------------------------------------------- -// Gets an indexed component of a compound control. -// ----------------------------------------------------------------------------- -// -void CTruiRadioButton::HandlePointerEventL( const TPointerEvent& aPointerEvent ) - { - if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) - { - // Click the area of icon - TSize pixSize = iRadioButtonSelectedBmp->SizeInPixels(); - TRect rect( Rect() ); - for ( TInt i = 0; i < iControlArray->Count(); i++ ) - { - if ( iIconLayout[i].Rect().Contains( aPointerEvent.iPosition ) ) - { - // Handle the event to point on Icon - HandleControlEventL( iControlArray->At( i ), - EEventRequestFocus ); - } - } - #ifdef RD_TACTILE_FEEDBACK - if ( iTactileSupported ) - { - MTouchFeedback::Instance()->InstantFeedback( ETouchFeedbackBasic ); - } - #endif // RD_TACTILE_FEEDBACK - } - CCoeControl::HandlePointerEventL( aPointerEvent ); - } - -// ----------------------------------------------------------------------------- -// Return the control's minisize. -// ----------------------------------------------------------------------------- -// -TSize CTruiRadioButton::MinimumSize() - { - TInt miniWidth = 0; - TInt miniHeight = 0; - for ( TInt i = 0; i < iControlArray->Count(); i++ ) - { - TSize itemMiniSize = iControlArray->At( i )->Size(); - miniHeight += itemMiniSize.iHeight + KSpaceBetweenItems * i; - miniWidth = itemMiniSize.iWidth - + iRadioButtonSelectedBmp->SizeInPixels().iWidth; - } - return TSize( miniWidth, miniHeight ); - } - -// ----------------------------------------------------------------------------- -// Create radio button's bitmap. -// ----------------------------------------------------------------------------- -// -void CTruiRadioButton::CreateBitmapForRadioButtonL() - { - delete iRadioButtonSelectedBmp; - delete iRadioButtonSelectedBmpm; - delete iRadioButtonNonSelectedBmp; - delete iRadioButtonNonSelectedBmpm; - // Read resource file - TResourceReader reader; - TInt btnResource; - if ( iSelectionType == ERadioButton ) - { - btnResource = R_AVKON_SETTING_PAGE_RADIOBUTTON_ICONS; - } - else - { - btnResource= R_AVKON_SETTING_PAGE_CHECKBOX_ICONS; - } - iEikonEnv->CreateResourceReaderLC( reader, btnResource ); - reader.ReadInt16(); //not needed, simple or complex - HBufC* bmpFile = reader.ReadHBufCL(); - CleanupStack::PushL( bmpFile ); - TInt count = reader.ReadInt16(); // count - if( count < KRadioButtonIconCounts ) - { - User::Leave(KErrCorrupt); - } - TInt32 bmpSelected = reader.ReadInt32(); - TInt32 bmpSelectedM = reader.ReadInt32(); - TInt32 bmpNonSelected = reader.ReadInt32(); - TInt32 bmpNonSelectedM = reader.ReadInt32(); - CleanupStack::Pop( bmpFile ); - CleanupStack::PopAndDestroy(); // reader - - CleanupStack::PushL( bmpFile ); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnIndiRadiobuttOn, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - iRadioButtonSelectedBmp, - iRadioButtonSelectedBmpm, - *bmpFile, - bmpSelected, - bmpSelectedM, - KRgbBlack - ); - - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnIndiRadiobuttOff, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - iRadioButtonNonSelectedBmp, - iRadioButtonNonSelectedBmpm, - *bmpFile, - bmpNonSelected, - bmpNonSelectedM, - KRgbBlack - ); - CleanupStack::PopAndDestroy( bmpFile ); - } - -// --------------------------------------------------------------------------- -// Get cached color of skin for label control -// --------------------------------------------------------------------------- -// -TInt CTruiRadioButton::GetCachedLabelTextColor( TRgb& aColor ) - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - // Set pen color to the color of test in main area - return AknsUtils::GetCachedColor( skin, - aColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG6 ); - } - -// --------------------------------------------------------------------------- -// Load layouts for icons from LAF. -// --------------------------------------------------------------------------- -// -void CTruiRadioButton::LoadIconsLayout( TInt aVarity ) - { - TRect rect = Rect(); - iIconLayout.Reset(); - // Caculate list_single_hwr_training_symbol_option_pane_g1 for line1 - TAknWindowComponentLayout icon_checked_layout = - AknLayoutScalable_Apps::list_single_hwr_training_symbol_option_pane_g1 - ( aVarity ); - TAknLayoutRect icon_checked_layout_rect; - icon_checked_layout_rect.LayoutRect( rect, icon_checked_layout ); - iIconLayout.Append( icon_checked_layout_rect ); - } -// ----------------------------------------------------------------------------- -// Convert logical name to visual name for label when needed. -// ----------------------------------------------------------------------------- -// -void CTruiRadioButton::ConvertToVisualForEdwinL( CEikLabel* aLabel, - const TDesC& aLogicalTxt, - const CFont& aFont, - TInt aLineWidth ) - { - HBufC* visualText = HBufC::NewLC( aLogicalTxt.Length() - + TBidiLogicalToVisual::KMinCharAvailable - + KExtraSize ); - TPtr visualTextPtr = visualText->Des(); - AknBidiTextUtils::ConvertToVisualAndClip( aLogicalTxt, visualTextPtr, - aFont, aLineWidth, aLineWidth ); - aLabel->SetTextL( *visualText ); - aLabel->SetLabelAlignment( ELayoutAlignBidi ); - CleanupStack::PopAndDestroy( visualText ); - } - -// ----------------------------------------------------------------------------- -// Clip text of editor to fit editor width. -// ----------------------------------------------------------------------------- -// -void CTruiRadioButton::ClipToFitLabelL( CEikLabel* aLabel, TInt aIndex ) - { - if ( aLabel && aLabel->Size().iWidth > 0 ) - { - // Get font fo editor from LAF - const CFont* edwinFont = AknLayoutUtils::FontFromId - ( iMultilineLayout.FontId() ); - // Prepare text to set into editor - HBufC* textInArray = iTextArray[aIndex]; - // Create a new HBufC to store text for editor - HBufC* edwinText = HBufC::NewLC( textInArray->Length() - + KExtraSize ); - TPtr edwinTextPtr = edwinText->Des(); - edwinTextPtr.Copy( *textInArray ); - // Clip text for editor - AknTextUtils::ClipToFit( edwinTextPtr, *edwinFont, - aLabel->Size().iWidth ); - aLabel->SetTextL( *edwinText ); - CleanupStack::PopAndDestroy( edwinText ); - } - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truiappui.cpp --- a/textinput/peninputhwrtrui/src/truiappui.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,286 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiAppUi -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "trui.hrh" -#include "truiappui.h" -#include "truimainview.h" -#include "truishortcutsview.h" -#include "truishortcuteditview.h" -#include "truishortcutedittextview.h" -#include "truiinfomessageview.h" -#include "truiengine.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// ConstructL is called by the application framework -// --------------------------------------------------------------------------- -// -void CTruiAppUi::ConstructL() - { - BaseConstructL(); - //Create HWR engine - iEngine = CTruiEngine::NewL( iEikonEnv ); - - //Create view - iMainView = CTruiMainView::NewL(); - AddViewL( iMainView ); - - iShortcutsView = CTruiShortcutsView::NewL(); - AddViewL( iShortcutsView ); - - iShortcutEditView = CTruiShortcutEditView::NewL(); - AddViewL( iShortcutEditView ); - - iShortcutEditTextView = CTruiShortcutEditTextView::NewL(); - AddViewL( iShortcutEditTextView ); - - iInfoMessageView = CTruiInfoMessageView::NewL(); - AddViewL( iInfoMessageView ); - - SetDefaultViewL( *iMainView ); - - iNaviDecorator = CreateNavigationTabL( R_NAVIGATIONPANE_TABGROUP, 0 ); - - // Create empty navi pane - // Get status pane from AppUi - CEikStatusPane* statusPane = StatusPane(); - CEikStatusPaneBase::TPaneCapabilities naviPaneCapability = - statusPane->PaneCapabilities( TUid::Uid( EEikStatusPaneUidNavi ) ); - // if the navigation pane can be used - if ( naviPaneCapability.IsPresent() && naviPaneCapability.IsAppOwned() ) - { - CAknNavigationControlContainer* naviPane = - static_cast - ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); - // if the navigation pane can be used - if ( naviPaneCapability.IsPresent() && naviPaneCapability.IsAppOwned() ) - { - iEmptyNaviDecorator = naviPane->CreateNavigationLabelL(); - } - } - AknsUtils::SetAvkonSkinEnabledL( ETrue ); - } - -// --------------------------------------------------------------------------- -// Constructor -// --------------------------------------------------------------------------- -// -CTruiAppUi::CTruiAppUi() - { - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -CTruiAppUi::~CTruiAppUi() - { - if ( iNaviDecorator ) - { - delete iNaviDecorator; - } - if ( iEmptyNaviDecorator ) - { - delete iEmptyNaviDecorator; - } - if ( iEngine ) - { - delete iEngine; - } - } - -// --------------------------------------------------------------------------- -// handle any menu commands -// --------------------------------------------------------------------------- -// -void CTruiAppUi::HandleCommandL( TInt aCommand ) - { - switch( aCommand ) - { - case EEikCmdExit: - case EAknSoftkeyExit: - { - PrepareToExit(); - Exit(); - break; - } - case EMainViewHelp: - case EShortcutViewHelp: - { - CArrayFix* buf = CCoeAppUi::AppHelpContextL(); - HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(), - buf ); - break; - } - default: - break; - } - } - -// --------------------------------------------------------------------------- -// Create navigation pane -// --------------------------------------------------------------------------- -// -CAknNavigationDecorator* CTruiAppUi::CreateNavigationTabL - ( const TInt aResourceId, - const TInt aDefaultActive ) - { - // Get status pane from AppUi - CEikStatusPane* statusPane = StatusPane(); - CEikStatusPaneBase::TPaneCapabilities naviPaneCapability = - statusPane->PaneCapabilities( TUid::Uid( EEikStatusPaneUidNavi ) ); - - CAknNavigationDecorator* naviDecorator = NULL; - // if the navigation pane can be used - if ( naviPaneCapability.IsPresent() && naviPaneCapability.IsAppOwned() ) - { - // Get the navigation pane from status pane. - CAknNavigationControlContainer* naviPane = - static_cast - ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); - TResourceReader reader; - iEikonEnv->CreateResourceReaderLC( reader, aResourceId ); - - // Create the navigation pane tab group - naviDecorator = naviPane->CreateTabGroupL( reader, this ); - CleanupStack::PushL( naviDecorator ); - - // Set tab text - CAknTabGroup* tabGroup = static_cast - ( naviDecorator->DecoratedControl() ); - tabGroup->SetActiveTabByIndex( aDefaultActive ); - - // Push and show the navigation pane - naviPane->PushL( *naviDecorator ); - CleanupStack::Pop( naviDecorator ); - CleanupStack::PopAndDestroy(); // reader - } - return naviDecorator; - } - -// --------------------------------------------------------------------------- -// return pointer of hand writing engine -// --------------------------------------------------------------------------- -// -CTruiEngine* CTruiAppUi::HwrEngine() const - { - return iEngine; - } - -// --------------------------------------------------------------------------- -// Return a pointer to navigation pane. -// --------------------------------------------------------------------------- -// -CAknNavigationDecorator* CTruiAppUi::GetNaviDecorator() const - { - return iNaviDecorator; - } - -// --------------------------------------------------------------------------- -// Close the navi pane -// --------------------------------------------------------------------------- -// -void CTruiAppUi::CloseNaviPaneL() - { - // Get status pane from AppUi - CEikStatusPane* statusPane = StatusPane(); - - CEikStatusPaneBase::TPaneCapabilities naviPaneCapability = - statusPane->PaneCapabilities( TUid::Uid( EEikStatusPaneUidNavi ) ); - // if the navigation pane can be used - if ( naviPaneCapability.IsPresent() && naviPaneCapability.IsAppOwned() ) - { - // Get the navigation pane from status pane. - CAknNavigationControlContainer* naviPane = - static_cast - ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); - // Pop and hide the navigation pane - naviPane->PushL( *iEmptyNaviDecorator ); - } - } - -// --------------------------------------------------------------------------- -// Show the navi pane -// --------------------------------------------------------------------------- -// -void CTruiAppUi::ShowNaviPaneL() - { - CEikStatusPane* statusPane = StatusPane(); - - CEikStatusPaneBase::TPaneCapabilities naviPaneCapability = - statusPane->PaneCapabilities( TUid::Uid( EEikStatusPaneUidNavi ) ); - // if the navigation pane can be used - if ( naviPaneCapability.IsPresent() && naviPaneCapability.IsAppOwned() ) - { - CAknNavigationControlContainer* naviPane = - static_cast - ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); - // Push and show the navigation pane - naviPane->PushL( *iNaviDecorator ); - } - } - -// --------------------------------------------------------------------------- -// Handle active tab changed -// --------------------------------------------------------------------------- -// -void CTruiAppUi::TabChangedL( TInt aIndex ) - { - if ( aIndex == 0 ) - { - // Switch to mainview - ActivateLocalViewL( KTruiMainViewId ); - } - else - { - // Switch to shortcuts view - ActivateLocalViewL( KTruiShortcutsViewId ); - } - } - -// --------------------------------------------------------------------------- -// Show the title pane -// --------------------------------------------------------------------------- -// -void CTruiAppUi::ShowTitlePaneL( const TDesC& aTitle ) - { - CEikStatusPane* statusPane = StatusPane(); - CEikStatusPaneBase::TPaneCapabilities titlePaneCapability = - statusPane->PaneCapabilities( TUid::Uid( EEikStatusPaneUidTitle ) ); - if ( titlePaneCapability.IsPresent() && titlePaneCapability.IsAppOwned() ) - { - CAknTitlePane* titlePane = static_cast - ( statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - titlePane->SetTextL( aTitle ); - } - } - - - - - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truicontainerbase.cpp --- a/textinput/peninputhwrtrui/src/truicontainerbase.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,434 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiContainerBase -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "truicontainerbase.h" -#include "truiappui.h" - -_LIT( KChangeLine, "\n" ); - -const TSize KHwrBoxSizeLandscape = TSize( 200, 200 ); - -// ======== MEMBER FUNCTIONS ======== - -CTruiContainerBase::CTruiContainerBase() - { - iAppUi = static_cast( iAvkonViewAppUi ); - iEngine = iAppUi->HwrEngine(); - } - -CTruiContainerBase::~CTruiContainerBase() - { - } - -// --------------------------------------------------------------------------- -// Get the origin size in which input the model for preset symbols. -// --------------------------------------------------------------------------- -// -TSize CTruiContainerBase::OriginSymbolSize() - { - TRect rect = iAvkonViewAppUi->ClientRect(); - - TAknWindowComponentLayout main_pane_layout = - AknLayoutScalable_Apps::main_hwr_training_pane(); - TAknLayoutRect main_pane_layout_rect; - main_pane_layout_rect.LayoutRect( rect, main_pane_layout ); - TRect main_pane_rect = main_pane_layout_rect.Rect(); - - // hwr_training_write_pane - TAknWindowComponentLayout write_pane_layout = - AknLayoutScalable_Apps::hwr_training_write_pane( 2 ); - TAknLayoutRect write_pane_layout_rect; - write_pane_layout_rect.LayoutRect( main_pane_rect, write_pane_layout ); - - TAknWindowComponentLayout drawable_rect_layout = - AknLayoutScalable_Apps::hwr_training_write_pane_g7( 0 ); - TAknLayoutRect drawable_rect_layout_rect; - drawable_rect_layout_rect.LayoutRect( write_pane_layout_rect.Rect(), - drawable_rect_layout ); - return drawable_rect_layout_rect.Rect().Size(); - } - -// --------------------------------------------------------------------------- -// Wrap the text to fit the minisize of Label. -// --------------------------------------------------------------------------- -// -TInt CTruiContainerBase::WrapLabelText( const CEikLabel* aLabel, - const TDesC& aText, - TInt aMaxLines, - HBufC* aWrappedText ) - { - return DoWrapLabelText( aLabel->Font(), aLabel->Size().iWidth, aText, - aMaxLines, aWrappedText ); - } - -// --------------------------------------------------------------------------- -// Wrap the text to fit the minisize of Label. -// --------------------------------------------------------------------------- -// -TInt CTruiContainerBase::WrapLabelText( const TAknLayoutText& aLayoutText, - const TDesC& aText, - TInt aMaxLines, - HBufC* aWrappedText ) - { - const CFont* font = aLayoutText.Font(); - TInt width = aLayoutText.TextRect().Size().iWidth; - return DoWrapLabelText( font, width, aText, aMaxLines, aWrappedText ); - } - -// --------------------------------------------------------------------------- -// Wrap the text to fit the minisize of Label. -// --------------------------------------------------------------------------- -// -void CTruiContainerBase::WrapLabelTextL( const CFont* aFont, const TDesC& aText, - const RArray& aLineWidthArray, - HBufC* aWrappedText ) - { - if ( aWrappedText && aLineWidthArray.Count() > 0 ) - { - CArrayFixFlat* lineWidthArray = new (ELeave) - CArrayFixFlat( aLineWidthArray.Count() ); - CleanupStack::PushL( lineWidthArray ); - // Create line array - for ( TInt i = 0; i < aLineWidthArray.Count(); i++ ) - { - lineWidthArray->AppendL( aLineWidthArray[i] ); - } - // Do wrap and clip - TPtr wrappedTextPtr = aWrappedText->Des(); - AknTextUtils::WrapToStringAndClipL( aText, *lineWidthArray, *aFont, - wrappedTextPtr ); - CleanupStack::PopAndDestroy( lineWidthArray ); - } - } - -// --------------------------------------------------------------------------- -// Create skin specified button from resource. -// --------------------------------------------------------------------------- -// -CAknButton* CTruiContainerBase::CreateButtonL( TInt aResourceId, - const CCoeControl* aParent, - MCoeControlObserver* aObserver ) - { - TResourceReader reader; - iEikonEnv->CreateResourceReaderLC( reader, aResourceId ); - CAknButton* button = ConstructButtonFromResourceL( reader ); - if ( aParent ) - { - button->SetContainerWindowL( *aParent ); - } - if ( aObserver ) - { - button->SetObserver( aObserver ); - } - CleanupStack::PopAndDestroy(); // reader - return button; - } - -// --------------------------------------------------------------------------- -// Add skin specified buttons into toolbar. -// --------------------------------------------------------------------------- -// -void CTruiContainerBase::AddButtonsToToolbarL( CAknToolbar* aToolbar, TInt aResourceId ) - { - TResourceReader reader; - iEikonEnv->CreateResourceReaderLC( reader, aResourceId ); - const TInt buttonCount = reader.ReadInt16(); - for ( TInt i = 0; i < buttonCount; i++ ) - { - // Create each toolbar item - TInt controlType = reader.ReadInt16(); - TInt commandId = reader.ReadInt16(); - reader.ReadInt16(); // flags - reader.ReadInt16(); // length - CAknButton* button = ConstructButtonFromResourceL( reader ); - aToolbar->AddItemL( button, controlType, commandId, 0, i ); - } - CleanupStack::PopAndDestroy(); // reader - } - -// --------------------------------------------------------------------------- -// Return current keyboard mode. -// --------------------------------------------------------------------------- -// -TInt CTruiContainerBase::CurrentKeyBoardModeL() - { - RProperty keyboardProperty; - CleanupClosePushL( keyboardProperty ); - User::LeaveIfError( keyboardProperty.Attach( KCRUidAvkon, - KAknQwertyInputModeActive ) ); - TInt keyboardMode = 0; - keyboardProperty.Get( keyboardMode ); - CleanupStack::PopAndDestroy( &keyboardProperty ); - return keyboardMode; - } - -// --------------------------------------------------------------------------- -// Read setting from ini file to decide if display wizard view. -// --------------------------------------------------------------------------- -// -void CTruiContainerBase::GetSettingFromIniFileL( TUint32 aKey, TInt& aValue ) - { - CDictionaryStore* iniFile = iAppUi->Application()->OpenIniFileLC( iEikonEnv->FsSession() ); - RDictionaryReadStream readSteam; - readSteam.OpenLC( *iniFile, TUid::Uid( aKey ) ); - TInt16 value; - readSteam >> value; - aValue = value; - CleanupStack::PopAndDestroy( &readSteam ); - CleanupStack::PopAndDestroy( iniFile ); - } - -// --------------------------------------------------------------------------- -// Save settings into file. -// --------------------------------------------------------------------------- -// -void CTruiContainerBase::SaveSettingIntoIniFileL( TUint32 aKey, TInt aValue ) - { - CDictionaryStore* iniFile = - iAppUi->Application()->OpenIniFileLC( iEikonEnv->FsSession() ); - RDictionaryWriteStream stream; - stream.AssignLC( *iniFile, TUid::Uid( aKey ) ); - stream << (TInt16)aValue; - stream.CommitL(); - iniFile->CommitL(); - CleanupStack::PopAndDestroy( &stream ); - CleanupStack::PopAndDestroy( iniFile ); - } - -// --------------------------------------------------------------------------- -// Get cached color of skin for label control -// --------------------------------------------------------------------------- -// -TInt CTruiContainerBase::GetCachedLabelTextColor( TRgb& aColor ) - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - // Set pen color to the color of test in main area - return AknsUtils::GetCachedColor( skin, - aColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG6 ); - } - -// --------------------------------------------------------------------------- -// Get cached color of skin for icon -// --------------------------------------------------------------------------- -// -TInt CTruiContainerBase::GetCachedIcontColor( TRgb& aColor, - const TAknsItemID& aColorId, - TInt aColorIndex ) - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - // Set pen color to the color of test in main area - return AknsUtils::GetCachedColor( skin, - aColor, - aColorId, - aColorIndex ); - } - -// --------------------------------------------------------------------------- -// Create skin specified button from resource. -// --------------------------------------------------------------------------- -// -CAknButton* CTruiContainerBase::ConstructButtonFromResourceL( TResourceReader& aReader ) - { - TInt flags = aReader.ReadInt16(); - TPtrC helpText = aReader.ReadTPtrC(); - TPtrC fileName = aReader.ReadTPtrC(); - TInt bmpId = aReader.ReadInt16(); - TInt bmpMaskId = aReader.ReadInt16(); - TInt pressId = aReader.ReadInt16(); - TInt pressMaskId = aReader.ReadInt16(); - TInt mainItemId = aReader.ReadInt32(); - TInt minorItemId = aReader.ReadInt32(); - TInt mainItemPressId = aReader.ReadInt32(); - TInt minorItemPressId = aReader.ReadInt32(); - - CGulIcon* icon = NULL; - TInt length = fileName.Length(); - if ( fileName.Length() ) - { - TAknsItemID aknItemId = { mainItemId, minorItemId }; - - // Create icon - CFbsBitmap* bitmap; - CFbsBitmap* bitmapm; - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - AknsUtils::CreateColorIconL( skin, - aknItemId, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG30, - bitmap, - bitmapm, - fileName, - bmpId, - bmpMaskId, - KRgbBlack ); - CleanupStack::PushL( bitmap ); - CleanupStack::PushL( bitmapm ); - icon = CGulIcon::NewL( bitmap, bitmapm ); // Ownership transfered - CleanupStack::Pop( bitmapm ); - CleanupStack::Pop( bitmap ); - } - CleanupStack::PushL( icon ); - CAknButton* button = CAknButton::NewL ( icon, - NULL, - NULL, - NULL, - KNullDesC, - helpText, - flags, - NULL ); - CleanupStack::Pop( icon ); - return button; - } - -// --------------------------------------------------------------------------- -// Construct icons from resource. -// --------------------------------------------------------------------------- -// -CGulIcon* CTruiContainerBase::ConstructIconFromResourceL( TInt aResourceId ) - { - TResourceReader reader; - iEikonEnv->CreateResourceReaderLC( reader, aResourceId ); - TInt flags = reader.ReadInt16(); - TPtrC helpText = reader.ReadTPtrC(); - TPtrC fileName = reader.ReadTPtrC(); - TInt bmpId = reader.ReadInt16(); - TInt bmpMaskId = reader.ReadInt16(); - TInt pressId = reader.ReadInt16(); - TInt pressMaskId = reader.ReadInt16(); - TInt mainItemId = reader.ReadInt32(); - TInt minorItemId = reader.ReadInt32(); - TInt mainItemPressId = reader.ReadInt32(); - TInt minorItemPressId = reader.ReadInt32(); - - TAknsItemID aknItemId = { mainItemId, minorItemId }; - - // Create icon - CFbsBitmap* bitmap; - CFbsBitmap* bitmapm; - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - AknsUtils::CreateColorIconL( skin, - aknItemId, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG30, - bitmap, - bitmapm, - fileName, - bmpId, - bmpMaskId, - KRgbBlack ); - CleanupStack::PushL( bitmap ); - CleanupStack::PushL( bitmapm ); - CGulIcon* icon = CGulIcon::NewL( bitmap, bitmapm ); // Ownership transfered - CleanupStack::Pop( bitmapm ); - CleanupStack::Pop( bitmap ); - CleanupStack::PopAndDestroy(); // reader - return icon; - } - -// --------------------------------------------------------------------------- -// Wrap the text to fit the minisize of Label. -// --------------------------------------------------------------------------- -// -TInt CTruiContainerBase::DoWrapLabelText( const CFont* aFont, TInt aWidth, - const TDesC& aText, TInt aMaxLines, - HBufC* aWrappedText ) - { - TInt lineCount; - TInt startPos = 0; - TInt lines = 1; - if ( aWidth <= 0 || !aWrappedText ) - { - return 0; - } - TPtrC subText = aText.Mid( startPos, aText.Length() - startPos ); - TPtr newTextPtr = aWrappedText->Des(); - newTextPtr.Copy( KNullDesC ); - while ( ( lineCount = aFont->TextCount( subText, aWidth ) ) < subText.Length() ) - { - // Need to wrap - if ( ++lines > aMaxLines ) - { - // Check if it is up to maximum line - break; - } - // get the last char of every line - TChar nextCharLine = aText[ startPos + lineCount ]; - - // Decide at which position insert the \n - if ( nextCharLine == TChar( ' ' ) ) - { - // Replace nextCharLine with \n - newTextPtr.Append( subText.Mid( 0, lineCount ) ); - newTextPtr.Append( KChangeLine ); - // And move the startPos for the next loop. - startPos += lineCount + 1; - } - else - { - // Go forward to find " " and replace it with \n - // And move the startPos for the next loop. - TPtrC subTextPtr = subText.Mid( 0, lineCount ); - TInt pos = subTextPtr.LocateReverse( TChar( ' ' ) ); - if ( pos != KErrNotFound ) - { - newTextPtr.Append( subTextPtr.Left( pos ) ); - newTextPtr.Append( KChangeLine ); - startPos += pos + 1; - } - else - { - newTextPtr.Append( subTextPtr ); - newTextPtr.Append( KChangeLine ); - startPos += lineCount; - } - } - subText.Set( aText.Mid( startPos, aText.Length() - startPos ) ); - } - newTextPtr.Append( subText ); - return lines; - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Handles a change to the control's resources. -// --------------------------------------------------------------------------- -// -void CTruiContainerBase::HandleResourceChange( TInt aType ) - { - CCoeControl::HandleResourceChange( aType ); - if ( aType==KEikDynamicLayoutVariantSwitch && iView ) - { - SetRect( iView->ClientRect() ); - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truidocument.cpp --- a/textinput/peninputhwrtrui/src/truidocument.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiDocument -* -*/ - - -#include "truiappui.h" -#include "truidocument.h" -#include "truiapplication.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Standard Symbian OS construction -// --------------------------------------------------------------------------- -// -CTruiDocument::CTruiDocument( CAknApplication& aApp ) : CAknDocument( aApp ) - { - } - -// --------------------------------------------------------------------------- -// Standard Symbian OS construction -// --------------------------------------------------------------------------- -// -CTruiDocument::~CTruiDocument() - { - } - -// --------------------------------------------------------------------------- -// Create the application user interface, and return a pointer to it, -// the framework takes ownership of this object -// --------------------------------------------------------------------------- -// -CEikAppUi* CTruiDocument::CreateAppUiL() - { - CEikAppUi* appUi = new (ELeave) CTruiAppUi; - return appUi; - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truiengine.cpp --- a/textinput/peninputhwrtrui/src/truiengine.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,725 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiShortcutsView -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "trui.hrh" -#include "truiengine.h" - -#include "truilanguagerelation.h" - -const TInt KRangeNamesArraySize = 5; - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// construction -// --------------------------------------------------------------------------- -// -CTruiEngine::CTruiEngine( CEikonEnv* aEikonEnv ) : iEnv( aEikonEnv ) - { - } - -// --------------------------------------------------------------------------- -// construction -// --------------------------------------------------------------------------- -// -void CTruiEngine::ConstructL() - { - CRepository* repository = CRepository::NewLC( KCRUidAknFep ); - // Get current input language - TInt inputLanguage = 0; - repository->Get( KAknFepInputTxtLang, inputLanguage ); - iInputLanguage = (TLanguage)inputLanguage; - - // Create PtiEngine - iEngine = CPtiEngine::NewL(); - MPtiHwrRecognizer* hwr = iEngine->GetHwrRecognizerL( ELangEnglish ); - - iPtiEngine = hwr->QueryUdmInterfaceL() ; - - // Initialize a mapping table for language script - RArray languageRelation; - CleanupClosePushL( languageRelation ); - InitLanguageRelationL( R_TRUI_LANGUAGE_SCRIPT_SET, languageRelation ); - - // Get all supported language script - InitSupportedLanguageScriptL( iSupportedScript, iEngine, languageRelation ); - - if ( iSupportedScript.Count() == 0 ) - { - User::Leave( KErrNotSupported ); - } - - // Get currently active language script - TInt langCode; - repository->Get( KAknFepInputTxtLang, langCode ); - TInt activeScript = GetActiveLanguageScript( langCode, languageRelation ); - - // Destroy the mapping table. - CleanupStack::PopAndDestroy( &languageRelation ); - CleanupStack::PopAndDestroy( repository ); - - if ( activeScript != KErrNotFound ) - { - SetLanguageScriptByIndexL( activeScript ); - } - else - { - User::Leave( KErrNotSupported ); - } - } - -// --------------------------------------------------------------------------- -// construction -// --------------------------------------------------------------------------- -// -CTruiEngine* CTruiEngine::NewL( CEikonEnv* aEikonEnv ) - { - CTruiEngine* self = CTruiEngine::NewLC( aEikonEnv ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// construction -// --------------------------------------------------------------------------- -// -CTruiEngine* CTruiEngine::NewLC( CEikonEnv* aEikonEnv ) - { - CTruiEngine* self = new ( ELeave ) CTruiEngine( aEikonEnv ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// --------------------------------------------------------------------------- -// destruction -// --------------------------------------------------------------------------- -// -CTruiEngine::~CTruiEngine() - { - iSupportedScript.Close(); - if ( iRangeName ) - { - iRangeName->Reset(); - delete iRangeName; - } - iSupportedRange.Close(); - if ( iCharacterSet ) - { - delete iCharacterSet; - } - if ( iShortcutList ) - { - iShortcutList->Reset(); - delete iShortcutList; - } - delete iEngine; - } - -// --------------------------------------------------------------------------- -// Set current language script -// --------------------------------------------------------------------------- -// -void CTruiEngine::SetLanguageScriptByIndexL( TInt aIndex ) - { - //Set script - iCurrentScript = aIndex; - - //Delete previous iRangeName - if ( iRangeName ) - { - delete iRangeName; - iRangeName = NULL; - } - //Reset iSupportedRange - iSupportedRange.Reset(); - - //Set character range - HBufC* charRange; - switch( iCurrentScript ) - { - case EMainViewSubmenuWestern: - { - //There are 5 subranges under Western - iRangeName = new (ELeave) CDesCArrayFlat( KRangeNamesArraySize ); - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CHAR_RANGE_LOWER ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ELatinLowerLetters ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CHAR_RANGE_CAPITAL ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ELatinUpperLetters ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CHAR_RANGE_ACCENT ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ELatinAccent ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CHAR_RANGE_DIGITS ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ELatinDigital ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CHAR_RANGE_SYMBOLS ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ELatinSymbol ); - - iPtiEngine->SetLanguageScriptL( EPtiHwrScriptLatin ); - break; - } - case EMainViewSubmenuCyrillic: - { - //There are 5 subranges under Cyrillic - iRangeName = new (ELeave) CDesCArrayFlat( KRangeNamesArraySize ); - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CYRILLIC_LOWER ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ECyrillicLowerLetters ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CYRILLIC_CAPITAL ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ECyrillicUpperLetters ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CHAR_RANGE_DIGITS ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ELatinDigital ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CHAR_RANGE_SYMBOLS ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ELatinSymbol ); - - iPtiEngine->SetLanguageScriptL( EPtiHwrScriptCyrillic ); - break; - } - case EMainViewSubmenuGreek: - { - //There are 5 subranges under Greek - iRangeName = new (ELeave) CDesCArrayFlat( KRangeNamesArraySize ); - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_GREEK_LOWER ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( EGreekLowerLetters ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_GREEK_CAPITAL ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( EGreekUpperLetters ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CHAR_RANGE_DIGITS ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ELatinDigital ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CHAR_RANGE_SYMBOLS ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ELatinSymbol ); - - iPtiEngine->SetLanguageScriptL( EPtiHwrScriptGreek ); - break; - } - case EMainViewSubmenuHebrew: - { - //There are 4 subranges under Hebrew - iRangeName = new (ELeave) CDesCArrayFlat( KRangeNamesArraySize ); - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_HEBREW_LETTERS ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( EHebrewLetters ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CHAR_RANGE_DIGITS ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ELatinDigital ); - - charRange = iEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_CHAR_RANGE_SYMBOLS ); - iRangeName->AppendL( *charRange ); - CleanupStack::PopAndDestroy( charRange ); - iSupportedRange.Append( ELatinSymbol ); - - iPtiEngine->SetLanguageScriptL( EPtiHwrScriptHebrew ); - break; - } - default: - { - User::Leave( KErrArgument ); - } - } - // Set the first range as the default range - SetCharacterRangeByIndexL( 0 ); - } - -// --------------------------------------------------------------------------- -// Set current character range -// --------------------------------------------------------------------------- -// -void CTruiEngine::SetCharacterRangeByIndexL( TInt aIndex ) - { - iCurrentRange = iSupportedRange[aIndex]; - - //Update character set by range - TInt resourceId= 0; - switch( iCurrentRange ) - { - case ELatinLowerLetters: - { - resourceId = R_TRUI_CHARACTERSET_LATIN_LOWERLETTERS; - break; - } - case ELatinUpperLetters: - { - resourceId = R_TRUI_CHARACTERSET_LATIN_UPPERLETTERS; - break; - } - case ELatinAccent: - { - resourceId = R_TRUI_CHARACTERSET_LATIN_ACCENT; - break; - } - case ELatinDigital: - { - resourceId = R_TRUI_CHARACTERSET_LATIN_DIGITAL; - break; - } - case ELatinSymbol: - { - if ( FeatureManager::FeatureSupported(KFeatureIdChinese) ) - { - resourceId = R_TRUI_CHARACTERSET_LATIN_SYMBOL_CHINESE; - } - else - { - resourceId = R_TRUI_CHARACTERSET_LATIN_SYMBOL; - } - break; - } - case ECyrillicLowerLetters: - { - // According to current input language, - // Return different resource id. - resourceId = CyrillicLowerResourceId( iInputLanguage ); - break; - } - case ECyrillicUpperLetters: - { - resourceId = CyrillicUpperResourceId( iInputLanguage ); - break; - } - case ECyrillicAccent: - { - resourceId = R_TRUI_CHARACTERSET_CYRILLIC_ACCENT; - break; - } - case EGreekLowerLetters: - { - resourceId = R_TRUI_CHARACTERSET_GREEK_LOWERLETTERS; - break; - } - case EGreekUpperLetters: - { - resourceId = R_TRUI_CHARACTERSET_GREEK_UPPERLETTERS; - break; - } - case EHebrewLetters: - { - resourceId = R_TRUI_CHARACTERSET_HEBREW_LETTERS; - break; - } - default: - { - User::Leave( KErrArgument ); - } - } - if ( iCharacterSet ) - { - delete iCharacterSet; - iCharacterSet = NULL; - } - iCharacterSet = iEnv->AllocReadResourceL( resourceId ); - - //Transfer character range to engine's subrange and store it in local - SetSubrange(); - } - -// --------------------------------------------------------------------------- -// Check if character has model -// --------------------------------------------------------------------------- -// -TBool CTruiEngine::CheckCharacterModel( const TDesC& aChar ) - { - return iPtiEngine->CharacterModelExist( aChar ); - } - -// --------------------------------------------------------------------------- -// Delete character model -// --------------------------------------------------------------------------- -// -TInt CTruiEngine::DeleteCharacterModel( const TDesC& aChar ) - { - return iPtiEngine->DeleteCharacterModel( aChar ); - } - -// --------------------------------------------------------------------------- -// Set character model -// --------------------------------------------------------------------------- -// -void CTruiEngine::SetCharacterModelL( const TDesC& aChar, - RArray& aModel, - TDes& aSimilarMsg ) - { - iPtiEngine->SetCharacterModelL( aChar, aModel, iSubrange, aSimilarMsg ); - } - -// --------------------------------------------------------------------------- -// Get character model -// --------------------------------------------------------------------------- -// -void CTruiEngine::GetCharacterModelL( const TDesC& aChar, RArray& aModel ) - { - iPtiEngine->GetCharacterModelL( aChar, aModel ); - } - -// --------------------------------------------------------------------------- -// Check if shortcut has model -// --------------------------------------------------------------------------- -// -TBool CTruiEngine::CheckShortcutModel( const TDesC& aText ) - { - return iPtiEngine->CheckShortcutModel( aText ); - } - -// --------------------------------------------------------------------------- -// Save shortcut text and its assigned character model into PTI Engine -// Meanwhile update shortcutlist -// --------------------------------------------------------------------------- -// -void CTruiEngine::SaveShortcutL( const TDesC& aText, - RArray& aModel, - TDes& aSimilarMsg ) - { - iPtiEngine->SetShortcutModelL( aText, aModel, aSimilarMsg ); - } - -// --------------------------------------------------------------------------- -// Delete shortcut text and its assigned character model from PTI Engine -// Meanwhile update shortcutlist -// --------------------------------------------------------------------------- -// -TInt CTruiEngine::DeleteShortcut( const TDesC& aText ) - { - return iPtiEngine->DeleteShortcutModel( aText ); - } - -// --------------------------------------------------------------------------- -// Set current edited shortcut -// --------------------------------------------------------------------------- -// -TInt CTruiEngine::SetShortcut( const TDesC& aText ) - { - iShortcut = aText; - return KErrNone; - } - -// --------------------------------------------------------------------------- -// Update Shortcut list -// --------------------------------------------------------------------------- -// -void CTruiEngine::UpdateShortcutListL() - { - if ( iShortcutList ) - { - iShortcutList->Reset(); - delete iShortcutList; - iShortcutList = NULL; - } - - RPointerArray list; - CleanupClosePushL( list ); - TRAPD( err, iPtiEngine->GetShortcutTextListL( list ) ); - if ( err == KErrNone ) - { - if ( list.Count() > 0 ) - { - iShortcutList = new (ELeave) CDesCArrayFlat( list.Count() ); - for ( TInt i = 0; i < list.Count(); i++ ) - { - iShortcutList->AppendL( *list[i] ); - } - iShortcutList->Sort( ECmpCollated ); - } - } - list.ResetAndDestroy(); - CleanupStack::PopAndDestroy( &list ); - } - -// --------------------------------------------------------------------------- -// From class MTruiEngine. -// change the text of an existing shortcut. -// --------------------------------------------------------------------------- -// -void CTruiEngine::ChangeShortcutTextL( const TDesC& aNewText ) - { - iPtiEngine->ChangeShortcutTextL( iShortcut, aNewText ); - } - -// --------------------------------------------------------------------------- -// Get guiding line pos -// --------------------------------------------------------------------------- -// -TInt CTruiEngine::GetGuidingLinePos( const TSize& aSize, TInt& aTop , TInt& aBottom ) - { - return iPtiEngine->GetGuidingLinePos( aSize, aTop, aBottom ); - } - -// --------------------------------------------------------------------------- -// Get the number of the maximum of shortcuts -// --------------------------------------------------------------------------- -// -TInt CTruiEngine::MaxShortCutLength() - { - return iPtiEngine->MaxShortCutLength(); - } - -// --------------------------------------------------------------------------- -// Get trails assigned to the specified shortcut. -// --------------------------------------------------------------------------- -// -void CTruiEngine::GetShortcutModelL( const TDesC& aText, - RArray& aModel, - TUint& aUnicode ) - { - iPtiEngine->GetShortcutModelL( aText, aModel, aUnicode ); - } - -// --------------------------------------------------------------------------- -// Save preset shortcuts. -// --------------------------------------------------------------------------- -// -void CTruiEngine::SavePresetShortcutL( TUint aUnicode, const TDesC& aShortcut ) - { - iPtiEngine->SavePresetShortcutL( aUnicode, aShortcut ); - } - -// --------------------------------------------------------------------------- -// Get trails assigned to a preset text. -// --------------------------------------------------------------------------- -// -void CTruiEngine::GetPresetSymbolByUnicodeL( TUint aUnicode, - RArray& aModel, - TDes& aShortcut ) - { - iPtiEngine->GetPresetSymbolByUnicodeL( aUnicode, aModel, aShortcut ); - } - -// --------------------------------------------------------------------------- -// Return all unicodes of preset text stored in PTI engine. -// --------------------------------------------------------------------------- -// -void CTruiEngine::GetAllPresetSymbolsL( RArray& aPresets ) - { - iPtiEngine->GetAllPresetSymbolsL( aPresets ); - } - -// --------------------------------------------------------------------------- -// Transform character range to engine's subrange -// --------------------------------------------------------------------------- -// -void CTruiEngine::SetSubrange() - { - switch( iCurrentRange ) - { - case ELatinLowerLetters: - case ELatinUpperLetters: - case ELatinAccent: - { - iSubrange = EPtiHwrRangeLanguage; - break; - } - case ELatinDigital: - { - iSubrange = EPtiHwrRangeNumber; - break; - } - case ELatinSymbol: - { - iSubrange = EPtiHwrRangeSymbol; - break; - } - case ECyrillicLowerLetters: - case ECyrillicUpperLetters: - case ECyrillicAccent: - { - iSubrange = EPtiHwrRangeLanguage; - break; - } - case EGreekLowerLetters: - case EGreekUpperLetters: - { - iSubrange = EPtiHwrRangeLanguage; - break; - } - case EHebrewLetters: - { - iSubrange = EPtiHwrRangeLanguage; - break; - } - default: - { - iSubrange = EPtiHwrRangeAny; - } - } - } - -// --------------------------------------------------------------------------- -// Initialize the tabel used to map language to language script -// --------------------------------------------------------------------------- -// -void CTruiEngine::InitLanguageRelationL( TInt aResourceId, - RArray& aLanguageRelation ) - { - TResourceReader reader; - iEnv->CreateResourceReaderLC( reader, aResourceId ); - TInt script_count = reader.ReadInt16(); - for ( TInt i = 0; i < script_count; i++ ) - { - TInt scriptId = reader.ReadInt16(); - TInt lang_count = reader.ReadInt16(); - for ( TInt j = 0; j < lang_count; j++ ) - { - TInt langCode = reader.ReadInt16(); - aLanguageRelation.Append( TLanguageRelation( langCode, scriptId ) ); - } - } - CleanupStack::PopAndDestroy(); // reader - } - -// --------------------------------------------------------------------------- -// Initialize the supported language script. -// --------------------------------------------------------------------------- -// -void CTruiEngine::InitSupportedLanguageScriptL( RArray& aSupportedScript, - CPtiEngine* aEngine, - const RArray& aLanguageRelation ) - { - // Get all supported input language. - RArray avaiableLanuage; - CleanupClosePushL( avaiableLanuage ); - aEngine->GetAvailableLanguagesL( avaiableLanuage ); - avaiableLanuage.Sort(); - - // Map language to language script utilizing TLanguageRelation - for ( TInt i = 0; i < aLanguageRelation.Count(); i++ ) - { - TInt languageScriptId = aLanguageRelation[i].LanguageScriptId(); - if ( aSupportedScript.Find( languageScriptId ) == KErrNotFound ) - { - TInt languageCode = aLanguageRelation[i].LanguageCode(); - if ( avaiableLanuage.FindInOrder( languageCode ) != KErrNotFound ) - { - // Add language to aSupportedScript - aSupportedScript.Append( languageScriptId ); - } - } - } - - CleanupStack::PopAndDestroy( &avaiableLanuage ); - } - -// --------------------------------------------------------------------------- -// Initialize the supported language script. -// --------------------------------------------------------------------------- -// -TInt CTruiEngine::GetActiveLanguageScript( TInt aLanguageCode, - const RArray& aLanguageRelation ) - { - for ( TInt i = 0; i < aLanguageRelation.Count(); i++ ) - { - if ( aLanguageCode == aLanguageRelation[i].LanguageCode() ) - { - return aLanguageRelation[i].LanguageScriptId(); - } - } - return KErrNotFound; - } - -// --------------------------------------------------------------------------- -// Get the resourc id of lower case of Cyrillic -// according to the current input language. -// --------------------------------------------------------------------------- -// -TInt CTruiEngine::CyrillicLowerResourceId( TLanguage aLanguage ) - { - if ( aLanguage == ELangBulgarian ) - { - return R_TRUI_CHARACTERSET_CYRILLIC_LOWERLETTERS_BULGARIAN; - } - else if ( aLanguage == ELangRussian ) - { - return R_TRUI_CHARACTERSET_CYRILLIC_LOWERLETTERS_RUSSIAN; - } - else if ( aLanguage == ELangUkrainian ) - { - return R_TRUI_CHARACTERSET_CYRILLIC_LOWERLETTERS_UKRAINE; - } - else - { - return R_TRUI_CHARACTERSET_CYRILLIC_LOWERLETTERS; - } - } - -// --------------------------------------------------------------------------- -// Get the resourc id of upper case of Cyrillic -// according to the current input language. -// --------------------------------------------------------------------------- -// -TInt CTruiEngine::CyrillicUpperResourceId( TLanguage aLanguage ) - { - if ( aLanguage == ELangBulgarian ) - { - return R_TRUI_CHARACTERSET_CYRILLIC_UPPERLETTERS_BULGARIAN; - } - else if ( aLanguage == ELangRussian ) - { - return R_TRUI_CHARACTERSET_CYRILLIC_UPPERLETTERS_RUSSIAN; - } - else if ( aLanguage == ELangUkrainian ) - { - return R_TRUI_CHARACTERSET_CYRILLIC_UPPERLETTERS_UKRAINE; - } - else - { - return R_TRUI_CHARACTERSET_CYRILLIC_UPPERLETTERS; - } - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truihwrbox.cpp --- a/textinput/peninputhwrtrui/src/truihwrbox.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1374 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiHwrBox -* -*/ - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "truihwrbox.h" -#include "truihwrboxobserver.h" -#include "truiappui.h" -#include "truiappui.h" -#include "truiengine.h" - -#ifdef __WINS__ -static const TInt KWritePeriod = 1500000; -#else -static const TInt KWritePeriod = 1000000; -#endif - -#ifdef __WINS__ -static const TInt KDrawSpeed = 30000; -#else -static const TInt KDrawSpeed = 30000; -#endif - -const TInt KFirstPoint = -1; -const TSize KGuideLinePenSize = TSize( 1, 1 ); -const TSize KLinePenSize = TSize( 4, 4 ); -const TInt KFirstEventDelay = 0; - -_LIT( KTRUIICONSFILENAME, "\\resource\\apps\\trui_icons.mif" ); - -const TInt KTopGuideLineIndex = 0; -const TInt KBottomGuideLineIndex = 1; - -const TInt KGuideLineWidthRadio = 10; - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CTruiHwrBox* CTruiHwrBox::NewL( CCoeControl* aParent, - MTruiHwrBoxObserver* aHwrBoxObserver, - MAknsControlContext* aBgContext ) - { - CTruiHwrBox* self = CTruiHwrBox::NewLC( aParent, aHwrBoxObserver, - aBgContext ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CTruiHwrBox* CTruiHwrBox::NewLC( CCoeControl* aParent, - MTruiHwrBoxObserver* aHwrBoxObserver, - MAknsControlContext* aBgContex ) - { - CTruiHwrBox* self = new ( ELeave ) CTruiHwrBox(); - CleanupStack::PushL( self ); - self->ConstructL( aParent, aHwrBoxObserver, - aBgContex ); - return self; - } - -// ----------------------------------------------------------------------------- -// CTruiHwrBox::CTruiHwrBox() -// C++ default constructor can NOT contain any code, that might leave. -// ----------------------------------------------------------------------------- -// -CTruiHwrBox::CTruiHwrBox() - { - // No implementation required - } - -// ----------------------------------------------------------------------------- -// CTruiHwrBox::ConstructL() -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CTruiHwrBox::ConstructL( CCoeControl* aParent, - MTruiHwrBoxObserver* aHwrBoxObserver, - MAknsControlContext* aBgContext ) - { - if ( aParent ) - { - SetContainerWindowL( *aParent ); - } - else - { - CreateWindowL(); - } - - SetHwrBoxObserver( aHwrBoxObserver ); - - // Create tooltip - iTooltip = CAknInfoPopupNoteController::NewL(); - iTooltip->SetTooltipModeL( ETrue ); - iTooltip->AddObserverL( *this ); - - iBoxState = ENewModelStop; - iTimeToSave = CPeriodic::NewL( CActive::EPriorityHigh ); // neutral priority - iTimeToDrawNext = CPeriodic::NewL( CActive::EPriorityStandard ); // neutral priority - - iPointArrayDraw.Reset(); - iPointArrayModel.Reset(); - - LoadBorderBitmapsL(); - LoadShadowBitmapsL(); - LoadGuideLineBitmapsL(); - - EnableDragEvents(); - - iBgContext = static_cast( aBgContext ); - - } - -// ----------------------------------------------------------------------------- -// CTruiHwrBox::~CTruiHwrBox() -// Destructor. -// ----------------------------------------------------------------------------- -// -CTruiHwrBox::~CTruiHwrBox() - { - if ( iTooltip ) - { - iTooltip->RemoveObserver( *this ); - } - HideInfoPopupNote(); - - // Cancel and delete timer. - if ( iTimeToSave ) - { - iTimeToSave->Cancel(); - delete iTimeToSave; - } - - if ( iTimeToDrawNext ) - { - iTimeToDrawNext->Cancel(); - delete iTimeToDrawNext; - } - - iPointArrayDraw.Close(); - iPointArrayModel.Close(); - delete iTooltip; - - iBorderBitmaps.ResetAndDestroy(); - iBorderBitmapMasks.ResetAndDestroy(); - iBorderLayout.Close(); - - iShadowBitmaps.ResetAndDestroy(); - iShadowBitmapMasks.ResetAndDestroy(); - iShadowLayout.Close(); - - iGuideLineBitmaps.ResetAndDestroy(); - iGuideLineBitmapMasks.ResetAndDestroy(); - iGuideLineLayout.Close(); - } - -// ----------------------------------------------------------------------------- -// Draws control to given area -// ----------------------------------------------------------------------------- -// -void CTruiHwrBox::Draw( const TRect& /*aRect*/ ) const - { - // Get the standard graphics context - CWindowGc& gc = SystemGc(); - - // Set context - PrepareContext( gc ); - - // Gets the control's extent - TRect rect = Rect(); - if ( iBgContext ) - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - if ( !AknsDrawUtils::Background( skin, iBgContext, - gc, rect ) ) - { - gc.Clear( rect ); - } - } - - if ( iFlag & EFrameHwrBox == EFrameHwrBox ) - { - // Draw border - DrawBorders( gc ); - // Draw shawdow - DrawShadows( gc ); - } - - // Get repository - CRepository* repository = NULL; - TRAPD( err, repository = CRepository::NewL( KCRUidPersonalizationSettings ) ); - if ( err == KErrNone ) - { - TInt guideLine; - repository->Get( KSettingsPenInputGuideLine, guideLine ); - delete repository; - repository = NULL; - // Draw guideline - if ( guideLine ) - { - // Draw guidelines - DrawGuideLines( gc ); - } - } - // Draw work area - gc.SetPenSize( KLinePenSize ); - DrawTrails( gc ); - } - -TInt CTruiHwrBox::TimeToSaveL( TAny* aObject ) - { - ( (CTruiHwrBox*)aObject )->SaveModelL(); // cast, and call non-static function - return KErrNone; - } - -TInt CTruiHwrBox::TimeToDrawNextL( TAny* aObject ) - { - ( (CTruiHwrBox*)aObject )->DrawNextL(); // cast, and call non-static function - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CTruiHwrBox::TimedOut() -// Timer control, called everytime the time times out. -// ----------------------------------------------------------------------------- -// -void CTruiHwrBox::SaveModelL() - { - if ( iBoxState == ENewModelDraw ) - { - // Restore all screen to invalid region. - Window().Invalidate(); - //Cancel the timer - iTimeToSave->Cancel(); - iBoxState = EExistModelStop; - SetPointerCapture( EFalse ); - iPointArrayModel.Reset(); - for ( TInt i=0; i 0 ) - { - if ( iHwrBoxObserver ) - { - iHwrBoxObserver->SaveNewModelL(); - } - } - else - { - ClearExistModel(); - } - iStartSave = EFalse; - } - } - -// ----------------------------------------------------------------------------- -// Compare the numbers of points of two arrays at first. if they are not same, -// add a new point from iPointArrayModel to iPointArrayDraw. then draw a new line -// ----------------------------------------------------------------------------- -// -void CTruiHwrBox::DrawNextL() - { - // Check HwrBox state at first and then Check if model is drawn acompletely - if ( iBoxState == EExistModelDraw && - iPointArrayModel.Count() > iPointArrayDraw.Count() ) - { - // Add new point to iPointArrayDraw - iPointArrayDraw.AppendL( iPointArrayModel[ iPointArrayDraw.Count() ] ); - // Update the screen - DrawModel(); - } - else - { - iBoxState = EExistModelStop; - iTimeToDrawNext->Cancel(); - Window().Invalidate(); - } - } - -// --------------------------------------------------------------------------- -// Draw an existing model -// --------------------------------------------------------------------------- -// -void CTruiHwrBox::PlayAnimation( TBool aIsScale, const TSize& aRefSize ) - { - if ( ( iBoxState == EExistModelStop || iBoxState == EExistModelDraw ) - && iPointArrayModel.Count() ) - { - // Check and scale model points - if ( aIsScale ) - { - // Scale model points - ScaleModel( aRefSize, Rect().Size(), iPointArrayModel ); - } - - //Cancel the timer at first - iTimeToDrawNext->Cancel(); - - //Clear the box - iPointArrayDraw.Reset(); - if ( Parent() ) - { - Parent()->DrawNow(); - } - - //Set index of point need to be drawn to the beginning - iLastAnimatedPoint = KFirstPoint; - - //Set animate timer - iTimeToDrawNext->Start( KFirstEventDelay, KDrawSpeed, TCallBack( TimeToDrawNextL, this ) ); - - //Change box state - iBoxState = EExistModelDraw; - } - } - -// --------------------------------------------------------------------------- -// Clear the existing model -// --------------------------------------------------------------------------- -// -void CTruiHwrBox::ClearExistModel() - { - switch ( iBoxState ) - { - case EExistModelDraw: - { - //animation is playing, cancel the timer before clear it - iTimeToDrawNext->Cancel(); - break; - } - case ENewModelDraw: - { - //new model is inputting, cancel the timer before clear it - iTimeToSave->Cancel(); - iStartSave = EFalse; - break; - } - case EExistModelStop: - case ENewModelStop: - default: - { - } - } - iPointArrayModel.Reset(); - iPointArrayDraw.Reset(); - iBoxState = ENewModelStop; - Window().Invalidate(); - } - -// --------------------------------------------------------------------------- -// Handles an event from an observed control. -// --------------------------------------------------------------------------- -// -void CTruiHwrBox::HandlePointerEventL( const TPointerEvent& aPointerEvent ) - { - if ( iFlag & EReadOnlyHwrBox ) - { - // Readonly, don't handle pointer event. - return; - } - - CCoeControl::HandlePointerEventL( aPointerEvent ); - if ( AknLayoutUtils::PenEnabled() ) - { - switch( aPointerEvent.iType ) - { - case TPointerEvent::EButton1Down: - { - Window().Invalidate(); - if ( IsContained( aPointerEvent.iPosition ) ) - { - HideInfoPopupNote(); - iPenInRect = ETrue; - if ( iBoxState == ENewModelStop ) - { - //change box state - iBoxState = ENewModelDraw; - SetPointerCapture( ETrue ); - //start from the point where button is down - iPointArrayDraw.Append( aPointerEvent.iPosition - Position() ); - iLastAnimatedPoint = KFirstPoint; - DrawModel(); - } - else if ( iBoxState == ENewModelDraw ) - { - //cancel the iTimeToSave - iTimeToSave->Cancel(); - iStartSave = EFalse; - //start from the point where button is down - iPointArrayDraw.Append( aPointerEvent.iPosition - Position() ); - DrawModel(); - } - else - { - if ( iHwrBoxObserver ) - { - iHwrBoxObserver->HandleEventL( MTruiHwrBoxObserver::EModelExist ); - } - } - } - else - { - iPenInRect = EFalse; - } - break; - } - case TPointerEvent::EButton1Up: - { - if ( iBoxState == ENewModelDraw ) - { - iPointArrayDraw.Append( KTail ); - if ( !iStartSave ) - { - iStartSave = ETrue; - iTimeToSave->Start( KWritePeriod, - KWritePeriod, - TCallBack( TimeToSaveL, this ) ); - } - } - break; - } - case TPointerEvent::EDrag: - case TPointerEvent::EMove: - { - if ( iBoxState == ENewModelDraw ) - { - if ( IsContained( aPointerEvent.iPosition ) ) - { - Window().Invalidate(); - HideInfoPopupNote(); - //Pen go into available rect again, start an new trace - if ( iPenInRect == EFalse ) - { - iTimeToSave->Cancel(); - iStartSave = EFalse; - } - iPointArrayDraw.Append( aPointerEvent.iPosition - Position() ); - DrawModel(); - iPenInRect = ETrue; - } - else - { - if ( iPenInRect ) - { - iPointArrayDraw.Append( KTail ); - if ( !iStartSave ) - { - iStartSave = ETrue; - iTimeToSave->Start( KWritePeriod, - KWritePeriod, - TCallBack( TimeToSaveL, - this ) ); - } - iPenInRect = EFalse; - } - } - } - break; - } - default: - break; - } - } - } - -// --------------------------------------------------------------------------- -// Handles an event from an observed control. -// --------------------------------------------------------------------------- -// -TKeyResponse CTruiHwrBox::OfferKeyEventL( const TKeyEvent& /*aKeyEvent*/, - TEventCode /*aType*/ ) - { - return EKeyWasConsumed; - } - -// -------------------------------------------------------------------------- -// CTruiHwrBox::SetHwrBoxObserver -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::SetHwrBoxObserver( MTruiHwrBoxObserver* aHwrBoxObserver ) - { - iHwrBoxObserver = aHwrBoxObserver; - } - -// -------------------------------------------------------------------------- -// Get the HwrBox's model. -// -------------------------------------------------------------------------- -// -RArray& CTruiHwrBox::Model() - { - return iPointArrayModel; - } - -// -------------------------------------------------------------------------- -// Draw character model -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::DrawModel() - { - if ( IsActivated() && iPointArrayDraw.Count() && - iLastAnimatedPoint + 1 < iPointArrayDraw.Count() ) - { - // Get system graphic content - CWindowGc& gc = SystemGc(); - RWindow& window = Window(); - gc.Activate( window ); - window.Invalidate( Rect() ); - window.BeginRedraw( Rect() ); - Draw( Rect() ); - window.EndRedraw(); - gc.Deactivate(); - } - } - -// --------------------------------------------------------------------------- -// Responds to changes to the size and position of the contents of this control. -// --------------------------------------------------------------------------- -// -void CTruiHwrBox::SizeChanged() - { - LoadBorderLayout( 0 ); - for ( TInt i = 0; i < iBorderLayout.Count() - && i < iBorderBitmaps.Count() - && i < iBorderBitmapMasks.Count(); i++ ) - { - TSize size = iBorderLayout[i].Rect().Size(); - AknIconUtils::SetSize( iBorderBitmaps[i], size, EAspectRatioNotPreserved ); - AknIconUtils::SetSize( iBorderBitmapMasks[i], size, EAspectRatioNotPreserved ); - } - - LoadShadowLayout( 0 ); - for ( TInt i = 0; i < iShadowLayout.Count() - && i < iShadowBitmaps.Count() - && i < iShadowBitmapMasks.Count(); i++ ) - { - TSize size = iShadowLayout[i].Rect().Size(); - AknIconUtils::SetSize( iShadowBitmaps[i], size, EAspectRatioNotPreserved ); - AknIconUtils::SetSize( iShadowBitmapMasks[i], size, EAspectRatioNotPreserved ); - } - - LoadGuideLineLayout( 0 ); - // Guide line position - TInt margin = Size().iWidth / KGuideLineWidthRadio; - - iGuideLineBottomL.iX = Position().iX + margin; - iGuideLineTopL.iX = Position().iX + margin; - - for ( TInt i = 0; i < iGuideLineLayout.Count() - && i < iGuideLineBitmaps.Count() - && i < iGuideLineBitmapMasks.Count(); i++ ) - { - TSize size = iGuideLineLayout[i].Rect().Size(); - size.iWidth = Size().iWidth - margin * 2; - AknIconUtils::SetSize( iGuideLineBitmaps[i], size, EAspectRatioNotPreserved ); - AknIconUtils::SetSize( iGuideLineBitmapMasks[i], size, EAspectRatioNotPreserved ); - } - - // Caculate hwr_training_write_pane_g7 for drawable rect - TRect rect = Rect(); - TAknWindowComponentLayout drawable_rect_layout = - AknLayoutScalable_Apps::hwr_training_write_pane_g7( 0 ); - TAknLayoutRect drawable_rect_layout_rect; - drawable_rect_layout_rect.LayoutRect( rect, drawable_rect_layout ); - iDrawabelRect = drawable_rect_layout_rect.Rect(); - iDrawabelRect.Shrink( KLinePenSize.iWidth , - KLinePenSize.iHeight ); - iPenColor = drawable_rect_layout_rect.Color(); - - TInt guidinglinetop(0); - TInt guidinglinebottom(0); - CTruiEngine* engine = static_cast( iEikonEnv->AppUi() )->HwrEngine(); - engine->GetGuidingLinePos( iDrawabelRect.Size(), guidinglinetop, guidinglinebottom ); - SetGuidingLine( guidinglinetop, guidinglinebottom ); - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Handles a change to the control's resources. -// --------------------------------------------------------------------------- -// -void CTruiHwrBox::HandleResourceChange( TInt aType ) - { - CCoeControl::HandleResourceChange( aType ); - if ( aType == KEikMessageUnfadeWindows ) - { - DrawDeferred(); - } - if ( aType == KAknsMessageSkinChange ) - { - TRAP_IGNORE( - LoadBorderBitmapsL(); - LoadShadowBitmapsL(); - LoadGuideLineBitmapsL(); - ) - SizeChanged(); - } - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Handle focus changed. -// --------------------------------------------------------------------------- -// -void CTruiHwrBox::FocusChanged( TDrawNow /*aDrawNow*/ ) - { - if ( !IsFocused() && iBoxState == ENewModelDraw ) - { - iPointArrayDraw.Append( KTail ); - TRAP_IGNORE( SaveModelL() ); - } - } - -// --------------------------------------------------------------------------- -// When load model from outside, set box state -// --------------------------------------------------------------------------- -// -void CTruiHwrBox::ModelIsReady( TBool aReady ) - { - if ( aReady ) - { - iBoxState = EExistModelStop; - } - else - { - iBoxState = ENewModelStop; - } - } - -TRect CTruiHwrBox::DrawableRect() const - { - return iDrawabelRect; - } - -// --------------------------------------------------------------------------- -// Set editing mode to readonly or writable -// --------------------------------------------------------------------------- -// -void CTruiHwrBox::SetHwrBoxReadOnly( TBool aReadOnly ) - { - TUint flag = aReadOnly ? EReadOnlyHwrBox : EWritableHwrBox; - iFlag &= ( ~EReadOnlyHwrBox & ~EWritableHwrBox ); - iFlag |= flag; - } - -// --------------------------------------------------------------------------- -// Get the Hwrbox's state -// --------------------------------------------------------------------------- -// -TInt CTruiHwrBox::BoxState() const - { - return iBoxState; - } - -// --------------------------------------------------------------------------- -// Pause the playing of animation -// --------------------------------------------------------------------------- -// -void CTruiHwrBox::PausePlaying() - { - if ( iBoxState == EExistModelDraw ) - { - iBoxState = EExistModelStop; - iTimeToDrawNext->Cancel(); - Window().Invalidate(); - } - } - -// --------------------------------------------------------------------------- -// Resume the playing of animation -// --------------------------------------------------------------------------- -// -void CTruiHwrBox::ResumePlaying() - { - // Check HwrBox state at first and then Check if model is drawn acompletely - if ( iBoxState == EExistModelStop && - iPointArrayModel.Count() > iPointArrayDraw.Count() ) - { - - //Cancel the timer at first - iTimeToDrawNext->Cancel(); - - //Set animate timer - iTimeToDrawNext->Start( KFirstEventDelay, KDrawSpeed, - TCallBack(TimeToDrawNextL, this) ); - - //Change box state - iBoxState = EExistModelDraw; - } - } - -// --------------------------------------------------------------------------- -// Set Guiding Line -// --------------------------------------------------------------------------- -// -TInt CTruiHwrBox::SetGuidingLine( TInt aTop, TInt aBottom ) - { - TRect rect = DrawableRect(); - if ( Size().iHeight <= aBottom || aBottom <= 0 - || Size().iHeight <= aTop || aTop <= 0 ) - { - return KErrArgument; - } - - iGuideLineTopL.iY = rect.iTl.iY + aTop; - iGuideLineBottomL.iY = rect.iTl.iY + aBottom; - return KErrNone; - } - -// --------------------------------------------------------------------------- -// Check if the point is contained in drawing area -// --------------------------------------------------------------------------- -// -TBool CTruiHwrBox::IsContained( const TPoint& aPoint ) const - { - return DrawableRect().Contains( aPoint ); - } - -// --------------------------------------------------------------------------- -// Adjust shortcut model's point to fit the popup hwr box. -// --------------------------------------------------------------------------- -// -void CTruiHwrBox::ScaleModel( const TSize& aOriginSize, - const TSize& aRealSize, - RArray& aModel ) - { - CTruiEngine* engine = static_cast( iEikonEnv->AppUi() )->HwrEngine(); - TInt originTop; - TInt originBottom; - engine->GetGuidingLinePos( aOriginSize, originTop, originBottom ); - TInt realTop; - TInt realBottom; - engine->GetGuidingLinePos( aRealSize, realTop, realBottom ); - for ( TInt i =0; i < aModel.Count(); i++ ) - { - if ( aModel[i] != KTail ) - { - aModel[i].iX = aModel[i].iX * realBottom / originBottom; - aModel[i].iY = aModel[i].iY * realBottom / originBottom; - } - } - } - -// ----------------------------------------------------------------------------- -// Draws all points. -// ----------------------------------------------------------------------------- -// -void CTruiHwrBox::DrawTrails( CWindowGc& aGc ) const - { - // Draw model - if ( iPointArrayDraw.Count() ) - { - //Draw from the first point in the array - TInt lastAnimatedPoint( 0 ); - TPoint relativePos; - if ( OwnsWindow() ) - { - relativePos = TPoint( 0, 0 ); - } - else - { - relativePos = Position(); - } - aGc.Plot( iPointArrayDraw[lastAnimatedPoint] + relativePos ); - - // Check if there is point need to be drawn - // Plus 1 to lastAnimatedPointIndex since zero implies the first point - // in the iLastAnimatedPoint - while ( lastAnimatedPoint + 1 < iPointArrayDraw.Count() ) - { - //Check if this is a new arc and increase the index counter - if ( iPointArrayDraw[lastAnimatedPoint++] != KTail ) - { - //It is not a new arc, then check if this is the end of an arc - if ( iPointArrayDraw[lastAnimatedPoint] != KTail ) - { - //It is not the end of an arc, so draw line - aGc.DrawLineTo( iPointArrayDraw[lastAnimatedPoint] - + relativePos ); - } - } - else - { - //It is a new arc, so move the pen to the new point - aGc.Plot( iPointArrayDraw[lastAnimatedPoint] - + relativePos ); - } - } - } - } - -// -------------------------------------------------------------------------- -// Set context for this control. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::PrepareContext( CWindowGc& aGc ) const - { - TRgb color; - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - // Set pen color to the color of test in main area - TInt error = AknsUtils::GetCachedColor( skin, - color, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG6 ); - if ( !error ) - { - aGc.SetPenColor( color ); - } - } - -// -------------------------------------------------------------------------- -// Load bitmaps for border. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::LoadBorderBitmapsL() - { - iBorderBitmaps.ResetAndDestroy(); - iBorderBitmapMasks.ResetAndDestroy(); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - CFbsBitmap* bitmapLeft; - CFbsBitmap* bitmapLeftMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepBgColour, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapLeft, - bitmapLeftMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_bg_colour, - EMbmTrui_iconsQgn_graf_fep_bg_colour_mask, - KRgbBlack - ); - iBorderBitmaps.Append( bitmapLeft ); - iBorderBitmapMasks.Append( bitmapLeftMask ); - - CFbsBitmap* bitmapTop; - CFbsBitmap* bitmapTopMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepBgColour, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapTop, - bitmapTopMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_bg_colour, - EMbmTrui_iconsQgn_graf_fep_bg_colour_mask, - KRgbBlack - ); - iBorderBitmaps.Append( bitmapTop ); - iBorderBitmapMasks.Append( bitmapTopMask ); - - CFbsBitmap* bitmapBottom; - CFbsBitmap* bitmapBottomMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepBgColour, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapBottom, - bitmapBottomMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_bg_colour, - EMbmTrui_iconsQgn_graf_fep_bg_colour_mask, - KRgbBlack - ); - iBorderBitmaps.Append( bitmapBottom ); - iBorderBitmapMasks.Append( bitmapBottomMask ); - - CFbsBitmap* bitmapRight; - CFbsBitmap* bitmapRightMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepBgColour, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapRight, - bitmapRightMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_bg_colour, - EMbmTrui_iconsQgn_graf_fep_bg_colour_mask, - KRgbBlack - ); - iBorderBitmaps.Append( bitmapRight ); - iBorderBitmapMasks.Append( bitmapRightMask ); - } - -// -------------------------------------------------------------------------- -// Load bitmaps for shadows. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::LoadShadowBitmapsL() - { - iShadowBitmaps.ResetAndDestroy(); - iShadowBitmapMasks.ResetAndDestroy(); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - CFbsBitmap* bitmapTl; - CFbsBitmap* bitmapTlMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepPopupShadowTl, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapTl, - bitmapTlMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_tl, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_tl_mask, - KRgbBlack - ); - iShadowBitmaps.Append( bitmapTl ); - iShadowBitmapMasks.Append( bitmapTlMask ); - - CFbsBitmap* bitmapT; - CFbsBitmap* bitmapTMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepPopupShadowT, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapT, - bitmapTMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_t, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_t_mask, - KRgbBlack - ); - iShadowBitmaps.Append( bitmapT ); - iShadowBitmapMasks.Append( bitmapTMask ); - - CFbsBitmap* bitmapTr; - CFbsBitmap* bitmapTrMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepPopupShadowTr, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapTr, - bitmapTrMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_tr, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_tr_mask, - KRgbBlack - ); - iShadowBitmaps.Append( bitmapTr ); - iShadowBitmapMasks.Append( bitmapTrMask ); - - CFbsBitmap* bitmapL; - CFbsBitmap* bitmapLMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepPopupShadowL, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapL, - bitmapLMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_l, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_l_mask, - KRgbBlack - ); - iShadowBitmaps.Append( bitmapL ); - iShadowBitmapMasks.Append( bitmapLMask ); - - CFbsBitmap* bitmapBl; - CFbsBitmap* bitmapBlMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepPopupShadowBl, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapBl, - bitmapBlMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_bl, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_bl_mask, - KRgbBlack - ); - iShadowBitmaps.Append( bitmapBl ); - iShadowBitmapMasks.Append( bitmapBlMask ); - - CFbsBitmap* bitmapR; - CFbsBitmap* bitmapRMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepPopupShadowR, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapR, - bitmapRMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_r, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_r_mask, - KRgbBlack - ); - iShadowBitmaps.Append( bitmapR ); - iShadowBitmapMasks.Append( bitmapRMask ); - - CFbsBitmap* bitmapB; - CFbsBitmap* bitmapBMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepPopupShadowB, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapB, - bitmapBMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_b, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_b_mask, - KRgbBlack - ); - iShadowBitmaps.Append( bitmapB ); - iShadowBitmapMasks.Append( bitmapBMask ); - - CFbsBitmap* bitmapBr; - CFbsBitmap* bitmapBrMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepPopupShadowBr, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapBr, - bitmapBrMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_br, - EMbmTrui_iconsQgn_graf_fep_popup_shadow_br_mask, - KRgbBlack - ); - iShadowBitmaps.Append( bitmapBr ); - iShadowBitmapMasks.Append( bitmapBrMask ); - } - -// -------------------------------------------------------------------------- -// Load bitmaps for guidelines. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::LoadGuideLineBitmapsL() - { - iGuideLineBitmaps.ResetAndDestroy(); - iGuideLineBitmapMasks.ResetAndDestroy(); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - CFbsBitmap* bitmapTop; - CFbsBitmap* bitmapTopMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepBgColour, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapTop, - bitmapTopMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_bg_colour, - EMbmTrui_iconsQgn_graf_fep_bg_colour_mask, - KRgbBlack - ); - iGuideLineBitmaps.Append( bitmapTop ); - iGuideLineBitmapMasks.Append( bitmapTopMask ); - - CFbsBitmap* bitmapBottom; - CFbsBitmap* bitmapBottomMask; - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnGrafFepBgColour, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG14, - bitmapBottom, - bitmapBottomMask, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_graf_fep_bg_colour, - EMbmTrui_iconsQgn_graf_fep_bg_colour_mask, - KRgbBlack - ); - iGuideLineBitmaps.Append( bitmapBottom ); - iGuideLineBitmapMasks.Append( bitmapBottomMask ); - } - -// -------------------------------------------------------------------------- -// Load layouts for borders from LAF. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::LoadBorderLayout( TInt aVarity ) - { - TRect rect = Rect(); - iBorderLayout.Reset(); - // Caculate hwr_training_write_pane_g1 - TAknWindowComponentLayout border_left_layout = - AknLayoutScalable_Apps::hwr_training_write_pane_g1( aVarity ); - TAknLayoutRect border_left_layout_rect; - border_left_layout_rect.LayoutRect( rect, border_left_layout ); - iBorderLayout.Append( border_left_layout_rect ); - - TAknWindowComponentLayout border_top_layout = - AknLayoutScalable_Apps::hwr_training_write_pane_g2( aVarity ); - TAknLayoutRect border_top_layout_rect; - border_top_layout_rect.LayoutRect( rect, border_top_layout ); - iBorderLayout.Append( border_top_layout_rect ); - - TAknWindowComponentLayout border_bottom_layout = - AknLayoutScalable_Apps::hwr_training_write_pane_g3( aVarity ); - TAknLayoutRect border_bottom_layout_rect; - border_bottom_layout_rect.LayoutRect( rect, border_bottom_layout ); - iBorderLayout.Append( border_bottom_layout_rect ); - - TAknWindowComponentLayout border_right_layout = - AknLayoutScalable_Apps::hwr_training_write_pane_g4( aVarity ); - TAknLayoutRect border_right_layout_rect; - border_right_layout_rect.LayoutRect( rect, border_right_layout ); - iBorderLayout.Append( border_right_layout_rect ); - } - -// -------------------------------------------------------------------------- -// Load layouts for shadows from LAF. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::LoadShadowLayout( TInt aVarity ) - { - TRect rect = Rect(); - iShadowLayout.Reset(); - // Caculate bg_frame_shadow_pane - TAknWindowComponentLayout shadow_pane_layout = - AknLayoutScalable_Apps::bg_frame_shadow_pane( aVarity ); - TAknLayoutRect shadow_pane_layout_rect; - shadow_pane_layout_rect.LayoutRect( rect, shadow_pane_layout ); - TRect shadowPaneRect = shadow_pane_layout_rect.Rect(); - - // Caculate bg_frame_shadow_pane_g1 - TAknWindowComponentLayout shadow_pane_tl_layout = - AknLayoutScalable_Apps::bg_frame_shadow_pane_g1( aVarity ); - TAknLayoutRect shadow_pane_tl_layout_rect; - shadow_pane_tl_layout_rect.LayoutRect( shadowPaneRect, shadow_pane_tl_layout ); - iShadowLayout.Append( shadow_pane_tl_layout_rect ); - - // Caculate bg_frame_shadow_pane_g2 - TAknWindowComponentLayout shadow_pane_t_layout = - AknLayoutScalable_Apps::bg_frame_shadow_pane_g2( aVarity ); - TAknLayoutRect shadow_pane_t_layout_rect; - shadow_pane_t_layout_rect.LayoutRect( shadowPaneRect, shadow_pane_t_layout ); - iShadowLayout.Append( shadow_pane_t_layout_rect ); - - // Caculate bg_frame_shadow_pane_g3 - TAknWindowComponentLayout shadow_pane_tr_layout = - AknLayoutScalable_Apps::bg_frame_shadow_pane_g3( aVarity ); - TAknLayoutRect shadow_pane_tr_layout_rect; - shadow_pane_tr_layout_rect.LayoutRect( shadowPaneRect, shadow_pane_tr_layout ); - iShadowLayout.Append( shadow_pane_tr_layout_rect ); - - // Caculate bg_frame_shadow_pane_g4 - TAknWindowComponentLayout shadow_pane_l_layout = - AknLayoutScalable_Apps::bg_frame_shadow_pane_g4( aVarity ); - TAknLayoutRect shadow_pane_l_layout_rect; - shadow_pane_l_layout_rect.LayoutRect( shadowPaneRect, shadow_pane_l_layout ); - iShadowLayout.Append( shadow_pane_l_layout_rect ); - - // Caculate bg_frame_shadow_pane_g5 - TAknWindowComponentLayout shadow_pane_bl_layout = - AknLayoutScalable_Apps::bg_frame_shadow_pane_g5( aVarity ); - TAknLayoutRect shadow_pane_bl_layout_rect; - shadow_pane_bl_layout_rect.LayoutRect( shadowPaneRect, shadow_pane_bl_layout ); - iShadowLayout.Append( shadow_pane_bl_layout_rect ); - - // Caculate bg_frame_shadow_pane_g6 - TAknWindowComponentLayout shadow_pane_r_layout = - AknLayoutScalable_Apps::bg_frame_shadow_pane_g6( aVarity ); - TAknLayoutRect shadow_pane_r_layout_rect; - shadow_pane_r_layout_rect.LayoutRect( shadowPaneRect, shadow_pane_r_layout ); - iShadowLayout.Append( shadow_pane_r_layout_rect ); - - // Caculate bg_frame_shadow_pane_g7 - TAknWindowComponentLayout shadow_pane_b_layout = - AknLayoutScalable_Apps::bg_frame_shadow_pane_g7( aVarity ); - TAknLayoutRect shadow_pane_b_layout_rect; - shadow_pane_b_layout_rect.LayoutRect( shadowPaneRect, shadow_pane_b_layout ); - iShadowLayout.Append( shadow_pane_b_layout_rect ); - - // Caculate bg_frame_shadow_pane_g8 - TAknWindowComponentLayout shadow_pane_br_layout = - AknLayoutScalable_Apps::bg_frame_shadow_pane_g8( aVarity ); - TAknLayoutRect shadow_pane_br_layout_rect; - shadow_pane_br_layout_rect.LayoutRect( shadowPaneRect, shadow_pane_br_layout ); - iShadowLayout.Append( shadow_pane_br_layout_rect ); - } - -// -------------------------------------------------------------------------- -// Load layouts for guidelines from LAF. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::LoadGuideLineLayout( TInt aVarity ) - { - TRect rect = Rect(); - iGuideLineLayout.Reset(); - // Caculate hwr_training_write_pane_g5 - TAknWindowComponentLayout top_guideline_layout = - AknLayoutScalable_Apps::hwr_training_write_pane_g5( aVarity ); - TAknLayoutRect top_guideline_layout_rect; - top_guideline_layout_rect.LayoutRect( rect, top_guideline_layout ); - iGuideLineLayout.Append( top_guideline_layout_rect ); - - // Caculate hwr_training_write_pane_g6 - TAknWindowComponentLayout bottom_guideline_layout = - AknLayoutScalable_Apps::hwr_training_write_pane_g6( aVarity ); - TAknLayoutRect bottom_guideline_layout_rect; - bottom_guideline_layout_rect.LayoutRect( rect, bottom_guideline_layout ); - iGuideLineLayout.Append( bottom_guideline_layout_rect ); - } - -// -------------------------------------------------------------------------- -// Draw borders. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::DrawBorders( CWindowGc& aGc ) const - { - for ( TInt i = 0; i < iBorderLayout.Count(); i++ ) - { - iBorderLayout[i].DrawImage( aGc, iBorderBitmaps[i], iBorderBitmapMasks[i] ); - } - } - -// -------------------------------------------------------------------------- -// Draw shadows. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::DrawShadows( CWindowGc& aGc ) const - { - for ( TInt i = 0; i < iShadowLayout.Count(); i++ ) - { - iShadowLayout[i].DrawImage( aGc, iShadowBitmaps[i], iShadowBitmapMasks[i] ); - } - } - -// -------------------------------------------------------------------------- -// Draw guidelines. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::DrawGuideLines( CWindowGc& aGc ) const - { - if ( iTopGuideLineDisplay && KTopGuideLineIndex < iGuideLineLayout.Count() - && KTopGuideLineIndex < iGuideLineBitmaps.Count() - && KTopGuideLineIndex < iGuideLineBitmapMasks.Count() ) - { - TSize pixSize = iGuideLineBitmaps[KTopGuideLineIndex]->SizeInPixels(); - aGc.BitBltMasked( iGuideLineTopL, iGuideLineBitmaps[KTopGuideLineIndex], - TRect( TPoint( 0, 0 ), pixSize ), - iGuideLineBitmapMasks[KTopGuideLineIndex], EFalse ); - } - - if ( iBottomGuideLineDisplay && KBottomGuideLineIndex < iGuideLineLayout.Count() - && KBottomGuideLineIndex < iGuideLineBitmaps.Count() - && KBottomGuideLineIndex < iGuideLineBitmapMasks.Count() ) - { - TSize pixSize = iGuideLineBitmaps[KBottomGuideLineIndex]->SizeInPixels(); - aGc.BitBltMasked( iGuideLineBottomL, iGuideLineBitmaps[KBottomGuideLineIndex], - TRect( TPoint( 0, 0 ), pixSize ), - iGuideLineBitmapMasks[KBottomGuideLineIndex], EFalse ); - } - } - -// ----------------------------------------------------------------------------- -// Show trails. -// ----------------------------------------------------------------------------- -// -void CTruiHwrBox::ShowTrails( const RArray& aPointArray, - TBool aIsScale, - const TSize& aRefSize ) - { - // Set values fo iPointArrayDraw - if ( aPointArray.Count() > 0 ) - { - iPointArrayDraw.Reset(); - for ( TInt i = 0; i < aPointArray.Count(); i++ ) - { - iPointArrayDraw.Append( aPointArray[i] ); - } - } - - // Adjust the trails in terms of HwrBox size - if ( aIsScale ) - { - // Scale model points - ScaleModel( aRefSize, iDrawabelRect.Size(), iPointArrayDraw ); - } - DrawNow(); - } - -// -------------------------------------------------------------------------- -// CTruiHwrBox::ShowTooltipL -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::ShowTooltipL( const TDesC& aText, - const TPoint& aPosition, - const TInt aBeforeTimeout, - const TInt aInViewTimeout ) - { - if ( aText.Length() < 0 ) - { - return; - } - iTooltip->SetTextL( aText ); - iTooltip->SetTimeDelayBeforeShow( aBeforeTimeout ); - iTooltip->SetTimePopupInView( aInViewTimeout ); - iTooltip->SetPositionAndAlignment( aPosition, EHCenterVTop ); - - iTooltip->ShowInfoPopupNote(); - } - -void CTruiHwrBox::SetTooltipPosition( const TPoint& aPosition ) - { - if ( iTooltip ) - { - iTooltip->SetPositionAndAlignment( aPosition, EHCenterVTop ); - } - } - -// -------------------------------------------------------------------------- -// Hide tooltip. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::HideInfoPopupNote() - { - if ( iTooltip ) - { - iTooltip->HideInfoPopupNote(); - } - } - -// -------------------------------------------------------------------------- -// Handles events reported from info popup note. -// -------------------------------------------------------------------------- -// -void CTruiHwrBox::HandleInfoPopupNoteEvent( CAknInfoPopupNoteController* aController, - TAknInfoPopupNoteEvent aEvent ) - { - if ( aController == iTooltip && aEvent == EInfoPopupNoteHidden ) - { - DrawNow(); - } - } - -// ----------------------------------------------------------------------------- -// Save the new inputting model by manual. -// ----------------------------------------------------------------------------- -// -void CTruiHwrBox::SaveModelByManuallyL() - { - if ( iPointArrayDraw.Count() && !iStartSave ) - { - // Has drawn - if ( iPointArrayDraw[iPointArrayDraw.Count() - 1] != KTail ) - { - iPointArrayDraw.Append( KTail ); - } - SaveModelL(); - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truiinfomessagecontainer.cpp --- a/textinput/peninputhwrtrui/src/truiinfomessagecontainer.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,316 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiInfoMessageContainer -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "truiinfomessagecontainer.h" -#include "truiappradiobutton.h" -#include "truiappui.h" -#include "truiengine.h" -#include "truicontainerbase.h" - -// Varity of instruct pane both for landscape and portrait -const TInt KVarityInstructPane = 4; - -// Varity of list pane both for landscape and portrait -const TInt KVarityListPane = 2; - -// Varity of symbol option pane both for landscape and portrait -const TInt KVaritySymbolOptionPane = 2; - -// Varity of list symbol option pane both for landscape and portrait -const TInt KVarityListSymbolOptionPane = 1; - - -// ======== MEMBER FUNCTIONS ======== - -CTruiInfoMessageContainer::CTruiInfoMessageContainer() - { - } - -void CTruiInfoMessageContainer::ConstructL( const TRect& aRect ) - { - // Initialize control array - InitComponentArrayL(); - - // Set parent control or owning window - CreateWindowL(); - - // Initialize controls - InitializeControlsL(); - - iLabelText = iEikonEnv->AllocReadResourceL( R_TRUI_INFOMAESSAGEVIEW_MESSAGE ); - iEdwin->SetTextL( iLabelText ); - - SetRect( aRect ); - ActivateL(); - - iBackGround = CAknsBasicBackgroundControlContext::NewL - ( KAknsIIDQsnBgAreaMain, Rect(), EFalse); - iEdwin->SetSkinBackgroundControlContextL( iBackGround ); - } - -CTruiInfoMessageContainer* CTruiInfoMessageContainer::NewL( const TRect& aRect ) - { - CTruiInfoMessageContainer* self = CTruiInfoMessageContainer::NewLC( aRect ); - CleanupStack::Pop( self ); - return self; - } - -CTruiInfoMessageContainer* CTruiInfoMessageContainer::NewLC( const TRect& aRect ) - { - CTruiInfoMessageContainer* self = new (ELeave) CTruiInfoMessageContainer(); - CleanupStack::PushL( self ); - self->ConstructL( aRect ); - return self; - } - -CTruiInfoMessageContainer::~CTruiInfoMessageContainer() - { - delete iBackGround; - delete iLabelText; - } - -// --------------------------------------------------------------------------- -// Do something before exit. -// --------------------------------------------------------------------------- -// -void CTruiInfoMessageContainer::PrepareToExitL() - { - // Save checkbox setting - const RArray& statusArray = - iRadioButtonContainer->StatusArray(); - TBool isDisplayed = statusArray.Count() && statusArray[0] ? EFalse : ETrue; - iEngine->SetDisplayWizard( isDisplayed ); - if ( statusArray.Count() ) - { - SaveSettingIntoIniFileL( KAlwaysDisplayWizardKey, statusArray[0] ); - } - } - -// --------------------------------------------------------------------------- -// Create controls to be displayed in this container. -// --------------------------------------------------------------------------- -// -void CTruiInfoMessageContainer::InitializeControlsL() - { - iRadioButtonContainer = CTruiRadioButton::NewL( this, - CTruiRadioButton:: ECheckBox ); - Components().AppendLC( iRadioButtonContainer ); - CleanupStack::Pop( iRadioButtonContainer ); - - HBufC* radioText1 = iEikonEnv->AllocReadResourceLC - ( R_TRUI_INFOMAESSAGEVIEW_CHECKBOX_TEXT ); - iRadioButtonContainer->AddItem( radioText1, CTruiRadioButton::ENonSelected ); - CleanupStack::Pop( radioText1 ); // transfered ownership - iRadioButtonContainer->HandleItemAdditionL(); - - iEdwin = new (ELeave) CEikEdwin; - iEdwin->ConstructL(); - iEdwin->SetReadOnly( ETrue ); - Components().AppendLC( iEdwin ); - CleanupStack::Pop( iEdwin ); - - } - -// --------------------------------------------------------------------------- -// Create label and display it in the container. -// --------------------------------------------------------------------------- -// -CEikLabel* CTruiInfoMessageContainer::CreateLabelL( const CCoeControl* aParent ) - { - CEikLabel* aknLabel = new (ELeave) CEikLabel(); - CleanupStack::PushL( aknLabel ); - aknLabel->SetContainerWindowL( *aParent ); - aknLabel->ActivateL(); - CleanupStack::Pop( aknLabel ); - return aknLabel; - } - - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Responds to changes to the size and position of the contents of this control. -// --------------------------------------------------------------------------- -// -void CTruiInfoMessageContainer::SizeChanged() - { - TRect rect = Rect(); - - TAknWindowComponentLayout main_pane_layout = - AknLayoutScalable_Apps::main_hwr_training_pane(); - TAknLayoutRect main_pane_layout_rect; - main_pane_layout_rect.LayoutRect( rect, main_pane_layout ); - TRect main_pane_rect = main_pane_layout_rect.Rect(); - - // hwr_training_instruct_pane - TAknWindowComponentLayout instruct_pane_layout = - AknLayoutScalable_Apps::hwr_training_instruct_pane( KVarityInstructPane ); - TAknLayoutRect instruct_pane_layout_rect; - instruct_pane_layout_rect.LayoutRect( main_pane_rect, instruct_pane_layout ); - iInstructPaneRect = instruct_pane_layout_rect.Rect(); - - // count of text rows - TInt count = AknLayoutScalable_Apps:: - list_single_hwr_training_instruct_pane_ParamLimits( KVarityListPane ) - .LastRow() + 1; - - // array contains all text rows in help screen - RArray textLayoutArray; - for( TInt i = 0; i < count; i++ ) - { - // pane area for each row - TAknWindowComponentLayout each_row_layout = - AknLayoutScalable_Apps::list_single_hwr_training_instruct_pane - ( KVarityListPane, 0, i ); - TAknLayoutRect each_row_layout_rect; - each_row_layout_rect.LayoutRect( iInstructPaneRect, - each_row_layout ); - // smaller pane for text itself - TAknTextComponentLayout each_row_text_layout = - AknLayoutScalable_Apps::list_single_hwr_training_instruct_pane_t1(); - - // composition of two latter componets - TAknTextComponentLayout textCompCompositionWiz = - TAknWindowComponentLayout::ComposeText( - each_row_layout, each_row_text_layout ); - - TRAPD( error, textLayoutArray.AppendL( textCompCompositionWiz ) ); - // if error in append function, then just exit the loop - if ( error != KErrNone ) - { - break; - } - } - iMultilineLayout = TAknTextComponentLayout::Multiline( textLayoutArray ); - textLayoutArray.Close(); - - // Do layout for edwin - AknLayoutUtils::LayoutEdwin( iEdwin, - iInstructPaneRect, - iMultilineLayout, - EAknsCIQsnTextColorsCG6 ); - - // Do layout for radio button - // hwr_training_instruct_pane - TAknWindowComponentLayout symbol_option_pane = - AknLayoutScalable_Apps::main_hwr_training_symbol_option_pane - ( KVaritySymbolOptionPane ); - TAknLayoutRect symbol_option_pane_layout_rect; - symbol_option_pane_layout_rect.LayoutRect( main_pane_rect, symbol_option_pane ); - - TAknWindowComponentLayout list_option_pane = - AknLayoutScalable_Apps::list_single_hwr_training_symbol_option_pane - ( KVarityListSymbolOptionPane ); - TAknLayoutRect list_option_pane_layout_rect; - list_option_pane_layout_rect.LayoutRect( symbol_option_pane_layout_rect.Rect(), - list_option_pane ); - // Create multiline text for radion button - // count of text rows - TInt radionLines = AknLayoutScalable_Apps:: - list_single_hwr_training_symbol_option_pane_ParamLimits - ( KVarityListSymbolOptionPane ) - .LastRow() + 1; - - // array contains all text rows in help screen - RArray radionTextLayoutArray; - for( TInt i = 0; i < radionLines; i++ ) - { - // pane area for each row - TAknWindowComponentLayout each_row_layout = - AknLayoutScalable_Apps::list_single_hwr_training_symbol_option_pane - ( KVarityListSymbolOptionPane, 0, i ); - TAknLayoutRect each_row_layout_rect; - each_row_layout_rect.LayoutRect( symbol_option_pane_layout_rect.Rect(), - each_row_layout ); - // smaller pane for text itself - TAknTextComponentLayout each_row_text_layout = - AknLayoutScalable_Apps::list_single_hwr_training_symbol_option_pane_t1(); - - // composition of two latter componets - TAknTextComponentLayout textCompCompositionWiz = - TAknWindowComponentLayout::ComposeText( - each_row_layout, each_row_text_layout ); - - TRAPD( error, radionTextLayoutArray.AppendL( textCompCompositionWiz ) ); - // if error in append function, then just exit the loop - if ( error != KErrNone ) - { - break; - } - } - TAknMultiLineTextLayout radioMultilineLayout - = TAknTextComponentLayout::Multiline( radionTextLayoutArray ); - radionTextLayoutArray.Close(); - iRadioButtonContainer->SetMultilineLayout( radioMultilineLayout ); - iRadioButtonContainer->SetRect( symbol_option_pane_layout_rect.Rect() ); - - if ( iBackGround ) - { - iBackGround->SetRect( Rect() ); - } - } - -// --------------------------------------------------------------------------- -// Draw. -// --------------------------------------------------------------------------- -// -void CTruiInfoMessageContainer::Draw( const TRect& /*aRect*/ ) const - { - // Get the standard graphics context - CWindowGc& gc = SystemGc(); - // Gets the control's extent - TRect rect( Rect()); - // Clears the screen - gc.Clear( rect ); - - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - if ( AknsDrawUtils::HasBitmapBackground( skin, iBackGround ) ) - { - AknsDrawUtils::Background( skin, iBackGround, gc, rect ); - } - } -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Handles a change to the control's resources. -// --------------------------------------------------------------------------- -// -void CTruiInfoMessageContainer::HandleResourceChange( TInt aType ) - { - CTruiContainerBase::HandleResourceChange( aType ); - if ( aType == KAknsMessageSkinChange ) - { - if ( iEdwin ) - { - // Do layout for edwin - AknLayoutUtils::LayoutEdwin( iEdwin, - iInstructPaneRect, - iMultilineLayout, - EAknsCIQsnTextColorsCG6 ); - } - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truiinfomessageview.cpp --- a/textinput/peninputhwrtrui/src/truiinfomessageview.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,135 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiShortcutEditTextView -* -*/ - - -#include -#include -#include -#include - -#include "truiinfomessageview.h" -#include "truiappui.h" -#include "truiinfomessagecontainer.h" -#include "truishortcutedittextview.h" -#include "truishortcutsview.h" -#include "truiengine.h" - -// ======== MEMBER FUNCTIONS ======== - -CTruiInfoMessageView::CTruiInfoMessageView() - { - } - -void CTruiInfoMessageView::ConstructL() - { - BaseConstructL( R_TRUI_INFOMESSAGEVIEW ); - } - -CTruiInfoMessageView* CTruiInfoMessageView::NewL() - { - CTruiInfoMessageView* self = CTruiInfoMessageView::NewLC(); - CleanupStack::Pop( self ); - return self; - } - -CTruiInfoMessageView* CTruiInfoMessageView::NewLC() - { - CTruiInfoMessageView* self = new( ELeave ) CTruiInfoMessageView; - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -CTruiInfoMessageView::~CTruiInfoMessageView() - { - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Returns views id. -// --------------------------------------------------------------------------- -// -TUid CTruiInfoMessageView::Id() const - { - return KTruiInfoMessageViewId; - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Command handling function. -// --------------------------------------------------------------------------- -// -void CTruiInfoMessageView::HandleCommandL( TInt aCommand ) - { - CTruiAppUi* appui = static_cast( AppUi() ); - switch ( aCommand ) - { - case EAknSoftkeyNext: - { - appui->HwrEngine()->SetShortcut( KNullDesC ); - iContainer->PrepareToExitL(); - appui->ActivateLocalViewL( KTruiShortcutEditTextViewId ); - break; - } - case EAknSoftkeyCancel: - { - appui->ActivateLocalViewL( KTruiShortcutsViewId ); - break; - } - } - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is activated -// --------------------------------------------------------------------------- -// -void CTruiInfoMessageView::DoActivateL( const TVwsViewId& /*aPrevViewId*/, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - CTruiAppUi* appui = static_cast( AppUi() ); - // Set title pane - HBufC* titleText = iEikonEnv->AllocReadResourceLC - ( R_TRUI_INFOMESSAGEVIEW_TITLEPANE_TEXT ); - appui->ShowTitlePaneL( *titleText ); - CleanupStack::PopAndDestroy( titleText ); - - // Close navi pane - appui->CloseNaviPaneL(); - - // Create container - iContainer = CTruiInfoMessageContainer::NewL( ClientRect() ); - iContainer->SetMopParent( this ); - iContainer->SetView( this ); - AppUi()->AddToStackL( *this, iContainer ); - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is deactivated -// --------------------------------------------------------------------------- -// -void CTruiInfoMessageView::DoDeactivate() - { - if ( iContainer ) - { - AppUi()->RemoveFromStack( iContainer ); - delete iContainer; - iContainer = NULL; - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truilanguagerelation.cpp --- a/textinput/peninputhwrtrui/src/truilanguagerelation.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class TLanguageRelation -* -*/ - - -#include "truilanguagerelation.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// construction -// --------------------------------------------------------------------------- -// -TLanguageRelation::TLanguageRelation( TInt aCode, TInt aLanguageScriptId ) - : iCode( aCode ), iLanguageScriptId( aLanguageScriptId ) - { - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truimainview.cpp --- a/textinput/peninputhwrtrui/src/truimainview.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,401 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiMainView -* -*/ - - -#include -#include -#include -#include -#include -#include - -#include "truimainview.h" -#include "truimainviewcontainer.h" -#include "trui.hrh" -#include "truiappui.h" -#include "truiengine.h" -#include "truishortcutsview.h" - -// ======== MEMBER FUNCTIONS ======== - -CTruiMainView::CTruiMainView() - { - } - -void CTruiMainView::ConstructL() - { - BaseConstructL( R_TRUI_MAINVIEW ); - } - -CTruiMainView* CTruiMainView::NewL() - { - CTruiMainView* self = CTruiMainView::NewLC(); - CleanupStack::Pop( self ); - return self; - } - -CTruiMainView* CTruiMainView::NewLC() - { - CTruiMainView* self = new( ELeave ) CTruiMainView; - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -CTruiMainView::~CTruiMainView() - { - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Returns views id. -// --------------------------------------------------------------------------- -// -TUid CTruiMainView::Id() const - { - return KTruiMainViewId; - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Command handling function. -// --------------------------------------------------------------------------- -// -void CTruiMainView::HandleCommandL( TInt aCommand ) - { - switch ( aCommand ) - { - case EMainViewCharGrid: - { - // Handle menu item command "Character Grid" - iContainer->HandleChooseCharEventL(); - } - break; - case EMainViewSubmenuWestern: - case EMainViewSubmenuCyrillic: - case EMainViewSubmenuGreek: - case EMainViewSubmenuHebrew: - { - iContainer->HandleLanguageScriptChangedL( aCommand ); - } - break; - case EMainViewSubmenuLatinLowerLetter: - case EMainViewSubmenuLatinUpperLetter: - case EMainViewSubmenuLatinAccent: - case EMainViewSubmenuDigital: - case EMainViewSubmenuSymbols: - case EMainViewSubmenuCyrillicLowerLetters: - case EMainViewSubmenuCyrillicUpperLetters: - case EMainViewSubmenuCyrillicAccent: - case EMainViewSubmenuGreekLowerLetters: - case EMainViewSubmenuGreekUpperLetters: - case EMainViewSubmenuHebrewLetters: - { - // Handle character range changed - // Get range index in menu pane by range Id - CTruiAppUi* appui = static_cast( AppUi() ); - CTruiEngine* engine = appui->HwrEngine(); - const RArray& rangeIdArray = - engine->GetCurrentSupportedRangesId(); - TInt indexOfMenuItems = rangeIdArray.Find( aCommand ); - if ( indexOfMenuItems != KErrNotFound ) - { - // Set current character range by index in Engine - engine->SetCharacterRangeByIndexL( indexOfMenuItems ); - - // Call iContainer->HandleCharRangeChanged to handle it. - iContainer->HandleCharRangeChangedL( indexOfMenuItems, - aCommand ); - } - } - break; - case EMainViewDeleteCurrentModel: - { - iContainer->DeleteModelL(); - } - break; - case EMainViewDeleteAllModel: - { - iContainer->DeleteAllModelL(); - break; - } - case EMainViewPreviewModel: - { - iContainer->PreviewCharacterModel(); - break; - } - case EMainViewToShortcutsView: - { - CTruiAppUi* appui = static_cast( AppUi() ); - CAknNavigationDecorator* naviDecorator = appui->GetNaviDecorator(); - CAknTabGroup* tabGroup = static_cast - ( naviDecorator->DecoratedControl() ); - tabGroup->SetActiveTabById( ENavigationPaneShortcutsViewTab ); - // Switch to local view. - appui->ActivateLocalViewL( KTruiShortcutsViewId ); - break; - } - case EAknSoftkeyExit: - { - iContainer->PrepareToExitL(); - AppUi()->HandleCommandL( aCommand ); - } - break; - default: - { - AppUi()->HandleCommandL( aCommand ); - } - } - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is activated -// --------------------------------------------------------------------------- -// -void CTruiMainView::DoActivateL( const TVwsViewId& /*aPrevViewId*/, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - // Set title pane - CTruiAppUi* appui = static_cast( AppUi() ); - HBufC* titleText = - iEikonEnv->AllocReadResourceLC( R_TRUI_MAINVIEW_TITLEPANE_TEXT ); - appui->ShowTitlePaneL( *titleText ); - CleanupStack::PopAndDestroy( titleText ); - - iContainer = CTruiMainViewContainer::NewL( ClientRect() ); - iContainer->SetMopParent( this ); - AppUi()->AddToStackL( *this, iContainer ); - iContainer->SetView( this ); - - // Set toolbar - CAknToolbar* toolbar = Toolbar(); - if ( toolbar ) - { - toolbar->SetToolbarObserver( this ); - toolbar->SetToolbarVisibility( ETrue, EFalse ); - } - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is deactivated -// --------------------------------------------------------------------------- -// -void CTruiMainView::DoDeactivate() - { - if ( iContainer ) - { - AppUi()->RemoveFromStack( iContainer ); - delete iContainer; - iContainer = NULL; - } - } - -// --------------------------------------------------------------------------- -// From class MAknToolbarObserver. -// Handles toolbar events for a certain toolbar item. -// --------------------------------------------------------------------------- -// -void CTruiMainView::OfferToolbarEventL( TInt aCommand ) - { - switch ( aCommand ) - { - case EMainViewButtonIdGrid: - { - // Open SCT - iContainer->HandleChooseCharEventL(); - break; - } - case EMainViewButtonIdPreview: - { - // Preview character animation - iContainer->PreviewCharacterModel(); - break; - } - case EMainViewButtonIdDelete: - { - // Clear HWR box and delete character model - iContainer->DeleteModelL(); - break; - } - } - } - -// --------------------------------------------------------------------------- -// Dynamically initialises a menu pane. -// --------------------------------------------------------------------------- -// -void CTruiMainView::DynInitMenuPaneL( TInt aResourceId, - CEikMenuPane* aMenuPane ) - { - // Get engine - CTruiAppUi* appui = static_cast( AppUi() ); - CTruiEngine* engine = appui->HwrEngine(); - - if ( aResourceId == R_TRUI_MAINVIEW_MENUPANE ) - { - // Get language script from engine - // Determine whether "Language script" will be displayed. - aMenuPane->SetItemDimmed( EMainViewLanguageScript, - ( engine->SupportedLanguageScript().Count() <= 1 ) ); - - // Determine whether "Delete model" will be displayed - iDimAllDelete = iContainer->IsAllDelete(); - - TBool isDimmed = ( iContainer->IsButtonDimmed() && iDimAllDelete ) - ? ETrue: EFalse; - aMenuPane->SetItemDimmed( EMainViewDeleteModel, isDimmed ); - - // Determine whether "Preview model" will be displayed. - TBool isPreviewDimmed = iContainer->IsButtonDimmed() ? ETrue: EFalse; - aMenuPane->SetItemDimmed( EMainViewPreviewModel, isPreviewDimmed ); - } - if ( aResourceId == R_TRUI_MAINVIEW_MENU_LANGUAGESCRIPT_CASCADE ) - { - // Set which items will be displayed by supported language script - const RArray& languageScriptId = - engine->SupportedLanguageScript(); - aMenuPane->SetItemDimmed( EMainViewSubmenuWestern, ETrue ); - aMenuPane->SetItemDimmed( EMainViewSubmenuCyrillic, ETrue ); - aMenuPane->SetItemDimmed( EMainViewSubmenuGreek, ETrue ); - aMenuPane->SetItemDimmed( EMainViewSubmenuHebrew, ETrue ); - for ( TInt i = 0; i < languageScriptId.Count(); i++ ) - { - aMenuPane->SetItemDimmed( languageScriptId[i], EFalse ); - } - - if ( IsMenuItemDimmed( aMenuPane, EMainViewSubmenuWestern ) ) - { - aMenuPane->DeleteMenuItem( EMainViewSubmenuWestern ); - } - if ( IsMenuItemDimmed( aMenuPane, EMainViewSubmenuCyrillic ) ) - { - aMenuPane->DeleteMenuItem( EMainViewSubmenuCyrillic ); - } - if ( IsMenuItemDimmed( aMenuPane, EMainViewSubmenuGreek ) ) - { - aMenuPane->DeleteMenuItem( EMainViewSubmenuGreek ); - } - if ( IsMenuItemDimmed( aMenuPane, EMainViewSubmenuHebrew ) ) - { - aMenuPane->DeleteMenuItem( EMainViewSubmenuHebrew ); - } - - // Set which item will be indicated by current language script - aMenuPane->SetItemButtonState( engine->CurrentLanguageScript(), - EEikMenuItemSymbolOn ); - - // Set current selected item - TInt pos; - aMenuPane->ItemAndPos( engine->CurrentLanguageScript(), pos ); - aMenuPane->SetSelectedItem( pos ); - } - if ( aResourceId == R_TRUI_MAINVIEW_MENU_CHARRANGE_CASCADE ) - { - // Get language script from model - // Init character range submenu - InitCharRangeSubMenuL( engine->CurrentLanguageScript(), aMenuPane ); - - if ( engine->CurrentLanguageScript() == EMainViewSubmenuCyrillic ) - { - // Dim cyrillic accent range - aMenuPane->SetItemDimmed( EMainViewSubmenuCyrillicAccent, ETrue ); - } - - // Get the current item's Id - TInt rangeId = engine->GetCurrentCharacterRange(); - - // Set which item to be indicated - aMenuPane->SetItemButtonState( rangeId, EEikMenuItemSymbolOn ); - - // Set which item to be highlighted - const RArray& rangeIdArray = - engine->GetCurrentSupportedRangesId(); - TInt indexOfMenuItems = rangeIdArray.Find( rangeId ); - if ( indexOfMenuItems != KErrNotFound ) - { - aMenuPane->SetSelectedItem( indexOfMenuItems ); - } - } - if ( aResourceId == R_TRUI_MAINVIEW_MENU_DELETE_CASCADE ) - { - aMenuPane->SetItemDimmed( EMainViewDeleteCurrentModel, - iContainer->IsButtonDimmed() ); - aMenuPane->SetItemDimmed( EMainViewDeleteAllModel, iDimAllDelete ); - } - } - -// --------------------------------------------------------------------------- -// Dynamically initialises the character range menu pane. -// --------------------------------------------------------------------------- -// -void CTruiMainView::InitCharRangeSubMenuL( TInt aScriptId, - CEikMenuPane* aMenuPane) - { - // Get the corrent reource ID of MENU_ITEMS by - TInt reourceId = MenuItemsReourceId( aScriptId ); - // Add these menu items into menu pane - aMenuPane->AddMenuItemsL( reourceId ); - } - -// --------------------------------------------------------------------------- -// Get reource ID of menu items for initializing menu pane. -// --------------------------------------------------------------------------- -// -TInt CTruiMainView::MenuItemsReourceId( TInt aScriptId ) - { - TInt reourceId; - switch ( aScriptId ) - { - case EMainViewSubmenuWestern: - { - reourceId = R_TRUI_MAINVIEW_SUBMENU_CHARRANGE_LATIN; - } - break; - case EMainViewSubmenuCyrillic: - { - reourceId = R_TRUI_MAINVIEW_SUBMENU_CHARRANGE_CYRILLIC; - } - break; - case EMainViewSubmenuGreek: - { - reourceId = R_TRUI_MAINVIEW_SUBMENU_CHARRANGE_GREEK; - } - break; - case EMainViewSubmenuHebrew: - { - reourceId = R_TRUI_MAINVIEW_SUBMENU_CHARRANGE_HEBREW; - } - break; - default: - reourceId = 0; - break; - } - return reourceId; - } - -// --------------------------------------------------------------------------- -// Check menu item dimmed by menu item id. -// --------------------------------------------------------------------------- -// -TBool CTruiMainView::IsMenuItemDimmed( CEikMenuPane* aMenuPane, TInt aMenuItemId ) - { - CEikMenuPaneItem::SData& itemdata = aMenuPane->ItemData( aMenuItemId ); - return ( itemdata.iFlags & EEikMenuItemDimmed == EEikMenuItemDimmed ); - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truimainviewcontainer.cpp --- a/textinput/peninputhwrtrui/src/truimainviewcontainer.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1333 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiMainViewContainer -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "truicontainerbase.h" -#include "truimainviewcontainer.h" -#include "truihwrbox.h" -#include "truiengine.h" -#include "truiappui.h" -#include "truiapplication.h" -#include "truihelp.h" -#include "trui.hrh" -#include "truimainview.h" - -// Max length of text in indicator -const TInt KIndicatorTextLen = 10; - -// Max length of text of silimar message -const TInt KSimilarMsgLength = 160; - -// Delay time of showing tooltip -const TInt KTooltipShowDelay = 0; - -// Delay time of hiding tooltip -const TInt KTooltipHideDelay = 3000; - -// Size for buffer to fill maximum characters from SCT. -const TInt KSctBufferSize = 32; - -const TInt KHwrTooltipY = 20; - -const TInt KVarityNaviPaneContents = 0; - -//the special gesture characters -_LIT(KDisplayBackspace, "\x2190"); -_LIT(KDisplaySpace, "\xF800"); -_LIT(KDisplayEnter, "\xF801"); - -// ======== MEMBER FUNCTIONS ======== - -CTruiMainViewContainer::CTruiMainViewContainer() - { - } - -void CTruiMainViewContainer::ConstructL( const TRect& aRect ) - { - // Initialize control array - InitComponentArrayL(); - - // Set parent control or owning window - CreateWindowL(); - - iBackGround = CAknsBasicBackgroundControlContext::NewL - ( KAknsIIDQsnBgAreaMain, - Rect(), - EFalse ); - - // Initialize controls - InitializeControlsL(); - - SetRect( aRect ); - - // Set first character of the character set as the default trained character - const HBufC* charSet = iEngine->CharacterSet(); - ASSERT( charSet ); - SetCurrentCharL( charSet->Mid( 0, 1 ) ); - - TInt currentRangeId = iEngine->GetCurrentCharacterRange(); - const RArray& rangeIdArray = - iEngine->GetCurrentSupportedRangesId(); - TInt indexOfMenuItems = rangeIdArray.Find( currentRangeId ); - if ( indexOfMenuItems != KErrNotFound ) - { - // Set choiclist' selected item to index. - iChoicelist->SetSelectedIndex( indexOfMenuItems ); - } - else - { - iChoicelist->SetSelectedIndex( 0 ); - } - - // Set hwrbox's rect to engine and set guiding line to hwrbox - iHwrBox->SetDisplayBottomGuideLine( ETrue ); - if ( iEngine->CurrentLanguageScript() == EMainViewSubmenuHebrew ) - { - iHwrBox->SetDisplayTopGuideLine( ETrue ); - } - - ActivateL(); - - } - -CTruiMainViewContainer* CTruiMainViewContainer::NewL( const TRect& aRect ) - { - CTruiMainViewContainer* self = CTruiMainViewContainer::NewLC( aRect ); - CleanupStack::Pop( self ); - return self; - } - -CTruiMainViewContainer* CTruiMainViewContainer::NewLC( const TRect& aRect ) - { - CTruiMainViewContainer* self = new (ELeave) CTruiMainViewContainer(); - CleanupStack::PushL( self ); - self->ConstructL( aRect ); - return self; - } - -CTruiMainViewContainer::~CTruiMainViewContainer() - { - if ( iBackGround ) - { - delete iBackGround; - } - delete iWrappedLabelText; - delete iLabeltext; - iLineWidthArray.Close(); - } - -// --------------------------------------------------------------------------- -// Create controls to be displayed in this container. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::InitializeControlsL() - { - CAknToolbar* toolbar = iAppUi->View( KTruiMainViewId )->Toolbar(); - // Get Clear button from toolbar - if ( toolbar ) - { - iClearBtn = static_cast - ( toolbar->ControlOrNull( EMainViewButtonIdDelete ) ); - iPreviewBtn = static_cast - ( toolbar->ControlOrNull( EMainViewButtonIdPreview ) ); - } - - // Create Label for text above writting box - iLabel = CreateLabelL( R_MAINVIEW_LABEL_TIP, this, NULL ); - Components().AppendLC( iLabel ); - CleanupStack::Pop( iLabel ); - - // Create left button - iLeftBtn = CreateButtonL( R_MAINVIEW_BUTTON_LEFT, this, this ); - Components().AppendLC( iLeftBtn ); - CleanupStack::Pop( iLeftBtn ); - - // Create indicator - iIindicator = CreateLabelL( R_MAINVIEW_LABEL_INDICATOR, this, this ); - Components().AppendLC( iIindicator ); - CleanupStack::Pop( iIindicator ); - - // Create right button - iRightBtn = CreateButtonL( R_MAINVIEW_BUTTON_RIGHT, this, this ); - Components().AppendLC( iRightBtn ); - CleanupStack::Pop( iRightBtn ); - - // Create choicelist - TInt buttonResource = ButtonResourceId - ( iEngine->GetCurrentCharacterRange() ); - CAknButton* rangeButton = CreateButtonL( buttonResource, - this, NULL ); - iCurChoiceListBtn = rangeButton; - CDesCArray* charRangeArray = iEngine->GetCharacterRangeName(); - CDesCArray* ownedCharRangeArray = new ( ELeave ) CDesCArrayFlat - ( charRangeArray->MdcaCount() ); - - CleanupStack::PushL( ownedCharRangeArray ); - for ( TInt i=0; iMdcaCount(); i++ ) - { - ownedCharRangeArray->AppendL( charRangeArray->MdcaPoint( i ) ); - } - iChoicelist = CreateChoiceListL( this, this, - ownedCharRangeArray,rangeButton ); - CleanupStack::Pop( ownedCharRangeArray ); - ownedCharRangeArray = NULL;// Ownership has been transfered to choicelist - Components().AppendLC( iChoicelist ); - CleanupStack::Pop( iChoicelist ); - - iHwrBox = CreateHwrBoxL( this, this ); - iHwrBox->SetHwrBoxFlag( CTruiHwrBox::EFrameHwrBox ); - Components().AppendLC( iHwrBox ); - CleanupStack::Pop( iHwrBox ); - } - -// --------------------------------------------------------------------------- -// Create label and display it in the container. -// --------------------------------------------------------------------------- -// -CEikLabel* CTruiMainViewContainer::CreateLabelL( const TInt aResourceId, - const CCoeControl* aParent, - MCoeControlObserver* aObserver ) - { - CEikLabel* aknLabel = new (ELeave) CEikLabel(); - CleanupStack::PushL( aknLabel ); - if ( aParent ) - { - aknLabel->SetContainerWindowL( *aParent ); - } - if ( aObserver ) - { - aknLabel->SetObserver( aObserver ); - } - if ( aResourceId != 0 ) - { - TResourceReader reader; - iEikonEnv->CreateResourceReaderLC( reader, aResourceId ); - aknLabel->ConstructFromResourceL( reader ); - CleanupStack::PopAndDestroy(); // reader - } - aknLabel->ActivateL(); - CleanupStack::Pop( aknLabel ); - return aknLabel; - } - -// --------------------------------------------------------------------------- -// Create choicelist and display it in the container. -// --------------------------------------------------------------------------- -// - CAknChoiceList* CTruiMainViewContainer::CreateChoiceListL - ( CCoeControl* aParent, - MCoeControlObserver* aObserver, - CDesCArray* aTextArray, - CAknButton* aButton ) - { - CAknChoiceList* choiceList = CAknChoiceList::NewLC( aParent, - aTextArray, - CAknChoiceList::EAknChoiceListWithoutCurrentSelection, - aButton ); - choiceList->SetObserver( aObserver ); - CleanupStack::Pop( choiceList ); - return choiceList; - } - -// --------------------------------------------------------------------------- -// Create HWRBox and display it in the container. -// --------------------------------------------------------------------------- -// -CTruiHwrBox* CTruiMainViewContainer::CreateHwrBoxL( CCoeControl* aParent, - MTruiHwrBoxObserver* aObserver ) - { - return CTruiHwrBox::NewL( aParent, aObserver, iBackGround ); - } - -// --------------------------------------------------------------------------- -// Responds to changes to the size and position of the contents of this control. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::SizeChanged() - { - TInt varity = Layout_Meta_Data::IsLandscapeOrientation() ? KLandscapeVarity - : KPortraitVarity; - DoSizeChanged( varity ); - - if ( iBackGround ) - { - iBackGround->SetRect( Rect() ); - } - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Handles key event. -// --------------------------------------------------------------------------- -// -TKeyResponse CTruiMainViewContainer::OfferKeyEventL - ( const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - if ( aType == EEventKey ) - { - switch ( aKeyEvent.iCode ) - { - case EKeyLeftArrow: - { - return EKeyWasConsumed; - } - case EKeyRightArrow: - { - CAknNavigationDecorator* naviDecorator = - iAppUi->GetNaviDecorator(); - CAknTabGroup* tabGroup = static_cast - ( naviDecorator->DecoratedControl() ); - return tabGroup->OfferKeyEventL( aKeyEvent, aType ); - } - default: - break; - } - } - return EKeyWasNotConsumed; - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// The region of the control to be redrawn. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::Draw( const TRect& /*aRect*/ ) const - { - // Get the standard graphics context - CWindowGc& gc = SystemGc(); - // Gets the control's extent - TRect rect( Rect() ); - // Clears the screen - gc.Clear( rect ); - - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - if ( AknsDrawUtils::HasBitmapBackground( skin, iBackGround ) ) - { - AknsDrawUtils::Background( skin, iBackGround, gc, rect ); - } - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Handles a change to the control's resources. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::HandleResourceChange( TInt aType ) - { - CTruiContainerBase::HandleResourceChange( aType ); - if ( aType == KEikDynamicLayoutVariantSwitch && iHwrBox ) - { - if ( iHwrBox->BoxState() == CTruiHwrBox::ENewModelDraw ) - { - TRAP_IGNORE( iHwrBox->SaveModelByManuallyL() ); - } - } - - if ( aType == KAknsMessageSkinChange ) - { - TRgb labelColor = KRgbBlack; - TInt error = GetCachedLabelTextColor( labelColor ); - if ( error == KErrNone ) - { - TRAPD( errLable, iLabel->OverrideColorL( EColorLabelText, - labelColor ) ); - if ( errLable != KErrNone ) - { - return; - } - TRAP_IGNORE( iIindicator->OverrideColorL( EColorLabelText, - labelColor ) ); - } - TRgb iconColor = KRgbBlack; - // Change left icon - iLeftBtn->State()->SetIcon( ConstructIconFromResourceL - ( R_MAINVIEW_BUTTON_LEFT ) ); - // Change right icon - iRightBtn->State()->SetIcon( ConstructIconFromResourceL - ( R_MAINVIEW_BUTTON_RIGHT ) ); - - // Change choicelist button - TInt rangeId = iEngine->GetCurrentCharacterRange(); - TInt buttonResoureId = ButtonResourceId( rangeId ); - iCurChoiceListBtn->State()->SetIcon( ConstructIconFromResourceL - ( buttonResoureId ) ); - } - } - -// --------------------------------------------------------------------------- -// Handles an event from an observed control. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::HandleControlEventL(CCoeControl* aControl, - TCoeEvent aEventType) - { - // Handle left button event - if ( aControl == iLeftBtn && aEventType == EEventStateChanged ) - { - //Get character set - const HBufC* charSet = iEngine->CharacterSet(); - ASSERT( charSet ); - //Locate current position - TInt charPos = charSet->Find( iCurrentChar ); - if ( charPos != KErrNotFound ) - { - //Move left - TInt length = charSet->Length(); - charPos = ( charPos - 1 + length ) % length; - SetCurrentCharL( charSet->Mid( charPos, 1 ) ); - } - } - // Handle indicator button event - else if ( aControl == iIindicator && aEventType == EEventRequestFocus ) - { - PreviewCharacterModel(); - } - // Handle right button event - else if ( aControl == iRightBtn && aEventType == EEventStateChanged ) - { - //Get character set - const HBufC* charSet = iEngine->CharacterSet(); - ASSERT( charSet ); - //Locate current position - TInt charPos = charSet->Find( iCurrentChar ); - if ( charPos != KErrNotFound ) - { - //Move left - TInt length = charSet->Length(); - charPos = ( charPos + 1 + length ) % length; - SetCurrentCharL( charSet->Mid( charPos, 1 ) ); - } - } - // Handle choicelist event - else if ( aControl == iChoicelist && aEventType == EEventStateChanged ) - { - // Handle character range changing event - // Get the selected index - TInt index = iChoicelist->SelectedIndex(); - - // Set current character range by index in Engine - iEngine->SetCharacterRangeByIndexL( index ); - - // Get the current character range Id - TInt rangeId = iEngine->GetCurrentCharacterRange(); - - // Handle character range changed - HandleCharRangeChangedL( index, rangeId ); - } - } - -// --------------------------------------------------------------------------- -// From class MTruiHWRBoxObserver. -// Responds to changes to the size and position of the contents of control. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::SaveNewModelL() - { - TBuf similarMsg; - TRAPD( err, iEngine->SetCharacterModelL( iCurrentChar, - iHwrBox->Model(), - similarMsg ) ); - switch ( err ) - { - case KErrNone: - { - //Dim clear button and preview button - if ( iClearBtn ) - { - iClearBtn->SetDimmed( EFalse ); - iClearBtn->DrawNow(); - } - if ( iPreviewBtn ) - { - iPreviewBtn->SetDimmed( EFalse ); - iPreviewBtn->DrawNow(); - } - TPoint hwrPos = iHwrBox->PositionRelativeToScreen(); - HBufC* tooltipText = - iEikonEnv->AllocReadResourceLC( R_TRUI_TOOLTIP_SAVED ); - iHwrBox->ShowTooltipL( *tooltipText, - hwrPos + TPoint( iHwrBox->Size().iWidth, KHwrTooltipY ), - KTooltipShowDelay, KTooltipHideDelay ); - CleanupStack::PopAndDestroy( tooltipText ); - break; - } - case KErrAlreadyExists: - { - //Clear invalid model - ClearCurrentModel(); - - // Transfer some special gesture chars into displayable chars. - AdjustDisplayChars( similarMsg ); - - //Popup err message - HBufC* errMsg = iEikonEnv->AllocReadResourceLC( R_TRUI_NOTE_SIMILAR_MODEL ); - HBufC* tooltipText = HBufC::NewLC( errMsg->Length() + similarMsg.Length() - + KExtraSize ); - TPtr tooltipTextPtr = tooltipText->Des(); - tooltipTextPtr.Format( *errMsg, &similarMsg ); - PopupInformationNoteL( *tooltipText ); - CleanupStack::PopAndDestroy( tooltipText ); - CleanupStack::PopAndDestroy( errMsg ); - break; - } - default: - { - //Clear invalid model - ClearCurrentModel(); - //Popup err message - HBufC* tooltipText = iEikonEnv->AllocReadResourceLC( R_TRUI_NOTE_SAVE_FAILED ); - PopupInformationNoteL( *tooltipText ); - CleanupStack::PopAndDestroy( tooltipText ); - break; - } - } - }; - -// --------------------------------------------------------------------------- -// From class MTruiHWRBoxObserver. -// Handle the message event from the HWRBox -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::HandleEventL( TMessageType aMessage ) - { - if ( aMessage == EModelExist ) - { - HBufC* tooltipText = - iEikonEnv->AllocReadResourceLC( R_TRUI_NOTE_CLEAR_BOX ); - PopupInformationNoteL( *tooltipText ); - CleanupStack::PopAndDestroy( tooltipText ); - } - } - -// --------------------------------------------------------------------------- -// Handles language script changed. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::HandleLanguageScriptChangedL( TInt aScriptId ) - { - CTruiEngine* engine = iAppUi->HwrEngine(); - const RArray& languageScriptId = engine->SupportedLanguageScript(); - TInt index = languageScriptId.Find( aScriptId ); - if ( index != KErrNotFound ) - { - // Set the language script - engine->SetLanguageScriptByIndexL( aScriptId ); - - // Copy language script names array - CDesCArray* rangeNames = engine->GetCharacterRangeName(); - CDesCArray* itemsInChoiceList = new (ELeave) CDesCArrayFlat - ( rangeNames->Count() ); - CleanupStack::PushL( itemsInChoiceList ); - for ( TInt i = 0; i < rangeNames->Count(); i++ ) - { - itemsInChoiceList->AppendL( ( *rangeNames )[i] ); - } - - // Set the items in choicelist - iChoicelist->SetItems( itemsInChoiceList ); // Transfered ownership - CleanupStack::Pop( itemsInChoiceList ); - - // Set hwrbox's rect to engine and set guiding line to hwrbox - TBool isDisplayTopGuideLine = ( iEngine->CurrentLanguageScript() - == EMainViewSubmenuHebrew ) ? ETrue : EFalse; - - iHwrBox->SetDisplayTopGuideLine( isDisplayTopGuideLine ); - - // Get the ative character range's ID. - TInt rangeId = engine->GetCurrentCharacterRange(); - // Handle char range changed with index 0 - HandleCharRangeChangedL( 0, rangeId ); - } - } - -// --------------------------------------------------------------------------- -// Handles character range changed. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::HandleCharRangeChangedL( TInt aIndex, - TInt aRangeId ) - { - // Get the button's resourceID by char range's ID - TInt buttonResoureId = ButtonResourceId( aRangeId ); - // Create new button with the reourceID - // and add it to the AknChoiceList - if ( buttonResoureId ) - { - CAknButton* rangeButton = CreateButtonL( buttonResoureId, - this, NULL ); - iCurChoiceListBtn = rangeButton; - CleanupStack::PushL( rangeButton ); - iChoicelist->SetButtonL( rangeButton ); - CleanupStack::Pop( rangeButton ); - iChoicelist->DrawNow(); - } - // Set choiclist' selected item to index. - iChoicelist->SetSelectedIndex( aIndex ); - - // Refresh the active char with the first char in the character set - const HBufC* charSet = iEngine->CharacterSet(); - ASSERT( charSet ); - SetCurrentCharL( charSet->Mid( 0, 1 ) ); - } - -// --------------------------------------------------------------------------- -// Handles choosing an active char from SCT. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::HandleChooseCharEventL() - { - TInt rangeId = - iAppUi->HwrEngine()->GetCurrentCharacterRange(); - - // Get character set id by character range id - TInt characterSetId = SctCharacterSetId( rangeId ); - - // Popup SCT dialog - TBuf selectedStr; - TInt buttonId = PopupSctDialogL( EAknSCTLowerCase, - selectedStr, - characterSetId ); - if ( buttonId != 0 && selectedStr.Length() > 0 ) - { - SetCurrentCharL( selectedStr.Mid( 0, 1 ) ); - } - } - -// --------------------------------------------------------------------------- -// Check if clear button has been dimmed. -// --------------------------------------------------------------------------- -// -TBool CTruiMainViewContainer::IsButtonDimmed() - { - return iClearBtn ? iClearBtn->IsDimmed() : EFalse; - } - -// --------------------------------------------------------------------------- -// Check if all delete button has been dimmed. -// --------------------------------------------------------------------------- -// -TBool CTruiMainViewContainer::IsAllDelete() - { - const HBufC* charSet = iEngine->CharacterSet(); - for ( TInt i = 0; i < charSet->Length(); i++ ) - { - if ( iEngine->CheckCharacterModel( charSet->Mid( i, 1 ) ) ) - { - return EFalse; - } - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// Return button's resourceId by Character Range Id. -// Use this resoueceId to create the correct button. -// --------------------------------------------------------------------------- -// -TInt CTruiMainViewContainer::ButtonResourceId( TInt aRangeId ) const - { - TInt resoureId; - switch ( aRangeId ) - { - case ELatinLowerLetters: - { - resoureId = R_MAINVIEW_BUTTON_CHARRANGE_LATIN_LOWER; - } - break; - case ELatinUpperLetters: - { - resoureId = R_MAINVIEW_BUTTON_CHARRANGE_LATIN_UPPER; - } - break; - case ELatinAccent: - { - resoureId = R_MAINVIEW_BUTTON_CHARRANGE_LATIN_ACCENT; - } - break; - case ELatinDigital: - { - resoureId = R_MAINVIEW_BUTTON_CHARRANGE_NUMERIC; - } - break; - case ELatinSymbol: - { - resoureId = R_MAINVIEW_BUTTON_CHARRANGE_SYMBOL; - } - break; - case ECyrillicLowerLetters: - { // - resoureId = R_MAINVIEW_BUTTON_CHARRANGE_CYRILLIC_LOWER; - } - break; - case ECyrillicUpperLetters: - { - resoureId = R_MAINVIEW_BUTTON_CHARRANGE_CYRILLIC_UPPER; - } - break; - case ECyrillicAccent: - { - resoureId = R_MAINVIEW_BUTTON_CHARRANGE_CYRILLIC_ACCENT; - } - break; - case EGreekLowerLetters: - { - resoureId = R_MAINVIEW_BUTTON_CHARRANGE_GREEK_LOWER; - } - break; - case EGreekUpperLetters: - { - resoureId = R_MAINVIEW_BUTTON_CHARRANGE_GREEK_UPPER; - } - break; - case EHebrewLetters: - { - resoureId = R_MAINVIEW_BUTTON_CHARRANGE_HEBREW_LETTERS; - } - break; - default: - { - resoureId = 0; - } - } - return resoureId; - } - -// --------------------------------------------------------------------------- -// Pop Sct dialog. -// --------------------------------------------------------------------------- -// -TInt CTruiMainViewContainer::PopupSctDialogL( TInt aCharCase, - TDes& aSpecialChars, - TInt aCharSetResourceId ) - { - CAknCharMapDialog* sct = new (ELeave) CAknCharMapDialog( aCharCase, - aSpecialChars, - aCharSetResourceId ); - TInt keyboardMode = CurrentKeyBoardModeL(); - if ( keyboardMode ) - { - // QWERTY: Lock numeric keys. - sct->LockNumericKeys( ETrue ); - } - else - { - // ITU-T: Unlock numeric keys. - sct->LockNumericKeys( EFalse ); - } - - sct->DisableRecentCharsRow(); - TInt retValue = sct->ExecuteLD( R_TRUI_SCT_DIALOG ); - return retValue; - } - -// --------------------------------------------------------------------------- -// Set current trained char -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::SetCurrentCharL( const TPtrC& aChar ) - { - //If previous char's model is not saved, save it before setting new char. - if ( iHwrBox->BoxState() == CTruiHwrBox::ENewModelDraw ) - { - //Call save function from hwrbox, - //in order to stop periodics in the hwrbox - iHwrBox->SaveModelByManuallyL(); - } - // In case of new localization not check-in, temporary - if ( iCurrentChar != aChar ) - { - //Set current char - iCurrentChar = aChar; - //Set Top Label's text - HBufC* teachCharacter = NULL; - teachCharacter = StringLoader::LoadLC - ( R_TRUI_MAINVIEW_TEXT_TEACH_CHARACTER, aChar ); - if ( !iLabeltext ) - { - delete iLabeltext; - iLabeltext = NULL; - iLabeltext = HBufC::NewL( teachCharacter->Length() + KExtraSize ); - } - TPtr labelOldPtr = iLabeltext->Des(); - if ( labelOldPtr.MaxLength() < teachCharacter->Length() ) - { - iLabeltext = iLabeltext->ReAlloc( teachCharacter->Length() + KExtraSize ); - } - TPtr labelTextPtr = iLabeltext->Des(); - labelTextPtr.Copy( *teachCharacter ); - CleanupStack::PopAndDestroy( teachCharacter ); - - delete iWrappedLabelText; - iWrappedLabelText = NULL; - iWrappedLabelText = HBufC::NewL( iLabeltext->Length() - + iLineWidthArray.Count() - + KExtraSize ); - // Be ready to show label - const CFont* font = AknLayoutUtils::FontFromId( iMultilineLayout.FontId() ); - TRAPD( err, WrapLabelTextL( font, *iLabeltext, iLineWidthArray, iWrappedLabelText ) ); - if ( err == KErrNone ) - { - iLabel->SetTextL( *iWrappedLabelText ); - } - else - { - iLabel->SetTextL( *iLabeltext ); - } - AknLayoutUtils::LayoutLabel( iLabel, - iLabelPaneRect, - iMultilineLayout ); - TRgb labelColor = KRgbBlack; - if ( GetCachedLabelTextColor( labelColor ) == KErrNone ) - { - iLabel->OverrideColorL( EColorLabelText, labelColor ); - } - - //Set Indicator's text - const HBufC* charIndicator = iEikonEnv->AllocReadResourceL - ( R_TRUI_MAINVIEW_ACTIVE_CHAR_INDICATOR ); - TBuf indicatortext; - indicatortext.Format( *charIndicator, &aChar ); - delete charIndicator; - charIndicator = NULL; - iIindicator->SetTextL( indicatortext ); - } - - iHwrBox->ClearExistModel(); - //Load existing model and dim clear button - if ( iEngine->CheckCharacterModel( iCurrentChar ) ) - { - //Get model from engine - TRAPD( err, iEngine->GetCharacterModelL( iCurrentChar, iHwrBox->Model() ) ); - if ( err == KErrNone ) - { - iHwrBox->ModelIsReady(); - //Activate clear button and preview button - if ( iClearBtn ) - { - iClearBtn->SetDimmed( EFalse ); - iClearBtn->DrawNow(); - } - if ( iPreviewBtn ) - { - iPreviewBtn->SetDimmed( EFalse ); - iPreviewBtn->DrawNow(); - } - } - //Preview - iHwrBox->PlayAnimation( EFalse ); - } - else - { - iHwrBox->ModelIsReady( EFalse ); - if ( iClearBtn ) - { - //Dim clear button and preview button - iClearBtn->SetDimmed( ETrue ); - iClearBtn->DrawNow(); - } - if ( iPreviewBtn ) - { - iPreviewBtn->SetDimmed( ETrue ); - iPreviewBtn->DrawNow(); - } - } - } - -// --------------------------------------------------------------------------- -// Preview character model -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::PreviewCharacterModel() - { - if ( iEngine->CheckCharacterModel( iCurrentChar ) ) - { - iHwrBox->PlayAnimation( EFalse ); - } - } - -// --------------------------------------------------------------------------- -// Clear current model -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::ClearCurrentModel() - { - if ( iClearBtn ) - { - iClearBtn->SetDimmed( ETrue ); - iClearBtn->DrawNow(); - } - if ( iPreviewBtn ) - { - iPreviewBtn->SetDimmed( ETrue ); - iPreviewBtn->DrawNow(); - } - iHwrBox->ClearExistModel(); - } - -// --------------------------------------------------------------------------- -// Popup information note -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::PopupInformationNoteL( const TDesC& aText ) - { - CAknInformationNote* note = new (ELeave) CAknInformationNote( ETrue ); - note->ExecuteLD( aText ); - } -// --------------------------------------------------------------------------- -// Adjust special behavior characters to displayable characters. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::AdjustDisplayChars( TDes& aResult ) - { - if ( aResult.Length() > 0 && aResult.Length() <= 1 ) - { - switch ( aResult[0] ) - { - case EKeyEnter: - { - aResult.Replace( 0, 1, KDisplayEnter ); - break; - } - case EKeySpace: - { - aResult.Replace( 0, 1, KDisplaySpace ); - break; - } - case EKeyBackspace: - { - aResult.Replace( 0, 1, KDisplayBackspace ); - break; - } - } - } - } - -// --------------------------------------------------------------------------- -// Delete model of the shortcut -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::DeleteModelL() - { - // Delete shortcut from engine - if ( iEngine->DeleteCharacterModel( *iIindicator->Text() ) - == KErrNone ) - { - ClearCurrentModel(); - - // Pop tooltip - HBufC* tooltipText = - iEikonEnv->AllocReadResourceLC( R_TRUI_TOOLTIP_DELETED ); - TPoint hwrPos = iHwrBox->PositionRelativeToScreen(); - iHwrBox->ShowTooltipL( *tooltipText, - hwrPos + TPoint( iHwrBox->Size().iWidth, KHwrTooltipY ), - KTooltipShowDelay, KTooltipHideDelay ); - CleanupStack::PopAndDestroy( tooltipText ); - } - } - -// --------------------------------------------------------------------------- -// Delete all models of current character -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::DeleteAllModelL() - { - // Popup note dialog - CAknQueryDialog* dlg = CAknQueryDialog::NewL(); - if ( dlg->ExecuteLD( R_TRUI_QUERYDIALOG_DELETE_ALL_MODELS ) ) - { - // press yes - const HBufC* charSet = iEngine->CharacterSet(); - for ( TInt i = 0; i < charSet->Length(); i++ ) - { - if ( iEngine->CheckCharacterModel( charSet->Mid( i, 1 ) ) ) - { - if ( *iIindicator->Text() == charSet->Mid( i, 1 ) ) - { - DeleteModelL(); - } - else - { - iEngine->DeleteCharacterModel( charSet->Mid( i, 1 ) ); - } - } - } - } - } - -// --------------------------------------------------------------------------- -// Get character set Id, -// used to choose which characters will be displayed in SCT -// --------------------------------------------------------------------------- -// -TInt CTruiMainViewContainer::SctCharacterSetId( TInt aRangeId ) - { - TInt characterSetId; - switch ( aRangeId ) - { - case EMainViewSubmenuLatinLowerLetter: - { - characterSetId = R_TRUI_SCT_CHARSET_LATIN_LOWER; - break; - } - case EMainViewSubmenuCyrillicLowerLetters: - { - characterSetId = SctCyrillicLowerCharacterSetId - ( iEngine->InputLanguage() ); - break; - } - case EMainViewSubmenuGreekLowerLetters: - { - characterSetId = R_TRUI_SCT_CHARSET_GREEK_LOWER; - break; - } - case EMainViewSubmenuHebrewLetters: - { - characterSetId = R_TRUI_SCT_CHARSET_HEBREW_LETTERS; - break; - } - case EMainViewSubmenuLatinAccent: - { - characterSetId = R_TRUI_SCT_CHARSET_LATIN_ACCENT; - break; - } - case EMainViewSubmenuLatinUpperLetter: - { - characterSetId = R_TRUI_SCT_CHARSET_LATIN_UPPER; - break; - } - case EMainViewSubmenuCyrillicUpperLetters: - { - characterSetId = SctCyrillicUpperCharacterSetId - ( iEngine->InputLanguage() ); - break; - } - case EMainViewSubmenuCyrillicAccent: - { - characterSetId = R_TRUI_SCT_CHARSET_CYRILLIC_ACCENT; - break; - } - case EMainViewSubmenuGreekUpperLetters: - { - characterSetId = R_TRUI_SCT_CHARSET_GREEK_UPPER; - break; - } - case EMainViewSubmenuDigital: - { - characterSetId = R_TRUI_SCT_CHARSET_LATIN_NUMERIC; - break; - } - case EMainViewSubmenuSymbols: - { - if ( FeatureManager::FeatureSupported(KFeatureIdChinese) ) - { - characterSetId = R_TRUI_SCT_CHARSET_LATIN_SYMBOL_CHINESE; - } - else - { - characterSetId = R_TRUI_SCT_CHARSET_LATIN_SYMBOL; - } - break; - } - default: - { - characterSetId = 0; - } - } - return characterSetId; - } - -// --------------------------------------------------------------------------- -// Get cyrillic lower character set Id. -// --------------------------------------------------------------------------- -// -TInt CTruiMainViewContainer::SctCyrillicLowerCharacterSetId - ( TLanguage aInputLanguage ) - { - if ( aInputLanguage == ELangBulgarian ) - { - return R_TRUI_SCT_CHARSET_CYRILLIC_LOWER_BULGARIAN; - } - else if ( aInputLanguage == ELangRussian ) - { - return R_TRUI_SCT_CHARSET_CYRILLIC_LOWER_RUSSIAN; - } - else if ( aInputLanguage == ELangUkrainian ) - { - return R_TRUI_SCT_CHARSET_CYRILLIC_LOWER_UKRAINE; - } - else - { - return R_TRUI_SCT_CHARSET_CYRILLIC_LOWER; - } - } - -// --------------------------------------------------------------------------- -// Get cyrillic upper character set Id. -// --------------------------------------------------------------------------- -// -TInt CTruiMainViewContainer::SctCyrillicUpperCharacterSetId - ( TLanguage aInputLanguage ) - { - if ( aInputLanguage == ELangBulgarian ) - { - return R_TRUI_SCT_CHARSET_CYRILLIC_UPPER_BULGARIAN; - } - else if ( aInputLanguage == ELangRussian ) - { - return R_TRUI_SCT_CHARSET_CYRILLIC_UPPER_RUSSIAN; - } - else if ( aInputLanguage == ELangUkrainian ) - { - return R_TRUI_SCT_CHARSET_CYRILLIC_UPPER_UKRAINE; - } - else - { - return R_TRUI_SCT_CHARSET_CYRILLIC_UPPER; - } - } - -// --------------------------------------------------------------------------- -// Before exit, do some necessary operation -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::PrepareToExitL() - { - //If previous char's model is not saved, save it before exit. - if ( iHwrBox->BoxState() == CTruiHwrBox::ENewModelDraw ) - { - //Call save function from hwrbox, - //in order to stop periodics in the hwrbox - iHwrBox->SaveModelByManuallyL(); - } - iHwrBox->HideInfoPopupNote(); - } - -// --------------------------------------------------------------------------- -// This is called whenever the control gains or loses focus, -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::FocusChanged( TDrawNow /*aDrawNow*/ ) - { - if ( IsFocused() ) - { - if ( iHwrBox->BoxState() == CTruiHwrBox::EExistModelStop ) - { - iHwrBox->ResumePlaying(); - } - } - else - { - if ( iHwrBox->BoxState() == CTruiHwrBox::EExistModelDraw ) - { - iHwrBox->PausePlaying(); - } - } - iHwrBox->SetFocus( IsFocused() ); - } - -// --------------------------------------------------------------------------- -// Gets the control's help context. Returns a NULL context by default. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::GetHelpContext( TCoeHelpContext& aContext ) const - { - aContext.iMajor = KUidtruiApp; - aContext.iContext = HWRT_HLP_MAIN_VIEW; - } - -// --------------------------------------------------------------------------- -// Handle size changed. -// --------------------------------------------------------------------------- -// -void CTruiMainViewContainer::DoSizeChanged( TInt aVarity ) - { - TRect rect = Rect(); - - TAknWindowComponentLayout main_pane_layout = - AknLayoutScalable_Apps::main_hwr_training_pane(); - TAknLayoutRect main_pane_layout_rect; - main_pane_layout_rect.LayoutRect( rect, main_pane_layout ); - TRect main_pane_rect = main_pane_layout_rect.Rect(); - - // Caculate hwr_training_navi_pane - TAknWindowComponentLayout navi_pane_layout = - AknLayoutScalable_Apps::hwr_training_navi_pane( aVarity ); - TAknLayoutRect navi_pane_layout_rect; - navi_pane_layout_rect.LayoutRect( main_pane_rect, navi_pane_layout ); - TRect navi_pane_rect = navi_pane_layout_rect.Rect(); - // Caculate navi pane contents - // hwr_training_navi_pane_g1 - TAknWindowComponentLayout navi_pane_g1_layout = - AknLayoutScalable_Apps::hwr_training_navi_pane_g1 - ( KVarityNaviPaneContents ); - TAknLayoutRect navi_pane_g1_layout_rect; - navi_pane_g1_layout_rect.LayoutRect( navi_pane_rect, navi_pane_g1_layout ); - TRect choicelistRect = navi_pane_g1_layout_rect.Rect(); - iChoicelist->SetRect( choicelistRect ); - - // hwr_training_navi_pane_g2 - // hwr_training_navi_pane_g3 - TAknWindowComponentLayout navi_pane_g3_layout = - AknLayoutScalable_Apps::hwr_training_navi_pane_g3 - ( KVarityNaviPaneContents ); - TAknLayoutRect navi_pane_g3_layout_rect; - navi_pane_g3_layout_rect.LayoutRect( navi_pane_rect, navi_pane_g3_layout ); - iLeftBtn->SetRect( navi_pane_g3_layout_rect.Rect() ); - // hwr_training_navi_pane_g4 - TAknWindowComponentLayout navi_pane_g4_layout = - AknLayoutScalable_Apps::hwr_training_navi_pane_g4 - ( KVarityNaviPaneContents ); - TAknLayoutRect navi_pane_g4_layout_rect; - navi_pane_g4_layout_rect.LayoutRect( navi_pane_rect, navi_pane_g4_layout ); - iRightBtn->SetRect( navi_pane_g4_layout_rect.Rect() ); - // hwr_training_navi_pane_g5 - TAknWindowComponentLayout navi_pane_g5_layout = - AknLayoutScalable_Apps::hwr_training_navi_pane_g5 - ( KVarityNaviPaneContents ); - TAknLayoutRect navi_pane_g5_layout_rect; - navi_pane_g5_layout_rect.LayoutRect( navi_pane_rect, navi_pane_g5_layout ); - TRect indicator_rect = navi_pane_g5_layout_rect.Rect(); - iIindicator->SetRect( indicator_rect ); - // hwr_training_navi_pane_t1 - TAknTextComponentLayout nave_pane_t1_layout = - AknLayoutScalable_Apps::hwr_training_navi_pane_t1 - ( KVarityNaviPaneContents ); - TAknLayoutText navi_pane_t1_layout_text; - navi_pane_t1_layout_text.LayoutText( indicator_rect, nave_pane_t1_layout ); - iIindicator->SetFont( navi_pane_t1_layout_text.Font() ); - iIindicator->SetLabelAlignment( navi_pane_t1_layout_text.Align() ); - - // hwr_training_write_pane - TAknWindowComponentLayout write_pane_layout = - AknLayoutScalable_Apps::hwr_training_write_pane( aVarity ); - TAknLayoutRect write_pane_layout_rect; - write_pane_layout_rect.LayoutRect( main_pane_rect, write_pane_layout ); - iHwrBox->SetRect( write_pane_layout_rect.Rect() ); - - TPoint hwrPos = iHwrBox->PositionRelativeToScreen(); - iHwrBox->SetTooltipPosition( hwrPos + TPoint( iHwrBox->Size().iWidth, KHwrTooltipY ) ); - - // hwr_training_instruct_pane - TAknWindowComponentLayout instruct_pane_layout = - AknLayoutScalable_Apps::hwr_training_instruct_pane( aVarity ); - TAknLayoutRect instruct_pane_layout_rect; - instruct_pane_layout_rect.LayoutRect( main_pane_rect, instruct_pane_layout ); - iLabelPaneRect = instruct_pane_layout_rect.Rect(); - - // count of text rows - TInt count = AknLayoutScalable_Apps:: - list_single_hwr_training_instruct_pane_ParamLimits().LastRow() + 1; - - // array contains all text rows in help screen - RArray textLayoutArray; - iLineWidthArray.Reset(); - for( TInt i = 0; i < count; i++ ) - { - // pane area for each row - TAknWindowComponentLayout each_row_layout = - AknLayoutScalable_Apps::list_single_hwr_training_instruct_pane( 0, 0, i ); - TAknLayoutRect each_row_layout_rect; - each_row_layout_rect.LayoutRect( iLabelPaneRect, - each_row_layout ); - iLineWidthArray.Append( each_row_layout_rect.Rect().Width() ); - // smaller pane for text itself - TAknTextComponentLayout each_row_text_layout = - AknLayoutScalable_Apps::list_single_hwr_training_instruct_pane_t1(); - - // composition of two latter componets - TAknTextComponentLayout textCompCompositionWiz = - TAknWindowComponentLayout::ComposeText( - each_row_layout, each_row_text_layout ); - - TRAPD(error, textLayoutArray.AppendL( textCompCompositionWiz ) ); - // if error in append function, then just exit the loop - if ( error != KErrNone ) - { - - break; - } - } - - iMultilineLayout = TAknTextComponentLayout::Multiline( textLayoutArray ); - if ( iLabeltext && iWrappedLabelText ) - { - // Be ready to show label - TAknLayoutText multilineTextLayout; - multilineTextLayout.LayoutText( iLabelPaneRect, iMultilineLayout ); - const CFont* font = AknLayoutUtils::FontFromId( iMultilineLayout.FontId() ); - TRAPD( err, WrapLabelTextL( font, *iLabeltext, iLineWidthArray, iWrappedLabelText ) ); - if ( err == KErrNone ) - { - TRAP_IGNORE( iLabel->SetTextL( *iWrappedLabelText ) ); - } - else - { - TRAP_IGNORE( iLabel->SetTextL( *iLabeltext ) ); - } - AknLayoutUtils::LayoutLabel( iLabel, - iLabelPaneRect, - iMultilineLayout ); - } - textLayoutArray.Close(); - - TRgb labelColor = KRgbBlack; - TInt error = GetCachedLabelTextColor( labelColor ); - if ( error == KErrNone ) - { - TRAP_IGNORE( iLabel->OverrideColorL( EColorLabelText, labelColor ) ); - TRAP_IGNORE( iIindicator->OverrideColorL( EColorLabelText, labelColor ) ); - } - } - -void CTruiMainViewContainer::HandlePointerEventL(const TPointerEvent& aPointerEvent) - { - if ( iHwrBox->BoxState() == CTruiHwrBox::ENewModelDraw ) - { - //Call save function from hwrbox, - //in order to stop periodics in the hwrbox - iHwrBox->HandlePointerEventL( aPointerEvent ); - } - else - { - CCoeControl::HandlePointerEventL( aPointerEvent ); - } - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truishortcuteditcontainer.cpp --- a/textinput/peninputhwrtrui/src/truishortcuteditcontainer.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1235 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiShortcutEditContainer -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "truicontainerbase.h" -#include "truishortcuteditcontainer.h" -#include "truihwrbox.h" -#include "truiengine.h" -#include "truiappui.h" -#include "truishortcutsview.h" -#include "truiapplication.h" -#include "truiappradiobutton.h" -#include "truishortcutsview.h" -#include "truiapplication.h" -#include "truishortcutedittextview.h" -#include "trui.hrh" -#include "truishortcuteditview.h" - -const TInt KSimilarMsgLength = 160; - -// The maximum number of lines for tips -const TInt KIndicatorBufSize = 2; - -// The index of each item in radio button groups -const TInt KOwnIndex = 0; -const TInt KPresetIndex = 1; - -// Layout for portrait -const TPoint KLabelTipPosPortrait = TPoint( 0, 0 ); -const TSize KLabelTipSizePortrait = TSize( 360, 60 ); -const TPoint KRadioPosPortrait = TPoint( 5, 73 ); -const TSize KRadioSizePortrait = TSize( 196, 99 ); -const TPoint KLeftBtnPosPotrait = TPoint( 115, 160 ); -const TPoint KIndicatorPosPotrait = TPoint( 165, 160 ); -const TPoint KRightBtnPosPotrait = TPoint( 215, 160 ); -const TPoint KHwrBoxPosPortrait = TPoint( 90, 215 ); - -const TSize KButtonSize = TSize( 50, 50 ); - -// Layout for landscape -const TPoint KRadioPosLandscape = TPoint( 5, 18 ); -const TPoint KLabelTipPosLandscape = TPoint( 5, 120 ); -const TSize KLabelTipSizeLandscape = TSize( 250, 120 ); - -const TPoint KLeftBtnPos = TPoint( 300, 15 ); - -const TPoint KRightBtnPos = TPoint( 400, 15 ); -const TPoint KIndicatorPosLandscape = TPoint( 350, 15 ); -const TSize KHwrBoxSizeLandscape = TSize( 200, 200 ); -const TPoint KHwrBoxPosLandscape = TPoint( 275, 80 ); - -const TInt KTooltipPopupTimeOut = 0; -const TInt KTooltipStayTimeOut = 3000; - -const TInt KSctBufferSize = 32; -const TInt KHwrTooltipY = 20; - -_LIT( KActiveCharFormat, "%c" ); - -// Varity of landscape for common components -const TInt KVarityLandscape = 3; - -// Varity of portrait for common components -const TInt KVarityPortrait = 2; - -const TInt KVarityListPane = 1; - -// ======== MEMBER FUNCTIONS ======== - -CTruiShortcutEditContainer::CTruiShortcutEditContainer() - { - iActiveCharPos = KErrNotFound; - } - -void CTruiShortcutEditContainer::ConstructL( const TRect& aRect ) - { - // Initialize control array - InitComponentArrayL(); - - // Set parent control or owning window - CreateWindowL(); - - iBackGround = CAknsBasicBackgroundControlContext::NewL - ( KAknsIIDQsnBgAreaMain, Rect(), EFalse); - - // Initialize controls - InitializeControlsL(); - -#ifdef TRAININGUI_FOR_PRESET - // Get all presets from Engine - HBufC* presetHBuf = iEikonEnv->AllocReadResourceLC( R_TRUI_PRESET_SYMBOLS ); - for ( TInt i = 0; i < presetHBuf->Length(); i++ ) - { - iPresets.Append( ( *presetHBuf )[i] ); - } - CleanupStack::PopAndDestroy( presetHBuf ); -#endif - - // Load setting data - CTruiShortcutEditView* view = static_cast - ( iAppUi->View( KTruiShortcutEditViewId ) ); - - if ( view->PreviousViewId() == TVwsViewId( KUidtruiApp, KTruiShortcutsViewId ) ) - { - // Edit old shortcut - iEngine->GetShortcutModelL( iEngine->Shortcut(), - iHwrBox->Model(), - iUnicode ); - // Backup shortcut model - BackupShortcutModel( iHwrBox->Model(), iUnicode ); - // Load the current active char whether is own or preset. - iShortcutType = iUnicode ? KPresetIndex : KOwnIndex; - iIsEmptyHwrBox = iUnicode ? ETrue : EFalse; -#ifdef TRAININGUI_FOR_PRESET - if ( iUnicode ) - { - // Edit preset shortcut - iActiveCharPos = iPresets.Find( iUnicode ); - } - else - { - // Edit own shortcut, get the first available preset shortcut - if ( FindFirstAvailableCharL( 0, iPresets.Count() - 1, 1, iUnicode ) ) - { - iActiveCharPos = iPresets.Find( iUnicode ); - } - else - { - iActiveCharPos = KErrNotFound; - } - } -#endif - } - else - { - // Create new shortcut - // Load the current active char whether is own or preset. - iShortcutType = KOwnIndex; - iIsEmptyHwrBox = ETrue; -#ifdef TRAININGUI_FOR_PRESET - if ( FindFirstAvailableCharL( 0, iPresets.Count() - 1, 1, iUnicode ) ) - { - iActiveCharPos = iPresets.Find( iUnicode ); - } - else - { - iActiveCharPos = KErrNotFound; - } -#endif - } - - // Set radio button - iRadioButtonContainer->HandlePointerRadioButtonL( iShortcutType, - EEventRequestFocus ); - SetRect( aRect ); - - ActivateL(); - } - -CTruiShortcutEditContainer* CTruiShortcutEditContainer::NewL( const TRect& aRect ) - { - CTruiShortcutEditContainer* self = CTruiShortcutEditContainer::NewLC( aRect ); - CleanupStack::Pop( self ); - return self; - } - -CTruiShortcutEditContainer* CTruiShortcutEditContainer::NewLC( const TRect& aRect ) - { - CTruiShortcutEditContainer* self = new (ELeave) CTruiShortcutEditContainer(); - CleanupStack::PushL( self ); - self->ConstructL( aRect ); - return self; - } - -CTruiShortcutEditContainer::~CTruiShortcutEditContainer() - { - delete iBackGround; - delete iLabeltext; - delete iWrappedLabelText; - iModelBak.Close(); - iPresets.Close(); - iLineWidthArray.Close(); - } - -// --------------------------------------------------------------------------- -// Create controls to be displayed in this container. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::InitializeControlsL() - { - // Create fixed toolbar - CAknToolbar* toolbar = iAppUi->View( KTruiShortcutEditViewId )->Toolbar(); - // Get Clear button from toolbar - CAknButton* clearButton = static_cast - ( toolbar->ControlOrNull( EShortcutEditViewDelete ) ); - - CreateRadioButtonL(); - - CcnstructButtonL(); - - CreateLabelL(); - - CreateHwrBoxL(); - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Responds to changes to the size and position of the contents of this control. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::SizeChanged() - { - TInt varity = Layout_Meta_Data::IsLandscapeOrientation() ? KVarityLandscape - : KVarityPortrait; - DoSizeChanged( varity ); - // Set hwrbox's rect to engine and set guiding line to hwrbox - iHwrBox->SetDisplayBottomGuideLine( ETrue ); - TBool isDisplayTopGuideLine = ( iEngine->CurrentLanguageScript() - == EMainViewSubmenuHebrew ) ? ETrue : EFalse; - - iHwrBox->SetDisplayTopGuideLine( isDisplayTopGuideLine ); - - if ( varity == KVarityLandscape ) - { - DoLayoutLandscape(); - } - else if ( varity == KVarityPortrait ) - { - DoLayoutPortait(); - } - if ( iBackGround ) - { - iBackGround->SetRect( Rect() ); - } - } - -// --------------------------------------------------------------------------- -// Layout under landscape condition. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::DoLayoutLandscape() - { -#ifdef TRAININGUI_FOR_PRESET - iRadioButtonContainer->SetRect( TRect( KRadioPosLandscape, - KRadioSizePortrait ) ); - iLeftBtn->SetRect( TRect( KLeftBtnPos, KButtonSize ) ); - iRightBtn->SetRect( TRect( KRightBtnPos, KButtonSize ) ); - iIndicator->SetRect( TRect( KIndicatorPosLandscape, KButtonSize ) ); -#endif - } - -// --------------------------------------------------------------------------- -// Layout under portait condition. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::DoLayoutPortait() - { -#ifdef TRAININGUI_FOR_PRESET - iRadioButtonContainer->SetRect( TRect( KRadioPosPortrait, - KRadioSizePortrait ) ); - iLeftBtn->SetRect( TRect( KLeftBtnPosPotrait, KButtonSize ) ); - iRightBtn->SetRect( TRect( KRightBtnPosPotrait, KButtonSize ) ); - iIndicator->SetRect( TRect( KIndicatorPosPotrait, KButtonSize ) ); -#endif - } - -// --------------------------------------------------------------------------- -// Save own shortcut. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::SaveOwnShortcutL( const TDesC& aShortcut, - RArray& aModel, - TDes& aErrMsg ) - { - // Ensure the shortcut doesn't exist. - if ( iEngine->CheckShortcutModel( aShortcut ) ) - { - iEngine->DeleteShortcut( aShortcut ); - } - if ( aModel.Count() ) - { - iEngine->SaveShortcutL( aShortcut, aModel, aErrMsg ); - } - } - -// --------------------------------------------------------------------------- -// Save preset shortcut. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::SavePresetShortcutL( const TDesC& aShortcut, - TUint aUnicode ) - { - // Ensure the shortcut doesn't exist. - if ( iEngine->CheckShortcutModel( aShortcut ) ) - { - iEngine->DeleteShortcut( aShortcut ); - } - // Check if aUnicode is in use. - RArray presetModel; - CleanupClosePushL( presetModel ); - TBuf msg; - iEngine->GetPresetSymbolByUnicodeL( aUnicode, presetModel, msg ); - if ( msg.Length() > 0 ) - { - // In use, being assigned to some shortcut. - User::Leave( KErrInUse ); - } - CleanupStack::PopAndDestroy( &presetModel ); - iEngine->SavePresetShortcutL( aUnicode, aShortcut ); - } - -// --------------------------------------------------------------------------- -// Backup shortcut model. It is probably to be restored when press Back to exit. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::BackupShortcutModel - ( const RArray& aOriginalModel, - TUint aOriginalUnicode ) - { - iUnicodeBak = aOriginalUnicode; - if ( !iUnicodeBak ) - { - // If old shortcut is own, it is necessary to store trails. - // If it is preset, backup is unecessary - for ( TInt i = 0; i < aOriginalModel.Count(); i++ ) - { - iModelBak.Append( aOriginalModel[i] ); - } - } - } - -// --------------------------------------------------------------------------- -// Set active char. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::SetActiveCharL( TUint aUnicode ) - { - // Set active indicator - TBuf preset; - - // Preset symbol - preset.Format( KActiveCharFormat, aUnicode ); - iIndicator->SetTextL( preset ); - iIndicator->DrawNow(); - // Clear hwrbox and stop playing animation - iHwrBox->ClearExistModel(); - // Get model - TBuf similarMsg; - iEngine->GetPresetSymbolByUnicodeL( aUnicode, iHwrBox->Model(), - similarMsg ); - // Play animation in HwrBox - iHwrBox->ModelIsReady( ETrue ); - if ( iShortcutType == KPresetIndex ) - { - // As for preset, need to scale trails size firstly - iHwrBox->PlayAnimation( ETrue, CTruiContainerBase::OriginSymbolSize() ); - } - else - { - iHwrBox->PlayAnimation(); - } - } - -// --------------------------------------------------------------------------- -// Find the first available preset symbol. -// --------------------------------------------------------------------------- -// -TBool CTruiShortcutEditContainer::FindFirstAvailableCharL( TInt aStartPos, - TInt aEndPos, - TInt aDirection, - TUint& aUnicode ) - { - while ( aStartPos != aEndPos && aStartPos < iPresets.Count() ) - { - if ( !CheckPresetSymbolInUseL( iPresets[aStartPos] ) ) - { - aUnicode = iPresets[aStartPos]; - return ETrue; - } - else - { - // In use - if ( iUnicodeBak == iPresets[aStartPos] ) - { - // But the preset symbol is the old preset - // which users are editting, - // Still display the symbol in indicator - aUnicode = iPresets[aStartPos]; - return ETrue; - } - } - if ( aDirection ) - { - // Go right - aStartPos = ( ++aStartPos + iPresets.Count() ) % iPresets.Count(); - } - else - { - // Go left - aStartPos = ( --aStartPos + iPresets.Count() ) % iPresets.Count(); - } - } - if ( aEndPos < iPresets.Count() && !CheckPresetSymbolInUseL( iPresets[aEndPos] ) ) - { - aUnicode = iPresets[aEndPos]; - return ETrue; - } - return EFalse; - } - -// --------------------------------------------------------------------------- -// Return if the preset is in use. -// --------------------------------------------------------------------------- -// -TBool CTruiShortcutEditContainer::CheckPresetSymbolInUseL( TUint aUnicode ) - { - // Check if iUnicode is in use - RArray presetModels; - CleanupClosePushL( presetModels ); - TBuf similarMsg; - iEngine->GetPresetSymbolByUnicodeL( aUnicode, - presetModels, - similarMsg ); - CleanupStack::PopAndDestroy( &presetModels ); - if ( similarMsg.Length() ) - { - return ETrue; - } - return EFalse; - } - -// --------------------------------------------------------------------------- -// Do something to response to size changed. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::DoSizeChanged( TInt aVarity ) - { - TRect rect = Rect(); - - TAknWindowComponentLayout main_pane_layout = - AknLayoutScalable_Apps::main_hwr_training_pane(); - TAknLayoutRect main_pane_layout_rect; - main_pane_layout_rect.LayoutRect( rect, main_pane_layout ); - TRect main_pane_rect = main_pane_layout_rect.Rect(); - - // hwr_training_write_pane - TAknWindowComponentLayout write_pane_layout = - AknLayoutScalable_Apps::hwr_training_write_pane( aVarity ); - TAknLayoutRect write_pane_layout_rect; - write_pane_layout_rect.LayoutRect( main_pane_rect, write_pane_layout ); - iHwrBox->SetRect( write_pane_layout_rect.Rect() ); - - TPoint hwrPos = iHwrBox->PositionRelativeToScreen(); - iHwrBox->SetTooltipPosition( hwrPos + TPoint( iHwrBox->Size().iWidth, KHwrTooltipY ) ); - - // hwr_training_instruct_pane - TAknWindowComponentLayout instruct_pane_layout = - AknLayoutScalable_Apps::hwr_training_instruct_pane( aVarity ); - TAknLayoutRect instruct_pane_layout_rect; - instruct_pane_layout_rect.LayoutRect( main_pane_rect, instruct_pane_layout ); - // count of text rows - TInt count = AknLayoutScalable_Apps:: - list_single_hwr_training_instruct_pane_ParamLimits( KVarityListPane ) - .LastRow() + 1; - - // array contains all text rows in help screen - RArray textLayoutArray; - iLineWidthArray.Reset(); - for( TInt i = 0; i < count; i++ ) - { - // pane area for each row - TAknWindowComponentLayout each_row_layout = - AknLayoutScalable_Apps::list_single_hwr_training_instruct_pane - ( KVarityListPane, 0, i ); - TAknLayoutRect each_row_layout_rect; - each_row_layout_rect.LayoutRect( instruct_pane_layout_rect.Rect(), - each_row_layout ); - iLineWidthArray.Append( each_row_layout_rect.Rect().Width() ); - // smaller pane for text itself - TAknTextComponentLayout each_row_text_layout = - AknLayoutScalable_Apps::list_single_hwr_training_instruct_pane_t1(); - - // composition of two latter componets - TAknTextComponentLayout textCompCompositionWiz = - TAknWindowComponentLayout::ComposeText( - each_row_layout, each_row_text_layout ); - - TRAPD(error, textLayoutArray.AppendL( textCompCompositionWiz ) ); - // if error in append function, then just exit the loop - if ( error != KErrNone ) - { - break; - } - } - iMultilineLayout = TAknTextComponentLayout::Multiline( textLayoutArray ); - if ( iLabeltext && iWrappedLabelText ) - { - // Be ready to show label - TAknLayoutText multilineTextLayout; - multilineTextLayout.LayoutText( instruct_pane_layout_rect.Rect(), iMultilineLayout ); - const CFont* font = AknLayoutUtils::FontFromId( iMultilineLayout.FontId() ); - TRAPD( err, WrapLabelTextL( font, *iLabeltext, iLineWidthArray, iWrappedLabelText ) ); - if ( err == KErrNone ) - { - TRAP_IGNORE( iLabelTip->SetTextL( *iWrappedLabelText ) ); - } - else - { - TRAP_IGNORE( iLabelTip->SetTextL( *iLabeltext ) ); - } - AknLayoutUtils::LayoutLabel( iLabelTip, - instruct_pane_layout_rect.Rect(), - iMultilineLayout ); - } - textLayoutArray.Close(); - - TRgb labelColor = KRgbBlack; - TInt error = GetCachedLabelTextColor( labelColor ); - if ( error == KErrNone ) - { - TRAP_IGNORE( iLabelTip->OverrideColorL( EColorLabelText, labelColor ) ); - TRAP_IGNORE( iIndicator->OverrideColorL( EColorLabelText, labelColor ) ); - } - } - -// --------------------------------------------------------------------------- -// Create radio button. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::CreateRadioButtonL() - { - iRadioButtonContainer = CTruiRadioButton::NewL( this, - CTruiRadioButton::ERadioButton, - this ); - Components().AppendLC( iRadioButtonContainer ); - CleanupStack::Pop( iRadioButtonContainer ); - - HBufC* radioTextOwn = iEikonEnv->AllocReadResourceLC - ( R_TRUI_SHORTCUTEDITMODELVIEW_RADIOBUTTON_OWN ); - iRadioButtonContainer->AddItem( radioTextOwn, CTruiRadioButton::ENonSelected ); - CleanupStack::Pop( radioTextOwn ); // transfered ownership - HBufC* radioTextPreset = iEikonEnv->AllocReadResourceLC - ( R_TRUI_SHORTCUTEDITMODELVIEW_RADIOBUTTON_PRESET ); - iRadioButtonContainer->AddItem( radioTextPreset, CTruiRadioButton::ENonSelected ); - CleanupStack::Pop( radioTextPreset ); // transfered ownership - iRadioButtonContainer->HandleItemAdditionL(); - } - -// --------------------------------------------------------------------------- -// Create HWR box to write and play model -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::CreateHwrBoxL() - { - CTruiHwrBox* hwrBox = CTruiHwrBox::NewL( this, this, iBackGround ); - hwrBox->SetHwrBoxFlag( CTruiHwrBox::EFrameHwrBox ); - Components().AppendLC( hwrBox ); - hwrBox->ActivateL(); - CleanupStack::Pop( hwrBox ); - iHwrBox = hwrBox; - } - -// --------------------------------------------------------------------------- -// Create buttons. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::CcnstructButtonL() - { - // Left button for last character - CAknButton* preButton = CreateButtonL( R_MAINVIEW_BUTTON_LEFT, - this, - this ); - Components().AppendLC( preButton ); - CleanupStack::Pop( preButton ); - iLeftBtn = preButton; - - // Right button for next character - CAknButton* nextButton = CreateButtonL( R_MAINVIEW_BUTTON_RIGHT, - this, - this ); - Components().AppendLC( nextButton ); - CleanupStack::Pop( nextButton ); - iRightBtn = nextButton; - } - -// --------------------------------------------------------------------------- -// Create buttons. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::CreateLabelL() - { - //Create label tip - CEikLabel* tipLabel = new (ELeave) CEikLabel(); - CleanupStack::PushL( tipLabel ); - tipLabel->SetContainerWindowL( *this ); - tipLabel->SetTextL( KNullDesC ); - tipLabel->ActivateL(); - CleanupStack::Pop( tipLabel ); - Components().AppendLC( tipLabel ); - CleanupStack::Pop( tipLabel ); - iLabelTip = tipLabel; - - // Create active character indicator - CEikLabel* aknLabel = new (ELeave) CEikLabel(); - CleanupStack::PushL( aknLabel ); - aknLabel->SetContainerWindowL( *this ); - aknLabel->SetObserver( this ); - aknLabel->SetAlignment( - TGulAlignmentValue ( EEikLabelAlignHCenter|EEikLabelAlignVCenter ) ); - aknLabel->SetTextL( KNullDesC ); - aknLabel->ActivateL(); - CleanupStack::Pop( aknLabel ); - Components().AppendLC( aknLabel ); - CleanupStack::Pop( aknLabel ); - iIndicator = aknLabel; - iIndicator->SetObserver( this ); - } - -// --------------------------------------------------------------------------- -// Draw. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::Draw( const TRect& /*aRect*/ ) const - { - // Get the standard graphics context - CWindowGc& gc = SystemGc(); - // Gets the control's extent - TRect rect( Rect()); - // Clears the screen - gc.Clear( rect ); - - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - if ( AknsDrawUtils::HasBitmapBackground( skin, iBackGround ) ) - { - AknsDrawUtils::Background( skin, iBackGround, gc, rect ); - } - } - -// --------------------------------------------------------------------------- -// Switch to shortcuts view. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::SwitchToShortcutViewL() - { - // Update shortcut list - iEngine->UpdateShortcutListL(); - // Find the current shortcut's index in shortcut list - CDesCArray* shortcutList = iEngine->ShortcutTextList(); - TInt index = DefaultSelectedIndex( shortcutList, iEngine->Shortcut() ); - if ( index == KErrNotFound ) - { - TInt oldIndex = iEngine->CurrentSelectedIndex(); - if ( shortcutList ) - { - index = ( oldIndex > shortcutList->Count() ) - ? shortcutList->Count() : oldIndex; - } - else - { - index = 0; - } - } - - // Set current index in Engine - iEngine->SetCurrentSelectedIndex( index ); - - // Close tooltip - iHwrBox->HideInfoPopupNote(); - - iAppUi->ActivateLocalViewL( KTruiShortcutsViewId ); - // Show NaviDecorator - iAppUi->ShowNaviPaneL(); - } - -// --------------------------------------------------------------------------- -// Go back to previous view -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::BackToPreviousViewL() - { - if ( iIsRestored ) - { - // Check if restore the old shortcut - if ( iUnicodeBak ) - { - // Old shortcut is preset, restore it. - SavePresetShortcutL( iEngine->Shortcut(), iUnicodeBak ); - } - else - { - // Old shortcut is own, restore it. - // Or create new shortcut - TBuf similarMsg; - SaveOwnShortcutL( iEngine->Shortcut(), iModelBak, similarMsg ); - } - } - - // Close tooltip - iHwrBox->HideInfoPopupNote(); - - // Show NaviDecorator - CTruiShortcutEditView* view = static_cast - ( iAppUi->View( KTruiShortcutEditViewId ) ); - iAppUi->ActivateLocalViewL( view->PreviousViewId().iViewUid ); - - if ( view->PreviousViewId() == TVwsViewId( KUidtruiApp, KTruiShortcutsViewId ) ) - { - iAppUi->ShowNaviPaneL(); - } - } - -// --------------------------------------------------------------------------- -// Handles an event from an observed control. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::HandleControlEventL( CCoeControl* aControl, - TCoeEvent aEventType ) - { - if ( aControl == iLeftBtn && aEventType == EEventStateChanged ) - { - if ( iActiveCharPos != KErrNotFound ) - { - // Edit an old preset - // Find first available preset, otherwise, show error note all in use - // Create a new preset shortcut but at least one is available - // Find first available preset, otherwise, nothing to do - TInt startPos = ( iActiveCharPos - 1 + iPresets.Count() ) - % iPresets.Count(); - TInt endPos = ( iActiveCharPos + 1 + iPresets.Count() ) - % iPresets.Count(); - if ( FindFirstAvailableCharL( startPos, endPos, 0, iUnicode ) ) - { - iActiveCharPos = iPresets.Find( iUnicode ); - SetActiveCharL( iUnicode ); - } - else if ( !iEngine->NewShortcut() ) - { - // if Create a new preset shortcut but at least one is available - // nothing to do - // show error note : all in use - PopupTooltipL( R_TRUI_SHORTCUTEDITVIEW_ERROR_NOTE_ALL_IN_USE ); - } - } - else - { - // Create a new preset, but all in use - // Show error note - PopupTooltipL( R_TRUI_SHORTCUTEDITVIEW_ERROR_NOTE_ALL_IN_USE ); - } - } - else if ( aControl == iRightBtn && aEventType == EEventStateChanged ) - { - if ( iActiveCharPos != KErrNotFound ) - { - // Edit an old preset - // Find first available preset, otherwise, show error note all in use - // Create a new preset shortcut but at least one is available - // Find first available preset, otherwise, nothing to do - TInt startPos = ( iActiveCharPos + 1 + iPresets.Count() ) - % iPresets.Count(); - TInt endPos = ( iActiveCharPos - 1 + iPresets.Count() ) - % iPresets.Count(); - if ( FindFirstAvailableCharL( startPos, endPos, 1, iUnicode ) ) - { - iActiveCharPos = iPresets.Find( iUnicode ); - SetActiveCharL( iUnicode ); - } - else if ( !iEngine->NewShortcut() ) - { - // show error note : all in use - PopupTooltipL( R_TRUI_SHORTCUTEDITVIEW_ERROR_NOTE_ALL_IN_USE ); - } - } - else - { - // Create a new preset, but all in use - // Show error note - PopupTooltipL( R_TRUI_SHORTCUTEDITVIEW_ERROR_NOTE_ALL_IN_USE ); - } - } - else if ( iShortcutType == KPresetIndex && aControl == iIndicator - && aEventType == EEventRequestFocus ) - { - PreviewShortcutModel(); - } - } - -// --------------------------------------------------------------------------- -// From class MTruiHWRBoxObserver. -// Handle the save model event -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::SaveNewModelL() - { - // Carry out saving new model - if ( iShortcutType == KOwnIndex ) - { - iIsRestored = ETrue; - - // If shortcut is own, it will save new model - TBuf similarMsg; - TRAPD( err, SaveOwnShortcutL( iEngine->Shortcut(), - iHwrBox->Model(), - similarMsg ) ); - switch ( err ) - { - case KErrNone: - { - iIsEmptyHwrBox = EFalse; - CAknToolbar* toolbar = iAppUi->View( KTruiShortcutEditViewId ) - ->Toolbar(); - CAknButton* clearBtn = static_cast - ( toolbar->ControlOrNull( EShortcutEditViewDelete ) ); - clearBtn->SetDimmed( EFalse ); - clearBtn->DrawNow(); - CAknButton* previewBtn = static_cast - ( toolbar->ControlOrNull( EShortcutEditViewPreviewModel ) ); - previewBtn->SetDimmed( EFalse ); - previewBtn->DrawNow(); - - TPoint hwrPos = iHwrBox->PositionRelativeToScreen(); - HBufC* tooltipText = - iEikonEnv->AllocReadResourceLC( R_TRUI_TOOLTIP_SAVED ); - iHwrBox->ShowTooltipL( *tooltipText, - hwrPos + TPoint( iHwrBox->Size().iWidth, KHwrTooltipY ), - KTooltipPopupTimeOut, - KTooltipStayTimeOut ); - CleanupStack::PopAndDestroy( tooltipText ); - break; - } - case KErrAlreadyExists: - { - //Clear invalid model - ClearCurrentModelL(); - - //Popup err message - PopupTooltipL( R_TRUI_SHORTCUTEDITVIEW_ERROR_NOTE_IN_USE ); - break; - } - - } - } - } - -// --------------------------------------------------------------------------- -// From class MTruiHWRBoxObserver. -// Handle the message event from the HWRBox -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::HandleEventL( TMessageType aMessage ) - { - if ( aMessage == EModelExist ) - { - PopupTooltipL( R_TRUI_NOTE_CLEAR_BOX ); - } - } - -// --------------------------------------------------------------------------- -// From class MTruiHWRBoxObserver. -// Notify that which radio button is selected. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::SelectChangedL( TInt aIndex ) - { - // Change the text below radio buttons - TInt tipResource = aIndex ? R_TRUI_SHORTCUTEDITVIEW_PRESET_SYMBOL - : R_TRUI_SHORTCUTEDITVIEW_OWN_SYMBOL; - delete iLabeltext; - iLabeltext = NULL; - iLabeltext = iEikonEnv->AllocReadResourceL( tipResource ); - delete iWrappedLabelText; - iWrappedLabelText = NULL; - // count of text rows - TInt lines = AknLayoutScalable_Apps:: - list_single_hwr_training_instruct_pane_ParamLimits( KVarityListPane ) - .LastRow() + 1; - iWrappedLabelText = HBufC::NewL( iLabeltext->Length() + lines - + KExtraSize ); - // Be ready to show label - const CFont* font = AknLayoutUtils::FontFromId( iMultilineLayout.FontId() ); - TRAPD( err, WrapLabelTextL( font, *iLabeltext, iLineWidthArray, iWrappedLabelText ) ); - if ( err == KErrNone ) - { - iLabelTip->SetTextL( *iWrappedLabelText ); - } - else - { - iLabelTip->SetTextL( *iLabeltext ); - } - // Get Clear button from toolbar - CAknToolbar* toolbar = iAppUi->View( KTruiShortcutEditViewId )->Toolbar(); - CAknButton* clearBtn = static_cast - ( toolbar->ControlOrNull( EShortcutEditViewDelete ) ); - CAknButton* gridBtn = static_cast - ( toolbar->ControlOrNull( EShortcutEditViewGrid ) ); - // Dim left and right buttons when selecting "own symbol" - TBool btnDimmed = aIndex ? EFalse : ETrue; - iLeftBtn->SetDimmed( btnDimmed ); - iLeftBtn->DrawNow(); - iRightBtn->SetDimmed( btnDimmed ); - iRightBtn->DrawNow(); - - // Set grid button status - gridBtn->SetDimmed( btnDimmed ); - gridBtn->DrawNow(); - - // Set active indicator - TBuf preset; - if ( aIndex && iUnicode ) - { - // Preset symbol - preset.Format( KActiveCharFormat, iUnicode ); - } - else - { - // Own - preset.Copy( KNullDesC ); - } - iIndicator->SetTextL( preset ); - iIndicator->DrawNow(); - - // Update current shortcut type - iShortcutType = aIndex; - - // Clear hwrbox and stop playing animation - iHwrBox->ClearExistModel(); - - if ( iShortcutType == KPresetIndex ) - { - // If preset shortcut, get trail points. - TBuf similarMsg; - iEngine->GetPresetSymbolByUnicodeL( iUnicode, - iHwrBox->Model(), similarMsg ); - iHwrBox->ModelIsReady( ETrue ); - iHwrBox->PlayAnimation( ETrue, CTruiContainerBase::OriginSymbolSize() ); - } - else if ( !iIsEmptyHwrBox ) - { - // If own shortcut, get trail points - TUint unicode = 0; - iEngine->GetShortcutModelL( iEngine->Shortcut(), iHwrBox->Model(), - unicode ); - iHwrBox->ModelIsReady( ETrue ); - iHwrBox->PlayAnimation(); - } - - // Set hwrbox model - if ( iShortcutType == KPresetIndex ) - { - iHwrBox->SetHwrBoxReadOnly( ETrue ); - } - else - { - iHwrBox->SetHwrBoxReadOnly( EFalse ); - } - - // Set clear button's status - clearBtn->SetDimmed( !( iHwrBox->Model().Count() ) | aIndex ); - clearBtn->DrawNow(); - - // Set preview button status - CAknButton* previewBtn = static_cast - ( toolbar->ControlOrNull( EShortcutEditViewPreviewModel ) ); - - previewBtn->SetDimmed( !( iHwrBox->Model().Count() | aIndex ) ); - previewBtn->DrawNow(); - } - -// --------------------------------------------------------------------------- -// Preview shortcut model -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::PreviewShortcutModel() - { - //even hwrbox know if current character has existing model. - //ask for engine to confirm this - iHwrBox->PlayAnimation(); - } - -// --------------------------------------------------------------------------- -// Check if model exist -// --------------------------------------------------------------------------- -// -TBool CTruiShortcutEditContainer::HasShortcutModel() - { - return EFalse; - } - -// --------------------------------------------------------------------------- -// Prepare to exit -// --------------------------------------------------------------------------- -// -TBool CTruiShortcutEditContainer::PrepareToExitL() - { - iHwrBox->HideInfoPopupNote(); - //If previous char's model is not saved, save it before exit. - if ( iHwrBox->BoxState() == CTruiHwrBox::ENewModelDraw ) - { - //Call save function from hwrbox, - //in order to stop periodics in the hwrbox - iHwrBox->SaveModelByManuallyL(); - } - - //After saving model, if shortcut model is empty, - //notice user that shortcut will be delete. - if ( iHwrBox->Model().Count() == 0 ) - { - // Not assign model to shortcut - CAknQueryDialog* dlg = CAknQueryDialog::NewL(); - if ( dlg->ExecuteLD( R_TRUI_QUERYDIALOG_SHORTCUT_NOT_ASSIGNED ) ) - { - // yes/ok pressed - iEngine->DeleteShortcut( iEngine->Shortcut() ); - return ETrue; - } - else - { - return EFalse; - } - } - else - { - if ( iShortcutType == KPresetIndex ) - { - // Save preset - // No need to save own preset again, because it has been saved before. - TRAPD( err, SavePresetShortcutL( iEngine->Shortcut(), iUnicode ) ); - if ( err == KErrInUse ) - { - // Pop information note - HBufC* errMsg = iEikonEnv->AllocReadResourceLC - ( R_TRUI_SHORTCUTEDITVIEW_ERROR_NOTE_IN_USE ); - CAknConfirmationNote* note = new (ELeave) CAknConfirmationNote - ( ETrue ); - note->ExecuteLD( *errMsg ); - CleanupStack::PopAndDestroy( errMsg ); - return EFalse; - } - } - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// Clear current model -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::ClearCurrentModelL() - { - // Get Clear button from toolbar - CAknToolbar* toolbar = iAppUi->View( KTruiShortcutEditViewId )->Toolbar(); - CAknButton* clearBtn = static_cast - ( toolbar->ControlOrNull( EShortcutEditViewDelete ) ); - clearBtn->SetDimmed( ETrue ); - clearBtn->DrawNow(); - - // Set preview button status - CAknButton* previewBtn = static_cast - ( toolbar->ControlOrNull( EShortcutEditViewPreviewModel ) ); - - previewBtn->SetDimmed( ETrue ); - previewBtn->DrawNow(); - - iHwrBox->ClearExistModel(); - HBufC* tipText = iEikonEnv->AllocReadResourceLC( R_TRUI_TOOLTIP_DELETED ); - TPoint hwrPos = iHwrBox->PositionRelativeToScreen(); - iHwrBox->ShowTooltipL( *tipText, - hwrPos + TPoint( iHwrBox->Size().iWidth, KHwrTooltipY ), - KTooltipPopupTimeOut, KTooltipStayTimeOut ); - CleanupStack::PopAndDestroy( tipText ); - iIsEmptyHwrBox = ETrue; - } - -// --------------------------------------------------------------------------- -// Popup tooltip -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::PopupTooltipL( TInt aResourceID ) - { - HBufC* tooltiptext =iEikonEnv->AllocReadResourceLC( aResourceID ); - CAknInformationNote* note = new (ELeave) CAknInformationNote( ETrue ); - note->ExecuteLD( *tooltiptext ); - CleanupStack::PopAndDestroy( tooltiptext ); - } - -// --------------------------------------------------------------------------- -// This is called whenever the control gains or loses focus, -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::FocusChanged( TDrawNow /*aDrawNow*/ ) - { - if ( IsFocused() ) - { - if ( iHwrBox->BoxState() == CTruiHwrBox::EExistModelStop ) - { - iHwrBox->ResumePlaying(); - } - } - else - { - if ( iHwrBox->BoxState() == CTruiHwrBox::EExistModelDraw ) - { - iHwrBox->PausePlaying(); - } - } - iHwrBox->SetFocus( IsFocused() ); - } - -// --------------------------------------------------------------------------- -// Return the currently selected index, which will be set in Shortcuts view. -// --------------------------------------------------------------------------- -// -TInt CTruiShortcutEditContainer::DefaultSelectedIndex( const CDesCArray* aItemList, - const TDesC& aText ) - { - if ( aItemList ) - { - for ( TInt i = 0; i < aItemList->Count(); i++ ) - { - if ( (*aItemList)[i].Compare( aText ) == 0 ) - { - return i + 1; - } - } - } - return KErrNotFound; - } - -// --------------------------------------------------------------------------- -// Popup SCT dialog. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::PopupSctDialogL() - { - TBuf selectedStr; - CAknCharMapDialog* sct = new (ELeave) CAknCharMapDialog( EAknSCTLowerCase, - selectedStr, - R_TRUI_SCT_CHARSET_PRESET ); - TInt keyboardMode = CurrentKeyBoardModeL(); - if ( keyboardMode ) - { - // QWERTY: Lock numeric keys. - sct->LockNumericKeys( ETrue ); - } - else - { - // ITU-T: Unlock numeric keys. - sct->LockNumericKeys( EFalse ); - } - sct->DisableRecentCharsRow(); - if ( sct->ExecuteLD( R_TRUI_SCT_DIALOG ) ) - { - TInt selectedUnicode = selectedStr.Length() ? selectedStr[0] : NULL; - TBool isInUse = CheckPresetSymbolInUseL( selectedUnicode ); - if ( isInUse && selectedUnicode != iUnicodeBak ) - { - // Preset is in use - //Popup err message - PopupTooltipL( R_TRUI_SHORTCUTEDITVIEW_ERROR_NOTE_IN_USE ); - return; - } - else - { - TInt activePos = iPresets.Find( selectedUnicode ); - - // Set active char pos - iActiveCharPos = ( activePos != KErrNotFound ) ? activePos : 0; - iUnicode = iPresets[iActiveCharPos]; - SetActiveCharL( selectedUnicode ); - } - } - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Handles a change to the control's resources. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditContainer::HandleResourceChange( TInt aType ) - { - CTruiContainerBase::HandleResourceChange( aType ); - if ( aType == KEikDynamicLayoutVariantSwitch && iHwrBox ) - { - if ( iHwrBox->BoxState() == CTruiHwrBox::ENewModelDraw ) - { - TRAP_IGNORE( iHwrBox->SaveModelByManuallyL() ); - } - } - - if ( aType == KAknsMessageSkinChange ) - { - TRgb labelColor = KRgbBlack; - TInt error = GetCachedLabelTextColor( labelColor ); - if ( error == KErrNone ) - { - TRAPD( errLable, iLabelTip->OverrideColorL( EColorLabelText, - labelColor ) ); - if ( errLable != KErrNone ) - { - return; - } - TRAP_IGNORE( iIndicator->OverrideColorL( EColorLabelText, - labelColor ) ); - } - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truishortcutedittextview.cpp --- a/textinput/peninputhwrtrui/src/truishortcutedittextview.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiShortcutEditTextView -* -*/ - - -#include -#include -#include -#include - -#include "truiappui.h" -#include "truishortcutedittextview.h" -#include "truitextsettingpagecontainer.h" -#include "truiengine.h" -#include "truiinfomessageview.h" -#include "truiapplication.h" -#include "truishortcuteditview.h" -#include "truishortcutsview.h" -#include "truicontainerbase.h" - -// ======== MEMBER FUNCTIONS ======== - -CTruiShortcutEditTextView::CTruiShortcutEditTextView() - { - } - -void CTruiShortcutEditTextView::ConstructL() - { - BaseConstructL(R_TRUI_SHORTCUTEDITTEXTVIEW); - } - -CTruiShortcutEditTextView* CTruiShortcutEditTextView::NewL() - { - CTruiShortcutEditTextView* self = CTruiShortcutEditTextView::NewLC(); - CleanupStack::Pop( self ); - return self; - } - -CTruiShortcutEditTextView* CTruiShortcutEditTextView::NewLC() - { - CTruiShortcutEditTextView* self = new( ELeave ) CTruiShortcutEditTextView; - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -CTruiShortcutEditTextView::~CTruiShortcutEditTextView() - { - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Returns views id. -// --------------------------------------------------------------------------- -// -TUid CTruiShortcutEditTextView::Id() const - { - return KTruiShortcutEditTextViewId; - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is activated -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditTextView::DoActivateL( const TVwsViewId& aPrevViewId, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - CTruiAppUi* appui = static_cast( AppUi() ); - if ( aPrevViewId == TVwsViewId( KUidtruiApp, KTruiInfoMessageViewId ) - || aPrevViewId == TVwsViewId( KUidtruiApp, KTruiShortcutsViewId ) ) - { - if ( appui->HwrEngine()->NewShortcut() ) - { - iStartView = TVwsViewId( KUidtruiApp, KTruiInfoMessageViewId ); - } - else - { - iStartView = aPrevViewId; - } - } - - // Set title pane - if ( iStartView == TVwsViewId( KUidtruiApp, KTruiInfoMessageViewId ) ) - { - HBufC* titleText = iEikonEnv->AllocReadResourceLC - ( R_TRUI_SHORTCUTEDITTEXTVIEW_TITLEPANE_TEXT ); - HBufC* titleNumber = iEikonEnv->AllocReadResourceLC - ( R_TRUI_SHORTCUTEDITTEXTVIEW_TITLEPANE_NUMBER ); - - // Offer new locfile by localization team - HBufC* titlePaneText = iEikonEnv->AllocReadResourceLC - ( R_TRUI_SHORTCUTEDITVIEW_TITLEPANE_TEXT ); - appui->ShowTitlePaneL( *titlePaneText ); - CleanupStack::PopAndDestroy( titlePaneText ); - CleanupStack::PopAndDestroy( titleNumber ); - CleanupStack::PopAndDestroy( titleText ); - } - else if ( iStartView == TVwsViewId( KUidtruiApp, KTruiShortcutsViewId ) ) - { - HBufC* titleText = iEikonEnv->AllocReadResourceLC - ( R_TRUI_SHORTCUTEDITTEXTVIEW_TITLEPANE_TEXT ); - appui->ShowTitlePaneL( *titleText ); - CleanupStack::PopAndDestroy( titleText ); - } - - // Close navi pane - appui->CloseNaviPaneL(); - - // Open container - if ( iStartView == TVwsViewId( KUidtruiApp, KTruiInfoMessageViewId ) ) - { - iContainer = CTruiTextSettingPageContainer::NewL - ( R_TRUI_SHORTCUT_WIZARD_EDITOR, - appui->HwrEngine()->Shortcut(), - ClientRect(), - EFalse, - CAknTextSettingPage::EPutCursorAtEnd | - CAknTextSettingPage::EPredictiveTextEntryPermitted ); - } - else - { - iContainer = CTruiTextSettingPageContainer::NewL - ( R_TRUI_SHORTCUT_EDIT_TEXT_EDITOR, - appui->HwrEngine()->Shortcut(), - ClientRect(), - ETrue, - CAknTextSettingPage::EPutCursorAtEnd | - CAknTextSettingPage::EPredictiveTextEntryPermitted ); - } - AppUi()->AddToStackL( *this, iContainer ); - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is deactivated -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditTextView::DoDeactivate() - { - if ( iContainer ) - { - AppUi()->RemoveFromStack( iContainer ); - delete iContainer; - iContainer = NULL; - } - - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truishortcuteditview.cpp --- a/textinput/peninputhwrtrui/src/truishortcuteditview.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,195 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiShortcutEditView -* -*/ - - -#include -#include -#include -#include -#include -#include - -#include "truishortcuteditview.h" -#include "truishortcuteditcontainer.h" -#include "truiappui.h" -#include "trui.hrh" -#include "truishortcutsview.h" -#include "truiapplication.h" -#include "truiengine.h" -#include "truishortcutedittextview.h" - -_LIT( KSeperatorBetweenTitle, " " ); - -// ======== MEMBER FUNCTIONS ======== - -CTruiShortcutEditView::CTruiShortcutEditView() - { - } - -void CTruiShortcutEditView::ConstructL() - { - BaseConstructL( R_TRUI_SHORTCUTEDITVIEW ); - } - -CTruiShortcutEditView* CTruiShortcutEditView::NewL() - { - CTruiShortcutEditView* self = CTruiShortcutEditView::NewLC(); - CleanupStack::Pop( self ); - return self; - } - -CTruiShortcutEditView* CTruiShortcutEditView::NewLC() - { - CTruiShortcutEditView* self = new( ELeave ) CTruiShortcutEditView; - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -CTruiShortcutEditView::~CTruiShortcutEditView() - { - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Returns views id. -// --------------------------------------------------------------------------- -// -TUid CTruiShortcutEditView::Id() const - { - return KTruiShortcutEditViewId; - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Command handling function. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditView::HandleCommandL( TInt aCommand ) - { - switch ( aCommand ) - { - case EAknSoftkeyDone: - { - if ( iContainer->PrepareToExitL() ) - { - iContainer->SwitchToShortcutViewL(); - } - break; - } - case EAknSoftkeyBack: - { - iContainer->BackToPreviousViewL(); - break; - } - } - } - - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is activated -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditView::DoActivateL( const TVwsViewId& aPrevViewId, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - iPreViewId = aPrevViewId; - CTruiAppUi* appui = static_cast( AppUi() ); - CEikButtonGroupContainer* cba = Cba(); - // Set title pane and SK1's text - if ( aPrevViewId == TVwsViewId( KUidtruiApp, KTruiShortcutsViewId ) ) - { - appui->ShowTitlePaneL( appui->HwrEngine()->Shortcut() ); - cba->SetCommandSetL( R_AVKON_SOFTKEYS_DONE_BACK ); - } - else if ( aPrevViewId == TVwsViewId( KUidtruiApp, KTruiShortcutEditTextViewId ) ) - { - HBufC* numberText = iEikonEnv->AllocReadResourceLC - ( R_TRUI_SHORTCUTEDITTEXTVIEW_TITLEPANE_LAST_NUMBER ); - HBufC* title = HBufC::NewLC( appui->HwrEngine()->Shortcut().Length() - + numberText->Length() + KExtraSize ); - TPtr titlePtr = title->Des(); - titlePtr.Copy( *numberText ); - titlePtr.Append( KSeperatorBetweenTitle ); - titlePtr.Append( appui->HwrEngine()->Shortcut() ); - appui->ShowTitlePaneL( *title ); - CleanupStack::PopAndDestroy( title ); - CleanupStack::PopAndDestroy( numberText ); - cba->SetCommandSetL( R_TRUI_SHORTCUTEDITVIEW_CREATE_CBA ); - } - - // Close navi pane - appui->CloseNaviPaneL(); - - iContainer = CTruiShortcutEditContainer::NewL( ClientRect() ); - iContainer->SetMopParent( this ); - AppUi()->AddToStackL( *this, iContainer ); - iContainer->SetView( this ); - - // Set toolbar - CAknToolbar* toolbar = Toolbar(); - if ( toolbar ) - { - toolbar->SetToolbarObserver( this ); - toolbar->SetToolbarVisibility( ETrue, EFalse ); - } - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is deactivated -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditView::DoDeactivate() - { - if ( iContainer ) - { - AppUi()->RemoveFromStack( iContainer ); - delete iContainer; - iContainer = NULL; - } - } - -// --------------------------------------------------------------------------- -// From class MAknToolbarObserver. -// Handles toolbar events for a certain toolbar item. -// --------------------------------------------------------------------------- -// -void CTruiShortcutEditView::OfferToolbarEventL( TInt aCommand ) - { - switch ( aCommand ) - { - case EShortcutEditViewDelete: - { - iContainer->ClearCurrentModelL(); - break; - } - case EShortcutEditViewPreviewModel: - { - iContainer->PreviewShortcutModel(); - break; - } - case EShortcutEditViewGrid: - { - iContainer->PopupSctDialogL(); - break; - } - } - } - diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truishortcutscontainer.cpp --- a/textinput/peninputhwrtrui/src/truishortcutscontainer.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1010 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiShortcutsContainer -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "truicontainerbase.h" -#include "truishortcutscontainer.h" -#include "truimainview.h" -#include "truiengine.h" -#include "truiappui.h" -#include "truiengine.h" -#include "truishortcuteditview.h" -#include "trui.hrh" -#include "truiapplication.h" -#include "truihelp.h" -#include "truihwrbox.h" -#include "truishortcutedittextview.h" -#include "truiinfomessageview.h" -#include "truishortcutsview.h" - -_LIT( KTRUIICONSFILENAME, "\\resource\\apps\\trui_icons.mif" ); - -// Initialized size for item array -const TInt KItemArraySize = 1; - -// Initialized size for icon array -const TInt KIconArraySize = 3; - -// listbox item format string -_LIT( KListItemWithPicFormat, "1\t%S\t\t" ); -_LIT( KListItemFormat, "\t%S\t\t" ); - -// Delay time of showing tooltip -const TTimeIntervalMicroSeconds32 KTooltipShowDelay = 1000000; - -// Delay time of hiding tooltip -const TTimeIntervalMicroSeconds32 KTooltipHideDelay = 3000000; - -// Rect of popup hwrbox -const TRect KPopupHwrBoxRect = TRect( TPoint( 0, 0 ), TSize( 75, 75 ) ); - -const TPoint KPopupHwrBoxPosLandscape = TPoint( 479, 360 ); -const TPoint KPopupHwrBoxPosPortrait = TPoint( 337, 500 ); - -const TInt KPopupWindowVarity = 0; - -const TInt KParaDelimiterSize = 1; -_LIT( KParaDelimiterFormat, "%c" ); - -// ======== MEMBER FUNCTIONS ======== - -CTruiShortcutsContainer::CTruiShortcutsContainer() - { - } - -void CTruiShortcutsContainer::ConstructL( const TRect& aRect ) - { - // Initialize control array - InitComponentArrayL(); - - // Set parent control or owning window - CreateWindowL(); - - // Load shortcuts - iEngine->UpdateShortcutListL(); - - // Initialize controls - InitializeControlsL(); - SetRect( aRect ); - - // Set default selected index - iListBox->SetCurrentItemIndex( iEngine->CurrentSelectedIndex() ); - - HandleListBoxFocusChangedL( CurrentItemIndex() ); - - ActivateL(); - } - -CTruiShortcutsContainer* CTruiShortcutsContainer::NewL( const TRect& aRect ) - { - CTruiShortcutsContainer* self = CTruiShortcutsContainer::NewLC( aRect ); - CleanupStack::Pop( self ); - return self; - } - -CTruiShortcutsContainer* CTruiShortcutsContainer::NewLC - ( const TRect& aRect ) - { - CTruiShortcutsContainer* self = new (ELeave) CTruiShortcutsContainer(); - CleanupStack::PushL( self ); - self->ConstructL( aRect ); - return self; - } - -CTruiShortcutsContainer::~CTruiShortcutsContainer() - { - delete iPopupController; - delete iHwrBox; - } - -// --------------------------------------------------------------------------- -// Create controls to be displayed in this container. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::InitializeControlsL() - { - // Create toolbar - CAknToolbar* toolbar = iAppUi->View( KTruiShortcutsViewId )->Toolbar(); - // Get Clear button from toolbar - CAknButton* deleteButton = static_cast - ( toolbar->ControlOrNull( EShortcutsViewButtonIdDelete ) ); - - // Create listbox - CreateListBoxL(); - - // Create preview popup window - iPopupController = CreatePopupHwrBoxL(); - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Responds to changes to the size and position of the contents of this control. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::SizeChanged() - { - if ( iListBox ) - { - iListBox->SetRect( Rect() ); - } - - // caculate main pane - TRect rect = Rect(); - TAknWindowComponentLayout main_pane_layout = - AknLayoutScalable_Apps::main_hwr_training_pane(); - TAknLayoutRect main_pane_layout_rect; - main_pane_layout_rect.LayoutRect( rect, main_pane_layout ); - TRect main_pane_rect = main_pane_layout_rect.Rect(); - - // Calculate popup_hwr_training_preview_window - TAknWindowComponentLayout preview_popup_layout = - AknLayoutScalable_Apps::popup_hwr_training_preview_window - ( KPopupWindowVarity ); - TAknLayoutRect preview_popup_layout_rect; - preview_popup_layout_rect.LayoutRect( main_pane_rect, preview_popup_layout ); - - iHwrBox->SetSize( preview_popup_layout_rect.Rect().Size() ); - - TPoint itemPos = PopupWindowPosition( CurrentItemIndex() ); - iPopupController->SetPosition( itemPos ); - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// This is called whenever the control gains or loses focus, -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::FocusChanged( TDrawNow /*aDrawNow*/ ) - { - if ( IsFocused() ) - { - if ( iDisplayPopupWindow ) - { - TRAPD( err, CheckAndPreviewShortcutModelL( CurrentItemIndex() ) ); - if ( err != KErrNone ) - { - iDisplayPopupWindow = EFalse; - } - } - } - else - { - // Close pupup preview window - iPopupController->HidePopUp(); - } - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Handles pointer events. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent ) - { - iPenDownPoint = aPointerEvent.iPosition; - CCoeControl::HandlePointerEventL( aPointerEvent ); - } - -// --------------------------------------------------------------------------- -// Popup the TextSettingPage and added the new shortcut to ListBox. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::AddShortcutL() - { - iEngine->NewShortcut( ETrue ); - iEngine->SetShortcut( KNullDesC ); - // Get always display setting from ini file - TInt isNotDisplayWizard = 0; - TRAPD( err, GetSettingFromIniFileL( KAlwaysDisplayWizardKey, isNotDisplayWizard ) ); - if ( err != KErrNone ) - { - isNotDisplayWizard = 0; - } - - if ( isNotDisplayWizard ) - { - iEngine->SetDisplayWizard( EFalse ); - iAppUi->ActivateLocalViewL( KTruiShortcutEditTextViewId ); - } - else - { - iEngine->SetDisplayWizard( ETrue ); - iAppUi->ActivateLocalViewL( KTruiInfoMessageViewId ); - } - } - -// --------------------------------------------------------------------------- -// Edit shortcut -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::EditShortcutL( TBool aOnlyEditText ) - { - CDesCArray* shortcutlist = iEngine->ShortcutTextList(); - TInt posInEngine = iListBox->CurrentItemIndex() - 1; - iEngine->SetShortcut( shortcutlist->MdcaPoint( posInEngine ) ); - iEngine->NewShortcut( EFalse ); - // Switch to shortcut edit view - if ( aOnlyEditText ) - { - iAppUi->ActivateLocalViewL( KTruiShortcutEditTextViewId ); - } - else - { - iAppUi->ActivateLocalViewL( KTruiShortcutEditViewId ); - } - } - -// --------------------------------------------------------------------------- -// Check if reset introduction -// --------------------------------------------------------------------------- -// -TBool CTruiShortcutsContainer::IsResetIntroduction() - { - TInt value = 0; - TRAPD( err, GetSettingFromIniFileL( KAlwaysDisplayWizardKey, value ) ); - if ( err != KErrNone ) - { - value = 0; - } - return value ? ETrue: EFalse; - } - -// --------------------------------------------------------------------------- -// Reset introduction -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::ResetIntroductionL() - { - SaveSettingIntoIniFileL( KAlwaysDisplayWizardKey, 0 ); - iAppUi->ActivateLocalViewL( KTruiInfoMessageViewId ); - } - -// --------------------------------------------------------------------------- -// From MEikListBoxObserver -// Handle event from an listbox -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::HandleListBoxEventL( CEikListBox* /*aListBox*/, - TListBoxEvent aEventType ) - { - switch( aEventType ) - { - case EEventPenDownOnItem: - { - iPopupController->HidePopUp(); - // Check index - TInt index = CurrentItemIndex(); - iListBox->View()->XYPosToItemIndex( iPenDownPoint, index ); - // Popup preview window - HandleListBoxFocusChangedL( index ); - } - break; - case EEventItemClicked: - { - break; - } - case EEventItemDoubleClicked: - { - if ( CurrentItemIndex() > 0 ) - { - if ( MarkCount() == 0 ) - { - // Pop context menu - PopupContextMenuL( R_TRUI_SHORTCUTSVIEW_CONTEXT_MENUBAR ); - } - } - else - { - // Tap on "New shortcut" - AddShortcutL(); - } - // Set the current index into engine - // Update toolbar button's status - break; - } - case EEventItemDraggingActioned: - { - iPopupController->HidePopUp(); - TInt index = CurrentItemIndex(); - iListBox->View()->XYPosToItemIndex( iPenDownPoint, index ); - // Popup preview window - HandleListBoxFocusChangedL( index ); - break; - } - } - } - -// --------------------------------------------------------------------------- -// From class CCoeControl. -// Handles key event. -// --------------------------------------------------------------------------- -// -TKeyResponse CTruiShortcutsContainer::OfferKeyEventL - ( const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - if ( aType == EEventKey ) - { - switch ( aKeyEvent.iCode ) - { - case EKeyLeftArrow: - { - CAknNavigationDecorator* naviDecorator = - iAppUi->GetNaviDecorator(); - CAknTabGroup* tabGroup = static_cast - ( naviDecorator->DecoratedControl() ); - return tabGroup->OfferKeyEventL( aKeyEvent, aType ); - } - case EKeyRightArrow: - { - return EKeyWasConsumed; - } - case EKeyUpArrow: - case EKeyDownArrow: - { - if ( iListBox ) - { - iPopupController->HidePopUp(); - TKeyResponse keyResponse = iListBox->OfferKeyEventL - ( aKeyEvent, aType ); - // Set the CBA button - if ( IsMarked( 0 ) ) - { - iListBox->SetCurrentItemIndex( 0 ); - AknSelectionService::HandleMarkableListProcessCommandL - ( EAknCmdUnmark, iListBox ); - iListBox->SetCurrentItemIndexAndDraw( iEngine->CurrentSelectedIndex() ); - } - HandleListBoxFocusChangedL( CurrentItemIndex() ); - return keyResponse; - } - } - case EKeyEnter: - case EKeyOK: - { - - if ( iListBox != NULL && CurrentItemIndex() == 0 ) - { - // Select "Create new shortcut" item - AddShortcutL(); - } - else - { - if ( MarkCount() == 0 ) - { - // Pop context menu - PopupContextMenuL( R_TRUI_SHORTCUTSVIEW_CONTEXT_MENUBAR ); - } - } - return EKeyWasConsumed; - } - default: - break; - } - } - return EKeyWasNotConsumed; - } - -// --------------------------------------------------------------------------- -// Gets the control's help context. Returns a NULL context by default. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::GetHelpContext( TCoeHelpContext& aContext ) const - { - aContext.iMajor = KUidtruiApp; - aContext.iContext = HWRT_HLP_SHORTCUTS; - } - -// --------------------------------------------------------------------------- -// Delete shortcut from ListBox -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::DeleteItemsL() - { - CTextListBoxModel* model = iListBox->Model(); - CDesCArray* itemArray = static_cast( model->ItemTextArray() ); - if ( MarkCount() > 0 ) - { - // Delete all marked items, ignoring the selected item. - RArray selectionIndexes; - CleanupClosePushL( selectionIndexes ); - const CArrayFix* indexArray = iListBox->SelectionIndexes(); - TInt indexArrayLen = indexArray->Count(); - - // Copy the selection indexes array into RArray - for ( TInt i = 0; i < indexArrayLen; i++ ) - { - selectionIndexes.Append( ( *indexArray )[i] ); - } - selectionIndexes.Sort(); - // Delete all marked items - TInt selectionCount = selectionIndexes.Count(); - for ( TInt i = selectionCount - 1; i >= 0; i-- ) - { - // Delete item from Engine - TInt itemArrayIndex = selectionIndexes[i]; - CDesCArray* shortcutList = iEngine->ShortcutTextList(); - - if ( shortcutList ) - { - iEngine->DeleteShortcut( (*shortcutList)[itemArrayIndex-1] ); - // Delete the currently selected item from array - itemArray->Delete( itemArrayIndex ); - // Update ListBox - AknListBoxUtils::HandleItemRemovalAndPositionHighlightL( iListBox, - itemArrayIndex, - ETrue); - } - } - CleanupStack::PopAndDestroy( &selectionIndexes ); // selectionIndexes - } - else - { - // Delete the currently selected item. - // Get the currently selected item - TInt selectedIndex = CurrentItemIndex(); - - // Delete item from Engine - CDesCArray* shortcutList = iEngine->ShortcutTextList(); - if ( shortcutList ) - { - iEngine->DeleteShortcut( (*shortcutList)[selectedIndex-1] ); - // Delete the currently selected item from array - itemArray->Delete( selectedIndex ); - // Update ListBox - AknListBoxUtils::HandleItemRemovalAndPositionHighlightL( iListBox, - selectedIndex, - ETrue); - } - } - iListBox->DrawNow(); - iEngine->UpdateShortcutListL(); - // Set the current CBA - HandleListBoxFocusChangedL( CurrentItemIndex() ); - } - -// --------------------------------------------------------------------------- -// Delete shortcut -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::DeleteShortcutL() - { - // Popup note dialog - CAknQueryDialog* dlg = CAknQueryDialog::NewL(); - HBufC* prompt = NULL; - TInt count = MarkCount(); - if ( count ) - { - prompt = StringLoader::LoadLC( R_QTN_HWRT_QUERY_DELETE_SEVERAL_SHORTCUTS, count ); - } - else - { - prompt = StringLoader::LoadLC( R_QTN_HWRT_QUERY_DELETE_SHORTCUT ); - } - - if ( dlg->ExecuteLD( R_TRUI_QUERYDIALOG_DELETE_SHORTCUT, *prompt ) ) - { - // press yes - // Delete item from Listbox, also delete from Engine in it. - iPopupController->HidePopUp(); - DeleteItemsL(); - } - CleanupStack::PopAndDestroy( prompt ); // prompt - } - -// --------------------------------------------------------------------------- -// Handle event when listbox change to another focused item. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::HandleListBoxFocusChangedL( TInt aIndex ) - { - // Set the current index into engine - iEngine->SetCurrentSelectedIndex( aIndex ); - // Update toolbar button's status - UpdateToolbarButtonStatus( aIndex ); - // Draw current item // add this line - iListBox->DrawItem( aIndex ); // add this line - // Preview shortcut model if it has model. - CheckAndPreviewShortcutModelL( aIndex ); - } - -// --------------------------------------------------------------------------- -// Mark shortcut -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::MarkShortcutL() - { - // The first item mustn't be marked - TInt currentIndex = CurrentItemIndex(); - if ( currentIndex != 0 ) - { - AknSelectionService::HandleMarkableListProcessCommandL( EAknCmdMark, - iListBox ); - } - - CAknToolbar* toolbar = iAppUi->View( KTruiShortcutsViewId )->Toolbar(); - if ( toolbar ) - { - // Set edit text button's status - CAknButton* editTextButton = static_cast - ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditText ) ); - editTextButton->SetDimmed( ETrue ); - editTextButton->DrawNow(); - // Set edit model button's status - CAknButton* editModelButton = static_cast - ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditModel ) ); - editModelButton->SetDimmed( ETrue ); - editModelButton->DrawNow(); - } - } - -// --------------------------------------------------------------------------- -// Unmark shortcut -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::UnmarkShortcutL() - { - // The first item mustn't be unmarked - TInt currentIndex = CurrentItemIndex(); - if ( currentIndex != 0 ) - { - AknSelectionService::HandleMarkableListProcessCommandL( EAknCmdUnmark, - iListBox ); - } - if ( MarkCount() == 0 ) - { - CAknToolbar* toolbar = iAppUi->View( KTruiShortcutsViewId )->Toolbar(); - if ( toolbar ) - { - // Set edit text button's status - CAknButton* editTextButton = static_cast - ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditText ) ); - editTextButton->SetDimmed( EFalse ); - editTextButton->DrawNow(); - // Set edit model button's status - CAknButton* editModelButton = static_cast - ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditModel ) ); - editModelButton->SetDimmed( EFalse ); - editModelButton->DrawNow(); - } - } - } - -// --------------------------------------------------------------------------- -// Return current selected item's index -// --------------------------------------------------------------------------- -// -TInt CTruiShortcutsContainer::CurrentItemIndex() - { - return iListBox->CurrentItemIndex(); - } - -// --------------------------------------------------------------------------- -// Test if the currently selected index is marked -// --------------------------------------------------------------------------- -// -TBool CTruiShortcutsContainer::IsMarked( TInt aSelectedIndex ) - { - const CArrayFix* aIndexArray = iListBox->SelectionIndexes(); - for ( TInt index = 0; index < aIndexArray->Count(); index++ ) - { - if ( aSelectedIndex == ( *aIndexArray )[index] ) - { - return ETrue; - } - } - return EFalse; - } - -// --------------------------------------------------------------------------- -// Return the count of being marked currently. -// --------------------------------------------------------------------------- -// -TInt CTruiShortcutsContainer::MarkCount() - { - const CArrayFix* aIndexArray = iListBox->SelectionIndexes(); - return aIndexArray->Count(); - } - -// --------------------------------------------------------------------------- -// Create preview popup controller to show popup hwrbox. -// --------------------------------------------------------------------------- -// -CAknPreviewPopUpController* CTruiShortcutsContainer::CreatePopupHwrBoxL() - { - iHwrBox = CTruiHwrBox::NewL( this, NULL ); - iHwrBox->SetHwrBoxFlag( CTruiHwrBox::ENoFrameHwrBox - | CTruiHwrBox::EReadOnlyHwrBox ); - CAknPreviewPopUpController* popupController = - CAknPreviewPopUpController::NewL - ( *iHwrBox, CAknPreviewPopUpController::EPermanentMode ); - popupController->AddObserverL( *this ); - return popupController; - } - -// --------------------------------------------------------------------------- -// Show the text tooltip. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::PopupHwrBoxL( const TPoint& aPosition, - const TTimeIntervalMicroSeconds32& aShowDelay, - const TTimeIntervalMicroSeconds32& aHideDelay ) - { - if ( iPopupController && iHwrBox ) - { - iPopupController->SetPosition( aPosition ); - // Set hwrbox's rect to engine and set guiding line to hwrbox - iHwrBox->SetDisplayBottomGuideLine( ETrue ); - if ( iEngine->CurrentLanguageScript() == EMainViewSubmenuHebrew ) - { - iHwrBox->SetDisplayTopGuideLine( ETrue ); - } - iPopupController->SetPopUpShowDelay( aShowDelay ); - iPopupController->SetPopUpHideDelay( aHideDelay ); - iPopupController->ShowPopUp(); - } - } - -// --------------------------------------------------------------------------- -// Preview shortcut model in popup hwrbox. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::PreviewShortcutModelL( const TDesC& aShortcutText, - TInt aIndex ) - { - // Get shortcut model - if ( iEngine->CheckShortcutModel( aShortcutText ) ) - { - TRAPD( err, iEngine->GetShortcutModelL( aShortcutText, - iHwrBox->Model(), - iShortcutUnicode ) ); - if ( err == KErrNone ) - { - // Popup hwrbox - // Get position for popup window - TPoint itemPos = PopupWindowPosition( aIndex ); - PopupHwrBoxL( itemPos, - KTooltipShowDelay, - KTooltipHideDelay ); - } - } - } - -// --------------------------------------------------------------------------- -// Called by the preview popup when an appropriate event takes place. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::HandlePreviewPopUpEventL( - CAknPreviewPopUpController* aController, TPreviewPopUpEvent aEvent ) - { - if ( aController == iPopupController && aEvent == EPreviewPopUpShown ) - { - TSize refSize = CTruiContainerBase::OriginSymbolSize(); - iHwrBox->ShowTrails( iHwrBox->Model(), ETrue, refSize ); - iDisplayPopupWindow = EFalse; - } - else - { - iHwrBox->ClearExistModel(); - iHwrBox->DrawNow(); - iDisplayPopupWindow = ETrue; - } - } - -// --------------------------------------------------------------------------- -// Create list box to display all shortcut -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::CreateListBoxL() - { - // listbox instance - iListBox = new (ELeave) CAknSingleGraphicStyleListBox; - Components().AppendLC( iListBox ); - CleanupStack::Pop( iListBox ); // iListBox - - // Construct listbox - iListBox->ConstructL( this, EAknListBoxMarkableList ); - - // Set container control - iListBox->SetContainerWindowL( *this ); - - // Set observer - iListBox->SetListBoxObserver( this ); - - // Add scrollbars to listbox - iListBox->CreateScrollBarFrameL(ETrue); - iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( - CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto ); - - // Get shortcut list from engine - CDesCArray* primalList = iEngine->ShortcutTextList(); - - LoadTextArrayL( primalList ); - - // construct icon array with granularity 3 - CArrayPtr* iconList = new (ELeave) CAknIconArray( KIconArraySize ); - CleanupStack::PushL( iconList ); - CFbsBitmap* bitmap; - CFbsBitmap* bitmapm; - - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - AknsUtils::CreateColorIconL( skin, - KAknsIIDQgnIndiMarkedAdd, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG16, - bitmap, - bitmapm, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_indi_marked_add, - EMbmTrui_iconsQgn_indi_marked_add_mask, - KRgbBlack - ); - CleanupStack::PushL( bitmap ); - CleanupStack::PushL( bitmapm ); - CGulIcon* iconMark = CGulIcon::NewL( bitmap, bitmapm ); // Ownership transfered - CleanupStack::Pop( bitmapm ); - CleanupStack::Pop( bitmap ); - CleanupStack::PushL( iconMark ); - iconList->AppendL( iconMark ); - CleanupStack::Pop( iconMark ); - - AknsUtils::CreateIconL( skin, - KAknsIIDQgnPropHwrTrainingShortcut, - bitmap, - bitmapm, - KTRUIICONSFILENAME, - EMbmTrui_iconsQgn_prop_hwrtraining_shortcut_new, - EMbmTrui_iconsQgn_prop_hwrtraining_shortcut_new_mask - ); - CleanupStack::PushL( bitmap ); - CleanupStack::PushL( bitmapm ); - CGulIcon* iconNew = CGulIcon::NewL( bitmap, bitmapm ); // Ownership transfered - CleanupStack::Pop( bitmapm ); - CleanupStack::Pop( bitmap ); - CleanupStack::PushL( iconNew ); - iconList->AppendL( iconNew ); - CleanupStack::Pop( iconNew ); - - iListBox->ItemDrawer()->ColumnData()->SetIconArray( iconList ); - - CleanupStack::Pop( iconList ); // iconList - - iListBox->SetFocus( ETrue ); - // update listbox - iListBox->ActivateL(); - } - -// --------------------------------------------------------------------------- -// Setup text data for listbox -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::LoadTextArrayL( const CDesCArray* aTextArray ) - { - // Construct listbox item array. - // The items in the list contain an option of create new shortcut - // and the primal shortcuts from HWR engine - CDesCArray* itemList = new (ELeave) CDesCArrayFlat( KItemArraySize ); - CleanupStack::PushL(itemList); - - TBuf item; - HBufC* newShortcutText = StringLoader::LoadL( R_TRUI_SHORTCUTVIEW_NEW_SHORTCUT ); - item.Format( KListItemWithPicFormat, newShortcutText ); - delete newShortcutText; - newShortcutText = NULL; - itemList->AppendL(item); - - // if at least one shortcut exists - if ( aTextArray ) - { - // Item from WHR engine - for ( TInt i=0; i < aTextArray->Count(); i++ ) - { - TBuf itemPrimal; - itemPrimal = aTextArray->MdcaPoint(i); - item.Format( KListItemFormat, &itemPrimal ); - TBuf paraDelimiter; - paraDelimiter.Format( KParaDelimiterFormat, EKeyEnter ); - AknTextUtils::ReplaceCharacters( item, paraDelimiter, TChar( EKeySpace ) ); - itemList->AppendL( item ); - } - } - // set items and ownership - CleanupStack::Pop( itemList ); - iListBox->Model()->SetItemTextArray( itemList ); - iListBox->Model()->SetOwnershipType( ELbmOwnsItemArray ); - iListBox->HandleItemAdditionL(); - } - -// --------------------------------------------------------------------------- -// Popup context menu. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::PopupContextMenuL( TInt aResourceId ) - { - // Hide popup preview window - iPopupController->HidePopUp(); - // Popup context menu - CEikMenuBar* parentMenuBar = iAppUi->View( KTruiShortcutsViewId )->MenuBar(); - if ( parentMenuBar ) - { - parentMenuBar->SetMenuTitleResourceId( aResourceId ); - parentMenuBar->SetMenuType( CEikMenuBar::EMenuContext ); - parentMenuBar->TryDisplayMenuBarL(); - parentMenuBar->SetMenuTitleResourceId( R_TRUI_SHORTCUTSVIEW_MENUBAR ); - parentMenuBar->SetMenuType( CEikMenuBar::EMenuOptions ); - } - } - -// --------------------------------------------------------------------------- -// Get position relative to screen origin for popup window. -// --------------------------------------------------------------------------- -// -TPoint CTruiShortcutsContainer::PopupWindowPosition( TInt aIndex ) - { - // Place popup window to left-bottom - TPoint itemPos = iListBox->View()->ItemPos( aIndex ) - + iListBox->PositionRelativeToScreen(); - TSize itemSize = iListBox->View()->ItemSize( aIndex ); - itemPos.iY += itemSize.iHeight; - - // if direction is upforwards. - if ( Rect().iBr.iY + iListBox->PositionRelativeToScreen().iY - - ( itemPos.iY + iPopupController->Size().iHeight ) < 0 ) - { - itemPos.iY -= ( itemSize.iHeight + iPopupController->Size().iHeight ); - } - - if ( TBidiText::ScriptDirectionality( User::Language() ) - == TBidiText::ELeftToRight ) - { // None-arabic,hebrew, place popup window to right-bottom - itemPos.iX += itemSize.iWidth; - // Sub width of scroll bar - TInt scrollbarWidth = 0; - if ( iListBox->ScrollBarFrame() ) - { - scrollbarWidth = iListBox->ScrollBarFrame() - ->ScrollBarBreadth( CEikScrollBar::EVertical ); - } - itemPos.iX -= scrollbarWidth; - } - else - { - itemPos.iX += iPopupController->Size().iWidth; - } - return itemPos; - } - -// --------------------------------------------------------------------------- -// Check if need to preview shortcut and perform previewing necessarily. -// --------------------------------------------------------------------------- -// -TBool CTruiShortcutsContainer::CheckAndPreviewShortcutModelL( TInt aIndex ) - { - TBool ret = EFalse; - if ( aIndex > 0 ) - { - // Get selected shortcut text - CDesCArray* shortcutlist = iEngine->ShortcutTextList(); - TInt posInEngine = aIndex - 1; - // Popup hwr box to preview - PreviewShortcutModelL( shortcutlist->MdcaPoint( posInEngine ), aIndex ); - ret = ETrue; - } - else - { - iPopupController->HidePopUp(); - ret = EFalse; - } - return ret; - } - -// --------------------------------------------------------------------------- -// Update buttons' status in toolbar -// --------------------------------------------------------------------------- -// -void CTruiShortcutsContainer::UpdateToolbarButtonStatus( TInt aIndex ) - { - CAknToolbar* toolbar = iAppUi->View( KTruiShortcutsViewId )->Toolbar(); - if ( toolbar ) - { - // Set edit text button's status - CAknButton* editTextButton = static_cast - ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditText ) ); - if ( editTextButton ) - { - if ( aIndex > 0 ) - { - if ( MarkCount() > 0 ) - { - editTextButton->SetDimmed( ETrue ); - } - else - { - editTextButton->SetDimmed( EFalse ); - } - } - else - { - editTextButton->SetDimmed( ETrue ); - } - editTextButton->DrawNow(); - } - - // Set edit model button's status - CAknButton* editModelButton = static_cast - ( toolbar->ControlOrNull( EShortcutsViewButtonIdEditModel ) ); - if ( editModelButton ) - { - if( aIndex > 0 ) - { - if ( MarkCount() > 0 ) - { - editModelButton->SetDimmed( ETrue ); - } - else - { - CDesCArray* shortcutlist = iEngine->ShortcutTextList(); - TInt posInEngine = aIndex - 1; - if ( iEngine->CheckShortcutModel - ( shortcutlist->MdcaPoint( posInEngine ) ) ) - { - // Shortcut model exist and allow to edit model. - editModelButton->SetDimmed( EFalse ); - } - } - } - else - { - editModelButton->SetDimmed( ETrue ); - } - editModelButton->DrawNow(); - } - - // Set delete button's status - CAknButton* deleteButton = static_cast - ( toolbar->ControlOrNull( EShortcutsViewButtonIdDelete ) ); - if ( deleteButton ) - { - TBool isDimmed = aIndex > 0 ? EFalse : ETrue; - deleteButton->SetDimmed( isDimmed ); - deleteButton->DrawNow(); - } - } - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truishortcutsview.cpp --- a/textinput/peninputhwrtrui/src/truishortcutsview.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,302 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiShortcutsView -* -*/ - - -#include -#include -#include -#include -#include -#include - -#include "truishortcutsview.h" -#include "truishortcutscontainer.h" -#include "trui.hrh" -#include "truiappui.h" -#include "truishortcutedittextview.h" -#include "truimainview.h" - -// ======== MEMBER FUNCTIONS ======== - -CTruiShortcutsView::CTruiShortcutsView() - { - } - -void CTruiShortcutsView::ConstructL() - { - BaseConstructL( R_TRUI_SHORTCUTSVIEW ); - } - -CTruiShortcutsView* CTruiShortcutsView::NewL() - { - CTruiShortcutsView* self = CTruiShortcutsView::NewLC(); - CleanupStack::Pop( self ); - return self; - } - -CTruiShortcutsView* CTruiShortcutsView::NewLC() - { - CTruiShortcutsView* self = new( ELeave ) CTruiShortcutsView; - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -CTruiShortcutsView::~CTruiShortcutsView() - { - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Returns views id. -// --------------------------------------------------------------------------- -// -TUid CTruiShortcutsView::Id() const - { - return KTruiShortcutsViewId; - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Command handling function. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsView::HandleCommandL( TInt aCommand ) - { - switch ( aCommand ) - { - case EShortcutViewCreate: - { - iContainer->AddShortcutL(); - } - break; - case EShortcutViewEditText: - { - iContainer->EditShortcutL( ETrue ); - break; - } - case EShortcutViewEditModel: - { - iContainer->EditShortcutL( EFalse ); - } - break; - case EShortcutViewLinkToHandwritting: - { - // Set main view tab active - CTruiAppUi* appui = static_cast( AppUi() ); - CAknNavigationDecorator* naviDecorator = appui->GetNaviDecorator(); - CAknTabGroup* tabGroup = static_cast - ( naviDecorator->DecoratedControl() ); - tabGroup->SetActiveTabById( ENavigationPaneMainViewTab ); - // Switch to local view. - appui->ActivateLocalViewL( KTruiMainViewId ); - } - break; - case EShortcutViewMark: - { - iContainer->MarkShortcutL(); - } - break; - case EShortcutViewUnmark: - { - iContainer->UnmarkShortcutL(); - } - break; - case EShortcutViewResetInfoMessage: - { - iContainer->ResetIntroductionL(); - } - break; - case EShortcutViewDelete: - { - iContainer->DeleteShortcutL(); - } - break; - default: - { - AppUi()->HandleCommandL( aCommand ); - } - } - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is activated -// --------------------------------------------------------------------------- -// -void CTruiShortcutsView::DoActivateL( const TVwsViewId& /*aPrevViewId*/, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - // Set title pane - CTruiAppUi* appui = static_cast( AppUi() ); - HBufC* titleText = iEikonEnv->AllocReadResourceLC - ( R_TRUI_SHORTCUTSVIEW_TITLEPANE_TEXT ); - appui->ShowTitlePaneL( *titleText ); - CleanupStack::PopAndDestroy( titleText ); - - // Show navi pane - appui->ShowNaviPaneL(); - - iContainer = CTruiShortcutsContainer::NewL( ClientRect() ); - iContainer->SetMopParent( this ); - AppUi()->AddToStackL( *this, iContainer ); - iContainer->SetView( this ); - - // Set toolbar - CAknToolbar* toolbar = Toolbar(); - if ( toolbar ) - { - toolbar->SetToolbarObserver( this ); - toolbar->SetToolbarVisibility( ETrue, EFalse ); - } - } - -// --------------------------------------------------------------------------- -// From class CAknView. -// Carried out when View is deactivated -// --------------------------------------------------------------------------- -// -void CTruiShortcutsView::DoDeactivate() - { - if ( iContainer ) - { - AppUi()->RemoveFromStack( iContainer ); - delete iContainer; - iContainer = NULL; - } - } - - -// --------------------------------------------------------------------------- -// From MEikMenuObserver -// Dynamically initialises a menu pane. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsView::DynInitMenuPaneL( TInt aResourceId, - CEikMenuPane* aMenuPane ) - { - // Prepare to display popup window when focus return to container - iContainer->SetDisplayPopupWindow( ETrue ); - - if ( aResourceId == R_TRUI_SHORTCUTSVIEW_MENUPANE ) - { - // Check if "Edit" will be displayed when first item highlighted. - // Check if "Delete" will be displayed when first item highlighted. - // Check if "Mark" will be displayed when first item highlighted. - // Check if "Unmark" will be displayed when first item highlighted. - TInt currentIndex = iContainer->CurrentItemIndex(); - if ( currentIndex != 0 ) - { - if ( iContainer->MarkCount() > 0 ) - { - // At least one marked, "Edit" won't be displayed - aMenuPane->SetItemDimmed( EShortcutViewEditText, ETrue ); - aMenuPane->SetItemDimmed( EShortcutViewEditModel, ETrue ); - } - else - { - // All unmark, "Edit" will be displayed. - aMenuPane->SetItemDimmed( EShortcutViewEditText, EFalse ); - aMenuPane->SetItemDimmed( EShortcutViewEditModel, EFalse ); - } - aMenuPane->SetItemDimmed( EShortcutViewDelete, EFalse ); - aMenuPane->SetItemDimmed( EShortcutViewMark, EFalse ); - aMenuPane->SetItemDimmed( EShortcutViewUnmark, EFalse ); - if ( iContainer->IsMarked( currentIndex ) ) - { - // The currently selected item mark, display "Unmark" - aMenuPane->SetItemDimmed( EShortcutViewMark, ETrue ); - } - else - { - // The currently selected item unmark, display "Mark" - aMenuPane->SetItemDimmed( EShortcutViewUnmark, ETrue ); - } - - // Hide Reset introduction - aMenuPane->SetItemDimmed( EShortcutViewResetInfoMessage, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EShortcutViewEditText, ETrue ); - aMenuPane->SetItemDimmed( EShortcutViewEditModel, ETrue ); - aMenuPane->SetItemDimmed( EShortcutViewDelete, ETrue ); - aMenuPane->SetItemDimmed( EShortcutViewMark, ETrue ); - aMenuPane->SetItemDimmed( EShortcutViewUnmark, ETrue ); - - // Check value of setting of introduction - TBool isDimReset = iContainer->IsResetIntroduction() ? EFalse : ETrue; - aMenuPane->SetItemDimmed( EShortcutViewResetInfoMessage, isDimReset ); - } - } - } - -// --------------------------------------------------------------------------- -// From class MEikMenuObserver. -// Dynamically initialises a menu bar. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsView::DynInitMenuBarL( TInt aResourceId, - CEikMenuBar* /*aMenuBar*/ ) - { - if ( aResourceId == R_TRUI_SHORTCUTSVIEW_CONTEXT_MENUBAR ) - { - iContainer->SetDisplayPopupWindow( ETrue ); - } - } - -// --------------------------------------------------------------------------- -// From class MAknToolbarObserver. -// Handles toolbar events for a certain toolbar item. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsView::OfferToolbarEventL( TInt aCommand ) - { - switch ( aCommand ) - { - case EShortcutsViewButtonIdEditText: - { - // Open the text setting view - iContainer->EditShortcutL( ETrue ); - break; - } - case EShortcutsViewButtonIdEditModel: - { - // Open the shortcut edit view - iContainer->EditShortcutL( EFalse ); - break; - } - case EShortcutsViewButtonIdDelete: - { - iContainer->DeleteShortcutL(); - break; - } - } - } -// --------------------------------------------------------------------------- -// From CAknView. This function processes user commands. -// --------------------------------------------------------------------------- -// -void CTruiShortcutsView::ProcessCommandL( TInt aCommand ) - { - if ( !iContainer ) - { - return; - } - CAknView::ProcessCommandL( aCommand ); - } diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputhwrtrui/src/truitextsettingpagecontainer.cpp --- a/textinput/peninputhwrtrui/src/truitextsettingpagecontainer.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,343 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Implement of class CTruiTextSettingPageContainer -* -*/ - - -#include -#include -#include -#include -#include - -#include "truitextsettingpagecontainer.h" -#include "truihwrbox.h" -#include "truiappui.h" -#include "truiengine.h" -#include "truishortcutsview.h" -#include "truiapplication.h" -#include "truiinfomessageview.h" -#include "truishortcuteditview.h" -#include "truishortcutedittextview.h" -#include "trui.hrh" -#include "truicontainerbase.h" - -// Initialized size for hwrbox -const TSize KHwrboxSize = TSize( 100, 100 ); - -// The x-cordination of hwrbox pos -const TInt KHwrBoxPosPortraitX = 60; -const TInt KHwrBoxPosLandscapeX = 100; - -const TInt KPopupWindowVarity = 1; - -const TInt KParaDelimiterSize = 1; - -_LIT( KParaDelimiterFormat, "%c" ); - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Constructor. -// --------------------------------------------------------------------------- -// -CTruiTextSettingPageContainer::CTruiTextSettingPageContainer - ( TInt aResourceID, TDes& aText, TInt aTextSettingPageFlags ) - :CAknTextSettingPage( aResourceID, aText, aTextSettingPageFlags ) - { - } - -// --------------------------------------------------------------------------- -// Perform the second phase construction of a CTruiMainViewContainer object. -// --------------------------------------------------------------------------- -// -void CTruiTextSettingPageContainer::ConstructL( const TRect& aRect, TBool aEnableHwrBox ) - { - CAknTextSettingPage::ConstructL(); - TextControl()->SetObserver( this ); - // Check character model - CEikEdwin* edwin = static_cast( EditorControl() ); - HBufC* shortcutText = edwin->GetTextInHBufL(); - if ( shortcutText ) - { - // Replace paragraph seperator to line break - TPtr ptr = shortcutText->Des(); - TBuf paraDelimiter; - paraDelimiter.Format( KParaDelimiterFormat, EKeyEnter ); - AknTextUtils::ReplaceCharacters( ptr, paraDelimiter, - TChar( CEditableText::EParagraphDelimiter ) ); - CleanupStack::PushL( shortcutText ); - edwin->SetTextL( shortcutText ); - CleanupStack::PopAndDestroy( shortcutText ); - } - - if ( aEnableHwrBox ) - { - CTruiAppUi* appUi = static_cast( iAvkonViewAppUi ); - CTruiEngine* engine = appUi->HwrEngine(); - if ( engine->CheckShortcutModel( engine->Shortcut() ) ) - { - // Create hwrbox - iHwrBox = CTruiHwrBox::NewL( NULL, NULL ); - iHwrBox->SetHwrBoxFlag( CTruiHwrBox::ENoFrameHwrBox - | CTruiHwrBox::EReadOnlyHwrBox); - - // Create preview popup - iPopupController = CAknPreviewPopUpController::NewL - ( *iHwrBox, CAknPreviewPopUpController::EPermanentMode ); - iPopupController->AddObserverL( *this ); - // Set guide line - iHwrBox->SetDisplayBottomGuideLine( ETrue ); - if ( engine->CurrentLanguageScript() == EMainViewSubmenuHebrew ) - { - iHwrBox->SetDisplayTopGuideLine( ETrue ); - } - iPopupController->SetPopUpShowDelay( 0 ); - } - } - SetRect( aRect ); - if ( iPopupController ) - { - iPopupController->ShowPopUp(); - } - ActivateL(); - } - -// --------------------------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CTruiTextSettingPageContainer* CTruiTextSettingPageContainer::NewL - ( TInt aResourceId, - TDes& aText, - const TRect& aRect, - TBool aEnableHwrBox, - TInt aTextSettingPageFlags ) - { - CTruiTextSettingPageContainer* self = CTruiTextSettingPageContainer::NewLC - ( aResourceId, aText, - aRect, - aEnableHwrBox, - aTextSettingPageFlags ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CTruiTextSettingPageContainer* CTruiTextSettingPageContainer::NewLC - ( TInt aResourceId, - TDes& aText, - const TRect& aRect, - TBool aEnableHwrBox, - TInt aTextSettingPageFlags ) - { - CTruiTextSettingPageContainer* self = new (ELeave) - CTruiTextSettingPageContainer - ( aResourceId, aText, - aTextSettingPageFlags ); - CleanupStack::PushL( self ); - self->ConstructL( aRect, aEnableHwrBox ); - return self; - } - -// --------------------------------------------------------------------------- -// Destructor. -// --------------------------------------------------------------------------- -// - -CTruiTextSettingPageContainer::~CTruiTextSettingPageContainer() - { - delete iPopupController; - delete iHwrBox; - } - -// --------------------------------------------------------------------------- -// Responds to changes to the size and position of the contents of this control. -// --------------------------------------------------------------------------- -// -void CTruiTextSettingPageContainer::SizeChanged() - { - CAknTextSettingPage::SizeChanged(); - - if ( iHwrBox ) - { - // caculate main pane - TRect rect = Rect(); - TAknWindowComponentLayout main_pane_layout = - AknLayoutScalable_Apps::main_hwr_training_pane(); - TAknLayoutRect main_pane_layout_rect; - main_pane_layout_rect.LayoutRect( rect, main_pane_layout ); - TRect main_pane_rect = main_pane_layout_rect.Rect(); - - // Calculate popup_hwr_training_preview_window - TAknWindowComponentLayout preview_popup_layout = - AknLayoutScalable_Apps::popup_hwr_training_preview_window - ( KPopupWindowVarity ); - TAknLayoutRect preview_popup_layout_rect; - preview_popup_layout_rect.LayoutRect( main_pane_rect, preview_popup_layout ); - - TPoint labelPos = TextLabel()->PositionRelativeToScreen(); - TPoint hwrPos = TPoint( 0, 0 ); - if ( TBidiText::ScriptDirectionality( User::Language() ) - == TBidiText::ELeftToRight ) - { - TInt offset = Layout_Meta_Data::IsLandscapeOrientation() ? - KHwrBoxPosLandscapeX : KHwrBoxPosPortraitX; - hwrPos = labelPos + TPoint( offset, TextLabel()->Size().iHeight ); - } - else - { - hwrPos = labelPos + TPoint( TextLabel()->Size().iWidth, - TextLabel()->Size().iHeight ); - } - - iHwrBox->SetSize( preview_popup_layout_rect.Rect().Size() ); - iPopupController->SetPosition( hwrPos ); - } - } - -// --------------------------------------------------------------------------- -// Processes events from the softkeys. -// --------------------------------------------------------------------------- -// -void CTruiTextSettingPageContainer::ProcessCommandL( TInt aCommandId ) - { - HideMenu(); - switch ( aCommandId ) - { - case EAknSoftkeyOk: - case EAknSoftkeySelect: - { - // Get the current text in setting page - CTruiAppUi* appUi = static_cast( iAvkonViewAppUi ); - CTruiEngine* engine = appUi->HwrEngine(); - CEikEdwin* edwin = static_cast( EditorControl() ); - HBufC* shortcutText = edwin->GetTextInHBufL(); - CleanupStack::PushL( shortcutText ); - // Replace paragraph seperator to line break - TPtr ptr = shortcutText->Des(); - TBuf paraDelimiter; - paraDelimiter.Format( KParaDelimiterFormat, CEditableText::EParagraphDelimiter ); - AknTextUtils::ReplaceCharacters( ptr, paraDelimiter, TChar( EKeyEnter ) ); - // Update new text - engine->ChangeShortcutTextL( *shortcutText ); - // Recalculate selected index of shortcut list - // Update shortcut list - engine->UpdateShortcutListL(); - // Find the current shortcut's index in shortcut list - TInt index = 0; - CDesCArray* shortcutList = engine->ShortcutTextList(); - if ( shortcutList ) - { - TInt ret = 0; - ret = shortcutList->Find( *shortcutText, index ); - if ( ret == KErrNotFound ) - { - TInt oldIndex = engine->CurrentSelectedIndex(); - index = ( oldIndex > shortcutList->Count() ) - ? shortcutList->Count() : oldIndex; - } - } - // Set current index in Engine - engine->SetCurrentSelectedIndex( index + 1 ); - CleanupStack::PopAndDestroy( shortcutText ); - // Store the content of setting page - UpdateSettingL(); - CTruiShortcutEditTextView* view = - static_cast - ( appUi->View( KTruiShortcutEditTextViewId ) ); - if ( view->StartViewId() == - TVwsViewId( KUidtruiApp, KTruiInfoMessageViewId ) ) - { - ProcessCommandL( EAknSoftkeyNext ); - } - else - { - // Switch to shortcuts view. - iAvkonViewAppUi->ActivateLocalViewL - ( view->StartViewId().iViewUid ); - } - break; - } - case EAknSoftkeyCancel: - { - iAvkonViewAppUi->ActivateLocalViewL( KTruiShortcutsViewId ); - break; - } - case EAknSoftkeyNext: - { - UpdateSettingL(); - // Get the current text in setting page - CTruiAppUi* appUi = static_cast( iAvkonViewAppUi ); - CTruiEngine* engine = appUi->HwrEngine(); - CEikEdwin* edwin = static_cast( EditorControl() ); - HBufC* shortcutText = edwin->GetTextInHBufL(); - CleanupStack::PushL( shortcutText ); - // Replace paragraph seperator to line break - TPtr ptr = shortcutText->Des(); - TBuf paraDelimiter; - paraDelimiter.Format( KParaDelimiterFormat, CEditableText::EParagraphDelimiter ); - AknTextUtils::ReplaceCharacters( ptr, paraDelimiter, TChar( EKeyEnter ) ); - engine->SetShortcut( ptr ); - CleanupStack::PopAndDestroy( shortcutText ); - iAvkonViewAppUi->ActivateLocalViewL( KTruiShortcutEditViewId ); - break; - } - case EAknSoftkeyBack: - { - CTruiAppUi* appUi = static_cast( iAvkonViewAppUi ); - CTruiEngine* engine = appUi->HwrEngine(); - if ( engine->DisplayWizard() ) - { - iAvkonViewAppUi->ActivateLocalViewL( KTruiInfoMessageViewId ); - } - else - { - iAvkonViewAppUi->ActivateLocalViewL( KTruiShortcutsViewId ); - } - break; - } - } - } - -// --------------------------------------------------------------------------- -// From MAknPreviewPopUpObserver -// Called by the preview popup when an appropriate event takes place. -// --------------------------------------------------------------------------- -// -void CTruiTextSettingPageContainer::HandlePreviewPopUpEventL( - CAknPreviewPopUpController* aController, TPreviewPopUpEvent aEvent ) - { - if ( aController == iPopupController && aEvent == EPreviewPopUpShown ) - { - CTruiAppUi* appUi = static_cast( iAvkonViewAppUi ); - CTruiEngine* engine = appUi->HwrEngine(); - CEikEdwin* edwin = TextControl(); - HBufC* shortcutText = edwin->GetTextInHBufL(); - CleanupStack::PushL( shortcutText ); - // Get character model - TUint unicode = 0; - TRAPD( err, engine->GetShortcutModelL( engine->Shortcut(), iHwrBox->Model(), unicode ) ); - if ( err == KErrNone ) - { - TSize refSize = CTruiContainerBase::OriginSymbolSize(); - iHwrBox->ShowTrails( iHwrBox->Model(), ETrue, refSize ); - } - CleanupStack::PopAndDestroy( shortcutText ); - } - }