codhandler/codeng/inc/FileSaver.h
changeset 0 dd21522fd290
child 62 c711bdda59f4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/codhandler/codeng/inc/FileSaver.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,236 @@
+/*
+* Copyright (c) 2005 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 CFileSaver.   
+*      
+*
+*/
+
+
+#ifndef FILE_SAVER_H
+#define FILE_SAVER_H
+
+// INCLUDE FILES
+
+#include <e32base.h>
+#include <f32file.h>
+#include "CodSaver.h"
+
+// FORWARD DECLARATION
+
+class CDocumentHandler;
+class CDrmHandler;
+class CCodBuffStorage;
+class CCodData;
+
+// CLASS DECLARATION
+
+/**
+* File saver (saving to file system). Handles DRM packaged objects too.
+*/
+NONSHARABLE_CLASS( CFileSaver ): public CCodSaver
+    {
+    public:     // Construct / destruct
+
+        /**
+        * Two phase constructor. Leaves on failure.
+        * @param aType Data type.
+        * @param aFs File Server session.
+        * @param aDocHandler Document Handler.
+        * @param aTempPath Temp path.
+        * @param aRootPath Root path.
+        * @param aFname File name.
+        * @return The constructed saver.
+
+        */      
+        static CFileSaver* NewL
+            (
+            const TDesC8& aType,
+            RFs& aFs,
+            CDocumentHandler& aDocHandler,
+            const TFileName& aTempPath,
+            const TFileName& aRootPath,
+            const TFileName& aFname
+            );
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CFileSaver();
+
+    public:     // from CCodSaver
+
+        /**
+        * Open temporary store for download.
+        */
+        virtual void OpenStoreL();
+        
+        /**
+        * Append data to store.
+        * @param aData Data to append.
+        * @return Error code.
+        */
+        virtual TInt AppendData( const TDesC8& aData );
+        
+        /**
+        * Download finished, close temporary store.
+        */
+        virtual void CloseStore();
+
+        /**
+        * Check if attributes of received content match descriptor data.
+        * Leaves with KErrCodAttributeMismatch in case of mismatch.
+        * @param aData Data to match.
+        */
+        virtual void CheckResponseAttributesL( const CCodData& aData );
+
+        /**
+        * Install downloaded content.
+        * @param aStatus Completes when done.
+        * @param aName Preferred name.
+        * @param aAttached. ETrue if the download is attached and playing progressively.
+        */
+        virtual void InstallL( TRequestStatus* aStatus, const TDesC& aName, const TBool aAttached );
+
+        /**
+        * Perform bulk install for the downloaded media objects
+        * @param aData CODData.
+        * @param aAttached. ETrue if the download is attached and playing progressively.
+        */        
+        virtual void BulkInstallL( TRequestStatus* aStatus, const CCodData &aData, const TBool aAttached );
+        /**
+        * Cancel installation.
+        */
+        virtual void CancelInstall();
+
+        /**
+        * Release content (take ownership of content from saver).
+        * @param aFname File name of content returned here.
+        * @param aHandler Handler UID returned here.
+        */
+        virtual void ReleaseContent( TFileName& aFname, TUid& aHandler );
+
+        /**
+        * Get the downloaded file size.
+        */
+        virtual TInt DownloadedFileSize();
+        
+        /**
+        * Discard the old contents
+        */        
+        virtual void ResetL();
+        
+        /**
+        * Clean up.
+        */
+        virtual void Cleanup( TBool aDeleteFile  );
+  
+		/**
+        * Release file name (take ownership of content from saver).
+        * @param aFname File name of content returned here.
+        */
+        virtual void ReleaseFileName( TFileName& aFname);
+        
+        /**
+        * Get Name 
+        * @return Name of Saver
+        */        
+        virtual HBufC* NameL ( ) const ;
+
+
+    protected:  // Construct / destruct
+
+        /**
+        * Constructor.
+        * @param aType Data type.
+        * @param aFs File Server session.
+        * @param aDocHandler Document Handler.
+        * @param aTempPath Temp path.
+        * @param aRootPath Root path.
+        * @param aFname File name of content.
+        */      
+        CFileSaver
+            (
+            const TDesC8& aType,
+            RFs& aFs,
+            CDocumentHandler& aDocHandler,
+            const TFileName& aTempPath,
+            const TFileName& aRootPath,
+            const TFileName& aFname
+            );
+
+        /**
+        * Second phase constructor. Leaves on failure.
+        */      
+        void ConstructL();
+
+        /**
+        * Update saved file to DCFRepository.
+        * @param aFileName File name of new file.
+        */
+        void UpdateDCFRepositoryL( const TDesC& aFileName );
+        
+        /**
+        * Update repository about the new file.
+        * @param aFileName File name of new file.
+        */
+        void NotifyMediaGalleryL( const TDesC& aFileName );
+        
+        /**
+        * Calls MediaGallery Update method so that media gallery
+        * knows update its view.
+        * @param aFileName File name of new file.
+        */
+        void UpdateMediaGalleryIfNeededL( const TDesC& aFileName );
+        
+       
+       /**
+        * Set progressive mode download
+        * @param aValue ETrue if progressive mode
+        */
+        void SetProgressiveMode( TBool aValue );
+       
+        /**
+        * Called if download completed.
+        */
+        void OnComplete();
+         
+        /**
+        * Writes Buffer data to file
+        */
+        void FlushL();
+
+       
+    protected:  // data
+
+        CDocumentHandler& iDocHandler;  ///< Document Handler. Not owned.
+        RFs& iFs;                       ///< File Server session. Not owned.
+        RFile iFile;                    ///< Temp file for content body. Own.
+        const TFileName& iTempPath;     ///< Temp file path.
+        const TFileName& iRootPath;     ///< Root path.
+        CDrmHandler* iDrmHandler;       ///< DRM Handler or NULL. Owned.
+        TFileName iFname;               ///< File name.
+        
+        //Double buff chaanges
+        TInt32  iBufferedSize;          // How much data received over the air (but not necessarily all in file yet)
+        TInt32  iBufferSize;            // disk io buffer size - bytes
+        TInt32  iLength;                // EDlAttrLength
+        TBool   iProgressiveDownload;   // EDlAttrProgressive
+        CCodBuffStorage *iStorage;      //Implenments double buffering foe storing downloaded data
+        
+        
+    friend class CCodBuffStorage;       
+    };
+
+#endif /* def FILE_SAVER_H */