diff -r 000000000000 -r dd21522fd290 widgets/widgetinstaller/inc/WidgetUIHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/widgets/widgetinstaller/inc/WidgetUIHandler.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,245 @@ +/* +* Copyright (c) 2006 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: This file contains the header file of the CMidletUI class. +* +* This class implements the ECom SWInstUIPluginAPI interface +* for midlet installation. +* +*/ + + + +#ifndef WIDGETUIHANDLER_H +#define WIDGETUIHANDLER_H + +// INCLUDES + +#include +#include +#include "CUIDialogs.h" + +namespace SwiUI +{ +/** +* This interface defines an observer for user initiated cancel. +* +* @since 3.1 +*/ +class MWidgetUICancelObserver + { + public: + + /** + * Called when user has cancelled the operation. + * @since 3.0 + */ + virtual void UserCancelL( TBool aCancelImmediately ) = 0; + }; + +/** +* This class handles the UI for widget installations. +* +* @lib WidgetInstallerUI.lib +* @since 3.1 +*/ +class CWidgetUIHandler : public CBase, + public CommonUI::MCUIWaitDialogCallback + { + public: // Constructors and destructor + + /** + * Enumeration for install mode. + * @since 3.1 + */ + enum TInstallMode + { + EModeInstall, + EModeUninstall + }; + + /** + * Two-phased constructor. + * @param aMode - Indicates if this is for install or uninstall + * @param aCancelObserver - the object to handle the user cancel event + */ + static CWidgetUIHandler* NewL( TInstallMode aMode, MWidgetUICancelObserver* aCancelObserver ); + + /** + * Destructor. + */ + virtual ~CWidgetUIHandler(); + + public: // From base classes + + /** + * From, MCUIWaitDialogCallback, called when wait/progress dialog is about + * to be cancelled. + */ + TBool HandleDialogExitL( TInt aButtonId ); + + public: // new + + /** + * Displays a dialog at the beginning of an installation + * @param aWidgetName - display name of the widget + * @return Yes if user would want to install, No if user cancels install + */ + TBool DisplayInstallL( const TDesC& aWidgetName ); + + /** + * Displays a dialog at the beginning of an update + * @param aWidgetName - display name of the widget + * @return Yes if user would want to update, No if user cancels update + */ + TBool DisplayOverwriteL( const TDesC& aWidgetName ); + + /** + * Displays a dialog asking whether we want to upgrade an + * application present on the device. + */ + TBool DisplayUpgradeL( const Swi::CAppInfo& aAppInfo, + const Swi::CAppInfo& aExistingAppInfo ); + + /** + * Displays a dialog at the start of the uninstallation with + * information about the application to be uninstalled. The user may cancel the + * uninstallation at this stage. This dialog must be shown in TrustedUI mode. + */ + TBool DisplayUninstallL( const TDesC& aWidgetName ); + + /** + * Prompt user to select a drive to install the widget + * @param aDrive - returns user's drive selection + * @param aSufficientSpace - return whether user's selected drive is big enough + * @return true if user selected a drive, false if user chose cancel. + */ + TBool SelectDriveL( RFs& aFs, TDriveUnit& aDrive, + TBool& aSufficientSpace, TInt aTotalSize ); + + /** + * Displays a dialog containing text. This dialog has only a + * Continue button if aOption is EInstFileTextOptionContinue, or Yes and No buttons + * otherwise. + */ + TBool DisplayTextL( const TDesC& aText ); + + /** + * Displays a dialog showing an error message. + * @param aErr - an error code + */ + void DisplayErrorL( const TInt aErr ); + + /** + * Displays a dialog showing completion message. + */ + void DisplayCompleteL(); + + /** + * Displays a dialog showing cancel message. + */ + void DisplayCancelL(); + + /** + * Informs user that the applications are in use during an uninstallation. + * Return ETrue if the user wishes to continue the removal process and + * close the applications anyway. + */ + TBool DisplayApplicationsInUseL( const Swi::CAppInfo& aAppInfo, + const RPointerArray& aAppNames ); + + /** + * Show progress dialog and pass total uncompressed package size. + * This method should be called only after SelectDrive is called. + * @since 3.1 + */ + void DisplayProgressDialogL(); + + /** + * Update progress information during installation. + * @since 3.1 + * @param aSize - the increment on progress + */ + void UpdateProgressDialogL( TInt aSize ); + + /** + * Close progress dialog + */ + void CloseProgressDialogL() { iCommonDialogs->CloseProgressDialogL(); } + + /** + * Display Finalize dialog + */ + void DisplayFinalizeDialogL(); + + /** + * Close the finalize dialog + */ + void CloseFinalizeDialogL() { iCommonDialogs->CloseWaitDialogL(); } + + /** + * Display unintall in progress dialog + * @since 5.0 + */ + void DisplayUninstallInProgressL(); + + /** + * Close the wait dialog + * @since 5.0 + */ + void CloseUninstallInProgressDialogL() { iCommonDialogs->CloseWaitDialogL(); } + + /** + * Show the untrusted widget dialog + * @since 5.0 + * @return Yes if user would wants to continue with install, + * No if user cancels install + */ + TBool DisplayUntrustedSecurityDialogL(); + + protected: + + /** + * Constructor. + * @param aMode - Indicates if this is for install or uninstall + */ + CWidgetUIHandler( TInstallMode aMode, MWidgetUICancelObserver* aCancelObserver ); + + private: + + /** + * 2nd phase constructor. + */ + void ConstructL(); + + + protected: // Data + MWidgetUICancelObserver* iCancelObserver; // not owned, used for callback + + CommonUI::CCUIDialogs* iCommonDialogs; // Owned + + TInstallMode iMode; // Indicates whether we have install or uninstall in progress + + TBool iShowingDialog; // show dialog or not + + TBool iShownFinalNote; // is final note shown or not + + TInt iUncompressedSize; // uncompressed size of the whole package + + TInt iInstalledSize; // total installed size + + CArrayFixFlat* iProgressNumbers; // owned + }; +} + +#endif