X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fbuttons%2Fpush-button-impl.cpp;h=2fadac4542e618e3f881e46f4c43513e471e7b38;hp=cb5a747c5cec44b5931dc6869213ca9bbd23ddfa;hb=525bea517c24aade6e79d2720da5fd98d2b45d41;hpb=e5dbcae1f8ee31b14d675793ab86161eeeefb029 diff --git a/dali-toolkit/internal/controls/buttons/push-button-impl.cpp b/dali-toolkit/internal/controls/buttons/push-button-impl.cpp index cb5a747..2fadac4 100644 --- a/dali-toolkit/internal/controls/buttons/push-button-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/push-button-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 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. @@ -21,7 +21,6 @@ // EXTERNAL INCLUDES #include #include -#include #include #include @@ -47,8 +46,6 @@ namespace Internal namespace { -const float ANIMATION_TIME( 0.2f ); - BaseHandle Create() { return Toolkit::PushButton::New(); @@ -58,24 +55,11 @@ BaseHandle Create() DALI_TYPE_REGISTRATION_BEGIN( Toolkit::PushButton, Toolkit::Button, Create ) -DALI_PROPERTY_REGISTRATION( Toolkit, PushButton, "unselectedIcon", STRING, UNSELECTED_ICON ) -DALI_PROPERTY_REGISTRATION( Toolkit, PushButton, "selectedIcon", STRING, SELECTED_ICON ) -DALI_PROPERTY_REGISTRATION( Toolkit, PushButton, "iconAlignment", STRING, ICON_ALIGNMENT ) DALI_PROPERTY_REGISTRATION( Toolkit, PushButton, "labelPadding", STRING, LABEL_PADDING ) DALI_PROPERTY_REGISTRATION( Toolkit, PushButton, "iconPadding", STRING, ICON_PADDING ) DALI_TYPE_REGISTRATION_END() -/* - * Table to define Text-to-enum conversions for IconAlignment. - */ -const Dali::Scripting::StringEnum IconAlignmentTable[] = { - { "LEFT", Toolkit::Internal::PushButton::LEFT }, - { "RIGHT", Toolkit::Internal::PushButton::RIGHT }, - { "TOP", Toolkit::Internal::PushButton::TOP }, - { "BOTTOM", Toolkit::Internal::PushButton::BOTTOM }, -}; const unsigned int IconAlignmentTableCount = sizeof( IconAlignmentTable ) / sizeof( IconAlignmentTable[0] ); - } // unnamed namespace namespace @@ -102,7 +86,6 @@ PushButton::PushButton() : Button(), mIconAlignment( RIGHT ) { - SetAnimationTime( ANIMATION_TIME ); } PushButton::~PushButton() @@ -115,7 +98,12 @@ void PushButton::OnInitialize() // Push button requires the Leave event. Actor self = Self(); - self.SetLeaveRequired( true ); + self.SetProperty( Actor::Property::LEAVE_REQUIRED, true ); + + DevelControl::SetAccessibilityConstructor( self, []( Dali::Actor actor ) { + return std::unique_ptr< Dali::Accessibility::Accessible >( + new AccessibleImpl( actor, Dali::Accessibility::Role::PUSH_BUTTON ) ); + } ); } void PushButton::SetIconAlignment( const PushButton::IconAlignment iconAlignment ) @@ -165,25 +153,6 @@ void PushButton::SetProperty( BaseObject* object, Property::Index propertyIndex, switch ( propertyIndex ) { - case Toolkit::PushButton::Property::UNSELECTED_ICON: - { - pushButtonImpl.CreateVisualsForComponent( Toolkit::Button::Property::UNSELECTED_VISUAL, value, DepthIndex::CONTENT ); - break; - } - case Toolkit::PushButton::Property::SELECTED_ICON: - { - pushButtonImpl.CreateVisualsForComponent( Toolkit::Button::Property::SELECTED_VISUAL, value, DepthIndex::CONTENT ); - break; - } - case Toolkit::PushButton::Property::ICON_ALIGNMENT: - { - IconAlignment iconAlignment; - if( Scripting::GetEnumeration< IconAlignment >( value.Get< std::string >().c_str(), IconAlignmentTable, IconAlignmentTableCount, iconAlignment ) ) - { - pushButtonImpl.SetIconAlignment( iconAlignment ); - } - break; - } case Toolkit::PushButton::Property::LABEL_PADDING: { Vector4 padding ( value.Get< Vector4 >() ); @@ -212,21 +181,6 @@ Property::Value PushButton::GetProperty( BaseObject* object, Property::Index pro switch ( propertyIndex ) { - case Toolkit::PushButton::Property::UNSELECTED_ICON: - { - //value = pushButtonImpl.GetIcon( UNSELECTED_DECORATION ); - break; - } - case Toolkit::PushButton::Property::SELECTED_ICON: - { - //value = pushButtonImpl.GetIcon( UNSELECTED_DECORATION ); - break; - } - case Toolkit::PushButton::Property::ICON_ALIGNMENT: - { - value = Scripting::GetLinearEnumerationName< IconAlignment >( pushButtonImpl.GetIconAlignment(), IconAlignmentTable, IconAlignmentTableCount ); - break; - } case Toolkit::PushButton::Property::LABEL_PADDING: { Padding padding = pushButtonImpl.Button::GetLabelPadding(); @@ -245,42 +199,28 @@ Property::Value PushButton::GetProperty( BaseObject* object, Property::Index pro return value; } -void PushButton::PrepareForTranstionIn( Actor actor ) -{ - // Set Toolkit::Button::Property::SELECTED_VISUAL and Toolkit::Button::Property::UNSELECTED_VISUAL to opacity 0 - // Then get and start animation -} - -void PushButton::PrepareForTranstionOut( Actor actor ) -{ - // Set Toolkit::Button::Property::SELECTED_VISUAL and Toolkit::Button::Property::UNSELECTED_VISUAL to opacity 1 - // Then get and start animation -} - -void PushButton::OnTransitionIn( Actor actor ) +Dali::Accessibility::States PushButton::AccessibleImpl::CalculateStates() { - // Only transition selected and unselected visual, background doesn't change. - // Start Fade animation to 1 + auto tmp = Button::AccessibleImpl::CalculateStates(); + auto slf = Toolkit::Button::DownCast( self ); + tmp[Dali::Accessibility::State::PRESSED] = slf.GetProperty( Toolkit::Button::Property::SELECTED ); + return tmp; } -void PushButton::OnTransitionOut( Actor actor ) +void PushButton::OnStateChange( State newState ) { - // Only transition selected and unselected visual, background doesn't change. - // Start Fade animation to 0 -} - -void PushButton::FadeImageTo( Actor actor , float opacity ) -{ - if( actor ) + // TODO: replace it with OnPropertySet hook once Button::Property::SELECTED will be consistently used + if (Dali::Accessibility::IsUp() && (newState == SELECTED_STATE || newState == UNSELECTED_STATE)) { - Dali::Animation transitionAnimation = GetTransitionAnimation(); - DALI_ASSERT_DEBUG( transitionAnimation ); + Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged( + Dali::Accessibility::State::PRESSED, newState == SELECTED_STATE ? 1 : 0, 0 + ); - if( transitionAnimation ) + if (Self().GetProperty(Toolkit::Button::Property::TOGGLABLE)) { - DALI_LOG_INFO( gLogButtonFilter, Debug::Verbose, "PushButton::FadeImageTo(%f)\n", opacity ); - - transitionAnimation.AnimateTo( Property( actor, Actor::Property::COLOR_ALPHA ), opacity ); + Dali::Accessibility::Accessible::Get(Self())->EmitStateChanged( + Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0 + ); } } }