X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fdevel-api%2Flayouting%2Flayout-group-impl.h;h=37aa90f03d562a1c29b868ce2b4cf1cb51e315e2;hp=f827c306909dc4ca441ac482cee7bed938424431;hb=4fcbbea5dc1fb7667607f663f04e898f0e4086ae;hpb=ec9a688fa39b6831eef9584dfa33a5b08b6c28a7 diff --git a/dali-toolkit/devel-api/layouting/layout-group-impl.h b/dali-toolkit/devel-api/layouting/layout-group-impl.h index f827c30..37aa90f 100644 --- a/dali-toolkit/devel-api/layouting/layout-group-impl.h +++ b/dali-toolkit/devel-api/layouting/layout-group-impl.h @@ -23,6 +23,7 @@ #include #include #include +#include #include namespace Dali @@ -55,6 +56,7 @@ using LayoutGroupPtr = IntrusivePtr; * position and size; it should then call Layout() on the child layout to layout the child and it's hierarchy. */ class DALI_TOOLKIT_API LayoutGroup : public LayoutItem, + public LayoutParent, public ConnectionTracker { public: @@ -63,6 +65,14 @@ public: */ LayoutGroup(); + /** + * @brief Construct + * + * @param[in] owner The owner (container view / child view / visual ) of this layout + * @return a new LayoutGroup object + */ + static LayoutGroupPtr New( Handle& owner ); + protected: /** * Virtual destructor may only be called by Unreference() @@ -79,19 +89,39 @@ public: * @param[in] layoutChild The child to add * @return The layout id of this child. */ - Toolkit::LayoutGroup::LayoutId Add( LayoutItem& layoutChild ); + Toolkit::LayoutGroup::LayoutId Add( LayoutItem& layoutChild ) override; /** * @brief Remove a layout child from this group. * @param[in] childId The layout child id */ - void Remove( Toolkit::LayoutGroup::LayoutId childId ); + void Remove( Toolkit::LayoutGroup::LayoutId childId ) override; /** * @brief Remove a layout child from this group * @param[in] child The layout child */ - void Remove( LayoutItem& child ); + void Remove( LayoutItem& child ) override; + + /** + * @brief Insert a child to the parent + * @param[in] target The target item + * @param[in] child The item to insert to this layout parent + */ + Toolkit::LayoutGroup::LayoutId Insert( LayoutItem& target, LayoutItem& child ) override; + + /** + * @brief Move a child to another position + * @param[in] target The target item + * @param[in] child The item to move + */ + Toolkit::LayoutGroup::LayoutId Move( LayoutItem& target, LayoutItem& child ) override; + + /** + * @brief Move a child to back + * @param[in] child The item to move + */ + Toolkit::LayoutGroup::LayoutId MoveBack( LayoutItem& child ) override; /** * @brief Remove all layout children. @@ -226,6 +256,15 @@ protected: LayoutLength widthUsed, MeasureSpec parentHeightMeasureSpec, LayoutLength heightUsed ); + /** + * @copydoc LayoutItem::OnMeasure + */ + virtual void OnMeasure( MeasureSpec widthMeasureSpec, MeasureSpec heightMeasureSpec ) override; + + /** + * @copydoc LayoutItem::OnLayout + */ + virtual void OnLayout( bool changed, LayoutLength left, LayoutLength top, LayoutLength right, LayoutLength bottom ) override; private: /** @@ -245,16 +284,31 @@ private: void OnUnparent() override final; /** + * Method to remove a child from this group + */ + void RemoveChild( LayoutItem& item ); + + /** * Callback when child is added to owner */ void ChildAddedToOwner( Actor child ); /** + * Implementation of ChildAddedToOwner + */ + void ChildAddedToOwnerImpl( Actor child ); + + /** * Callback when child is removed from owner */ void ChildRemovedFromOwner( Actor child ); /** + * Callback when child order is changed + */ + void ChildOrderChanged( Actor child ); + + /** * Callback when an owner property is set. Triggers a relayout if it's a child property */ void OnOwnerPropertySet( Handle& handle, Property::Index index, Property::Value value ); @@ -267,6 +321,11 @@ private: */ void OnSetChildProperties( Handle& handle, Property::Index index, Property::Value value ); + /** + * @brief Called when a layer animation state is changed. + */ + void OnAnimationStateChanged( bool animateLayout ) override final; + public: class Impl; // Class declaration is public so we can add devel API's in the future