/** 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 MNcdNodeSkin interface**/#ifndef M_NCD_NODE_SKIN_H#define M_NCD_NODE_SKIN_H#include <e32cmn.h>#include <f32file.h>#include "catalogsbase.h"#include "ncdinterfaceids.h"class MNcdFileDownloadOperation;class MNcdFileDownloadOperationObserver;/** * This interface is provided for the node if the node contains a skin. * * */class MNcdNodeSkin : public virtual MCatalogsBase {public: /** * Unique identifier for the interface, required for all MCatalogsBase interfaces. * * */ enum { KInterfaceUid = ENcdNodeSkinUid }; /** * Gives the skin id. This id can be used by UI * to identify icons that have already been retrieved by LoadSkinL. * * * @return Id of the skin. If the protocol has not defined * any value, an empty string is returned. */ virtual const TDesC& SkinId() const = 0; /** * Returns the time stamp that informs when the skin was downloaded. * The client may use this value to check if a new skin is wanted. * * * @return Time when the skin vas downloaded. TTime is set to * zero if the time stamp was not given by the protocol. */ virtual TTime SkinTimeStamp() const = 0; /** * Downloads the skin file. The skin is not handled by the engine, the file * should be handled by the user of this interface as it sees fit. * * @note The reference count of the operation object is increased by one. * So, Release function of the operation should be called when the operation * is not needed anymore. * * @note The file will be moved to the target location after it has been * fully downloaded. Any existing file with the same name will be overwritten. * * * @param aTargetFileName Full path and name for the target file. * @param aObserver Observer for the operation. * @return Operation which can be monitored to check the * processing of the skin loading. Counted, Release() must be called after use. * @exception Leave System wide error codes. * KNcdErrorParallelOperationNotAllowed if a parallel client is running * an operation for the same metadata. See MNcdOperation for full explanation. */ virtual MNcdFileDownloadOperation* LoadSkinL( const TDesC& aTargetFileName, MNcdFileDownloadOperationObserver& aObserver ) = 0;protected: /** * Destructor. * * @see MCatalogsBase::~MCatalogsBase() */ virtual ~MNcdNodeSkin() {} };#endif // M_NCD_NODE_SKIN_H