mulwidgets/alfscrollbarwidget/inc/alfscrollbarwidget.h
changeset 0 e83bab7cf002
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mulwidgets/alfscrollbarwidget/inc/alfscrollbarwidget.h	Thu Dec 17 08:56:02 2009 +0200
@@ -0,0 +1,226 @@
+/*
+* 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:  Widget interface with utilities for scrollbar widget.
+ *
+*/
+
+
+
+#ifndef ALF_SCROLLBARWIDGET_H
+#define ALF_SCROLLBARWIDGET_H
+
+
+// WidgetModel Includes
+#include <alf/ialfwidgeteventhandler.h>
+#include "alf/alfwidget.h"
+#include <alf/alfexceptions.h>
+
+// Widget Includes
+#include <alf/ialfscrollbarwidget.h>
+#include <alf/ialfscrollbarmodel.h>
+
+
+// Forward Declarations
+class CAlfEnv;
+
+// From namespace Alf
+namespace Alf
+    {
+	// Forward Declarations
+	class CAlfWidgetControl;
+	class IAlfModel;
+    }
+
+//From name space duiuimodel
+namespace duiuimodel
+    {
+class DuiNode;
+    }
+
+namespace Alf
+    {
+
+    /**
+     * A basic scrollbar widget implementation.
+     * Contains methods for creating the default
+     * building blocks for the scrollbar widget.
+     */
+class AlfScrollBarWidget : public IAlfScrollBarWidget
+    {
+public:
+
+    /**
+     * Creator Method.
+     * 
+     * @param aEnv The environment for the widget.
+     * @param aContainer The container widget where this widget is contained.
+     * @param aWidgetId The name of the widget. Not Owned.
+     * @param aFilePath Path to XML file describing the presentation 
+     *                  of the widget. Not Owned.
+     * @param aCustomData Custom data. Not Owned.
+     * @param aNode Node. Not Owned.
+     * @return AlfScrollBarWidget , or NULL if it does not create 
+     */
+    static AlfScrollBarWidget* create(CAlfEnv& aEnv, 
+                                    IAlfContainerWidget& aContainer, 
+                                    const char* aWidgetId, 
+                                    DuiNode *aNode=NULL, 
+                                    const char* aFilePath=NULL, 
+                                    AlfCustomInitDataBase* aCustomData=NULL);
+
+    /**
+     * Virtual Destructor.
+     */ 
+    virtual ~AlfScrollBarWidget();
+
+    // From IAlfInterfaceBase
+    /**
+     * Getter for interfaces provided by the scrollbar widget class.
+     *
+     * @since S60 ?S60_version
+     * @param aType A descriptor to identify the type of the queried interface.
+     * @return The queried interface, or NULL if the interface is not
+     *         supported or available.
+     */
+    IAlfInterfaceBase* makeInterface(const IfId& aType);
+
+    // From IAlfWidget
+
+    /**
+     * Return the control
+     */
+    CAlfWidgetControl* control() const;
+    
+    /**
+     * getter for the parent container. The ownership is not passed.
+     * @param none
+     * @return the parent container or NULL if the widget is the root-widget.
+     */
+    virtual IAlfContainerWidget* parent() const;
+
+    /**
+     * Setter for the control. The control is owned by the Alfred environment.
+     *
+     * @since S60 ?S60_version
+     * @param aControl The control for this widget.
+     * @param aDeletePreviousControl delete previous control.TRUE by default.
+     * @return void.
+     */
+    void setControl(CAlfWidgetControl* aControl, 
+                                    bool aDeletePreviousControl = true);
+
+    /**
+     * Gets the model.
+     */
+    IAlfModel* model();
+
+    /** 
+     * Sets the model.
+     
+     * @return void.
+     */
+    void setModel(IAlfModel* aModel, bool /*param*/);
+
+    /** 
+     * Return the widget name
+     */
+    const char* widgetName() const;
+
+    /**
+     * sets the focus to the child.
+     
+     * @return void.
+     */
+    void setChildFocus(bool /*aFocus*/);
+
+    
+    
+    /** 
+     * Sets the presentation for the widget using presentation XML file.
+     
+     * Destroys any existing presentation.
+     * @param aFilePath Path to XML file describing the presentation 
+     *                  of the widget. Not Owned.
+     * @exception AlfWidgetException if no visualization node available 
+     *                               in Presentation XML or if no control
+     *                               is associated with the widget.
+     * @exception bad_alloc 
+     * @since S60 ?S60_version
+     * @return void.
+     */
+    virtual void setPresentation(const char* aFilePath);
+
+	/**
+     * Sets whether or not tactile feedback is enabled.
+     *
+     * @param aFlag Whether or not tactile is enabled.
+     */
+    void enableTactile(bool aFlag);
+
+	/**
+     * Returns the state of tactile feedback whether it is enabled/disabled.
+     *
+     */
+    bool IsTactileEnabled();
+    
+protected:
+
+    /**
+     * C++ constructor.
+     * 
+     * @param aEnv The environment for the widget.
+     * @param aContainer The container widget where this widget is contained.
+     * @param aWidgetId The name of the widget. Not Owned.
+     * @param aFilePath Path to XML file describing the presentation 
+     *                  of the widget. Not Owned.
+     * @param aCustomData Custom data.
+     * @param aNode Node. Not Owned.
+     */
+    AlfScrollBarWidget(CAlfEnv& aEnv, 
+                        IAlfContainerWidget& aContainer, 
+                        const char* aWidgetId, 
+                        DuiNode *aNode=NULL, 
+                        const char *aFilePath=NULL, 
+                        AlfCustomInitDataBase* aCustomData=NULL);
+
+    /**
+     * Methods to create different default elements and control of scroll bar.
+     *
+     * @param aEnv The environment for the widget.
+     * @return void.
+     */
+    void constructDefault(CAlfEnv& aEnv);
+    
+    /**
+     * Creates the default control.
+     *
+     * @param aEnv The environment for the widget.
+     * @return The Control.
+     */
+    CAlfWidgetControl *constructDefaultControl(CAlfEnv& aEnv);
+
+private:
+
+    /**
+     * Base widget. Own.
+     */
+    auto_ptr<AlfWidget> mWidget;
+    
+    IAlfScrollBarModel * mScrollModel; 
+    CAlfWidgetControl * mScrollControl;
+    }; // class AlfScrollBarWidget
+    
+    } // namespace Alf
+
+#endif // C_ALFSCROLLBARWIDGET_H