upnpframework/upnpfiletransferengine/inc/upnpplaylisthandler.h
changeset 0 7f85d04be362
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpframework/upnpfiletransferengine/inc/upnpplaylisthandler.h	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,202 @@
+/*
+* Copyright (c) 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 CUpnpPlaylistHandler class
+*
+*/
+
+
+#ifndef UPNP_FILE_TRANSFER_ENGINE_PLAYLIST_HANDLER_H
+#define UPNP_FILE_TRANSFER_ENGINE_PLAYLIST_HANDLER_H
+
+//  INCLUDES
+#include <badesca.h>
+
+// FORWARD DECLARATION
+class CUpnpObject;
+class CUpnpItem;
+class CUPnPPlaylistServices;
+
+// DATA TYPES
+enum TUpnpPlaylistLocation
+    {
+    EPhoneMemory = 0,
+    EMemorycard,
+    EHarddisk,
+    EUnknown
+    };
+
+// CLASS DECLARATION
+
+/**
+* CUpnpPlaylistHandler
+* The class stores the playlist information, and generates MPX playlists and
+* Gallery albums when requested.
+*
+* @since S60 3.1
+*/
+NONSHARABLE_CLASS( CUpnpPlaylistHandler ) : public CBase
+    {
+
+    public: // Constructors and destructor
+
+        /**
+         * Two-phased constructor.
+         */
+        static CUpnpPlaylistHandler* NewL();
+
+        /**
+         * Destructor.
+         */
+        virtual ~CUpnpPlaylistHandler();
+
+    public: // Methods for managing the content
+
+        /**
+         * Resets the playlists content.
+         *
+         * @since S60 3.1
+         */
+        void Reset();
+
+        /**
+         * Sets the name for the playlist
+         *
+         * @since S60 3.1
+         * @param aPlaylistName (const TDesC&) name for the playlist and
+         *        image and video albums (same name will for all tree).
+         */
+        void SetPlaylistNameL( const TDesC& aPlaylistName );
+
+        /**
+         * Adds a audio item to the playlist (playlist will not be generated
+         * yet, it has to be created by calling a separate method).
+         *
+         * @since S60 3.1
+         * @param aFilePath (const TDesC&) filepath of the audio file
+         */
+        void AddAudioItemL( const TDesC& aFilePath );
+
+        /**
+         * Adds an image item to the playlist (playlist will not be generated
+         * yet, it has to be created by calling a separate method).
+         *
+         * @since S60 3.1
+         * @param aFilePath (const TDesC&) filepath of the image file
+         */
+        void AddImageItemL( const TDesC& aFilePath );
+
+        /**
+         * Adds a video item to the playlist (playlist will not be generated
+         * yet, it has to be created by calling a separate method).
+         *
+         * @since S60 3.1
+         * @param aFilePath (const TDesC&) filepath of the video file
+         */
+        void AddVideoItemL( const TDesC& aFilePath );
+
+    public: // Methods for getting the state of the playlist
+    
+        /**
+         * Returns the number of items in the audio item array
+         *
+         * @since S60 3.1
+         * @return (TInt) the item count
+         */
+        TInt AudioItemCount();
+        
+        /**
+         * Returns the number of items in the image item array
+         *
+         * @since S60 3.1
+         * @return (TInt) the item count
+         */
+        TInt ImageItemCount();
+
+        /**
+         * Returns the number of items in the video item array
+         *
+         * @since S60 3.1
+         * @return (TInt) the item count
+         */
+        TInt VideoItemCount();
+
+    public: // Methods for creating the playlists
+
+        /**
+         * Creates a MPX playlist (if there are music items added).
+         *
+         * @since S60 3.1
+         */
+        void CreateMusicPlaylistL();
+
+        /**
+         * Creates an image album (if there are image items added).
+         *
+         * @since S60 3.1
+         */
+        void CreateImageAlbumL();
+
+        /**
+         * Creates a video album (if there are video items added).
+         *
+         * @since S60 3.1
+         */
+        void CreateVideoAlbumL();
+
+    public: // Methods for notifying MPX
+
+        /**
+         * Notifies MPX of a new audio file.
+         *
+         * @since S60 3.1
+         * @param aTrackPath (const TDesC&) filepath of the audio file
+         * @param aMetadata (CUpnpItemt&) metadata as it was in media server
+         */
+        void NotifyNewAudioFileL( const TDesC& aFilePath,
+                                  const CUpnpItem& aMetadata );
+
+    private: // private business logic methods
+
+        /**
+         * Checks that Playlist location is valid
+         *
+         * @since S60 3.1
+         * @return TBool
+         */
+        TBool PlaylistFileLocation();
+
+    private: // 2nd phase constructors
+
+        // Constructor
+        CUpnpPlaylistHandler();
+
+        /**
+         * ConstructL.
+         */
+        void ConstructL();
+
+    private: // Data members
+
+        HBufC* iPlaylistName;                           // owned
+        CDesCArrayFlat* iFilesForAudioPlaylist;         // owned
+        RPointerArray<HBufC> iFilesForVideoAlbum;       // owned
+        RPointerArray<HBufC> iFilesForImageAlbum;       // owned
+
+        // music playlist methods encapsulation
+        CUPnPPlaylistServices* iPlaylistServices;       // owned
+    };
+
+#endif // UPNP_FILE_TRANSFER_ENGINE_PLAYLIST_HANDLER_H
+
+// End of file