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