upnpframework/upnpfiletransferengine/inc/upnpfiletransferengine.h
changeset 0 7f85d04be362
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpframework/upnpfiletransferengine/inc/upnpfiletransferengine.h	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,207 @@
+/*
+* Copyright (c) 2006-2007 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:  Header file for the CUpnpFileTransferEngine class
+*
+*/
+
+
+#ifndef UPNP_FILE_TRANSFER_ENGINE_H
+#define UPNP_FILE_TRANSFER_ENGINE_H
+
+// INCLUDES
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class CUpnpContainer;
+class CUpnpItem;
+class MUPnPAVBrowsingSession;
+class MUPnPAVController;
+class CUpnpFileTransferHandler;
+class CDesC8ArrayFlat;
+class CUpnpUploadHandler;
+
+// CLASS DECLARATION
+
+/**
+* CUpnpFileTransferEngine
+* The class works as an interface component, providing file transfer features
+* for the clients.
+*
+* @since S60 3.0
+*/
+class CUpnpFileTransferEngine : public CBase
+    {
+
+    public: // Constructors and destructor
+
+        /**
+         * Two-phased constructor.
+         *
+         * Leaves (KErrArgument) if the provided UpnpAvBrowsingSession
+         * pointer is not valid.
+         *
+         * @since S60 3.0
+         * @param aBrowsingSession (MUPnPAVBrowsingSession*) pointer to the
+         *        browsing session
+         */
+         IMPORT_C static CUpnpFileTransferEngine* NewL(
+                            MUPnPAVBrowsingSession* aBrowsingSession );
+
+        /**
+         * Destructor.
+         */
+        virtual ~CUpnpFileTransferEngine();
+
+    public: // New methods for transfering content to handset
+
+        /**
+         * Copies items (whose object ids are provided) from a remote Upnp
+         * Media Server to the handset. The files are stored in the location
+         * defined in the settings of the Home Media application.
+         *
+         * Leaves using e32err.h error codes if operation fails.
+         *
+         * @since S60 3.2
+         * @param aObjectIds (CDesC8ArrayFlat*) list of object IDs to copy
+         * @return TInt a number of copied files
+         */
+        IMPORT_C TInt CopyToHandsetL( CDesC8ArrayFlat* aObjectIds );
+
+    public: // Transfer content from handset to remote UPnP Media Server
+
+       /**
+         * Copies local files to a remote media server. DLNA Any Container
+         * feature will be used. Removes files from the array which are 
+         * succesfully moved.
+         *
+         * Leaves (KErrArgument) if the provided array of items is empty.
+         *
+         * @since S60 3.2
+         * @param aFileNames (RPointerArray*) pointer to the array of 
+         *        file names (including path) of the files to copy
+         */
+        IMPORT_C void CopyLocalFilesToRemoteServerL(
+                                RPointerArray<TDesC16>* aFilePaths );
+
+        /**
+         * Moves local files to a remote media server. DLNA Any Container
+         * feature will be used. Removes files from the array which are 
+         * succesfully moved.
+         *
+         * Leaves (KErrArgument) if the provided array of files is empty.
+         *
+         * @since S60 3.0
+         * @param aFileNames (RPointerArray*) pointer to the array of 
+         *        file names (including path) of the files to move
+         */
+        IMPORT_C void MoveLocalFilesToRemoteServerL(
+                                RPointerArray<TDesC16>* aFilePaths );
+
+        /**
+         * Copies a playlist from the local handset to a remote Upnp Media
+         * Server.
+         *
+         * Leaves (KErrArgument) if the provided playlist name is not valid
+         * or the provided array of items is empty.
+         *
+         * @since S60 3.1
+         * @param aPlaylistName (const TDesC&) the name of the playlist
+         * @param aFileNames (RPointerArray&) reference to the array of 
+         *        file names (including path) of the files to copy
+         */
+        IMPORT_C void CopyLocalPlaylistToRemoteServerL(
+                                const TDesC& aPlaylistName,
+                                RPointerArray<TDesC16>* aFilePaths );
+
+    public: // Transfer content from remote UPnP Media Server to handset
+
+        /**
+         * Copies items from a remote Upnp Media Server to the handset to
+         * the location defined in the Home Media application).
+         *
+         * Leaves (KErrArgument) if the provided array of items is empty.
+         *
+         * @since S60 3.0
+         * @param aItems (RPointerArray&) reference to the array of 
+         *        CUpnpItems, the items to copy
+         */
+        IMPORT_C void CopyRemoteItemsToHandsetL(
+                                RPointerArray<CUpnpItem>& aItems );
+
+        /**
+         * Copies a container from a remote Upnp Media Server to the location
+         * defined in the Home Media application).
+         * 
+         * Leaves (KErrArgument) if the provided UpnpContainer is not valid.
+         *
+         * @since S60 3.0
+         * @param aSourceContainer (CUpnpContainer*) pointer to the source 
+         *        UpnpContainer object
+         */
+        IMPORT_C void CopyRemoteContainerToHandsetL(
+                                CUpnpContainer* aSourceContainer );
+
+        /**
+         * Copies a playlist from a remote Upnp Media Server to the location
+         * defined in the Home Media application).
+         *
+         * Leaves (KErrArgument) if the provided UpnpContainer is not valid.
+         *
+         * @since S60 3.0
+         * @param aSourceContainer (CUpnpContainer*) pointer to the source 
+         *        UpnpContainer object
+         */
+        IMPORT_C void CopyRemotePlaylistToHandsetL(
+                                CUpnpContainer* aSourceContainer );
+    public:
+
+        /**
+         * Return the number of items copied from a container
+         *
+         * @since S60 3.1
+         * @param none
+         * @return TInt number of items copied
+         */
+        IMPORT_C TInt ItemCopiedFromContainer();
+    
+    private: // Construction methods
+
+        // Constructor
+        CUpnpFileTransferEngine();
+
+        /**
+         * ConstructL.
+         * @param aController (MUPnPAVBrowsingSession*) pointer to a valid
+         *        UpnpAvController BrowsingsSession
+         */
+        void ConstructL( MUPnPAVBrowsingSession* aBrowsingSession );
+
+    private: // Data members
+
+        /*
+         * Pointer to the file transfer handler. Owned.
+         */
+        CUpnpFileTransferHandler* iFileTransferHandler;
+
+        /*
+         * Pointer to the browsing session which the client provides. Not
+         * owned.
+         */
+        MUPnPAVBrowsingSession* iBrowsingSession;
+        CUpnpUploadHandler* iUploadHandler; //owned
+    };
+
+#endif // UPNP_FILE_TRANSFER_ENGINE_H
+
+// End of file