--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/inc/ncdutils.h Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,1994 @@
+/*
+* Copyright (c) 2006-2008 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: Public utility classes for NCD provider usage.
+*
+*/
+
+
+#ifndef M_NCD_UTILS_H
+#define M_NCD_UTILS_H
+
+
+#include <e32cmn.h>
+#include <s32strm.h>
+#include <badesca.h>
+
+#include "ncdkeyvaluepair.h"
+#include "ncdpurchasedownloadinfo.h"
+#include "ncdpurchaseinstallinfo.h"
+#include "ncdpurchasehistoryfilter.h"
+#include "ncdpurchasedetails.h"
+#include "ncdsearchfilter.h"
+
+class MNcdClientLocalizer;
+class CNcdString;
+class CNcdAttributes;
+
+/**
+ * A default implementation for the MNcdKeyValuePair interface,
+ * providing storage for the key and value in simple heap allocated
+ * buffers.
+ *
+ * @lib ncdutils_20019119.dll
+ *
+ * @see MNcdKeyValuePair
+ */
+class CNcdKeyValuePair : public CBase, public MNcdKeyValuePair
+ {
+public: // Construction & destruction
+
+ /**
+ * Constructor.
+ *
+ * @param aKey Key. Can not be empty
+ * @param aValue Value. Can be an empty descriptor
+ *
+ * @return Pointer to the created object.
+ * @exception System wide error code.
+ * @throw KErrArgument if aKey is empty
+ */
+ IMPORT_C static CNcdKeyValuePair* NewL(
+ const TDesC& aKey, const TDesC& aValue );
+
+ /**
+ * Constructor, leaves pointer on clean-up stack.
+ *
+ * @param aKey Key. Can not be empty
+ * @param aValue Value. Can be an empty descriptor
+ *
+ * @return Pointer to the created object.
+ * @exception System wide error code.
+ * @throw KErrArgument if aKey is empty
+ */
+ IMPORT_C static CNcdKeyValuePair* NewLC(
+ const TDesC& aKey, const TDesC& aValue );
+
+
+ /**
+ * Creates a copy of an key-value -pair.
+ *
+ * @param aOther Pair to copy
+ * @return A copy of the given pair
+ */
+ IMPORT_C static CNcdKeyValuePair* NewL( const MNcdKeyValuePair& aOther );
+
+
+ /**
+ * Creates a copy of the key-value -pair, leaves pointer on clean-up stack
+ *
+ * @param aOther Pair to copy
+ * @return A copy of the given pair
+ */
+ IMPORT_C static CNcdKeyValuePair* NewLC( const MNcdKeyValuePair& aOther );
+
+
+ /**
+ * Internalizes the key-value pair from a stream
+ *
+ * @param aStream
+ * @return A new key-value pair
+ */
+ IMPORT_C static CNcdKeyValuePair* NewL( RReadStream& aStream );
+
+
+ /**
+ * Internalizes the key-value pair from a stream
+ *
+ * @param aStream
+ * @return A new key-value pair
+ */
+ IMPORT_C static CNcdKeyValuePair* NewLC( RReadStream& aStream );
+
+
+ /**
+ * Destructor.
+ *
+ *
+ */
+ virtual ~CNcdKeyValuePair();
+
+public: // from MNcdKeyValuePair
+
+ /**
+ * Returns the key set for the pair.
+ *
+ *
+ * @return Key of the pair.
+ */
+ const TDesC& Key() const;
+
+ /**
+ * Returns the value set for the pair.
+ *
+ *
+ * @return Value of the pair.
+ */
+ const TDesC& Value() const;
+
+public: // new functions
+
+ /**
+ * Set the key for the pair.
+ *
+ *
+ * @param aKey Key for the pair.
+ * @throw KErrArgument if the key is empty
+ */
+ IMPORT_C void SetKeyL( const TDesC& aKey );
+
+ /**
+ * Set the value for the pair.
+ *
+ *
+ * @param aValue value for the pair.
+ */
+ IMPORT_C void SetValueL( const TDesC& aValue );
+
+
+ /**
+ * Comparison method. Compares the keys of two pairs to
+ * determine equivalence.
+ *
+ * @return Boolean, ETrue if pairs match.
+ */
+ IMPORT_C static TBool MatchByKey(
+ const CNcdKeyValuePair& aFirst,
+ const CNcdKeyValuePair& aSecond );
+
+
+ /**
+ * Externalizes the pair to a stream
+ *
+ * @param aStream Target stream
+ */
+ IMPORT_C void ExternalizeL( RWriteStream& aStream ) const;
+
+
+ /**
+ * Externalizes the pair to a descriptor
+ *
+ * @return Descriptor containing the pair
+ */
+ IMPORT_C HBufC8* ExternalizeToDesLC() const;
+
+
+ /**
+ * Internalizes the pair from a stream
+ *
+ * @param aStream Source stream
+ */
+ IMPORT_C void InternalizeL( RReadStream& aStream );
+
+private: // Construction & assignment
+
+ /**
+ * Private 2nd phase constructor.
+ */
+ void ConstructL( const TDesC& aKey, const TDesC& aValue );
+
+ /**
+ * Private constructor.
+ */
+ CNcdKeyValuePair();
+
+private: // Data members
+
+ // Key of the pair
+ HBufC* iKey;
+
+ // Value of the pair
+ HBufC* iValue;
+
+ };
+
+
+/**
+ * A default implementation for the MNcdPurchaseDownloadInfo interface.
+ *
+ * @lib ncdutils_20019119.dll
+ *
+ * @see MNcdPurchaseDownloadInfo
+ */
+class CNcdPurchaseDownloadInfo : public CBase,
+ public MNcdPurchaseDownloadInfo
+ {
+public: // construction and destruction
+
+ /**
+ * Constructor.
+ *
+ *
+ * @return Download information class.
+ */
+ IMPORT_C static CNcdPurchaseDownloadInfo* NewL();
+
+ /**
+ * Constructor.
+ *
+ *
+ * @return Download information class.
+ */
+ IMPORT_C static CNcdPurchaseDownloadInfo* NewLC();
+
+ /**
+ * Copies and returns new download information.
+ *
+ *
+ * @param aSource Download information to be copied.
+ * @return Download information class.
+ */
+ IMPORT_C static CNcdPurchaseDownloadInfo* NewL(
+ const MNcdPurchaseDownloadInfo& aSource );
+
+ /**
+ * Copies and returns new download information.
+ *
+ *
+ * @param aSource Download information to be copied.
+ * @return Download information class.
+ */
+ IMPORT_C static CNcdPurchaseDownloadInfo* NewLC(
+ const MNcdPurchaseDownloadInfo& aSource );
+
+ /**
+ * Destructor.
+ * Because a class object outside of this library may be inherited
+ * from this class, this virtual destructor is also set to
+ * IMPORT_C.
+ */
+ IMPORT_C virtual ~CNcdPurchaseDownloadInfo();
+
+public: // from MNcdPurchaseDownloadInfo
+
+ /**
+ * Gets the content usage type.
+ *
+ *
+ * @return Content usage.
+ */
+ IMPORT_C TContentUsage ContentUsage() const;
+
+ /**
+ * Gets the content URI.
+ *
+ *
+ * @return Content URI.
+ */
+ IMPORT_C const TDesC& ContentUri() const;
+
+ /**
+ * Gets the content validity delta.
+ *
+ *
+ * @return Content validity delta. -1 if not set.
+ */
+ IMPORT_C TInt ContentValidityDelta() const;
+
+ /**
+ * Gets the content mime type.
+ *
+ *
+ * @return Content mime type.
+ */
+ IMPORT_C const TDesC& ContentMimeType() const;
+
+ /**
+ * Gets the content size.
+ *
+ *
+ * @return Content size.
+ */
+ IMPORT_C TInt ContentSize() const;
+
+ /**
+ * Is content launchable.
+ *
+ *
+ * @return Launchable status.
+ */
+ IMPORT_C TBool IsLaunchable() const;
+
+ /**
+ * Gets the descriptor type.
+ *
+ *
+ * @return Descriptor type.
+ */
+ IMPORT_C const TDesC& DescriptorType() const;
+
+ /**
+ * Gets the descriptor name.
+ *
+ *
+ * @return Descriptor name.
+ */
+ IMPORT_C const TDesC& DescriptorName() const;
+
+ /**
+ * Gets the descriptor URI.
+ *
+ *
+ * @return Descriptor URI.
+ */
+ IMPORT_C const TDesC& DescriptorUri() const;
+
+ /**
+ * Gets the descriptor data.
+ *
+ *
+ * @return Descriptor data.
+ */
+ IMPORT_C const TDesC8& DescriptorData() const;
+
+ /**
+ * Gets the rights URI.
+ *
+ *
+ * @return Rights URI.
+ */
+ IMPORT_C const TDesC& RightsUri() const;
+
+ /**
+ * Gets the rights type.
+ *
+ *
+ * @return Rights type.
+ */
+ IMPORT_C const TDesC& RightsType() const;
+
+ /**
+ * Gets the activation key.
+ *
+ *
+ * @return Activation key.
+ */
+ IMPORT_C const TDesC& ActivationKey() const;
+
+ /**
+ * Gets the install notification URI.
+ *
+ *
+ * @return Install notification URI.
+ */
+ IMPORT_C const TDesC& InstallNotificationUri() const;
+
+
+ /**
+ * @see MNcdDownloadInfo::AttributeStringL
+ */
+ IMPORT_C const TDesC& AttributeStringL( TDownloadAttribute aAttribute ) const;
+
+
+ /**
+ * @see MNcdDownloadInfo::AttributeInt32L
+ */
+ IMPORT_C TInt32 AttributeInt32L( TDownloadAttribute aAttribute ) const;
+
+
+public: // new methods
+
+ /**
+ * Externalizer.
+ *
+ *
+ * @param aStream Write stream.
+ */
+ IMPORT_C void ExternalizeL( RWriteStream& aStream ) const;
+
+ /**
+ * Internalizer.
+ *
+ *
+ * @param aStream Read stream.
+ */
+ IMPORT_C void InternalizeL( RReadStream& aStream );
+
+ /**
+ * Sets the content usage type.
+ *
+ *
+ * @param aUsage Content usage.
+ */
+ IMPORT_C void SetContentUsage( TContentUsage aUsage );
+
+ /**
+ * Sets the content URI.
+ *
+ *
+ * @param aUri Content URI.
+ */
+ IMPORT_C void SetContentUriL( const TDesC& aUri );
+
+ /**
+ * Sets the content validity delta.
+ *
+ *
+ * @return Content validity delta.
+ */
+ IMPORT_C void SetContentValidityDelta( TInt aValidityDelta );
+
+ /**
+ * Sets the content mime type.
+ *
+ *
+ * @param aMimeType Content mime type.
+ */
+ IMPORT_C void SetContentMimeTypeL( const TDesC& aMimeType );
+
+ /**
+ * Sets the content size.
+ *
+ *
+ * @param aSize Content size.
+ */
+ IMPORT_C void SetContentSize( TInt aSize );
+
+ /**
+ * Sets content launchable.
+ *
+ *
+ * @param aLaunchable Launchable status.
+ */
+ IMPORT_C void SetLaunchable( TBool aLaunchable );
+
+ /**
+ * Sets the descriptor type.
+ *
+ *
+ * @param aType Descriptor type.
+ */
+ IMPORT_C void SetDescriptorTypeL( const TDesC& aType );
+
+ /**
+ * Sets the descriptor name.
+ *
+ *
+ * @param aName Descriptor name.
+ */
+ IMPORT_C void SetDescriptorNameL( const TDesC& aName );
+
+ /**
+ * Sets the descriptor URI.
+ *
+ *
+ * @param aUri Descriptor URI.
+ */
+ IMPORT_C void SetDescriptorUriL( const TDesC& aUri );
+
+ /**
+ * Sets the descriptor data.
+ *
+ *
+ * @param aData Descriptor data.
+ */
+ IMPORT_C void SetDescriptorDataL( const TDesC8& aData );
+
+ /**
+ * Sets the rights URI.
+ *
+ *
+ * @param aUri Rights URI.
+ */
+ IMPORT_C void SetRightsUriL( const TDesC& aUri );
+
+ /**
+ * Sets the rights type.
+ *
+ *
+ * @param aType Rights type.
+ */
+ IMPORT_C void SetRightsTypeL( const TDesC& aType );
+
+ /**
+ * Sets the activation key.
+ *
+ *
+ * @param aActivationKey Activation key.
+ */
+ IMPORT_C void SetActivationKeyL( const TDesC& aActivationKey );
+
+ /**
+ * Sets the install notification URI.
+ *
+ *
+ * @param aInstallNotificationUri Install notification URI.
+ */
+ IMPORT_C void SetInstallNotificationUriL( const TDesC& aInstallNotificationUri );
+
+ /**
+ * Integer attribute setter
+ */
+ IMPORT_C void SetAttributeL( TDownloadAttribute aAttribute, TInt32 aValue );
+
+ /**
+ * String attribute setter
+ */
+ IMPORT_C void SetAttributeL( TDownloadAttribute aAttribute, const TDesC& aValue );
+
+
+protected: // Protected and imported constructor functions enable inheritance
+ // outside of this library.
+
+ /**
+ * Constructor.
+ */
+ IMPORT_C CNcdPurchaseDownloadInfo();
+
+ /**
+ * 2nd phase constructor.
+ */
+ IMPORT_C void ConstructL();
+
+ /**
+ * Alternative 2nd phase constructor.
+ */
+ IMPORT_C void ConstructL( const MNcdPurchaseDownloadInfo& aSource );
+
+
+ /**
+ * Creates attributes if they haven't been created yet
+ */
+ IMPORT_C void CreateAttributesL();
+
+
+private:
+
+ // Content usage.
+ TContentUsage iContentUsage;
+
+ // Content URI.
+ HBufC* iContentUri;
+
+ // Content validity delta.
+ TInt iValidityDelta;
+
+ // Content mime type.
+ HBufC* iContentMimeType;
+
+ // Content size.
+ TInt iContentSize;
+
+ // Launchable status.
+ TBool iLaunchable;
+
+ // Descriptor type.
+ HBufC* iDescriptorType;
+
+ // Descriptor name.
+ HBufC* iDescriptorName;
+
+ // Descriptor URI.
+ HBufC* iDescriptorUri;
+
+ // Descriptor data.
+ HBufC8* iDescriptorData;
+
+ // Rights URI.
+ HBufC* iRightsUri;
+
+ // Rights type.
+ HBufC* iRightsType;
+
+ // Activation key.
+ HBufC* iActivationKey;
+
+ // Install notification URI.
+ HBufC* iInstallNotificationUri;
+
+ CNcdAttributes* iAttributes;
+ };
+
+
+/**
+ * A default implementation for the MNcdPurchaseInstallInfo interface.
+ *
+ * @lib ncdutils_20019119.dll
+ *
+ * @see MNcdPurchaseInstallInfo
+ */
+class CNcdPurchaseInstallInfo : public CBase,
+ public MNcdPurchaseInstallInfo
+ {
+public: // construction and destruction
+
+ /**
+ * Constructor.
+ *
+ *
+ * @return File installation information class.
+ */
+ IMPORT_C static CNcdPurchaseInstallInfo* NewL();
+
+ /**
+ * Constructor.
+ *
+ *
+ * @return File installation information class.
+ */
+ IMPORT_C static CNcdPurchaseInstallInfo* NewLC();
+
+ /**
+ * Copies and returns new file installation information.
+ *
+ *
+ * @param aSource File installation information to be copied.
+ * @return File installation information class.
+ */
+ IMPORT_C static CNcdPurchaseInstallInfo* NewL(
+ const MNcdPurchaseInstallInfo& aSource );
+
+ /**
+ * Copies and returns new file installation information.
+ *
+ *
+ * @param aSource File installation information to be copied.
+ * @return File installation information class.
+ */
+ IMPORT_C static CNcdPurchaseInstallInfo* NewLC(
+ const MNcdPurchaseInstallInfo& aSource );
+
+ /**
+ * Destructor
+ */
+ IMPORT_C virtual ~CNcdPurchaseInstallInfo();
+
+public: // from MNcdPurchaseInstallInfo
+
+ /**
+ * Get name and path of installed file.
+ *
+ *
+ * @return File name.
+ */
+ IMPORT_C const TDesC& Filename() const;
+
+ /**
+ * Get application UID of installed application.
+ *
+ *
+ * @return TUid Application UID.
+ */
+ IMPORT_C TUid ApplicationUid() const;
+
+ /**
+ * Get application version of installed application.
+ *
+ *
+ * @return Application version.
+ */
+ IMPORT_C const TDesC& ApplicationVersion() const;
+
+ /**
+ * Get name of installed theme.
+ *
+ *
+ * @return Theme name.
+ */
+ IMPORT_C const TDesC& ThemeName() const;
+
+
+public: // new methods
+
+
+ /**
+ * Externalizer
+ *
+ *
+ * @param aStream Write stream
+ */
+ IMPORT_C void ExternalizeL( RWriteStream& aStream ) const;
+
+ /**
+ * Internalizer
+ *
+ *
+ * @param aStream Read stream
+ */
+ IMPORT_C void InternalizeL( RReadStream& aStream );
+
+ /**
+ * Set name and path of installed file.
+ *
+ *
+ * @param aFilename File name.
+ */
+ IMPORT_C void SetFilenameL( const TDesC& aFilename );
+
+ /**
+ * Set application UID of installed application.
+ *
+ *
+ * @param aApplicationUid Application UID.
+ */
+ IMPORT_C void SetApplicationUid( const TUid aApplicationUid );
+
+ /**
+ * Set application version of installed application.
+ *
+ *
+ * @param aApplicationVersion Application version.
+ */
+ IMPORT_C void SetApplicationVersionL( const TDesC& aApplicationVersion );
+
+ /**
+ * Set name of installed theme.
+ *
+ *
+ * @param aThemeName Theme name.
+ */
+ IMPORT_C void SetThemeNameL( const TDesC& aThemeName );
+
+protected:
+
+ /**
+ * Private 2nd phase constructor.
+ */
+ IMPORT_C void BaseConstructL();
+
+
+ /**
+ * Private 2nd phase constructor.
+ */
+ IMPORT_C void BaseConstructL( const MNcdPurchaseInstallInfo& aSource );
+
+ /**
+ * Private constructor.
+ */
+ IMPORT_C CNcdPurchaseInstallInfo();
+
+private:
+
+ // Name and path of installed file.
+ HBufC* iFilename;
+
+ // Application UID of installed application.
+ TUid iApplicationUid;
+
+ // Application version of installed application.
+ HBufC* iApplicationVersion;
+
+ // Name of installed theme.
+ HBufC* iThemeName;
+
+ };
+
+
+/**
+ * A default implementation for the MNcdPurchaseHistoryFilter interface.
+ *
+ * @lib ncdutils_20019119.dll
+ *
+ * @see MNcdPurchaseHistoryFilter
+ */
+ class CNcdPurchaseHistoryFilter : public CBase,
+ public MNcdPurchaseHistoryFilter
+ {
+public: // Construction & destruction
+
+ /**
+ * Constructor.
+ * @return CNcdPurchaseHistoryFilter* Filter for purchase event queries.
+ */
+ IMPORT_C static CNcdPurchaseHistoryFilter* NewL();
+
+ /**
+ * Constructor.
+ * @return CNcdPurchaseHistoryFilter* Filter for purchase event queries.
+ */
+ IMPORT_C static CNcdPurchaseHistoryFilter* NewLC();
+
+ /**
+ * Constructor.
+ * @param aClientUids Client UIDs.
+ * @param aNamespace Namespace. Can be KNullDesC.
+ * @param aEntityId Entity ID. Can be KNullDesC.
+ * @param aEventId Event ID.
+ * @return CNcdPurchaseHistoryFilter* Filter for purchase event queries.
+ */
+ IMPORT_C static CNcdPurchaseHistoryFilter* NewL(
+ TArray< TUid > aClientUids,
+ const TDesC& aNamespace,
+ const TDesC& aEntityId,
+ const TUint aEventId );
+
+ /**
+ * Constructor.
+ * @param aClientUids Client UIDs.
+ * @param aNamespace Namespace. Can be KNullDesC.
+ * @param aEntityId Entity ID. Can be KNullDesC.
+ * @param aEventId Event ID.
+ * @return CNcdPurchaseHistoryFilter* Filter for purchase event queries.
+ */
+ IMPORT_C static CNcdPurchaseHistoryFilter* NewLC(
+ TArray< TUid > aClientUids,
+ const TDesC& aNamespace,
+ const TDesC& aEntityId,
+ const TUint aEventId );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CNcdPurchaseHistoryFilter();
+
+private: // Construction
+
+ /**
+ * Private constructor.
+ * @param aClientUids Client UIDs.
+ * @param aNamespace Namespace. Can be KNullDesC.
+ * @param aEntityId Entity ID. Can be KNullDesC.
+ * @param aEventId Event ID.
+ */
+ void ConstructL(
+ TArray< TUid > aClientUids,
+ const TDesC& aNamespace,
+ const TDesC& aEntityId,
+ const TUint aEventId );
+
+ /**
+ * Private constructor.
+ */
+ CNcdPurchaseHistoryFilter();
+
+public: // from MNcdPurchaseHistoryFilter
+
+ /**
+ * @see MNcdPurchaseHistoryFilter::ClientUids
+ */
+ const TArray< TUid > ClientUids() const;
+
+ /**
+ * @see MNcdPurchaseHistoryFilter::Namespace
+ */
+ const TDesC& Namespace() const;
+
+ /**
+ * @see MNcdPurchaseHistoryFilter::EntityId
+ */
+ const TDesC& EntityId() const;
+
+ /**
+ * @see MNcdPurchaseHistoryFilter::EventId
+ */
+ TUint EventId() const;
+
+
+public: // New functions
+
+ /**
+ * Externalizer
+ * @param aStream Write stream
+ */
+ IMPORT_C void ExternalizeL( RWriteStream& aStream ) const;
+
+ /**
+ * Internalizer
+ * @param aStream Read stream
+ */
+ IMPORT_C void InternalizeL( RReadStream& aStream );
+
+ /**
+ * Set client UIDs.
+ * @param aClientUids Client UIDs.
+ */
+ IMPORT_C void SetClientUids( const TArray< TUid > aClientUids );
+
+ /**
+ * Set namespace.
+ * @param aNamespace Namespace. Can be KNullDesC.
+ */
+ IMPORT_C void SetNamespaceL( const TDesC& aNamespace );
+
+ /**
+ * Set entity ID.
+ * @param aEntityId Entity ID. Can be KNullDesC.
+ */
+ IMPORT_C void SetEntityIdL( const TDesC& aEntityId );
+
+ /**
+ * Set event ID.
+ * @param aEventId Event ID.
+ */
+ IMPORT_C void SetEventId( const TUint aEventId );
+
+private: // Data members
+
+ RArray< TUid > iClientUids;
+ HBufC* iNamespace;
+ HBufC* iEntityId;
+ TUint iEventId;
+
+ };
+
+
+/**
+ * A default implementation for the MNcdPurchaseDetails interface.
+ *
+ * @lib ncdutils_20019119.dll
+ *
+ * @see MNcdPurchaseDetails
+ *
+ * The number of DownloadedFiles must always match the number of
+ * DownloadInfos. DownloadFiles are added/removed automatically if necessary
+ * when the details are saved to purchase history
+ *
+ * The number of InstallInfos must be equal to or lesser than the number
+ * of DownloadInfos. Excess InstallInfos are removed when the details
+ * are saved to purchase history
+ */
+class CNcdPurchaseDetails : public CBase,
+ public MNcdPurchaseDetails
+ {
+public: // Construction & destruction
+
+ /**
+ * Constructor.
+ *
+ *
+ * @return const CNcdPurchaseDetails* Purchase details.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C static CNcdPurchaseDetails* NewL();
+
+ /**
+ * Constructor. Leaves pointer on cleanup stack.
+ *
+ *
+ * @return const CNcdPurchaseDetails* Purchase details.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C static CNcdPurchaseDetails* NewLC();
+
+ /**
+ * Copy constructor.
+ *
+ *
+ * @param aDetails Details object to copy information from.
+ * @return const CNcdPurchaseDetails* Purchase details.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C static CNcdPurchaseDetails* NewL( const MNcdPurchaseDetails& aDetails );
+
+ /**
+ * Copy constructor. Leaves pointer on cleanup stack.
+ *
+ *
+ * @param aDetails Details object to copy information from.
+ * @return const CNcdPurchaseDetails* Purchase details.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C static CNcdPurchaseDetails* NewLC( const MNcdPurchaseDetails& aDetails );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CNcdPurchaseDetails();
+
+public: // From MNcdPurchaseDetails
+
+ /**
+ * @see MNcdPurchaseDetails::State
+ */
+ TState State() const;
+
+ /**
+ * @see MNcdPurchaseDetails::ClientUid
+ */
+ TUid ClientUid() const;
+
+ /**
+ * @see MNcdPurchaseDetails::Namespace
+ */
+ const TDesC& Namespace() const;
+
+ /**
+ * @see MNcdPurchaseDetails::EntityId
+ */
+ const TDesC& EntityId() const;
+
+ /**
+ * @see MNcdPurchaseDetails::ItemName
+ */
+ const TDesC& ItemName() const;
+
+ /**
+ * @see MNcdPurchaseDetails::ItemPurpose
+ */
+ TUint ItemPurpose() const;
+
+ /**
+ * @see MNcdPurchaseDetails::CatalogSourceName
+ */
+ const TDesC& CatalogSourceName() const;
+
+ /**
+ * @see MNcdPurchaseDetails::DownloadInfoL
+ */
+ TArray< MNcdPurchaseDownloadInfo* > DownloadInfoL() const;
+
+ /**
+ * @see MNcdPurchaseDetails::PurchaseOptionId
+ */
+ const TDesC& PurchaseOptionId() const;
+
+ /**
+ * @see MNcdPurchaseDetails::PurchaseOptionName
+ */
+ const TDesC& PurchaseOptionName() const;
+
+ /**
+ * @see MNcdPurchaseDetails::PurchaseOptionPrice
+ */
+ const TDesC& PurchaseOptionPrice() const;
+
+ /**
+ * @see MNcdPurchaseDetails::FinalPrice
+ */
+ const TDesC& FinalPrice() const;
+
+ /**
+ * @see MNcdPurchaseDetails::PaymentMethodName
+ */
+ const TDesC& PaymentMethodName() const;
+
+ /**
+ * @see MNcdPurchaseDetails::PurchaseTime
+ */
+ TTime PurchaseTime() const;
+
+ /**
+ * @see MNcdPurchaseDetails::DownloadedFiles
+ */
+ const MDesCArray& DownloadedFiles() const;
+
+ /**
+ * @see MNcdPurchaseDetails::InstallInfoL
+ */
+ TArray< MNcdPurchaseInstallInfo* > InstallInfoL() const;
+
+ /**
+ * @see MNcdPurchaseDetails::Icon
+ */
+ const TDesC8& Icon() const;
+
+ /**
+ * @see MNcdPurchaseDetails::HasIcon
+ */
+ TBool HasIcon() const;
+
+ /**
+ * @see MNcdPurchaseDetails::DownloadAccessPoint
+ */
+ const TDesC& DownloadAccessPoint() const;
+
+ /**
+ * @see MNcdPurchaseDetails::Description
+ */
+ const TDesC& Description() const;
+
+ /**
+ * @see MNcdPurchaseDetails::Version
+ */
+ const TDesC& Version() const;
+
+ /**
+ * @see MNcdPurchaseDetails::ServerUri
+ */
+ const TDesC& ServerUri() const;
+
+ /**
+ * @see MNcdPurchaseDetails::ItemType
+ */
+ TItemType ItemType() const;
+
+ /**
+ * @see MNcdPurchaseDetails::TotalContentSize
+ */
+ TInt TotalContentSize() const;
+
+ /**
+ * @see MNcdPurchaseDetails::OriginNodeId
+ */
+ const TDesC& OriginNodeId() const;
+
+ /**
+ * @see MNcdPurchaseDetails::LastOperationTime
+ */
+ TTime LastOperationTime() const;
+
+ /**
+ * @see MNcdPurchaseDetails::LastOperationErrorCode
+ */
+ TInt LastOperationErrorCode() const;
+
+
+ /**
+ * @see MNcdPurchaseDetails::AttributeString
+ */
+ const TDesC& AttributeString( TPurchaseAttribute aAttribute ) const;
+
+
+ /**
+ * @see MNcdPurchaseDetails::AttributeInt32
+ */
+ TInt32 AttributeInt32( TPurchaseAttribute aAttribute ) const;
+
+public: // New functions
+
+ /**
+ * Externalizer
+ * @param aStream Write stream.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void ExternalizeL( RWriteStream& aStream ) const;
+
+ /**
+ * Internalizer
+ * @param aStream Read stream.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void InternalizeL( RReadStream& aStream );
+
+ /**
+ * Set client UID.
+ *
+ *
+ * @param aClientUid Client UID.
+ */
+ IMPORT_C void SetClientUid( TUid aClientUid );
+
+ /**
+ * Set namespace.
+ *
+ *
+ * @param aNamespace Namespace.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetNamespaceL( const TDesC& aNamespace );
+
+ /**
+ * Set namespace.
+ *
+ *
+ * @param aNamespace Namespace. Ownership is transferred.
+ */
+ IMPORT_C void SetNamespace( HBufC* aNamespace );
+
+ /**
+ * Set entity ID.
+ *
+ *
+ * @param aEntityId Entity ID.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetEntityIdL( const TDesC& aEntityId );
+
+ /**
+ * Set entity ID.
+ *
+ *
+ * @param aEntityId Entity ID. Ownership is transferred.
+ */
+ IMPORT_C void SetEntityId( HBufC* aEntityId );
+
+ /**
+ * Set item name.
+ *
+ *
+ * @param aItemName Item name.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetItemNameL( const TDesC& aItemName );
+
+ /**
+ * Set item name.
+ *
+ *
+ * @param aItemName Item name. Ownership is transferred.
+ */
+ IMPORT_C void SetItemName( HBufC* aItemName );
+
+ /**
+ * Set item purpose.
+ *
+ *
+ * @param aItemPurpose Item purpose. Bit field of TNcdItemPurpose flags.
+ * @see TNcdItemPurpose
+ */
+ IMPORT_C void SetItemPurpose( TUint aItemPurpose );
+
+ /**
+ * Set catalog source name.
+ *
+ *
+ * @param aCatalogSourceName Catalog source name.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetCatalogSourceNameL( const TDesC& aCatalogSourceName );
+
+ /**
+ * Set catalog source name.
+ *
+ *
+ * @param aCatalogSourceName Catalog source name. Ownership is transferred.
+ */
+ IMPORT_C void SetCatalogSourceName( HBufC* aCatalogSourceName );
+
+ /**
+ * Set download infos.
+ *
+ *
+ * @param aDownloadInfo Download infos. Ownership is not transferred, copies
+ * will be taken.
+ */
+ IMPORT_C void SetDownloadInfoL(
+ const TArray< MNcdPurchaseDownloadInfo* >& aDownloadInfo );
+
+
+ /**
+ * Add download info
+ *
+ *
+ * @param aDownloadInfo A download info. Ownership is transferred if the
+ * operation is successful.
+ */
+ IMPORT_C void AddDownloadInfoL( MNcdPurchaseDownloadInfo* aDownloadInfo );
+
+
+ /**
+ * Insert download info
+ *
+ *
+ * @param aDownloadInfo A download info. Ownership is transferred if the
+ * operation is successful.
+ * @param aIndex
+ */
+ IMPORT_C void InsertDownloadInfoL(
+ MNcdPurchaseDownloadInfo* aDownloadInfo,
+ TInt aIndex );
+
+
+ /**
+ * Remove download info
+ *
+ *
+ * @param aIndex Index
+ */
+ IMPORT_C void RemoveDownloadInfo( TInt aIndex );
+
+ /**
+ * Download info count getter
+ *
+ *
+ */
+ IMPORT_C TInt DownloadInfoCount() const;
+
+ /**
+ * Download info getter
+ *
+ *
+ * @return Download info
+ */
+ IMPORT_C CNcdPurchaseDownloadInfo& DownloadInfo( TInt aIndex );
+
+
+ /**
+ * Set purchase option ID.
+ *
+ *
+ * @param aPurchaseOptionId Purchase option ID.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetPurchaseOptionIdL( const TDesC& aPurchaseOptionId );
+
+ /**
+ * Set purchase option ID.
+ *
+ *
+ * @param aPurchaseOptionId Purchase option ID. Ownership is transferred.
+ */
+ IMPORT_C void SetPurchaseOptionId( HBufC* aPurchaseOptionId );
+
+ /**
+ * Set purchase option name.
+ *
+ *
+ * @param aPurchaseOptionName Purchase option name.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetPurchaseOptionNameL( const TDesC& aPurchaseOptionName );
+
+ /**
+ * Set purchase option name.
+ *
+ *
+ * @param aPurchaseOptionName Purchase option name. Ownership is transferred.
+ */
+ IMPORT_C void SetPurchaseOptionName( HBufC* aPurchaseOptionName );
+
+ /**
+ * Set purchase option price.
+ *
+ *
+ * @param aPurchaseOptionPrice Purchase option price.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetPurchaseOptionPriceL( const TDesC& aPurchaseOptionPrice );
+
+ /**
+ * Set purchase option price.
+ *
+ *
+ * @param aPurchaseOptionPrice Purchase option price. Ownership is transferred.
+ */
+ IMPORT_C void SetPurchaseOptionPrice( HBufC* aPurchaseOptionPrice );
+
+ /**
+ * Set final price.
+ *
+ *
+ * @param aFinalPrice Final price.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetFinalPriceL( const TDesC& aFinalPrice );
+
+ /**
+ * Set final price.
+ *
+ *
+ * @param aFinalPrice Final price. Ownership is transferred.
+ */
+ IMPORT_C void SetFinalPrice( HBufC* aFinalPrice );
+
+ /**
+ * Set payment method name.
+ *
+ *
+ * @param aPaymentMethodName Payment method name.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetPaymentMethodNameL( const TDesC& aPaymentMethodName );
+
+ /**
+ * Set payment method name.
+ *
+ *
+ * @param aPaymentMethodName Payment method name. Ownership is transferred.
+ */
+ IMPORT_C void SetPaymentMethodName( HBufC* aPaymentMethodName );
+
+ /**
+ * Set time of purchase.
+ *
+ *
+ * @param aPurchaseTime Purchase time.
+ */
+ IMPORT_C void SetPurchaseTime( TTime aPurchaseTime );
+
+ /**
+ * Set file name(s) of the downloaded file(s).
+ *
+ *
+ * @param aDownloadedFiles Array of file names. Ownership is transferred.
+ */
+ IMPORT_C void SetDownloadedFiles( CDesCArray* aDownloadedFiles );
+
+ /**
+ * Set file name(s) of the downloaded file(s).
+ *
+ *
+ * @param aDownloadedFiles Array of file names. Ownership is not transferred,
+ * copies will be taken.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetDownloadedFilesL( const MDesCArray& aDownloadedFiles );
+
+
+
+ /**
+ * Replaces a file name of the downloaded file.
+ *
+ *
+ * @param aIndex Index
+ * @param aDownloadFile New file name
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void ReplaceDownloadedFileL( TInt aIndex,
+ const TDesC& aDownloadedFile );
+
+
+ /**
+ * Add file name for a downloaded file.
+ *
+ *
+ * @param aDownloadedFile Filename
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void AddDownloadedFileL( const TDesC& aDownloadedFile );
+
+
+ /**
+ * Insert file name for a downloaded file.
+ *
+ *
+ * @param aDownloadedFile Filename
+ * @param aIndex
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void InsertDownloadedFileL(
+ const TDesC& aDownloadedFile,
+ TInt aIndex );
+
+ /**
+ * Remove a file name
+ *
+ *
+ * @param aIndex
+ */
+ IMPORT_C void RemoveDownloadedFile( TInt aIndex );
+
+
+ /**
+ * Set file installation infos.
+ *
+ *
+ * @param aInstallInfo File installation info array. Ownership is not
+ * transferred, copies will be taken.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetInstallInfoL(
+ const TArray< MNcdPurchaseInstallInfo* >& aInstallInfo );
+
+
+ /**
+ * Add file installation info.
+ *
+ *
+ * @param aInstallInfo File installation info. Ownership is transferred
+ * if the operation is successful.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void AddInstallInfoL( MNcdPurchaseInstallInfo* aInstallInfo );
+
+
+ /**
+ * Insert file installation info.
+ *
+ *
+ * @param aInstallInfo File installation info. Ownership is transferred
+ * if the operation is successful.
+ * @param aIndex
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void InsertInstallInfoL(
+ MNcdPurchaseInstallInfo* aInstallInfo,
+ TInt aIndex );
+
+ /**
+ * Remove install info
+ *
+ *
+ * @param aIndex Index
+ */
+ IMPORT_C void RemoveInstallInfo( TInt aIndex );
+
+ /**
+ * Install info count getter
+ *
+ *
+ * @return Install info count
+ */
+ IMPORT_C TInt InstallInfoCount() const;
+
+
+ /**
+ * Install info getter
+ *
+ *
+ * @param aIndex Index
+ * @return Install info
+ */
+ IMPORT_C CNcdPurchaseInstallInfo& InstallInfo( TInt aIndex );
+
+ /**
+ * Set icon.
+ *
+ *
+ * @param aIcon Icon data.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetIconL( const TDesC8& aIcon );
+
+ /**
+ * Set icon.
+ *
+ *
+ * @param aIcon Icon data. Ownership is transferred.
+ */
+ IMPORT_C void SetIcon( HBufC8* aIcon );
+
+ /**
+ * Get icon data.
+ *
+ * @note Ownership is transferred.
+ * @return Icon data.
+ */
+ IMPORT_C HBufC8* GetIconData();
+
+ /**
+ * Setter for HasIcon flag.
+ *
+ * @param aHasIcon flag value.
+ */
+ IMPORT_C void SetHasIcon( TBool aHasIcon );
+
+ /**
+ * Set access point used in download process.
+ *
+ *
+ * @param aAccessPoint Access point.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetDownloadAccessPointL( const TDesC& aAccessPoint );
+
+ /**
+ * Set access point used in download process.
+ *
+ *
+ * @param aAccessPoint Access point. Ownership is transferred.
+ */
+ IMPORT_C void SetDownloadAccessPoint( HBufC* aAccessPoint );
+
+ /**
+ * Set description.
+ *
+ *
+ * @param aDescription Description.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetDescriptionL( const TDesC& aDescription );
+
+ /**
+ * Set description.
+ *
+ *
+ * @param aDescription Description. Ownership is transferred.
+ */
+ IMPORT_C void SetDescription( HBufC* aDescription );
+
+ /**
+ * Set version.
+ *
+ *
+ * @param aVersion Version.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetVersionL( const TDesC& aVersion );
+
+ /**
+ * Set version.
+ *
+ *
+ * @param aVersion Version. Ownership is transferred.
+ */
+ IMPORT_C void SetVersion( HBufC* aVersion );
+
+ /**
+ * Set server URI.
+ *
+ *
+ * @param aServerUri Server URI.
+ * @exception Leave System wide error code.
+ */
+ IMPORT_C void SetServerUriL( const TDesC& aServerUri );
+
+ /**
+ * Set server URI.
+ *
+ *
+ * @param aServerUri Server URI. Ownership is transferred.
+ */
+ IMPORT_C void SetServerUri( HBufC* aServerUri );
+
+ /**
+ * Set item type.
+ *
+ *
+ * @param aItemType Item type.
+ */
+ IMPORT_C void SetItemType( TItemType aItemType );
+
+ /**
+ * Set the total content size.
+ *
+ *
+ * @param aSize The size.
+ */
+ IMPORT_C void SetTotalContentSize( TInt aSize );
+
+ /**
+ * Set the origin node id.
+ *
+ *
+ * @param aOriginNodeId The id.
+ */
+ IMPORT_C void SetOriginNodeIdL( const TDesC& aOriginNodeId );
+
+ /**
+ * Set the origin node id.
+ *
+ *
+ * @param aOriginNodeId The id.
+ */
+ IMPORT_C void SetOriginNodeId( HBufC* aOriginNodeId );
+
+ /**
+ * Set the last operation time to the current universal time.
+ *
+ *
+ */
+ IMPORT_C void SetLastUniversalOperationTime();
+
+ /**
+ * Set the last operation time. This should be universal time.
+ *
+ *
+ * @param aTime The universal time.
+ */
+ IMPORT_C void SetLastOperationTime( const TTime& aTime );
+
+ /**
+ * Set the last operation error code.
+ *
+ *
+ * @param aError The error code.
+ */
+ IMPORT_C void SetLastOperationErrorCode( TInt aError );
+
+ /**
+ * Integer attribute setter
+ */
+ IMPORT_C void SetAttributeL( TPurchaseAttribute aAttribute, TInt32 aValue );
+
+ /**
+ * String attribute setter
+ */
+ IMPORT_C void SetAttributeL(
+ TPurchaseAttribute aAttribute, const TDesC& aValue );
+
+ /**
+ * Externalizes attributes to a stream
+ *
+ * @param aStream Write stream
+ */
+ IMPORT_C void ExternalizeAttributesL( RWriteStream& aStream ) const;
+
+ /**
+ * Internalizes attributes from a stream
+ *
+ * @param aStream Read stream
+ */
+ IMPORT_C void InternalizeAttributesL( RReadStream& aStream );
+
+
+private: // Construction
+
+ /**
+ * Private 2nd phase constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Private constructor.
+ */
+ CNcdPurchaseDetails();
+
+ /**
+ * Creates attributes if they haven't been created yet
+ */
+ void CreateAttributesL();
+
+private: // Data members
+
+ // Client UID.
+ TUid iClientUid;
+
+ // Namespace.
+ HBufC* iNamespace;
+
+ // Entity ID.
+ HBufC* iEntityId;
+
+ // Item name.
+ HBufC* iItemName;
+
+ // Item purpose.
+ TUint iItemPurpose;
+
+ // Catalog source name.
+ HBufC* iCatalogSourceName;
+
+ // Download info array.
+ RPointerArray< MNcdPurchaseDownloadInfo > iDownloadInfo;
+
+ // Purchase option ID.
+ HBufC* iPurchaseOptionId;
+
+ // Purchase option name.
+ HBufC* iPurchaseOptionName;
+
+ // Purchase option price.
+ HBufC* iPurchaseOptionPrice;
+
+ // Final price.
+ HBufC* iFinalPrice;
+
+ // Payment method name.
+ HBufC* iPaymentMethodName;
+
+ // Purchase time.
+ TTime iPurchaseTime;
+
+ // Downloaded files array.
+ CDesCArray* iDownloadedFiles;
+
+ // Install info array.
+ RPointerArray< MNcdPurchaseInstallInfo > iInstallInfo;
+
+ // Icon data.
+ HBufC8* iIcon;
+
+ // Determines whether this object has an icon.
+ TBool iHasIcon;
+
+ // Access point used in download process.
+ HBufC* iDownloadAccessPoint;
+
+ // Description.
+ HBufC* iDescription;
+
+ // Version.
+ HBufC* iVersion;
+
+ // Server URI.
+ HBufC* iServerUri;
+
+ // Item type.
+ TItemType iItemType;
+
+ // Total downloadable content size in bytes.
+ TInt iTotalContentSize;
+
+ // The id of the structure node that this entity was purchased from,
+ HBufC* iOriginNodeId;
+
+ // The universal time that informs when the last operation
+ // was directed to the purchase item.
+ TTime iLastOperationTime;
+
+ // The error code of the last operation that was directed
+ // to the purchase item.
+ TInt iLastOperationErrorCode;
+
+ // Additional attributes, owned
+ CNcdAttributes* iAttributes;
+ };
+
+/**
+ * A default implementation for the MNcdSearchFilter interface.
+ *
+ * @lib ncdutils_20019119.dll
+ *
+ * @see MNcdSearchFilter
+ */
+class CNcdSearchFilter : public CBase,
+ public MNcdSearchFilter
+ {
+
+public:
+
+ /**
+ * Default factory method for CNcdSearchFilter objects. Leaves contents uninitialized.
+ *
+ * @return CNcdSearchFilter object pointer.
+ */
+ IMPORT_C static CNcdSearchFilter *NewL();
+
+ /**
+ * Default factory method for CNcdSearchFilter objects. Leaves contents uninitialized.
+ * Leaves object pointer on cleanup stack.
+ *
+ * @return CNcdSearchFilter object pointer.
+ */
+ IMPORT_C static CNcdSearchFilter *NewLC();
+
+ /**
+ * Factory method for CNcdSearchFilter objects. Initializes as a copy of another filter.
+ *
+ * @param aFilter Initialization copy source.
+ * @return CNcdSearchFilter object pointer.
+ */
+ IMPORT_C static CNcdSearchFilter *NewL( const CNcdSearchFilter& aFilter );
+
+ /**
+ * Factory method for CNcdSearchFilter objects. Initializes as a copy of another filter.
+ * Leaves object pointer on cleanup stack.
+ *
+ * @param aFilter Initialization copy source.
+ * @return CNcdSearchFilter object pointer.
+ */
+ IMPORT_C static CNcdSearchFilter *NewLC( const CNcdSearchFilter& aFilter );
+
+ /**
+ * Factory method for CNcdSearchFilter objects. Initializes from a stream externalized with
+ * CNcdSearchFilter::ExternalizeL().
+ *
+ * @param aStream Initialization source stream.
+ * @return CNcdSearchFilter object pointer.
+ */
+ IMPORT_C static CNcdSearchFilter *NewL( RReadStream& aStream );
+
+ /**
+ * Factory method for CNcdSearchFilter objects. Initializes from a stream externalized with
+ * CNcdSearchFilter::ExternalizeL(). Leaves object pointer on cleanup stack.
+ *
+ * @param aStream Initialization source stream.
+ * @return CNcdSearchFilter object pointer.
+ */
+ IMPORT_C static CNcdSearchFilter *NewLC( RReadStream& aStream );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CNcdSearchFilter();
+
+public: // From MNcdSearchFilter
+
+ /**
+ * @see MNcdSearchFilter::Keywords
+ */
+ virtual const MDesCArray& Keywords() const;
+
+ /**
+ * @see MNcdSearchFilter::Keywords
+ */
+ virtual TUint ContentPurposes() const;
+
+
+ /**
+ * @see MNcdSearchFilter::SearchMode
+ */
+ virtual MNcdSearchFilter::TSearchMode SearchMode() const;
+
+
+ /**
+ * @see MNcdSearchFilter::RecursionDepth
+ */
+ virtual TUint RecursionDepth() const;
+
+
+public:
+
+ /**
+ * Adds a search keyword.
+ * By default, no keywords are set
+ *
+ * @param aKeyword Search keyword to add.
+ */
+ IMPORT_C void AddKeywordL( const TDesC& aKeyword );
+
+ /**
+ * Set flags for filtering by content purpose.
+ * By default, no content flags are set
+ *
+ * @param aFlags Content flags for filtering. A combination of TNcdItemPurpose flags.
+ * @see TNcdItemPurpose
+ */
+ IMPORT_C void SetContentPurposes( TUint aFlags );
+
+
+ /**
+ * Set search mode
+ *
+ * By default, mode is ENormal
+ *
+ * @param aMode Search mode
+ */
+ IMPORT_C void SetSearchMode( MNcdSearchFilter::TSearchMode aMode );
+
+
+ /**
+ * Set recursion depth
+ *
+ * By default, recursion depth is 2. Depth of 0 disabled recursion
+ *
+ * @param aRecursionDepth Depth of recursion
+ * @leave KErrArgument if aRecursionDepth is greater than 5
+ */
+ IMPORT_C void SetRecursionDepthL( TUint aRecursionDepth );
+
+
+ /**
+ * Internalize member data.
+ *
+ * @param aStream Source stream.
+ */
+ virtual void InternalizeL( RReadStream& aStream );
+
+
+ /**
+ * Externalize member data.
+ *
+ * @param aStream Destination stream.
+ */
+ virtual void ExternalizeL( RWriteStream& aStream );
+
+
+protected:
+
+ /**
+ * First phase constructor.
+ */
+ CNcdSearchFilter();
+
+ /**
+ * Second phase constructor.
+ */
+ void ConstructL();
+
+
+private:
+
+ /**
+ * Keywords to filter the search based on
+ */
+ CDesCArray *iKeywords;
+
+ /**
+ * Purposes to filter the search based on
+ */
+ TUint iPurposes;
+
+ /**
+ * Search mode
+ */
+ MNcdSearchFilter::TSearchMode iSearchMode;
+
+ /**
+ * Recursion depth
+ */
+ TUint iRecursionDepth;
+ };
+
+#endif // M_NCD_UTILS_H