/*
* Copyright (c) 2009 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: ?Description
*
*/
#ifndef IA_UPDATE_NODE_FACTORY_H
#define IA_UPDATE_NODE_FACTORY_H
#include <e32base.h>
class MNcdNode;
class CIAUpdateController;
class CIAUpdateNode;
class CIAUpdateFwNode;
/**
* IAUpdateNodeFactory is used to create the correct iaupdate nodes
* from the NCD nodes.
*
*/
namespace IAUpdateNodeFactory
{
/**
* @note Ownership of aNode is transferred. And if this function leaves,
* then it automatically deletes the aNode.
*
* @param aNode NCD Engine node that is used for the iaupdate node.
* Ownership is transferred. So, do not release the node after
* giving it here. This class object supposes that the reference
* count of the given node is at least one when it is given.
* @param aController Update controller that is required by the iaupdate node.
* @return CIAUpdateNode* IAUpdate node that is created.
* Ownership is transferred.
* @exception Leaves with KErrArgument if aNode is NULL. Else leaves with
* system wide error code.
**/
CIAUpdateNode* CreateNodeLC( MNcdNode* aNode,
CIAUpdateController& aController );
/**
* @see IAUpdateNodeFactory::CreateNodeLC
**/
CIAUpdateNode* CreateNodeL( MNcdNode* aNode,
CIAUpdateController& aController );
/**
* @param aUid Uid of the node. This UID is checked agains the known UIDs that
* require self update.
* @return TBool ETrue if the node corresponding the given UID requires
* self update. EFalse if the self update is not required.
**/
TBool IsSelfUpdate( const TUid& aUid );
/**
* @param aUid Uid of the node. This UID is checked agains the IAD UIDs.
* @return TBool ETrue if the aUid describes IAD. Else EFalse.
**/
TBool IsIad( const TUid& aUid );
/**
* @param aUid Uid of the node. This UID is checked agains the NCD UIDs.
* @return TBool ETrue if the aUid describes NCD. Else EFalse.
**/
TBool IsNcd( const TUid& aUid );
/**
* @param aUid Uid of the node. This UID is checked agains the IAD self
* updater UIDs.
* @return TBool ETrue if the aUid describes IAD self updater. Else EFalse.
**/
TBool IsUpdater( const TUid& aUid );
/**
* @note Ownership of aNode is transferred. And if this function leaves,
* then it automatically deletes the aNode.
*
* @param aNode NCD Engine node that is used for the iaupdate firmware node.
* Ownership is transferred. So, do not release the node after
* giving it here. This class object supposes that the reference
* count of the given node is at least one when it is given.
* @param aController Update controller that is required by the iaupdate node.
* @return CIAUpdateNode* IAUpdate node that is created.
* Ownership is transferred.
* @exception Leaves with KErrArgument if aNode is NULL. Else leaves with
* system wide error code.
**/
CIAUpdateFwNode* CreateFwNodeLC( MNcdNode* aNode,
CIAUpdateController& aController );
/**
* @see IAUpdateNodeFactory::CreateFwNodeLC
**/
CIAUpdateFwNode* CreateFwNodeL( MNcdNode* aNode,
CIAUpdateController& aController );
/**
* @param aNode Node whose information is used to check if
* the node describes a firmware update.
* @return TBool ETrue if the given node is for firmware updates.
* @exception Leaves with system wide error code.
*/
TBool IsFwUpdateL( MNcdNode& aNode );
/**
* @param aMime MIME type is used to check if it describes
* a firmware update.
* @return TBool ETrue if the given MIME is for firmware updates.
*/
TBool IsFwUpdate( const TDesC& aMime );
/**
* @param aMime MIME type is used to check if it describes
* service pack.
* @return TBool ETrue if the given MIME is for service pack.
*/
TBool IsServicePack( const TDesC& aMime );
/**
* @param aMime MIME type is used to check if it describes
* a hidden item.
* @return TBool ETrue if the given MIME is for a hidden item.
* Else, EFalse.
*/
TBool IsHidden( const TDesC& aMime );
}
#endif // IA_UPDATE_NODE_FACTORY_H