--- /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