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@2: // 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 williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.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: #if !defined(__CONCNF_H__) williamr@2: #define __CONCNF_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: #define KMaxTranslation 50 williamr@2: williamr@2: /** Buffer to contain a localised data type name. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: typedef TBuf TTranslation; williamr@2: williamr@2: williamr@2: class TLanguageInfo williamr@2: /** Holds a localised name for a data type. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: { williamr@2: public: williamr@2: TLanguageInfo(); williamr@2: IMPORT_C TLanguageInfo(TLanguage aLanguage,TTranslation aTranslation); williamr@2: public: williamr@2: void InternalizeL(RReadStream& aStream); williamr@2: void ExternalizeL(RWriteStream& aStream) const; williamr@2: TLanguage Language(); williamr@2: TTranslation Translation(); williamr@2: void ReadFromResource(TResourceReader& aReader); williamr@2: public: williamr@2: TLanguage iLanguage; williamr@2: TTranslation iTranslation; williamr@2: }; williamr@2: williamr@2: class CMimeInfo : public CBase williamr@2: /** Holds the localised names for a data type. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C ~CMimeInfo(); williamr@2: IMPORT_C static CMimeInfo* NewLC(TDataType& aMime); williamr@2: static CMimeInfo* NewL(); williamr@2: static CMimeInfo* NewLC(const CMimeInfo* aInfo); williamr@2: public: williamr@2: void InternalizeL(RReadStream& aStream); williamr@2: void ExternalizeL(RWriteStream& aStream) const; williamr@2: TDataType Mime(); williamr@2: TTranslation Text(); williamr@2: IMPORT_C void AddLanguageL(TLanguageInfo aLang); williamr@2: static CMimeInfo* NewLC(TResourceReader& aReader); williamr@2: private: williamr@2: void ConstructL(); williamr@2: void ConstructL(TResourceReader& aReader); williamr@2: void AddLanguageInfoL(TResourceReader& aReader); williamr@2: private: williamr@2: TDataType iMime; williamr@2: CArrayFixFlat *iLanguageInfo; williamr@2: }; williamr@2: williamr@2: class CCnaConverter : public CBase williamr@2: /** Holds the inherent properties of a converter. williamr@2: williamr@2: These are its UID and the data types it supports. williamr@2: williamr@2: Note that the setter functions affect only the current object, not the stored williamr@2: information for the converter. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: { williamr@2: public: williamr@2: static CCnaConverter* NewLC(); williamr@2: static CCnaConverter* NewL(); williamr@2: IMPORT_C static CCnaConverter* NewL(TUid aUid); williamr@2: IMPORT_C static CCnaConverter* NewLC(TUid aUid); williamr@2: IMPORT_C static CCnaConverter* NewL(const CCnaConverter& aConverter); williamr@2: IMPORT_C static CCnaConverter* NewLC(const CCnaConverter& aConverter); williamr@2: IMPORT_C ~CCnaConverter(); williamr@2: IMPORT_C void SetUid(TUid aUid); williamr@2: IMPORT_C TBool MimeFrom(const TDataType& aMimeType) const; williamr@2: IMPORT_C TBool MimeTo(const TDataType& aMimeType) const; williamr@2: IMPORT_C TTranslation MimeFromText(const TDataType& aMimeType) const; williamr@2: IMPORT_C TTranslation MimeToText(const TDataType& aMimeType) const; williamr@2: IMPORT_C TInt CountFrom() const; williamr@2: IMPORT_C TInt CountTo() const; williamr@2: IMPORT_C TDataType MimeFrom(TInt aIndex) const; williamr@2: IMPORT_C TDataType MimeTo(TInt aIndex) const; williamr@2: IMPORT_C TTranslation MimeFromText(TInt aIndex) const; williamr@2: IMPORT_C TTranslation MimeToText(TInt aIndex) const; williamr@2: inline TUid Uid() const; williamr@2: static CCnaConverter* NewL(TUid aUid,TResourceReader& aReader); williamr@2: private: williamr@2: CCnaConverter(); williamr@2: void ConstructL(); williamr@2: TBool FindMime(const TDataType& aMimeType, const CArrayPtrFlat* aList) const; williamr@2: TTranslation FindMimeText(const TDataType& aMimeType, const CArrayPtrFlat* aList) const; williamr@2: void ConstructL(TUid aUid,TResourceReader& aReader); williamr@2: void AddMimeDataL(TResourceReader& aReader, CArrayPtrFlat& aMimeInfo); williamr@2: private: williamr@2: TUid iUid; williamr@2: CArrayPtrFlat* iMimeFrom; williamr@2: CArrayPtrFlat* iMimeTo; williamr@2: }; williamr@2: williamr@2: inline TUid CCnaConverter::Uid() const williamr@2: /** Gets the converter UID. williamr@2: williamr@2: @return Converter UID */ williamr@2: {return iUid;} williamr@2: williamr@2: class CCnaConvInfoFile2 : public CBase williamr@2: /** williamr@2: implementation class williamr@2: @internalComponent williamr@2: */ williamr@2: { williamr@2: public: williamr@2: ~CCnaConvInfoFile2(); williamr@2: // williamr@2: protected: williamr@2: void ConstructL(); williamr@2: protected: williamr@2: RFs iFs; williamr@2: RResourceFile iResourceFile; williamr@2: CArrayPtr* iConverters; williamr@2: }; williamr@2: williamr@2: /** Encapsulates a collection of converter properties (CCnaConverter) read from a converter williamr@2: information (.rsc) file. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: // Each RSC file contains CCnaConverter information for each williamr@2: // available CConverterBase2 derived class in its associated DLL. williamr@2: williamr@2: // In addition there may be INI files for each converter which supply run time extended williamr@2: // CCnaConverter information such as additional mime types. williamr@2: class CCnaConvInfoFileReader2 : public CCnaConvInfoFile2 williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CCnaConvInfoFileReader2* NewLC(const TDesC& aFileName); williamr@2: IMPORT_C static CCnaConvInfoFileReader2* NewL(const TDesC& aFileName); williamr@2: IMPORT_C TInt Count(); williamr@2: IMPORT_C CCnaConverter* AtL(TInt anIndex); williamr@2: // williamr@2: IMPORT_C void RestoreL(); williamr@2: private: williamr@2: CCnaConvInfoFileReader2(); williamr@2: void RestoreConverterL(TResourceReader& aReader); williamr@2: void ConstructL(const TDesC& aFileName); williamr@2: }; williamr@2: williamr@2: #endif