/*
* Copyright (c) 2005 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: Container of one reactive authorization response
*
*/
#ifndef __CPENGAUTHORIZATIONRESPONSE_H__
#define __CPENGAUTHORIZATIONRESPONSE_H__
// INCLUDES
#include <e32base.h>
#include "CPEngAuthorizationItem.h"
#include "MPEngAuthorizationStatus.h"
// CLASS DECLARATION
/**
* Container of one reactive authorization response
*
* @lib PEngListLib2
* @since 3.0
*/
class CPEngAuthorizationResponse : public CPEngAuthorizationItem,
public MPEngAuthorizationStatus
{
public: // Constructors and destructor
/**
* Two-phased constructor,
*/
static CPEngAuthorizationResponse* NewLC( const TDesC& aUserId,
TInt& aSize );
/**
* Two-phased constructor, constructs class from the stream
*/
static CPEngAuthorizationResponse* NewLC( RReadStream& aStream,
TInt& aSize );
/**
* Destructor.
*/
virtual ~CPEngAuthorizationResponse();
public: // from CPEngAuthorizationItem
/**
* Update local flag
* @see <CPEngAuthorizationItem.h>
*/
void DoUpdateLocalFlags( const CPEngAuthorizationItem& aSource );
public: // From MPEngAuthorizationStatus
/**
* User id of the user authorization was issued to
* @since 3.0
* @see <MPEngAuthorizationStatus.h>
*/
const TDesC& UserId() const;
/**
* Status of the authorization
* @since 3.0
* @see <MPEngAuthorizationStatus.h>
*/
TInt AuthorizationStatus() const;
/**
* List of authorized attributes
* @since 3.0
* @see <MPEngAuthorizationStatus.h>
*/
const RArray<TUint32>& AuthorizedAttributes() const;
/**
* Contact item extension interface.
* @since 3.0
* @see <MPEngAuthorizationStatus.h>
*/
MPEngAuthorizationStatusExt* Extension() {
return NULL;
};
const MPEngAuthorizationStatusExt* Extension() const {
return NULL;
};
public: // New functions
/**
* Set Response type
*
* @since 3.0
* @param aResponseType type of the response
*/
void SetResponseType( TInt aResponseType );
/**
* Set attributes to be authorized
* If already authorized attributes are passed, they are included
* as well then, in order to keep their authorization
*
* @since 3.0
* @param aAttributes attributes to be authorized
*/
void SetAttributesToAuthorizeL(
const TArray<TUint32>& aAttributes,
const RArray<TUint32>* aAuthorizedAttributes );
/**
* Add Attribute to the authorized attributes
*
* @since 3.0
* @param aAttribute attribute to add to authorized attributes
*/
void AddAttributeL( TUint32 aAttribute );
/**
* Externalize to the given stream
* @since 3.0
* @param aStream write stream
*/
void ExternalizeL( RWriteStream& aStream ) const ;
/**
* Internalize from the given stream
* @since 3.0
* @param aStream read stream
*/
void InternalizeL( RReadStream& aStream );
public: // Function for the
/**
* Compare function toe use with RPointerArray.
*
* Two instances are compared based on the TDesC.CompareF function
* of the requesting Id
*
* @since 3.0
* @param aFirst fist class for comparison
* @param aSecond second class for comparison
* @return -1 if fist is smaller,
* +1 is second is smaller,
* 0 if they are same
*/
static TInt Compare( const CPEngAuthorizationResponse& aFirst,
const CPEngAuthorizationResponse& aSecond );
private: // constructors
/**
* C++ constructor.
*/
CPEngAuthorizationResponse( TInt& aSize );
/**
* Symbian constructor.
*/
void ConstructL( const TDesC& aUserId );
private: // Data
/// OWN: Response type
TInt iResponseType;
/// OWN: Attributes to be authorized
RArray<TUint32> iAttributes;
};
#endif // __CPENGAUTHORIZATIONRESPONSE_H__
// End of File