diff -r 000000000000 -r dd21522fd290 browserutilities/downloadmgr/DownloadMgrUiLib/Inc/CDownloadsListDlg.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Inc/CDownloadsListDlg.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,206 @@ +/* +* 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: Dialog containing the Downloads List +* +*/ + + + +#ifndef CDOWNLOADSLISTDLG_H +#define CDOWNLOADSLISTDLG_H + +// INCLUDES +#include +#include +#include + +// DATA TYPES +enum TDownloadsListDlgEvent + { + EDownloadAdded, + EDownloadChanged, + EDownloadRemoved + }; + +// FORWARD DECLARATIONS +class CEikonEnv; +class CEikFormattedCellListBox; +class CEikMenuBar; +class CDownloadsListArray; +class MDownloadsListDlgObserver; +class RHttpDownload; +class CDownloadUtils; + +// CONSTANTS +/// Refresh timer setting. If this is zero, no timer is used! (Micro is 10^(-6)) +const TInt KRefreshIntervalMicroSeconds = 2000000; +/** Refresh timer setting. Active object priority. Ensure that this is higher +* than standard so that user will be notified. */ +const TInt KRefreshTimerPriority = CActive::EPriorityStandard + 1; + +// CLASS DECLARATION + +/** +* This is the 'view' containing the Downloads List with Options menu. +* Use it like a dialog! +* +* @lib Download Manager UI Lib +* @since Series 60 2.8 +*/ +NONSHARABLE_CLASS( CDownloadsListDlg ) : public CAknPopupList, public MEikMenuObserver + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CDownloadsListDlg* NewL( MDownloadsListDlgObserver& aDlgObserver ); + + /** + * Two-phased constructor. + */ + static CDownloadsListDlg* NewL( MDownloadsListDlgObserver& aDlgObserver, TBool aProgressiveDownload ); + + /** + * Destructor. + */ + virtual ~CDownloadsListDlg(); + + public: // New functions + + /** + * Set the model. + */ + void SetModelL( CDownloadsListArray& aModel ); + + /** + * Notify the dialog that model has changed. + */ + void HandleModelChangeL( TDownloadsListDlgEvent aEvent, TInt aIndex ); + + /** + * The index of the highlighted download. + */ + TInt CurrentItemIndex() const; + + /** + * Display the Options menu. + */ + void DisplayMenuL(); + + /** + * Hide the Options menu. + */ + void HideMenu(); + + /** + * Is the Options menu opened? + */ + TBool MenuShowing() const; + + /** + * Move the highlight to the given download. + */ + void HighlightDownload( RHttpDownload& aHighlightDl ); + + /** + * Handle Middle Softkey Change + */ + void HandleMiddleSoftKeyChangeL(); + + public: // From CAknPopupList + + /** + * Execute the list. It calls CAknPopupList::ExecuteLD(), which calls CActiveScheduler::Start()! + * @return ETrue if the popup was accepted. EFalse if the popup was cancelled. + */ + TBool ExecuteLD(); + + public: // From MEikMenuObserver + + void ProcessCommandL( TInt aCommandId ); + void SetEmphasis( CCoeControl* aMenuControl, TBool aEmphasis ); + void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); + + public: // from MEikListBoxObserver + void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); + + + public: // From CCoeControl + + void FocusChanged( TDrawNow aDrawNow ); + + /** + * HandlePointerEventL + * From CCoeControl + * + */ + void HandlePointerEventL(const TPointerEvent& /*aPointerEvent*/); + + protected: // Constructors + + /** + * C++ default constructor. + */ + CDownloadsListDlg( MDownloadsListDlgObserver& aDlgObserver ); + + /** + * C++ default constructor. + */ + CDownloadsListDlg( MDownloadsListDlgObserver& aDlgObserver, TBool aProgressiveFlag ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + protected: // From CAknPopupList + + /** + * Key event handling. + */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + + private: // New functions + + /** + * Number of visible, inprogress downlods. + */ + TInt VisibleInProgressDownloads() const; + + /** + * Refreshes progress info for the given download at index. + */ + void RefreshProgressL( TInt aIndex ); + + /** + * Refreshing timer static callback. + */ + static TInt RefreshTimerCallback( TAny* aPtr ); + + private: // Data + + CEikonEnv& iMyEikonEnv; + CEikFormattedCellListBox* iListBox; ///< Owned. + CEikMenuBar* iMenuBar; ///< Owned menu bar. + MDownloadsListDlgObserver& iDlgObserver; + CDownloadsListArray* iDownloadsListArray; ///< Not owned; + RHttpDownload* iHighlightDownload; ///< Not owned. + CPeriodic* iRefreshTimer; ///< Refreshes the list. Owned. + CDownloadUtils* iDownloadUtils; ///< Owned. + TBool iIsMSKChangeHandled; + TBool iProgressiveDownload; + }; + +#endif /* CDOWNLOADSLISTDLG_H */