ncdengine/inc/ncdnodeinstall.h
changeset 0 ba25891c3a9e
child 25 7333d7932ef7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/inc/ncdnodeinstall.h	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,193 @@
+/*
+* 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 "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:   Contains MNcdNodeInstall interface
+*
+*/
+
+
+#ifndef M_NCD_NODE_INSTALL_H
+#define M_NCD_NODE_INSTALL_H
+
+#include <f32file.h>
+#include <e32cmn.h>
+
+#include "catalogsbase.h"
+#include "catalogsarray.h"
+#include "ncdinterfaceids.h"
+
+
+class MNcdInstallOperation;
+class MNcdInstallOperationObserver;
+class MDesCArray;
+class MNcdInstalledContent;
+
+// Forward declaration for SwiUI::TInstallOptions
+// SwiUI namespace contains install options 
+// that are used for the silent install.
+// #include <SWInstDefs.h> 
+// is required when SwiUI::TInstallOptions is created 
+// in the implementation code.
+namespace SwiUI
+    {
+    class TInstallOptions;    
+    }
+
+
+/**
+ *  Provides functions that can be used to install the node object.
+ *  Before installing, the data should have been downloaded using
+ *  download interface.
+ *
+ *  @see MNcdNodeDownload
+ *  @see MNcdNodeUriContent
+ *
+ *  
+ */
+class MNcdNodeInstall : public virtual MCatalogsBase
+    {
+public:
+
+    /**
+     * Unique identifier for the interface, required for all MCatalogsBase interfaces.
+     *
+     * 
+     */
+    enum { KInterfaceUid = ENcdNodeInstallUid };
+
+
+    /**
+     * Starts the installing operation of the node object.
+     * 
+     * @note The reference count of the operation object is increased by one. So, Release()
+     * function of the operation should be called when operation is not needed anymore.
+     * 
+     * 
+     * @param aObserver Observer for the operation.
+     * @return The operation that handles the installation. 
+     * This operation can be used to check the progressing of the installation. Counted,
+     * Release() must be called after use.
+     * @exception Leave System wide error code.
+     *  Leaves with KNcdErrorParallelOperationNotAllowed if a parallel client is running
+     *  an operation for the same metadata. See MNcdOperation for full explanation.
+     */
+    virtual MNcdInstallOperation* InstallL( MNcdInstallOperationObserver& aObserver ) = 0;
+
+
+    /**
+     * Starts the silent installing operation of the node object.
+     * Because installation is silent, normal installation query dialogs are not shown.
+     * But, the caller of this function may use aInstallOptions parameter to define that 
+     * text files that are included in SIS packages will be shown in query dialogs during installation.
+     * This may be required, for example, to show disclaimers that are included in the SIS packages
+     * as text files.
+     * 
+     * @note The reference count of the operation object is increased by one. So, Release()
+     * function of the operation should be called when operation is not needed anymore.
+     * 
+     * @note Requires TrustedUI capabilities
+     * @note Only SIS packages and Java archives are installed silently, other content
+     * is installed exactly like with InstallL
+     * 
+     * @param aObserver Observer for the operation.
+     * @param aInstallOptions These install options are used by the silent install.
+     * @return The operation that handles the installation. 
+     * This operation can be used to check the progressing of the installation. Counted,
+     * Release() must be called after use.
+     * @exception Leave System wide error code.
+     * Leaves with KErrPermissionDenied if UI does not have TrustedUI capability.
+     * Leaves with KNcdErrorParallelOperationNotAllowed if a parallel client is running
+     *  an operation for the same metadata. See MNcdOperation for full explanation.
+     */
+    virtual MNcdInstallOperation* SilentInstallL( MNcdInstallOperationObserver& aObserver,
+                                                  const SwiUI::TInstallOptions& aInstallOptions ) = 0;
+
+
+    /**
+     * Checks if the item content has already been installed and is currently present in the
+     * device.
+     *
+     * @note This returns EFalse if some of the content is missing, eg. if one of several
+     * image files has been deleted.
+     *
+     * 
+     * @return ETrue if the item content has been installed, EFalse otherwise.
+     * @exception Leave System wide error code.     
+     */
+    virtual TBool IsInstalledL() const = 0;
+
+    
+    /**
+     * Checks if the item is allowed to be launched. 
+     *
+     * @note This returns ETrue if at least one of installed themes/applications/files 
+     * is launchable
+     *
+     * 
+     * @return ETrue if the item can be launched.
+     * @note This method does not check if the item has been installed or if it's
+     * currently present.
+     */
+    virtual TBool IsLaunchable() const = 0;
+    
+    
+    
+    /**
+     * Returns an array of content installed from the item
+     * 
+     * @return Array of installed content
+     * @exception Leave System wide error code.     
+     */
+    virtual RCatalogsArray<MNcdInstalledContent> InstalledContentL() = 0;
+
+
+    /**
+     * This function may be used to update install information of the node if the 
+     * node content has been externally installed.
+     * 
+     * @note The use of this function should be avoided in normal install cases.
+     * In normal install cases, all the necessary actions are done automatically. 
+     * This function should only be used if node content is installed externally 
+     * and the content can not be installed by using other functions provided in 
+     * this interface. This function is meant only for the application content.
+     * The content has to be downloaded by using MNcdNodeDownload interface before
+     * using this function.
+     *
+     * @note When this function is called with KErrNone parameter, the node content 
+     * is assumed to be succesfully installed. Therefore, possible content installation 
+     * files will be deleted as in normal succesfull install cases. The purchase history 
+     * details and installation report information are updated to correspond the given 
+     * error code information.
+     *
+     * @param aErrorCode The error code describes the success of the install.
+     * If KErrNone is given, then the installation is assumed to be a success. 
+     * If some other error code is given, then the installation is assumed to fail in some way.
+     * The details related to the installations are updated according to the error code.
+     * @exception Leave System wide error code.     
+     */
+    virtual void SetApplicationInstalledL( TInt aErrorCode ) = 0;
+
+
+protected:
+
+    /**
+     * Destructor.
+     * 
+     * @see MCatalogsBase::~MCatalogsBase()
+     */
+    virtual ~MNcdNodeInstall() {}
+
+    };
+
+
+#endif // M_NCD_NODE_INSTALL_H