1 #ifndef DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_MANAGER_H
2 #define DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_MANAGER_H
5 * Copyright (c) 2021 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.
22 #include <dali/public-api/object/base-object.h>
27 #include <dali-toolkit/devel-api/accessibility-manager/accessibility-manager.h>
28 #include <dali-toolkit/public-api/controls/control.h>
36 class AccessibilityManager;
39 * @copydoc Toolkit::AccessibilityManager
41 class AccessibilityManager : public Dali::BaseObject, public Dali::ConnectionTracker
44 typedef Dali::Toolkit::AccessibilityManager::AccessibilityActionSignalType AccessibilityActionSignalType;
45 typedef Dali::Toolkit::AccessibilityManager::AccessibilityActionScrollSignalType AccessibilityActionScrollSignalType;
48 * Construct a new AccessibilityManager.
50 AccessibilityManager();
53 * @copydoc Toolkit::AccessibilityManager::SetAccessibilityAttribute
55 void SetAccessibilityAttribute(Actor actor, Toolkit::AccessibilityManager::AccessibilityAttribute type, const std::string& text);
58 * @copydoc Toolkit::AccessibilityManager::GetAccessibilityAttribute
60 std::string GetAccessibilityAttribute(Actor actor, Toolkit::AccessibilityManager::AccessibilityAttribute type) const;
63 * @copydoc Toolkit::AccessibilityManager::SetFocusOrder
65 void SetFocusOrder(Actor actor, const unsigned int order);
68 * @copydoc Toolkit::AccessibilityManager::GetFocusOrder
70 unsigned int GetFocusOrder(Actor actor) const;
73 * @copydoc Toolkit::AccessibilityManager::GenerateNewFocusOrder
75 unsigned int GenerateNewFocusOrder() const;
78 * @copydoc Toolkit::AccessibilityManager::GetActorByFocusOrder
80 Actor GetActorByFocusOrder(const unsigned int order);
83 * @copydoc Toolkit::AccessibilityManager::SetCurrentFocusActor
85 bool SetCurrentFocusActor(Actor actor);
88 * @copydoc Toolkit::AccessibilityManager::GetCurrentFocusActor
90 Actor GetCurrentFocusActor();
93 * @copydoc Toolkit::AccessibilityManager::GetCurrentFocusGroup
95 Actor GetCurrentFocusGroup();
98 * @copydoc Toolkit::AccessibilityManager::GetCurrentFocusOrder
100 unsigned int GetCurrentFocusOrder();
103 * @copydoc Toolkit::AccessibilityManager::MoveFocusForward
105 bool MoveFocusForward();
108 * @copydoc Toolkit::AccessibilityManager::MoveFocusBackward
110 bool MoveFocusBackward();
113 * @copydoc Toolkit::AccessibilityManager::ClearFocus
118 * @copydoc Toolkit::AccessibilityManager::Reset
123 * @copydoc Toolkit::AccessibilityManager::SetFocusGroup
125 void SetFocusGroup(Actor actor, bool isFocusGroup);
128 * @copydoc Toolkit::AccessibilityManager::IsFocusGroup
130 bool IsFocusGroup(Actor actor) const;
133 * @copydoc Toolkit::AccessibilityManager::SetGroupMode
135 void SetGroupMode(bool enabled);
138 * @copydoc Toolkit::AccessibilityManager::GetGroupMode
140 bool GetGroupMode() const;
143 * @copydoc Toolkit::AccessibilityManager::GetFocusGroup
145 Actor GetFocusGroup(Actor actor);
148 * @copydoc Toolkit::AccessibilityManager::GetReadPosition
150 Vector2 GetReadPosition() const;
153 * @copydoc Toolkit::AccessibilityManager::SetWrapMode
155 void SetWrapMode(bool wrapped);
158 * @copydoc Toolkit::AccessibilityManager::GetWrapMode
160 bool GetWrapMode() const;
163 * @copydoc Toolkit::AccessibilityManager::SetFocusIndicatorActor
165 void SetFocusIndicatorActor(Actor indicator);
168 * @copydoc Toolkit::AccessibilityManager::GetFocusIndicatorActor
170 Actor GetFocusIndicatorActor();
174 * @copydoc Toolkit::AccessibilityManager::FocusChangedSignal()
176 Toolkit::AccessibilityManager::FocusChangedSignalType& FocusChangedSignal();
179 * @copydoc Toolkit::AccessibilityManager::FocusOvershotSignal()
181 Toolkit::AccessibilityManager::FocusOvershotSignalType& FocusOvershotSignal();
184 * @copydoc Toolkit::AccessibilityManager::FocusedActorActivatedSignal()
186 Toolkit::AccessibilityManager::FocusedActorActivatedSignalType& FocusedActorActivatedSignal();
190 * @copydoc Dali::Toolkit::AccessibilityManager::StatusChangedSignal
192 AccessibilityActionSignalType& StatusChangedSignal()
194 return mStatusChangedSignal;
198 * @copydoc Dali::Toolkit::AccessibilityManager::AccessibilityAdaptor::ActionNextSignal
200 AccessibilityActionSignalType& ActionNextSignal()
202 return mActionNextSignal;
206 * @copydoc Dali::Toolkit::AccessibilityManager::ActionPreviousSignal
208 AccessibilityActionSignalType& ActionPreviousSignal()
210 return mActionPreviousSignal;
214 * @copydoc Dali::Toolkit::AccessibilityManager::ActionActivateSignal
216 AccessibilityActionSignalType& ActionActivateSignal()
218 return mActionActivateSignal;
222 * @copydoc Dali::Toolkit::AccessibilityManager::ActionOverSignal
224 AccessibilityActionSignalType& ActionOverSignal()
226 return mActionOverSignal;
230 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadSignal
232 AccessibilityActionSignalType& ActionReadSignal()
234 return mActionReadSignal;
238 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadNextSignal
240 AccessibilityActionSignalType& ActionReadNextSignal()
242 return mActionReadNextSignal;
246 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadPreviousSignal
248 AccessibilityActionSignalType& ActionReadPreviousSignal()
250 return mActionReadPreviousSignal;
254 * @copydoc Dali::Toolkit::AccessibilityManager::ActionUpSignal
256 AccessibilityActionSignalType& ActionUpSignal()
258 return mActionUpSignal;
262 * @copydoc Dali::Toolkit::AccessibilityManager::ActionDownSignal
264 AccessibilityActionSignalType& ActionDownSignal()
266 return mActionDownSignal;
270 * @copydoc Dali::Toolkit::AccessibilityManager::ActionClearFocusSignal
272 AccessibilityActionSignalType& ActionClearFocusSignal()
274 return mActionClearFocusSignal;
278 * @copydoc Dali::Toolkit::AccessibilityManager::ActionBackSignal
280 AccessibilityActionSignalType& ActionBackSignal()
282 return mActionBackSignal;
286 * @copydoc Dali::Toolkit::AccessibilityManager::ActionScrollUpSignal
288 AccessibilityActionSignalType& ActionScrollUpSignal()
290 return mActionScrollUpSignal;
294 * @copydoc Dali::Toolkit::AccessibilityManager::ActionScrollDownSignal
296 AccessibilityActionSignalType& ActionScrollDownSignal()
298 return mActionScrollDownSignal;
302 * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageLeftSignal
304 AccessibilityActionSignalType& ActionPageLeftSignal()
306 return mActionPageLeftSignal;
310 * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageRightSignal
312 AccessibilityActionSignalType& ActionPageRightSignal()
314 return mActionPageRightSignal;
318 * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageUpSignal
320 AccessibilityActionSignalType& ActionPageUpSignal()
322 return mActionPageUpSignal;
326 * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageDownSignal
328 AccessibilityActionSignalType& ActionPageDownSignal()
330 return mActionPageDownSignal;
334 * @copydoc Dali::Toolkit::AccessibilityManager::ActionMoveToFirstSignal
336 AccessibilityActionSignalType& ActionMoveToFirstSignal()
338 return mActionMoveToFirstSignal;
342 * @copydoc Dali::Toolkit::AccessibilityManager::ActionMoveToLastSignal
344 AccessibilityActionSignalType& ActionMoveToLastSignal()
346 return mActionMoveToLastSignal;
350 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadFromTopSignal
352 AccessibilityActionSignalType& ActionReadFromTopSignal()
354 return mActionReadFromTopSignal;
358 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadFromNextSignal
360 AccessibilityActionSignalType& ActionReadFromNextSignal()
362 return mActionReadFromNextSignal;
366 * @copydoc Dali::Toolkit::AccessibilityManager::ActionZoomSignal
368 AccessibilityActionSignalType& ActionZoomSignal()
370 return mActionZoomSignal;
374 * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadPauseResumeSignal
376 AccessibilityActionSignalType& ActionReadPauseResumeSignal()
378 return mActionReadPauseResumeSignal;
382 * @copydoc Dali::Toolkit::AccessibilityManager::ActionStartStopSignal
384 AccessibilityActionSignalType& ActionStartStopSignal()
386 return mActionStartStopSignal;
390 * @copydoc Dali::Toolkit::AccessibilityManager::ActionScrollSignal
392 AccessibilityActionScrollSignalType& ActionScrollSignal()
394 return mActionScrollSignal;
401 virtual ~AccessibilityManager();
405 AccessibilityManager(const AccessibilityManager&);
407 AccessibilityManager& operator=(const AccessibilityManager& rhs);
410 std::vector<Toolkit::Control> mFocusOrder;
412 Toolkit::AccessibilityManager::FocusChangedSignalType mFocusChangedSignal; ///< The signal to notify the focus change
413 Toolkit::AccessibilityManager::FocusOvershotSignalType mFocusOvershotSignal; ///< The signal to notify the focus overshooted
414 Toolkit::AccessibilityManager::FocusedActorActivatedSignalType mFocusedActorActivatedSignal; ///< The signal to notify the activation of focused actor
417 AccessibilityActionSignalType mStatusChangedSignal;
418 AccessibilityActionSignalType mActionNextSignal;
419 AccessibilityActionSignalType mActionPreviousSignal;
420 AccessibilityActionSignalType mActionActivateSignal;
421 AccessibilityActionSignalType mActionOverSignal;
422 AccessibilityActionSignalType mActionReadSignal;
423 AccessibilityActionSignalType mActionReadNextSignal;
424 AccessibilityActionSignalType mActionReadPreviousSignal;
425 AccessibilityActionSignalType mActionUpSignal;
426 AccessibilityActionSignalType mActionDownSignal;
427 AccessibilityActionSignalType mActionClearFocusSignal;
428 AccessibilityActionSignalType mActionBackSignal;
429 AccessibilityActionSignalType mActionScrollUpSignal;
430 AccessibilityActionSignalType mActionScrollDownSignal;
431 AccessibilityActionSignalType mActionPageLeftSignal;
432 AccessibilityActionSignalType mActionPageRightSignal;
433 AccessibilityActionSignalType mActionPageUpSignal;
434 AccessibilityActionSignalType mActionPageDownSignal;
435 AccessibilityActionSignalType mActionMoveToFirstSignal;
436 AccessibilityActionSignalType mActionMoveToLastSignal;
437 AccessibilityActionSignalType mActionReadFromTopSignal;
438 AccessibilityActionSignalType mActionReadFromNextSignal;
439 AccessibilityActionSignalType mActionZoomSignal;
440 AccessibilityActionSignalType mActionReadIndicatorInformationSignal;
441 AccessibilityActionSignalType mActionReadPauseResumeSignal;
442 AccessibilityActionSignalType mActionStartStopSignal;
443 AccessibilityActionScrollSignalType mActionScrollSignal;
446 } // namespace Internal
448 inline Internal::AccessibilityManager& GetImpl(Dali::Toolkit::AccessibilityManager& obj)
450 DALI_ASSERT_ALWAYS(obj);
452 Dali::BaseObject& handle = obj.GetBaseObject();
454 return static_cast<Internal::AccessibilityManager&>(handle);
457 inline const Internal::AccessibilityManager& GetImpl(const Dali::Toolkit::AccessibilityManager& obj)
459 DALI_ASSERT_ALWAYS(obj);
461 const Dali::BaseObject& handle = obj.GetBaseObject();
463 return static_cast<const Internal::AccessibilityManager&>(handle);
466 } // namespace Toolkit
470 #endif // DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_MANAGER_H