// currently not called from code so compiler will optimize these away, kept here for future debugging
#define TABLEVIEW_TAG "DALI Toolkit::TableView "
-#define TV_LOG(fmt, args...) Debug::LogMessage(Debug::DebugInfo, TABLEVIEW_TAG fmt, ## args)
+#define TV_LOG(fmt, args,...) Debug::LogMessage(Debug::DebugInfo, TABLEVIEW_TAG fmt, ## args)
//#define TABLEVIEW_DEBUG 1
#if defined(TABLEVIEW_DEBUG)
if( data.actor )
{
actor = 'A';
- actorName = data.actor.GetName();
+ actorName = data.actor.GetProperty< std::string >( Dali::Actor::Property::NAME );
}
TV_LOG("Array[%d,%d]=%c %s %d,%d,%d,%d ", i, j, actor, actorName.c_str(),
data.position.rowIndex, data.position.columnIndex,
// update every column position in ColumnData array
float cumulatedWidth = 0.0f;
- for( unsigned int column = 0, columnCount = mCellData.GetColumns(); column < columnCount; ++column )
+ for( auto&& element : mColumnData )
{
- if( mColumnData[ column ].sizePolicy == Toolkit::TableView::FILL || mColumnData[ column ].sizePolicy == Toolkit::TableView::RELATIVE)
+ if( element.sizePolicy == Toolkit::TableView::FILL || element.sizePolicy == Toolkit::TableView::RELATIVE )
{
- mColumnData[ column ].size = mColumnData[ column ].fillRatio * remainingSize;
+ element.size = element.fillRatio * remainingSize;
}
- cumulatedWidth += mColumnData[ column ].size;
- mColumnData[column].position = cumulatedWidth;
+ cumulatedWidth += element.size;
+ element.position = cumulatedWidth;
}
mColumnDirty = false;
void TableView::OnRelayout( const Vector2& size, RelayoutContainer& container )
{
// Go through the layout data
+ float totalWidth = 0.0;
+
+ Dali::LayoutDirection::Type layoutDirection = static_cast<Dali::LayoutDirection::Type>( Self().GetProperty(Dali::Actor::Property::LAYOUT_DIRECTION).Get<int>() );
+
+ if( Dali::LayoutDirection::RIGHT_TO_LEFT == layoutDirection )
+ {
+ for (auto&& element : mColumnData)
+ {
+ totalWidth += element.size;
+ }
+ }
+
for( unsigned int row = 0, rowCount = mCellData.GetRows(); row < rowCount; ++row )
{
for( unsigned int column = 0, columnCount = mCellData.GetColumns(); column < columnCount; ++column )
if( actor && position.rowIndex == row && position.columnIndex == column )
{
// Anchor actor to top left of the cell
- if( actor.GetProperty( DevelActor::Property::POSITION_USES_ANCHOR_POINT ).Get< bool >() )
+ if( actor.GetProperty( Actor::Property::POSITION_USES_ANCHOR_POINT ).Get< bool >() )
{
- actor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
+ actor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
}
- actor.SetParentOrigin( ParentOrigin::TOP_LEFT );
+ actor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
- Padding padding;
- actor.GetPadding( padding );
+ Padding padding = actor.GetProperty<Vector4>( Actor::Property::PADDING );
+
+ float left = (column > 0) ? mColumnData[column - 1].position : 0.f;
+ float right;
+
+ if( Dali::LayoutDirection::RIGHT_TO_LEFT == layoutDirection )
+ {
+ right = totalWidth - left;
+ left = right - mColumnData[column].size;
+ }
+ else
+ {
+ right = left + mColumnData[column].size;
+ }
- float left = column > 0 ? mColumnData[column-1].position : 0.f;
- float right = mColumnData[column+position.columnSpan-1].position;
float top = row > 0 ? mRowData[row-1].position : 0.f;
float bottom = mRowData[row+position.rowSpan-1].position;
if( cellData.horizontalAlignment == HorizontalAlignment::LEFT )
{
- actor.SetX( left + mPadding.width + padding.left );
+ actor.SetProperty( Actor::Property::POSITION_X, left + mPadding.width + padding.left );
}
else if( cellData.horizontalAlignment == HorizontalAlignment::RIGHT )
{
- actor.SetX( right - mPadding.width - padding.right - actor.GetRelayoutSize( Dimension::WIDTH ) );
+ actor.SetProperty( Actor::Property::POSITION_X, right - mPadding.width - padding.right - actor.GetRelayoutSize( Dimension::WIDTH ) );
}
else //if( cellData.horizontalAlignment == HorizontalAlignment::CENTER )
{
- actor.SetX( (left + right + padding.left - padding.right - actor.GetRelayoutSize( Dimension::WIDTH )) * 0.5f );
+ actor.SetProperty( Actor::Property::POSITION_X, (left + right + padding.left - padding.right - actor.GetRelayoutSize( Dimension::WIDTH )) * 0.5f );
}
if( cellData.verticalAlignment == VerticalAlignment::TOP )
{
- actor.SetY( top + mPadding.height + padding.top );
+ actor.SetProperty( Actor::Property::POSITION_Y, top + mPadding.height + padding.top );
}
else if( cellData.verticalAlignment == VerticalAlignment::BOTTOM )
{
- actor.SetY( bottom - mPadding.height - padding.bottom - actor.GetRelayoutSize( Dimension::HEIGHT ) );
+ actor.SetProperty( Actor::Property::POSITION_Y, bottom - mPadding.height - padding.bottom - actor.GetRelayoutSize( Dimension::HEIGHT ) );
}
else //if( cellData.verticalAlignment = VerticalAlignment::CENTER )
{
- actor.SetY( (top + bottom + padding.top - padding.bottom - actor.GetRelayoutSize( Dimension::HEIGHT )) * 0.5f );
+ actor.SetProperty( Actor::Property::POSITION_Y, (top + bottom + padding.top - padding.bottom - actor.GetRelayoutSize( Dimension::HEIGHT )) * 0.5f );
}
}
}
{
// Make self as keyboard focusable and focus group
Actor self = Self();
- self.SetKeyboardFocusable(true);
+ self.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true);
SetAsKeyboardFocusGroup(true);
}
void(TableView::*funcFit)(unsigned int),
const Property::Value& value )
{
- Property::Map* map = value.GetMap();
+ const Property::Map* map = value.GetMap();
if( map )
{
unsigned int index(0);