X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fflex-container%2Fflex-container-impl.cpp;h=675709b914313ba9948896f1ecc91d66ea2ede9c;hb=181e7013001eabaea30eda4f56fed71ef7e8a8c8;hp=323a2cdd0ddad454bfcc226758d5aac897fb2550;hpb=9dc39e046394875d17ed30cddcc47572feb924c3;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/flex-container/flex-container-impl.cpp b/dali-toolkit/internal/controls/flex-container/flex-container-impl.cpp index 323a2cd..675709b 100644 --- a/dali-toolkit/internal/controls/flex-container/flex-container-impl.cpp +++ b/dali-toolkit/internal/controls/flex-container/flex-container-impl.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include @@ -31,20 +31,6 @@ using namespace Dali; namespace { -/* - * Custom properties for how to lay out the actor. - * - * When an actor is add to the flex container, the following custom properties of the actor - * are checked to decide how to lay out the actor inside the flex container. - * - * These non-animatable properties should be registered to the child which would be added - * to the flex container, and once added their values can not be changed. - */ -const char * const FLEX_PROPERTY_NAME("flex"); -const char * const ALIGN_SELF_PROPERTY_NAME("alignSelf"); -const char * const FLEX_PADDING_PROPERTY_NAME("flexPadding"); -const char * const FLEX_BORDER_PROPERTY_NAME("flexBorder"); -const char * const FLEX_MARGIN_PROPERTY_NAME("flexMargin"); #if defined(DEBUG_ENABLED) // debugging support, very useful when new features are added or bugs are hunted down @@ -95,12 +81,15 @@ BaseHandle Create() // Setup properties, signals and actions using the type-registry. DALI_TYPE_REGISTRATION_BEGIN( Toolkit::FlexContainer, Toolkit::Control, Create ); -DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "contentDirection", INTEGER, CONTENT_DIRECTION ) -DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "flexDirection", INTEGER, FLEX_DIRECTION ) -DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "flexWrap", INTEGER, FLEX_WRAP ) -DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "justifyContent", INTEGER, JUSTIFY_CONTENT ) -DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "alignItems", INTEGER, ALIGN_ITEMS ) -DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "alignContent", INTEGER, ALIGN_CONTENT ) +DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "contentDirection", INTEGER, CONTENT_DIRECTION ) +DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "flexDirection", INTEGER, FLEX_DIRECTION ) +DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "flexWrap", INTEGER, FLEX_WRAP ) +DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "justifyContent", INTEGER, JUSTIFY_CONTENT ) +DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "alignItems", INTEGER, ALIGN_ITEMS ) +DALI_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "alignContent", INTEGER, ALIGN_CONTENT ) +DALI_CHILD_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "flex", FLOAT, FLEX ) +DALI_CHILD_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "alignSelf", INTEGER, ALIGN_SELF ) +DALI_CHILD_PROPERTY_REGISTRATION( Toolkit, FlexContainer, "flexMargin", VECTOR4, FLEX_MARGIN ) DALI_TYPE_REGISTRATION_END() @@ -607,18 +596,19 @@ void FlexContainer::ComputeLayout() childNode->style.maxDimensions[CSS_WIDTH] = childActor.GetMaximumSize().x; childNode->style.maxDimensions[CSS_HEIGHT] = childActor.GetMaximumSize().y; - // Test custom properties on the child - if( childActor.GetPropertyIndex( FLEX_PROPERTY_NAME ) != Property::INVALID_INDEX ) + // Check child properties on the child for how to layout it. + // These properties should be dynamically registered to the child which + // would be added to FlexContainer. + + if( childActor.GetPropertyType( Toolkit::FlexContainer::ChildProperty::FLEX ) != Property::NONE ) { - childNode->style.flex = childActor.GetProperty( childActor.GetPropertyIndex(FLEX_PROPERTY_NAME) ).Get(); + childNode->style.flex = childActor.GetProperty( Toolkit::FlexContainer::ChildProperty::FLEX ).Get(); } - Property::Index alignSelfPropertyIndex = childActor.GetPropertyIndex( ALIGN_SELF_PROPERTY_NAME ); - if( alignSelfPropertyIndex != Property::INVALID_INDEX ) + Toolkit::FlexContainer::Alignment alignSelf( Toolkit::FlexContainer::ALIGN_AUTO ); + if( childActor.GetPropertyType( Toolkit::FlexContainer::FlexContainer::ChildProperty::ALIGN_SELF ) != Property::NONE ) { - Property::Value alignSelfPropertyValue = childActor.GetProperty( alignSelfPropertyIndex ); - - Toolkit::FlexContainer::Alignment alignSelf( Toolkit::FlexContainer::ALIGN_AUTO ); + Property::Value alignSelfPropertyValue = childActor.GetProperty( Toolkit::FlexContainer::ChildProperty::ALIGN_SELF ); if( alignSelfPropertyValue.GetType() == Property::INTEGER ) { alignSelf = static_cast( alignSelfPropertyValue.Get< int >() ); @@ -631,30 +621,12 @@ void FlexContainer::ComputeLayout() ALIGN_SELF_STRING_TABLE_COUNT, alignSelf ); } - childNode->style.align_self = static_cast(alignSelf); - } - - if( childActor.GetPropertyIndex( FLEX_PADDING_PROPERTY_NAME ) != Property::INVALID_INDEX ) - { - Vector4 flexPadding = childActor.GetProperty( childActor.GetPropertyIndex(FLEX_PADDING_PROPERTY_NAME) ).Get(); - childNode->style.padding[CSS_LEFT] = flexPadding.x; - childNode->style.padding[CSS_TOP] = flexPadding.y; - childNode->style.padding[CSS_RIGHT] = flexPadding.z; - childNode->style.padding[CSS_BOTTOM] = flexPadding.w; - } - - if( childActor.GetPropertyIndex( FLEX_BORDER_PROPERTY_NAME ) != Property::INVALID_INDEX ) - { - Vector4 flexBorder = childActor.GetProperty( childActor.GetPropertyIndex(FLEX_BORDER_PROPERTY_NAME) ).Get(); - childNode->style.border[CSS_LEFT] = flexBorder.x; - childNode->style.border[CSS_TOP] = flexBorder.y; - childNode->style.border[CSS_RIGHT] = flexBorder.z; - childNode->style.border[CSS_BOTTOM] = flexBorder.w; } + childNode->style.align_self = static_cast(alignSelf); - if( childActor.GetPropertyIndex( FLEX_MARGIN_PROPERTY_NAME ) != Property::INVALID_INDEX ) + if( childActor.GetPropertyType( Toolkit::FlexContainer::ChildProperty::FLEX_MARGIN ) != Property::NONE ) { - Vector4 flexMargin = childActor.GetProperty( childActor.GetPropertyIndex(FLEX_MARGIN_PROPERTY_NAME) ).Get(); + Vector4 flexMargin = childActor.GetProperty( Toolkit::FlexContainer::ChildProperty::FLEX_MARGIN ).Get(); childNode->style.margin[CSS_LEFT] = flexMargin.x; childNode->style.margin[CSS_TOP] = flexMargin.y; childNode->style.margin[CSS_RIGHT] = flexMargin.z;