1 #ifndef DALI_INTERNAL_ACCESSIBILITY_ADAPTOR_H
2 #define DALI_INTERNAL_ACCESSIBILITY_ADAPTOR_H
5 * Copyright (c) 2019 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.
24 #include <dali/public-api/object/base-object.h>
25 #include <dali/public-api/math/vector2.h>
26 #include <dali/devel-api/events/touch-point.h>
27 #include <dali/integration-api/events/touch-event-combiner.h>
30 #include <dali/devel-api/adaptor-framework/accessibility-adaptor.h>
31 #include <dali/devel-api/adaptor-framework/accessibility-action-handler.h>
32 #include <dali/devel-api/adaptor-framework/accessibility-gesture-handler.h>
33 #include <dali/internal/accessibility/common/accessibility-gesture-detector.h>
45 * This class detects to accessibility action
47 class AccessibilityAdaptor : public Dali::BaseObject
54 AccessibilityAdaptor();
57 * @brief Get an instance of the AccessibilityAdaptor.
59 * @note This singleton-style getter can be reimplemented for different platforms.
60 * @return The instance of the AccessibilityAdaptor.
62 static Dali::AccessibilityAdaptor Get();
65 * Turn on accessibility action
66 * This method should be called by vconf callback
68 void EnableAccessibility();
71 * Turn off accessibility action
72 * This method should be called by vconf callback
74 void DisableAccessibility();
77 * @copydoc Dali::AccessibilityAdaptor::IsEnabled()
79 bool IsEnabled() const;
82 * @copydoc Dali::AccessibilityAdaptor::SetForcedEnable()
84 void SetForcedEnable( bool forced );
87 * Whether the accessibility is enabled forcibly or not
89 bool IsForcedEnable() const;
92 * @copydoc Dali::AccessibilityAdaptor::GetReadPosition() const
94 Vector2 GetReadPosition() const;
97 * @copydoc Dali::AccessibilityAdaptor::SetActionHandler()
99 void SetActionHandler(AccessibilityActionHandler& handler);
102 * @copydoc Dali::AccessibilityAdaptor::SetGestureHandler()
104 void SetGestureHandler(AccessibilityGestureHandler& handler);
107 * @copydoc Dali::AccessibilityAdaptor::HandleActionNextEvent()
109 virtual bool HandleActionNextEvent( bool allowEndFeedback = true);
112 * @copydoc Dali::AccessibilityAdaptor::HandleActionPreviousEvent()
114 virtual bool HandleActionPreviousEvent( bool allowEndFeedback = true);
117 * @copydoc Dali::AccessibilityAdaptor::HandleActionActivateEvent()
119 virtual bool HandleActionActivateEvent();
122 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadEvent()
124 virtual bool HandleActionReadEvent( unsigned int x, unsigned int y, bool allowReadAgain );
127 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadNextEvent()
129 virtual bool HandleActionReadNextEvent( bool allowEndFeedback = true);
132 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadPreviousEvent()
134 virtual bool HandleActionReadPreviousEvent( bool allowEndFeedback = true);
137 * @copydoc Dali::AccessibilityAdaptor::HandleActionUpEvent()
139 virtual bool HandleActionUpEvent();
142 * @copydoc Dali::AccessibilityAdaptor::HandleActionDownEvent()
144 virtual bool HandleActionDownEvent();
147 * @copydoc Dali::AccessibilityAdaptor::HandleActionClearFocusEvent()
149 bool HandleActionClearFocusEvent();
152 * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollEvent()
154 bool HandleActionScrollEvent(const TouchPoint& point, uint32_t timeStamp);
157 * @copydoc Dali::AccessibilityAdaptor::HandleActionBackEvent()
159 bool HandleActionBackEvent();
162 * @copydoc Dali::AccessibilityAdaptor::HandleActionEnableEvent()
164 void HandleActionEnableEvent();
167 * @copydoc Dali::AccessibilityAdaptor::HandleActionDisableEvent()
169 void HandleActionDisableEvent();
172 * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollUpEvent()
174 bool HandleActionScrollUpEvent();
177 * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollDownEvent()
179 bool HandleActionScrollDownEvent();
182 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageLeftEvent()
184 bool HandleActionPageLeftEvent();
187 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageRightEvent()
189 bool HandleActionPageRightEvent();
192 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageUpEvent()
194 bool HandleActionPageUpEvent();
197 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageDownEvent()
199 bool HandleActionPageDownEvent();
202 * @copydoc Dali::AccessibilityAdaptor::HandleActionMoveToFirstEvent()
204 bool HandleActionMoveToFirstEvent();
207 * @copydoc Dali::AccessibilityAdaptor::HandleActionMoveToLastEvent()
209 bool HandleActionMoveToLastEvent();
212 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadFromTopEvent()
214 bool HandleActionReadFromTopEvent();
217 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadFromNextEvent()
219 bool HandleActionReadFromNextEvent();
222 * @copydoc Dali::AccessibilityAdaptor::HandleActionZoomEvent()
224 bool HandleActionZoomEvent();
227 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadPauseResumeEvent()
229 bool HandleActionReadPauseResumeEvent();
232 * @copydoc Dali::AccessibilityAdaptor::HandleActionStartStopEvent()
234 bool HandleActionStartStopEvent();
241 ~AccessibilityAdaptor() override;
246 * @brief Called when the singleton is destroyed.
248 * @note This can be reimplemented for different platforms.
249 * @return The instance of the AccessibilityAdaptor.
251 static void OnDestroy();
254 AccessibilityAdaptor( const AccessibilityAdaptor& );
255 AccessibilityAdaptor& operator=( AccessibilityAdaptor& );
259 Dali::Integration::TouchEventCombiner mCombiner; ///< Combines multi-touch events.
261 Vector2 mReadPosition; ///< ActionRead position
263 AccessibilityActionHandler* mActionHandler; ///< The pointer of accessibility action handler
265 AccessibilityGestureDetectorPtr mAccessibilityGestureDetector; ///< The accessibility gesture detector
267 bool mIsEnabled : 1; ///< enable/disable the accessibility action
269 bool mIsForced : 1; ///< Is the accessibility enabled forcibly
273 // Helpers for public-api forwarding methods
275 inline static Internal::Adaptor::AccessibilityAdaptor& GetImplementation(Dali::AccessibilityAdaptor& adaptor)
277 DALI_ASSERT_ALWAYS( adaptor && "AccessibilityAdaptor handle is empty" );
279 BaseObject& handle = adaptor.GetBaseObject();
281 return static_cast<Internal::Adaptor::AccessibilityAdaptor&>(handle);
284 inline static const Internal::Adaptor::AccessibilityAdaptor& GetImplementation(const Dali::AccessibilityAdaptor& adaptor)
286 DALI_ASSERT_ALWAYS( adaptor && "AccessibilityAdaptor handle is empty" );
288 const BaseObject& handle = adaptor.GetBaseObject();
290 return static_cast<const Internal::Adaptor::AccessibilityAdaptor&>(handle);
295 } // namespace Adaptor
297 } // namespace Internal
301 #endif // DALI_INTERNAL_ACCESSIBILITY_ADAPTOR_H