williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __VUTIL_H__ williamr@2: #define __VUTIL_H__ williamr@2: williamr@2: // System includes williamr@2: #ifndef __E32BASE_H__ williamr@2: #include williamr@2: #endif williamr@2: #ifndef __F32FILE_H__ williamr@2: #include williamr@2: #endif williamr@2: #ifndef __CHARCONV_H__ williamr@2: #include williamr@2: #endif williamr@2: williamr@2: williamr@2: class Versit williamr@2: /** Provides Versit-specific encoding and character set identifiers. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: /** Versit-specific encoding identifiers. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TVersitEncoding williamr@2: { williamr@2: /** No encoding. */ williamr@2: ENoEncoding, williamr@2: /** Quoted Printable encoding. */ williamr@2: EQuotedPrintableEncoding, williamr@2: /** Base 64 encoding. */ williamr@2: EBase64Encoding, williamr@2: williamr@2: // Used internally - not to be used by versit clients williamr@2: /** Eight bit encoding. */ williamr@2: EEightBitEncoding williamr@2: }; williamr@2: williamr@2: /** Versit-specific character set identifiers. These are used in the Versit API williamr@2: to represent foreign (non-Unicode) character sets for vCard and vCalendar williamr@2: properties. williamr@2: @publishedAll williamr@2: @released */ williamr@2: enum TVersitCharSet williamr@2: { williamr@2: /** Unknown character set. */ williamr@2: EUnknownCharSet, williamr@2: /** ASCII (7-bit).*/ williamr@2: EUSAsciiCharSet, williamr@2: /** UTF-8 Unicode transformation format. */ williamr@2: EUTF8CharSet, williamr@2: /** UTF-7 Unicode transformation format. */ williamr@2: EUTF7CharSet, williamr@2: /** ISO 8859-1 (8-bit). */ williamr@2: EISO88591CharSet, williamr@2: /** ISO 8859-2 (8-bit). */ williamr@2: EISO88592CharSet, williamr@2: /** ISO 8859-4 (8-bit). */ williamr@2: EISO88594CharSet, williamr@2: /** ISO 8859-5 (8-bit). */ williamr@2: EISO88595CharSet, williamr@2: /** ISO 8859-7 (8-bit). */ williamr@2: EISO88597CharSet, williamr@2: /** ISO 8859-9 (8-bit). */ williamr@2: EISO88599CharSet, williamr@2: /** ISO 8859-3 (8-bit). */ williamr@2: EISO88593CharSet, williamr@2: /** ISO 8859-10 (8-bit). */ williamr@2: EISO885910CharSet, williamr@2: /** GB 2312. */ williamr@2: EGB231280CharSet, williamr@2: /** GBK. */ williamr@2: EGBKCharSet, williamr@2: /** Big 5. */ williamr@2: EBIG5CharSet, williamr@2: /** ISO-2022-JP. */ williamr@2: EISO2022JPCharSet, williamr@2: /** EUC-JP. */ williamr@2: EEUCJPCharSet, williamr@2: /** Shift JIS. */ williamr@2: EShiftJISCharSet, williamr@2: /** JIS. */ williamr@2: EJISCharSet, williamr@2: /** Must be first character set. */ williamr@2: EFirstCharSet=EUSAsciiCharSet, williamr@2: /** Must be last character set. */ williamr@2: ELastCharSet=EJISCharSet williamr@2: }; williamr@2: williamr@2: class TEncodingAndCharset williamr@2: /** Specifies an encoding, a character set and a character set converter. williamr@2: @publishedAll williamr@2: @released */ williamr@2: { williamr@2: public: williamr@2: inline TEncodingAndCharset(TVersitEncoding aEncoding,TUint aCharSetId) :iEncoding(aEncoding), iCharSetId(aCharSetId) williamr@2: /** The C++ constructor initialises the encoding and character set. williamr@2: williamr@2: @param aEncoding An encoding. williamr@2: @param aCharSetId A character set. */ williamr@2: {} williamr@2: public: williamr@2: /** An encoding. */ williamr@2: TVersitEncoding iEncoding; williamr@2: /** A character set. */ williamr@2: TUint iCharSetId; williamr@2: /** A character set converter. */ williamr@2: CCnvCharacterSetConverter* iConverter; williamr@2: }; williamr@2: }; williamr@2: williamr@2: class CVersitUnicodeUtils : public CBase williamr@2: /** Versit Unicode utilities class. williamr@2: williamr@2: This enables conversion between Unicode and ISO character sets. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C ~CVersitUnicodeUtils(); williamr@2: IMPORT_C HBufC8* NarrowL(const TDesC& aDesC); williamr@2: IMPORT_C HBufC8* NarrowLC(const TDesC& aDesC); williamr@2: IMPORT_C HBufC* WidenL(const TDesC8& aDesC8); williamr@2: IMPORT_C HBufC* WidenLC(const TDesC8& aDesC8); williamr@2: IMPORT_C void CreateConverterL(); williamr@2: CCnvCharacterSetConverter::TAvailability SetCurrentCharSetL(TUint aCharacterSet); williamr@2: williamr@2: public: williamr@2: inline CCnvCharacterSetConverter& CharacterSetConverter() const; williamr@2: inline TUint ConvertStandardNameL(const TDesC8& aStandardNameOfCharacterSet); williamr@2: inline HBufC8* StandardNameL(TUint aCharSetId); williamr@2: TUint AutoDetectCharSetL(const TDesC8& aSample,const CArrayFix* aAutoDetectCharSets); williamr@2: williamr@2: private: williamr@2: RFs iFsSession; williamr@2: CCnvCharacterSetConverter* iUnicodeConverter; williamr@2: TBool iFsConnected; williamr@2: TUint iCurrentConverterCharSet; williamr@2: CArrayFix* iCharSetsAvailable; williamr@2: }; williamr@2: williamr@2: williamr@2: inline CCnvCharacterSetConverter& CVersitUnicodeUtils::CharacterSetConverter() const williamr@2: /** Returns the character set converter created in CreateConverterL(). williamr@2: williamr@2: @return A character set converter. */ williamr@2: { williamr@2: return *iUnicodeConverter; williamr@2: } williamr@2: inline TUint CVersitUnicodeUtils::ConvertStandardNameL(const TDesC8& aStandardNameOfCharacterSet) williamr@2: /** Returns the Symbian OS UID for a character set from its Internet-standard williamr@2: name. williamr@2: williamr@2: @param aStandardNameOfCharacterSet Internet-standard name of a character set williamr@2: encoded in 8-bit ASCII. williamr@2: @return The Symbian OS UID of the specified character set. If the name is not williamr@2: known, zero is returned. */ williamr@2: { williamr@2: return iUnicodeConverter->ConvertStandardNameOfCharacterSetToIdentifierL(aStandardNameOfCharacterSet,iFsSession); williamr@2: } williamr@2: inline HBufC8* CVersitUnicodeUtils::StandardNameL(TUint aCharSetId) williamr@2: /** Returns the Internet-standard name of a character set, from its Symbian OS UID. williamr@2: williamr@2: @param aCharSetId The Symbian OS UID of a character set. williamr@2: @return The Internet-standard name or MIME name of the specified character williamr@2: set, or NULL if the UID is not known. The name is encoded in 8-bit ASCII. */ williamr@2: { williamr@2: return iUnicodeConverter->ConvertCharacterSetIdentifierToStandardNameL(aCharSetId,iFsSession); williamr@2: } williamr@2: williamr@2: #endif