diff -r 000000000000 -r dd21522fd290 web_pub/download_mgr_ui_api/inc/CDownloadMgrUiUserInteractions.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web_pub/download_mgr_ui_api/inc/CDownloadMgrUiUserInteractions.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,310 @@ +/* +* 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 user interaction dialogs for downloads +* +*/ + + + +#ifndef CDOWNLOADMGRUIUSERINTERACTIONS_H +#define CDOWNLOADMGRUIUSERINTERACTIONS_H + +// INCLUDES +#include +#include +#include + +// CONSTANTS +_LIT8( KDrmInnerContentTypesToLaunch, "application/java-archive application/x-java-archive x-epoc/x-sisx-app application/x-pip" ); +_LIT8( KSisxApplication, "x-epoc/x-sisx-app application/vnd.symbian.install x-epoc/x-app268436505" ); +_LIT8( KPipApplication, "application/x-pip" ); +_LIT8( KWidgetMimeType, "application/x-nokia-widget" ); +_LIT8( KSharingConfig, "application/isf.sharing.config" ); + +// DATA TYPES +enum TClientAppExitType + { + ETerminatedByUser, + ETerminatedBySystem + }; + +// FORWARD DECLARATIONS +class CUserInteractionsUtils; +class CDownloadMgrUiLibRegistry; +class CAsyncEventHandlerArray; +class CEikAppUi; +class CUserInteractionsExtension; + +// CLASS DECLARATION + +/** +* The User Interactions supports the followings: +* - User confirmation when content-type header arrives +* - Handling completed downloads +* - Querying HTTP authentication credentials +* - Querying proxy authentication credentials +* - Error notification +* - Client App termination by the User +* +* @lib Download Manager UI Lib +* @since Series 60 2.8 +*/ +NONSHARABLE_CLASS( CDownloadMgrUiUserInteractions ) : + public CDownloadMgrUiBase, + public MHttpDownloadMgrObserver + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CDownloadMgrUiUserInteractions* NewL + ( CDownloadMgrUiLibRegistry& aRegistryModel ); + + /** + * Destructor. + */ + virtual ~CDownloadMgrUiUserInteractions(); + + public: // New functions + + /** + * Client Apps can call this function before exiting the application. + * It should be called when the user terminates the application. + * It opens a confirmation query. + * @return OK to exit? True/False. It is only a suggested value! + */ + IMPORT_C TBool OkToExitL(); + + /** + * Client Apps can call this function in the App UI's destructor. + * It has been made non-leavable, so it can be called without TRAP. + * It initializes Grouped Soft Notifications, if necessary. + * @param aAppUi Reference to the actual App UI. + * @param aExitType Exit type when this function is called. + * Only ETerminatedBySystem is supported. + * @param aViewId View ID of the view where to switch in case user chooses + * accept softkey in the soft notification. + * @param aCustomMessageId Custom message ID. + * @param aViewActivationMsg Custom message sent to the view in + * the view activation process. + * @return Error code or KErrNone. + */ + IMPORT_C TInt PrepareToExit( CEikAppUi& aAppUi, + TClientAppExitType aExitType, + TVwsViewId aViewId, + TUid aCustomMessageId, + const TDesC8& aViewActivationMsg ); + + /** + * Client Apps can call this function in the App UI's destructor. + * It has been made non-leavable, so it can be called without TRAP. + * It initializes Grouped Soft Notifications, if necessary. + * @param aAppUid 3rd UID of the application. + * @param aViewId View ID that needs to be activated. + * @param aCustomMessageId Custom message ID. + * @return Error code or KErrNone. + */ + IMPORT_C TInt PrepareToExit( TUint32 aAppUid, + TUint32 aViewId, + TUint32 aCustomMessageId ); + + /** + * Currently it supports handling completed download. + * COD download is deleted, otherwise normal behaviour, that + * depends on EDlAttrAction (EDoNothing/EMove/ELaunch). + * @param aDownload The actual download + * @return - + */ + IMPORT_C void HandleDownloadL( RHttpDownload& aDownload ); + + /** + * The number of download confirmations being shown. + * @return Non-negative integer value. + */ + TInt DownloadConfirmationsShown() const; + + /** + * Ask if a handler or something uses the UI, so + * others should postpone their tasks that require UI. + * @return yes/no. + */ + TBool IsUiBusy() const; + + /** + * Is a Cod ServiceFlow running? + * @return yes/no. + */ + TBool IsCodServiceFlowRunning() const; + + /** + * Is Cod ServiceFlow running of the given download? + * @param aDownload The download in question. + * @return yes/no. + */ + TBool IsCodServiceFlowRunning( RHttpDownload& aDownload ) const; + + /** + * Is a Cod ServiceFlow running? + * LEAVing version. + * @return yes/no. + */ + TBool IsCodServiceFlowRunningL() const; + + /** + * Is Cod ServiceFlow running of the given download? + * LEAVing version. + * @param aDownload The download in question. + * @return yes/no. + */ + TBool IsCodServiceFlowRunningL( RHttpDownload& aDownload ) const; + + /** + * Postpone handling the given COD download. The download is placed to a + * LIFO queue, and SetHandlerRunning( EFalse ) handles (restarts) the first + * download in it. + * @param aDownload The download to be postponed. + */ + void PostponeCodHandlingL( RHttpDownload& aDownload ); + + /** + * Check if the given download is postponed. + * @param aDownload The download in question. + * @return true/false. + */ + TBool IsPostponed( RHttpDownload& aDownload ) const; + + /** + * Schedule a postponed download for running. + */ + void SchedulePostponedDownloadL(); + + public: // Functions from CDownloadMgrUiBase + + /// Attribute enumerations. + enum TDownloadMgrUiUserInteractionsAttr + { + EAttrSuppressDownloadConfirmation ///< TBool, default: EFalse + }; + + 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. + */ + CDownloadMgrUiUserInteractions( CDownloadMgrUiLibRegistry& aRegistryModel ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + protected: // New functions + + // Event handler functions + + /** + * Wraps DoHandleCompletionWithQueryL() to ensure that only one instance + * of the dialog is displayed at any point in time. + * @param aDownload The actual download + * @return void + */ + void HandleCompletionWithQueryL( RHttpDownload& aDownload, + TBool aIsUiBusy, + TBool aIsSupported, + TBool aIsDrm, + TBool aDrmRightsOnPhone ); + /** + * Handle download completion with query (wait) dialog. + * @param aDownload The actual download + * @return - + */ + void DoHandleCompletionWithQueryL( RHttpDownload& aDownload, + TBool aIsUiBusy, + TBool aIsSupported, + TBool aIsDrm, + TBool aDrmRightsOnPhone ); + + /** + * Leaving version of PrepareToExit(). + * @return None. + */ + void PrepareToExitL( CEikAppUi* aAppUi, + TClientAppExitType aExitType, + TVwsViewId aViewId, + TUid aCustomMessageId, + const TDesC8& aViewActivationMsg ); + + /** + * Is a stand-alone instance running from the very same application? + * @return True/False. + */ + TBool IsStandAloneAppRunning(); + + /** + * Delete Event Handler(s) showing download confirmation query. + * @param aDownload The actual download. + */ + void DeleteEventHandlerShowingDlConfirmation( RHttpDownload& aDownload ); + + /** + * Delete Event Handler(s) belonging to the given download. + * @param aDownload The actual download. + */ + void DeleteEventHandlers( RHttpDownload& aDownload ); + + /** + * Handle completed normal download (not COD or OMA, not DRM). + * @param aDownload The actual download + * @return - + */ + void HandleNormalDownloadL( RHttpDownload& aDownload ); + + /** + * Check if the download is COD. + * @param aDownload The actual download + * @return ETrue/EFalse + */ + TBool CodDownloadL( RHttpDownload& aDownload ) const; + + protected: // Functions from MHttpDownloadMgrObserver + + virtual void HandleDMgrEventL( RHttpDownload& aDownload, + THttpDownloadEvent aEvent ); + + private: // Data + + CUserInteractionsExtension* iExtension; ///< Extension class, Owned. + + CUserInteractionsUtils* iUiUtils; /**< Owned. Should be only one + instance in the UILib! */ + CAsyncEventHandlerArray* iEventHandlerArray; ///< Owned. + + TBool iDlgActive; + + private: // Friend classes + + friend class CUserInteractionsExtension; + }; + +#endif /* CDOWNLOADMGRUIUSERINTERACTIONS_H */