X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Ftable-view%2Ftable-view.h;h=1774f604151b34c10bd369a3ea596fe3e79d76ed;hp=1b4a332acd1cb59d436e4ef7222ece36e37a0dd5;hb=f3da11c2818c6d17706fbb2417f21b602b3190f5;hpb=2ddfbb9e23a7c3fc30e604236c41e0ef6d2ed6a2 diff --git a/dali-toolkit/public-api/controls/table-view/table-view.h b/dali-toolkit/public-api/controls/table-view/table-view.h index 1b4a332..1774f60 100644 --- a/dali-toolkit/public-api/controls/table-view/table-view.h +++ b/dali-toolkit/public-api/controls/table-view/table-view.h @@ -2,7 +2,7 @@ #define __DALI_TOOLKIT_TABLE_VIEW_H__ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ // EXTERNAL INCLUDES #include +#include // INTERNAL INCLUDES #include @@ -34,66 +35,112 @@ namespace Internal DALI_INTERNAL { class TableView; } +/** + * @addtogroup dali_toolkit_controls_table_view + * @{ + */ /** - * TableView is a layout container for aligning child actors in a grid like layout. + * @brief TableView is a layout container for aligning child actors in a grid like layout. + * * TableView constrains the x and y position and width and height of the child actors. * z position and depth are left intact so that 3D model actors can also be laid out * in a grid without loosing their depth scaling. + * + * @nosubgrouping + *

Per-child Custom properties for script supporting:

