williamr@2: /* williamr@2: * Copyright (c) 2003-2005 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: Declares common constants, types, classes etc. to be used both williamr@2: * consumer and provider side. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: #ifndef AIW_COMMON_H williamr@2: #define AIW_COMMON_H williamr@2: williamr@2: // INCLUDES williamr@4: #include williamr@2: #include williamr@4: #include williamr@2: williamr@2: // CONSTANTS williamr@2: williamr@2: // MACROS williamr@2: williamr@2: // FUNCTION PROTOTYPES williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class CEikMenuPane; williamr@2: class CAiwGenericParamList; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * Criteria item data. williamr@2: * This class encapsulates an AIW criteria item. Criteria items are building williamr@2: * blocks for AIW interests, i.e. an interest is a list of criteria items. williamr@2: * A criteria item can be defined dynamically (by using this class) or williamr@2: * in a resource file. williamr@2: * williamr@2: * @lib ServiceHandler.lib williamr@2: * @since Series 60 2.6 williamr@2: */ williamr@2: class CAiwCriteriaItem : public CBase williamr@2: { williamr@2: public: // Constructors and destructor williamr@2: /** williamr@2: * Constructs a criteria item instance with null items. williamr@2: * williamr@2: * @return A pointer to the new object. williamr@2: */ williamr@2: IMPORT_C static CAiwCriteriaItem* NewL(); williamr@2: williamr@2: /** williamr@2: * Constructs a criteria item instance with null items. Leaves the williamr@2: * pointer to the cleanup stack. williamr@2: * williamr@2: * @return A pointer to the new object. williamr@2: */ williamr@2: IMPORT_C static CAiwCriteriaItem* NewLC(); williamr@2: williamr@2: /** williamr@2: * Constructs a criteria item instance. williamr@2: * williamr@2: * @param aCriteriaId The criteria ID. williamr@2: * @param aServiceCmd The service command. williamr@2: * @param aContentType The content type. williamr@2: * @return A pointer to the new object. williamr@2: */ williamr@2: IMPORT_C static CAiwCriteriaItem* NewL( williamr@2: TInt aCriteriaId, williamr@2: TInt aServiceCmd, williamr@2: const TDesC8& aContentType); williamr@2: williamr@2: /** williamr@2: * Constructs a criteria item instance. Leaves the pointer to the williamr@2: * cleanup stack. williamr@2: * williamr@2: * @param aCriteriaId The criteria ID. williamr@2: * @param aServiceCmd The service command. williamr@2: * @param aContentType The content type. williamr@2: * @return A pointer to the new object. williamr@2: */ williamr@2: IMPORT_C static CAiwCriteriaItem* NewLC( williamr@2: TInt aCriteriaId, williamr@2: TInt aServiceCmd, williamr@2: const TDesC8& aContentType); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CAiwCriteriaItem(); williamr@2: williamr@2: public: // New functions williamr@2: /** williamr@2: * Sets the criteria ID. williamr@2: * williamr@2: * @param aId The criteria ID. williamr@2: */ williamr@2: IMPORT_C void SetId(TInt aId); williamr@2: williamr@2: /** williamr@2: * Sets the service class. williamr@2: * williamr@2: * @param aServiceUid The service class, see TAiwServiceClass. williamr@2: */ williamr@2: IMPORT_C void SetServiceClass(const TUid& aServiceUid); williamr@2: williamr@2: /** williamr@2: * Sets the service command UID. williamr@2: * williamr@2: * @param aServiceCmd The AIW service command, see TAiwServiceCommands. williamr@2: */ williamr@2: IMPORT_C void SetServiceCmd(TInt aServiceCmd); williamr@2: williamr@2: /** williamr@2: * Sets the content type. Makes a copy of the string data. williamr@2: * williamr@2: * @param aContentType Content MIME type, event type or any agreed one. williamr@2: */ williamr@2: IMPORT_C void SetContentTypeL(const TDesC8& aContentType); williamr@2: williamr@2: /** williamr@2: * Gets the criteria ID, 0 if not defined. williamr@2: * williamr@2: * @return The criteria ID. williamr@2: */ williamr@2: IMPORT_C TInt Id() const; williamr@2: williamr@2: /** williamr@2: * Gets the service class UID. williamr@2: * williamr@2: * @return The service class UID, see TAiwServiceClass. williamr@2: */ williamr@2: IMPORT_C const TUid& ServiceClass() const; williamr@2: williamr@2: /** williamr@2: * Gets the service command UID. KNullUid, if not defined. williamr@2: * williamr@2: * @return The service command UID, see TAiwServiceCommands. williamr@2: */ williamr@2: IMPORT_C TInt ServiceCmd() const; williamr@2: williamr@2: /** williamr@2: * Gets the content type. williamr@2: * williamr@2: * @return The content type. williamr@2: */ williamr@2: IMPORT_C const TDesC8& ContentType() const; williamr@2: williamr@2: /** williamr@2: * Sets the options. williamr@2: * williamr@2: * @param aOptions Options. williamr@2: */ williamr@2: IMPORT_C void SetOptions(TUint aOptions); williamr@2: williamr@2: /** williamr@2: * Gets the options. williamr@2: * williamr@2: * @return Options. williamr@2: */ williamr@2: IMPORT_C TUint Options() const; williamr@2: williamr@2: /** williamr@2: * Maximum number of providers allowed for this criteria item. williamr@2: * williamr@2: * @return Maximum number of providers allowed for this criteria item. williamr@2: */ williamr@2: IMPORT_C TInt MaxProviders() const; williamr@2: williamr@2: /** williamr@2: * Reads a criteria item from a resource. williamr@2: * williamr@2: * @param aReader A resource reader pointing to a criteria item. williamr@2: */ williamr@2: IMPORT_C void ReadFromResoureL(TResourceReader& aReader); williamr@2: williamr@2: /** williamr@2: * Returns the default provider. williamr@2: * williamr@2: * @return The default provider UID. williamr@2: */ williamr@2: IMPORT_C TUid DefaultProvider() const; williamr@2: williamr@2: /** williamr@2: * Sets the default provider. williamr@2: * williamr@2: * @param aDefault The UID of a default provider. williamr@2: */ williamr@2: IMPORT_C void SetDefaultProvider(TInt aDefault); williamr@2: williamr@2: /** williamr@2: * Equality operator. Two criteria items are considered equal only if all williamr@2: * parameters match. The parameters are: criteria id, service command, williamr@2: * content type, service class, default provider, max providers and options). williamr@2: * williamr@2: * @param aItem Criteria item to compare. williamr@2: * @return ETrue if criteria items are equal, EFalse otherwise. williamr@2: */ williamr@2: IMPORT_C TBool operator==(const CAiwCriteriaItem& aItem); williamr@2: williamr@2: /** williamr@2: * Sets the maximum number of providers. williamr@2: * williamr@2: * @param aMaxProviders The maximum number of providers. williamr@2: */ williamr@2: IMPORT_C void SetMaxProviders(TInt aMaxProviders); williamr@2: williamr@2: public: williamr@2: /** williamr@2: * If set, only ROM based providers can be attached to this criteria. williamr@2: * williamr@2: * @return ETrue if AIW_OPTIONS_ROM_ONLY bit is set, EFalse otherwise. williamr@2: */ williamr@2: inline TBool RomOnly() const; williamr@2: williamr@2: private: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: CAiwCriteriaItem(); williamr@2: williamr@2: /** williamr@2: * By default Symbian 2nd phase constructor is private. williamr@2: */ williamr@2: void ConstructL(); williamr@2: williamr@2: /** williamr@2: * By default Symbian 2nd phase constructor is private. williamr@2: */ williamr@2: void ConstructL( williamr@2: TInt aCriteriaId, williamr@2: TInt aServiceCmd, williamr@2: const TDesC8& aContentType); williamr@2: williamr@2: private: williamr@2: // Criteria ID. williamr@2: TInt iCriteriaId; williamr@2: // Service class UID williamr@2: TUid iServiceClass; williamr@2: // Service command UID williamr@2: TInt iServiceCmd; williamr@2: // Content type (MIME type). williamr@2: HBufC8* iContentType; williamr@2: // Additional options williamr@2: TAiwVariant iOptions; williamr@2: //Default provider implementation uid williamr@2: TUid iDefaultProvider; williamr@2: // Reserved member williamr@2: TAiwVariant iReserved; williamr@2: // Max providers williamr@2: TInt iMaxProviders; williamr@2: }; williamr@2: williamr@2: williamr@2: inline TBool CAiwCriteriaItem::RomOnly() const williamr@2: { williamr@2: return (Options() & AIW_OPTIONS_ROM_ONLY) != 0; williamr@2: } williamr@2: williamr@2: williamr@2: /** williamr@2: * Interest is an array of criteria items. williamr@2: */ williamr@2: typedef RPointerArray RCriteriaArray; williamr@2: williamr@2: /** williamr@2: * Abstract callback interface to handle callbacks or events williamr@2: * from providers. This callback is needed when williamr@2: * - Consumer wants to pre-check output parameters before returning williamr@2: * synchronous Handle*Cmd. williamr@2: * - Asynchronous Handle*Cmd is used. williamr@2: * - An asynchronous event occurs in the system. williamr@2: * williamr@2: * @lib ServiceHandler.lib williamr@2: * @since Series 60 2.6 williamr@2: */ williamr@2: class MAiwNotifyCallback williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Handles notifications caused by an asynchronous Execute*CmdL call williamr@2: * or an event. williamr@2: * williamr@2: * @param aCmdId The service command associated to the event. williamr@2: * @param aEventId Occured event, see AiwCommon.hrh. williamr@2: * @param aEventParamList Event parameters, if any, as defined per williamr@2: * each event. williamr@2: * @param aInParamList Input parameters, if any, given in the williamr@2: * related HandleCommmandL. williamr@2: * @return Error code for the callback. williamr@2: */ williamr@2: virtual TInt HandleNotifyL( williamr@2: TInt aCmdId, williamr@2: TInt aEventId, williamr@2: CAiwGenericParamList& aEventParamList, williamr@2: const CAiwGenericParamList& aInParamList) = 0; williamr@2: }; williamr@2: williamr@2: #endif // AIW_COMMON_H williamr@2: williamr@2: // End of File williamr@2: williamr@2: