serviceapifw_plat/liw_criteria_api/inc/liwcommon.h
author William Roberts <williamr@symbian.org>
Mon, 06 Jul 2009 13:37:04 +0100
changeset 6 08dbe5e1ffb8
parent 0 99ef825efeca
permissions -rw-r--r--
Merge

/*
* Copyright (c) 2003-2005 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "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:       Declares common constants, types, classes etc. to be used both
*                consumer and provider side.
*
*/







#ifndef LIW_COMMON_H
#define LIW_COMMON_H

// INCLUDES
#include <liwcommon.hrh>
#include <barsread.h> 
#include <liwgenericparam.h>

// CONSTANTS

// MACROS

// FUNCTION PROTOTYPES

// FORWARD DECLARATIONS
class CEikMenuPane;
class CLiwGenericParamList;

// CLASS DECLARATION

/**
 * Criteria item data.
 * This class encapsulates an LIW criteria item. Criteria items are building 
 * blocks for LIW interests, i.e. an interest is a list of criteria items. 
 * A criteria item can be defined dynamically (by using this class) or 
 * in a resource file.
 *
 * @lib ServiceHandler.lib
 * @since Series 60 2.6
 */
class CLiwCriteriaItem : public CBase
    {
    public:   // Constructors and destructor
        /** 
        * Constructs a criteria item instance with null items.
        *
        * @return A pointer to the new object.
        */
        IMPORT_C static CLiwCriteriaItem* NewL();

        /** 
        * Constructs a criteria item instance with null items. Leaves the 
        * pointer to the cleanup stack.
        *
        * @return A pointer to the new object.
        */
        IMPORT_C static CLiwCriteriaItem* NewLC();

        /** 
        * Constructs a criteria item instance.
        *
        * @param aCriteriaId The criteria ID.
        * @param aServiceCmd The service command.
        * @param aContentType The content type.
        * @return A pointer to the new object.
        */
        IMPORT_C static CLiwCriteriaItem* NewL(
            TInt aCriteriaId,
            TInt aServiceCmd,
            const TDesC8& aContentType);

        /** 
        * Constructs a criteria item instance. Leaves the pointer to the 
        * cleanup stack.
        *
        * @param aCriteriaId The criteria ID.
        * @param aServiceCmd The service command.
        * @param aContentType The content type.
        * @return A pointer to the new object.
        */
        IMPORT_C static CLiwCriteriaItem* NewLC(
            TInt aCriteriaId,
            TInt aServiceCmd,
            const TDesC8& aContentType);

        /** 
        * Constructs a criteria item instance.
        *
        * @param aCriteriaId The criteria ID.
        * @param aServiceCmd The service command.
        * @param aContentType Content type.
        * @return A pointer to the new object.
        */
        IMPORT_C static CLiwCriteriaItem* NewL(
            TInt aCriteriaId,
            const TDesC8& aServiceCmd,
            const TDesC8& aContentType);

        /** 
        * Constructs a criteria item instance.
        *
        * @param aCriteriaId The criteria ID.
        * @param aServiceCmd The service command.
        * @param aContentType Content type.
        * @return A pointer to the new object.
        */
        IMPORT_C static CLiwCriteriaItem* NewLC(
            TInt aCriteriaId,
            const TDesC8& aServiceCmd,
            const TDesC8& aContentType);

        /** 
        * Destructor.
        */        
        IMPORT_C virtual ~CLiwCriteriaItem();

    public: // New functions
        /** 
        * Sets the criteria ID.
        *
        * @param aId The criteria ID.
        */
        IMPORT_C void SetId(TInt aId);

        /** 
        * Sets the service class.
        *
        * @param aServiceUid The service class, see TLiwServiceClass.
        */
        IMPORT_C void SetServiceClass(const TUid& aServiceUid);
        
        /** 
        * Sets the service command UID.
        *
        * @param aServiceCmd The LIW service command, see TLiwServiceCommands.
        */
        IMPORT_C void SetServiceCmd(TInt aServiceCmd);

        /** 
        * Sets the service command name.
        *
        * @param aServiceCmd The LIW service command.
        */
        IMPORT_C void SetServiceCmdL(const TDesC8& aServiceCmd);

        /** 
        * Sets the content type. Makes a copy of the string data.
        *
        * @param aContentType Content MIME type, event type or any agreed one.
        */
        IMPORT_C void SetContentTypeL(const TDesC8& aContentType);

        /** 
        * Gets the criteria ID, 0 if not defined.
        *
        * @return The criteria ID.
        */
        IMPORT_C TInt Id() const;

        /** 
        * Gets the service class UID.
        *
        * @return The service class UID, see TLiwServiceClass.
        */
        IMPORT_C const TUid& ServiceClass() const;
        
        /** 
        * Gets the service command UID. KNullUid, if not defined.
        *
        * @return The service command UID, see TLiwServiceCommands.
        */
        IMPORT_C TInt ServiceCmd() const;

        /** 
        * Gets the service command name.
        *
        * @return The service command name.  
        */
        IMPORT_C const TDesC8& ServiceCmdStr() const;

        /** 
        * Gets the content type.
        *
        * @return The content type.
        */
        IMPORT_C const TDesC8& ContentType() const;

        /** 
        * Sets the options.
        *
        * @param aOptions Options.
        */
        IMPORT_C void SetOptions(TUint aOptions);

        /** 
        * Gets the options.
        * 
        * @return Options.
        */
        IMPORT_C TUint Options() const;

        /** 
        * Maximum number of providers allowed for this criteria item. 
        * 
        * @return Maximum number of providers allowed for this criteria item.
        */
        IMPORT_C TInt MaxProviders() const;

        /** 
        * Reads a criteria item from a resource.  
        *
        * @param aReader A resource reader pointing to a criteria item.
        */
        IMPORT_C void ReadFromResoureL(TResourceReader& aReader);

        /** 
        * Returns the default provider.
        * 
        * @return The default provider UID.        
        */
        IMPORT_C TUid DefaultProvider() const;

        /** 
        * Sets the default provider.
        *
        * @param aDefault The UID of a default provider.
        */
        IMPORT_C void SetDefaultProvider(TInt aDefault);

        /** 
        * Equality operator. Two criteria items are considered equal only if all
        * parameters match. The parameters are: criteria id, service command, 
        * content type, service class, default provider, max providers and options). 
        *
        * @param aItem Criteria item to compare.
        * @return ETrue if criteria items are equal, EFalse otherwise.
        */
        IMPORT_C TBool operator==(const CLiwCriteriaItem& aItem);

        /** 
        * Sets the maximum number of providers.
        *
        * @param aMaxProviders The maximum number of providers.
        */
        IMPORT_C void SetMaxProviders(TInt aMaxProviders);

    public:
        /** 
        * If set, only ROM based providers can be attached to this criteria.
        *
        * @return ETrue if LIW_OPTIONS_ROM_ONLY bit is set, EFalse otherwise.
        */    
        inline TBool RomOnly() const;
        
        IMPORT_C void SetMetaDataOptions(const TLiwVariant& aMetaDataOptions);

        IMPORT_C void GetMetaDataOptions(TLiwVariant& aMetaDataOptions) const;
        
	private:
        /**
        * C++ default constructor.
        */
        CLiwCriteriaItem();    
    
        /**
        * By default Symbian 2nd phase constructor is private.
        */
        void ConstructL();
        
        /**
        * By default Symbian 2nd phase constructor is private.
        */
        void ConstructL(
            TInt aCriteriaId,
            TInt aServiceCmd,
            const TDesC8& aContentType);

        void ConstructL( 
            TInt aCriteriaId,
            const TDesC8& aServiceCmd,
            const TDesC8& aContentType);

    private:
        // Criteria ID.
        TInt iCriteriaId;
        // Service class UID
        TUid iServiceClass;
        // Service command UID
        TInt iServiceCmd;
        // Content type (MIME type). 
        HBufC8* iContentType;
        // Additional options for ROM
        TLiwVariant iOptions;        
        //Default provider implementation uid
        TUid iDefaultProvider;
        // Reserved member
        TLiwVariant iReserved;
        // Max providers
        TInt iMaxProviders;        
        // Metadata Options
        TLiwVariant iMetadataOptions;
    };


