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::GetReadPosition() const
84 Vector2 GetReadPosition() const;
87 * @copydoc Dali::AccessibilityAdaptor::SetActionHandler()
89 void SetActionHandler(AccessibilityActionHandler& handler);
92 * @copydoc Dali::AccessibilityAdaptor::SetGestureHandler()
94 void SetGestureHandler(AccessibilityGestureHandler& handler);
97 * @copydoc Dali::AccessibilityAdaptor::HandleActionNextEvent()
99 virtual bool HandleActionNextEvent( bool allowEndFeedback = true);
102 * @copydoc Dali::AccessibilityAdaptor::HandleActionPreviousEvent()
104 virtual bool HandleActionPreviousEvent( bool allowEndFeedback = true);
107 * @copydoc Dali::AccessibilityAdaptor::HandleActionActivateEvent()
109 virtual bool HandleActionActivateEvent();
112 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadEvent()
114 virtual bool HandleActionReadEvent( unsigned int x, unsigned int y, bool allowReadAgain );
117 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadNextEvent()
119 virtual bool HandleActionReadNextEvent( bool allowEndFeedback = true);
122 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadPreviousEvent()
124 virtual bool HandleActionReadPreviousEvent( bool allowEndFeedback = true);
127 * @copydoc Dali::AccessibilityAdaptor::HandleActionUpEvent()
129 virtual bool HandleActionUpEvent();
132 * @copydoc Dali::AccessibilityAdaptor::HandleActionDownEvent()
134 virtual bool HandleActionDownEvent();
137 * @copydoc Dali::AccessibilityAdaptor::HandleActionClearFocusEvent()
139 bool HandleActionClearFocusEvent();
142 * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollEvent()
144 bool HandleActionScrollEvent(const TouchPoint& point, uint32_t timeStamp);
147 * @copydoc Dali::AccessibilityAdaptor::HandleActionBackEvent()
149 bool HandleActionBackEvent();
152 * @copydoc Dali::AccessibilityAdaptor::HandleActionEnableEvent()
154 void HandleActionEnableEvent();
157 * @copydoc Dali::AccessibilityAdaptor::HandleActionDisableEvent()
159 void HandleActionDisableEvent();
162 * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollUpEvent()
164 bool HandleActionScrollUpEvent();
167 * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollDownEvent()
169 bool HandleActionScrollDownEvent();
172 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageLeftEvent()
174 bool HandleActionPageLeftEvent();
177 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageRightEvent()
179 bool HandleActionPageRightEvent();
182 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageUpEvent()
184 bool HandleActionPageUpEvent();
187 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageDownEvent()
189 bool HandleActionPageDownEvent();
192 * @copydoc Dali::AccessibilityAdaptor::HandleActionMoveToFirstEvent()
194 bool HandleActionMoveToFirstEvent();
197 * @copydoc Dali::AccessibilityAdaptor::HandleActionMoveToLastEvent()
199 bool HandleActionMoveToLastEvent();
202 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadFromTopEvent()
204 bool HandleActionReadFromTopEvent();
207 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadFromNextEvent()
209 bool HandleActionReadFromNextEvent();
212 * @copydoc Dali::AccessibilityAdaptor::HandleActionZoomEvent()
214 bool HandleActionZoomEvent();
217 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadPauseResumeEvent()
219 bool HandleActionReadPauseResumeEvent();
222 * @copydoc Dali::AccessibilityAdaptor::HandleActionStartStopEvent()
224 bool HandleActionStartStopEvent();
231 ~AccessibilityAdaptor() override;
236 * @brief Called when the singleton is destroyed.
238 * @note This can be reimplemented for different platforms.
239 * @return The instance of the AccessibilityAdaptor.
241 static void OnDestroy();
244 AccessibilityAdaptor( const AccessibilityAdaptor& );
245 AccessibilityAdaptor& operator=( AccessibilityAdaptor& );
249 Dali::Integration::TouchEventCombiner mCombiner; ///< Combines multi-touch events.
251 Vector2 mReadPosition; ///< ActionRead position
253 AccessibilityActionHandler* mActionHandler; ///< The pointer of accessibility action handler
255 AccessibilityGestureDetectorPtr mAccessibilityGestureDetector; ///< The accessibility gesture detector
257 bool mIsEnabled : 1; ///< enable/disable the accessibility action
261 // Helpers for public-api forwarding methods
263 inline static Internal::Adaptor::AccessibilityAdaptor& GetImplementation(Dali::AccessibilityAdaptor& adaptor)
265 DALI_ASSERT_ALWAYS( adaptor && "AccessibilityAdaptor handle is empty" );
267 BaseObject& handle = adaptor.GetBaseObject();
269 return static_cast<Internal::Adaptor::AccessibilityAdaptor&>(handle);
272 inline static const Internal::Adaptor::AccessibilityAdaptor& GetImplementation(const Dali::AccessibilityAdaptor& adaptor)
274 DALI_ASSERT_ALWAYS( adaptor && "AccessibilityAdaptor handle is empty" );
276 const BaseObject& handle = adaptor.GetBaseObject();
278 return static_cast<const Internal::Adaptor::AccessibilityAdaptor&>(handle);
283 } // namespace Adaptor
285 } // namespace Internal
289 #endif // DALI_INTERNAL_ACCESSIBILITY_ADAPTOR_H