X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fdevel-api%2Fcontrols%2Fcontrol-devel.h;h=88776462885386b798a9cce81d44e62c9e339691;hp=da4b730cbe420cb351d1d9df6291ef8b076fa6f1;hb=6fc192d050313c54779b64bfda59262e9de51078;hpb=debd4ef5b35507bac4579dfbb8983b743872c70b diff --git a/dali-toolkit/devel-api/controls/control-devel.h b/dali-toolkit/devel-api/controls/control-devel.h index da4b730..8877646 100644 --- a/dali-toolkit/devel-api/controls/control-devel.h +++ b/dali-toolkit/devel-api/controls/control-devel.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_CONTROL_DEVEL_H /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -18,9 +18,13 @@ * */ // EXTERNAL INCLUDES +#include #include +#include +#include // INTERNAL INCLUDES +#include #include #include @@ -37,6 +41,33 @@ class Base; namespace DevelControl { +/// @brief AccessibilityActivate signal type. +typedef Signal AccessibilityActivateSignalType; + +/// @brief AccessibilityReadingSkipped signal type. +typedef Signal AccessibilityReadingSkippedSignalType; + +/// @brief AccessibilityReadingPaused signal type. +typedef Signal AccessibilityReadingPausedSignalType; + +/// @brief AccessibilityReadingResumed signal type. +typedef Signal AccessibilityReadingResumedSignalType; + +/// @brief AccessibilityReadingCancelled signal type. +typedef Signal AccessibilityReadingCancelledSignalType; + +/// @brief AccessibilityReadingStopped signal type. +typedef Signal AccessibilityReadingStoppedSignalType; + +/// @brief AccessibilityGetName signal type. +typedef Signal AccessibilityGetNameSignalType; + +/// @brief AccessibilityGetDescription signal type. +typedef Signal AccessibilityGetDescriptionSignalType; + +/// @brief AccessibilityDoGesture signal type. +typedef Signal&)> AccessibilityDoGestureSignalType; + enum State { NORMAL, @@ -115,7 +146,52 @@ enum * @brief The shadow of the control. * @details Name "shadow", type Property::MAP. */ - SHADOW = PADDING + 8 + SHADOW = PADDING + 8, + + /** + * @brief The name of object visible in accessibility tree. + * @details Name "accessibilityName", type Property::STRING. + */ + ACCESSIBILITY_NAME, + + /** + * @brief The description of object visible in accessibility tree. + * @details Name "accessibilityDescription", type Property::STRING. + */ + ACCESSIBILITY_DESCRIPTION, + + /** + * @brief Current translation domain for accessibility clients. + * @details Name "accessibilityTranslationDomain", type Property::STRING. + */ + ACCESSIBILITY_TRANSLATION_DOMAIN, + + /** + * @brief Role being performed in accessibility hierarchy. + * @details Name "accessibilityRole", type Property::INTEGER. + * @note Property is stored as INTEGER, however its interpretaton + * depend on enumeration Dali::Accessibility::Role and should be read and written + * with usage of enumerated values. + * @see Dali::Accessibility::Role + */ + ACCESSIBILITY_ROLE, + /** + * @brief Mark of able to highlight object. + * @details Name "accessibilityHighlightable", type Property::BOOLEAN. + */ + ACCESSIBILITY_HIGHLIGHTABLE, + /** + * @brief Set of accessibility attributes describing object in accessibility hierarchy + * @details Name "accessibilityAttributes", type Property::MAP + */ + ACCESSIBILITY_ATTRIBUTES, + + /** + * @brief Whether a Control and its descendants can emit key signals. + * @details Name "dispatchKeyEvents", type Property::BOOLEAN + * @note If a control's dispatchKeyEvents is set to false, then it's children will not emit a key event signal either. + */ + DISPATCH_KEY_EVENTS, }; } // namespace Property @@ -284,6 +360,224 @@ using VisualEventSignalType = Signal> GetAccessibilityRelations(Dali::Actor control); + +/** + * @brief The method removes all previously appended relations + * + * @param control object to append attribute to + */ +DALI_TOOLKIT_API void ClearAccessibilityRelations(Dali::Actor control); + +/** + * @brief The method allows to add or modify value matched with given key. + * Modification take place if key was previously set. + * + * @param control object to append attribute to + * @param key std::string value + * @param value std::string value + */ +DALI_TOOLKIT_API void AppendAccessibilityAttribute(Dali::Actor control, const std::string& key, const std::string value); + +/** + * @brief The method erases key with its value from accessibility attributes + * @param control object to append attribute to + * @param key std::string value + */ +DALI_TOOLKIT_API void RemoveAccessibilityAttribute(Dali::Actor control, const std::string& key); + +/** + * @brief The method clears accessibility attributes + * + * @param control object to append attribute to + */ +DALI_TOOLKIT_API void ClearAccessibilityAttributes(Dali::Actor control); + +/** + * @brief The method inserts reading information of an accessible object into attributes + * + * @param control object to append attribute to + * @param types Reading information types + */ +DALI_TOOLKIT_API void SetAccessibilityReadingInfoType(Dali::Actor control, const Dali::Accessibility::ReadingInfoTypes types); + +/** + * @brief The method returns reading information of an accessible object + * + * @param control object to append attribute to + * @return Reading information types + */ +DALI_TOOLKIT_API Dali::Accessibility::ReadingInfoTypes GetAccessibilityReadingInfoType(Dali::Actor control); + +/** + * @brief The method erases highlight. + * + * @param control object to append attribute to + * @return bool value, false when it is not possible or something went wrong, at the other way true. + */ +DALI_TOOLKIT_API bool ClearAccessibilityHighlight(Dali::Actor control); + +/** + * @brief The method grabs highlight. + * + * @param control object to append attribute to + * @return bool value, false when it is not possible or something went wrong, at the other way true. + */ +DALI_TOOLKIT_API bool GrabAccessibilityHighlight(Dali::Actor control); + +/** + * @brief The metod presents bitset of control's states. + * + * @param control object to append attribute to + * @return Dali::Accessibility::States is vector of enumerated State. + */ +DALI_TOOLKIT_API Dali::Accessibility::States GetAccessibilityStates(Dali::Actor control); + +/** + * @brief The method force sending notifications about current states to accessibility clients + * + * @param control object to append attribute to + * @param states mask with states expected to broadcast + * @param isRecursive flag pointing if notifications of children's state would be sent + */ +DALI_TOOLKIT_API void NotifyAccessibilityStateChange(Dali::Actor control, Dali::Accessibility::States states, bool isRecursive); + +/** + * The method allows to set specific constructor for creating accessibility structure + * + * Thank to this method hierarchy of accessibility objects can be based on internal hierarchy of Actors. + * It prevents from necessity of keeping two trees synchronized. + * The method should be called inside OnInitialize method of all classes inheriting from Control. + * + * Possible usage can be as follows: + * @code + * SetAccessibilityConstructor( []( Dali::Actor actor ) { + return std::unique_ptr< Dali::Accessibility::Accessible >( + new AccessibleImpl( actor, Dali::Accessibility::Role::DIALOG, true ) ); + } ); + * @endcode + * + * param constructor callback creating Accessible object + */ +DALI_TOOLKIT_API void SetAccessibilityConstructor(Dali::Actor control, std::function(Dali::Actor)> constructor); + +/** + * Returns accessibility object bound to actor, if any + * + * This method won't bound new accessibility object. Use Dali::Accessibility::Accessible::Get in that case. + */ +DALI_TOOLKIT_API Dali::Accessibility::Accessible* GetBoundAccessibilityObject(Dali::Actor control); + } // namespace DevelControl } // namespace Toolkit