webengine/widgetinstaller/Inc/WidgetInstaller.h
changeset 0 dd21522fd290
child 16 a359256acfc6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/widgetinstaller/Inc/WidgetInstaller.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,246 @@
+/*
+* Copyright (c) 2007 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 WidgetInstaller class.
+*
+*
+*
+*/
+
+
+#ifndef WIDGETINSTALLER_H
+#define WIDGETINSTALLER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <WidgetRegistryClient.h>
+#ifdef _DEBUG
+#include <flogger.h>
+#endif
+
+// FORWARD DECLARATIONS
+class CWidgetConfigHandler;
+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 install.
+*
+* @lib WidgetBackupRestore.exe
+* @since 3.1
+*/
+NONSHARABLE_CLASS(CWidgetInstaller) : public CBase, MConverterController
+    {
+public:  // Constructors and destructor
+    /**
+     * Two-phased constructor.
+     */
+    IMPORT_C static CWidgetInstaller* NewL();
+
+    /**
+     * Destructor.
+     */
+    virtual ~CWidgetInstaller();
+
+public: // New functions
+    /**
+     * Handle install request.
+     * @since 3.1
+     */
+    IMPORT_C void InstallL( TDesC16& aRestoreDir );
+
+    /**
+     * 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.
+     */
+    IMPORT_C void FinishInstallL( TInt aErr );
+
+    /**
+     * @since 3.2
+     */
+    IMPORT_C TInt RunError( TInt aError );
+
+    /**
+     * Rebuild registry properties (except UID) from installed widget dir.
+     *
+     * @param aFs: file session to use
+     * @param aWidgetPath: path to main widget dir (icon path)
+     * @param aLproj: language project name for localization (from registry)
+     * @param aUid: the UID to assign to the widget
+     * @since 5.0
+     */
+    IMPORT_C RPointerArray<CWidgetPropertyValue>* WidgetPropertiesFromInstalledWidgetL(
+        RFs &aFs,
+        const TDesC& aWidgetPath, /* should end with backslash */
+        const TDesC& aLproj,
+        TUid aUid );
+
+    /**
+     * If widget registry entry is assigned a new UID, then the
+     * processed icon file (mbm file), if any, needs to be renamed
+     * with the new UID.
+     *
+     * @param aFs: file session to use
+     * @param aEntry: widget entry as stored in the registry
+     * @since 5.0
+     */
+    IMPORT_C TInt RenameIconFile( RFs &aFs,
+                                  RPointerArray<CWidgetPropertyValue>* aEntry );
+
+    /**
+     * @since 5.0
+     */
+    IMPORT_C void RegisterWidgetL( const TDesC& aMainHTML,
+                                   const TDesC& aBundleDisplayName,
+                                   const TDesC& aIconPath,
+                                   const TDesC& aDriveName,
+                                   const TUid& aUid );
+
+    /**
+     * @since 5.0
+     */
+    IMPORT_C void DeregisterWidgetL( const TUid& aUid );
+
+
+private:
+    /**
+     * C++ default constructor.
+     * @param aRequestStatus - Status of the request.
+     */
+    CWidgetInstaller();
+
+    /**
+     * 2nd phase constructor.
+     */
+    void ConstructL();
+
+    /**
+     * 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( TDesC& aRestoreDir );
+
+    void ProcessRestoreDirL( TDesC& aRestoreDir );
+
+    /**
+     * Set drive to C: to install/update the widget
+     * @return true if no error, Leaves if drive space is not sufficient
+     * @since 3.2
+     */
+    TBool SetDriveAndCheckSpaceL();
+
+    /**
+     * update basepath of widget
+     * @since 3.2
+     */
+    void UpdateWidgetBasePathL( TDriveUnit& aDrive );
+
+    /**
+     * When overwriting an installed widget, backup so can restore on error
+     * @since 3.2
+     */
+    void BackupL();
+
+    /**
+     * When overwriting an installed widget, restore on error
+     * @since 3.2
+     */
+    void RestoreL();
+
+    TInt DriveInfo( TInt aDrive, TInt64& aDiskSpace );
+
+    /**
+     * Return the name of file/dir found given path of dir to search in and search critiria.
+     * @Since 3.2
+
+     * @param aDir: in param, bundle ID, e.g. com.yahoo.local.widget.traffic
+     * @param aFoundName: out param,
+     */
+    TInt SearchByExtL( const TDesC& aDir, TUint aSortKey, const TDesC& aExt, TFileName& aFoundName );
+
+    TInt GetDirSizeL( const TDesC& aDir );
+    
+    /**
+     * Return the name of dir which contains info.plist file.
+     * 
+
+     * @param aDir: in param, bundle ID, e.g. com.yahoo.local.widget.traffic
+     * @param aFoundName: out param,
+     */
+    TInt SearchWidgetRootL( const TDesC& aDir, TFileName& aFoundName );
+
+    /**
+    * ConvertIconL
+    * Specific to WidgetPreInstaller
+    * converts Icon.png to mbm
+    * @Since 5.0
+    */
+    void ConvertIconL( TUid& aUid, const TDesC& aIconPath );
+
+
+public: // From MConverterController
+    /**
+     * Used for notify icon convertion complete
+     * @since 5.0
+     */
+    void NotifyCompletionL( TInt aErr ) ;
+
+private: // Data
+
+    TBool iOverwriting;
+
+    CFileMan* iFileMgr; // owned
+    RFs iRfs; // owned
+
+    RWidgetRegistryClientSession iRegistry;
+    TBool iServerConnected; // to Widget Registry server
+
+    CWidgetConfigHandler* iWidgetConfigHandler; // owned
+    CWidgetRegistrationManager* iAppManager; // owned
+
+    TFileName iOriginalDir; // for overwrite backup/restore
+    TFileName iBackupDir; // for overwrite backup/restore
+
+    TFileName iBundleRootName; // e.g. yahooTraffic.wdgt
+
+    // these values mainly come from parsing bundle metadata file
+    // (info.plist) and are passed to WidgetRegistry for registration.
+    RPointerArray<CWidgetPropertyValue> iPropertyValues;
+
+#ifdef _DEBUG
+    RFileLogger             iFileLogger;
+    TBool                   iCanLog;
+#endif
+    };
+
+#endif      // WIDGETINSTALLER_H
+
+// End of File