1 #ifndef __DALI_ACCESSIBILITY_ADAPTOR_H__
2 #define __DALI_ACCESSIBILITY_ADAPTOR_H__
5 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
23 #include <dali/public-api/events/touch-event.h>
24 #include <dali/public-api/object/base-handle.h>
29 namespace Internal DALI_INTERNAL
33 class AccessibilityAdaptor;
37 class AccessibilityActionHandler;
38 class AccessibilityGestureHandler;
42 * @brief The AccessibilityAdaptor provides communication to the indicator and the accessibility manager interface (implemented in toolkit).
45 class DALI_IMPORT_API AccessibilityAdaptor : public BaseHandle
50 * @brief Create an uninitialized handle.
52 * This can be initialized by calling getting the adaptor from Dali::Adaptor.
54 AccessibilityAdaptor();
57 * @brief Retrieve a handle to the AccessibilityAdaptor.
59 * @return A handle to the AccessibilityAdaptor.
61 static AccessibilityAdaptor Get();
66 * This is non-virtual since derived Handle types must not contain data or virtual methods.
68 ~AccessibilityAdaptor();
71 * @brief Returns the current position of the read action.
72 * @return The current event position.
74 Vector2 GetReadPosition() const;
77 * @brief Query whether the accessibility(screen-reader) is enabled.
79 * The accessibility will be enabled by system setting.
80 * @return True if the accessibility(screen-reader) is enabled.
82 bool IsEnabled() const;
85 * @brief Set the handler to handle accessibility actions.
87 * @param[in] handler The Accessibility action handler.
88 * @note Handlers should remove themselves when they are destroyed.
90 void SetActionHandler(AccessibilityActionHandler& handler);
93 * @brief Set the handler to handle accessibility gestures.
95 * @param[in] handler The Accessibility gesture handler.
96 * @note Handlers should remove themselves when they are destroyed.
98 void SetGestureHandler(AccessibilityGestureHandler& handler);
101 * @brief Handle the accessibility action to move focus to the next focusable actor
102 * (by one finger flick down).
104 * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the end
105 * @return Whether the action is performed successfully or not.
107 bool HandleActionNextEvent(bool allowEndFeedback = true);
110 * @brief Handle the accessibility action to move focus to the previous focusable actor
111 * (by one finger flick up).
113 * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the end
114 * @return Whether the action is performed successfully or not.
116 bool HandleActionPreviousEvent(bool allowEndFeedback = true);
119 * @brief Handle the accessibility action to activate the current focused actor (by one
122 * @return Whether the action is performed successfully or not.
124 bool HandleActionActivateEvent();
127 * @brief Handle the accessibility action to focus and read the actor (by one finger tap or move).
129 * @param x x position of event
130 * @param y y position of event
131 * @param allowReadAgain true if the action read again the same object (i.e. read action)
132 * false if the action just read when the focus object is changed (i.e. over action)
133 * @return Whether the action is performed successfully or not.
135 bool HandleActionReadEvent(unsigned int x, unsigned int y, bool allowReadAgain);
138 * @brief Handle the accessibility action to move focus to the next focusable actor
139 * (by one finger flick right).
141 * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the end
142 * @return Whether the action is performed successfully or not.
144 bool HandleActionReadNextEvent(bool allowEndFeedback = true);
147 * @brief Handle the accessibility action to move focus to the previous focusable actor
148 * (by one finger flick up).
150 * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the front
151 * @return Whether the action is performed successfully or not.
153 bool HandleActionReadPreviousEvent(bool allowEndFeedback = true);
156 * @brief Handle the accessibility action to change the value when the current focused
157 * actor is a slider (by double finger down and move up and right).
159 * @return Whether the action is performed successfully or not.
161 bool HandleActionUpEvent();
164 * @brief Handle the accessibility action to change the value when the current focused
165 * actor is a slider (by double finger down and move down and left).
167 * @return Whether the action is performed successfully or not.
169 bool HandleActionDownEvent();
172 * @brief Handle the accessibility action to clear the focus from the current focused
173 * actor if any, so that no actor is focused in the focus chain.
175 * @return Whether the action is performed successfully or not.
177 bool HandleActionClearFocusEvent();
180 * @brief Handle the accessibility action to scroll when there is a scroller on the touched position
181 * (by 2 finger touch & move, 2 finger flick).
183 * @param[in] point The touch point information.
184 * @param[in] timeStamp The time the touch occurred.
185 * @return Whether the action is performed successfully or not.
187 bool HandleActionScrollEvent(const TouchPoint& point, unsigned long timeStamp);
190 * @brief Handle the accessibility action to move for the current focused actor
191 * (by 1 finger tap & hold and move).
193 * @param[in] point The touch point information.
194 * @param[in] timeStamp The time the touch occurred.
195 * @return Whether the action is performed successfully or not.
197 bool HandleActionTouchEvent(const TouchPoint& point, unsigned long timeStamp);
200 * @brief Handle the accessibility action to navigate back (by two fingers circle draw).
201 * @return Whether the action is performed successfully or not.
203 bool HandleActionBackEvent();
206 * @brief Handle the accessibility action to enable the feature.
208 void HandleActionEnableEvent();
211 * @brief Handle the accessibility action to disable the feature.
213 void HandleActionDisableEvent();
216 * @brief Handle the accessibility action to scroll up the list and focus on
217 * the first item on the list after the scrolling and read the item
218 * (by two finger swipe up).
220 * @return Whether the action is performed successfully or not.
222 bool HandleActionScrollUpEvent();
225 * @brief Handle the accessibility action to scroll down the list and focus on
226 * the first item on the list after the scrolling and read the item
227 * (by two finger swipe down).
229 * @return Whether the action is performed successfully or not.
231 bool HandleActionScrollDownEvent();
234 * @brief Handle the accessibility action to scroll left to the previous page
235 * (by two finger swipe left).
237 * @return Whether the action is performed successfully or not.
239 bool HandleActionPageLeftEvent();
242 * @brief Handle the accessibility action to scroll right to the next page
243 * (by two finger swipe right).
245 * @return Whether the action is performed successfully or not.
247 bool HandleActionPageRightEvent();
250 * @brief Handle the accessibility action to scroll up to the previous page
251 * (by one finger swipe left and right).
253 * @return Whether the action is performed successfully or not.
255 bool HandleActionPageUpEvent();
258 * @brief Handle the accessibility action to scroll down to the next page
259 * (by one finger swipe right and left).
261 * @return Whether the action is performed successfully or not.
263 bool HandleActionPageDownEvent();
266 * @brief Handle the accessibility action to move the focus to the first item on the screen
267 * (by one finger swipe up and down).
269 * @return Whether the action is performed successfully or not.
271 bool HandleActionMoveToFirstEvent();
274 * @brief Handle the accessibility action to move the focus to the last item on the screen
275 * (by one finger swipe down and up).
277 * @return Whether the action is performed successfully or not.
279 bool HandleActionMoveToLastEvent();
282 * @brief Handle the accessibility action to move the focus to the first item on the top
283 * and read from the top item continously (by three fingers single tap).
285 * @return Whether the action is performed successfully or not.
287 bool HandleActionReadFromTopEvent();
290 * @brief Handle the accessibility action to move focus to and read from the next focusable
291 * actor continously (by three fingers double tap).
293 * @return Whether the action is performed successfully or not.
295 bool HandleActionReadFromNextEvent();
298 * @brief Handle the accessibility action to do the zooming
299 * (by one finger triple tap).
301 * @return Whether the action is performed successfully or not.
303 bool HandleActionZoomEvent();
306 * @brief Handle the accessibility action to read the information in the indicator
307 * (by two fingers triple tap).
309 * @return Whether the action is performed successfully or not.
311 bool HandleActionReadIndicatorInformationEvent();
314 * @brief Handle the accessibility action to pause/resume the current speech
315 * (by two fingers single tap).
317 * @return Whether the action is performed successfully or not.
319 bool HandleActionReadPauseResumeEvent();
322 * @brief Handle the accessibility action to start/stop the current action
323 * (by two fingers double tap).
325 * @return Whether the action is performed successfully or not.
327 bool HandleActionStartStopEvent();
329 public: // Not intended for application developers
332 * @brief Creates a handle using the Adaptor::Internal implementation.
334 * @param[in] adaptor The AccessibilityAdaptor implementation.
336 DALI_INTERNAL AccessibilityAdaptor( Internal::Adaptor::AccessibilityAdaptor& adaptor );
339 * @brief This constructor is used by AccessibilityAdaptor::Get().
341 * @param[in] adaptor A pointer to the accessibility adaptor.
343 explicit DALI_INTERNAL AccessibilityAdaptor( Internal::Adaptor::AccessibilityAdaptor* adaptor );
348 #endif // __DALI_ACCESSIBILITY_ADAPTOR_H__