diff -r 000000000000 -r ba25891c3a9e ncdengine/inc/ncdsubscription.h --- /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