diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/mw/akninputlanguageinfo.h --- a/epoc32/include/mw/akninputlanguageinfo.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/mw/akninputlanguageinfo.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,265 @@ -akninputlanguageinfo.h +/* +* 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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Interface class providing information on available input languages +* This header is exported +* +*/ + + + + + + + + + + + + + + + + +#ifndef __AKNINPUTLANGUAGEINFO_H__ +#define __AKNINPUTLANGUAGEINFO_H__ + +// INCLUDES + +#include + +// For TBitFlags +#include +#include + +#include + +// Typedefs +typedef TBuf<32> TAknLanguageName; + + +// CLASS DECLARATIONS + +/** +* Input language capabilities +* +*/ +class TAknInputLanguageCapabilities + { + public: + /** + * These indices are used to set/clear capabilities. + * Terms: + * - multitap refers to capability to enter alphabetic chars by pressing the same key repeatedly + * - predictive refers to the device matching (non-multitap) keypresses with potential words + * in a dictionary. That is, what words would map to the current set of keypad presses + * + * + */ + enum TAknInputLanguageCapabilityIndex + { + EMultitap = 0x00000000, + EPredictive = 0x00000001 + }; + + /** + * C++ Constructor. Initializes the internal state to "no capabilities" + */ + IMPORT_C TAknInputLanguageCapabilities(); + + /** + * Sets the capability at a given index index to the logical value passed + * + * @param aCapability which capability to set + * @param aSet ETrue - enable the capability; EFalse - disable the capability + */ + IMPORT_C void AssignCapability( TInt aCapabilityIndex, TBool aSet ); + + /** + * Tests a capability + * + * @param aCapability which capability to test + * @return EFalse if the capability is not present; not EFalse otherwise + */ + IMPORT_C TBool HasCapability( TInt aCapabilityIndex ) const; + + /** + * Sets all capabilities (existing and potential) + */ + IMPORT_C void SetAllCapabilities(); + + IMPORT_C TAknInputLanguageCapabilities FilteredCapabilities( TAknInputLanguageCapabilities& aFilter) const; + + IMPORT_C TBool HasAnySupport() const; + + private: + // Holds the internal state + TBitFlags32 iCapabilities; + }; + + +/** +* Input Language Item class. +* +* This object bring together Symbian language code, a language name, and its capabilities +* +* This method is not meant to be derived from. +* +*/ +NONSHARABLE_CLASS(CAknInputLanguageItem) : public CBase + { + public: + /** + * static 2-stage construction of the object. The language name descriptor is copied + * by the time the method returns. + * + * Normally this is constructed by the class that supplies the language information. It would + * not normally be called by clients who want to find out about system input languages + * + * @param aLanguageCode Symbian OS language code + * @param aName Language name to be attached to code + * @param aCapabilities Sets the capabilities + * @return Fully constructed input language item + */ + static CAknInputLanguageItem* NewL( TLanguage aLanguageCode, const TDesC& aName, TAknInputLanguageCapabilities aCapabilities ); + + /** + * C++ destructor + * + */ + IMPORT_C ~CAknInputLanguageItem(); + + IMPORT_C TLanguage LanguageCode() const; + IMPORT_C TPtrC LanguageName() const; + IMPORT_C TAknInputLanguageCapabilities Capabilities() const; + + private: + /** + * Sets only the langauge code + */ + CAknInputLanguageItem( TLanguage aLanguageCode); + /** + * 2nd stage construction. This sets the name and the capabilies + */ + void ConstructL( const TDesC& aName, TAknInputLanguageCapabilities aCapabilities ); + + private: + TLanguage iLanguageCode; + HBufC* iLanguageName; // Owned + TAknInputLanguageCapabilities iCapabilities; + TInt iSpare; // for expansion + }; + +/** +* +* Class to hold a list of CAknInputLanguageItem objects +* +*/ +class CAknInputLanguageList : public CArrayPtrFlat, public MDesCArray + { + public: + /** + * C++ Constructor + * + */ + IMPORT_C CAknInputLanguageList(TInt aGranularity); + + /** + * Destructor + * + */ + IMPORT_C ~CAknInputLanguageList(); + + public: // from MDesCArray + IMPORT_C TInt MdcaCount() const; + IMPORT_C TPtrC MdcaPoint(TInt aIndex) const; + }; + +/** +* +* Input Language information interface. This object is instantiated to create a standard interface +* to the native input language services. +* +*/ +class CAknInputLanguageInfo : public CBase + { + public: + /** + * This method returns the input capabilities of a language. The capability object can then + * be queried to see what it is capable of. + * + * @param aLanguageId Symbian language code + * @return a structure indicating what the language is capable of + */ + virtual TAknInputLanguageCapabilities LanguageCapabilitiesFromLanguage(TLanguage aLanguageId) = 0; + + /** + * Get the language name that corresponds to the passed-in Symbian OS language code. + * This name should be localized, or not, depending upon the policy decided for the product + * + * @param aLanguageCode - language code for the language whose name is required + * @return TAknLanguageName - buffer containing + */ + virtual TAknLanguageName LanguageName( TLanguage aLanguageCode ) const = 0; + + /** + * Provide a language list corresponding to the input list of SymbianOS language codes. + * The order of the languages in the output list is that order implemented in the + * interface object, and the order of the input list of language codes is ignored. + * + * @param aInputLanguageList Append to this list; + * @param aLanguageCodeList Append only languages whose code is in this list. If Null is passed, then no language code filtering is done + * @param aCapabilityFilter Append only languages with capabilities set in this filter. + * If a filter with no capabilities whatsoever is passed, then all capabilities are included + * + */ + virtual void AppendLanguagesL( + CAknInputLanguageList* aInputLanguageList, + CArrayFix* aLanguageCodeList, + TAknInputLanguageCapabilities& aCapabilityFilter ) = 0; + + /** + * Appends to an externally owned array of CAknInputLanguageItem-s. These can be interrogated to provide + * information upon return. + * + * @param aInputLanguageList Passed-in array is appended to by this method + */ + virtual void AppendAvailableLanguagesL( CAknInputLanguageList* aInputLanguageList ) = 0; + + /** + * Return a langauge that is suitable in the product for a URL input language + * + * @return TLanguage A language code for the designated URL language + */ + virtual TLanguage UrlLanguage() const = 0; + }; + +/** +* This factory class exists to supply an available input language interface +*/ +class AknInputLanguageInfoFactory + { + public: + /** + * Factory method to return a generic object from which information on available + * languages can be obtained. + * + * @return a pointer to a fully constructed object conformant to CAknInputLanguageInfo + */ + IMPORT_C static CAknInputLanguageInfo* CreateInputLanguageInfoL(); + }; + +#endif // __AKNINPUTLANGUAGEINFO_H__ + +// End of File