widgets/widgetinstaller/inc/WidgetUIOperationsWatcher.h
changeset 0 dd21522fd290
child 10 a359256acfc6
--- /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 <e32base.h>
+#include <SWInstDefs.h>
+#include <SWInstTaskManager.h>
+#include <SWInstLogTaskParam.h>
+#include <WidgetRegistryClient.h>
+#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<CWidgetPropertyValue> iPropertyValues;
+    
+    // task manager pointer for install logs
+    CTaskManager* iTaskManager; 
+    // TODO: To be investigated
+    //CommonUI::CCUICancelTimer* iCanceller;
+    };
+}
+
+#endif      // WIDGETUIOPERATIONWATCHER_H
+
+// End of File