diff -r eb1f2e154e89 -r f5a1e66df979 textinput/ptikoreanqwertycore/inc/PtiKoreanQwertyCore.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/ptikoreanqwertycore/inc/PtiKoreanQwertyCore.h Fri Feb 19 23:09:27 2010 +0200 @@ -0,0 +1,401 @@ +/* +* 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 __PTIKOREANQWERTYCORE_H__ +#define __PTIKOREANQWERTYCORE_H__ + +#include // CBase +#include // TBuf + +#include +#include + +class COssHangulInputContext; +class CRepository; +class CActiveCallback; + +class CPtiKoreanQwertyCore : public CPtiCore + { +public: + static CPtiKoreanQwertyCore* NewLC( + CPtiEngine* aOwner, + TDes* aTextBuffer); + + static CPtiKoreanQwertyCore* NewL( + CPtiEngine* aOwner, + TDes* aTextBuffer); + + virtual ~CPtiKoreanQwertyCore(); + +private: + + CPtiKoreanQwertyCore( + CPtiEngine* aOwner, + TDes* aTextBuffer); + + void ConstructL(); + +private: // from CPtiCore + + /** + * Initialized core object. This method is called by PtiEngine framework when core object + * is loaded. + * + * @since 2.6 + * @param aOwner Pointer to onwing PtiEngine framework instance. + * @param aTextBuffer A pointer to PtiEngine main text buffer. + * @param aLanguageList A language list to be filled with language bindings to this core + * onbject + * @param aUseDefautUserDictionary A boolean value indicating whether default user dictionary shoulkd be used + * (in case this core object supports user dictionaries). + */ + virtual void InitializeL( + CPtiEngine* aOwner, + TDes* aTextBuffer, + CArrayPtrFlat* aLanguageList, + TBool aUseDefautUserDictionary); + + /** + * Removes languages associated to this core object from given language list. Languages + * not associated to this core abject are not touched. + * + * @since 2.6 + * @param aLanguageList A language list to be cleaned. + */ + virtual void DropLanguages(CArrayPtrFlat* aLanguageList); + + /** + * Opens resources for given language and itinialized them. + * + * @since 2.6 + * @param aLanguage Symbian OS language code a language to be initialized. + * @return KErrNone or a system wide error code. + */ + virtual TInt OpenLanguageL(CPtiCoreLanguage *aLanguage); + + /** + * Closes currently activate language and frees resources associated to it. + * + * @since 2.6 + * @return KErrNone of system wide error ocde. + */ + virtual TInt CloseLanguageL(); + + /** + * Returns the contents of text buffer. + * + * @since 2.6 + * @return A constant pointer to text buffer. + */ + virtual TPtrC GetCurrentWord() const; + + /** + * Commits current word. Commiting means that user has added current + * word as part of text. Frequency information and other related attributes + * can then be updated. + * + * @since 2.6 + * @return KErrNone or a system wide error code. + */ + virtual TInt CommitCurrentWord(); + + /** + * Returns a pointer core info structure. Core info struct contains useful + * information about core object and its features. + * + */ + virtual MPtiCoreInfo* GetCoreInfo(); + + /** + * Turns reoreding feature on or off. Reordering means that prediction engine + * maintains frequency information for used words and modifys the order of candidate list + * based on that information. This feature may not be supported by all prediction engines. + * + * @since 2.6 + * @param aStatus New status for reorderinf feature. + * @return KErrNone or a system wide error code. + */ + virtual TInt SetReordering(TBool aStatus); + + /** + * This is the single most important core API method, most of the text input functionality + * will be utilize this method. Call to this method indicates core object that a key was + * pressed and it should act accordingly and fill the output buffer. + * + * @since 2.6 + * @param aKey Enum value for pressed key. + */ + virtual void AppendKeyPress(TPtiKey aKey); + + /** + * Indicates core object that it should perform 'delete key press'-operation. + * + * @since 2.6 + */ + virtual void DeleteKeyPress(); + + /** + * Call to this method notifys core object that input buffer was cleared. + * + * @since 2.6 + */ + virtual void ClearBuffer(); + + /** + * Sets current input sequence. The end result of this operation must be same as + * if user had entered keys in input array as individual key presses. + * + * @since 2.6 + * @param aInput An array containing sequence of key presses (type TPtiKey). + * @return KErrNone or a system wide error code. + */ + virtual TInt SetCurrentInputSequence(TPtrC8 aInput); + + /** + * Converts given string from one character set to another. Possible conversion types + * are defined in PtiDefs.h + * + * @since 2.6 + * @param aType Conversion type. + * @param aInput Pointer to input string to be converted. + * @param aInputLength Length of input buffer. + * @param aOutput pointer to output buffer. + * @return KErrNone or a system wide error code. + */ + virtual TInt Convert( + TPtiCharConversion aType, + TAny* aInput, + TInt aInputLength, + TAny* aOutput); + + /** + * Re-defines keymappings for given key / input mode / case combination. Previous + * keymapping will be deleted and new mappings will be used instead. + * + * @since 2.6 + * @param aMode Input mode for new key mapping. + * @param aKey A key to be replaced. + * @param aKeyMap New keymapping data for aKey. + * @param aCase Text case to be replaced. + * @return KErrNone or system wide error code. + */ + virtual TInt SetExternalKeyMapL( + TPtiEngineInputMode aMode, + TPtiKey aKey, + TDesC& aKeyMap, + TPtiTextCase aCase); + /** + * Returns alternate spelling for given unicode characters. Possible conversion + * types are defined in header PtiDefs.h. + * + * @sinec 2.6 + * @aInput A character to be converted. + * @aOutput Resulting alternate spelling will be stored here. + * @aType Spelling conversion type. + * @return KErrNone or system wide error code. + */ + virtual TInt GetSpelling(TUint16 aInput, TDes& aOutput, TPtiSpelling aType); + + /** + * Cancels all on-going core obejct timner activity. + * + * @since 2.6 + * @return KErrNone or system wide error code. + */ + virtual TInt CancelTimerActivity(); + + /** + * A generic command handling method for extending PtiEngine API without adding + * new base class methods. It is recommended to use this only in force major + * situations, where there is no other way. + * + * @since 2.6 + * @param aCommand A Command id value. Platform wide command ids are defined in PtiDefs.h. + * @param aParams TAny pointer for passing any required parameters. + * @return An integer containing possible return value related to command. + */ + virtual TInt HandleCommandL( + TPtiEngineCommand aCommand, + TAny* aParams); + +// +// Predictive latin API +// +private: + /** + * Returns number of candidates for currently entered key sequence. + * + * @since 2.6 + * @return Number of prediction candidates for currently entered key sequence. + */ + virtual TInt NumberOfCandidates(); + + /** + * Returns a list of candidate words for currently entered key sequence. + * + * @since 2.6 + * @param aList A list to be filled with candidate words. + * @return Number of candidate works in aList. + */ + virtual TInt GetCandidateListL(CDesCArray& aList); + + /** + * Returns next word candidate list. Next word candidates are words + * potentially related to currently selected candidate. Next word prediction + * feature must supported by the engine and turned on. + * + * @since 2.6 + */ + virtual TInt GetNextWordCandidateListL(CDesCArray& aList); + + /** + * Returns first word in list of candidate words for current input sequence. + * + * @since 2.6 + * @param aResult A descriptor where resulting word will be stored. + * @return KErrnNone or system wide error code. + */ + virtual TInt GetFirstCandidate(TDes& aResult); + + /** + * Returns next word in list of candidate words for current input sequence. + * + * @since 2.6 + * @param aResult A descriptor where resulting word will be stored. + * @return KErrnNone or system wide error code. + */ + virtual TInt GetNextCandidate(TDes& aResult); + + /** + * Returns previous word in list of candidate words for current input sequence. + * + * @since 2.6 + * @param aResult A descriptor where resulting word will be stored. + * @return KErrnNone or system wide error code. + */ + virtual TInt GetPreviousCandidate(TDes& aResult); + +// +// User dictionary API +// +private: + virtual TInt AddUserDictionaryEntry( + MPtiUserDictionaryEntry& aEntry, + CPtiUserDictionary* aDict); + + virtual TInt RemoveUserDictionaryEntry( + MPtiUserDictionaryEntry& aEntry, + CPtiUserDictionary* aDict); + + virtual TInt NumberOfEntriesInUserDictionary( + CPtiUserDictionary* aDict); + + virtual TInt GetUserDictionaryEntry( + TInt aIndex, + MPtiUserDictionaryEntry& aResult, + CPtiUserDictionary* aDict); + + virtual CPtiUserDictionary* CreateEmptyUserDictionaryL(TInt aMaxSize); + + virtual TInt AttachUserDictionary(CPtiUserDictionary* aDict); + + virtual TBool DetachUserDictionary(CPtiUserDictionary* aDict); + +// +// Chinese API +// +private: + + virtual TPtrC GetCandidatePage(); + + virtual TBool NextCandidatePage(); + + virtual TBool PreviousCandidatePage(); + + virtual TBool MoreCandidatePages(); + + virtual void SetCandidatePageLength(TInt aLength); + + virtual TPtrC GetPhoneticSpelling(TInt aIndex) const; + + virtual TInt PhoneticSpellingCount() const; + + virtual TBool SelectPhoneticSpelling(TInt aIndex); + + virtual TInt SelectedPhoneticSpelling() const; + + virtual TBool ToneMark(TText& aToneMark) const; + + virtual TBool IsToneMarkValidForSpelling(); + + virtual TBool SetPredictiveChineseChar(const TDesC& aChar); + + virtual TBool SetToneMark(TInt aToneMark); + + +// +// Japanese API +// +private: + + virtual TPtrC ReadingTextL(); + + virtual MPtiEngineCompositionDataInterface* CompositionData(); + +// +// Chinese API +// +private: + + virtual HBufC* GetCandidatesByInputString( + const TDesC& aInputString, + RPointerArray& aList, + const TBool aIsPredictive); + + void UpdateFromRepositoryL(); + + void UpdateDblConsonentL( + const TInt& aCenRepId, + const TOssCombinationItem& aCombination); + +public: + + static TInt CBSettingChanged(void* aSelf); + +private: + + CPtiEngine* iOwner; + + TDes* iTextBuffer; + + TBool iKoreanLanOpen; + + COssHangulInputContext* iHic; + + COssCombination* iCombination; + + TBool iLowerCase; + + CRepository* iRepository; + + CActiveCallback* iCRNotifier; + + }; + +#endif // __PTIKOREANQWERTYCORE_H__ +