--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/inc/ncdnode.h Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,218 @@
+/*
+* 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 MNcdNode interface
+*
+*/
+
+
+#ifndef M_NCD_NODE_H
+#define M_NCD_NODE_H
+
+
+#include <e32cmn.h>
+#include <e32std.h>
+
+#include "catalogsbase.h"
+#include "catalogsarray.h"
+#include "ncdinterfaceids.h"
+
+
+class MNcdNodeContainer;
+class MNcdLoadNodeOperation;
+class MNcdLoadNodeOperationObserver;
+class MNcdOperation;
+
+
+/**
+ * Node contains the basic information about the content.
+ * The interface also provides a load function that must be used to
+ * initialize the node, before accessing other information.
+ *
+ * When the UI gets the node, the node may not contain any information
+ * except from the node state. The state may be checked by calling
+ * MNcdNode::State(). MNcdNode::LoadL() can then be called to load
+ * the content for the node, if the state is uninitialized or expired.
+ *
+ * @note The actual content information, such as name, description etc. are
+ * available through the MNcdNodeMetadata interface that can be queried from
+ * node objects. There are various other additional node interfaces as well
+ * that all offer different functionality and information about the node. The
+ * interfaces are not available at all times, they have different criteria for
+ * becoming available. For example, the MNcdNodeMetadata interface becomes
+ * available for a node when its metadata is loaded, so if it is not available
+ * at first, it can be made available by calling the node's MNcdNode::LoadL()
+ * method.
+ *
+ *
+ * @see MNcdNodeMetadata
+ * @see MNcdNodeContainer
+ * @see MNcdNodeContent
+ * @see MNcdNodeDependency
+ * @see MNcdNodeDownload
+ * @see MNcdNodeIcon
+ * @see MNcdNodeInstall
+ * @see MNcdNodePreview
+ * @see MNcdNodePurchase
+ * @see MNcdNodeScreenshot
+ * @see MNcdNodeSearch
+ * @see MNcdNodeSkin
+ * @see MNcdNodeSubscribe
+ * @see MNcdNodeUpgrade
+ * @see MNcdNodeUriContent
+ * @see MNcdNodeUserData
+ */
+class MNcdNode : public virtual MCatalogsBase
+ {
+
+public:
+
+ /**
+ * Unique identifier for the interface, required for all MCatalogsBase interfaces.
+ *
+ *
+ */
+ enum { KInterfaceUid = ENcdNodeUid };
+
+
+ /**
+ * TNcdNode::TState gives information in what state the node is at the moment.
+ * This information can be used to check if the node information should be
+ * loaded over network or from local cache.
+ *
+ *
+ */
+ enum TState
+ {
+ /**
+ * Node is not initialized and the data should
+ * be loaded from either local cache, or over network.
+ */
+ EStateNotInitialized,
+
+ /** Node data is up to date. */
+ EStateInitialized,
+
+ /** Node data is expired and should be reloaded over network. */
+ EStateExpired
+ };
+
+
+ /**
+ * Gives information about the state of the node. This information can be used to
+ * check whether the item data has been loaded or if the data is expired.
+ *
+ *
+ * @return The state of the node.
+ */
+ virtual TState State() const = 0;
+
+
+ /**
+ * Gets the node id.
+ *
+ *
+ * @return Id of the node.
+ */
+ virtual const TDesC& Id() const = 0;
+
+
+ /**
+ * All nodes and their content are part of a namespace. Within the
+ * namespace, node identifiers are unique. This function returns the namespace
+ * of this node and its contents.
+ *
+ *
+ * @return The namespace identifier. If the protocol has not defined
+ * any value, an empty descriptor is returned.
+ */
+ virtual const TDesC& Namespace() const = 0;
+
+
+ /**
+ * Gets the name of the catalog source for the node.
+ *
+ *
+ * @return Name of the catalog source where the node is loaded from. An
+ * empty string is returned if the source name is not defined.
+ */
+ virtual const TDesC& CatalogSourceName() const = 0;
+
+
+ /**
+ * Retrieves the reference to the parent of this node.
+ *
+ *
+ * @return The parent of this node. NULL if the node
+ * has no parent. Counted, Release() must be called
+ * after use.
+ * @exception Leave System wide error code,
+ * KErrNotFound if the parent node is not loaded.
+ */
+ virtual MNcdNodeContainer* ParentL() const = 0;
+
+
+ /**
+ * Loads node information from the content provider.
+ *
+ * @note Should be called when a folder node needs to be refreshed, clears all
+ * child nodes for folders!
+ *
+ *
+ * @param aObserver Observer for the operation.
+ * @return Pointer to an operation object that can be
+ * used to check the loading progress. Counted, Release() must be called
+ * after use.
+ * @exception Leave System wide error code.
+ * KNcdErrorParallelOperationNotAllowed if a parallel client is running
+ * an operation for the same metadata. See MNcdOperation for full explanation.
+ */
+ virtual MNcdLoadNodeOperation* LoadL( MNcdLoadNodeOperationObserver& aObserver ) = 0;
+
+
+ /**
+ * Returns a list of currently active operations of this node for progress
+ * monitoring and operation management.
+ *
+ * @note Operations may also be other than just MNcdLoadNodeOperations.
+ *
+ * @return List of currently active operations for the node. Counted,
+ * each pointer must be released after use e.g. with a call to the array's
+ * RCatalogsArray::ResetAndDestroy().
+ * @exception Leave System wide error code
+ */
+ virtual RCatalogsArray< MNcdOperation > OperationsL() const = 0;
+
+
+ /**
+ * Adds the node to favorite nodes. If the node is already
+ * a favorite node, does nothing.
+ *
+ * @exception Leave System wide error code
+ */
+ virtual void AddToFavoritesL() = 0;
+
+
+protected:
+
+ /**
+ * Destructor.
+ *
+ * @see MCatalogsBase::~MCatalogsBase
+ */
+ virtual ~MNcdNode() {}
+
+ };
+
+
+#endif // M_NCD_NODE_H