--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web_plat/cod_handler_api/inc/CodDownload.h Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,319 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: Declaration of class CCodDownload.
+*
+*/
+
+
+#ifndef COD_DOWNLOAD_H
+#define COD_DOWNLOAD_H
+
+// INCLUDES
+
+#include <e32base.h>
+
+// FORWARD DECLARATION
+
+class CCodDownload;
+class CCodDownloadImpl;
+class CAiwGenericParamList;
+class CEikonEnv;
+
+// CLASS DECLARATION
+
+/**
+* Cod Download observer.
+*/
+NONSHARABLE_CLASS( MCodDownloadObserver )
+ {
+ public: // types
+
+ enum TEvent ///< Event.
+ {
+ EStart, ///< Load initiated.
+ ENameChanged, ///< Name changed.
+ ETypeChanged, ///< Type changed.
+ EProgressUpdate, ///< Progress update.
+ EDone, ///< Finished (success or failure).
+ EAccept, ///< Load accepted by user (start of load).
+ EEndLoad, ///< Waiting for service flow (end of load).
+ EPdPlayAvailable, ///< in case of PD allow user to choose 'play'
+ EUpdatedDDURI, ///< Updated DD URI notification to the DM Server
+ EResumed, ///< Resume successful and ready for PD
+ EDownloadPausable, ///< Informs the Server that download is PAUSABLE
+ EDownloadNonPausable,///< Informs the Server that download is NOT PAUSABLE
+ EHandlePostResponse, ///< Intiates fresh download as part handling PostResponseURL of metering response
+ EUpdatedMediaInfo, ///< Updated Media Info to DM Server
+ ESetActiveDownload, ///< Inform the server about currently active download
+ EUpdatedTrackInfo ///< Updated Media Info to DM Server
+ };
+
+ public: // New methods.
+
+ /**
+ * Cod Download event.
+ * @param aDownload Download.
+ * @param aEvent Event.
+ */
+ virtual void CodEventL( CCodDownload& aDownload, TEvent aEvent ) = 0;
+
+ };
+
+/**
+* Cod Download progress tracking.
+*/
+NONSHARABLE_STRUCT( TCodDownloadProgress )
+ {
+ public: // types
+
+ enum TState ///< State.
+ {
+ EInit, ///< Initial state.
+ EInProgress, ///< In progress.
+ ESucceeded, ///< Succeeded.
+ EFailedTemporary, ///< Failed (temporary error).
+ EFailedPermanent, ///< Failed (permanent error).
+ EPaused ///< Paused
+ };
+
+ public: // data
+
+ TState iState; ///< Download state.
+ TInt iError; ///< Error code.
+ TInt iBytesCur; ///< Bytes downloaded so far (-1 if unknown).
+ TInt iBytesMax; ///< Total download size (estimated; -1 if unknown).
+ };
+
+/**
+* Descriptor-based download.
+* Supported descriptor types:
+* - text/x-co-desc (Nokia COD)
+* - application/vnd.oma.dd+xml (OMA DD)
+* - multipart/related, where the first part is one of the two above.
+*/
+NONSHARABLE_CLASS( CCodDownload ): public CBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor. Leaves on failure.
+ * @param aBuf The descriptor.
+ * @param aType Descriptor data type.
+ * @param aObserver Observer.
+ * @param aEikEnv Eikon environment or NULL. Can be NULL if download
+ * does not require UI functionality. If download needs UI but NULL is
+ * passed here, the download fails with EFailedPermanent KErrCancel.
+ * @return The constructed object.
+ */
+ IMPORT_C static CCodDownload* NewL
+ (
+ const TDesC8& aBuf,
+ const TDesC8& aType,
+ MCodDownloadObserver& aObserver,
+ CEikonEnv* aEikEnv
+ );
+
+ /**
+ * Two-phased constructor. Leaves on failure.
+ * This one supports multipart/related where the first part of the
+ * multipart is the descriptor.
+ * @param aBuf Data buffer (descriptor or multipart).
+ * @param aType Data type.
+ * @param aObserver Observer.
+ * @param aEikEnv Eikon environment or NULL. Can be NULL if download
+ * does not require UI functionality. If download needs UI but NULL is
+ * passed here, the download fails with EFailedPermanent KErrCancel.
+ * @param aMultipartBoundary Multipart boundary or NULL.
+ * Required for processing multipart.
+ * @param aMultipartUrl Multipart URL or NULL.
+ * Required for processing multipart.
+ * @return The constructed object.
+ */
+ IMPORT_C static CCodDownload* NewL
+ (
+ const TDesC8& aBuf,
+ const TDesC8& aType,
+ MCodDownloadObserver& aObserver,
+ CEikonEnv* aEikEnv,
+ const TDesC8* aMultipartBoundary,
+ const TDesC16* aMultipartUrl
+ );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~CCodDownload();
+
+ public: // New methods
+
+ /**
+ * Start download. Panics if already active.
+ * Restart is OK for completed downloads.
+ * @param aParams Parameters or NULL.
+ */
+ IMPORT_C void StartL( const CAiwGenericParamList* aParams );
+
+ /**
+ * Stop (cancel) download. Safe to call in any state.
+ * Note: processing continues until MCodDownloadObserver::EDone event.
+ */
+ IMPORT_C void Stop();
+
+ /**
+ * Pauses the COD download
+ */
+ IMPORT_C void Pause();
+
+ /**
+ * Get progress.
+ * @return Progress.
+ */
+ IMPORT_C const TCodDownloadProgress& Progress() const;
+
+ /**
+ * Get name attribute. This may be empty string, if attribute is
+ * empty or not available. Do not store pointer (data may change as
+ * download proceeds).
+ */
+ IMPORT_C TPtrC Name();
+
+ /**
+ * Get data type of content (or empty string: type may not be
+ * available).
+ * @return Data type.
+ */
+ IMPORT_C TPtrC8 Type() const;
+
+ /**
+ * Get path of saved content (or empty string).
+ * Available in ESucceeded state only.
+ * @return Path of saved content. Fits to KMaxFileName.
+ */
+ IMPORT_C TPtrC GetPath() const;
+
+ /**
+ * Perform service flow after a succesful or failed download.
+ * This consists of zero, one or both of
+ * - launching downloaded content
+ * - activating Next-URL.
+ * Load may also be retried.
+ * Call this in response to EEndLoad event.
+ */
+ IMPORT_C void ServiceFlowL();
+
+ /**
+ * Get Next-URL.
+ * @return Next-URL. Owner is the caller.
+ */
+ IMPORT_C HBufC8* NextUrlL() const;
+
+ /**
+ * Get PostResponse-URL.
+ * @return PostResponse-URL. Owner is the caller.
+ */
+ IMPORT_C HBufC8* GetPostResponseUrlL() const;
+
+ /**
+ * Get the updated DD URL.
+ * @return Updated DD URL.
+ */
+ IMPORT_C HBufC8* UpdatedDDUriL() const;
+
+ /**
+ * Check if downloading to removable media.
+ * Available after EAccept event.
+ * @return ETrue if downloading to removable media.
+ */
+ IMPORT_C TBool RemovableMedia() const;
+
+ /**
+ * Set COD download attached
+ * @param aValue If equals ETrue - download is attached
+ */
+ IMPORT_C void SetCodDlAttached(const TBool aValue);
+
+ public: // Transparent user data
+
+ /**
+ * Get tansparent user data.
+ * @return User data.
+ */
+ IMPORT_C TAny* UserData() const;
+
+ /**
+ * Set tansparent user data.
+ * @param aUserData User data.
+ */
+ IMPORT_C void SetUserData( TAny* aUserData );
+
+ public: //Added as part of multiple download
+
+ /**
+ * Two-phased constructor. Leaves on failure.
+ * @param aDownloadId Download ID.
+ * @param aDlUid App UID.
+ * @param aType Descriptor data type.
+ * @param aObserver Observer.
+ * @param aEikEnv Eikon environment or NULL. Can be NULL if download
+ * does not require UI functionality. If download needs UI but NULL is
+ * passed here, the download fails with EFailedPermanent KErrCancel.
+ * @return The constructed object.
+ */
+ IMPORT_C static CCodDownload* NewL
+ (
+ const TInt aDownloadId,
+ const TUid aDlUid,
+ const TDesC8& aType,
+ MCodDownloadObserver& aObserver,
+ CEikonEnv* aEikEnv
+ );
+
+ /**
+ * Set the CodData stream descriptor.
+ * @param aDesStream.
+ */
+ IMPORT_C HBufC8* UpdatedDownloadDataL() const;
+
+ /**
+ * Set the stream descriptor for single media object (track).
+ * @param aDesStream.
+ */
+ IMPORT_C HBufC8* UpdatedTrackDataL(TInt& aValue) const;
+
+ /**
+ * Get COD Active download
+ * @return Count of currently active download
+ */
+ IMPORT_C TInt ActiveDownload ( );
+ /**
+ * Get Destination file name
+ * @param aMOIndex media object index between 1 to 'n'
+ * @return NULL if index out of range
+ */
+ IMPORT_C TPtrC GetDestFilePath (TInt aMOIndex ) const;
+
+ private: // Constructor
+
+ /**
+ * Constructor.
+ */
+ CCodDownload();
+
+ private: // Data
+
+ CCodDownloadImpl* iImpl; ///< Implementation. Owned.
+
+ };
+
+#endif /* def COD_DOWNLOAD_H */