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