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@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:     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@2: #include <aiwcommon.hrh>
williamr@2: #include <barsread.h> 
williamr@2: #include <aiwgenericparam.h>
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<CAiwCriteriaItem> 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: