diff -r 4526337fb576 -r 3eca7e70b1b8 mmuifw_plat/alf_widgetmodel_api/inc/alf/ialflayoutmanager.h --- a/mmuifw_plat/alf_widgetmodel_api/inc/alf/ialflayoutmanager.h Tue Feb 02 00:28:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,185 +0,0 @@ -/* -* 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 layout managers -* -*/ - - -#ifndef I_ALFLAYOUTMANAGER -#define I_ALFLAYOUTMANAGER - -#include -#include - -class CAlfLayout; -class CAlfControl; - -namespace duiuimodel - { -class DuiNode; - } -using namespace duiuimodel; - -namespace Alf - { - -class CAlfWidgetControl; -class AlfCustomInitDataBase; - -namespace ialflayoutmanager - { - static const IfId Ident = - { - 0, "ialflayoutmanager" - }; - } - -/** - * The interface for layout managers - * - * Layout manager handles the layouting of child widgets in the container widget. - * It uses IAlfLayoutPreferences-interface (@see IAlfLayoutPreferences) - * of child widgets as a guide for laying out the widgets. The layoutmanager - * is set to the IAlfHostApi- interface (@see IAlfHostApi::setBaseLayout) - * createLayout-method should be the first call after creating the layoutmanager. - * - * Layout manager may also provide information about the layout preferences of its - * children. If this is supported the layout manager will combine the layout preferences - * of its children taking into consideration the technique used to lay out the children - * using the layout manager. This will provide information about the whole display area - * occupied by the layout manager. For instance vertical flow layout manager will provide - * preferred size area of its children by summing their heights and providing the maximum - * width among the children. - * - * @code - * // Create layout manager interface. - * IAlfLayoutManager* layoutManager = IAlfInterfaceBase::makeInterface(control); - * - * // See if layout preferences is supported in the given layout manager. - * IAlfLayoutPreferences* layoutPreferences = IAlfInterfaceBase::makeInterface(layoutManager); - * - * if(layoutPreferences != 0) - * { - * TAlfXYMetric preferredSize; - * // This will report the preferred size of the layout by combining together preferred sizes of its children. - * bool result = layoutPreferences->getPreferredSize(preferredSize); - * } - * @endcode - * - * @lib alfwidgetmodel.lib - * @since S60 ?S60_version - * @status Draft - */ -class IAlfLayoutManager : public IAlfInterfaceBase - { -public: - - static inline const IfId& type() - { - return ialflayoutmanager::Ident; - } - - virtual inline ~IAlfLayoutManager() {} - - /** - * Creates the layout used by this layoutmanager. - * - * @param aOwner owner-control of the the created layout. - * @param aParentLayout parent for the created layout - * @param aLayoutIndex index, where created visual should be placed in the parent layout. - * @throw AlfVisualException(EInvalidArrayIndex), if aLayoutIndex is out of bounds - * AlfVisualException(ECanNotCreateVisual), if the layout creation failed. - */ - virtual void createLayout(CAlfWidgetControl& aOwner, - CAlfLayout* aParentLayout, int aLayoutIndex) = 0; - - /** - * Returns the layout used by this layoutmanager. - * - * @return layout used by this layoutmanager. - * @throw AlfVisualException(EInvalidVisual), if layout is not created. - */ - virtual CAlfLayout& getLayout()const = 0; - - /** - * Notifies the layout manager, that the child control's layout - * must be updated - * - * @param aControl control, which size has changed. - * @throw AlfVisualException(EInvalidVisual), if layout is not created. - */ - virtual void updateChildLayout(CAlfWidgetControl* aControl) = 0; - - /** - * Notifies the layout manager, that all the child control's layouts - * must be updated. - * @throw AlfVisualException(EInvalidVisual), if layout is not created. - */ - virtual void updateChildrenLayout() = 0; - - /** - * Notifies the layout manager, that the control's has been - * removed from the layout. - * - * @param aControl control, which has been removed from the layout. - * @throw AlfVisualException(EInvalidVisual), if layout is not created. - */ - virtual void childRemoved(CAlfWidgetControl* aControl) = 0; - -public: -// from base class IAlfInterfaceBase - - /** - * Interface getter. - * @see IAlfInterfaceBase::MakeInterface - * - * @since S60 ?S60_version - * @param aType The type id of the queried interface. - * @return The queried interface, or NULL if the interface is not - * supported or available. - */ - virtual IAlfInterfaceBase* makeInterface( const IfId& aType ) = 0; - }; - -/** - * Placeholder for information required to instantiate an layoutmanager - * via the widget factory mechanism. - * A pointer to this structure is casted to a void pointer and sent to the - * factory plugin. - * @lib alfwidgetmodel.lib - * @since S60 ?S60_version - */ -struct AlfLayoutManagerInitData - { - /** - * Event handler instance ID.This uniquely identifies every event handler instance. - */ - char* mLayoutManagerId; - - /** - * Pointer to node in declaration containing information for the widget. - */ - DuiNode* mNode; - - /** - * Pointer to custom data passed via factory mechanism - * Not Owned. - */ - AlfCustomInitDataBase* mCustomData; - }; - - - } // namespace Alf - -#endif // I_ALFLAYOUTMANAGER