--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/inc/ncdsubscription.h Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,242 @@
+/*
+* 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 MNcdSubscription interface
+*
+*/
+
+
+#ifndef M_NCDSUBSCRIPTION_H
+#define M_NCDSUBSCRIPTION_H
+
+#include "catalogsbase.h"
+#include "ncdinterfaceids.h"
+
+class MNcdSubscriptionOperation;
+class MNcdSubscriptionOperationObserver;
+class TTime;
+class MNcdNode;
+
+/**
+ * Subscription interface.
+ *
+ * This interface describes a subscription and provides methods for
+ * subscription management.
+ *
+ *
+ */
+class MNcdSubscription : public virtual MCatalogsBase
+ {
+
+public:
+
+ /**
+ * Unique identifier for the interface, required for all MCatalogsBase interfaces.
+ *
+ *
+ */
+ enum { KInterfaceUid = ENcdSubscriptionUid };
+
+
+ /**
+ * Type of the subscription renewal method.
+ *
+ */
+ enum TType
+ {
+
+ /** Requires an explicit renewal after expiration. */
+ EPeriodic,
+
+ /** Renewed automatically on server side after expiration. */
+ EAutomaticContinous
+ };
+
+ /**
+ * Status of the subscription.
+ *
+ *
+ */
+ enum TStatus
+ {
+
+ /**
+ * Subscription has been purchased and is still active
+ * (validity time/credits/downloads left).
+ */
+ ESubscriptionActive,
+
+ /**
+ * Subscription has been purchased, but has expired
+ * (out of validity time/credits/downloads).
+ */
+ ESubscriptionExpired
+ };
+
+ /**
+ * Name getter.
+ *
+ *
+ * @return Name of the subscription.
+ */
+ virtual const TDesC& Name() const = 0;
+
+ /**
+ * Icon getter.
+ *
+ *
+ * @return Icon data. Ownership is transferred. Empty descriptor
+ * returned if icon data is not set.
+ * @exception Leave with KNcdErrorObsolete if this subscription
+ * is obsolete. Otherwise leave with System wide error code.
+ */
+ virtual HBufC8* IconL() const = 0;
+
+ /**
+ * Returns the current status for the subscription.
+ *
+ *
+ * @return Current status of the subscription.
+ */
+ virtual TStatus SubscriptionStatus() const = 0;
+
+ /**
+ * Checks whether this subscription is obsolete or not.
+ * Subscription becomes obsolete if it is removed while
+ * user still has reference to it. Removal can be done for
+ * example because the subscription was removed from the
+ * server.
+ * Obsolete subscription should not be used and valid subscription
+ * instances should be retrieved by using SubscriptionsL
+ * method from MNcdSubscriptionManager interface.
+ *
+ *
+ * @return ETrue if this purchase option is obsolete.
+ */
+ virtual TBool IsObsolete() const = 0;
+
+ /**
+ * Returns whether the subscription has been unsubscribed or not.
+ *
+ *
+ * @return ETrue, if subscription has been unsubscribed. EFalse, if the subcription
+ * has not been unsubscribed.
+ */
+ virtual TBool Unsubscribed() const = 0;
+
+ /**
+ * Unsubscribe a currently valid subscription.
+ *
+ *
+ * @param aObserver Operation observer interface.
+ * @return Subscription operation object. Counted, Release() must be called after use.
+ * @exception Leave with KNcdErrorObsolete if this subscription
+ * is obsolete. Otherwise leave with System wide error code.
+ */
+ virtual MNcdSubscriptionOperation* UnsubscribeL(
+ MNcdSubscriptionOperationObserver& aObserver ) = 0;
+
+
+ /**
+ * Get type of the subscription.
+ *
+ *
+ * @return Subscription type.
+ */
+ virtual TType SubscriptionType() const = 0;
+
+
+ /**
+ * Get subscription validity time information.
+ *
+ *
+ * @param aValidUntil Set to time when the subscription expires, if
+ * ETrue is returned, otherwise not used. Time given is in local time.
+ * @return ETrue, if validity time is set. EFalse, if the subcription
+ * has no validity time limit set (stays valid indefinitely).
+ */
+ virtual TBool ValidityTime( TTime& aValidUntil ) const = 0;
+
+
+ /**
+ * Get subscription credit limit information.
+ *
+ *
+ * @param aCreditsLeft If ETrue is returned, set to current number of
+ * credits left in the subscription.
+ * @param aTotalCredits If ETrue is returned, set to total number of
+ * credits the subscription originally had after purchase.
+ * @return ETrue if subscription has a credit limit, EFalse otherwise.
+ */
+ virtual TBool CreditLimit( TReal& aCreditsLeft, TReal& aTotalCredits ) const = 0;
+
+
+ /**
+ * Get subscription download limit information.
+ *
+ *
+ * @param aDownloadsLeft If ETrue is returned, set to current number of
+ * downloads left in the subscription.
+ * @param aTotalDownloads If ETrue is returned, set to total number of
+ * downloads the subscription originally had after purchase.
+ * @return ETrue if subscription has a download limit, EFalse otherwise.
+ */
+ virtual TBool DownloadLimit( TInt& aDownloadsLeft, TInt& aTotalDownloads) const = 0;
+
+
+ /**
+ * Returns the node that has the purchase option which was used
+ * to buy this subscription.
+ *
+ * @return Pointer to the node that has the purchase option to buy
+ * this subscription. Note that the node may be in an
+ * uninitialized state, or in an initialized state, depending
+ * on whether the node has previously been known to the engine.
+ * Counted, Release() must be called after use.
+ *
+ * @exception Leave with KNcdErrorObsolete if this subscription
+ * is obsolete. Otherwise leave with System wide error code.
+ */
+ virtual MNcdNode* OriginNodeL() const = 0;
+
+ /**
+ * Returns an id that identifies the purchaseoption that was used to buy
+ * this subscription. Node that has the purchase option identified by
+ * the id returned from this function can be queried by using method
+ * OriginNodeL() of this class.
+ *
+ * @return Id that identifies the purchaseoption that was used
+ * to buy this subscription. Node where from this purchase
+ * option is found can be queried by using method
+ * OriginNodeL() of this class. Returns KNullDesC on error
+ * situations.
+ */
+ virtual const TDesC& OriginPurchaseOptionId() const = 0;
+
+
+
+protected: // Destruction
+
+ /**
+ * Destructor
+ *
+ * Protected so that the implementing object cannot be deleted through
+ * this interface by using delete. The destructor of an interface should
+ * be set virtual to make sure that the destructors of derived classes
+ * will be called when object is destroyed.
+ */
+ virtual ~MNcdSubscription() {}
+
+ };
+
+#endif // M_NCDSUBSCRIPTION_H