textinput/ptikoreanqwertycore/inc/PtiKoreanQwertyCore.h
branchRCL_3
changeset 3 f5a1e66df979
--- /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 <e32base.h>	// CBase
+#include <e32std.h>	 // TBuf
+
+#include <PtiCore.h>
+#include <osscombination.h>
+
+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<CPtiCoreLanguage>* 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<CPtiCoreLanguage>* 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<HBufC>& 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__
+