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=345ce066b0981216ec02cdbf133c0685a1bd363b;hp=3391bae6c9a82339b5e1acbc818d8528af732ed4;hb=8a647e87a01c5c78451653c1264a9eea81ac9b20;hpb=72ea28bfe5df526ce47369c36edf1390641fff5a diff --git a/dali-toolkit/internal/controls/buttons/push-button-impl.cpp b/dali-toolkit/internal/controls/buttons/push-button-impl.cpp index 3391bae..345ce06 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 @@ -30,7 +29,6 @@ #include #include #include -#include #if defined(DEBUG_ENABLED) extern Debug::Filter* gLogButtonFilter; @@ -57,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 @@ -101,6 +86,10 @@ PushButton::PushButton() : Button(), mIconAlignment( RIGHT ) { + DevelControl::SetAccessibilityConstructor( Self(), []( Dali::Actor actor ) { + return std::unique_ptr< Dali::Accessibility::Accessible >( + new AccessibleImpl( actor, Dali::Accessibility::Role::PUSH_BUTTON ) ); + } ); } PushButton::~PushButton() @@ -113,7 +102,7 @@ void PushButton::OnInitialize() // Push button requires the Leave event. Actor self = Self(); - self.SetLeaveRequired( true ); + self.SetProperty( Actor::Property::LEAVE_REQUIRED, true ); } void PushButton::SetIconAlignment( const PushButton::IconAlignment iconAlignment ) @@ -163,25 +152,6 @@ void PushButton::SetProperty( BaseObject* object, Property::Index propertyIndex, switch ( propertyIndex ) { - case Toolkit::PushButton::Property::UNSELECTED_ICON: - { - pushButtonImpl.CreateVisualsForComponent( Toolkit::DevelButton::Property::UNSELECTED_VISUAL, value, DepthIndex::CONTENT ); - break; - } - case Toolkit::PushButton::Property::SELECTED_ICON: - { - pushButtonImpl.CreateVisualsForComponent( Toolkit::DevelButton::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 >() ); @@ -210,21 +180,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(); @@ -243,6 +198,25 @@ Property::Value PushButton::GetProperty( BaseObject* object, Property::Index pro return value; } +Dali::Accessibility::States PushButton::AccessibleImpl::CalculateStates() +{ + 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::OnStateChange( State newState ) +{ + // 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::Accessibility::Accessible::Get(Self())->EmitStateChanged( + Dali::Accessibility::State::PRESSED, newState == SELECTED_STATE ? 1 : 0, 0 + ); + } +} + } // namespace Internal } // namespace Toolkit