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::SetFocusedActorPosition()
109 void SetFocusedActorPosition(Vector2 currentPosition);
112 * @brief Returns the current position of the focused actor.
113 * @return The current position of the focused actor
115 Vector2 GetFocusedActorPosition() const;
118 * @copydoc Dali::AccessibilityAdaptor::HandleActionNextEvent()
120 virtual bool HandleActionNextEvent( bool allowEndFeedback = true);
123 * @copydoc Dali::AccessibilityAdaptor::HandleActionPreviousEvent()
125 virtual bool HandleActionPreviousEvent( bool allowEndFeedback = true);
128 * @copydoc Dali::AccessibilityAdaptor::HandleActionActivateEvent()
130 virtual bool HandleActionActivateEvent();
133 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadEvent()
135 virtual bool HandleActionReadEvent( unsigned int x, unsigned int y, bool allowReadAgain );
138 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadNextEvent()
140 virtual bool HandleActionReadNextEvent( bool allowEndFeedback = true);
143 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadPreviousEvent()
145 virtual bool HandleActionReadPreviousEvent( bool allowEndFeedback = true);
148 * @copydoc Dali::AccessibilityAdaptor::HandleActionUpEvent()
150 virtual bool HandleActionUpEvent();
153 * @copydoc Dali::AccessibilityAdaptor::HandleActionDownEvent()
155 virtual bool HandleActionDownEvent();
158 * @copydoc Dali::AccessibilityAdaptor::HandleActionClearFocusEvent()
160 bool HandleActionClearFocusEvent();
163 * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollEvent()
165 bool HandleActionScrollEvent(const TouchPoint& point, uint32_t timeStamp);
168 * @copydoc Dali::AccessibilityAdaptor::HandleActionBackEvent()
170 bool HandleActionBackEvent();
173 * @copydoc Dali::AccessibilityAdaptor::HandleActionEnableEvent()
175 void HandleActionEnableEvent();
178 * @copydoc Dali::AccessibilityAdaptor::HandleActionDisableEvent()
180 void HandleActionDisableEvent();
183 * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollUpEvent()
185 bool HandleActionScrollUpEvent();
188 * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollDownEvent()
190 bool HandleActionScrollDownEvent();
193 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageLeftEvent()
195 bool HandleActionPageLeftEvent();
198 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageRightEvent()
200 bool HandleActionPageRightEvent();
203 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageUpEvent()
205 bool HandleActionPageUpEvent();
208 * @copydoc Dali::AccessibilityAdaptor::HandleActionPageDownEvent()
210 bool HandleActionPageDownEvent();
213 * @copydoc Dali::AccessibilityAdaptor::HandleActionMoveToFirstEvent()
215 bool HandleActionMoveToFirstEvent();
218 * @copydoc Dali::AccessibilityAdaptor::HandleActionMoveToLastEvent()
220 bool HandleActionMoveToLastEvent();
223 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadFromTopEvent()
225 bool HandleActionReadFromTopEvent();
228 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadFromNextEvent()
230 bool HandleActionReadFromNextEvent();
233 * @copydoc Dali::AccessibilityAdaptor::HandleActionZoomEvent()
235 bool HandleActionZoomEvent();
238 * @copydoc Dali::AccessibilityAdaptor::HandleActionReadPauseResumeEvent()
240 bool HandleActionReadPauseResumeEvent();
243 * @copydoc Dali::AccessibilityAdaptor::HandleActionStartStopEvent()
245 bool HandleActionStartStopEvent();
252 ~AccessibilityAdaptor() override;
257 * @brief Called when the singleton is destroyed.
259 * @note This can be reimplemented for different platforms.
260 * @return The instance of the AccessibilityAdaptor.
262 static void OnDestroy();
265 AccessibilityAdaptor( const AccessibilityAdaptor& );
266 AccessibilityAdaptor& operator=( AccessibilityAdaptor& );
270 Dali::Integration::TouchEventCombiner mCombiner; ///< Combines multi-touch events.
272 Vector2 mReadPosition; ///< ActionRead position
273 Vector2 mFocusedActorPosition; ///< Focused actor position
275 AccessibilityActionHandler* mActionHandler; ///< The pointer of accessibility action handler
277 AccessibilityGestureDetectorPtr mAccessibilityGestureDetector; ///< The accessibility gesture detector
279 bool mIsEnabled : 1; ///< enable/disable the accessibility action
281 bool mIsForced : 1; ///< Is the accessibility enabled forcibly
285 // Helpers for public-api forwarding methods
287 inline static Internal::Adaptor::AccessibilityAdaptor& GetImplementation(Dali::AccessibilityAdaptor& adaptor)
289 DALI_ASSERT_ALWAYS( adaptor && "AccessibilityAdaptor handle is empty" );
291 BaseObject& handle = adaptor.GetBaseObject();
293 return static_cast<Internal::Adaptor::AccessibilityAdaptor&>(handle);
296 inline static const Internal::Adaptor::AccessibilityAdaptor& GetImplementation(const Dali::AccessibilityAdaptor& adaptor)
298 DALI_ASSERT_ALWAYS( adaptor && "AccessibilityAdaptor handle is empty" );
300 const BaseObject& handle = adaptor.GetBaseObject();
302 return static_cast<const Internal::Adaptor::AccessibilityAdaptor&>(handle);
307 } // namespace Adaptor
309 } // namespace Internal
313 #endif // DALI_INTERNAL_ACCESSIBILITY_ADAPTOR_H