diff -r 000000000000 -r 9a3a17bfeb67 userdict/inc/UdictModel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/userdict/inc/UdictModel.h Mon Jan 18 20:09:32 2010 +0200 @@ -0,0 +1,218 @@ +/* +* 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: The engine class of Japanese user dictionary. +* It wraps PtiEngine to access the User dictionary. +* +*/ + + + + + + +#ifndef UDICTMODEL_H +#define UDICTMODEL_H + +// INCLUDES +#include "UdictElement.h" +#include + +// DATA TYPES +typedef CArrayFixFlat CUserDictList; + +// FORWARD DECLARATIONS +class CPtiEngine; +class MPtiUserDictionary; + +// CLASS DECLARATION + +/** +* The engine of Japanese user dictionary. +* The main role of this class is accessing the User dictionary data via +* CPtiEngeine. +* @since 2.6 +*/ +class CUserDictModel : public CBase, public MDesCArray + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CUserDictModel* NewL(); + + /** + * Destructor. + */ + ~CUserDictModel(); + + public: // New functions + + /** + * Returns the self object as interface to access the registered + * word list. + * @return a pointer of the interface of the registered word list. + */ + inline MDesCArray* List(); + + /** + * Gets an element of the registered word list. + * @param aIndex is the position of the element. + * @return a reference to an element of the registered word list, + * located at aIndex. + */ + inline const TUDictElement& ListItem(TInt aIndex) const; + + /** + * Tests if the User dictionary data is changed by another application. + * @return ETrue, if the User dictionary data is changed. + */ + inline TBool IsChangedByAnotherApp() const; + + /** + * Sets the flag which notifies the User dictionary is changed by + * another application. + * @param aFlag is set to the of User dictionary update flag. + */ + inline void SetChangeNotice(TBool aFlag); + + /** + * Tests if the user dictionary has enough space to add word or not. + * @return ETrue, the user dictionary has no space to register. + */ + inline TBool IsDictionaryFull(); + + /** + * Reload User dictionary data to reflect the changes by another + * application. + */ + inline void ReloadDictInfoL(); + + /** + * Stops the file storing in registering and deleting until SaveNow() + * is called. + */ + inline void DelaySavingL(); + + /** + * Stores cahges of the dictionary data to the file. + */ + inline void SaveNowL(); + + /** + * Adds a new word to the User dictionary. + * This function might leave. It leaves with KErrAlreadyExists if the + * word is already registered, KErrDiskFull if the dictionary has no + * space to register. + * + * @param aItem is added to the User dictionary + * @return index of a new word inserted to the registered word list. + */ + TInt AddNewWordL(const TUDictElement& aItem); + + /** + * Deletes the word from the User dictionary. + * @param aIndex is the position of the deleted item in the word list. + */ + void DeleteWordL(TInt aIndex); + + /** + * Modifies the registered word of User dictionary. + * If modifying the word is failed, it leaves. + * + * @param aIndex is the position of the modified word + * @param aItem is a modified entry + * @return index of a modified word relocated in the registered + * word list. + */ + TInt ModifyWordL(TInt aIndex, const TUDictElement& aItem); + + /** + * Initializes the registered word list. + * It copies the User dictionary data to iItemList, which is the + * registered word list and sorts the list by Unicode collation + * algorithm. + */ + void InitListL(); + + private: + + /** + * C++ default constructor. + */ + CUserDictModel(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + private: // Functions from base classes + + /** + * From MDesCArray, returns a number of elements in the array. + * @return a number of elements in the registered word list. + */ + TInt MdcaCount() const; + + /** + * From MDesCArray, + * Retruns a descriptor for the ListBox's item. + * @param aIndex is a position of the registered word list. + * @return a descriptor for the ListBox's item representing the element + * located at aIndex within the word list. + */ + TPtrC16 MdcaPoint(TInt aIndex) const; + + private: // Data + + // The array of registered words. + // The original User dictionary data is copied to this array. + CUserDictList* iItemList; // own + + // The predictive text input engine. + // It provides the API to access the User dictionary data. + CPtiEngine* iPtiEngine; // own + + // PtiEngine's user dictionary interface. + MPtiUserDictionary* iDictionary ; + + private: + + class TWordListKey : public TKeyArrayFix + { + public: // Constructor + + /** + * C++ default constructor. + */ + TWordListKey(); + + private: // Functions from base classes + + /** + * From TKey, Compares the keys of two elements. + * @param aLeft is the index of the Left element + * @param aRight is the index of the Right element + * @return zero, if both elements are identical. + * positive, if the left element is greater. + * negative, if the right element is greater. + */ + TInt Compare(TInt aLeft, TInt aRight) const; + }; + }; + +#endif // UDICTMODEL_H + +// End of File