X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftool-bar%2Ftool-bar-impl.cpp;h=0ca6e7232fd532d761cf89864c16b12ccf937192;hp=e0dbd86f7876712ee40beb418d7c88b48e064bb9;hb=8a647e87a01c5c78451653c1264a9eea81ac9b20;hpb=eea53605c5acb244aebb72d75bdd9b3a68a9678a diff --git a/dali-toolkit/internal/controls/tool-bar/tool-bar-impl.cpp b/dali-toolkit/internal/controls/tool-bar/tool-bar-impl.cpp index e0dbd86..0ca6e72 100644 --- a/dali-toolkit/internal/controls/tool-bar/tool-bar-impl.cpp +++ b/dali-toolkit/internal/controls/tool-bar/tool-bar-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -19,14 +19,13 @@ #include "tool-bar-impl.h" // EXTERNAL INCLUDES -#include #include #include #include // INTERNAL INCLUDES -#include -#include +#include +#include namespace Dali { @@ -49,7 +48,7 @@ DALI_TYPE_REGISTRATION_BEGIN( Toolkit::ToolBar, Toolkit::Control, Create ) DALI_TYPE_REGISTRATION_END() const float DEFAULT_RELATIVE_SIZE( 0.1f ); -const Toolkit::Alignment::Type DEFAULT_ALIGNMENT( Toolkit::Alignment::HorizontalLeft ); +const Toolkit::Alignment::Type DEFAULT_ALIGNMENT( Toolkit::Alignment::HORIZONTAL_LEFT ); } // namespace Toolkit::ToolBar ToolBar::New() @@ -57,7 +56,7 @@ Toolkit::ToolBar ToolBar::New() // Create the implementation, temporarily owned on stack IntrusivePtr< ToolBar > internalToolBar = new ToolBar(); - // Pass ownership to Toolkit::View + // Pass ownership to Toolkit::Toolbar Toolkit::ToolBar toolBar( *internalToolBar ); // Second-phase init of the implementation @@ -67,32 +66,13 @@ Toolkit::ToolBar ToolBar::New() return toolBar; } -void ToolBar::SetBackground( Actor background ) -{ - Lock lock( mInitializing ); - - // ToolBar image - background.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER ); - background.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER ); - background.SetSize( mToolBarSize ); - - RenderableActor renderableActor = RenderableActor::DownCast( background ); - if ( renderableActor ) - { - renderableActor.SetSortModifier( 1.f ); - } - - Self().Add( background ); - mBackground = background; -} - void ToolBar::AddControl( Actor control, float relativeSize, Toolkit::Alignment::Type alignment, const Toolkit::Alignment::Padding& padding ) { // Work out index and update bases and offsets for further insertions. unsigned int index = 0; switch( alignment ) { - case Toolkit::Alignment::HorizontalLeft: + case Toolkit::Alignment::HORIZONTAL_LEFT: { index = mLeftOffset; ++mLeftOffset; @@ -100,14 +80,14 @@ void ToolBar::AddControl( Actor control, float relativeSize, Toolkit::Alignment: ++mRightBase; break; } - case Toolkit::Alignment::HorizontalCenter: + case Toolkit::Alignment::HORIZONTAL_CENTER: { index = mCenterBase + mCenterOffset; ++mCenterOffset; ++mRightBase; break; } - case Toolkit::Alignment::HorizontalRight: + case Toolkit::Alignment::HORIZONTAL_RIGHT: { index = mRightBase - mRightOffset; ++mRightBase; @@ -125,8 +105,9 @@ void ToolBar::AddControl( Actor control, float relativeSize, Toolkit::Alignment: // Create an alignment container where to place the control. Toolkit::Alignment alignmentContainer = Toolkit::Alignment::New( alignment ); - alignmentContainer.SetScaling( Toolkit::Alignment::ScaleToFill ); + alignmentContainer.SetProperty( Actor::Property::SIZE_SCALE_POLICY, SizeScalePolicy::FIT_WITH_ASPECT_RATIO ); alignmentContainer.SetPadding( padding ); + alignmentContainer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); alignmentContainer.Add( control ); // Insert the control in the table view. @@ -142,7 +123,7 @@ void ToolBar::AddControl( Actor control, float relativeSize, Toolkit::Alignment: // Update spaces between left, center and right groups of controls. switch( alignment ) { - case Toolkit::Alignment::HorizontalLeft: + case Toolkit::Alignment::HORIZONTAL_LEFT: { mLeftRelativeSpace -= relativeSize; if ( mLeftRelativeSpace < 0.f ) @@ -151,7 +132,7 @@ void ToolBar::AddControl( Actor control, float relativeSize, Toolkit::Alignment: } break; } - case Toolkit::Alignment::HorizontalCenter: + case Toolkit::Alignment::HORIZONTAL_CENTER: { mLeftRelativeSpace -= 0.5f * relativeSize; if ( mLeftRelativeSpace < 0.f ) @@ -165,7 +146,7 @@ void ToolBar::AddControl( Actor control, float relativeSize, Toolkit::Alignment: } break; } - case Toolkit::Alignment::HorizontalRight: + case Toolkit::Alignment::HORIZONTAL_RIGHT: { mRightRelativeSpace -= relativeSize; if ( mRightRelativeSpace < 0.f ) @@ -199,18 +180,18 @@ void ToolBar::RemoveControl( Actor control ) // Update spaces between left, center and right groups of controls. if( 1.0 > mAccumulatedRelativeSpace ) { - Toolkit::Alignment::Type alignment = Toolkit::Alignment::HorizontalLeft; + Toolkit::Alignment::Type alignment = Toolkit::Alignment::HORIZONTAL_LEFT; if( position.columnIndex < mLeftOffset ) { - alignment = Toolkit::Alignment::HorizontalLeft; + alignment = Toolkit::Alignment::HORIZONTAL_LEFT; } else if( ( position.columnIndex > mLeftOffset ) && ( position.columnIndex < mCenterBase + mCenterOffset ) ) { - alignment = Toolkit::Alignment::HorizontalCenter; + alignment = Toolkit::Alignment::HORIZONTAL_CENTER; } else if( position.columnIndex > mCenterBase + mCenterOffset ) { - alignment = Toolkit::Alignment::HorizontalRight; + alignment = Toolkit::Alignment::HORIZONTAL_RIGHT; } else { @@ -221,7 +202,7 @@ void ToolBar::RemoveControl( Actor control ) switch( alignment ) { - case Toolkit::Alignment::HorizontalLeft: + case Toolkit::Alignment::HORIZONTAL_LEFT: { mLeftRelativeSpace += relativeSize; if ( mLeftRelativeSpace < 0.f ) @@ -230,7 +211,7 @@ void ToolBar::RemoveControl( Actor control ) } break; } - case Toolkit::Alignment::HorizontalCenter: + case Toolkit::Alignment::HORIZONTAL_CENTER: { mLeftRelativeSpace += 0.5f * relativeSize; if ( mLeftRelativeSpace < 0.f ) @@ -244,7 +225,7 @@ void ToolBar::RemoveControl( Actor control ) } break; } - case Toolkit::Alignment::HorizontalRight: + case Toolkit::Alignment::HORIZONTAL_RIGHT: { mRightRelativeSpace += relativeSize; if ( mRightRelativeSpace < 0.f ) @@ -295,7 +276,7 @@ void ToolBar::RemoveControl( Actor control ) } ToolBar::ToolBar() -: Control( CONTROL_BEHAVIOUR_NONE ), +: Control( ControlBehaviour( CONTROL_BEHAVIOUR_DEFAULT ) ), mLayout(), mLeftOffset( 0 ), mCenterBase( 1 ), @@ -308,6 +289,10 @@ ToolBar::ToolBar() mInitializing( false ), mControls() { + DevelControl::SetAccessibilityConstructor( Self(), []( Dali::Actor actor ) { + return std::unique_ptr< Dali::Accessibility::Accessible >( + new Control::Impl::AccessibleImpl( actor, Dali::Accessibility::Role::TOOL_BAR, true ) ); + } ); } ToolBar::~ToolBar() @@ -320,7 +305,9 @@ void ToolBar::OnInitialize() // Layout mLayout = Toolkit::TableView::New( 1, 1 ); - mLayout.SetPositionInheritanceMode( Dali::USE_PARENT_POSITION ); + mLayout.SetProperty( Dali::Actor::Property::NAME, "TOOLBAR_LAYOUT" ); + mLayout.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); + mLayout.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); Self().Add( mLayout ); @@ -333,7 +320,7 @@ void ToolBar::OnInitialize() mLayout.SetRelativeWidth( 1, mRightRelativeSpace ); } -void ToolBar::OnControlChildAdd(Actor& child) +void ToolBar::OnChildAdd(Actor& child) { if( !mInitializing ) { @@ -348,15 +335,11 @@ void ToolBar::OnControlChildAdd(Actor& child) AddControl( child, DEFAULT_RELATIVE_SIZE, DEFAULT_ALIGNMENT, Toolkit::ToolBar::DEFAULT_PADDING ); } - // No OnControlChildRemove method required because Actors are added to the mLayout table view, so if an + // No OnChildRemove method required because Actors are added to the mLayout table view, so if an // actor is removed using the Actor::RemoveChild method it will not remove anything because the // actor is in mLayout not in Self(). -} -void ToolBar::OnControlSizeSet( const Vector3& targetSize ) -{ - mToolBarSize = targetSize; - mBackground.SetSize( mToolBarSize ); + Control::OnChildAdd( child ); } } // namespace Internal