web_pub/download_mgr_ui_api/inc/CDownloadMgrUiDownloadsList.h
changeset 0 dd21522fd290
child 8 7c90e6132015
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web_pub/download_mgr_ui_api/inc/CDownloadMgrUiDownloadsList.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,261 @@
+/*
+* Copyright (c) 2002-2004 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:  Supports Download Menu and Downloads List
+*
+*/
+
+
+
+#ifndef CDOWNLOADMGRUIDOWNLOADSLIST_H
+#define CDOWNLOADMGRUIDOWNLOADSLIST_H
+
+//  INCLUDES
+#include <CDownloadMgrUiBase.h>
+#include <DownloadMgrClient.h>
+#include <HttpDownloadMgrCommon.h>
+#include <DownloadsListDlgObserver.h>
+
+#include <AiwServiceHandler.h>
+#include <AiwCommon.hrh>
+
+// FORWARD DECLARATIONS
+class CDownloadMgrUiDownloadMenu;
+class CDownloadMgrUiUserInteractions;
+class CDownloadsListArray;
+class CDownloadsListDlg;
+class CUserInteractionsUtils;
+class CDownloadMgrUiLibRegistry;
+class CAsyncEventHandlerArray;
+class CAsyncEventHandlerBase;
+class CDownloadsListExtension;
+
+// CLASS DECLARATION
+
+/**
+*  Display list of downloads.
+*
+*  @lib Download Manager UI Lib
+*  @since Series 60 2.8
+*/
+NONSHARABLE_CLASS( CDownloadMgrUiDownloadsList ) : 
+                                                public CDownloadMgrUiBase, 
+                                                public MHttpDownloadMgrObserver,
+                                                public MDownloadsListDlgObserver,
+                                                public MAiwNotifyCallback 
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CDownloadMgrUiDownloadsList* NewL
+               ( CDownloadMgrUiLibRegistry& aRegistryModel );
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CDownloadMgrUiDownloadsList();
+
+    public: // New functions
+
+        // -------------------------------------------------------------
+        // ************** Download Menu
+        // -------------------------------------------------------------
+
+        /**
+        * Access the Download Menu utility.
+        * @since Series 60 2.8
+        * @return -
+        */
+        IMPORT_C CDownloadMgrUiDownloadMenu& DownloadMenu() const;
+
+        // -------------------------------------------------------------
+        // ************** Downloads List
+        // -------------------------------------------------------------
+
+        /**
+        * Display the list of downloads (the method does not block the scheduler).
+        * It means that this method initializes an active object, that completes 
+        * itself and it executes the Downloads List dialog in it's RunL.
+        * Using this method the caller is not blocked by the wait-dialog.
+        * @since Series 60 2.8
+        * @return -
+        */
+        IMPORT_C void DisplayDownloadsListL();
+
+        /**
+        * Display the list of downloads (the method does not block the scheduler).
+        * It means that this method initializes an active object, that completes 
+        * itself and it executes the Downloads List dialog in it's RunL.
+        * Using this method the caller is not blocked by the wait-dialog.
+        * This method is not exported!
+        * @param aHighlightDl This download is highlighted in the list.
+        * @since Series 60 3.0
+        * @return -
+        */
+        void DisplayDownloadsListL( RHttpDownload& aHighlightDl );
+
+        /**
+        * Cancel displaying the list of downloads.
+        * @since Series 60 2.8
+        * @return -
+        */
+        IMPORT_C void CancelDisplayingDownloadsList();
+
+        /**
+        * Is the List of Downloads visible?
+        * @since Series 60 2.8
+        * @return ETrue/EFalse
+        */
+        IMPORT_C TBool IsVisible() const;
+
+        /**
+        * Number of downloads in the List of Downloads.
+        * @since Series 60 2.8
+        * @return TInt
+        */
+        IMPORT_C TInt Count() const;
+
+        /**
+        * Remove the given download from the list.
+        */ 
+        void DeleteDownloadL( RHttpDownload& aDownload );
+
+        /**
+        * Is one of them progressive
+        * @since Series 60 3.2
+        * @return TBool 
+        */
+        TBool IsOneProgressive();
+        
+        /**
+        * Is one of them progressive
+        * @since Series 60 3.2
+        * @return TBool 
+        */
+        inline TBool IsProgressiveDownloadEnabled() {return iProgressiveDownload; }
+        
+
+    public: // Functions from CDownloadMgrUiBase
+
+        IMPORT_C virtual void GetIntAttributeL( const TUint aAttribute, TInt32& aValue );
+        IMPORT_C virtual void GetBoolAttributeL( const TUint aAttribute, TBool& aValue );
+        IMPORT_C virtual void GetStringAttributeL( const TUint aAttribute, TDes16& aValue  );
+        IMPORT_C virtual void GetStringAttributeL( const TUint aAttribute, TDes8& aValue  );
+        IMPORT_C virtual void SetIntAttributeL( const TUint aAttribute, TInt32 aValue );
+        IMPORT_C virtual void SetBoolAttributeL( const TUint aAttribute, TBool aValue );
+        IMPORT_C virtual void SetStringAttributeL( const TUint aAttribute, const TDesC16& aValue );
+        IMPORT_C virtual void SetStringAttributeL( const TUint aAttribute, const TDesC8& aValue );
+
+    protected: // Constructors
+
+        /**
+        * C++ default constructor.
+        */
+        CDownloadMgrUiDownloadsList( CDownloadMgrUiLibRegistry& aRegistryModel );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+    protected: // New functions
+
+        // -------------------------------------------------------------
+        // ************** List box utilities
+        // -------------------------------------------------------------
+
+        /**
+        * Add downloads to the list residing in aDownloadMgr.
+        * If a given download is already on the list, the list item is only updated.
+        */ 
+        void AddDownloadsToListModelL( CDownloadsListArray& aLBModel, 
+                                       RHttpDownloadMgr& aDownloadMgr );
+
+        /**
+        * Add the download to the list.
+        * If the download is already on the list, the list item is only updated.
+        * This method should be used for adding new downloads - 
+        * not for updating existing ones.
+        * @return Returns the index relative to zero of the appended or updated item.
+        */
+        TInt AddDownloadToListModelL( CDownloadsListArray& aLBModel, 
+                                      RHttpDownload& aDownload );
+
+        // -------------------------------------------------------------
+        // ************** Responses to download events
+        // -------------------------------------------------------------
+
+        void NewDownloadCreatedL( RHttpDownload& aDownload );
+        void UpdateProgressInfoL( RHttpDownload& aDownload, THttpDownloadEvent aEvent );
+        void DownloadPausedL( RHttpDownload& aDownload, THttpDownloadEvent aEvent );
+        void DownloadCompletedL( RHttpDownload& aDownload, THttpDownloadEvent aEvent );
+        void DownloadFailedL( RHttpDownload& aDownload, THttpDownloadEvent aEvent );
+        void PauseableStateChangedL( RHttpDownload& aDownload, TBool aPausable );
+
+        // -------------------------------------------------------------
+        // ************** Other utility
+        // -------------------------------------------------------------
+
+        void HideMenu();
+
+    protected: // Functions from MHttpDownloadMgrObserver
+
+        virtual void HandleDMgrEventL( RHttpDownload& aDownload, THttpDownloadEvent aEvent );
+
+    protected: // Functions from MDownloadsListDlgObserver
+
+        virtual void PreLayoutDynInitL( CDownloadsListDlg& aDialog );
+        virtual void ProcessCommandL( CDownloadsListDlg& aDialog, TInt aCommandId );
+        virtual void DynInitMenuPaneL( CDownloadsListDlg& aDialog, TInt aResourceId, CEikMenuPane* aMenuPane );
+        virtual TKeyResponse OfferKeyEventL( CDownloadsListDlg& aDialog, const TKeyEvent& aKeyEvent, TEventCode aType );
+
+
+    protected: // Function from MAIWNotifyCallback 
+        TInt HandleNotifyL( TInt /*aCmdId*/,
+                            TInt /*aEventId*/,
+                            CAiwGenericParamList& /*aEventParamList*/,
+                            const CAiwGenericParamList& /*aInParamList*/ ){return KErrNone;}
+    private: 
+        void AttachAIWInterestL();
+        void HandleAIWCommandL(TInt aCommand, RHttpDownload& aDownload);
+        void InitializeAIWPlugInMenusL( TInt aResourceId, 
+                                        CEikMenuPane* aMenuPane,
+                                        RHttpDownload& aDownload );
+        void ProvideInputParametersL( CAiwGenericParamList& aParams,
+                                      TInt& /*aCommandOptions*/,
+                                      RHttpDownload& aDownload);
+
+    private:  // Data
+        
+        CDownloadsListExtension*    iExtension; ///< Extension class. Owned.
+
+        CUserInteractionsUtils*     iUiUtils; ///< Utility. Owned.
+        CDownloadMgrUiDownloadMenu* iDownloadMenu; ///< Download Menu utility. Owned.
+        CAsyncEventHandlerArray*    iEventHandlerArray; ///< Owned.
+        CDownloadsListArray*        iListModel; ///< Association array: list item-download. Owned.
+        CDownloadsListDlg*          iDialog; ///< Owned. Unused member.
+        TBool                       iIsVisible; ///< Unused member.
+		TBool						iIsTimerStarted;
+		CAiwServiceHandler* iAIWServiceHandler;
+		TBool						iProgressiveDownload;
+		
+		TBool						iIsCancelInProgress;
+
+    private: // Friend classes
+
+        friend class CDownloadsListExtension;
+    };
+
+#endif /* CDOWNLOADMGRUIDOWNLOADSLIST_H */