inline TBool CLiwCriteriaItem::RomOnly() const
    {
    return (Options() & LIW_OPTIONS_ROM_ONLY) != 0;
    }


/**
* Interest is an array of criteria items.
*/
typedef RPointerArray<CLiwCriteriaItem> RCriteriaArray;

/**
* Abstact callback interface to handle callbacks or events
* from providers. This callback is needed when
* - Consumer wants to pre-check output parameters before returning
*   synchronous Handle*Cmd.
* - Asynchronous Handle*Cmd is used.
* - An asynchronous event occurs in the system.
* 
*  @lib ServiceHandler.lib
*  @since Series 60 2.6
*/ 
class MLiwNotifyCallback                                  // needs to handle this as well?
    {
    public:
        /**
        * Handles notifications caused by an asynchronous Execute*CmdL call
        * or an event.
        *
        * @param aCmdId The service command associated to the event.
        * @param aEventId Occured event, see LiwCommon.hrh.
        * @param aEventParamList Event parameters, if any, as defined per
        *        each event.
        * @param aInParamList Input parameters, if any, given in the
        *        related HandleCommmandL.
        * @return Error code for the callback.
        */
        virtual TInt HandleNotifyL(
            TInt aCmdId,
            TInt aEventId,
            CLiwGenericParamList& aEventParamList,
            const CLiwGenericParamList& aInParamList) = 0;
    	IMPORT_C static TInt32 GetTransactionID();
    };

#endif // LIW_COMMON_H

// End of File