idlehomescreen/inc/xncomponentfactory.h
changeset 0 f72a12da539e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/inc/xncomponentfactory.h	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,126 @@
+/*
+* Copyright (c) 2002-2004 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:
+* ECom Component factory interface
+*
+*/
+
+#ifndef XNCOMPONENTFACTORY_H
+#define XNCOMPONENTFACTORY_H
+
+// System includes
+#include <e32base.h>
+
+// Forward declarations
+class CXnComponent;
+class CXnControlAdapter;
+class CXnNodePluginIf;
+
+// Class declaration
+/**
+ * Component UI factory interface for creating UI representations of the layout
+ * areas.
+ *
+ * @ingroup group_xnlayoutengine
+ * @lib xnlayoutengine.lib
+ * @since Series 60 3.1
+ */
+class MXnComponentFactory
+    {
+public:
+    // Data types
+
+    /**
+     * Response values from the component factory. Indicate the action
+     * taken or desired from the factory on the requested area.
+     */
+    enum TXnComponentFactoryResponse
+        {
+        /** Successful construction of the component */
+        EXnFactoryResponseComponentConstructed,
+        /** Successful disposal of the component */
+        EXnFactoryResponseComponentDisposed,
+        /** The factory does not know how to create/dispose given component,
+         * reponsibility is passed onto the next factory in the chain */
+        EXnFactoryResponseComponentNotSupported,
+        /** The factory does not know how to create the given component
+         * and does not wish the given area to be passed on to any other factory
+         * for creation - often the area is already handled by a parent area */
+        EXnFactoryResponseDenyComponentConstruction
+        };
+
+public:
+
+    IMPORT_C virtual ~MXnComponentFactory();
+
+public:
+    // New functions
+
+    /**
+     * Create a component
+     *
+     * @since Series 60 3.1
+     * @param aNode UI node
+     * @param aTargetComponent Target component
+     * @return Factory response
+     */
+    IMPORT_C TXnComponentFactoryResponse CreateXnComponentL(
+        CXnNodePluginIf& aNode,
+        CXnComponent*& aTargetComponent );
+
+    /**
+     * Check whether a node needs a component node implementation
+     *
+     * @since Series 60 3.1
+     * @param aType Node type
+     * @return ETrue if a component node implementation is required, EFalse
+     *        otherwise
+     */
+    IMPORT_C TBool DoesNodeNeedComponentImplL( const TDesC8& aType );
+
+protected:
+    // New functions
+
+    /**
+     * C++ default constructor. Protected in order to allow for derivation.
+     */
+    IMPORT_C MXnComponentFactory();
+
+private:
+    /**
+     * Create a component
+     *
+     * @since Series 60 3.1
+     * @param aNode UI node
+     * @param aTargetComponent Target component
+     * @return Factory response
+     */
+    IMPORT_C virtual TXnComponentFactoryResponse MakeXnComponentL(
+        CXnNodePluginIf& aNode,
+        CXnComponent*& aTargetComponent ) = 0;
+
+    /**
+     * Create a control adapter
+     *
+     * @since Series 60 3.1
+     * @param aNode UI node
+     * @param aParent Parent control
+     * @return Created control
+     */
+    IMPORT_C virtual CXnControlAdapter* MakeXnControlAdapterL(
+        CXnNodePluginIf& aNode,
+        CXnControlAdapter* aParent = NULL ) = 0;
+    };
+
+#endif