Add DevelControl::Property::AUTOMATION_ID
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / devel-api / controls / control-devel.h
index 51cf1cc..3a94e1b 100644 (file)
  *
  */
 // EXTERNAL INCLUDES
-#include <dali/devel-api/adaptor-framework/accessibility-impl.h>
+#include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
 #include <dali/devel-api/adaptor-framework/input-method-context.h>
 #include <dali/public-api/animation/alpha-function.h>
 #include <dali/public-api/animation/time-period.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/devel-api/controls/accessible-impl.h>
+#include <dali-toolkit/devel-api/controls/control-accessible.h>
 #include <dali-toolkit/devel-api/visual-factory/visual-base.h>
 #include <dali-toolkit/public-api/controls/control.h>
 
@@ -175,16 +175,54 @@ enum
    * @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
+  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,
+
+  /**
+   * @brief Marks the object as invisible to AT-SPI clients.
+   * @details Name "accessibilityHidden", type Property::BOOLEAN.
+   * @note The representative Accessible object will not appear in the AT-SPI tree.
+   */
+  ACCESSIBILITY_HIDDEN,
+
+  /**
+   * @brief The actor ID of the clockwise focusable control.
+   * @details Name "clockwiseFocusableActorId", type Property::INTEGER.
+   *
+   */
+  CLOCKWISE_FOCUSABLE_ACTOR_ID,
+
+  /**
+   * @brief The actor ID of the conter-clockwise focusable control.
+   * @details Name "counterClockwiseFocusableActorId", type Property::INTEGER.
+   *
+   */
+  COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID,
+
+  /**
+   * @brief Identifier that allows the automation framework to find and interact with this element.
+   * @details Name "automationId", type Property::STRING.
+   * @note This is a string identifier (compared to @c Actor::Property::ID which is an integer).
+   * It will also appear in the AT-SPI tree under the key "automationId".
+   */
+  AUTOMATION_ID,
 };
 
 } // namespace Property
@@ -364,20 +402,6 @@ DALI_TOOLKIT_API VisualEventSignalType& VisualEventSignal(Control control);
 DALI_TOOLKIT_API Dali::Property GetVisualProperty(Control control, Dali::Property::Index index, Dali::Property::Key visualPropertyKey);
 
 /**
- * @brief Retrieve visual/renderer property animation between this Control and source control.
- * Input animation must be created before this method called.
- * And the animations between this method created are added the input animation.
- * This method generates visual/renderer property animation but not creates Actor property animation.
- *
- * @param[in] control The control
- * @param[in] animation generated animation
- * @param[in] source source control of the animation.
- * @param[in] alphaFunction AlphaFunction of the animation
- * @param[in] timePeriod TimePeriod of the animation
- */
-DALI_TOOLKIT_API void CreateTransitions(Control control, Dali::Animation& animation, Dali::Toolkit::Control source, AlphaFunction alphaFunction, TimePeriod timePeriod);
-
-/**
  * @brief The signal is emmited as a succession of "activate" signal send by accessibility client.
  * @return The signal to connect to
  */
