diff -r 000000000000 -r dd21522fd290 widgets/widgetinstaller/inc/WidgetUIOperationsWatcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/widgets/widgetinstaller/inc/WidgetUIOperationsWatcher.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,307 @@ +/* +* 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 CWidgetOperationsWatcher class. +* +* This class implements the ECom SWInstUIPluginAPI interface +* for midlet installation. +* +* +*/ + + +#ifndef WIDGETUIOPERATIONWATCHER_H +#define WIDGETUIOPERATIONWATCHER_H + +// INCLUDES +#include +#include +#include +#include +#include +#include "cuicanceltimer.h" +#include "WidgetUIHandler.h" +#include "IconConverter.h" + +// FORWARD DECLARATIONS +class CZipFile; +class CZipFileMemberIterator; + +namespace SwiUI +{ +// CONSTANTS + +// FORWARD DECLARATIONS +class CWidgetUIConfigHandler; +class CWidgetRegistrationManager; + +// CLASS DECLARATION + + +/** +* This class is provided for callback to notify icon conversion completion. +* @lib WidgetInstallerUI.lib +* @since 3.1 +*/ +class MConverterController + { +public: + /** + * notify icon conversion completion + */ + virtual void NotifyCompletionL( TInt aErr ) = 0; + }; + + +/** +* This class handles the asynchronous install / unsinstall requests. +* +* @lib WidgetInstallerUi.lib +* @since 3.1 +*/ +class CWidgetUIOperationsWatcher : public CActive, + public CommonUI::MCUICancellable, + public MWidgetUICancelObserver, + public MConverterController + { +public: // Constructors and destructor + /** + * Two-phased constructor. + */ + static CWidgetUIOperationsWatcher* NewL(); + + /** + * Destructor. + */ + virtual ~CWidgetUIOperationsWatcher(); + +public: // New functions + /** + * Handle install request. + * @since 3.1 + */ + void InstallL( RFile&, const TDesC8&, TRequestStatus& ); + + /** + * Handle silent install request. + * @since 3.1 + */ + void SilentInstallL( RFile&, const TDesC8&, TRequestStatus& ); + + /** + * Handle uninstall request. + * @since 3.1 + */ + void UninstallL( const TUid& aUid, TRequestStatus& aRequestStatus ); + + /** + * Handle silent uninstall request. + * @since 3.1 + */ + void SilentUninstallL( const TUid&, TRequestStatus& ); + + /** + * Called when installation or update is finished, do the final + * steps of registration, file clean up (remove temporary files, + * display complete message, or handle error. + */ + void FinishInstallL(); + + /** + * Called when uninstallation is finished, do the final steps of + * deregistration, etc, display complete message, or handle error. + */ + void FinishUninstallL( TInt aErr ); + + /** + * Called when install or uninstallation is finished, to update installer log + */ + void HandleLogsL(const TDesC& aWidgetName, const TUid &aUid,TBool aVendor, SwiUI::TLogTaskAction aAction); + + +public: // Functions from base classes + /** + * From CActive, Called by framework when request is finished. + * @since 3.1 + */ + void RunL(); + + /** + * From CActive, Called by framework when request is cancelled. + * @since 3.1 + */ + void DoCancel(); + + /** + * From CActive, Handles a leave occurring in the request completion + * event handler RunL(). + * @since 3.1 + */ + TInt RunError( TInt aError ); + + /** + * From MWidgetUICancelObserver, Called when user has cancelled + * the operation. + * @since 3.1 + */ + void UserCancelL( TBool aCancelImmediately = ETrue ); + + /** + * From MCUICancellable, Indicates if a modal dialog is currently shown. + */ + TBool IsShowingDialog(); + + /** + * From MCUICancellable, Cancels the installation engine. + */ + void CancelEngine(); + + /** + * From MCUICancellable, Called when nothing else has worked. + */ + void ForceCancel(); + + /** + * From MCUICancellable, Called to indicate that the cancelling progress + * has been started. + */ + void StartedCancellingL(); + + /** + * Used for notify icon convertion complete + */ + void NotifyCompletionL( TInt aErr ) ; + +private: + /** + * C++ default constructor. + * @param aRequestStatus - Status of the request. + */ + CWidgetUIOperationsWatcher(); + + /** + * 2nd phase constructor. + */ + void ConstructL(); + + /** + * @since 5.0 + */ + void InstallSubfunctionL( RFile& aFile, TBool& userCancel, + TRequestStatus& aRequestStatus ); + + /** + * Create widget entry by parsing the info.plist, insert the entry into the entry list + * if the entry is not already existing. + * @return the existed widget's index if already present + * @since 3.1 + */ + TInt PreprocessWidgetBundleL(); + + /** + * Prompt user to choose mamory to install/update the widget + * @return true if user choose a momory unit, Leaves if user's choosed memory is not sufficient + * @since 3.1 + */ + TBool SelectMemoryL(); + + /** + * update basepath of widget + * @since 3.1 + */ + void UpdateWidgetBasePathL( TDriveUnit& aDrive ); + + + /** + * Start the icon convertion + * @since 3.1 + */ + void ConvertIconL( TUid& aUid, const TDesC& aIconPath ); + + /** + * Prompt user to install and select memory to use + * @since 3.1 + */ + TBool PromptUserForInstallL( TBool aOverwrite ); + + /** + * Prompt user with security warning about installing + * untrusted widgets + * @since 5.0 + */ + TBool PromptUserForUntrustedWidgetL( ); + + /** + * When overwriting an installed widget, backup so can restore on error + * @since 3.1 + */ + void BackupL(); + + /** + * When overwriting an installed widget, restore on error + * @since 3.1 + */ + void RestoreL(); + +private: // Data + + // A few state variables with the normal case complexity being + // that icon processing runs in parallel with unzipping so if + // unzipping ends first then final steps are triggered by icon + // processing completion and if icon processing ends first then + // unzipping triggers the final steps. If cancelling either by + // user or some external system event, then final steps are + // triggered by DoCancel(). + TBool iUnzipping; + TBool iOverwriting; + TBool iProcessingIcon; + TBool iIconSearchFinished; // search in zip archive + TInt iIconError; + TBool iCancelled; + // TODO: may need to implement silent mode in future + TBool iSilent; // silent mode + + TRequestStatus* iRequestStatus; // pointer to request status of caller + + CFileMan* iFileMgr; // owned + RFs iRfs; // owned + CZipFile* iZipFile; // owed + CZipFileMemberIterator* iMembers; // owned + + RWidgetRegistryClientSession iRegistry; + TBool iServerConnected; // to Widget Registry server + + CWidgetUIHandler* iUIHandler; // owned + CWidgetUIConfigHandler* iWidgetConfigHandler; // owned + CWidgetRegistrationManager* iAppManager; // owned + + // active object to asynchronously convert png icon to mbm + CIconConverter* iIconConverter; // owned + + TFileName iOriginalDir; // for overwrite backup/restore + TFileName iBackupDir; // for overwrite backup/restore + + // these values mainly come from parsing bundle metadata file + // (info.plist) and are passed to WidgetRegistry for registration. + RPointerArray iPropertyValues; + + // task manager pointer for install logs + CTaskManager* iTaskManager; + // TODO: To be investigated + //CommonUI::CCUICancelTimer* iCanceller; + }; +} + +#endif // WIDGETUIOPERATIONWATCHER_H + +// End of File