diff -r 4526337fb576 -r 3eca7e70b1b8 mmuifw_plat/alf_widgetmodel_api/inc/alf/ialfgridlayoutpolicy.h --- a/mmuifw_plat/alf_widgetmodel_api/inc/alf/ialfgridlayoutpolicy.h Tue Feb 02 00:28:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,219 +0,0 @@ -/* -* Copyright (c) 2008 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 policy -* -*/ - - -#ifndef I_ALFGRIDLAYOUTMANAGER -#define I_ALFGRIDLAYOUTMANAGER - -#include -#include - -class CAlfLayout; -class CAlfControl; - -namespace Alf - { - -class CAlfWidgetControl; - -namespace ialfgridlayoutpolicy - { - static const IfId Ident = - { - 0, "gridlayoutpolicy" - }; - } - -using Alf::CAlfWidgetControl; - - - -/** - * The interface for grid layout policy - * - * Provides grid specific layout APIs - * - * @code - * // Create layout manager interface. - * IAlfLayoutManager* layoutManager = IAlfInterfaceBase::makeInterface(control); - * - * // See if layout policy is supported in the given layout manager. - * IAlfGridLayoutPolicy* layoutPolicy = IAlfInterfaceBase::makeInterface(layoutManager); - * - * if(layoutPreferences != 0) - * { - * int rows = layoutPolicy->dimensionCount(EAlfGridDimensionRow); - * } - * @endcode - * - * @lib alfwidgetmodel.lib - * @since S60 ?S60_version - * @status Draft - */ -class IAlfGridLayoutPolicy : public IAlfInterfaceBase - { -public: - - static inline const IfId& type() - { - return ialfgridlayoutpolicy::Ident; - } - - virtual inline ~IAlfGridLayoutPolicy() {} - -public: - /* Each dimension corresponds to a different axis for the grid blocks */ - enum gridLayoutDimension - { - EGridDimensionColumn = 0, - EGridDimensionRow - }; - -public: - - /** - * Sets the number and weights of blocks in this grid layout in the direction of the specified - * dimension. Each block's weight will be set to equal the supplied value, the result - * of which is that all blocks will be equally spaced, whatever the units. - * - * @see appendWeight; for more information on how weights are used to calculate layout positions. - * - * @note This API could be useful if then subsequent calls to @c replaceWeight are made to - * change specific values, depending on how many of the values are different. - * @note Calling this with aCount set to 0 will clear all of the existing weights in the direction - * of the specified dimension. - * @note this is the same as using metrics with unit type EAlfUnitWeight. - * - * @param aDim the dimension along which to fill - * @param aCount The number of lines of blocks to fill - * @param aWeight the weights to be used for all blocks - * @throw AlfVisualException - */ - virtual void fillWeights(gridLayoutDimension aDim, int aCount, const TAlfMetric& aWeight) = 0; - - /** - * Add a new line of blocks to this grid layout at the last position in the direction of the - * specified dimension. It will have the supplied weight. Weights can be any metric value, - * hence different units can be used for each block. In particular, EAlfUnitWeight can be used - * to represent weight values in aribtrary proportional units. - * - * In the case of proportional weights, the effect of this will be to cause the other blocks to - * resize according to the new total weight. - * - * @note If non-relative coordinates are specified (e.g., real pixels), the combined blocks might not - * fill the entire layout area. However, weights will always stretch to fill all available space - * after the fixed units have been determined. Therefore, depending on circumstances it may - * be better to use EAlfUnitWeight - * @note For example [2 weights, 1 weight, 2 weights] in a layout of 100 pixels would result - * in [40 pixels, 20 pixels, 40 pixels]. - * @note For example [10 pixels, 1 weight, 15 pixels] in a layout of 100 pixels would result - * in [10 pixels, 75 pixels, 15 pixels]. - * - * @param aDim the dimension to which the weight corresponds - * @param aWeight the weight to be used for the block in the specified dimension, - * replacing any previously existing weight for that block - * @throw AlfVisualException - */ - virtual void appendWeight(gridLayoutDimension aDim, const TAlfMetric& aWeight) = 0; - - /** - * Add a new line of blocks to this grid layout at the specified position in the direciton of - * the specified dimension. It will have the supplied weight. In the case of proportional - * weights, the effect of this will be to cause the other blocks to resize according to the new - * total weight. It will also mean that many child visuals will now occupy different blocks within - * the grid according to how the blocks wrap. - * - * @note will leave if the specified position is greater than the number of objects currently in the array, - * so check first by calling @c preferredDimensionCount - * @see appendWeight for more information on how weights are used to calculate layout positions. - * - * @param aDim the dimension to which the weight corresponds - * @param aWeight the weight to be used for the block in the specified dimension, - * replacing any previously existing weight for that block - * @param aPos the index of the block - * @throw AlfVisualException - */ - virtual void insertWeight(gridLayoutDimension aDim, const TAlfMetric& aWeight, int aPos) = 0; - - /** - * Sets the weight of a specific line of blocks in this grid layout, in the direction of the supplied dimension. - * In the case of proportional weights, the effect of this will be to cause the - * other blocks to resize according to the new total weight. - * - * @see appendWeight for more information on how weights are used to calculate layout positions. - * - * @param aDim the dimension to which the weight corresponds - * @param aWeight the weight to be used for the block in the specified dimension, - * replacing any previously existing weight for that cell - * @param aPos the index of the cell - * @throw AlfVisualException - */ - virtual void replaceWeight(gridLayoutDimension aDim, const TAlfMetric& aWeight, int aPos) = 0; - - /** - * Remove a line of blocks from this grid layout at the specified position in the - * specified dimension. In the case of proportional weights, the effect of this will - * be to cause the other blocks to resize according to the new total weight. It will also mean - * that many child visuals will now occupy different blocks within the grid according to how - * the blocks wrap. - * - * @see appendWeight for more information on how weights are used to calculate layout positions. - * - * @param aDim the dimension to which the weight corresponds - * @param aPos the index of the cell - * @throw AlfVisualException - */ - virtual void removeWeight(gridLayoutDimension aDim, int aPos) = 0; - - /** - * Returns the weight of a specific line of blocks in this grid layout, in the - * specified dimension. - * - * @see appendWeight for more information on how weights are used to calculate layout positions. - * - * @param aDim the dimension to which the weight corresponds - * @param aPos the index of the cell - * @return the weight being used for the cell in the specified dimension, will be 0 magnitude if not set - * @throw AlfVisualException - */ - virtual TAlfMetric weight(gridLayoutDimension aDim, int aPos) const = 0; - - /** - * Return the number of lines of blocks in this grid, along the specified dimension - * - * @param aDim the dimension along which to count - * @return The number of lines of blocks in this grid. - */ - virtual int count(gridLayoutDimension aDim) const = 0; - -public: -// from base class IAlfInterfaceBase - - /** - * Interface getter. - * @see IAlfInterfaceBase::MakeInterface - * - * @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; - }; - - } // namespace Alf - -#endif // I_ALFGRIDLAYOUTMANAGER