upnpmediaserver/mediaserverengine/inc/upnpiconmanager.h
changeset 0 7f85d04be362
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpmediaserver/mediaserverengine/inc/upnpiconmanager.h	Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,182 @@
+/** @file
+* Copyright (c) 2008-2008 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:  Declares CUpnpIconManager class
+*
+*/
+
+
+
+#ifndef C_CUPNPICONMANAGER_H
+#define C_CUPNPICONMANAGER_H
+
+// INCLUDES
+#include <f32file.h>
+
+// FORWARD DECLARATIONS
+class CUpnpIcon;
+class CUpnpDeviceImplementation;
+class CUpnpDevice;
+class CUpnpMediaServerDescriptionProvider;
+class CUpnpDeviceDescriptionStore;
+
+// CLASS DECLARATION
+
+/**
+ *  Class is responsible for MS icon managing
+ *  Handles all request releated to icons
+ *  Such as: Adding, Updating and Removing icons to/from MS description
+ *  @since S60 v3.2
+ */
+class CUpnpIconManager: public CBase
+    {
+public:
+    /**
+     * Two-phased constructor.
+     * @param aDescriptionFile file with device description xml
+     * @param aDescriptionProvider description provider
+     */
+    static CUpnpIconManager* NewL( CUpnpDeviceDescriptionStore& iDescriptionStore,
+                                   CUpnpMediaServerDescriptionProvider& aDescriptionProvider );
+
+    /**
+     * Two-phased constructor.
+     * @param aDescriptionFile file with device description xml
+     * @param aDescriptionProvider description provider
+     */
+    static CUpnpIconManager* NewLC( CUpnpDeviceDescriptionStore& iDescriptionStore,
+                                    CUpnpMediaServerDescriptionProvider& aDescriptionProvider );
+
+    /**
+     * Destructor
+     */
+    ~CUpnpIconManager();
+    
+    /**
+    * Adds icon
+    * @param aIconDes icon description( serialized icon )
+    */
+    void AddIconL( const TDesC8& aIconDes );
+
+    /**
+    * Updates icon
+    * @param aNewIconDes new icon description( serialized icon )
+    * @param aUrl url of icon which will be updated
+    */
+    void UpdateIconL( const TDesC8& aNewIconDes, const TDesC8& aUrl );
+
+    /**
+    * Removes icon
+    * @param url of icon which will be deleted
+    */
+    void RemoveIconL( const TDesC8& aUrl );
+
+    /**
+    * Removes all icons
+    */
+    void RemoveIconsL();
+
+private:
+    /**
+    * Creates icon path
+    * @return icon path
+    */
+    HBufC* GetIconPathLC();
+
+    /**
+    * Returns icon name
+    * @param aPath
+    * @return icon name
+    */
+    HBufC* GetIconNameLC( const TDesC8& aPath );
+
+    /**
+    * Copy icon to MS private directory
+    * @param aIcon icon which will be copied
+    * @param aDestinationPath icon's destination directory
+    */
+    void CopyIconToPrivateL( const CUpnpIcon* icon , const TDesC& destinationPath );
+
+    /**
+    * Prepare beckup copy of icon which is going to be updated
+    * @param aPath path to icon which going to be beckuped
+    * return pointer to beckup filename, used in rollback operation
+    */
+    HBufC* PrepareIconToRollbackLC( const TDesC& aPath );
+
+    /**
+    * Updates icon
+    * @param aIcon new icon
+    * @param aDestinationPath old icon path
+    */
+    void DoUpdateIconL( CUpnpIcon* aIcon, const TDesC& aDestinationPath );
+
+    /**
+    * Deletes icon from FS
+    * @param aPath path to icon which is delete
+    * @returns KErrNone if succesfull or other error code of failed
+    */
+    TInt DeleteIconFile( const TDesC& aPath );
+
+    /**
+    * Makes an attempt to restore icon from it's original path
+    * @param aUrl icons URL
+    */
+    void RestoreFromOrginalPathL( const TDesC8& aUrl );
+
+    /**
+    * Checks if icon already exist in device iconList
+    * Leaves with KErrNotFound if icon doesn't exist
+    * @param aUrl an icon's URL to be checked
+    */
+    TInt FindIcon( const TDesC8& aUrl );
+
+    /**
+     * Adds all icons to the description property map.
+     * 
+     * @since S60 5.1
+     */
+    void AddIconsToDescriptionPropertyMapL();
+    
+private:
+
+    /**
+     * Two-phased constructor.
+     * @param aDescriptionFile file with device description xml
+     */
+    void ConstructL();
+
+    /**
+     * Constructor.
+     * @param aDescriptionProvider description provider
+     */
+    CUpnpIconManager( CUpnpDeviceDescriptionStore& iDescriptionStore,
+                      CUpnpMediaServerDescriptionProvider& aDescriptionProvider );
+
+private:
+    
+    /** File session handler - owned */
+    RFs iFileSession;
+    
+    /** Icon list used for icon operation when device is not started */
+    RPointerArray< CUpnpIcon > iIconList;
+    
+    /** Description provider - not owned */
+    CUpnpMediaServerDescriptionProvider& iDescriptionProvider;
+    
+    /** Description store */
+    CUpnpDeviceDescriptionStore& iDescriptionStore; 
+    };
+
+
+#endif//C_CUPNPICONMANAGER_H