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/public-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::HandleActionTouchEvent()
149 bool HandleActionTouchEvent(const TouchPoint& point, uint32_t timeStamp);
152 * @copydoc Dali::AccessibilityAdaptor::HandleActionBackEvent()
154 bool HandleActionBackEvent();
157 * @copydoc Dali::AccessibilityAdaptor::HandleActionEnableEvent()
159 void HandleActionEnableEvent();
162 * @copydoc Dali::AccessibilityAdaptor::HandleActionDisableEvent()
164 void HandleActionDisableEvent();
167 * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollUpEvent()
169 bool HandleActionScrollUpEvent();
172 * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollDownEvent()
174 bool HandleActionScrollDownEvent();
177 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageLeftEvent()
179 bool HandleActionPageLeftEvent();
182 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageRightEvent()
184 bool HandleActionPageRightEvent();
187 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageUpEvent()
189 bool HandleActionPageUpEvent();
192 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageDownEvent()
194 bool HandleActionPageDownEvent();
197 * @copydoc Dali::AccessibilityAdaptor::HandleActionMoveToFirstEvent()
199 bool HandleActionMoveToFirstEvent();
202 * @copydoc Dali::AccessibilityAdaptor::HandleActionMoveToLastEvent()
204 bool HandleActionMoveToLastEvent();
207 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadFromTopEvent()
209 bool HandleActionReadFromTopEvent();
212 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadFromNextEvent()
214 bool HandleActionReadFromNextEvent();
217 * @copydoc Dali::AccessibilityAdaptor::HandleActionZoomEvent()
219 bool HandleActionZoomEvent();
222 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadPauseResumeEvent()
224 bool HandleActionReadPauseResumeEvent();
227 * @copydoc Dali::AccessibilityAdaptor::HandleActionStartStopEvent()
229 bool HandleActionStartStopEvent();
236 virtual ~AccessibilityAdaptor();
241 * @brief Called when the singleton is destroyed.
243 * @note This can be reimplemented for different platforms.
244 * @return The instance of the AccessibilityAdaptor.
246 static void OnDestroy();
249 AccessibilityAdaptor( const AccessibilityAdaptor& );
250 AccessibilityAdaptor& operator=( AccessibilityAdaptor& );
254 Dali::Integration::TouchEventCombiner mCombiner; ///< Combines multi-touch events.
256 Vector2 mReadPosition; ///< ActionRead position
258 AccessibilityActionHandler* mActionHandler; ///< The pointer of accessibility action handler
260 AccessibilityGestureDetectorPtr mAccessibilityGestureDetector; ///< The accessibility gesture detector
262 bool mIsEnabled : 1; ///< enable/disable the accessibility action
266 // Helpers for public-api forwarding methods
268 inline static Internal::Adaptor::AccessibilityAdaptor& GetImplementation(Dali::AccessibilityAdaptor& adaptor)
270 DALI_ASSERT_ALWAYS( adaptor && "AccessibilityAdaptor handle is empty" );
272 BaseObject& handle = adaptor.GetBaseObject();
274 return static_cast<Internal::Adaptor::AccessibilityAdaptor&>(handle);
277 inline static const Internal::Adaptor::AccessibilityAdaptor& GetImplementation(const Dali::AccessibilityAdaptor& adaptor)
279 DALI_ASSERT_ALWAYS( adaptor && "AccessibilityAdaptor handle is empty" );
281 const BaseObject& handle = adaptor.GetBaseObject();
283 return static_cast<const Internal::Adaptor::AccessibilityAdaptor&>(handle);
288 } // namespace Adaptor
290 } // namespace Internal
294 #endif // DALI_INTERNAL_ACCESSIBILITY_ADAPTOR_H