mulwidgets/alfscrollbarwidget/inc/ialfscrollbarbaseelementinternal.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:23:18 +0100
branchRCL_3
changeset 20 0e9bb658ef58
parent 0 e83bab7cf002
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2007 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:  interface for the scrollbar base element internal functions.
*
*/

#ifndef I_ALFSCROLLBARBASEELEMENTINTERNAL_H
#define I_ALFSCROLLBARBASEELEMENTINTERNAL_H

//Widget Model include
#include <alf/ialfinterfacebase.h>

//Toolkit include
#include <alf/alfevent.h>

namespace Alf
    {
 
/**
 * @namespace alfscrollbarbaseelementinternal
 *
 * ident specifies the unique identifier for the scrollbar base-element 
 * internal interface.
 */
namespace alfscrollbarbaseelementinternal
    {
    static const IfId ident =
        {
        0,"scrollbarbaseelementinternal" 
        };
    }

/**
 * An internal interface to be used by custom scrollbar base element writer.
 *
 * An interface which should be implemented by all the base elements of 
 * scrollbar (e.g. AlfScrollBarDefaltBaseElement, AlfScrollBarArrowBAseElement,
 * AlfScrollBarDefaltLctBaseElement). The interface is exported for the 
 * developers who wants to create their custom scrollbar base element.
 * The functions of this interface are not supposed to be called by scrollbar
 * widget users directly. These functions are called by different part of 
 * scrollbar widget (e.g. scrollbar control, long tap pointer event timer).
 * 
 */
class IAlfScrollBarBaseElementInternal : public IAlfInterfaceBase 
    {

public:

    /**
     * Getter for the type identifier of this interface.
     * Usage:
     * @code
     * IAlfElement* element;
     * IAlfScrollBarBaseElementInternal* elementInternal = 
     * static_cast<IAlfScrollBarBaseElementInternal*> ( 
     * element->makeInterface (IAlfScrollBarBaseElementInternal::type() ) );
     * @endcode
     * @see \link IAlfInterfaceBase \endlink for
     * \link IAlfInterfaceBase::makeInterface \endlink
     * The above code provides all the interfaces of ScrollBar base element.
     * @since S60 ?S60_version
     * @return Identifier of this interface.
     */
    static inline const IfId& type()
        {
        return alfscrollbarbaseelementinternal :: ident;
        }

    /** 
     * baseLayoutSizeChanged. 
     * This function is called by scrollbar control to notify scrollbar base
     * element the base layout size has been changed ( and so the base element
     * should relayout its internal visualization).
     * 
     * @since S60 ?S60_version
     */
    virtual void baseLayoutSizeChanged()=0;
    
    /**
     * Send the corresponding Custom events to the scrollbar eventhandlers 
     * according to the visual clicked.
     * 
     */
    virtual bool processPointerEvent(TAlfEvent * aPntrEvent)=0;
    
    /**
     * creates the visualization  
     * 
     */
    virtual void createVisualization() = 0;
    
    /**
     * Destroys the visualization 
     * 
     */
    virtual void updateVisualization() = 0;
    
    /**
     * updates the visualization 
     * 
     */
    virtual void destroyVisualization() = 0;
    
    /**
     * Returns pointer to AlfScrollBarModel
     */
    virtual void initializeScrollModel() = 0;
    
    /**
     *  Handles Longtap event
     */
    virtual AlfEventStatus handleLongTapEvent() = 0;
    
    /** 
     *virtual Destructor.
     *
     */
    virtual ~IAlfScrollBarBaseElementInternal() {}

    }; // end of class IAlfScrollBarBaseElementInternal
  
    } // end of namespace Alf

#endif // I_ALFSCROLLBARBASEELEMENTINTERNAL_H
//End Of File