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