@@ -460,7 +484,7 @@ DALI_TOOLKIT_API AccessibilityDoGestureSignalType& AccessibilityDoGestureSignal(
  * @param destination Actor object
  * @param relation    enumerated value describing relation
  */
-DALI_TOOLKIT_API void AppendAccessibilityRelation(Dali::Actor control, Actor destination, Dali::Accessibility::RelationType relation);
+DALI_TOOLKIT_API void AppendAccessibilityRelation(Toolkit::Control control, Dali::Actor destination, Dali::Accessibility::RelationType relation);
 
 /**
  * @brief The method allows removing relation
@@ -469,22 +493,24 @@ DALI_TOOLKIT_API void AppendAccessibilityRelation(Dali::Actor control, Actor des
  * @param destination Actor object
  * @param relation    enumerated value describing relation
  */
-DALI_TOOLKIT_API void RemoveAccessibilityRelation(Dali::Actor control, Actor destination, Dali::Accessibility::RelationType relation);
+DALI_TOOLKIT_API void RemoveAccessibilityRelation(Toolkit::Control control, Dali::Actor destination, Dali::Accessibility::RelationType relation);
 
 /**
- * @brief The method returns collection accessibility addresses representing objects connected with current object
+ * @brief Returns a collection of Accessible objects related to current object and grouped by relation type.
  *
- * @param control object to append attribute to
- * @return std::vector, where index is casted value of Accessibility::RelationType and value is std::vector of type Accessibility::Address
+ * @param control object to query
+ * @return collection of relations
+ *
+ * @see Dali::Accessibility::Accessible::GetRelationSet()
  */
-DALI_TOOLKIT_API std::vector<std::vector<Accessibility::Address>> GetAccessibilityRelations(Dali::Actor control);
+DALI_TOOLKIT_API std::vector<Accessibility::Relation> GetAccessibilityRelations(Toolkit::Control control);
 
 /**
  * @brief The method removes all previously appended relations
  *
  * @param control object to append attribute to
  */
-DALI_TOOLKIT_API void ClearAccessibilityRelations(Dali::Actor control);
+DALI_TOOLKIT_API void ClearAccessibilityRelations(Toolkit::Control control);
 
 /**
  * @brief The method allows to add or modify value matched with given key.
@@ -494,21 +520,21 @@ DALI_TOOLKIT_API void ClearAccessibilityRelations(Dali::Actor control);
  * @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);
+DALI_TOOLKIT_API void AppendAccessibilityAttribute(Toolkit::Control 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);
+DALI_TOOLKIT_API void RemoveAccessibilityAttribute(Toolkit::Control 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);
+DALI_TOOLKIT_API void ClearAccessibilityAttributes(Toolkit::Control control);
 
 /**
  * @brief The method inserts reading information of an accessible object into attributes
@@ -516,7 +542,7 @@ DALI_TOOLKIT_API void ClearAccessibilityAttributes(Dali::Actor control);
  * @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);
+DALI_TOOLKIT_API void SetAccessibilityReadingInfoType(Toolkit::Control control, const Dali::Accessibility::ReadingInfoTypes types);
 
 /**
  * @brief The method returns reading information of an accessible object
@@ -524,7 +550,7 @@ DALI_TOOLKIT_API void SetAccessibilityReadingInfoType(Dali::Actor control, const
  * @param control object to append attribute to
  * @return Reading information types
  */
-DALI_TOOLKIT_API Dali::Accessibility::ReadingInfoTypes GetAccessibilityReadingInfoType(Dali::Actor control);
+DALI_TOOLKIT_API Dali::Accessibility::ReadingInfoTypes GetAccessibilityReadingInfoType(Toolkit::Control control);
 
 /**
  * @brief The method erases highlight.
@@ -532,7 +558,7 @@ DALI_TOOLKIT_API Dali::Accessibility::ReadingInfoTypes GetAccessibilityReadingIn
  * @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);
+DALI_TOOLKIT_API bool ClearAccessibilityHighlight(Toolkit::Control control);
 
 /**
  * @brief The method grabs highlight.
@@ -540,7 +566,7 @@ DALI_TOOLKIT_API bool ClearAccessibilityHighlight(Dali::Actor control);
  * @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);
+DALI_TOOLKIT_API bool GrabAccessibilityHighlight(Toolkit::Control control);
 
 /**
  * @brief The metod presents bitset of control's states.
@@ -548,42 +574,16 @@ DALI_TOOLKIT_API bool GrabAccessibilityHighlight(Dali::Actor control);
  * @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);
+DALI_TOOLKIT_API Dali::Accessibility::States GetAccessibilityStates(Toolkit::Control 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<std::unique_ptr<Dali::Accessibility::Accessible>(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.
+ * @param states  mask with states expected to broadcast
+ * @param recurse flag pointing if notifications of children's state would be sent
  */
-DALI_TOOLKIT_API Dali::Accessibility::Accessible* GetBoundAccessibilityObject(Dali::Actor control);
+DALI_TOOLKIT_API void NotifyAccessibilityStateChange(Toolkit::Control control, Dali::Accessibility::States states, bool recurse);
 
 } // namespace DevelControl