--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpavcontroller/upnpavcontrollerserver/inc/upnpdeviceicondownloader.h Wed Nov 03 11:45:09 2010 +0200
@@ -0,0 +1,144 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#ifndef C_UPNPDEVICEICONDOWNLOADER_H
+#define C_UPNPDEVICEICONDOWNLOADER_H
+
+// Include files
+#include <e32base.h>
+#include <f32file.h>
+#include <httptransferobserver.h>
+
+// FORWARD DECLARATIONS
+class CHttpDownloader;
+
+/**
+ * Class for observing device icon download
+ */
+class MUpnpDeviceIconDownloadObserver
+ {
+public:
+ /**
+ * Notifies device icon download completed
+ *
+ * @param aDeviceUuid the device uuid indicates the device the icon belongs
+ * @param aError system wide error code indicates the download status
+ */
+ virtual void DeviceIconDownloadedL( const TDesC8& aDeviceUuid, TInt aError ) = 0;
+ };
+
+/**
+ * Class for device icon downloading
+ */
+class CUpnpDeviceIconDownloader: public CBase,
+ public MHttpTransferObserver
+ {
+
+public:
+
+ /**
+ * Static 1st phase constructor
+ *
+ * @param aObserver download observer
+ * @param aIap used access point
+ * @return new instance
+ */
+ static CUpnpDeviceIconDownloader* NewL(
+ MUpnpDeviceIconDownloadObserver& aObserver,
+ TUint aIap );
+
+ /**
+ * Destructor
+ */
+ virtual ~CUpnpDeviceIconDownloader();
+
+private: // From MHttpTransferObserver
+ void TransferProgress( TAny* aKey, TInt aBytes, TInt aTotalBytes );
+ void ReadyForTransferL( TAny* aKey );
+ void TransferCompleted( TAny* aKey, TInt aStatus );
+
+public: // New functions
+ /**
+ * Starts download
+ *
+ * @param aDeviceUuid uuid of device
+ * @param aDeviceIconUrl url of device icon
+ */
+ void StartDownloadL( const TDesC8& aDeviceUuid, const TDesC8& aDeviceIconUrl );
+
+ /**
+ * Cancels download
+ *
+ * @param aDeviceUuid uuid of device
+ */
+ void CancelDownload( const TDesC8& aDeviceUuid );
+
+ /**
+ * Transfers icon file to the client
+ *
+ * @param aMessage message from client
+ * @param aSlot message slot to be used
+ * @param aDeviceUuid the device that's icon is transferred
+ */
+ void TransferFileToClientL( const RMessage2& aMessage, TInt aSlot,
+ const TDesC8& aDeviceUuid );
+
+private:
+ /**
+ * Private class for download queue handling
+ */
+ class CEntry : public CBase
+ {
+ public:
+ static CEntry* NewLC( const TDesC8& aDeviceUuid, const TDesC8& aDeviceIconUrl );
+ virtual ~CEntry();
+ inline TPtrC8 DeviceUuid() const { return iDeviceUuid->Des(); }
+ inline TPtrC8 DeviceIconUrl() const { return iDeviceIconUrl->Des(); }
+ static TInt Compare( const TDesC8* aDeviceUuid, const CEntry& aEntry );
+ private:
+ inline CEntry() {}
+ void ConstructL( const TDesC8& aDeviceUuid, const TDesC8& aDeviceIconUrl );
+
+ private:
+ HBufC8* iDeviceUuid;
+ HBufC8* iDeviceIconUrl;
+ };
+
+private:
+ CUpnpDeviceIconDownloader( MUpnpDeviceIconDownloadObserver& aObserver,
+ TUint aIap );
+ void ConstructL();
+ void DownloadNext();
+ void DownloadNextL( CEntry& aNext );
+ void CleanupFilesL();
+ TBool FileExistsL( const TDesC8& aDeviceUuid );
+ void CleanupFilesIfNeededL();
+ void CheckDiskSpaceL();
+ TBool InProgress( const TDesC8& aDeviceUuid );
+
+private:
+ MUpnpDeviceIconDownloadObserver& iObserver;
+ TInt iIap;
+ RFs iFs;
+ RPointerArray< CEntry > iQueue;
+ CEntry* iCurrent; // Own, can be NULL
+ CHttpDownloader* iDownloader; // Own
+ TBool iCleanupOnShutdown;
+ };
+
+
+#endif // C_UPNPDEVICEICONDOWNLOADER_H