X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftable-view%2Ftable-view-impl.cpp;h=a0c18498661d8e47c707abd7f62eab17831506ee;hp=703440a914657bc987b4e83947928894591398ab;hb=b1e8521ad77e7b4e62b59613b2edef64429130e9;hpb=44bb6ae11e1c189104d9a8c9881bd5e524b398c0 diff --git a/dali-toolkit/internal/controls/table-view/table-view-impl.cpp b/dali-toolkit/internal/controls/table-view/table-view-impl.cpp old mode 100644 new mode 100755 index 703440a..a0c1849 --- a/dali-toolkit/internal/controls/table-view/table-view-impl.cpp +++ b/dali-toolkit/internal/controls/table-view/table-view-impl.cpp @@ -48,7 +48,7 @@ bool FitToChild( Actor actor, Dimension::Type dimension ) // 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) @@ -66,7 +66,7 @@ void PrintArray( Array2d& array ) 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, @@ -750,15 +750,15 @@ void TableView::OnLayoutNegotiated( float size, Dimension::Type dimension ) // 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; @@ -803,6 +803,18 @@ void TableView::OnSizeSet( const Vector3& size ) void TableView::OnRelayout( const Vector2& size, RelayoutContainer& container ) { // Go through the layout data + float totalWidth = 0.0; + + Dali::LayoutDirection::Type layoutDirection = static_cast( Self().GetProperty(Dali::Actor::Property::LAYOUT_DIRECTION).Get() ); + + 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 ) @@ -817,44 +829,54 @@ void TableView::OnRelayout( const Vector2& size, RelayoutContainer& container ) 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( 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 ); } } } @@ -1095,7 +1117,7 @@ void TableView::OnInitialize() { // Make self as keyboard focusable and focus group Actor self = Self(); - self.SetKeyboardFocusable(true); + self.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true); SetAsKeyboardFocusGroup(true); }