--- 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 <e32base.h>
+
+// For TBitFlags
+#include <eikdef.h>
+#include <bamdesca.h>
+
+#include <babitflags.h>
+
+// 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<CAknInputLanguageItem>, 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<TInt>* 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