ncdengine/inc/ncdpurchasedetails.h
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/inc/ncdpurchasedetails.h	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,389 @@
+/*
+* 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:   Definition of MNcdPurchaseDetails
+*
+*/
+
+
+#ifndef M_NCD_PURCHASE_DETAILS_H
+#define M_NCD_PURCHASE_DETAILS_H
+
+#include <e32base.h>
+#include <bamdesca.h>
+#include "ncditempurpose.h"
+
+class MNcdPurchaseDownloadInfo;
+class MNcdPurchaseInstallInfo;
+
+/**
+ *  Purchase details.
+ *
+ *  
+ */
+class MNcdPurchaseDetails
+    {
+
+public:
+
+    virtual ~MNcdPurchaseDetails()
+        {
+        }
+
+    /**
+     * State of the purchase.
+     *
+     * 
+     */
+    enum TState
+        {
+
+        /** Payment made, but not downloaded nor installed. */
+        EStatePurchased,
+
+        /** Payment made and content downloaded, but not installed. */
+        EStateDownloaded,
+
+        /** Payment made, content downloaded and installed. */
+        EStateInstalled
+ 
+        };
+
+    /**
+     * Type of the purchased item.
+     */
+    enum TItemType
+        {
+        
+        /** Item has unknown type. */
+        EUnknown = 0,
+
+        /** This is item. */
+        EItem = 1,
+
+        /** This is folder. */
+        EFolder = 2
+        
+        };
+
+    
+    /**
+     * Additional attributes
+     *
+     * These are retrieved with AttributeString and AttributeInt32
+     *
+     * Adding new attributes does not cause a binary break but removing
+     * does
+     *
+     */
+    enum TPurchaseAttribute
+        {
+        /** 
+         * Content UID received in a protocol response
+         * 
+         * Type: Int32
+         */
+        EPurchaseAttributeContentUid = 0,
+        
+        /**
+         * Content MIME type received in a protocol response
+         * 
+         * Type: String
+         */
+        EPurchaseAttributeContentMimeType,
+
+        /**
+         * Internal attribute value, DO NOT USE
+         *
+         * @note Add new attributes before this
+         */
+        EPurchaseAttributeInternal
+        };
+    
+    /**
+     * Get purchase state.
+     *
+     * @note When an item has been installed, its state will remain
+     * as EStateInstalled in the purhcase detail even if the content 
+     * was uninstalled.
+     *
+     * 
+     * @return Current state of the purchase.
+     */
+    virtual TState State() const = 0;
+
+    /**
+     * Get client UID.
+     *
+     * 
+     * @return Client UID.
+     */
+    virtual TUid ClientUid() const = 0;
+    
+    /**
+     * Get namespace.
+     *
+     * 
+     * @return Namespace.
+     */
+    virtual const TDesC& Namespace() const = 0;
+    
+    /**
+     * Get entity ID.
+     *
+     * 
+     * @return Entity ID.
+     */
+    virtual const TDesC& EntityId() const = 0;
+    
+    /**
+     * Get item name.
+     *
+     * 
+     * @return Item name.
+     */
+    virtual const TDesC& ItemName() const = 0;
+
+    /**
+     * Get item purpose.
+     *
+     * 
+     * @return Item purpose. Bit field of TNcdItemPurpose flags.
+     * @see TNcdItemPurpose
+     */
+    virtual TUint ItemPurpose() const = 0;
+    
+    /**
+     * Get catalog source name.
+     *
+     * 
+     * @return Catalog source name.
+     */
+    virtual const TDesC& CatalogSourceName() const = 0;
+    
+    /**
+     * Get download infos.
+     *
+     * @note Only valid for purchases in EStatePurchased state.
+     *
+     * 
+     * @return Download infos.
+     */
+    virtual TArray< MNcdPurchaseDownloadInfo* > DownloadInfoL() const = 0;
+    
+    /**
+     * Get purchase option ID.
+     *
+     * 
+     * @return Purchase option ID.
+     */
+    virtual const TDesC& PurchaseOptionId() const = 0;
+    
+    /**
+     * Get purchase option name.
+     *
+     * 
+     * @return Purchase option name.
+     */
+    virtual const TDesC& PurchaseOptionName() const = 0;
+    
+    /**
+     * Get purchase option price.
+     *
+     * 
+     * @return Purchase option price.
+     */
+    virtual const TDesC& PurchaseOptionPrice() const = 0;
+    
+    /**
+     * Get final price.
+     *
+     * 
+     * @return Final price.
+     */
+    virtual const TDesC& FinalPrice() const = 0;
+    
+    /**
+     * Get payment method name.
+     *
+     * 
+     * @return Payment method name.
+     */
+    virtual const TDesC& PaymentMethodName() const = 0;
+    
+    /**
+     * Get time of purchase.
+     * The time is universal time, not local time.
+     * 
+     * @return Purchase time.
+     */
+    virtual TTime PurchaseTime() const = 0;
+    
+    /**
+     * Get file name(s) of the downloaded file(s).
+     *
+     * @note Only valid for purchases in EStateDownloaded state.
+     *
+     * 
+     * @return Array of file names.
+     */
+    virtual const MDesCArray& DownloadedFiles() const = 0;
+    
+    /**
+     * Get file installation infos.
+     *
+     * @note Only valid for purchases in EStateInstalled state.
+     *
+     * 
+     * @return File installation info array.
+     */
+    virtual TArray< MNcdPurchaseInstallInfo* > InstallInfoL() const = 0;
+
+    /**
+     * Get icon.
+     *
+     * 
+     * @return Icon data.
+     */
+    virtual const TDesC8& Icon() const = 0;
+    
+    /**
+     * Checks whether this purchase detail has an icon.
+     *
+     * @note This flag's intention is to indicate whether this purchase detail has
+     * an icon saved in the purhcase history. This does not indicate whether the
+     * actual icon data has been loaded or not.
+     * 
+     * @return ETrue if icon is available, EFalse if not.
+     */
+    virtual TBool HasIcon() const = 0;
+    
+    /**
+     * Get access point used in download process.
+     *
+     * 
+     * @return Access point.
+     */
+    virtual const TDesC& DownloadAccessPoint() const = 0;
+    
+    /**
+     * Get description.
+     *
+     * 
+     * @return Description.
+     */
+    virtual const TDesC& Description() const = 0;
+
+    /**
+     * Get version.
+     *
+     * 
+     * @return Version.
+     */
+    virtual const TDesC& Version() const = 0;
+
+    /**
+     * Get server URI.
+     *
+     * 
+     * @return Server URI.
+     */
+    virtual const TDesC& ServerUri() const = 0;
+
+    /**
+     * Get item type.
+     *
+     * 
+     * @return Item type.
+     */
+    virtual TItemType ItemType() const = 0;
+    
+    /**
+     * Get the total size of the content of the item.
+     *
+     * 
+     * @return The size, or 0 if not defined.
+     */
+    virtual TInt TotalContentSize() const = 0;
+    
+    /**
+     * Getter for origin node id.
+     *
+     * 
+     * @return The id.
+     */
+    virtual const TDesC& OriginNodeId() const = 0;
+
+    /**
+     * Getter for the time of last operation that has been directed 
+     * to the purchase item. The time is an universal time.
+     *
+     * 
+     * @return TTime Universal time of the last operation.
+     */
+    virtual TTime LastOperationTime() const = 0;
+    
+    /**
+     * Getter for the last operation error code that has been set
+     * by the NCD Engine during operations or by the user of the API.  
+     *
+     * @note The state gives the current state of the purchase details.
+     * If the error code is KErrNone, then the state of the purchase detail
+     * describes the state after a successfull operation.
+     * If the error code differs from KErrNone, then an error has occurred
+     * during an operation. The error code and the state can be used together 
+     * to conclude what kind of operation failed. 
+     * If the state is EStatePurchased after an error occurred, 
+     * then there are two possibilities:
+     * either a purchase operation has failed or a download operation has failed.
+     * If the state is EStateDownloaded after an error occurred, then install operation 
+     * has failed.
+     * If the state is EStateInstalled, then installing has succesfully completed 
+     * and the error code should be KErrNone. If EStateInstalled is given with some 
+     * other error code, this means that the installation was success
+     * but some repository information could not be set correctly.
+     * 
+     *
+     * @return TInt Error code of the last operation.
+     */
+    virtual TInt LastOperationErrorCode() const = 0;
+        
+
+    /**
+     * String attribute getter
+     *
+     * @param aAttribute Attribute
+     * @return Parameter string or KNullDesC if not set
+     *     
+     * @panic ENcdPanicIndexOutOfRange if aAttribute is invalid
+     * @panic ENcdPanicInvalidArgument if the attribute type is not string
+     */
+    virtual const TDesC& AttributeString( 
+        TPurchaseAttribute aAttribute ) const = 0;
+
+    
+    /**
+     * Integer attribute getter
+     *
+     * @param aAttribute Attribute
+     * @return Parameter integer or 0 if not set
+     *
+     * @panic ENcdPanicIndexOutOfRange if aAttribute is invalid
+     * @panic ENcdPanicInvalidArgument if the attribute type is not TInt32
+     */
+    virtual TInt32 AttributeInt32( 
+        TPurchaseAttribute aAttribute ) const = 0;
+    
+    };
+
+#endif // M_NCD_PURCHASE_DETAILS_H