williamr@2: /* williamr@2: * Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Supports Download Menu and Downloads List williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: #ifndef CDOWNLOADMGRUIDOWNLOADSLIST_H williamr@2: #define CDOWNLOADMGRUIDOWNLOADSLIST_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class CDownloadMgrUiDownloadMenu; williamr@2: class CDownloadMgrUiUserInteractions; williamr@2: class CDownloadsListArray; williamr@2: class CDownloadsListDlg; williamr@2: class CUserInteractionsUtils; williamr@2: class CDownloadMgrUiLibRegistry; williamr@2: class CAsyncEventHandlerArray; williamr@2: class CAsyncEventHandlerBase; williamr@2: class CDownloadsListExtension; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * Display list of downloads. williamr@2: * williamr@2: * @lib Download Manager UI Lib williamr@2: * @since Series 60 2.8 williamr@2: */ williamr@2: NONSHARABLE_CLASS( CDownloadMgrUiDownloadsList ) : williamr@2: public CDownloadMgrUiBase, williamr@2: public MHttpDownloadMgrObserver, williamr@2: public MDownloadsListDlgObserver, williamr@2: public MAiwNotifyCallback williamr@2: { williamr@2: public: // Constructors and destructor williamr@2: williamr@2: /** williamr@2: * Two-phased constructor. williamr@2: */ williamr@2: static CDownloadMgrUiDownloadsList* NewL williamr@2: ( CDownloadMgrUiLibRegistry& aRegistryModel ); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: virtual ~CDownloadMgrUiDownloadsList(); williamr@2: williamr@2: public: // New functions williamr@2: williamr@2: // ------------------------------------------------------------- williamr@2: // ************** Download Menu williamr@2: // ------------------------------------------------------------- williamr@2: williamr@2: /** williamr@2: * Access the Download Menu utility. williamr@2: * @since Series 60 2.8 williamr@2: * @return - williamr@2: */ williamr@2: IMPORT_C CDownloadMgrUiDownloadMenu& DownloadMenu() const; williamr@2: williamr@2: // ------------------------------------------------------------- williamr@2: // ************** Downloads List williamr@2: // ------------------------------------------------------------- williamr@2: williamr@2: /** williamr@2: * Display the list of downloads (the method does not block the scheduler). williamr@2: * It means that this method initializes an active object, that completes williamr@2: * itself and it executes the Downloads List dialog in it's RunL. williamr@2: * Using this method the caller is not blocked by the wait-dialog. williamr@2: * @since Series 60 2.8 williamr@2: * @return - williamr@2: */ williamr@2: IMPORT_C void DisplayDownloadsListL(); williamr@2: williamr@2: /** williamr@2: * Display the list of downloads (the method does not block the scheduler). williamr@2: * It means that this method initializes an active object, that completes williamr@2: * itself and it executes the Downloads List dialog in it's RunL. williamr@2: * Using this method the caller is not blocked by the wait-dialog. williamr@2: * This method is not exported! williamr@2: * @param aHighlightDl This download is highlighted in the list. williamr@2: * @since Series 60 3.0 williamr@2: * @return - williamr@2: */ williamr@2: void DisplayDownloadsListL( RHttpDownload& aHighlightDl ); williamr@2: williamr@2: /** williamr@2: * Cancel displaying the list of downloads. williamr@2: * @since Series 60 2.8 williamr@2: * @return - williamr@2: */ williamr@2: IMPORT_C void CancelDisplayingDownloadsList(); williamr@2: williamr@2: /** williamr@2: * Is the List of Downloads visible? williamr@2: * @since Series 60 2.8 williamr@2: * @return ETrue/EFalse williamr@2: */ williamr@2: IMPORT_C TBool IsVisible() const; williamr@2: williamr@2: /** williamr@2: * Number of downloads in the List of Downloads. williamr@2: * @since Series 60 2.8 williamr@2: * @return TInt williamr@2: */ williamr@2: IMPORT_C TInt Count() const; williamr@2: williamr@2: /** williamr@2: * Remove the given download from the list. williamr@2: */ williamr@2: void DeleteDownloadL( RHttpDownload& aDownload ); williamr@2: williamr@2: /** williamr@2: * Is one of them progressive williamr@2: * @since Series 60 3.2 williamr@2: * @return TBool williamr@2: */ williamr@2: TBool IsOneProgressive(); williamr@2: williamr@2: /** williamr@2: * Is one of them progressive williamr@2: * @since Series 60 3.2 williamr@2: * @return TBool williamr@2: */ williamr@2: inline TBool IsProgressiveDownloadEnabled() {return iProgressiveDownload; } williamr@2: williamr@2: williamr@2: public: // Functions from CDownloadMgrUiBase williamr@2: williamr@2: IMPORT_C virtual void GetIntAttributeL( const TUint aAttribute, TInt32& aValue ); williamr@2: IMPORT_C virtual void GetBoolAttributeL( const TUint aAttribute, TBool& aValue ); williamr@2: IMPORT_C virtual void GetStringAttributeL( const TUint aAttribute, TDes16& aValue ); williamr@2: IMPORT_C virtual void GetStringAttributeL( const TUint aAttribute, TDes8& aValue ); williamr@2: IMPORT_C virtual void SetIntAttributeL( const TUint aAttribute, TInt32 aValue ); williamr@2: IMPORT_C virtual void SetBoolAttributeL( const TUint aAttribute, TBool aValue ); williamr@2: IMPORT_C virtual void SetStringAttributeL( const TUint aAttribute, const TDesC16& aValue ); williamr@2: IMPORT_C virtual void SetStringAttributeL( const TUint aAttribute, const TDesC8& aValue ); williamr@2: williamr@2: protected: // Constructors williamr@2: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: CDownloadMgrUiDownloadsList( CDownloadMgrUiLibRegistry& aRegistryModel ); williamr@2: williamr@2: /** williamr@2: * By default Symbian 2nd phase constructor is private. williamr@2: */ williamr@2: void ConstructL(); williamr@2: williamr@2: protected: // New functions williamr@2: williamr@2: // ------------------------------------------------------------- williamr@2: // ************** List box utilities williamr@2: // ------------------------------------------------------------- williamr@2: williamr@2: /** williamr@2: * Add downloads to the list residing in aDownloadMgr. williamr@2: * If a given download is already on the list, the list item is only updated. williamr@2: */ williamr@2: void AddDownloadsToListModelL( CDownloadsListArray& aLBModel, williamr@2: RHttpDownloadMgr& aDownloadMgr ); williamr@2: williamr@2: /** williamr@2: * Add the download to the list. williamr@2: * If the download is already on the list, the list item is only updated. williamr@2: * This method should be used for adding new downloads - williamr@2: * not for updating existing ones. williamr@2: * @return Returns the index relative to zero of the appended or updated item. williamr@2: */ williamr@2: TInt AddDownloadToListModelL( CDownloadsListArray& aLBModel, williamr@2: RHttpDownload& aDownload ); williamr@2: williamr@2: // ------------------------------------------------------------- williamr@2: // ************** Responses to download events williamr@2: // ------------------------------------------------------------- williamr@2: williamr@2: void NewDownloadCreatedL( RHttpDownload& aDownload ); williamr@2: void UpdateProgressInfoL( RHttpDownload& aDownload, THttpDownloadEvent aEvent ); williamr@2: void DownloadPausedL( RHttpDownload& aDownload, THttpDownloadEvent aEvent ); williamr@2: void DownloadCompletedL( RHttpDownload& aDownload, THttpDownloadEvent aEvent ); williamr@2: void DownloadFailedL( RHttpDownload& aDownload, THttpDownloadEvent aEvent ); williamr@2: void PauseableStateChangedL( RHttpDownload& aDownload, TBool aPausable ); williamr@2: williamr@2: // ------------------------------------------------------------- williamr@2: // ************** Other utility williamr@2: // ------------------------------------------------------------- williamr@2: williamr@2: void HideMenu(); williamr@2: williamr@2: protected: // Functions from MHttpDownloadMgrObserver williamr@2: williamr@2: virtual void HandleDMgrEventL( RHttpDownload& aDownload, THttpDownloadEvent aEvent ); williamr@2: williamr@2: protected: // Functions from MDownloadsListDlgObserver williamr@2: williamr@2: virtual void PreLayoutDynInitL( CDownloadsListDlg& aDialog ); williamr@2: virtual void ProcessCommandL( CDownloadsListDlg& aDialog, TInt aCommandId ); williamr@2: virtual void DynInitMenuPaneL( CDownloadsListDlg& aDialog, TInt aResourceId, CEikMenuPane* aMenuPane ); williamr@2: virtual TKeyResponse OfferKeyEventL( CDownloadsListDlg& aDialog, const TKeyEvent& aKeyEvent, TEventCode aType ); williamr@2: williamr@2: williamr@2: protected: // Function from MAIWNotifyCallback williamr@2: TInt HandleNotifyL( TInt /*aCmdId*/, williamr@2: TInt /*aEventId*/, williamr@2: CAiwGenericParamList& /*aEventParamList*/, williamr@2: const CAiwGenericParamList& /*aInParamList*/ ){return KErrNone;} williamr@2: private: williamr@2: void AttachAIWInterestL(); williamr@2: void HandleAIWCommandL(TInt aCommand, RHttpDownload& aDownload); williamr@2: void InitializeAIWPlugInMenusL( TInt aResourceId, williamr@2: CEikMenuPane* aMenuPane, williamr@2: RHttpDownload& aDownload ); williamr@2: void ProvideInputParametersL( CAiwGenericParamList& aParams, williamr@2: TInt& /*aCommandOptions*/, williamr@2: RHttpDownload& aDownload); williamr@2: williamr@2: void LaunchFileManagerApplication(); williamr@2: williamr@2: private: // Data williamr@2: williamr@2: CDownloadsListExtension* iExtension; ///< Extension class. Owned. williamr@2: williamr@2: CUserInteractionsUtils* iUiUtils; ///< Utility. Owned. williamr@2: CDownloadMgrUiDownloadMenu* iDownloadMenu; ///< Download Menu utility. Owned. williamr@2: CAsyncEventHandlerArray* iEventHandlerArray; ///< Owned. williamr@2: CDownloadsListArray* iListModel; ///< Association array: list item-download. Owned. williamr@2: CDownloadsListDlg* iDialog; ///< Owned. Unused member. williamr@2: TBool iIsVisible; ///< Unused member. williamr@2: TBool iIsTimerStarted; williamr@2: CAiwServiceHandler* iAIWServiceHandler; williamr@2: TBool iProgressiveDownload; williamr@2: williamr@2: TBool iIsCancelInProgress; williamr@2: TBool iPlatformSupportsGallery; williamr@2: williamr@2: private: // Friend classes williamr@2: williamr@2: friend class CDownloadsListExtension; williamr@2: }; williamr@2: williamr@2: #endif /* CDOWNLOADMGRUIDOWNLOADSLIST_H */