diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/client/inc/ncdqueryimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/client/inc/ncdqueryimpl.h Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,183 @@ +/* +* 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: +* +*/ + + +#ifndef C_NCD_QUERY_H +#define C_NCD_QUERY_H + +#include + +#include "ncdquery.h" +#include "ncdqueryitemimpl.h" +#include "catalogsbaseimpl.h" +#include "catalogsinterfacebase.h" +#include "ncdsendable.h" + +class MNcdQueryItem; +class MNcdConfigurationProtocolQuery; +class RReadStream; +class RWriteStream; +class MDesCArray; +class MDesC8Array; +class MNcdConfigurationProtocolQueryResponse; +class CNcdString; +class MNcdClientLocalizer; + +/** + * Implementation class for query. + * + * This class is used on both sides of the client/server border. + */ +class CNcdQuery : public CCatalogsInterfaceBase, + public MNcdQuery, + public MNcdSendable + { + +public: + + // all constructors call InternalAddRef + static CNcdQuery* NewL( RReadStream& aReadStream ); + + static CNcdQuery* NewLC( RReadStream& aReadStream ); + + static CNcdQuery* NewL( const MNcdConfigurationProtocolQuery& aQuery, + TBool aIsSecureConnection = EFalse ); + + static CNcdQuery* NewLC( const MNcdConfigurationProtocolQuery& aQuery, + TBool aIsSecureConnection = EFalse ); + + // For payment method query + static CNcdQuery* NewL( const RPointerArray& aPaymentMethodNames, + const MDesC8Array& aPaymentMethodTypes ); + + static CNcdQuery* NewLC( const RPointerArray& aPaymentMethodNames, + const MDesC8Array& aPaymentMethodTypes ); + + void SetClientLocalizer( MNcdClientLocalizer* aLocalizer ); + MNcdClientLocalizer* ClientLocalizer() const; + + + void InternalizeL( RReadStream& aReadStream ); + + void InternalizeL( const MNcdConfigurationProtocolQuery& aQuery ); + + void ExternalizeL( RWriteStream& aWriteStream ) const; + + + /** + * Returns the number of query items in this query. + * + * @return Query ítem count. + */ + TInt ItemCount() const; + + /** + * Returns query item by index. + * + * @return Query item. + */ + CNcdQueryItem& QueryItemL( TInt aIndex ); + + const TDesC& Id() const; + + /** + * Checks whether all query items have been set. + * + * @return ETrue if all items are set. + */ + TBool AllItemsSet() const; + +public: // From MNcdQuery + + /** + * @see MNcdQuery + */ + virtual TBool IsOptional() const; + + /** + * @see MNcdQuery + */ + virtual MNcdQuery::TSemantics Semantics() const; + + /** + * @see MNcdQuery + */ + virtual const TDesC& MessageTitle() const; + + /** + * @see MNcdQuery + */ + virtual const TDesC& MessageBody() const; + + /** + * @see MNcdQuery + */ + virtual RCatalogsArray< MNcdQueryItem > QueryItemsL(); + + /** + * @see MNcdQuery + */ + virtual void SetResponseL( TResponse aResponse ); + + /** + * @see MNcdQuery + */ + virtual TResponse Response(); + + /** + * @see MNcdQuery + */ + TBool IsSecureConnection() const; + +protected: + + virtual ~CNcdQuery(); + +private: + + CNcdQuery( TBool aIsSecureConnection ); + + void ConstructL(); + void ConstructL( const RPointerArray& aPaymentMethodNames, + const MDesC8Array& aPaymentMethodTypes ); + +private: + + HBufC* iId; + TBool iIsOptional; + MNcdQuery::TSemantics iSemantics; + + CNcdString* iTitle; + CNcdString* iBody; + + mutable HBufC* iLocalizedTitle; + mutable HBufC* iLocalizedBody; + + TResponse iResponse; + TBool iIsSecureConnection; + RCatalogsArray< CNcdQueryItem > iItems; + + /** + * Client localizer, not own. + */ + MNcdClientLocalizer* iClientLocalizer; + + + }; + + +#endif // C_NCD_QUERY_H