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: #if !defined(__CONLIST_H__) williamr@2: #define __CONLIST_H__ williamr@2: williamr@2: #if !defined(__E32BASE_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__F32FILE_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__CONARC_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__CONCNF_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: #if !defined(__IMPLEMENTATION_INFORMATION_H__) williamr@2: #include williamr@2: #endif williamr@2: #if !defined(__ECOM_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: williamr@2: /** Creates a converter dll's factory interface object. williamr@2: williamr@2: @publishedAll williamr@2: @deprecated williamr@2: */ williamr@2: typedef CConverterLibrary* (*CreateCConverterLibrary)(); williamr@2: williamr@2: struct SConverterInfo williamr@2: /** Describes a converter, as obtained from a converter list (CCnaConverterList). williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: @see CCnaConverterList */ williamr@2: { williamr@2: /** Localised name of the data type. */ williamr@2: TTranslation iTranslation; williamr@2: /** Converter UID. */ williamr@2: TUid iUid; williamr@2: /** Position of the converter in the list. */ williamr@2: TInt iIndex; williamr@2: }; williamr@2: williamr@2: class CCnaConverterList : public CBase williamr@2: /** Provides a list of available converters, allowing clients to search for and williamr@2: obtain converters for specific source and target data types. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CCnaConverterList* NewL(); williamr@2: IMPORT_C static CCnaConverterList* NewLC(); williamr@2: IMPORT_C void Release(); williamr@2: IMPORT_C ~CCnaConverterList(); williamr@2: // williamr@2: IMPORT_C TInt CountL(); williamr@2: inline TInt Count(); williamr@2: IMPORT_C CConverterBase* NewConverterL(TUid aUid); williamr@2: IMPORT_C void UpdateL(); williamr@2: IMPORT_C TUid ConvFromL(const TDataType& aMimeType); // searches for a particular converter williamr@2: IMPORT_C TUid ConvToL(const TDataType& aMimeType); williamr@2: IMPORT_C TUid ConverterL(const TDataType& aFrom,const TDataType& aTo); williamr@2: IMPORT_C void ConvFromListL(const TDataType& aMimeType,CArrayFix* aSConverterInfoArray); williamr@2: IMPORT_C void ConvToListL(const TDataType& aMimeType,CArrayFix* aSConverterInfoArray); williamr@2: IMPORT_C TInt MimeTypeFrom(TDataType& aDataType,const SConverterInfo& aConverterInfo) const; williamr@2: IMPORT_C TInt MimeTypeTo(TDataType& aDataType,const SConverterInfo& aConverterInfo) const; williamr@2: private: williamr@2: CCnaConverterList(); williamr@2: void ConstructL(); williamr@2: CConverterBase* LoadConverterL(TUid aImplUid); williamr@2: private: williamr@2: TBool iDoneScan; williamr@2: CArrayPtr* iConverters; williamr@2: RImplInfoPtrArray iImplementationArray; williamr@2: }; williamr@2: williamr@4: #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS williamr@2: class ConverterListUtil williamr@2: /** @internalComponent */ williamr@2: { williamr@2: public: williamr@2: static CConverterBase* UtilityConverterL(TUid aUid); williamr@2: static TInt CountUtilityConverters(); williamr@2: }; williamr@4: #endif //SYMBIAN_ENABLE_SPLIT_HEADERS williamr@2: williamr@2: inline TInt CCnaConverterList::Count() williamr@2: /** @deprecated williamr@2: williamr@2: Deprecated - Use CCnaConverterList::CountL instead. williamr@2: Rescan of the disk to refresh the list of converters could leave. */ williamr@2: { williamr@2: return CountL(); williamr@2: } williamr@2: williamr@2: #endif