diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/mw/cdownloadmgruidownloadslist.h --- a/epoc32/include/mw/cdownloadmgruidownloadslist.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/mw/cdownloadmgruidownloadslist.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,264 @@ -cdownloadmgruidownloadslist.h +/* +* 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 +#include +#include +#include + +#include +#include + +// 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); + + void LaunchFileManagerApplication(); + + 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; + TBool iPlatformSupportsGallery; + + private: // Friend classes + + friend class CDownloadsListExtension; + }; + +#endif /* CDOWNLOADMGRUIDOWNLOADSLIST_H */