+ * + * When an actor is add to the tableView through Actor::Add() instead of TableView::AddChild, + * the following custom properties of the actor are checked to decide the actor position inside the table. + * + * These properties are registered dynamically to the child and is non-animatable. + * + * | %Property Name | Type | + * |-------------------------|-------------| + * | cellIndex | Vector2 | + * | rowSpan | float | + * | columnSpan | float | + * | cellHorizontalAlignment | string | + * | cellVerticalAlignment | string | + * + * The row-span or column span has integer value, but its type is float here due to the limitation of the builder's ability to differentiate integer and float from Json string. + * The available values for cellHorizontalAlignment are: left, center, right. + * The available values for cellVerticalAlignment are: top, center, bottom. + * + * @code + * "name":"gallery1", + * "type":"ImageActor", + * "image": { + * "filename": "{DALI_IMAGE_DIR}gallery-small-1.jpg" + * }, + * "customProperties": { + * "cellIndex":[1,1], // property to specify the top-left cell this child occupies, if not set, the first available cell is used + * "rowSpan":3, // property to specify how many rows this child occupies, if not set, default value is 1 + * "columnSpan": 2, // property to specify how many columns this child occupies, if nor set, default value is 1 + * "cellHorizontalAlignment": "left", // property to specify how to align horizontally inside the cells, if not set, default value is 'left' + * "cellVerticalAlignment": "center" // property to specify how to align vertically inside the cells, if not set, default value is 'top' + * } + * @endcode */ class DALI_IMPORT_API TableView : public Control { public: - /// @name Properties - /** @{ */ - static const Property::Index PROPERTY_ROWS; ///< name "rows", type UNSIGNED_INTEGER - static const Property::Index PROPERTY_COLUMNS; ///< name "columns", type UNSIGNED_INTEGER - static const Property::Index PROPERTY_CELL_PADDING; ///< name "cell-padding", type VECTOR2 - static const Property::Index PROPERTY_LAYOUT_ANIMATION_DURATION; ///< name "layout-animation-duration", type FLOAT + /** + * @brief The start and end property ranges for this control. + */ + enum PropertyRange + { + PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1, + PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000 ///< Reserve property indices + }; - /* - * PROPERTY_LAYOUT_ROWS set the height of the rows + /** + * @brief An enumeration of properties belonging to the TableView class. + * + * LayoutRows: set the height of the rows. * It has the format as follows in script: * @code - * "layout-rows": + * "layoutRows": { "0": { "policy": "fixed", "value": 40 }, //@see SetFixedHight - "2": { "policy": "relative", "value": 0.33 } //@see SetRelativeHeight + "2": { "policy": "relative", "value": 0.33 }, //@see SetRelativeHeight + "3": { "policy": "fit", "value":0.0 } //@see SetFitHeight, the value is not used, its height is decided by the children in this row } * @endcode - */ - static const Property::Index PROPERTY_LAYOUT_ROWS; ///< name "layout-rows", type MAP - - /* - * PROPERTY_LAYOUT_COLUMNS set the height of the rows + * + * LayoutColumns: set the height of the rows. * It has the format as follows in script: * @code - * "layout-columns": + * "layoutColumns": { "0": { "policy": "fixed", "value": 40 }, //@see SetFixedWidth + "1": { "policy": "fit", "value":0.0 } //@see SetFitHeight, the value is not used, its width is decided by the children in this column "2": { "policy": "relative", "value": 0.33 } //@see SetRelativeWidth } * @endcode */ - static const Property::Index PROPERTY_LAYOUT_COLUMNS; ///< name "layout-columns", type MAP - /** @} */ - - - // Custom properties for where to put the actor, these properties should be registered to the child which would be added to the table - static const std::string CELL_INDICES_PROPERTY_NAME; ///< Property, name "cell-indices", type VECTOR2 - static const std::string ROW_SPAN_PROPERTY_NAME; ///< Property, name "row-span", type FLOAT (Currently builder unable to differentiate integer and float from Json string) - static const std::string COLUMN_SPAN_PROPERTY_NAME; ///< Property, name "column-span", type FLOAT (Currently builder unable to differentiate integer and float from Json string) - + struct Property + { + enum + { + ROWS = PROPERTY_START_INDEX, ///< name "rows", type unsigned int + COLUMNS, ///< name "columns", type unsigned int + CELL_PADDING, ///< name "cellPadding", type Vector2 + LAYOUT_ROWS, ///< name "layoutRows", type Map + LAYOUT_COLUMNS, ///< name "layoutColumns", type Map + }; + }; /** * @brief Describes how the size of a row / column been set */ enum LayoutPolicy { - Fixed, ///< Fixed with the given value. - Relative, ///< Calculated as percentage of the remainder after subtracting Padding and Fixed height/width - Fill ///< Get the remainder of the 100% (after subtracting Padding, Fixed and Relative height/ width) divided evenly between 'fill' rows/columns + FIXED, ///< Fixed with the given value. + RELATIVE, ///< Calculated as percentage of the remainder after subtracting Padding and Fixed height/width + FILL, ///< Default policy, get the remainder of the 100% (after subtracting Fixed, Fit and Relative height/ width) divided evenly between 'fill' rows/columns + FIT ///< Fit around its children. }; /** @@ -263,6 +310,36 @@ public: Size GetCellPadding(); /** + * @brief Specify this row as fitting its height to its children + * + * @param[in] rowIndex The row to set + */ + void SetFitHeight( unsigned int rowIndex ); + + /** + * @brief Is the row a fit row + * + * @param[in] rowIndex The row to check + * @return Return true if the row is fit + */ + bool IsFitHeight( unsigned int rowIndex ) const; + + /** + * @brief Specify this column as fitting its width to its children + * + * @param[in] columnIndex The column to set + */ + void SetFitWidth( unsigned int columnIndex ); + + /** + * @brief Is the column a fit column + * + * @param[in] columnIndex The column to check + * @return Return true if the column is fit + */ + bool IsFitWidth( unsigned int columnIndex ) const; + + /** * Sets a row to have fixed height * Setting a fixed height of 0 has no effect * @pre The row rowIndex must exist. @@ -333,19 +410,6 @@ public: float GetRelativeWidth( unsigned int columnIndex ) const; /** - * Sets the layout animation duration for add, remove and relayout - * @param duration for the layout animations - * @note The default duration is 0.0f. - */ - void SetLayoutAnimationDuration( float duration ); - - /** - * Gets the layout animation duration for add, remove and relayout - * @return duration for the layout animations - */ - float GetLayoutAnimationDuration(); - - /** * @return the amount of rows in the table */ unsigned int GetRows(); @@ -355,6 +419,17 @@ public: */ unsigned int GetColumns(); + /** + * @brief Set the alignment on a cell. + * + * Cells without calling this function have the default values of LEFT and TOP respectively. + * + * @param[in] position The cell to set alignment on. + * @param[in] horizontal The horizontal alignment. + * @param[in] vertical The vertical alignment. + */ + void SetCellAlignment( CellPosition position, HorizontalAlignment::Type horizontal, VerticalAlignment::Type vertical ); + public: // Not intended for application developers /** @@ -370,6 +445,9 @@ public: // Not intended for application developers explicit DALI_INTERNAL TableView( Dali::Internal::CustomActor* internal ); }; +/** + * @} + */ } // namespace Toolkit } // namespace Dali