diff -r 000000000000 -r a2952bb97e68 mmappfw_plat/mpx_common_api/inc/mpxplugininfo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/mpx_common_api/inc/mpxplugininfo.h Thu Dec 17 08:55:47 2009 +0200 @@ -0,0 +1,333 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: MPX plugin implementation info +* +*/ + + + +#ifndef C_CMPXPLUGININFO_H +#define C_CMPXPLUGININFO_H + + +// INCLUDES +#include +#include +#include + +// CONSTANTS +const TInt KMPXArrayGranularity = 4; + +// FORWARD DECLARATIONS + + +// CLASS DECLARATION + +/** +* InternalComponent. +* Interface to be implemented by customers of the class TaggedDataParser. +* +* @lib mpxcommon.lib +*/ +NONSHARABLE_CLASS(MTaggedDataParserClient) + { +public: + /** + * Process a tagged data. + * + * @since S60 3.2.3 + * @param aTag xml-styled tag + * @param aData data in the xml-styled tag + */ + virtual void ProcessTaggedDataL(const TDesC8& aTag, const TDesC8& aData)=0; + }; + +/** + * MPX plugin info. + * + * @lib mpxcommon.lib + */ +class CMPXPluginInfo : public CBase, + public MTaggedDataParserClient + { +public: + + /** + * Two-phased constructor. + * + * @since S60 3.2.3 + * @param aData Plugin's implementation information. + * @return Pointer to newly created object. + */ + static CMPXPluginInfo* NewL(const CImplementationInformation& aData ); + + /** + * Two-phased constructor. + * + * @since S60 3.2.3 + * @param aData Plugin's implementation information. + * @return Pointer to newly created object. + */ + static CMPXPluginInfo* NewLC(const CImplementationInformation& aData ); + + /** + * Destructor. + * + * @since S60 3.2.3 + */ + IMPORT_C virtual ~CMPXPluginInfo(); + +protected: // From base class + + /** + * Process a tagged data. + * + * @since S60 3.2.3 + * @param aTag xml-styled tag + * @param aData data in the xml-styled tag + */ + IMPORT_C void ProcessTaggedDataL(const TDesC8& aTag, const TDesC8& aData); + + /** + * Process a extended tagged data which derived class may support. + * Default implementation in this class just ignore the data. + * + * @since S60 3.2.3 + * @param aTag xml-styled tag + * @param aData data in the xml-styled tag + */ + IMPORT_C virtual void ProcessTaggedDataExL(const TDesC8& aTag, const TDesC8& aData); + +public: // new functions + /** + * Returns plugin's display name. + * + * @since S60 3.2.3 + * @return Plugin's display name. + */ + const TDesC& DisplayName() const; + + /** + * Returns plugin's implementation uid. + * + * @since S60 3.2.3 + * @return Plugin's implementation uid. + */ + IMPORT_C const TUid& ImplementationUid() const; + + /** + * Returns plugin's supported uids. + * + * @since S60 3.2.3 + * @return Plugin's supported uids. + */ + const TArray SupportedUids() const; + + /** + * Returns plugin's plugin type. + * + * @since S60 3.2.3 + * @return Plugin's plugin type. + */ + const TUid& PluginType() const; + + /** + * Returns plugin's supported App Uid. + * + * @return Plugin's supported App Uid.. + */ + const TUid& SupportedAppUid() const; + + /** + * Returns plugin's priority. + * + * @since S60 3.2.3 + * @return Plugin's priority. + */ + TInt Priority() const; + + /** + * Returns supported mime types. + * + * @since S60 3.2.3 + * @return supported mime types + */ + const CDesCArray& SupportedMimeTypes() const; + + /** + * Returns supported extensions. + * + * @since S60 3.2.3 + * @return supported extensions + */ + const CDesCArray& SupportedExtensions() const; + + /** + * Returns supported schemas. + * + * @since 3.0 + * @return supported schemas + */ + const CDesCArray& SupportedSchemas() const; + + /** + * Check if the plugin supports the array of uids. + * + * @since S60 3.2.3 + * @param aUids contains plugin uids + * @return ETrue if plugin supports all uids + */ + TBool SupportUids(const TArray& aUids) const; + + /** + * Returns the flags bit array. + * + * @since S60 3.2.3 + * @return flags value + */ + IMPORT_C TUint Flags() const; + + /** + * Returns a reference to the reference count. + * + * @since S60 3.2.3 + * @return reference count + */ + TInt& ReferenceCount(); + + /** + * Returns the plugin version. + * + * @since S60 3.2.3 + * @return version as integer. + */ + TInt Version() const; + + /** + * Compare two plugin info by prioritiy. + * + * @since S60 3.2.3 + * @param aPluginInfo1 the first plugin info object + * @param aPluginInfo2 the second plugin info object + * @return zero if two plugins have same priority + * a negative value(-1), if the priority of the first is higher than + * the second's. That is to say, plugins with higher priority is + * listed before plugins with lower priority + * a positive value(1), if the priority of the first is lower than + * the second's. + */ + static TInt ComparePluginInfoByPriority(const CMPXPluginInfo& aPluginInfo1, + const CMPXPluginInfo& aPluginInfo2); + +protected: + + /** + * C++ default constructor. + * + * @since S60 3.2.3 + */ + IMPORT_C CMPXPluginInfo(); + + /** + * By default Symbian 2nd phase constructor is private. + * + * @since S60 3.2.3 + * @param aData Plugin's implementation information. + * @leave The function leaves with one of the system wide error codes, + */ + IMPORT_C void ConstructL(const CImplementationInformation& aData ); + + /** + * Extracts plugin supported Uids from data. + * + * @since S60 3.2.3 + * @param aData Supported uids descriptor separated by comma. + */ + void ExtractSupportedUidsL(const TDesC8& aData); + + /** + * Extracts a list of UIDs from a text string. + * + * @since S60 3.2.3 + * @param aData Supported uids descriptor separated by comma. + * @param aArray array to insert the data into + * @leave The function leaves with one of the system wide error codes, + */ + IMPORT_C void ExtractUidsFromTextL( const TDesC8& aData, + RArray& aArray ); + + /** + * Extracts elemements separated by semicolon into array descriptor + * + * @param aText original content to extract elements from + * @param aArray the array to add the extracted elements to + */ + IMPORT_C void ExtractIntoArrayL(const TDesC8& aText, CDesCArray*& aArray); + +protected: // data + /** + * List of supported Uids. Sorted by TUid.iUid + */ + RArray iSupportedUids; + + /** + * Plugin's display name. + * Own. + */ + HBufC* iPluginName; + + /** + * Plugin's implementation Uid. + */ + TUid iPluginUid; + + /** + * Plugin's plugin type Uid. + */ + TUid iPluginTypeUid; + + /** + * Plugin's supported App Uid. + */ + TUid iSupportedAppUid; + /** + * Plugin feature flags. + */ + TUint iFlags; + + /** + * Plugin priority. + */ + TInt iPriority; + + /** + The version number of this plugin. + */ + TInt iVersion; + + /** + * Loaded plugin reference count. + */ + TInt iReferenceCount; + + // Note: move the following staff into derived plugin info class, + // so that the plugin info class can be base class for all plugins in mpx + CDesCArray* iSupportedSchemas; + CDesCArray* iSupportedMimeTypes; + CDesCArray* iSupportedExtensions; + }; + +#endif // C_CMPXPLUGININFO_H + +// End of File